OS/VS COBOL
本付録では、OS/VS COBOLの変換について説明します。
1. OS/VS COBOLの要素
OS/VS COBOLは、システム内部でCOBOL構文に変換されて処理されます。OS/VS COBOLは、--enable-osvsオプションを使用した場合にのみ処理されます。
以下では、OS/VSの変換とOS/VSで使用される要素について説明します。
-
AFTER POSITIONING節
以下は、OS/VS COBOLの例です。
AFTER POSITIONING 0 AFTER POSITIONING 1 AFTER POSITIONING 2 AFTER POSITIONING 3
以下は、上記のOS/VS COBOLの変換後の結果ソースです。
AFTER ADVANCING PAGE AFTER ADVANCING 1 LINES AFTER ADVANCING 2 LINES AFTER ADVANCING 3 LINES
-
EXAMINEステートメント
以下は、OS/VS COBOLの例です。
EXAMINE DATA-A TALLYING UNTIL FIRST " "
以下は、上記のOS/VS COBOLの変換後の結果ソースです。
MOVE 0 TO TALLY INSPECT DATA-A TALLYING TALLY FOR CHARACTERS BEFORE " "
-
EXHIBITステートメント
EXHIBITステートメントは、次の3つの形式で使用できます。
-
形式1
以下は、OS/VS COBOLの例です。
WORKING-STORAGE SECTION. 01 A PIC X(8). 01 B PIC X(8). ... EXHIBIT NAMED A B.
以下は、上記のOS/VS COBOLの変換後の結果ソースです。
WORKING-STORAGE SECTION. 01 A PIC X(8). 01 B PIC X(8). ... DISPLAY "A = " A "B = " B
-
形式2
以下は、OS/VS COBOLの例です。
WORKING-STORAGE SECTION. 01 A PIC X(8). 01 B PIC X(8). ... EXHIBIT CHANGED A B.
以下は、上記のOS/VS COBOLの変換後の結果ソースです。
WORKING-STORAGE SECTION. 01 A PIC X(8). 01 B PIC X(8). 01 A-CMP PIC X(8). 01 B-CMP PIC X(8). ... IF A NOT EQUAL TO A-CMP DISPLAY A END-IF IF B NOT EQUAL TO B-CMP DISPLAY B END-IF MOVE A TO A-CMP MOVE A TO B-CMP
-
形式3
以下は、OS/VS COBOLの例です。
WORKING-STORAGE SECTION. 01 A PIC X(8). 01 B PIC X(8). ... EXHIBIT CHANGED NAMED A B.
以下は、上記のOS/VS COBOLの変換後の結果ソースです。
WORKING-STORAGE SECTION. 01 A PIC X(8). 01 B PIC X(8). 01 A-CMP PIC X(8). 01 B-CMP PIC X(8). ... IF A NOT EQUAL TO A-CMP DISPLAY "A = " A END-IF IF B NOT EQUAL TO B-CMP DISPLAY "B = " B END-IF MOVE A TO A-CMP MOVE A TO B-CMP
-
-
TRANSFORMステートメント
以下は、OS/VS COBOLの例です。
WORKING-STORAGE SECTION. 01 A PIC X(8) VALUE "ABCDEFGH" ... TRANSFORM A FORM "ABC" TO "ZZZ"
以下は、上記のOS/VS COBOLの変換後の結果ソースです。
WORKING-STORAGE SECTION. 01 A PIC X(8) VALUE "ABCDEFGH" ... INSPECT A CONVERTING "ABC" TO "ZZZ"
-
ONステートメント
ONステートメントは、次の2つの形式で使用できます。
-
形式1
以下は、OS/VS COBOLの例です。
ON integer imperative steatement
以下は、上記のOS/VS COBOLの変換後の結果ソースです。
WORKING-STORAGE SECTION. 01 A PIC 9(8) COMP VALUE 0. ... ADD 1 TO A IF A = integer imperative statement
-
形式2
以下は、OS/VS COBOLの例です。
ON integer-1 UNTIL integer-2 imperative steatement
以下は、上記のOS/VS COBOLの変換後の結果ソースです。
WORKING-STORAGE SECTION. 01 A PIC 9(8) COMP VALUE 0. ... ADD 1 TO A IF A > integer-1 AND B < integer-2 imperative statement
-
-
CURRENT-DATE特殊レジスターの出力形式
--CURRENT-DATE "MMDDYYYY"オプションを使用して、CURRENT-DATE特殊レジスターの出力形式をMMDDYYYYに変更します。
IDENTIFICATION DIVISION. PROGRAM-ID. TESTCOB. DATA DIVISION. WORKING-STORAGE SECTION. 01 DATE-FORMAT PIC X(8). PROCEDURE DIVISION. MOVE CURRENT-DATE TO DATE-FORMAT. DISPLAY DATE-FORMAT.
以下は、上記のOS/VS COBOLのコンパイル・オプションの使用方法とその実行結果です。
ofcob -x TESTCOB.cob --enable-osvs --current-date 03/22/21
ofcob -x TESTCOB.cob --enable-osvs --current-date MMDDYYYY 03/22/21
ofcob -x TESTCOB.cob --enable-osvs --current-date DDMMYYYY 22/03/21