Referring to a Partial Key
A START statement allows the use of a partial key. The KEY IS phrase is required.
Refer to the START Statement
in the IBM® Rational® Development Studio for i: ILE COBOL
Reference for information about the rules for specifying a
search argument that refers to a partial key.
Figure 1 shows an example of START statements using a program-described file.
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/STRTPGMD ISERIES1 06/02/15 14:41:49 Page 2
S o u r c e
STMT PL SEQNBR -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S COPYNAME CHG DATE
1 000100 IDENTIFICATION DIVISION.
2 000200 PROGRAM-ID. STRTPGMD.
000300
3 000400 ENVIRONMENT DIVISION.
4 000500 CONFIGURATION SECTION.
5 000600 SOURCE-COMPUTER. IBM-ISERIES.
6 000700 OBJECT-COMPUTER. IBM-ISERIES.
7 000800 INPUT-OUTPUT SECTION.
8 000900 FILE-CONTROL.
9 001000 SELECT FILE-1 ASSIGN TO DISK-NAMES 00/08/15
11 001100 ACCESS IS DYNAMIC RECORD KEY IS FULL-NAME IN FILE-1
13 001200 ORGANIZATION IS INDEXED.
001300
14 001400 DATA DIVISION.
15 001500 FILE SECTION.
16 001600 FD FILE-1.
17 001700 01 RECORD-DESCRIPTION.
18 001800 03 FULL-NAME.
19 001900 05 LAST-AND-FIRST-NAMES.
20 002000 07 LAST-NAME PIC X(20).
21 002100 07 FIRST-NAME PIC X(20).
22 002200 05 MIDDLE-NAME PIC X(20).
23 002300 03 LAST-FIRST-MIDDLE-INITIAL-NAME REDEFINES FULL-NAME
002400 PIC X(41).
24 002500 03 REST-OF-RECORD PIC X(50).
002600
25 002700 PROCEDURE DIVISION.
002800 MAIN-PROGRAM SECTION.
002900 MAINLINE.
26 003000 OPEN INPUT FILE-1.
003100*
003200* POSITION THE FILE STARTING WITH RECORDS THAT HAVE A LAST NAME OF
003300* "SMITH"
27 003400 MOVE "SMITH" TO LAST-NAME.
28 003500 START FILE-1 KEY IS EQUAL TO LAST-NAME
29 003600 INVALID KEY DISPLAY "NO DATA IN SYSTEM FOR " LAST-NAME
30 003700 GO TO ERROR-ROUTINE
003800 END-START.
003900* .
004000* .
004100* .
004200*
004300* POSITION THE FILE STARTING WITH RECORDS THAT HAVE A LAST NAME OF
004400* "SMITH" AND A FIRST NAME OF "ROBERT"
31 004500 MOVE "SMITH" TO LAST-NAME.
32 004600 MOVE "ROBERT" TO FIRST-NAME.
33 004700 START FILE-1 KEY IS EQUAL TO LAST-AND-FIRST-NAMES
34 004800 INVALID KEY DISPLAY "NO DATA IN SYSTEM FOR "
004900 LAST-AND-FIRST-NAMES
35 005000 GO TO ERROR-ROUTINE
005100 END-START.
005200* .
005300* .
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/STRTPGMD ISERIES1 06/02/15 14:41:49 Page 3
STMT PL SEQNBR -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S COPYNAME CHG DATE
005400* .
005500*
005600* POSITION THE FILE STARTING WITH RECORDS THAT HAVE A LAST NAME OF
005700* "SMITH", A FIRST NAME OF "ROBERT", AND A MIDDLE INITIAL OF "M"
005800
36 005900 MOVE "SMITH" TO LAST-NAME.
37 006000 MOVE "ROBERT" TO FIRST-NAME.
38 006100 MOVE "M" TO MIDDLE-NAME.
39 006200 START FILE-1 KEY IS EQUAL TO LAST-FIRST-MIDDLE-INITIAL-NAME
40 006300 INVALID KEY DISPLAY "NO DATA IN SYSTEM FOR "
006400 LAST-FIRST-MIDDLE-INITIAL-NAME
41 006500 GO TO ERROR-ROUTINE
006600 END-START.
006700
006800
006900 ERROR-ROUTINE.
42 007000 STOP RUN.
* * * * * E N D O F S O U R C E * * * * *
Figure 2 and Figure 3 show an example of START statements using an externally described file.
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
A UNIQUE
A R RDE TEXT('RECORD DESCRIPTION')
A FNAME 20 TEXT('FIRST NAME')
A MINAME 1 TEXT('MIDDLE INITIAL NAME')
A MNAME 19 TEXT('REST OF MIDDLE NAME')
A LNAME 20 TEXT('LAST NAME')
A PHONE 10 0 TEXT('PHONE NUMBER')
A DATA 40 TEXT('REST OF DATA')
A K LNAME
A K FNAME
A K MINAME
A K MNAME
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/STRTEXTD ISERIES1 06/02/15 14:43:17 Page 2
S o u r c e
STMT PL SEQNBR -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S COPYNAME CHG DATE
1 000100 IDENTIFICATION DIVISION.
2 000200 PROGRAM-ID. STRTEXTD.
000300
3 000400 ENVIRONMENT DIVISION.
4 000500 CONFIGURATION SECTION.
5 000600 SOURCE-COMPUTER. IBM-ISERIES
6 000700 OBJECT-COMPUTER. IBM-ISERIES
7 000800 INPUT-OUTPUT SECTION.
8 000900 FILE-CONTROL.
9 001000 SELECT FILE-1 ASSIGN TO DATABASE-NAMES
11 001100 ACCESS IS DYNAMIC RECORD KEY IS EXTERNALLY-DESCRIBED-KEY
13 001200 ORGANIZATION IS INDEXED.
001300
14 001400 DATA DIVISION.
15 001500 FILE SECTION.
16 001600 FD FILE-1.
17 001700 01 RECORD-DESCRIPTION.
001800 COPY DDS-RDE OF NAMES.
+000001* I-O FORMAT:RDE FROM FILE NAMES OF LIBRARY CBLGUIDE RDE
+000002* RECORD DESCRIPTION RDE
+000003*THE KEY DEFINITIONS FOR RECORD FORMAT RDE RDE
+000004* NUMBER NAME RETRIEVAL ALTSEQ RDE
+000005* 0001 LNAME ASCENDING NO RDE
+000006* 0002 FNAME ASCENDING NO RDE
+000007* 0003 MINAME ASCENDING NO RDE
+000008* 0004 MNAME ASCENDING NO RDE
18 +000009 05 RDE. RDE
19 +000010 06 FNAME PIC X(20). RDE
+000011* FIRST NAME RDE
20 +000012 06 MINAME PIC X(1). RDE
+000013* MIDDLE INITIAL NAME RDE
21 +000014 06 MNAME PIC X(19). RDE
+000015* REST OF MIDDLE NAME RDE
22 +000016 06 LNAME PIC X(20). RDE
+000017* LAST NAME RDE
23 +000018 06 PHONE PIC S9(10) COMP-3. RDE
+000019* PHONE NUMBER RDE
24 +000020 06 DATA-DDS PIC X(40). RDE
+000021* REST OF DATA RDE
25 001900 66 MIDDLE-NAME RENAMES MINAME THRU MNAME.
002000
26 002100 PROCEDURE DIVISION.
002200 MAIN-PROGRAM SECTION.
002300 MAINLINE.
27 002400 OPEN INPUT FILE-1.
002500*
002600* POSITION THE FILE STARTING WITH RECORDS THAT HAVE A LAST NAME
002700* OF "SMITH"
28 002800 MOVE "SMITH" TO LNAME.
29 002900 START FILE-1 KEY IS EQUAL TO LNAME
30 003000 INVALID KEY DISPLAY "NO DATA IN SYSTEM FOR " LNAME
31 003100 GO TO ERROR-ROUTINE
003200 END-START.
5722WDS V5R4M0 060210 LN IBM ILE COBOL CBLGUIDE/STRTEXTD ISERIES1 06/02/15 14:43:17 Page 3
STMT PL SEQNBR -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S COPYNAME CHG DATE
003300* .
003400* .
003500* .
003600*
003700* POSITION THE FILE STARTING WITH RECORDS THAT HAVE A LAST NAME
003800* OF "SMITH" AND A FIRST NAME OF "ROBERT"
32 003900 MOVE "SMITH" TO LNAME.
33 004000 MOVE "ROBERT" TO FNAME.
34 004100 START FILE-1 KEY IS EQUAL TO LNAME, FNAME
35 004200 INVALID KEY DISPLAY "NO DATA IN SYSTEM FOR "
004300 LNAME " " FNAME
36 004400 GO TO ERROR-ROUTINE
004500 END-START.
004600* .
004700* .
004800* .
004900*
005000* POSITION THE FILE STARTING WITH RECORDS THAT HAVE A LAST NAME OF
005100* "SMITH", A FIRST NAME OF "ROBERT", AND A MIDDLE INITIAL OF "M"
37 005200 MOVE "SMITH" TO LNAME.
38 005300 MOVE "ROBERT" TO FNAME.
39 005400 MOVE "M" TO MINAME.
40 005500 START FILE-1 KEY IS EQUAL TO LNAME, FNAME, MINAME
41 005600 INVALID KEY DISPLAY "NO DATA IN SYSTEM FOR "
005700 LNAME SPACE FNAME SPACE MINAME
42 005800 GO TO ERROR-ROUTINE
005900 END-START.
006000
006100
006200 ERROR-ROUTINE.
43 006300 STOP RUN.
* * * * * E N D O F S O U R C E * * * * *