メイン・プログラムおよび最初の引数: 命令コード

出口への引数は、標準 390 レベル 2 符号化規則に従っています。引数ごとにポインターが提供されます。

サンプル COBOL 出口は、COBOL がすべての引数をポインターとみなすという事実を利用します。COBOL は内部的に、関連する 01 構造のアドレスを LINKAGE SECTION に設定します。

以下のように、出口へのすべての呼び出しで、最初の引数は命令コードへのポインターになります。

01 RAM-OPCODE PIC S9(9) BINARY.
01 RAM-OPCODE-VAL REDEFINES RAM-OPCODE PIC X(4).
88 OPCODE-INIT-RAM           VALUE X"09010000".
88 OPCODE-TERM-RAM           VALUE X"09010001".
88 OPCODE-VALIDATE-REPOS     VALUE X"09010004".
88 OPCODE-GET-1ST-MEM-REC    VALUE X"09010014".
88 OPCODE-GET-NEXT-MEM-REC   VALUE X"09010015".
88 OPCODE-GET-1ST-MEM-INFO   VALUE X"09010010".
88 OPCODE-GET-NEXT-MEM-INFO  VALUE X"09010011".
88 OPCODE-GET-DISPLAY-INFO   VALUE X"09010008".

COBOL コードでレベル 88 として定義されている呼び出しは、FMNCRAEX が提供するサービスです。

どのように OpCode が FMNCRAEX プログラムによって受け取られるかを示すメイン・プログラム:

PROCEDURE DIVISION USING RAM-OPCODE,
                         RAM-WORK-AREA-PTR,
                         RAM-PARM2,
                         RAM-PARM3,
                         RAM-PARM4,
                         RAM-PARM5,
                         RAM-PARM6.
MAIN SECTION.

STARTUP-RAM.
    IF TRACELVL >= TRACEBAS THEN PERFORM TRACE-STARTUP.
    MOVE 0 TO RAM-RC.

SELECT-RAM-FUNCTION.
    EVALUATE TRUE
       WHEN OPCODE-INIT-RAM
          PERFORM INIT-RAM
       WHEN OPCODE-TERM-RAM
          PERFORM TERM-RAM
       WHEN OPCODE-VALIDATE-REPOS
          PERFORM VALIDATE-REPOS
       WHEN OPCODE-GET-1ST-MEM-REC
          PERFORM GET-1ST-MEM-REC
       WHEN OPCODE-GET-NEXT-MEM-REC
          PERFORM GET-NEXT-MEM-REC
       WHEN OPCODE-GET-1ST-MEM-INFO
          PERFORM GET-1ST-MEM-INFO
       WHEN OPCODE-GET-NEXT-MEM-INFO
          PERFORM GET-NEXT-MEM-INFO
       WHEN OPCODE-GET-DISPLAY-INFO
          PERFORM GET-DISPLAY-INFO
       WHEN OTHER
          SET RAM-RC-UNKNOWN-OPCODE TO TRUE
    END-EVALUATE.

RETURN-FROM-RAM.
    MOVE RAM-RC TO RETURN-CODE.
    GOBACK.