SIZE 関数

目的

参照される変数に割り当てられたバイト数を示す Fixed Bin(31) の値を返します。

構文

SIZE(reference)

パラメーター

reference は、任意のデータ型およびストレージ クラスの変数です。

説明

この関数は STORAGE 関数と同じであり、以前のバージョンの Open PL/I (旧称 LPI-PL/I) との互換性のために提供されています。

SIZE 関数は、参照される変数に割り当てられたバイト数を示す Fixed Bin(31) の整数を返します。変数には、スカラー、配列、配列要素、構造体、または構造体のメンバーを指定できます。定数または式を参照することはできません。

個々の配列要素を参照する場合、配列全体のサイズではなく、配列の要素のサイズが返されます。SIZE 関数は未接続の配列引数とともに使用することができます。

変数がビット文字列で整数のバイト数にならない場合、返される値は次のバイトに切り上げられます。変数が文字可変型の場合、返される値は文字列の宣言された長さに 2 を加えたものになります。追加の 2 バイトは文字列の現在の長さを格納するために必要なバイトです。

次の例では、返される値をコメントで示してあります。

注: この例で示しているサイズは Open PL/I の場合のものです。PL/I の実装によっては、精度、整列、境界、またはデータ型の表現に応じて異なる値になることがあります。この実装については、『Open PL/I ユーザー ガイド』を参照してください。
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 */

制約事項

なし。