COBOL2002 言語 拡張仕様編


24.2.1 第1次規格以前の仕様(-StdVersion,1)

-StdVersion,1オプションは,第1次規格以前の仕様で翻訳することを指定する。第2次規格以降との間で解釈が異なっている言語仕様について次に示す。

〈この項の構成〉

(1) 特殊名段落のCURRENCY SIGN句

CURRENCY SIGN句に,「=」,「/」を指定できる。

(2) SELECT OPTIONAL句

このシステムでは,OPTIONAL句は覚え書きとする。

(3) 略記組み合わせ比較条件でのNOTの取り扱い

略記組み合わせ比較条件の中のNOTが,比較演算子の一部とも論理演算子ともとれるとき,すなわち,NOTの直後が,次のどれかのときは,このNOTを論理演算子とみなす。

(例)

A > B AND NOT > C OR D

は,次と同じである。

A > B AND NOT A > C OR A > D

-StdVersion,1オプションが有効でない場合は,次と同じである。

A > B AND A NOT > C OR A NOT > D

(4) MOVE文の位取り

送り出し側作用対象が位取りした整数項目(PICTURE文字列の右端文字がP),受け取り側作用対象が英数字項目であれば,文字Pにあたるけたを空白とする。また,比較条件の作用対象が位取りした整数項目と英数字項目であれば,整数項目を英数字項目に変換するときにMOVE文と同様文字Pにあたるけたを空白とみなす。

(例)
       77 A PIC 999PP VALUE 12300.
       77 B PIC X(5).
           MOVE A TO B.

この例で,MOVE文を実行すると,データ項目Bは,123△△となる(△△は半角空白)。

(注意)

-StdVersion,1オプションが有効でない場合には,データ項目Bは,12300となる。

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「10.8.28 MOVE文

(5) UNSTRING文のDELIMITED BY ALL指定

UNSTRING文にDELIMITED BY ALL指定を書くと,送り出し側作用対象の文字列中に同じ区切り文字の連続した繰り返しが現れた場合,DELIMITER IN指定のデータ項目に,区切り文字の繰り返し現れた文すべてが転記される(入りきらなければ右側が無視される)。

(注意)

-StdVersion,1オプションが有効でない場合には,区切り文字の受け取り側作用対象に区切り文字1個分だけが転記される。

(備考)

第1次規格にはUNSTRING文はない。

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「10.8.52 UNSTRING文

(6) COPY文(コンパイラオプションによる仕様の相違)

形式

[図データ]

構文規則

  1. REPLACING指定の中に仮原文1や仮原文2は書けない。また,予約語BYの前には複数個の語の組から成る一意名および定数を書けないので,単一のCOBOLの語を書かなければならない。

  2. COPY文を書ける個所に制限がある。次の個所にだけCOPY文を書くことができる。

    • 環境部

      SOURCE-COMPUTER. COPY文.

      OBJECT-COMPUTER. COPY文.

      SPECIAL-NAMES. COPY文.

      FILE-CONTROL. COPY文.

       SELECT [OPTIONAL]

        ファイル名 COPY文.

       SELECT 整列併合用ファイル名 COPY文.

      I-O-CONTROL. COPY文.

    • ファイル節

      FD ファイル名 COPY文.

      SD 整列併合用ファイル名 COPY文.

      nn データ名 COPY文.

      (nnは01または02〜49のレベル番号)

    • 作業場所節および連絡節

      [図データ]

    • 手続き部

      節名 SECTION [区分番号]. COPY文.

      段落名. COPY文.

一般規則

  1. データ記述項にCOPY文を書いたとき,複写される登録集原文は,そのCOPY文が指定された記述項のレベル番号と同じレベル番号を持つ記述項から始まるのでなければならない。このとき,COPY文は記述項全体を登録集原文で置き換えるが,語COPYの前に書いたレベル番号,データ名およびREDEFINES句は置き換わらず,原始プログラム中に書いたものがそのまま残る。

    (例1)

    01 RECORD-A COPY RECALIB.

    原始文RECALIBが識別する登録集原文は,完全なレコード記述でなければならない。次に正しい記述と誤った記述の例を示す。

    (正しい記述例)

           01 RECORD-B.
             02 RECA1 PIC X(3).
             02 RECA2.
               03 RECA2-1 PIC S9(5).
               03 RECA2-2 PIC S9(9) COMP.

    (誤った記述例)

                 SYNCHRONIZED.
             02 RECA1 PIC X(3).
             02 RECA2.
               03 RECA2-1 PIC S9(5).
               03 RECA2-2 PIC S9(9) COMP.

    複写の結果は次のようになる。登録集原文のうち,01 RECORD-B.だけは複写後,原始プログラムに書いた01 RECORD-A.で置き換えられる。

           01 RECORD-A.
             02 RECA1 PIC X(3).
             02 RECA2.
               03 RECA2-1 PIC S9(5).
               03 RECA2-2 PIC S9(9) COMP.

    (例2)

    05 RECORD-C COPY RECBLIB.

    原文名RECBLIBの登録集原文は完全なレコード記述でなければならない。次に例を示す。

           05 RECORD-D.
             10 RECD1 PIC X(3).

    複写の結果は次のようになる。

           05 RECORD-C.
             10 RECD1 PIC X(3).
【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「3.2.2 COPY文

(7) JUSTIFIED句の処理

JUSTIFIED句の指定がある英字,英数字,英数字編集にVALUE句で初期値を与えるときに,JUSTIFIED句の機能を働かせる。

(例)

05 DATA-A PIC X(5) JUSTIFIED VALUE 'AB'.

DATA-Aには,値ABが右端によせて格納される。左端に空白が埋められる。

(注意)

-StdVersion,1オプションが有効でない場合には,JUSTIFIED句の機能は無視される。

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「9.16.36 JUSTIFIED句

(8) ADVANCING指定なしのWRITE文での仮定

一つのファイルに対する複数個のWRITE文で,ADVANCING指定があるものとないものを混用した場合,次のように仮定する。

ADVANCING指定のあるWRITE文

ADVANCING指定のないWRITE文

すべてBEFOREのとき

BEFORE 1を仮定する

すべてAFTERのとき

AFTER 1を仮定する

BEFOREとAFTERとがあるとき

BEFORE 1を仮定する

(注意)

-StdVersion,1オプションが有効でない場合には,AFTER ADVANCING 1を仮定する。

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「10.8.55 WRITE文