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.

Figure 1. 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.

Figure 2. START Statements Using an Externally Described File -- DDS
 ....+....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
Figure 3. START Statements Using an Externally Described File
 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   * * * * *