Enterprise COBOL では、COBOL 85 標準に準拠するために、以下の OS/VS COBOL 言語エレメント が変更されました。いくつかの言語エレメントは、言語の構文が変更されています。また、言語の構文は変更されていなくても、実行結果が異なる可能性がある (セマンティ クスが変更されている) 言語エレメントもあります。
Enterprise COBOL では、大文字、小文字、およびスペース文字が ALPHABETIC であると見なされます。
OS/VS COBOL プログラムで ALPHABETIC クラス・テストを使用しており、テストされるデ ータに大文字と小文字が混在していると、実行結果が異なる可能性があります。このような場合は、OS/VS COBOL の ALPHABETIC テストの代わり に Enterprise COBOL の ALPHABETIC-UPPER クラス・テストを使用すると、同じ結果を得る ことができます。
Enterprise COBOL では、ALPHABET キーワードは必須です。
したがって、これらの項目を含んでいる算術ステートメントの場合、Enterprise COBOL は OS/VS COBOL よ りも正確な結果を提供する可能性があります。これらの変更がアプリケーションに悪影響を与えないことを確認するために、アプリケ ーションをテストする必要があります。
ASSIGN TO assignment-nameここで、assignment-name は以下の形式にすることができます。
OS/VS COBOL プログラムで別の形式の ASSIGN 文節、または別の形式 の assignment-name を使用している場合は、それを、Enterprise COBOL で サポートされる形式に準拠するように変更しなければなりません。
Enterprise COBOL は PICTURE 記号 A だけを受け入れます (記号 A と記号 B の両方を含んでいる PICTURE は、英数字編集項目を定義します)。
Enterprise COBOL の CALL ステートメントの USING 句では、プロシージャー名は受け入れられ ず、QSAM ファイル名だけが受け入れられます。したがって、プロシージャー名は除去しなければならず、さらに、CALL ステートメントの USING 句で使 用するファイル名が QSAM 物理順次ファイルの名前であることを確認する必要があります。
アセンブラー・プログラムを呼び出し、プロシージャー名を渡す OS/VS COBOL プログラムを 移行するためには、アセンブラー・ルーチンを書き直す必要があります。OS/VS COBOL プログラムでは、アセンブラー・ルーチンを、パラメーターとして渡された段落名 からアドレス (またはアドレスのリスト) を受け取るように書くことができます。アセンブラー・ルーチンは、エラーが発生した場合、このアドレスを使用してメイン プログラム内の代替位置に戻ることができます。
Enterprise COBOL では、アセンブラー・ルーチンを、数値を割り当てて起点に戻るように コーディングしてください。アセンブラー・プログラム内でエラーが発生した場合、この数値を使用して呼び出しル ーチン内の代替位置に進むことができます。
CALL "ASMMOD" USING PARAMETER-1,
PARAGRAPH-1,
PARAGRAPH-2,
NEXT STATEMENT.
. . .
PARAGRAPH-1.
. . .
PARAGRAPH-2.
CALL "ASMMOD" USING PARAMETER-1,
PARAMETER-2.
IF PARAMETER-2 NOT = 0
GOTO PARAGRAPH-1,
PARAGRAPH-2,
DEPENDING ON PARAMETER-2.
この例では、アセンブラー・プログラム (ASMMOD) を、代替位置に分岐しないように変更 します。その代わりに、エラーがなければ数値ゼロ、エラーが発生すればゼロ以外の戻り値を呼び出し ルーチンに渡すようにします。ゼロ以外の戻り値は、COBOL プログラム内のどの段落がエラー条件を処理するのかを判 別するために使用されます。
多くの COBOL プログラマーが、特定のエラーまたは条件が存在するときに制御を取得するために、390 SPIE 機構を使用するアセンブラー・プログラムをコーディングしています。これらのルーチンは、SPIE ルーチンに渡された名前を持つ段落で COBOL プログラムに制御 を渡すことができます。これらのユーザー作成 SPIE ルーチンを使用するアプリケーションは、言語環境プログラムの条件処理を使 用するように変換してください。
以下のセクションでこれらを説明します。
A = B AND NOT LESS THAN C OR Dこれは以下と同等です。
((A = B) AND NOT (A < C) OR (A < D))
A > B AND NOT Cこれは以下と同等です。
A > B AND A NOT > C
A = B AND NOT LESS THAN C OR Dこれは以下と同等です。
((A = B) AND (A NOT < C) OR (A NOT < D))
A > B AND NOT Cこれは以下と同等です。
A > B AND NOT A > C
LANGLVL(1) を用いる OS/VS COBOL から移行する場合、予期したとおりの実行結果を得るようにするためには、すべての簡略複合条件を、簡略化 しない完全な形に展開してください。
括弧の評価: OS/VS COBOL は、簡略複合比較条件内での括弧の使用を受け入れました。
A = B AND ( < C OR D)
(A = 0 AND B) = 0
A = B OR IS C AND IS D
Enterprise COBOL は、オプション・ワード IS のこの用法を受け入れません。Enterprise COBOL では、このように使用されているワード IS を削除してください。
A = B OR IS = C AND IS = D
01 RECORD-A. 05 FIELD-A... 05 FIELD-B...
01 RECORD1 COPY MBR-A.結果のソースは次のようになります。
01 RECORD1.
05 FIELD-A...
05 FIELD-B...
01 RECORD1.
COPY MBR-A REPLACING ==01 RECORD-A== BY == ==.
Enterprise COBOL は、これらの文字を有効として受け入れません。さらに、Enterprise COBOL は、DBCS データ項目を使用するプログラムの場合に、文字 G を受け入 れません。
CURRENCY SIGN 文節にこれらの文字がある場合は、これらの文字を除去しなければなりません。
Enterprise COBOL では、介在する CANCEL が常に必要です。これらのプログラムを移行するときは、サブプログラムの代替 ENTRY ポイントを参照する 動的 CALL ステートメントの間に介在する CANCEL を追加してください。
Enterprise COBOL では、EXIT PROGRAM または GOBACK ステートメントが実行されるとき には、その中のすべての PERFORM ステートメントが範囲の終わりに達しているものと見なされます。
OS/VS COBOL プログラムで、実行の進路を判別するために状況キー値を使用している場 合は、プログラムを、新しい状況キー値を使用するように変更しなければなりません。Enterprise COBOL ファイル状況コードの詳細については、「Enterprise COBOL 言語解説書」を参照してください。
| OS/VS | Enterprise COBOL | 意味 |
|---|---|---|
| (未定義) | 04 | 誤長レコード。正常終了。 |
| (未定義) | 05 | オプション・ファイルが使用できません。正常終了。 |
| (未定義) | 07 | OPEN または CLOSE に NO REWIND/REEL/UNIT/FOR REMOVAL が指定されましたが、ファイ ルがリール / 装置メディア上にありません。正常終了。 |
| 00 | 00 | 正常終了。 |
| 10 | 10 | At END (次の論理レコードがありません)。正常終了。 |
| 30 | 30 | 永続エラー。 |
| 34 | 34 | 永続エラー。ファイル境界違反。 |
| 90 | 90 | その他のエラー (これ以上の情報はありません)。 |
| 90 | 35 | 非オプション・ファイルが使用できません。 |
| 90 | 37 | 装置タイプの矛盾。 |
| 90 | 39 | 固定ファイル属性の矛盾。OPEN が失敗します。 |
| 90 | 96 | ファイル識別がありません (ファイル用の DD ステートメントがありません)。 |
| 92 | 38 | WITH LOCK でクローズされたファイルに対して OPEN が試みられました。 |
| 92 | 41 | OPEN モードのファイルに対して OPEN が試みられました。 |
| 92 | 42 | OPEN モードでないファイルに対して CLOSE が試みられました。 |
| 92 | 43 | 最後の入出力ステートメントが READ でないときに REWRITE が試みられました。 |
| 92 | 44 | 異なるサイズのレコードで順次ファイル・レコードの再書き込みが試みられました。 |
| 92 | 46 | 有効な次のレコードがない状況で順次 READ が試みられました。 |
| 92 | 47 | ファイルが OPEN INPUT または I-O モードでないときに READ が試みられました。 |
| 92 | 48 | ファイルが OPEN OUTPUT、I-O、または EXTEND モードでないときに WRITE が試みられま した。 |
| 00 | 48 | ファイルが OPEN I-O モードのときに WRITE が試みられました。 |
| 92 | 49 | ファイルが OPEN I-O モードでないときに DELETE または REWRITE が試みられました。 |
| 92 | 92 | 論理エラー。 |
| OS/VS | Enterprise COBOL | 意味 |
|---|---|---|
| (未定義) | 14 | 相対ファイルの順次 READ で、相対レコード番号のサイズが相対キーにとって大きすぎま した。 |
| 00 | 00 | 正常終了。 |
| 00 | 04 | 誤長レコード。正常終了。 |
| 00 | 05 | オプション・ファイルが使用できません。正常終了。 |
| 00 | 35 | 非オプション・ファイルが使用できません。ファイルが空のときに発生する可能性があります。 |
| 02 | 02 | 重複キーがあり、DUPLICATES が指定されています。正常終了。 |
| 10 | 10 | At END (次の論理レコードがありません)。正常終了。 |
| 21 | 21 | VSAM 索引付きまたは相対ファイルのキーが無効です。シーケンス・エラー。 |
| 22 | 22 | VSAM 索引付きまたは相対ファイルのキーが無効です。重複キーおよび重複は許可されま せん。 |
| 23 | 23 | VSAM 索引付きまたは相対ファイルのキーが無効です。レコードが見つかりません。 |
| 24 | 24 | VSAM 索引付きまたは相対ファイルのキーが無効です。ファイル境界を超える書き込み
が試みられました。 Enterprise COBOL: 相対ファイルへの WRITE で、相対レコード番号のサイズが相対キーにとって大 きすぎました。 |
| 30 | 30 | 永続エラー。 |
| 90 | 37 | 大容量記憶装置上にないファイルのオープンが試みられました。 |
| 90 | 90 | その他のエラー (これ以上の情報はありません)。 |
| 91 | 91 | VSAM パスワード障害。 |
| 92 | 41 | OPEN モードのファイルに対して OPEN が試みられました。 |
| 92 | 42 | OPEN モードでないファイルに対して CLOSE が試みられました。 |
| 92 | 43 | 最後の入出力ステートメントが READ または DELETE でないときに REWRITE が試みられました。 |
| 92 | 47 | ファイルが OPEN INPUT または I-O モードでないときに READ が試みられました。 |
| 92 | 48 | ファイルが OPEN OUTPUT、I-O、または EXTEND モードでないときに WRITE が試みられま した。 |
| 92 | 49 | ファイルが OPEN I-O モードでないときに DELETE または REWRITE が試みられました。 |
| 93 | 93 | VSAM リソースが使用可能ではありません。 |
| 93 96 | 35 | 非オプション・ファイルが使用できません。 |
| 94 | 46 | 有効な次のレコードがない状況で順次 READ が試みられました。 |
| 95 | 39 | 固定ファイル属性の矛盾。OPEN が失敗します。 |
| 95 | 95 | VSAM ファイル情報が無効または不完全です。 |
| 96 | 96 | ファイル識別がありません (この VSAM ファイル用の DD ステートメントがありません)。 |
| 97 | 97 | OPEN ステートメントの実行が正常に終了しました。ファイルの保全性が検査されました。 |
IF condition THEN statement-1 OTHERWISE statement-2
IF condition THEN statement-1 ELSE statement-2
したがって、非標準形式の IF...OTHERWISE ステートメントを含んでいる OS/VS COBOL プログラム は、標準形式の IF...ELSE ステートメントに変更する必要があります。
77 DATA-1 PIC X(9) JUSTIFIED VALUE "FIRST".この結果、"FIRST" は DATA-1 の右端の 5 つの文字位置を占めます。
bbbbFIRST
77 DATA-1 PIC X(9) JUSTIFIED VALUE "FIRST".この結果、"FIRST" は DATA-1 の左端の 5 つの文字位置を占めます。
FIRSTbbbb
77 DATA-1 PIC X(9) JUSTIFIED VALUE " FIRST".これは、DATA-1 の値を右寄せしています。
bbbbFIRST
05 SEND-FIELD PICTURE 999PPP VALUE 123000.
05 RECEIVE-FIELD PICTURE XXXXXX.
. . .
MOVE SEND-FIELD TO RECEIVE-FIELD.
RECEIVE-FIELD には値 123bbb (左寄せされた) が入ります。ここでは、b は 1 つのブランク文字を表しています。Enterprise COBOL の場合、MOVE ステートメントでは後続ゼロが転送され、比較ではそれらが組み込まれます。
01 grp1. 03 yy PIC S99. 03 mm PIC S99. 03 dd PIC S99.
Enterprise COBOL では、IF NUMERIC クラス・テストを符号付き従属項目を持つグループ項 目に対して使用すると、S レベルのメッセージが出されます。
たとえば、Enterprise COBOL では負のゼロを結果として生成しませんが、OS/VS COBOL は生成する可能性がありました。 さらに、Enterprise COBOL では NUMPROC(MIG) を指定した入力データの無効な符号を修正しませんが、OS/VS COBOL プログラムでは、入力データの矛盾する符号を修正していました。
データ例外を利用して、無効な内容の 10 進データ項目を識別したり、 異常終了させたりしているプログラムは、10 進データ項目内のデータを検証するクラス・テストを使用するように変更が必要な場合があります。
Enterprise COBOL では、ASCENDING または DESCENDING KEY 句内に可変長キーを指定できません。
最大長が使用されるときは、テーブルがデータを受け取る前に ODO オブジェクトを初期 設定する必要はありません。位置が ODO オブジェクトの値によって異なる項目については、それらを CALL ステートメント の USING 句で使用する前に、OCCURS DEPENDING ON 文節のオブジェクトを設定する ことが必要です。Enterprise COBOL のもとでは、可変位置ではない可変長グループの場合、項目 が CALL ステートメントの USING BY REFERENCE 句で使用されるときに、そのオブジェクトを設定する 必要はありません。これは、上記の 2 番目の中黒で記述されているグループについても該当します。
01 TABLE-GROUP-1
05 ODO-KEY-1 PIC 99.
05 TABLE-1 PIC X(9)
OCCURS 1 TO 50 TIMES DEPENDING ON ODO-KEY-1.
01 ANOTHER-GROUP.
05 TABLE-GROUP-2.
10 ODO-KEY-2 PIC 99.
10 TABLE-2 PIC X(9)
OCCURS 1 to 50 TIMES DEPENDING ON ODO-KEY-2.
05 VARIABLY-LOCATED-ITEM PIC X(200).
. . .
PROCEDURE DIVISION.
. . .
MOVE SEND-ITEM-1 TO TABLE-GROUP-1
. . .
MOVE ODO-KEY-X TO ODO-KEY-2
MOVE SEND-ITEM-2 TO TABLE-GROUP-2.
TABLE-GROUP-1 が受け取り項目であるときには、Enterprise COBOL は、その項 目についての最大数の文字位置 (TABLE-1 の 450 バイト + ODO-KEY-1 の 2 バイト) を移動 します。したがって、SEND-ITEM-1 データを TABLE-1 に移動する前に、TABLE-1 の長さを初期設定する 必要はありません。
しかし、レコード記述の中で、TABLE-GROUP-2 の後には非従属データ 項目 VARIABLY-LOCATED-ITEM が続いています。この場合には、Enterprise COBOL は ODO-KEY-2 内の実際の値を使用して TABLE-GROUP-2 の長さを 計算します。ユーザーは、SEND-ITEM-2 データをグループ受け取り項目に移動する前 に、ODO-KEY-2 をその有効な現在の長さに設定しなければなりません。
Enterprise COBOL の場合、DIVIDE および MULTIPLY ステートメントの SIZE ERROR 句は 最終結果にのみ適用されます。これは、COBOL 74 標準と COBOL 85 標準間の 変更です。この変更は既存のプログラムに影響を与える場合と与えない場合があります。
したがって、OS/VS COBOL プログラムが中間結果の SIZE ERROR 検出に依存している場合 は、プログラムを変更することが必要になる可能性があります。
A = B OR IS C AND IS D
Enterprise COBOL は、オプション・ワード IS のこの用法を受け入れません。Enterprise COBOL では、このように使用されているワード IS を削除してください。
A = B OR IS = C AND IS = D
Enterprise COBOL では、そのような PERFORM ステートメントで、内部条件が TRUE とし てテストされると、以下のアクションが起こります。
PERFORM ABC VARYING X FROM 1 BY 1 UNTIL X > 3
AFTER Y FROM X BY 1 UNTIL Y > 3
X: 1 1 1 2 2 2 3 3 Y: 1 2 3 1 2 3 2 3
X: 1 1 1 2 2 3 Y: 1 2 3 2 3 3
MOVE 1 TO X, Y, Z
PERFORM EX-1 VARYING X FROM 1 BY 1 UNTIL X > 3
. . .
EX-1.
PERFORM ABC VARYING Y FROM Z BY 1 UNTIL Y > 3.
MOVE X TO Z.
ABC.
Enterprise COBOL では、alphabet-name で指定された照合シーケンスは、これらの暗黙の比較には使用されません。
RESERVE NO ALTERNATE AREA RESERVE NO ALTERNATE AREAS RESERVE integer ALTERNATE AREA RESERVE integer ALTERNATE AREAS RESERVE integer AREA RESERVE integer AREAS
RESERVE integer AREA RESERVE integer AREAS
OS/VS COBOL プログラムで RESERVE integer ALTERNATE AREA また は RESERVE integer ALTERNATE AREAS 形式を使用している場合、Enterprise COBOL のもとで同等 の処理を得るためには、integer + 1 AREA(S) を指定した RESERVE 文節を使用 しなければなりません。つまり、OS/VS COBOL の RESERVE 2 ALTERNATE AREAS 句 は、Enterprise COBOL の RESERVE 3 AREAS と同等です。
LANGLVL(1) を用いる OS/VS COBOL のもとでは、RESERVE integer AREAS 形式の解釈 は、Enterprise COBOL におけるこの形式の解釈と異なります。
LANGLVL(1) を使用し、RESERVE integer AREA または RESERVE integer AREAS 形式を 使用している場合、Enterprise COBOL のもとで同等の処理を得るために は、integer + 1 AREA(S) を指定した RESERVE 文節を使用しなければなりませ ん。
Enterprise COBOL では、WHEN 句のデータ名 (WHEN 比較条件のサブジェクト) は、このテーブル・エレメント内の ASCENDING または DESCENDING KEY データ項目でなければならず、identifier-2 (WHEN 比較条件のオブジェクト) はこのテーブル・エレメントに対応する ASCENDING または DESCENDING のキー・データ項目であってはなりません。
WHEN VAL = KEY-1 ( INDEX-NAME-1 ) DISPLAY "TABLE RECORDS OK".
01 VAL PIC X.
01 TABLE-01.
05 TABLE-ENTRY
OCCURS 100 TIMES
ASCENDING KEY IS KEY-1
INDEXED BY INDEX-NAME-1.
10 FILLER PIC X.
10 KEY-1 PIC X.
SEARCH ALL TABLE-ENTRY
AT END DISPLAY "ERROR"
WHEN KEY-1 ( INDEX-NAME-1 ) = VAL
DISPLAY "TABLE RECORDS OK".
LANGLVL(2) を用いる OS/VS COBOL では、独立セグメント内の PERFORM ステートメントで永続セグメ ントを参照している場合、PERFORM ステートメントのそれぞれの実行ごとに 1 回だけ、実行される プロシージャーに制御が渡されます。
Enterprise COBOL では、コンパイラーはオーバーレイを実行しません。した がって、上記の規則は適用されません。
プログラム・ロジックが OS/VS COBOL におけるこれらのセグメント化規則のインプリメンテー ションのいずれかに依存している場合は、プログラムを書き直さなければなりません。
OS/VS COBOL では、SORT-RETURN 特殊レジスターに、SORT の正常終了 (RC=0)、USING また は GIVING ファイルに関する OPEN または入出力エラー (RC=2 ~ RC=12)、および SORT の 失敗 (RC=16) を表すコードが入る可能性があります。Enterprise COBOL では、SORT-RETURN 特殊レジスターに、SORT の正常終了 (RC=0) および 失敗 (RC=16) を表すコードだけが入ります。
| デバッグ・オペランド | プロシージャーが |
|
|---|---|---|
| OS/VS COBOL | Enterprise COBOL | |
| procedure-name-1 | procedure-name-1 | 指定されたプロシージャーのそれぞれの実行の直前。 指定されたプロシージャーを参照している ALTER ステートメントの実行の直後。 |
| ALL PROCEDURES | ALL PROCEDURES | 最外部プログラム内のそれぞれの非デバッグ・プロシージャーの実行の直前。 最外部プログラム内のそれぞれの ALTER ステートメント (宣言型プロシージャー内の ALTER ステートメントを除く) の 実行の直後。 |
| file-name-n | (なし) | 詳細については、「IBM VS COBOL for OS/VS」を参照してください。 |
| ALL REFERENCES OF identifier-n | (なし) | 詳細については、「IBM VS COBOL for OS/VS」を参照してください。 |
| cd-name-1 | (なし) | 詳細については、「IBM VS COBOL for OS/VS」を参照してください。 |
OS/VS COBOL は、同等のエラー・メッセージを出しませんでした。
01 ABC PIC X(30).
01 IND.
02 IND-1 PIC 9.
01 TAB.
02 TAB-1 PIC X OCCURS 10 TIMES.
01 ZZ PIC X(30).
. . .
UNSTRING ABC DELIMITED BY TAB-1 (IND-1) INTO IND ZZ.
OS/VS COBOL では、添え字 IND-1 は、2 番目の受け取り項目 ZZ が充てんされる前に再評価され ます。
Enterprise COBOL では、添え字 IND-1 は、UNSTRING ステートメントの実行の開始時 に 1 回だけ評価されます。
LANGLVL(1) を用いる OS/VS COBOL では、UNSTRING の DELIMITED BY ALL 句が指定され ると、任意の区切り文字の 2 つ以上の連続するオカレンスが、1 つのオカレンスであ るかのように扱われます。最初のオカレンスは、収容可能な限り多く、現行の区切り文字受信フィールド (指定されている場合) に移動されます。それ以降の各オカレンスは、そのオカレンス全体が収容される場合にのみ移動されます。OS/VS COBOL におけるこの句の動作の詳細については、「IBM VS COBOL for OS/VS」を参照してください。
Enterprise COBOL では、任意の区切り文字の 1 つ以上の連続するオカレンス は、1 つのオカレンスであるかのように扱われ、この 1 つのオカレンスが 区切り文字受信フィールド (指定されている場合) に移動されます。
UNSTRING ID-SEND DELIMITED BY ALL "*"
INTO ID-R1 DELIMITER IN ID-D1 COUNT IN ID-C1
ID-R2 DELIMITER IN ID-D2 COUNT IN ID-C2
ID-R3 DELIMITER IN ID-D3 COUNT IN ID-C3
ID-R1 123 1D-D1 ** ID-C1 3 ID-R2 45678 1D-D2 ** ID-C2 5 ID-R3 90AB 1D-D3 ID-C3 4
ID-R1 123 1D-D1 * ID-C1 3 ID-R2 45678 1D-D2 * ID-C2 5 ID-R3 90AB 1D-D3 ID-C3 4
たとえば、SPECIAL-NAMES 段落で条件名が定義されている場合、以下のものは同等です。
OS/VS COBOL
Enterprise COBOL
SPECIAL-NAMES. SPECIAL-NAMES.
UPSI-0 IS MNUPO UPSI-0 IS MNUPO
ON STATUS IS UPSI-0-ON
OFF STATUS IS UPSI-0-OFF
. . . . . .
PROCEDURE DIVISION PROCEDURE DIVISION
. . . . . .
IF UPSI-0 = 1 ... IF UPSI-0-ON ...
IF MNUPO = 0 ... IF UPSI-0-OFF ...
01 FIELD-A.
02 LAST-YEAR PIC XX VALUE 87.
02 THIS-YEAR PIC XX VALUE 88.
02 NEXT-YEAR PIC XX VALUE 89.
01 FIELD-A.
02 LAST-YEAR PIC XX VALUE "87".
02 THIS-YEAR PIC XX VALUE "88".
02 NEXT-YEAR PIC XX VALUE "89".
hh.mm.ssMMM DD, YYYY (hour.minute.secondMONTH DAY, YEAR)
MM/DD/YYhh.mm.ss (MONTH/DAY/YEARhour.minute.second)
Enterprise COBOL では、WRITE...AFTER ADVANCING ステートメントを使用すれ ば、WRITE...AFTER POSITIONING と類似した動作を得ることができます。以下の 2 つの例は、OS/VS COBOL の POSITIONING 句と、Enterprise COBOL の同等の句を示していま す。
OS/VS COBOL Enterprise COBOL
AFTER POSITIONING 0 AFTER ADVANCING PAGE
AFTER POSITIONING 1 AFTER ADVANCING 1 LINE
AFTER POSITIONING 2 AFTER ADVANCING 2 LINES
AFTER POSITIONING 3 AFTER ADVANCING 3 LINES
WRITE OUTPUT-REC AFTER POSITIONING SKIP-CC.
OS/VS COBOL Enterprise COBOL
SKIP-CC
AFTER POSITIONING SKIP-CC 1 AFTER ADVANCING PAGE
AFTER POSITIONING SKIP-CC ' ' AFTER ADVANCING 1 LINE
AFTER POSITIONING SKIP-CC 0 AFTER ADVANCING 2 LINES
AFTER POSITIONING SKIP-CC - AFTER ADVANCING 3 LINES
WRITE OUTPUT-REC AFTER POSITIONING n.
n がリテラルである場合は、CCCA は上記の例 を WRITE...AFTER ADVANCING n LINES に変更します。n が ID である場合は、SPECIAL-NAMES が生成され、セクションがプログラムの終わりに 追加されます。