次の例では、返される値をコメントで示してあります。
DECLARE
S FIXED BIN(31),
A FIXED BIN(15),
B FIXED BIN(31),
C FLOAT BIN(23),
D CHAR(5),
E CHAR(5) VARYING,
F BIT(11),
G POINTER;
S = SIZE(A); /* S = 2 */
S = SIZE(B); /* S = 4 */
S = SIZE©); /* S = 4 */
S = SIZE(D); /* S = 5 */
S = SIZE(E); /* S = 7 */
S = SIZE(F); /* S = 2 */
S = SIZE(G); /* S = 4 */
DECLARE
S FIXED BIN(31),
1 A_STRUCT
2 A FIXED BIN(31),
2 B CHAR (2),
C(20) FIXED BIN(15);
S = SIZE(A_STRUCT); /* S = 6 */
S = SIZE(A STRUCT.A); /* S = 4 */
S = SIZE(A_STRUCT.B); /* S = 2 */
S = SIZE©); /* S = 40 */
S = SIZE©(13)); /* S = 2 */
DECLARE
S FIXED BIN(31),
1 STRUC1,
2 A BIT(1),
2 B BIT(3);
DECLARE
1 STRUC2,
2 C BIT(1) ALIGNED,
2 D BIT(3) ALIGNED;
S = SIZE(STRUC1); /* S = 1 */
S = SIZE(STRUC2); /* S = 2 */
説明
この関数は STORAGE 関数と同じであり、以前のバージョンの Open PL/I (旧称 LPI-PL/I) との互換性のために提供されています。
SIZE 関数は、参照される変数に割り当てられたバイト数を示す Fixed Bin(31) の整数を返します。変数には、スカラー、配列、配列要素、構造体、または構造体のメンバーを指定できます。定数または式を参照することはできません。
個々の配列要素を参照する場合、配列全体のサイズではなく、配列の要素のサイズが返されます。SIZE 関数は未接続の配列引数とともに使用することができます。
変数がビット文字列で整数のバイト数にならない場合、返される値は次のバイトに切り上げられます。変数が文字可変型の場合、返される値は文字列の宣言された長さに 2 を加えたものになります。追加の 2 バイトは文字列の現在の長さを格納するために必要なバイトです。