*COMDECK,INITPRKEY
#----------------------------------------------------------------------#
#                                                                      #
#     INITPRKEY                                                        #
#                                                                      #
#     INITIALIZE TO READ PRIMARY KEY SEQUENTIAL FILE OR FETCH PRIMARY  #
#     KEY VALUES FROM *KEYLIST* BUFFER                                 #
#     SETS UP FIT FIELDS REQUIRED FOR PRIMARY KEY ACCESS.              #
#     OPENS SEQUENTIAL FILE CONTAINING LIST OF PRIMARY KEYS IF IT      #
#     EXISTS.                                                          #
#                                                                      #
#     ON INPUT                                                         #
#     KEYLENW = LENGTH OF PRIMARY KEY IN WORDS                         #
#                                                                      #
#     ON OUTPUT                                                        #
#     I = PARTIAL TRANSFER LENGTH FOR GETP ON SEQUENTIAL FILE          #
#     NUMKEYS = NUMBER OF PRIMARY KEYS - 1 IN PARTIAL TRANSFER LENGTH  #
#                                                                      #
#----------------------------------------------------------------------#
  
      PROC INITPRKEY; 
      BEGIN 
          BITINDEX = 0; 
                                   # SET UP FIT FIELDS REQUIRED FOR    #
                                   # PRIMARY KEY ACCESS                #
          FITRL = 0;                                                     NEXTGET
          FITRKW = KT$WPOS[RECDORD];
          IF FITFO EQ FOAK         # IF FILE ORGANIZATION IS ACTUAL KEY#
          THEN
                                   # MOVE ACTUAL KEY INFORMATION TO FIT#
            BEGIN 
            FITRKP = KT$ACTKEYPOS[RECDORD]; 
            FITKP  = 0;            # FOR INDEX FILE ONLY - CRM RETURNS #
                                   # AT$ACTKEYLNG CHARACTERS OF THE    #
                                   # INTEGER KEY LEFT-JUSTIFIED.       #
            FITKL  = KT$ACTKEYLNG[RECDORD]; 
            END 
  
          ELSE
                                   # MOVE KEY INFORMATION TO FIT       #
            BEGIN 
            FITRKP = KT$CPOS[RECDORD];
            FITKP = 0;
            FITKL  = KT$LENGTH[RECDORD];
            END 
  
          P<KEYWSA> = KEYLIST;     # POSITION TO KEY BUFFER            #
          KEYCTR = 0;              # INITIALIZE NUMBER OF KEYS TAKEN   #
                                   # OUT OF BUFFER                     #
          NUMKEYS = 63 / KEYLENW;  # NUMBER OF KEYS IN 63 CM WORDS     #
          IF KEYFILE NQ 0          # IF RM$BLP WROTE SEQUENTIAL FILE   #
          THEN
            BEGIN 
            I = NUMKEYS * KEYLENW * 10;  # PARTIAL TRANSFER LENGTH IN  #
                                         # CHARACTERS                  #
            NUMKEYS = NUMKEYS - 1;
            KEYFLNAM[0] = B<0,42>KEYFILE;  # STORE FILE NAME IN FIT    #
            P<FIT> = LOC(KEYFLFIT); 
            FITBBH = TRUE;         # ALLOCATE BUFFERS BELOW HHA        #
                                   # OPEN KEY FILE                     #
            OPENM (KEYFLFIT, $INPUT$, $R$, RA0);                        000350
            KEYCTR = NUMKEYS + 1;  # FLAG GETPRKEY TO READ A BUFFERFULL#
            END 
      RETURN; 
      END                          # END PROC    I N I T P R K E Y     #
