次の例では、返される値をコメントで示してあります。
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 バイトは文字列の現在の長さを格納するために必要なバイトです。