SUBROUTINE INITL LOGICAL*1 FNAMEI(30),FNAMEO(30),TABFLG INTEGER*2 TOTLEN,LLEN(9),KEYLOC(9),KEYORD(9),KEYLEN(9) COMMON LPEREC,TOTLEN,LLEN,NKEYS,KEYLOC,KEYORD,KEYLEN COMMON /TABFLG/TABFLG WRITE(1,1) 1 FORMAT('$Input file name: ') READ(1,2,END=99)(FNAMEI(I),I=1,30) 2 FORMAT(30A1) WRITE(1,3) 3 FORMAT('$Output file name: ') READ(1,2,END=99)(FNAMEO(I),I=1,30) IF(FNAMEO(1).NE.' ')GOTO5 DO 4 I=1,30 IF(FNAMEI(I).EQ.';')GOTO5 4 FNAMEO(I)=FNAMEI(I) 5 L=LENGTH(FNAMEI,30) FNAMEI(L+1)=0 OPEN(UNIT=2,NAME=FNAMEI,TYPE='OLD',READONLY,ERR=97) L=LENGTH(FNAMEO,30) FNAMEO(L+1)=0 OPEN(UNIT=3,NAME=FNAMEO,CARRIAGECONTROL='LIST',ERR=95) WRITE(1,55) 55 FORMAT('$Do you want TAB characters expanded to spaces (Y/N)? ') READ(1,56)TABFLG 56 FORMAT(A1) TABFLG=TABFLG.EQ.'Y' WRITE(1,6) 6 FORMAT('$Number of lines per record (1 to 9): ') READ(1,7,END=99)LPEREC 7 FORMAT(4I10) IF(LPEREC.LT.1.OR.LPEREC.GT.9)GOTO93 TOTLEN=0 DO 9 I=1,LPEREC WRITE(1,8)I 8 FORMAT('$Maximum length of line ',I1,' of a record: ') READ(1,7,END=99)L LLEN(I)=L+1 9 TOTLEN=TOTLEN+LLEN(I) WRITE(1,10) 10 FORMAT('$Number of sort keys (1 to 9): ') READ(1,7,END=99)NKEYS IF(NKEYS.LT.1.OR.NKEYS.GT.9)GOTO91 WRITE(1,11) 11 FORMAT(' Enter line#, character#, length, order', 1' (+1=ascending, -1=descending) for:') DO 14 I=1,NKEYS WRITE(1,12)I 12 FORMAT('$Key ',I1,': ') READ(1,7,END=99)L,K,KEYLEN(I),KEYORD(I) IF(L.LT.1.OR.L.GT.LPEREC.OR.K.LT.1.OR.K+KEYLEN(I).GT.LLEN(L).OR. 1IABS(KEYORD(I)).NE.1.OR.KEYLEN(I).LT.1)GOTO89 N=0 IF(L.EQ.1)GOTO14 DO 13 J=1,L-1 13 N=N+LLEN(J) 14 KEYLOC(I)=N+K RETURN 89 WRITE(1,90) 90 FORMAT('0Error -- Invalid or inconsistent key parameter'/) GOTO99 91 WRITE(1,92) 92 FORMAT('0Error -- Invalid number of keys specified'/) GOTO99 93 WRITE(1,94) 94 FORMAT('0Error -- Invalid number of lines per record specified'/) GOTO99 95 WRITE(1,96)(FNAMEO(I),I=1,L) 96 FORMAT('0Error -- Open failure on output file ',A1/) GOTO99 97 WRITE(1,98)(FNAMEI(I),I=1,L) 98 FORMAT('0Error -- Open failure on input file ',A1/) 99 CALL EXIT END