メンバー・レコードの取得
メンバー内のすべてのレコードを抽出するため、File Manager は最初に GetFirstMemberRecord 呼び出しを実行し、次に複数の GetNextMemberRecord 呼び出しを実行します。レコードがある場合は、rc=0 になります。この処理は、ファイルの終わり (RAM-RC-EOF) 戻りコードを出して、いつでも正常に終了することができます。
GetFirstMemberRecord 呼び出しには、パラメーターとしてメンバー名が必要です。これは、以下のようにして渡されます。
01 MEMBER-ID-SPEC.
05 SOFTWARE-VERSION PIC 9(4) BINARY.
05 MEM-ID-SPEC-COLL-PTR POINTER.
01 MEM-ID-SPEC-COLL.
05 SOFTWARE-VERSION PIC 9(4) BINARY.
05 MEM-ID-COMPONENT-COUNT PIC 9(4) BINARY.
05 MEM-ID-COMPONENT-PTR POINTER
OCCURS 1 TO 10 TIMES
DEPENDING ON MEM-ID-COMPONENT-COUNT.
01 MEM-ID-COMPONENT.
05 MEM-ID-COMP-TYPE PIC 9(4) BINARY.
05 MEM-ID-COMP-NAME-STRING.
10 MEM-ID-COMP-NAME-LEN PIC 9(4) BINARY.
10 MEM-ID-COMP-NAME-GROUP.
15 MEM-ID-COMP-NAME PIC X
OCCURS 1 TO 10 TIMES
DEPENDING ON MEM-ID-COMP-NAME-LEN.
01 MEMBER-NAME-STRING.
05 MEMBER-NAME-LEN PIC 9(4) BINARY.
05 MEMBER-NAME-GROUP.
10 MEMBER-NAME PIC X
OCCURS 1 TO 10 TIMES
DEPENDING ON MEMBER-NAME-LEN.
GET-RAM-PARM3-MEM-ID.
SET ADDRESS OF MEMBER-ID-SPEC TO RAM-PARM3
SET ADDRESS OF MEM-ID-SPEC-COLL
TO MEM-ID-SPEC-COLL-PTR
IF MEM-ID-COMPONENT-COUNT NOT = 1 THEN
SET RAM-RC-MEM-ID-SPEC-BAD TO TRUE
ELSE
SET ADDRESS OF MEM-ID-COMPONENT
TO MEM-ID-COMPONENT-PTR(1)
IF MEM-ID-COMP-TYPE NOT = 0 THEN
SET RAM-RC-MEM-ID-SPEC-BAD TO TRUE
END-IF
END-IF
IF RAM-RC-OK THEN
SET ADDRESS OF MEMBER-NAME-STRING
TO ADDRESS OF MEM-ID-COMP-NAME-STRING
IF TRACELVL >= TRACEBAS THEN
MOVE SPACES TO LOG-TEXT
STRING "Member = " DELIMITED BY SIZE
MEMBER-NAME-GROUP DELIMITED BY SIZE
INTO LOG-TEXT
CALL LOGFUNC USING LOG-HOST, LOG-MODULE, LOG-TEXT
END-IF
END-IF.ユーザー出口を COBOL で作成している場合、通常、メンバー名引数を取得するこのコードを変更する必要はありません。このコードはデータ構造を記述し、PL/I または HLASM に出口を再書き込みするユーザーのために提供されているものです。
最初のメンバー・レコードを取得するためのコード:
GET-1ST-MEM-REC.
PERFORM GET-RAM-PARM2-RAM-ARGS
PERFORM VAL-REPOS-VS-RAM-ARGS
IF RAM-RC-OK THEN
PERFORM GET-RAM-PARM3-MEM-ID
PERFORM USER-GET-1ST-MEM-REC
END-IF.このコードは VAL-REPOS-VS-RAM-ARGS ルーチンを使用し、既にライブラリーが妥当性検査済みかどうかを判別します。妥当性検査済みであれば、再実行する必要はありません。その後、メンバー名を取得し、USER-GET-1ST-MEM-REC を呼び出します。ここで、ユーザー・ライブラリー・アクセス方式への呼び出しを挿入する必要があります。
メンバー・レコード結果は、以下のようなデータ域に戻されます。
01 REC-DATA-RETURN-AREA.
05 REC-DATA-RETURN-ATTR1 PIC 9(4) BINARY VALUE 1.
05 REC-DATA-RETURN-LEN1 PIC 9(4) BINARY VALUE 80.
05 REC-DATA-RETURN-STR1 PIC X(80).
05 REC-DATA-RETURN-END PIC X(2) VALUE X"FFFF".メンバー・レコード・テキストが REC-DATA-RETURN-STR1 に置かれ、戻りコード 0 が返されます。
メンバーが空であれば、RAM-RC-EOF (180) 戻りコードが返されます。
注: 専有 INCLUDE ステートメントをメンバーに置く機能を提供する LMS をサポートしている場合は、その専有 INCLUDE を完全に展開する必要があります。
メンバー内の 2 番目以降のレコードを取得する場合、メンバー名パラメーターは出口に渡されません。