*COMDECK,GETPRKEY 
#----------------------------------------------------------------------#
#                                                                      #
#     GETPRKEY                                                         #
#                                                                      #
#     POSITION P<KEY> TO NEXT PRIMARY KEY VALUE IN BUFFER POINTED TO   #
#     BY *KEYLIST*.  IF NECESSARY, ISSUE *GETP* ON SEQUENTIAL SCRATCH  #
#     FILE CONTAINING LIST OF PRIMARY KEYS IN ORDER TO FILL BUFFER.    #
#     IF EOI ENCOUNTERED ON SCRATCH FILE, CLOSE SCRATCH FILE AND SET   #
#     RC TO EOICODE.                                                   #
#                                                                      #
#     ON INPUT                                                         #
#     KEYCTR = NUMBER OF KEYS ALREADY FETCHED FROM *KEYLIST* BUFFER    #
#     KEYLENW = LENGTH OF PRIMARY KEY IN WORDS                         #
#     NUMKEYS = (NUMBER OF KEYS) - 1 THAT WILL FIT IN *KEYLIST* BUFFER #
#                                                                      #
#----------------------------------------------------------------------#
  
      PROC GETPRKEY;
      BEGIN 
      IF KEYCTR GR NUMKEYS         # IF *KEYLIST* BUFFER IS EMPTY      #
      THEN
      BEGIN IF KEYFILE NQ 0 THEN
BEGIN FOR KEYCTR=0 STEP 1 UNTIL 62 DO KWSA[KEYCTR]=0; 
      GETP(KEYFLFIT,KEYWSA,I,RA0);
      P<FIT> = LOC(KEYFLFIT);      # POSITION TO FIT                   #
      KEYCTR = 0;                  # REINITIALIZE FOR READING BUFFER   #
      NUMKEYS = FITPTL / 10;       # NUMBER OF CM WORDS IN TRANSFER    #
      NUMKEYS = (NUMKEYS / KEYLENW) - 1;  # NUMBER OF KEYS - 1         #
                                          # IN THIS TRANSFER           #
      IF FITFP EQ O"100"           # IF END OF INFORMATION             #
      THEN
           BEGIN RC = EOICODE;
                 CLOSEM(KEYFLFIT, $DET$, RA0);  # CLOSE, RELEASE BUFFRS#
                 RETURNM(KEYFLFIT,RA0); 
                 KEYFILE = 0; 
                 KEYFLNAM = 0;
                 RETURN;
  
           END
           END
           ELSE BEGIN RC = EOICODE; RETURN; END 
         END
      P<KEY> = KEYLIST + KEYCTR * KEYLENW;  # POSITION TO NEXT KEY     #
  
      IF IKEY[0] EQ 0              # IF END OF KEY LIST                #
      THEN
        BEGIN 
        IF KEYFILE NQ 0            # IF SCRATCH FILE OPEN              #
        THEN
          BEGIN 
          CLOSEM(KEYFLFIT, $DET$, RA0);  # CLOSE, RELEASE BUFFERS      #
          RETURNM(KEYFLFIT, RA0);  # RETURN SCRATCH FILE               #
          KEYFILE = 0;
          KEYFLNAM = 0; 
          END 
  
        RC = EOICODE; 
        RETURN; 
        END 
      RETURN; 
      END                          # END PROC G E T P R K E Y          #
