このルーチンは、現在のプログラムの呼び出し元がそのプログラムに渡すデータ項目の実サイズ (バイト単位) を返します。手続き部の 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 を呼び出すと、そのサブ項目がリンク項目の最初の項目でない限り、呼び出し元のプログラムの連絡節の記述に従ってサイズを取得します。サブ項目がリンク項目の最初の項目である場合、返されるサイズは元の項目のサイズになります。