C$PARAMSIZE

このルーチンは、呼び出し側によって実際に渡される特定のパラメータのバイト数を返します。
注:この ACUCOBOL-GT ライブラリ・ルーチンはこの COBOL バージョンで利用できます。この COBOL システムの互換性の問題については、トピックの終わりにある「互換性の問題」節に示されています。

使用法

CALL "C$PARAMSIZE" 
USING PARAM-NUM, 
GIVING PARAM-SIZE

パラメータ

PARAM-NUM 数値パラメータ この値は手続き部の USING 句におけるパラメータの元の順位です。このパラメータのサイズを把握します。
PARAM-SIZE 任意の数値データ項目 この項目は、呼び出し側によって実際に渡されるデータ項目のバイト数を受け取ります。

説明

このルーチンは、現在のプログラムの呼び出し側によってそのプログラムに渡されるデータ項目の実サイズ (バイト単位) を返します。手続き部の USING 句でデータ項目の数 (1 で始まる) を渡し、C$PARAMSIZE が実際に渡された対応する項目のサイズを返します。これは、不明サイズのデータ項目を処理する場合に便利です。

例えば、任意のデータ項目を 10000 バイトのサイズまで大文字に変換するルーチンを記述するとします。このルーチンは次のようになります。

IDENTIFICATION DIVISION.
PROGRAM-ID.  MAKE-UPPERCASE.

DATA DIVISION.
WORKING-STORAGE SECTION.
77  PARAM-SIZE    PIC 9(5).

LINKAGE SECTION.
77  PASSED-ITEM   PIC X(10000).

PROCEDURE DIVISION USING PASSED-ITEM.
MAIN-LOGIC.
CALL "C$PARAMSIZE" USING 1, GIVING PARAM-SIZE
INSPECT PASSED-ITEM( 1 :PARAM-SIZE ) 
CONVERTING "abcdefghijklmnopqrstuvwxyz" 
TO "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
EXIT PROGRAM.

この例では、C$PARAMSIZE を使用しない場合、10000 バイト全体をこのルーチンに渡す必要があります。そうしないとメモリ使用エラーが発生します。C$PARAMSIZE と部分参照を使用することで、実際に渡されるメモリのみが参照され、エラーは発生しません。C$PARAMSIZE は、プログラムが「呼び出されるサブルーチン」の場合のみに機能します。CALL 動詞の「CALL RUN」形式とでは機能しません。

CALL 文でリンケージ項目のサブ項目を渡し、パラメータのサイズを要求する C$PARAMSIZE をサブプログラムが呼び出すと、そのサブ項目がリンケージ項目の第 1 項目でない限り、呼び出しプログラムの連絡節の記述に従ってサイズを取得できます。リンケージ項目の第 1 項目の場合は、返されるサイズは元の項目のサイズになります。

互換性の問題

  • このルーチンはマネージ COBOL ではサポートされません。
  • この COBOL システムでは、呼び出しプログラムで指定される項目サイズが必ず返されます。