C$PARAMSIZE

このルーチンは、呼び出し元が実際に渡す特定のパラメーターのバイト数を返します。
注: This ACUCOBOL-GT library routine is available in this COBOL version. Any compatibility issues in this COBOL system are in the Compatibility Issues section at the end of the topic.

使用法

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 を呼び出すと、そのサブ項目がリンク項目の最初の項目でない限り、呼び出し元のプログラムの連絡節の記述に従ってサイズを取得します。サブ項目がリンク項目の最初の項目である場合、返されるサイズは元の項目のサイズになります。

互換性の問題

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