ポインター・データ項目を使用するアプリケーションの典型的なものとして、 チェーン・リスト (次のレコードを指す一連のレコード) の処理があります。
次の例は、個人の給与 (SALARY) レコードで構成されるデータのチェーン・リストです。 図 84 は、これらのレコードがストレージでリンクされて表示される 1 つの方法を示すものです。
各レコード (最後のレコードを除く) の最初の項目は、次のレコードを指すポインターです。 最後のレコードの最初の項目にはアドレスではなくヌル値が入っています。 これはこのレコードが最後のレコードであることを示します。
これらのレコードを処理するアプリケーションの上位レベルのロジックは、次のようになります。
OBTAIN ADDRESS OF FIRST RECORD IN CHAINED LIST FROM ROUTINE CHECK FOR END OF THE CHAINED LIST DO UNTIL END OF THE CHAINED LIST PROCESS RECORD GO ON TO THE NEXT RECORD END
図 85 に、チェーン・リスト処理のこの例で使用される処理プログラム CHAINLST の概略を示します。
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/CHAINLST ISERIES1 06/02/15 13:45:02 ページ 2
ソ ー ス
STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付
1 000100 IDENTIFICATION DIVISION.
2 000200 PROGRAM-ID. CHAINLST.
3 000300 ENVIRONMENT DIVISION.
4 000400 DATA DIVISION.
000500*
5 000600 WORKING-STORAGE SECTION.
6 000700 77 PTR-FIRST POINTER VALUE IS NULL.
7 000800 77 DEPT-TOTAL PIC 9(4) VALUE IS 0.
000900*
8 001000 LINKAGE SECTION.
9 001100 01 SALARY-REC.
10 001200 05 PTR-NEXT-REC POINTER.
11 001300 05 NAME PIC X(20).
12 001400 05 DEPT PIC 9(4).
13 001500 05 SALARY PIC 9(6).
14 001600 01 DEPT-X PIC 9(4).
001700*
15 001800 PROCEDURE DIVISION USING DEPT-X.
001900 CHAINLST-PROGRAM SECTION.
002000 MAINLINE.
002100*
002200* FOR EVERYONE IN THE DEPARTMENT RECEIVED AS DEPT-X,
002300* GO THROUGH ALL OF THE RECORDS IN THE CHAINED LIST BASED ON THE
002400* ADDRESS OBTAINED FROM THE PROGRAM CHAINANC
002500* AND ACCUMULATE THE SALARIES.
002600* IN EACH RECORD, PTR-NEXT-REC IS A POINTER TO THE NEXT RECORD
002700* IN THE LIST; IN THE LAST RECORD, PTR-NEXT-REC IS NULL.
002800* DISPLAY THE TOTAL.
002900*
16 003000 CALL "CHAINANC" USING PTR-FIRST
17 003100 SET ADDRESS OF SALARY-REC TO PTR-FIRST
003200*
18 003300 PERFORM WITH TEST BEFORE UNTIL ADDRESS OF SALARY-REC = NULL
19 003400 IF DEPT = DEPT-X THEN
20 003500 ADD SALARY TO DEPT-TOTAL
003600 END-IF
21 003700 SET ADDRESS OF SALARY-REC TO PTR-NEXT-REC
003800 END-PERFORM
003900*
22 004000 DISPLAY DEPT-TOTAL
23 004100 GOBACK.
004200
* * * * * ソ ー ス 仕 様 の 終 わ り * * * * *
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.