単一装置ファイルとは、それに対して定義されているプログラム装置が 1 つだけである装置ファイルです。 プリンター・ファイル、ディスケット・ファイル、およびテープ・ファイルは単一装置ファイルです。 プログラム装置の最大数を 1 に指定して作成されたディスプレイ・ファイルやシステム間通信機能 (ICF) ファイルも、単一装置ファイルです。
複数装置ファイルとは、ディスプレイ・ファイルまたはシステム間通信機能 (ICF) ファイルのいずれかです。 複数装置ファイルは、複数のプログラム装置を獲得することができます。 複数装置ファイルの使用例については 図 145 を参照してください。
CRTDSPF コマンドの MAXDEV パラメーターが 1 より大きい場合、ディスプレイ・ファイルに複数のプログラム装置が可能です。 このコマンドの DEV パラメーターに対して *NONE を指定した場合、 このファイルに関連付けられているフィールドを使用する前に、ディスプレイ装置の名前を指定しなければなりません。
ディスプレイ・ファイルの作成および使用方法の詳細については、Web サイト http://www.ibm.com/eserver/iseries/infocenter にある iSeries Information Center の「データベースおよびファイル・システム」カテゴリーを参照してください
CRTICFF コマンドの MAXPGMDEV パラメーターが 1 より大きい場合、ICF ファイルには複数のプログラム装置が可能です。 ICF ファイルの作成と使用法の詳細については、「ICF Programming」を参照してください。
ILE COBOL では、あるファイルが単一装置ファイルか複数装置ファイルかを、そのファイルに複数の装置が可能かどうか に基づいて、実行時に判別します。 実際に獲得された装置の数は、そのファイルが単一装置ファイルか複数装置ファイルかについての判断に影響を及ぼしません。 ファイルが単一装置ファイルか複数装置ファイルかは、コンパイル時には判別されません。 この判別は、ディスプレイ装置または ICF ファイルの現行記述に基づきます。
複数装置ファイルの場合、特定のプログラム装置を入出力ステートメントで使用するつもりなら、その装置を TERMINAL 句で指定します。 単一装置ファイルについても、TERMINAL 句を指定することができます。
以下のページにおいて、複数装置ファイルの使用方法を説明するための例を示します。 このプログラムではディスプレイ・ファイルを使用し、バッチ・モードで実行されるようになっています。 このプログラムは端末装置を獲得し、サインオン画面を使ってそれらの端末装置を送信勧誘します。 端末装置が送信勧誘された後、それらはポーリングされます。 待ち時間が終わるまでにサインオンした人がいない場合、プログラムは終了します。 有効なパスワードを入力すると、別の ILE COBOL プログラムを呼び出して従業員ファイルを更新することができるようになります。 更新が完了したなら、再び装置が送信勧誘され、再び端末がポーリングされます。
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....
A* THIS IS THE MULTIPLE DEVICE DISPLAY FILE
A*
A* DDS FOR THE MIXED FILE MULT
A*
A
A R SIGNON INVITE 1
A O 5 20' '
A DSPATR(RI)
A O 6 20' '
A DSPATR(RI)
A O 6 38' '
A DSPATR(RI)
A O 7 20' '
A DSPATR(RI)
A O 7 27'M D F'
A DSPATR(HI BL)
A O 7 38' '
A DSPATR(RI)
A O 9 20' '
A DSPATR(RI)
A O 20 20'PLEASE LOGON'
A DSPATR(HI)
A PASSWORD 10A I 20 43DSPATR(PC ND)
A WRONG 20A O 21 43
A
A R UPDATE
A O 3 5'UPDATE OF PERSONNEL FILE'
A DSPATR(BL)
A O 7 5'TYPE IN EMPLOYEE NUMBER TO BE +
A UPDATED'
A NUM 7A I 7 44DSPATR(RI PC)
A
A R EMPLOYEE
A O 3 5'EMPLOYEE NUMBER'
A NUM 7A B 3 25DSPATR(PC)
A O 5 5'EMPLOYEE NAME'
A NAME 30A B 5 25DSPATR(PC)
A O 7 5'EMPLOYEE ADDRESS'
A O 9 5'STREET'
A STREET 30A B 9 25DSPATR(PC)
A O 11 5'APARTMENT NUMBER'
A APTNO 5A B 11 25DSPATR(PC)
A O 13 5'CITY'
A CITY 20A B 13 25DSPATR(PC)
A O 15 5'PROVINCE'
A PROV 20A B 15 25DSPATR(PC)
A
A R RECOVERY
A O 3 5'THE EMPLOYEE NUMBER YOU HAVE GIVEN
A IS INVALID'
A O 6 5'TYPE Y TO RETRY'
A O 8 5'TYPE N TO EXIT'
A ANSWER 1X I 10 5DSPATR(RI PC)
A VALUES('Y' 'N')
1 様式 SIGNON には、キーワード INVITE が関連付けられています。 このことは、WRITE ステートメントで様式 SIGNON が使用されるとその書き込み先装置が送信勧誘されるということを意味します。
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+.... A** DDS FOR THE PHYSICAL FILE PASSWORD A* A* A UNIQUE A R PASSWORDS A PASSKEY 10 A PASSWORD 10 A K PASSKEY A
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+.... A* DDS FOR THE PHYSICAL FILE TERM A* WHICH CONTAINS THE LIST OF TERMINALS A* A A R TERM A TERM 10
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/SAMPMDF ISERIES1 06/02/15 15:04:02 ページ 2 ソ ー ス STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付 1 000100 IDENTIFICATION DIVISION. 2 000200 PROGRAM-ID. SAMPMDF. 000300 000400************************************************************** 000500* THE FOLLOWING PROGRAM DEMONSTRATES SOME OF THE FUNCTIONS * 000600* AVAILABLE WITH MULTIPLE DEVICE FILE SUPPORT. * 000700************************************************************** 000800 3 000900 ENVIRONMENT DIVISION. 4 001000 CONFIGURATION SECTION. 5 001100 SOURCE-COMPUTER. IBM-ISERIES 6 001200 OBJECT-COMPUTER. IBM-ISERIES 7 001300 SPECIAL-NAMES. ATTRIBUTE-DATA IS ATTR. 1 9 001400 INPUT-OUTPUT SECTION. 10 001500 FILE-CONTROL. 11 001600 SELECT MULTIPLE-FILE 12 001700 ASSIGN TO WORKSTATION-MULT 13 001800 ORGANIZATION IS TRANSACTION 2 14 001900 ACCESS MODE IS SEQUENTIAL 15 002000 FILE STATUS IS MULTIPLE-FS1, MULTIPLE-FS2 3 16 002100 CONTROL-AREA IS MULTIPLE-CONTROL-AREA. 4 002200 17 002300 SELECT TERMINAL-FILE 18 002400 ASSIGN TO DATABASE-TERM 19 002500 ORGANIZATION IS SEQUENTIAL 20 002600 ACCESS IS SEQUENTIAL 21 002700 FILE STATUS IS TERMINAL-FS1. 002800 22 002900 SELECT PASSWORD-FILE 23 003000 ASSIGN TO DATABASE-PASSWORD 24 003100 ORGANIZATION IS INDEXED 25 003200 RECORD KEY IS EXTERNALLY-DESCRIBED-KEY 26 003300 ACCESS MODE IS RANDOM 27 003400 FILE STATUS IS PASSWORD-FS1. 003500 28 003600 SELECT PRINTER-FILE 29 003700 ASSIGN TO PRINTER-QPRINT. 003800 30 003900 DATA DIVISION. 31 004000 FILE SECTION. 32 004100 FD MULTIPLE-FILE. 33 004200 01 MULTIPLE-REC. 004200 COPY DDS-SIGNON OF MULT. 5 34 +000001 05 MULT-RECORD PIC X(20). SIGNON +000002* INPUT FORMAT:SIGNON FROM FILE MULT OF LIBRARY CBLGUIDE SIGNON +000003* SIGNON 35 +000004 05 SIGNON-I REDEFINES MULT-RECORD. SIGNON 36 +000005 06 PASSWORD PIC X(10). 6 SIGNON +000006* OUTPUT FORMAT:SIGNON FROM FILE MULT OF LIBRARY CBLGUIDE SIGNON +000007* SIGNON 37 +000008 05 SIGNON-O REDEFINES MULT-RECORD. SIGNON 38 +000009 06 WRONG PIC X(20). SIGNON 004300
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/SAMPMDF ISERIES1 06/02/15 15:04:02 ページ 3 STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付 39 004400 FD TERMINAL-FILE. 40 004500 01 TERMINAL-REC. 004500 COPY DDS-ALL-FORMATS OF TERM. 41 +000001 05 TERM-RECORD PIC X(10). <-ALL-FMTS +000002* I-O FORMAT:TERM FROM FILE TERM OF LIBRARY CBLGUIDE <-ALL-FMTS +000003* <-ALL-FMTS 42 +000004 05 TERM REDEFINES TERM-RECORD. <-ALL-FMTS 43 +000005 06 TERM PIC X(10). <-ALL-FMTS 004600 44 004700 FD PASSWORD-FILE. 45 004800 01 PASSWORD-REC. 004800 COPY DDS-ALL-FORMATS OF PASSWORD. 46 +000001 05 PASSWORD-RECORD PIC X(20). <-ALL-FMTS +000002* I-O FORMAT:PASSWORDS FROM FILE PASSWORD OF LIBRARY CBLGUIDE <-ALL-FMTS +000003* <-ALL-FMTS +000004*THE KEY DEFINITIONS FOR RECORD FORMAT PASSWORDS <-ALL-FMTS +000005* NUMBER NAME RETRIEVAL ALTSEQ <-ALL-FMTS +000006* 0001 PASSKEY ASCENDING NO <-ALL-FMTS 47 +000007 05 PASSWORDS REDEFINES PASSWORD-RECORD. <-ALL-FMTS 48 +000008 06 PASSKEY PIC X(10). <-ALL-FMTS 49 +000009 06 PASSWORD PIC X(10). <-ALL-FMTS 004900 50 005000 FD PRINTER-FILE. 51 005100 01 PRINTER-REC. 52 005200 05 PRINTER-RECORD PIC X(132). 005300 53 005400 WORKING-STORAGE SECTION. 005500 005600************************************************************** 005700* DECLARE THE FILE STATUS FOR EACH FILE * 005800************************************************************** 005900 54 006000 01 MULTIPLE-FS1 PIC X(2) VALUE SPACES. 55 006100 01 MULTIPLE-FS2. 7 56 006200 05 MULTIPLE-MAJOR PIC X(2) VALUE SPACES. 57 006300 05 MULTIPLE-MINOR PIC X(2) VALUE SPACES. 58 006400 01 TERMINAL-FS1 PIC X(2) VALUE SPACES. 59 006500 01 PASSWORD-FS1 PIC X(2) VALUE SPACES. 006600 006700************************************************************** 006800* DECLARE STRUCTURE FOR HOLDING FILE ATTRIBUTES * 006900************************************************************** 007000 60 007100 01 STATION-ATTR. 61 007200 05 STATION-TYPE PIC X(1). 8 62 007300 05 STATION-SIZE PIC X(1). 63 007400 05 STATION-LOC PIC X(1). 64 007500 05 FILLER PIC X(1). 65 007600 05 STATION-ACQUIRE PIC X(1). 66 007700 05 STATION-INVITE PIC X(1). 67 007800 05 STATION-DATA PIC X(1). 68 007900 05 STATION-STATUS PIC X(1). 69 008000 05 STATION-DISPLAY PIC X(1). 70 008100 05 STATION-KEYBOARD PIC X(1). 71 008200 05 STATION-SIGNON PIC X(1).
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/SAMPMDF ISERIES1 06/02/15 15:04:02 ページ 4
STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付
72 008300 05 FILLER PIC X(5).
008400
008500**************************************************************
008600* DECLARE THE CONTROL AREA FOR MULTIPLE-FILE *
008700**************************************************************
008800
73 008900 01 MULTIPLE-CONTROL-AREA.
74 009000 05 MULTIPLE-KEY-FEEDBACK PIC X(2) VALUE SPACES.
75 009100 05 MULTIPLE-DEVICE-NAME PIC X(10) VALUE SPACES.
76 009200 05 MULTIPLE-FORMAT-NAME PIC X(10) VALUE SPACES.
009300
009400**************************************************************
009500* DECLARE ERROR REPORT VARIABLES *
009600**************************************************************
009700
77 009800 01 HEADER-LINE.
78 009900 05 FILLER PIC X(60) VALUE SPACES.
79 010000 05 FILLER PIC X(72)
010100 VALUE "MDF ERROR REPORT".
80 010200 01 DETAIL-LINE.
81 010300 05 FILLER PIC X(15) VALUE SPACES.
82 010400 05 DESCRIPTION PIC X(25) VALUE SPACES.
83 010500 05 DETAIL-VALUE PIC X(92) VALUE SPACES.
010600
010700**************************************************************
010800* DECLARE COUNTERS, FLAGS AND STORAGE VARIABLES *
010900**************************************************************
011000
84 011100 01 CURRENT-TERMINAL PIC X(10) VALUE SPACES.
85 011200 01 TERMINAL-ARRAY.
86 011300 05 LIST-OF-TERMINALS OCCURS 250 TIMES.
87 011400 07 DEVICE-NAME PIC X(10).
88 011500 01 COUNTER PIC 9(3) VALUE IS 1.
89 011600 01 NO-OF-TERMINALS PIC 9(3) VALUE IS 1.
90 011700 01 TERMINAL-LIST-FLAG PIC 1.
91 011800 88 END-OF-TERMINAL-LIST VALUE IS B"1".
92 011900 88 NOT-END-OF-TERMINAL-LIST VALUE IS B"0".
93 012000 01 NO-DATA-FLAG PIC 1.
94 012100 88 NO-DATA-AVAILABLE VALUE IS B"1".
95 012200 88 DATA-AVAILABLE VALUE IS B"0".
012300
96 012400 PROCEDURE DIVISION.
012500
97 012600 DECLARATIVES.
012700
012800 MULTIPLE-SECTION SECTION.
012900 USE AFTER STANDARD EXCEPTION PROCEDURE ON MULTIPLE-FILE.
013000
013100 MULTIPLE-PARAGRAPH.
98 013200 WRITE PRINTER-REC FROM HEADER-LINE AFTER ADVANCING PAGE.
99 013300 MOVE "FILE NAME IS:" TO DESCRIPTION OF DETAIL-LINE.
100 013400 MOVE "MULTIPLE FILE" TO DETAIL-VALUE OF DETAIL-LINE.
101 013500 WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 5 LINES.
102 013600 MOVE "FILE STATUS IS:" TO DESCRIPTION OF DETAIL-LINE.
103 013700 MOVE MULTIPLE-FS1 TO DETAIL-VALUE OF DETAIL-LINE.
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/SAMPMDF ISERIES1 06/02/15 15:04:02 ページ 5 STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付 104 013800 WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES. 105 013900 MOVE "EXTENDED STATUS IS:" TO DESCRIPTION OF DETAIL-LINE. 9 106 014000 MOVE MULTIPLE-FS2 TO DETAIL-VALUE OF DETAIL-LINE. 107 014100 WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES. 108 014200 ACCEPT STATION-ATTR FROM ATTR. 10 109 014300 MOVE "FILE ATTRIBUTES ARE:" TO DESCRIPTION OF DETAIL-LINE. 110 014400 MOVE STATION-ATTR TO DETAIL-VALUE OF DETAIL-LINE. 111 014500 WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES. 112 014600 STOP RUN. 014700 014800 TERMINAL-SECTION SECTION. 014900 USE AFTER STANDARD EXCEPTION PROCEDURE ON TERMINAL-FILE. 015000 TERMINAL-PARAGRAPH. 113 015100 WRITE PRINTER-REC FROM HEADER-LINE AFTER ADVANCING PAGE. 114 015200 MOVE "FILE NAME IS:" TO DESCRIPTION OF DETAIL-LINE. 115 015300 MOVE "TERMINAL FILE" TO DETAIL-VALUE OF DETAIL-LINE. 116 015400 WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 5 LINES. 117 015500 MOVE "FILE STATUS IS:" TO DESCRIPTION OF DETAIL-LINE. 118 015600 MOVE TERMINAL-FS1 TO DETAIL-VALUE OF DETAIL-LINE. 119 015700 WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES. 120 015800 STOP RUN. 015900 016000 PASSWORD-SECTION SECTION. 016100 USE AFTER STANDARD EXCEPTION PROCEDURE ON PASSWORD-FILE. 016200 PASSWORD-PARAGRAPH. 121 016300 WRITE PRINTER-REC FROM HEADER-LINE AFTER ADVANCING PAGE. 122 016400 MOVE "FILE NAME IS:" TO DESCRIPTION OF DETAIL-LINE. 123 016500 MOVE "PASSWORD FILE" TO DETAIL-VALUE OF DETAIL-LINE. 124 016600 WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 5 LINES. 125 016700 MOVE "FILE STATUS IS:" TO DESCRIPTION OF DETAIL-LINE. 126 016800 MOVE PASSWORD-FS1 TO DETAIL-VALUE OF DETAIL-LINE. 127 016900 WRITE PRINTER-REC FROM DETAIL-LINE AFTER ADVANCING 2 LINES. 128 017000 STOP RUN. 017100 017200 END DECLARATIVES. 017300 017400************************************************************** 017500* MAIN PROGRAM LOGIC BEGINS HERE * 017600************************************************************** 017700 017800 MAIN-PROGRAM SECTION. 017900 MAINLINE. 129 018000 OPEN I-O MULTIPLE-FILE 11 018100 INPUT TERMINAL-FILE 018200 I-O PASSWORD-FILE 018300 OUTPUT PRINTER-FILE. 018400 130 018500 MOVE 1 TO COUNTER. 131 018600 SET NOT-END-OF-TERMINAL-LIST TO TRUE. 018700****** 018800* Fill Terminal List 018900****** 132 019000 PERFORM UNTIL END-OF-TERMINAL-LIST 133 019100 READ TERMINAL-FILE RECORD 019200 INTO LIST-OF-TERMINALS(COUNTER)
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/SAMPMDF ISERIES1 06/02/15 15:04:02 ページ 6 STMT PL SEQNO -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付 019300 AT END 134 019400 SET END-OF-TERMINAL-LIST TO TRUE 135 019500 SUBTRACT 1 FROM COUNTER 136 019600 MOVE COUNTER TO NO-OF-TERMINALS 019700 END-READ 137 019800 ADD 1 TO COUNTER 019900 END-PERFORM. 020000****** 020100* Acquire and invite terminals 020200****** 138 020300 PERFORM VARYING COUNTER FROM 1 BY 1 020400 UNTIL COUNTER GREATER THAN NO-OF-TERMINALS 139 020500 ACQUIRE LIST-OF-TERMINALS(COUNTER) FOR MULTIPLE-FILE 12 140 020600 WRITE MULTIPLE-REC 13 020700 FORMAT IS "SIGNON" 020800 TERMINAL IS LIST-OF-TERMINALS(COUNTER) 020900 END-WRITE 021000 END-PERFORM. 021100 141 021200 MOVE 1 TO COUNTER. 142 021300 SET DATA-AVAILABLE TO TRUE. 021400****** 021500* Poll terminals 021600****** 143 021700 PERFORM UNTIL NO-DATA-AVAILABLE 144 021800 READ MULTIPLE-FILE RECORD 14 145 021900 IF MULTIPLE-FS2 EQUAL "310" THEN 146 022000 SET NO-DATA-AVAILABLE TO TRUE 15 022100 END-IF 147 022200 IF DATA-AVAILABLE THEN 148 022300 MOVE MULTIPLE-DEVICE-NAME TO CURRENT-TERMINAL 022400****** 022500* Validate Password 16 022600****** 149 022700 MOVE CURRENT-TERMINAL TO PASSKEY OF PASSWORD-REC 150 022800 READ PASSWORD-FILE RECORD 151 022900 IF PASSWORD OF SIGNON-I EQUAL 023000 PASSWORD OF PASSWORD-REC THEN 152 023100 CALL "UPDT" USING CURRENT-TERMINAL 153 023200 MOVE SPACES TO WRONG OF SIGNON-O 023300 ELSE 154 023400 MOVE "INVALID PASSWORD" TO WRONG OF SIGNON-O 023500 END-IF 155 023600 WRITE MULTIPLE-REC 023700 FORMAT IS "SIGNON" 023800 TERMINAL IS CURRENT-TERMINAL 023900 END-WRITE 024000 END-IF 024100 END-PERFORM. 024200****** 024300* Drop terminals 024400****** 156 024500 PERFORM VARYING COUNTER FROM 1 BY 1 024600 UNTIL COUNTER GREATER THAN NO-OF-TERMINALS 157 024700 DROP LIST-OF-TERMINALS(COUNTER) FROM MULTIPLE-FILE 17 024800 END-PERFORM. 024900 158 025000 CLOSE MULTIPLE-FILE 025100 TERMINAL-FILE 025200 PASSWORD-FILE 025300 PRINTER-FILE. 159 025400 STOP RUN. 025500 * * * * * ソ ー ス 仕 様 の 終 わ り * * * * *
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.