このルーチンは、現在のプログラムの呼び出し側によってそのプログラムに渡されるデータ項目の実サイズ (バイト単位) を返します。手続き部の 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 項目の場合は、返されるサイズは元の項目のサイズになります。