SUBROUTINE PULL3(NK,IFA,IP,ITABLE,LOCR,NMOD2,NESTB,IB) C*****SORTS THE FILE WHOSE PARAMETERS ARE IN COMMON ******************** C*****NK- WHAT WORD IN THE RECORD THE DISTRIBUTION WILL BE ON C*****IFA =2 IF TWO DIGITS OR ONE ALPHA AT A TIME =1 IF ONE DIGIT C*****IP - LETTER OR DIGIT IN THE WORD FROM LEFT TO RIGHT C*****ITABLE WILL HOLD THE DISTRIBUTION TABLE C*****LOCR - SECTOR NUMBER WITHIN A RECORD IN IDI WHERE THE FIRST WORD C*****OF THE KEY IS LOCATED C*****LPFRT - THE LOCATION OF THE POINTER FILE FOR THE FILE WHICH IS C*****TO HOLD THE SORTED RECORDS DIMENSION IPAR(10),JPAR(10),IFRMT(1),IB(10),ITABLE(100) COMMON IDF,LFR,NAVR,MAXR,NSPR,LSR,LFMT,NCPR,LPTR,C1 EQUIVALENCE (IPAR(1),IDF) NSPK=1 IZERO=0 C*****CALCULATE PARAMETERS FOR IUNPAK GO TO (1,2,3)IFA 1 IMP=10 IFA1=1 GO TO 4 2 IMP=5 IFA1=2 GO TO 4 3 IMP=5 IFA1=2 4 N1=IFA1*(IMP-IP) N2=IFA1*(IP-1) C*****PARAMETERS OF THE FILE TO BE SORTED ARE IN COMMON LFR1=LFR NSPR1=NSPR NR=(NAVR-LFR)/NSPR C*****PUT PARAMETERS OF FILE TO HOLD SORTED LIST IN COMMON CALL SLCTF(NMOD2,NESTB) C*****LOOP THROUGH ALL THE RECORDS IN THE FILE TO BE SORTED, CALCULATE C*****WHERE IT GOES IN NEW FILE AND WRITE IT IN NEW FILE JLOC=LFR1 NK1=10*(LOCR-1)+NK DO 10 II=1,NR C*****ILOC IS THE SECTOR IN THE FILE TO BE SORTED THAT THE KEY IS IN CALL DIO(JLOC,1,IB,NSPR) IF(IFA.EQ.3)GO TO 5 NLCODE=IUNPAK(N1,N2,IB(NK1)) 6 IF(NLCODE)20,30,20 30 IPOS=IZERO IZERO=IZERO+1 GO TO 40 20 IPOS=ITABLE(NLCODE) ITABLE(NLCODE)=ITABLE(NLCODE)+1 C*****JLOC REFERS TO THE RECORD IN THE FILE TO BE SORTED C*****KLOC IS THE PLACE IN THE NEW FILE WHERE THAT RECORD WILL GO 40 KLOC=LFR+IPOS*NSPR CALL DIO(KLOC,0,IB,NSPR) 10 JLOC=JLOC+NSPR C*****PUT THE NEW FILE PARAMETERS IN COMMON NAVR=LFR+NR*NSPR CALL SAVEF RETURN 5 NLCODE=JUNPAK(N1/2,N2/2,IB(NK1)) GO TO 6 END