変更の始まり

自由形式の定義ステートメント

自由形式のデータ定義ステートメントは、宣言命令コードの 1 つで 始まり、その後に名前が続くか、項目に名前がない場合は *N が続き、 さらにその後にキーワードが続き、最後はセミコロンで終わります。

宣言命令コードは次のとおりです。
DCL-C
名前付き定数を定義します
DCL-DS
データ構造を定義します
END-DS
データ構造を終了します
{DCL-PARM}
パラメーターを定義します
DCL-PI
プロシージャー・インターフェースを定義します
END-PI
プロシージャー・インターフェースを終了します
DCL-PREND-PR
プロトタイプを定義します
END-PR
プロトタイプを終了します
DCL-S
独立フィールドを定義します
{DCL-SUBF}
サブフィールドを定義します
必要な場合、定義を複数行に分割してもかまいません。 以下は等価な定義です。
  1. 定義は 1 行に指定されています。
  2. 定義は複数行に分割されています。
  3. 名前は 2 行に分割されていて、キーワードは名前の 2 つ目の部分と同じ行に指定されています。
  4. 名前は 2 行に分割されていて、キーワードは名前の 2 つ目の部分の次の行に指定されています。
    注: 名前の最後の部分の後には省略符号は使用されません。 自由形式の仕様書では、省略符号は、名前が 2 つの部分に分かれていて別々の行に指定されている場合に、それら 2 つの部分を 結合するためにのみ使用されます。 名前をステートメントの残りの部分に結合するためには使用されません。
   DCL-S abcdefghij CHAR(10);   1 
      DCL-S                     2 
             abcdefghij
    CHAR
       (
        10
       )
        ;
   DCL-S abcde...               3 
            fghij CHAR(10);
   DCL-S abcde...               4 
            fghij
                  CHAR(10);
自由形式のデータ定義ステートメントの内部で使用を許可されている指示は、 /IF、/ELSEIF、/ELSE、および /ENDIF のみです。
   DCL-S G_Working_Date DATE(*ISO)
           /IF DEFINED(main_module)
             EXPORT INZ(*SYS)
           /ELSE
             IMPORT
           /ENDIF
             ;
注: 項目の名前が、自由形式演算内で使用を許可されている命令コードのいずれかと同じである場合を除いて、 DCL-PARM または DCL-SUBF は任意指定です。
LIKEREC および LIKEDS キーワードなしで定義されるデータ構造 が自由形式ステートメントで始まっているか、または、 サブフィールドのどれかが自由形式ステートメントで指定されている場合、 そのデータ構造は END-DS ステートメントで終わる必要があります。
   DCL-DS ds1;
      subf1 CHAR(10);
   END-DS;

  D ds2             DS
      subf2 CHAR(10);
   END-DS;

   DCL-DS ds3;
  D  subf3                        10a
   END-DS;
同様に、プロトタイプまたはプロシージャー・インターフェース が自由形式ステートメントで始まっているか、パラメーターのどれかが自由形式ステートメント で指定されている場合、そのプロトタイプまたはプロシージャー・インターフェース は END-PR または END-PI ステートメントで終わる必要があります。
   DCL-PR pr1;
      subf1 CHAR(10);
   END-PR;

  D pr2             PR
      parm2 CHAR(10);
   END-PR;

   DCL-PI pi3;
  D  parm3                        10a
   END-PI;
サブフィールドのないデータ構造の場合、END-DS を DCL-DS ステートメントの 一部として、セミコロンの直前に指定できます。
   DCL-DS ds1 LEN(100) END-DS;
同様に、プロシージャー・インターフェースまたはプロトタイプにパラメーターがない場合、 END-PI または END-PR を DCL-PI または DCL-PR ステートメントの 一部として、セミコロンの直前に指定できます。
   DCL-PR pr1 INT(10) END-PR;
変更の終わり