RPG COBOL←→ RPG対応
目 次



ここでは、RPGを学習しようとするCOBOLプログラマーのために
COBOLに対応するRPG(III)の命令について紹介しています。




4つのDIVISION

ほぼ次のように対応します。厳密な意味での対応ではありません。
COBOL RPG仕様書
IDENTIFICATION DIVISION
ENVIRONMENT DIVISION
DATA DIVISION E,I,C,O
PROCEDURE DIVISION


プログラムID (PROGRAM-ID)

H仕様書の75〜80桁に記述します。省略可。
RPGのH仕様書でのプログラムIDはほとんど意味を持ちません。
ソースファイルにおけるメンバー名が、実質のプログラムIDとなります。


データ・エリア

データエリアはローカル・データ・エリアとユーザー・データ・エリアがあります。
COBOLではどちらもSPECIAL−NAMES段落でLOCAL−DATA/DATA−AREAとして定義します。

SPECIAL−NAME.
    LOCAL−DATA  IS  L−ARA
    DATA−AREA   IS  U−ARA.
データエリアの入力・出力はACCEPT/DISPLAYで行います。
ユーザーデータエリアの入出力には、「FOR 〜」が必要です。

ACCEPT  WK−LDA  FROM L−ARA.
ACCEPT  WK−UDA  FROM U−ARA  FOR ’USRARA’

DISPLAY  WK−LDA  UPON L−ARA.
ACCEPT  WK−UDA  UPON U−ARA  FOR ’USRARA’

ここで、WK−LDA/WK−UDAはWORKING−STORAGE SECTIONで定義済みとします。


RPGでは、どちらも入力仕様書のデータ構造でタイプ’U’のデータ構造として定義します。

RPGの例:ユーザー・データ・エリアは外部にUSRARAの名前で定義済みとします。
 ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+...5 ...+...
     I* ローカル・データ・エリア                                             
     IARA1       UDS                                                   
     I                                        1  10 L@FLD1             
     I                                       11  15 L@FLD2             
     I* ユーザー・データ・エリア                                               
     IARA2       UDS                                                   
     I                                        1  10 U@FLD1             
     I                                       11  15 U@FLD2             
     I                                       16  30 U@FLD3       

     C* ユーザーデータエリアの入出力                
     C                     IN   USRARA                       
     C                     OUT  USRARA

ローカル・データ・エリアはプログラム開始した段階ですでに値が取り込まれています。
またLR(ラスト・レコード標識)がONでプログラムが終了すると、自動的に出力されます。
ユーザーデータエリアの情報ははIN命令で取得し、OUT命令で外部に出力されます。


ファイル定義 (FILE-CONTROL)

プログラムで使用するファイルは、F仕様書で記述します。

ファイル名

COBOLではSELECT文で、内部のファイル名と外部の実体名(または装置名)を記述しますが、RPGでは外部記述を使用してコンパイルするため、ファイル名は原則として外部の実体名を記述します。ファイル名はF仕様書の7桁目から記述します。

アクセスモード(ACCESS MODE)

RPGではアクセスモードについては特に指定はしません。

ファイル編成(ORGANIZATION)

ファイルの編成については、「装置」として、40カラムから記述します。


DISK データベースファイル、INDEXED,SEQUENTIALとも
PRINTER 印刷装置ファイル
WORKSTN 表示装置ファイル

レコードキー

キー項目の指定は、キー項目で位置決めするか、相対レコード番号(RRN)で位置決めするかを31カラムに指定します。Kとするとキー項目で位置決め、ブランクは相対レコード番号です。

入出力のモード

入出力のモードはCOBOLではOPEN時に決めますが、RPGではF仕様書で15カラムに記述します。Iは入力、Uは入出力、Oは出力です。

処理手順

入出力でどのような処理がされるかを16カラムに記述します。

F:全手順すなわち、READ,WRITE,すべての処理方法がとられます。
C:入出力両方向の処理方法(会話型処理)がとられます。
P:RPGサイクルで動作するとき、プライマリーファイルとしての処理手順がとられます。

レコードキー

COBOLではSELECT文でレコードキーのキー項目を記述しますが、RPGでは指定しません。演算仕様書中で随時記述し使用します。

例:

COBOL
       INPUT-OUTPUT                SECTION.
         FILE-CONTROL.
           SELECT  FILE1  ASSIGN          DATABASE-M420
                          ACCESS  MODE    RANDOM
                          RECORD  KEY     TKTKNO
                          ORGANIZATION    INDEXED.

RPG
...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+...5 ...+...
    FM420    IF  E           K        DISK

外部ファイルへのアサイン ( SELECT 〜 ASSIGN TO )
原則として、プログラム内部のファイル名と外部ファイル名は一致させて使用します。

次のような場合は、CLのOVRDBFコマンドで外部の実体と連携させます。

COBOL
SELECT  FILE1  ASSIGN  TO  DATABASE-M420.
        *****                       ----
RPG用CL
OVRDBF  FILE(FILE1)  TOFILE(WRKLIB/M420)
             *****                 ----
注:RPGのプログラムではF仕様書でFILE1と記述されているものとします。

SORCE-COMPUTER / OBJECT-COMPUTER

RPGでは不要です。(OSの機能が十分でなかったころの産物です。)
レコードレイアウトの定義 FD

I 仕様書のDS(データ構造)が対応しますが、レコードレイアウトはデータベースファイルの定義で行い、
プログラム内部では普通行いません。
コンパイラーはコンパイルのとき、該当のデータベースファイルから必要な情報を取得します。


01 レベルのグループ項目

I仕様書におけるDSが対応します。
例:
COBOL
      01  YYMMDD. 
          03  YY  PIC  99.
          03  MM  PIC  99.
          03  DD  PIC  99.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
     IYYMMDD      DS
     I                                       01  040YYMM
     I                                       01  020YY
     I                                       03  040MM
     I                                       05  060DD

中間レベルのグループ項目に相当するものは、上例のYYMMのように、割付場所を重複させて実現します。
中間レベルのグループ項目より、むしろREDEFINES に相当します。


データ項目の定義(長さ、タイプ、小数点以下)

データベースファイル記述、I仕様書での記述、C仕様書での記述の3通りの方法があります。
例:
COBOL
       01  M420R.
           03  TKSTS     PIC  X.
           03  TKTKNO    PIC  X(5).
           03  TKNMKJ    PIC  X(42).
           03  TKNMKN    PIC  X(20).
           03  TKTEL     PIC  X(12).
           03  TKGYSH    PIC  X(2).
           03  TKFLG     PIC  X.
           03  TKUR\     PIC  S9(15).
RPG
データベース
ファイルの記述
      ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
      A          R M420R                     TEXT('得意先MF')
      A*データフィールド
      A            TKSTS          1A         COLHDG('状態フラグ')
      A            TKTKNO         5A         COLHDG('得意先Y')
      A            TKNMKJ        42O         COLHDG('得意先名')
      A            TKNMKN        20A         COLHDG('得意先カナ')
      A            TKTEL         12A         COLHDG('電話番号  ')
      A            TKGYSH         2A         COLHDG('業種コード')
      A            TKFLG          1A         COLHDG('フラグ    ')
      A            TKUR\         15S 0       COLHDG('売上実績額')
RPG
I仕様書の中
      ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
      IREC1        DS
      I                                        1   1 TKSTS
      I                                        2   6 TKTKNO
      I                                        7  48 TKNMKJ
      I                                       49  68 TKNMKN
      I                                       69  80 TKTEL
      I                                       81  82 TKGYSH
      I                                       83  83 TKFLG
      I                                       84  980TKUR\
RPG
C仕様書で
     +... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
      C                     Z-ADD000       X       70        パックデシマル
      C                     MOVE *BLANK    MMM    32        文字列  OT
      C           *LIKE     DEFN AAA       BBB              参照先と同一
                                 ↑参照先  ↑定義
注:*LIKEを使用すると、参照先と同じ属性の変数が定義できます。
上の例では、BBBを定義しています。
変数名の長さは、COBOL は31桁まで,RPG-IIIは 6桁まで



初期値 (VALUE)

I 仕様書の中での記述(8桁目を I とする)
例:
COBOL
      01  CONST.
          03      NO-X    PIC  X  VALUE  '0'.
          03      YES-X   PIC  X  VALUE  '1'.
RPG
       ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
     I            DS
     I I            '0'                       1   1 NO
     I I            '1'                       2   2 YES


ダミー項目
(FILLER)

RPGでFILLERに該当するものはありません。
定義をしないでおくと実質的にFILLERの状態になります。
例:
COBOL
      01  DTL01.
          03  NBR         PIC  99.
          03  FILLER      PIC  XX     VALUE  SPACE.
          03  NAME-KJ     PIC  X(32).
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
     I            DS
     I                                        1   20NBR
     I                                        5  36 NAMEKJ


再配置(REDEFINES)

I 仕様書のDSで同じ場所を占めるように定義します。
例:
COBOL
       01  YYMMDD.
           03  YY    PIC  99.
           03  MM    PIC  99.
           03  DD    PIC  99.
       01  YYMM-R    REDEFINES  YYMMDD.
           03  YYMM  PIC  9999.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
     IYYMMDD      DS
     I                                       01  040YYMM
     I                                       01  020YY
     I                                       03  040MM
     I                                       05  060DD


配列 (OCCURS)

E仕様書で定義します。1次元の配列のみです。
例:
COBOL
      01  DAYS          OCCURS  12.
          03   M-DAY    99.
RPG
      ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7
      E                    MDY        12  2 0             月の日数


PICTURE 編集

印刷ファイルのDDSで定義します。
DDS
      A*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
      A*  編集コードのテスト                                            
      A          R DTL01                                                
      A            FLD01          7S 0      1 EDTCDE(1)                 
      A            FLD02          7S 0     +2 EDTCDE(2)                 
      A            FLD03          7S 0     +2 EDTCDE(3)                 
      A            FLD04          7S 0     +2 EDTCDE(4)                 
      A*                                                                
      A          R DTL02                                                
      A            FLD0J          7S 0      1 EDTCDE(J)                 
      A            FLD0K          7S 0     +2 EDTCDE(K)                 
      A            FLD0L          7S 0     +2 EDTCDE(L)                 
      A            FLD0M          7S 0     +2 EDTCDE(M)     
印刷される
場合
      ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 

DTL01 9,999,999  9,999,999  9999999  9999999             

DTL02 9,999,999-  9,999,999-  9999999-  9999999-         



スクリーンセクション(SCREEN SECTION)
該当する対応がありません。画面への入出力は、EXFMT命令を使用します。
RPG
      ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
      C                     EXFMTFMT01


プログラムへの受取パラメータ(USING)

予約語 の*ENTRYを使ったENTRY   PLISTが対応します。
例:
COBOL
           PROCEURE  DIVISION  USING  YYMM  RTN.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
     C           *ENTRY    PLIST
     C                     PARM           YYMM
     C                     PARM           RTN


内部サブルーチンとその呼出(SECTION)

BEGSR 〜 ENSSRが相当します。呼出は EXSR 命令で行います。
例:
COBOL
           PERFORM  AAA-SUB.
           ・・・
       AAA-SUB       SECTION.
           ・・・
           ・・・
       AAA-SUB-END.
           EXIT.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
     C                     EXSR AAASUB
                          ・・・
     C           AAASUB    BEGSR
                          ・・・
                          ・・・
     C                     ENDSR


外部プログラムの呼出と引き渡しパラメータ

CALL命令とPARMの組合せが対応します。
例:
COBOL
         CALL  'BBBPGM'  USING  AA  BB  CC.
RPG
      ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
      C                     CALL 'BBBPGM'
      C                     PARM           AA
      C                     PARM           BB
      C                     PARM           CC


パラメータリストを定義しておき、複数個所で利用できます。(下例)
RPG
      ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
      C           PLIST1    PLIST
      C                     PARM           AA
      C                     PARM           BB
      C                     PARM           CC
      C     ・・・
      C     ・・・
      C                     CALL 'BBBPGM'  PLIST1
      C     ・・・
      C     ・・・
      C                     CALL 'BBBPGM'  PLIST1

簡易入出力

COBOLのACCEPT/DISPLAYに対しては、DSPLYの機能がほぼが対応します。


RPG
      ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
      C           'ERROR'   DSPLY

      C           'INPUT?'  DSPLY          RET
  

1番目の例は表示のみ、2番目の例は、表示と変数RETへ応答を要求します。


条件分岐 ( IF〜 THEN〜 ELSE〜END-IF)

RPGではIF , ELSE , ENDIF が対応します。
例 :
COBOL
           IF   YY  >  50  THEN
                ADD  1900  YYYY
           ELSE
                ADD  2000  YYYY
           END-IF.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
     C           YY        IFGT 50
     C                     ADD  1900      YYYY
     C                     ELSE
     C                     ADD  2000      YYYY
     C                     ENDIF


条件分岐(EVALUATE 〜 WHEN 〜 END-EVALUATE)

SELEC 〜 WHXX 〜 ENDSLが対応します。
例:
COBOL
          EVALUATE  RANK
              WHEN 'A'
                 MOVE  1.3     TO  RITSU
              WHEN 'B'
                 MOVE  1.25    TO  RITSU
              WHEN OTHER
                 MOVE  1.0     TO  RITSU
          END-EVALUATE.
RPG
      ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
      C                     SELEC
      C           RANK      WHEQ 'A'
      C                     Z-ADD1.3       RITSU
      C           RANK      WHEQ 'B'
      C                     Z-ADD1.25      RITSU
      C                     OHTER
      C                     Z-ADD1.0       RITSU
      C                     ENDSL


繰返し処理1(PERFORM 〜 UNTIL)

DOUXX 〜 ENDDO が対応します。
例:
COBOL
          PERFORM   UNITL  STS  =  '*'
          ・・・
          ・・・
          END-PARFORM.
RPG
      ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
      C           STS       DOUEQ'*'
      C     ・・・
      C     ・・・
      C                     ENDDO
内部サブルーチン呼出型の繰返しは対応する命令はありません。
DOXX 〜 EXSR ・・・ 〜 ENDDOで実現します。


繰返し処理2(PERFORM 〜 VARYING 〜 FROM 〜 BY 〜 UNTIL〜 END-PERFORM)

DO 〜 ENDDO が対応します。
例:
COBOL
            PERFORM  VARYING  K  FROM  11  BY  1  UNTIL > 19
             ・・・
             ・・・
            END-PERFORM.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
     C           11        DOUGT19        K
     C                     ・・・     
     C                     ・・・
     C                     ENDDO


条件の複合

条件が複合する場合は、IFXXやDOWXX,DOUXXなどの後に、ANDXX,ORXXを後続させます。
例:
COBOL
          IF  A = B  OR   C = D  THEN
              MOVE  123   TO  X
          ELSE
              MOVE  456   TO  X
          END-IF
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
     C           A         IFEQ B
     C           C         OREQ D
     C                     Z-ADD123       X
     C                     ELSE
     C                     Z-ADD456       X
     C                     ENDIF


日付取得 (ACCEPT)

UDATEまたは*DATEを使用します。
例:
COBOL
           ACCEPT  YYMMDD  FROM  DATE.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
     C                     Z-ADDUDATE     W6YMD
     C*
     C                     Z-ADD*DATE     W8YMD
注:UDATEは6桁日付、*DATEは8桁日付です。
この日付はサインオンしたときの日付です。システム日付ではありません。
ジョブ日付は、コマンドまたはCLプログラムで変更が可能です。



表示 ( DISPLAY )

DSPLY命令が対応します。
例:
COBOL
           DISPLAY  DATA1  UPON  CONSOLE.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...
     C           DATA1     DSPLY


ファイルオープン (明示OPEN)

OPENが対応します。RPGは特に指定しないと、自動OPENです。
F仕様書で、ユーザーがオープンの制御権を持つ旨の指定が必要です。
例:
COBOL
           OPEN    I/O     M420.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ... 〜 7 ...+
     FM420    UF  E           K        DISK                UC
             ・・・
             ・・・
     C                     OPEN M420
71、72桁にUCを指定すると、ユーザーがオープンの制御権を持ちます。
このときは、プログラム開始時に自動OPENされません。


ファイルのオープン属性 (INPUT, I-O, OUTPUT)

F仕様書で記述します。
例:
COBOL
           OPEN  INPUT   FILE1.
           OPEN  I-O     FILE2.
           OPEN  OUTPUT  FILE3.     
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 .
     FFILE1   IF  E           K        DISK
     FFILE2   UF  E           K        DISK
     FFILE3   O   E           K        DISK     


ファイルクローズ (CLOSE)

CLOSEが対応します。(ユーザーがオープンの制御権を持つ場合)
例:
COBOL
           CLOSE   M420.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 . 
     C                     CLOSEM420


加減乗除 (ADD, SUBTRACT, MULTIPLY, DIVIDE)

それぞれ次のように対応します。
例:
COBOL
           ADD        A   TO    B    GIVING  C.
           SUBTRACT   B   FROM  A    CIVING  C.
           MULTIPLY   A   BY    B    GIVING  C.
           DIVIDE     A   BY    B    GIVING  C  REMAINDER  R.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...    7 ...+
     C           A         ADD   B        C
     C           A         SUB   B        C
     C           A         MULT  B        C
     C           A         DIV   B        C
     C                     MVR            R            剰余取得
注:割算の余りは、MVRという別の命令によって取得します。


四捨五入

53桁目にHを指定します。
例:
COBOL
           COMPUTE  C  ROUNDED  =  A  *  B.       
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 . 
     C           A         MULT B         C         H          


計算(COMPUTE)

RPG-IIIにはCOMPUTEに該当する命令はありません。
注:ILE−RPGにはCOMPUTEに相当する命令(EVAL)があります。


移送命令 ( MOVE )

MOVEL,MOVEが該当します。MOVELは左詰割付、MOVEは右詰割付です。
移送元が短いとき、COBOLではブランクが詰られますが、RPGでは前のデータが残ったままになります。(これを利用して文字列の連結を行うことがあります)
ブランクを詰めるには、53桁目にを指定します。

例:
COBOL
           MOVE  A  TO  B.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 . 
     C                     MOVELA         B         
     C                     MOVELC         D         P
     C                     MOVE E         F

注:移送命令考慮事項

RPGでは同じフィールド名(変数名)は入力、出力同じところがとられます。
例えば、入力のフィールド名が、FLD01,FLD02,FLD03、同じく出力のフィールド名がFLD01、FLD02、FLD03と
すると、入力から出力への移送命令は不要です。


文字列チェック(INSPECT)

部分的にSCAN命令が対応します。
例:
COBOL
       01  ID-1    PIC  X(10)  VALUE "123ABXXXXX".  
       01  CONTR-1 PIC  99     VALUE 00.            

           INSPECT  ID-1  TALLYING  CONTR-1                
                    FOR   CHARACTERS BEFORE INITIAL "AB".  
RPG
     I            DS                                         
     I I            '123ABXXXXX'              1  10 WRK1     
     I I            '1234ABXXXX'             11  20 WRK2     
     C*                                                      
     C           'AB'      SCAN WRK1      X1      70         
     C           'AB'      SCAN WRK2      X2      70         
     C           X1        DSPLY                             
     C           X2        DSPLY                             
     C                     SETON                     LR  
補足:COBOLでは見つかるまでの文字数で3になりますが、RPGではX1は4、X2は5になります。


ブランク、ゼロ( SPACE ZERO )

*BLANK、*ZEROが該当します。
例:
COBOL
           MOVE  SPACE  TO  AA.
           MOVE  ZERO   TO  BB.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...
     C                     MOVE *BLANK    AA
     C                     MOVE *ZERO     BB


ローバリュー/ハイバリュー(LOW−VALUE/HIGH−VALUE)

RPGでは予約語の*LOVAL,*HIVALが該当します。
例:
COBOL
           MOVE  LOW-VALUE   TO  CC.
           MOVE  HIGH-VALUE  TO  DD.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...
     C                     MOVE *LOVAL    CC
     C                     MOVE *HIVAL    DD


配列のN番目の要素

AAA,Nの形でコーディングします。(RPG-III)
従って配列名は最長4桁までに制限しておくのが便利です。
例:
COBOL
           MOVE  LOW-VALUE   TO  AAA (N).
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...
     C                     MOVE *LOVAL    AAA,N


順次読取(READ)

READ命令が対応します。
例:
COBOL
           READ  FILE1   AT  END  〜
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6
     C                     READ FILE1R                   99

注:COBOLにはない、次のような命令があります。
READE 同一キーグループのみの読取り
REDPE 同一キーグループのみの逆読取り


キーによるランダムアクセス

CHAIN命令が該当します。
例:
COBOL
           SELECT  FILE1  ASSIGN   PFM20
                          ORGANIZATION   IS  INDEXED
                          ACCESS     MODE    RANDOM
                          RECORD     KEY     〜
           ・・・
           READ    FILE1   INVALID  KEY
                   MOVE    SPACE    TO  NAME1.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6
     FM420    IF  E           K        DISK
     C*       
           ・・・
           ・・・
     C           KEY1      CHAINFILE1R                 98
     C           *IN98     IFEQ *ON
     C                     MOVE *BLANK    NAME1
     C                     ENDIF


出力 (WRITE)

WRITE命令が該当します。
COBOLの場合、WRITE命令が実行されると、出力バッファーはクリアされますが、
RPGの場合はクリアされないので注意が必要です。
バッファーをクリアするためには、RPGではCLEAR命令があります。
例:
COBOL
           WRITE   F1REC.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6
     C                     WRITEF1REC
     C                     CLEARF1REC
注:上例のクリア命令はCOBOL互換の例のために入れたものです。
通常は、WRITEのたびにクリアを入れることはあまりしません。


実行打ち切り (STOP)

該当する命令はありません。


制御権の戻し(GO BACK)

RETRN命令が該当します。この命令を実行すると、RPGは呼出側プログラムに制御を戻します。
例:
COBOL
           GO  BACK.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6
     C                     SETON                     LR   
     C                     RETRN
注:SETON    LRはLAST RECORDをよみとった意味で、ファイルをCLOSEします。
LRをオンにしないで、RETRNすると、ファイルはOPENのままです。



セクションからの抜け出し。(EXIT)

RPGには該当する命令はありません。強いていえば、ENDSRが相当します。
例:
COBOL
           EXIT.
RPG
     ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6
     C                     ENDSR


対応する命令のないもの

RPGにはあるが、COBOLには対応する命令がないものには次のようなものがあります。

MOVE   右詰割りつけ。
MVR    剰余取得。
SORTA  配列ソート
READE  同一キー読取
REDPE  同一キー読取。(逆順)
XFOOT  配列要素の合計。
XLATE   文字置き換え。





目 次



(C)COPYRIGHT ISHIOKA KATSUHIDE ,2000