Trailing-Edge
-
PDP-10 Archives
-
decuslib20-05
-
decus/20-0137/update/update.for
There is 1 other file named update.for in the archive. Click here to see a list.
00100 C WESTERN MICHIGAN UNIVERSITY
00200 C UPDATE.F4 (FILE NAME ON LIBRARY DECTAPE)
00300 C UPDATE, 3.4.2 (CALLING NAME, SUBLST. NO.)
00400 C RECORD INSERTIONS, MODIFICATIONS, DELETIONS, AND RETRIEVALS
00500 C THIS PROGRAM WAS ORIGINALLY PROGRAMMED BY B. GRANET.
00600 C SUBSTANTIAL ADDITIONAL PROGRAMMING WAS INCORPORATED BY
00700 C R.R. BARR III TO ALLOW FOR THE MAINTENANCE OF MULTIPLE
00800 C FILES, MODIFICATION OF PARTS OF RECORDS, AND FIELD SPECIFICATIONS.
00900 C LIBRARY DECTAPE PROGS. USED: USAGE.MAC
01000 C FORWMU PROGS. USED: DEVICE, TTYPTY, PRINTS, DEVCHG,
01100 C EXIST, ALLCOR
01200 C APLIB PROGS. USED: IOB, FORGEN
01300 C INTERRAL SUBR. USED: NAMER, TREGEN, INMODE, RITIT,
01400 C PRTREC, RESRET, REDRIT, DYN1, DYN2, DYN3, DYN4, DYN5, DYN6,
01500 C DYN7, DYN9
01600 C ABOVE COMMENTS AND RIGHT ADJUSTED COMMENTS PUT IN BY WG
01700 C
01750 IMPLICIT INTEGER (A-Z)
01800 DIMENSION IFMT(112),JFMT(114)
01900 DIMENSION MODE(120),JLEN(120)
02000 C KSIZE IS THE SAME SIZE AS MAXIMUM # OF FIELDS.
02100 EQUIVALENCE(IFMT(1),JFMT(2))
02200 DIMENSION NAME1(2),NAME2(2),BASE(1),NAME4(2)
02300 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
02400 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
02500 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
02600 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
02700 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
02800 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV,NAME1,NAME2
02900 DATA JFMT(1)/'(1X,'/,JFMT(114)/')'/
03000 DATA BLANK/' '/
03200 DATA ONCE/0/
03300 C---------------TTYPTY RETURNS ZERO - TTY JOB, MINUS ONE - BATCH JOB
03400 CALL TTYPTY(ICODE)
03500 INP=1
03600 IRP=2
03700 C SET TO 1 IN RITIT SUBROUTINE(SW3)
03800 SW3=0
03900 C SET TO 1 BY 'OUTPT' AND 'LIST',RESET TO 0 BY 'NEW' AND 'INSER'(SW4)
04000 C ALSO RESET TO 0 BY DELET
04100 SW4=0
04200 C---------------DEVCHG ASSOCIATES DSK, CDR, ETC. WITH LOGICAL
04300 C--------------- DEVICE NO.
04400 CALL DEVCHG('DSK',IRP)
04500 CALL DEVCHG('DSK',6)
04600 CALL DEVCHG('DSK',7)
04700 IF(ICODE.EQ.0)CALL DEVCHG('TTY',4)
04800 IF(ICODE.EQ.-1)CALL DEVCHG('DSK',4)
04900 IDLG=-1
05000 INT=5
05100 WRITE(IDLG,1)
05200 1 FORMAT(1X, 'WMU'/1X, 'FILE UPDATING AND RECORD RETRIEVAL'/)
05300 C CALL USAGE('UPDAT')
05400 4 WRITE(IDLG,2)
05500 2 FORMAT(/' *',$)
05600 READ(INT,3)CHOICE
05700 3 FORMAT(A5)
05800 IF(CHOICE.EQ.'NEW'.OR.CHOICE.EQ.'EXIT'.OR.CHOICE.EQ.'INSER'.OR.
05900 1CHOICE.EQ.'MODIF'.OR.CHOICE.EQ.'DELET'.OR.CHOICE.EQ.'PTREC'.OR.
06000 2CHOICE.EQ.'OUTPT'.OR.((CHOICE.AND."777777777400).OR."100).EQ.
06100 3'LIST')GO TO 17
06200 GO TO 70
06300 17 IF(CHOICE.NE.'NEW'.AND.CHOICE.NE.'EXIT')GO TO 6
06400 80 IF(CHOICE.EQ.'INSER')GO TO 52
06500 IF(CHOICE.EQ.'MODIF')GO TO 77
06600 IF(CHOICE.EQ.'DELET') GO TO 41
06700 IF(CHOICE.EQ.'NEW') GO TO 5
06800 IF(((CHOICE.AND."777777777400).OR."100).EQ.'LIST')GO TO 8
06900 IF(CHOICE.EQ.'PTREC') GO TO 9
07000 IF(CHOICE.EQ.'EXIT')GO TO 42
07100 IF(CHOICE.EQ.'OUTPT')GO TO 62
07200 70 WRITE(IDLG,40)
07300 40 FORMAT(' UNDEFINED OPTION-TRY AGAIN.'/)
07400 C---------------TERMINATE PROGRAM IF INT=5 IS NOT TERMINAL
07500 CALL DEVICE(INT)
07600 GO TO 4
07700 C 'NEW' PATH
07800 5 IF(ONCE.EQ.0) GO TO 84
07900 CALL DYN4(BASE(I1),BASE(I2),BASE(I3),BASE(I4))
08000 84 ONCE=1
08100 INSCTR=0
08200 DELFRE=0
08300 SW3=0
08400 SW4=0
08500 TRESIZ=0
08600 WRITE(IDLG,85)
08700 85 FORMAT(1X,'WHICH FIELD IS THE KEY?'/)
08800 READ(INT,86)KEYNO
08900 86 FORMAT(I)
09000 DO 87 I=1,19
09100 87 MODE(I)='A'
09200 MODE(KEYNO)='I'
09300 MSIZE=0
09400 CALL FORGEN(IFMT,112,MODE,JLEN,MSIZE,0,ISTD,IERR)
09500 IF(IERR.EQ.-1)CALL EXIT
09600 IF(IERR.EQ.1)CALL EXIT
09700 JX(0)=0
09800 JX(1)=0
09900 DO 88 I=2,MSIZE
10000 88 JX(I)=JX(I-1)+(JLEN(I-1)+4)/5
10100 NOVAR=JX(MSIZE)+(JLEN(MSIZE)+4)/5
10200 C---------------0 MEANS INPUT? PRINTS. IDLG, INT, INP, IRP, IDEVI,
10300 C--------------- IDEVO, ICODE ARE INPUT THRU COMMON /IOBLK/
10400 CALL IOB(0)
10500 CALL RELEAS(6)
10600 NORECS=0
10700 IF(IDEVI.NE.'TTY')GO TO 26
10800 WRITE(IDLG,91)
10900 91 FORMAT(1X,'ENTER RECORDS.'/)
11000 26 READ(INP,IFMT,END=27)(DATA(L),L=1,NOVAR)
11100 IF(IDEVI.EQ.'TTY')WRITE(6)(DATA(L),L=1,NOVAR)
11200 NORECS=NORECS+1
11300 GO TO 26
11400 27 WRITE(IDLG,21)NORECS
11500 21 FORMAT(1X,'THE NO. OF RECORDS IN MASTER FILE IS ',I6,'.'/)
11600 IF (NORECS.EQ.0)CALL EXIT
11700 REWIND INP
11800 REWIND 6
11900 TRESIZ=NORECS
12000 IF((1.AND.NORECS).EQ.0)TRESIZ=NORECS+1
12100 NPLUS=TRESIZ
12200 NORCS=NORECS
12300 IF((1.AND.NORECS).EQ.0)NORCS=NORECS+1
12400 MAX=4*(NORCS+200)
12500 CALL ALLCOR(MAX,IERR,I1,BASE)
12600 IF(IERR.NE.0)GO TO 82
12700 I0=NORCS+200
12800 I2=I1+I0
12900 I3=I2+I0
13000 I4=I3+I0
13100 CALL TREGEN(BASE(I1),BASE(I2),BASE(I3))
13200 IF(IDEVI.NE.'TTY')GO TO 90
13300 93 WRITE(IDLG,89)
13400 89 FORMAT(1X,'ENTER NAME FOR NEW MASTER FILE.'/)
13500 READ(INT,11)NAME3
13600 90 CALL DYN1(BASE(I1),BASE(I2),BASE(I3),BASE(I4))
13700 GO TO 4
13800 C 'INSER' PATH
13900 52 CH123=1
14000 ONCE=1
14100 28 CALL DYN2(BASE(I1),BASE(I2),BASE(I3),BASE(I4))
14200 SW4=0
14300 IF(SW3.EQ.1)GO TO 66
14400 GO TO 4
14500 C 'DELET' PATH
14600 41 CH123=2
14700 ONCE=1
14800 57 CALL DYN5(BASE(I1),BASE(I2),BASE(I3),BASE(I4))
14900 SW4=0
15000 GO TO 4
15100 C 'LISTN' PATH
15200 8 CALL DYN7(BASE(I1),BASE(I2),BASE(I3),BASE(I4))
15300 GO TO 4
15400 C 'EXIT' PATH
15500 42 IF(TRESIZ.EQ.0)GO TO 79
15600 CALL DYN4(BASE(I1),BASE(I2),BASE(I3),BASE(I4))
15700 CALL EXIT
15800 C 'PTREC' PATH
15900 9 CH123=3
16000 61 CALL DYN9(BASE(I1),BASE(I2),BASE(I3),BASE(I4))
16100 GO TO 4
16200 C 'OUTPT' PATH
16300 62 CALL DYN6(BASE(I1),BASE(I2),BASE(I3),BASE(I4))
16400 GO TO 4
16500 66 CALL DYN4(BASE(I1),BASE(I2),BASE(I3),BASE(I4))
16600 NAME2(2)='.NEW'
16700 CALL DEFINE FILE(7,0,NV,JNAME2,0,0,109)
16800 CALL DEFINE FILE(6,0,NV,JNAME1 ,0,0)
16900 DO 65 I=1,TRESIZ
17000 READ(6 )(DATA(K),K=1,NOVAR)
17100 65 WRITE(7 ,IFMT)(DATA(K),K=1,NOVAR)
17200 CALL RELEAS(6)
17300 CALL RELEAS(7 )
17400 CALL EXIT
17500 C (SW5.EQ.0.AND.CHOICE.NE.'NEW') PATH
17600 69 CALL DEFINE FILE(6,0,NV,JNAME2 ,0,0)
17700 READ(6 )NORECS,TRESIZ,MEDIAN,KEYNO,INSCTR,DELFRE,MAX,NOVAR,IFMT
17800 1,MSIZE
17900 READ(6)(JX(I),I=0,120)
18000 NORCS=NORECS
18100 IF((1.AND.NORECS).EQ.0)NORCS=NORECS+1
18200 CALL ALLCOR(MAX,IERR,I1,BASE)
18300 I0=NORCS+200
18400 I2=I1+I0
18500 I3=I2+I0
18600 I4=I3+I0
18700 IF(CHOICE.NE.'INSER')GO TO 76
18800 NPLUS=TRESIZ
18900 76 IF(IERR.NE.0)GO TO 82
19000 SW5=1
19100 CALL DYN3(BASE(I1),BASE(I2),BASE(I3),BASE(I4))
19200 C FIND NEXT PATH
19300 GO TO 80
19400 C 'MODIF' PATH
19500 77 CH123=4
19600 78 CALL DYN2(BASE(I1),BASE(I2),BASE(I3),BASE(I4))
19700 GO TO 4
19800 79 WRITE(IDLG,81)
19900 81 FORMAT(1X,'CANNOT USE ''EXIT'' AS FIRST OPTION.'/)
20000 CALL DEVICE(INT)
20100 GO TO 4
20200 82 WRITE(IDLG,83)
20300 83 FORMAT(1X,'TOO MANY RECORDS'/)
20400 CALL DEVICE(INT)
20500 GO TO 4
20600 6 WRITE(IDLG,10)
20700 10 FORMAT(1X,'WHICH MASTER FILE?'/)
20800 NPLUS=TRESIZ
20900 READ(INT,11)NAME4
21000 CALL NAMER(NAME4)
21100 11 FORMAT(A5,A1)
21200 IF((NAME2(1).EQ.NAME5(1)).AND.(NAME2(2).EQ.NAME5(2)))
21300 1GO TO 80
21400 IF(ONCE.EQ.1)CALL DYN4(BASE(I1),BASE(I2),BASE(I3),BASE(I4))
21500 NAME5(1)=NAME2(1)
21600 NAME5(2)=NAME2(2)
21700 ONCE=0
21800 CALL EXIST(NAME1,IERR)
21900 IF(IERR.EQ.-1)GO TO 12
22000 IF(IERR.NE.0)GO TO 15
22100 CALL EXIST(NAME2,IERR)
22200 IF(IERR.NE.0)GO TO 18
22300 GO TO 69
22400 15 WRITE(IDLG,16) NAME1(1),NAME1(2)
22500 20 CALL DEVICE(INT)
22600 GO TO 6
22700 12 WRITE(IDLG,13)
22800 13 FORMAT(1X,'NAME IS INVALID. TRY AGAIN.'/)
22900 CALL DEVICE(INT)
23000 GO TO 6
23100 18 WRITE (IDLG,16)NAME2(1),NAME2(2)
23200 16 FORMAT(1X,'FILE ',2A5, ' DOES NOT EXIST.'/)
23300 GO TO 6
23400 END
23500 SUBROUTINE NAMER(NAME4)
23550 IMPLICIT INTEGER(A-Z)
23600 DIMENSION JFMT(114)
23700 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
23800 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
23900 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
24000 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
24100 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
24200 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV,NAME1(2),NAME2(2)
24400 DIMENSION RAN(8),PTK(8),NAME(6),NAME4(2)
24500 DATA DOT,RAN,PTK/'.','R','A','N',5*' ','P','T','K',5*' '/
24600 DECODE(6,100,NAME4(1)) (NAME(I),I=1,6)
24700 100 FORMAT(10A1)
24800 I=1
24900 DO 110 K=2,6
25000 IF(NAME(K).EQ.' '.OR.NAME(K).EQ.'.')GO TO 120
25100 110 I=I+1
25200 120 ENCODE(10,100,NAME1(1)) (NAME(J),J=1,I),DOT,(RAN(J),J=1,9-I)
25300 ENCODE(10,100,NAME2(1)) (NAME(J),J=1,I),DOT,(PTK(J),J=1,9-I)
25400 RETURN
25500 END
25600 SUBROUTINE TREGEN(LEFTSI,RITSID,SEQUEN)
25650 IMPLICIT INTEGER (A-Z)
25700 DIMENSION IFMT(112),JFMT(114)
25800 EQUIVALENCE(IFMT(1),JFMT(2))
25900 DIMENSION LEFTSI(1),RITSID(1),SEQUEN(1)
26000 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
26100 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
26200 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
26300 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
26400 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
26500 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV
26700 TEMP1=NORECS/2+1
26800 SUB=TEMP1
26900 MEDIAN=TEMP1
27000 ADVANC=0
27100 DO 3 I=1,NORECS+200
27200 LEFTSI(I)=0
27300 3 RITSID(I)=0
27400 5 SUB5=SUB/2
27500 SUB5AD=ADVANC+SUB5
27600 SUBADV=SUB+ADVANC
27700 LEFTSI(SUBADV)=SUB5AD
27800 SEQUEN(SUB5AD)=SUBADV
27900 IF(SUB5.EQ.1)GO TO 4
28000 SUB=SUB5
28100 GO TO 5
28200 4 IF(SUB5AD.EQ.MEDIAN)GO TO 6
28300 RANGE=SEQUEN(SUB5AD)-SUB5AD
28400 IF(RANGE.EQ.1)GO TO 7
28500 IF(RANGE.EQ.2)GO TO 8
28600 IF(RANGE.EQ.3)GO TO 9
28700 RANGE=RANGE/2
28800 MIDDLE=SUB5AD+RANGE
28900 RITSID(SUB5AD)=MIDDLE
29000 SEQUEN(MIDDLE)=SEQUEN(SUB5AD)
29100 ADVANC=SUB5AD
29200 SUB=RANGE
29300 GO TO 5
29400 8 MIDDLE=SUB5AD+1
29500 RITSID(SUB5AD)=MIDDLE
29600 GO TO 7
29700 9 MIDDLE=SUB5AD+1
29800 RITSID(SUB5AD)=MIDDLE
29900 TEMP1=MIDDLE+1
30000 RITSID(MIDDLE)=TEMP1
30100 7 SUB5AD=SEQUEN(SUB5AD)
30200 GO TO 4
30300 6 TEMP1=2*MEDIAN-LEFTSI(MEDIAN)
30400 RITSID(MEDIAN)=TEMP1
30500 MEDRED=MEDIAN-1
30600 10 IF(LEFTSI(MEDRED).EQ.0.AND.RITSID(MEDRED).EQ.0)GO TO 11
30700 TEMP1=2*MEDIAN-LEFTSI(MEDRED)
30800 IF(TEMP1.EQ.(2*MEDIAN))GO TO 12
30900 TEMP2=2*MEDIAN-MEDRED
31000 RITSID(TEMP2)=TEMP1
31100 12 TEMP1=2*MEDIAN-RITSID(MEDRED)
31200 IF(TEMP1.EQ.(2*MEDIAN))GO TO 11
31300 TEMP2=2*MEDIAN-MEDRED
31400 LEFTSI(TEMP2)=TEMP1
31500 11 MEDRED=MEDRED-1
31600 IF(MEDRED.EQ.0)RETURN
31700 GO TO 10
31800 END
31900 SUBROUTINE INMODE(LEFTSI,RITSID,RECKEY,DELMRK)
31950 IMPLICIT INTEGER (A-Z)
32000 DIMENSION IFMT(112),JFMT(114)
32100 EQUIVALENCE(IFMT(1),JFMT(2))
32200 DIMENSION LEFTSI(1),RITSID(1),RECKEY(1),DELMRK(1)
32300 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
32400 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
32500 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
32600 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
32700 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
32800 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV
33000 IF((1.AND.NORECS).NE.0)GO TO 80
33100 N=NORECS+1
33200 IF(NEWINF.GT.RECKEY(MEDIAN-1))GO TO 2
33300 GO TO 5
33400 80 N=NORECS
33500 8 IF(NEWINF.LE.RECKEY(SEARCH))GO TO 1
33600 GO TO 2
33700 1 IF(NEWINF.EQ.RECKEY(SEARCH))GO TO 16
33800 5 TEMP1=LEFTSI(SEARCH)
33900 I=1
34000 6 TEMP2=SEARCH
34100 SEARCH=TEMP1
34200 Z=TEMP1-TEMP2
34300 GO TO 4
34400 16 IF(DELMRK(SEARCH).NE.'D')GO TO 46
34500 GO TO (50,52,56,3,3),CH123
34600 50 DELMRK(SEARCH)=BLANK
34700 GO TO 34
34800 2 TEMP1=RITSID(SEARCH)
34900 I=2
35000 GO TO 6
35100 4 IF(Z.EQ.1.OR.Z.EQ.-1.OR.TEMP1.GT.N.OR.TEMP2.GT.N.OR.TEMP1.EQ.0)
35200 1GO TO 7
35300 GO TO 8
35400 7 IF(TEMP1.EQ.0)GO TO 63
35500 IF((Z.EQ.-1).OR.(TEMP1.GT.N.AND.TEMP2.GT.N.AND.I.EQ.1))GO TO 9
35600 GO TO 10
35700 9 IF(NEWINF.LE.RECKEY(SEARCH))GO TO 14
35800 20 GO TO (69,59,61,70,70),CH123
35900 69 NPLUS=NPLUS+1
36000 LEFTSI(NPLUS)=TEMP1
36100 65 LEFTSI(TEMP2)=NPLUS
36200 GO TO 23
36300 63 IF(I.EQ.1)GO TO 64
36400 GO TO (72,59,61,70,70),CH123
36500 72 NPLUS=NPLUS+1
36600 GO TO 27
36700 64 GO TO (73,59,61,70,70),CH123
36800 73 NPLUS=NPLUS+1
36900 GO TO 65
37000 10 IF(Z.NE.1)GO TO 12
37100 IF(NEWINF.LT.RECKEY(SEARCH))GO TO 13
37200 14 IF(NEWINF.NE.RECKEY(SEARCH))GO TO 12
37300 GO TO 16
37400 13 GO TO (74,59,61,70,70),CH123
37500 74 NPLUS=NPLUS+1
37600 RITSID(NPLUS)=TEMP1
37700 27 RITSID(TEMP2)=NPLUS
37800 23 SEARCH=NPLUS
37900 34 INSCTR=INSCTR+1
38000 43 CALL RITIT(RECKEY)
38100 RETURN
38200 12 IF(I.EQ.1)GO TO 15
38300 IF(RITSID(TEMP1).EQ.0)GO TO 17
38400 22 IF(NEWINF.LE.RECKEY(SEARCH))GO TO 18
38500 IF(I.NE.1)GO TO 19
38600 GO TO 20
38700 15 IF(LEFTSI(TEMP1).EQ.0)GO TO 67
38800 GO TO 22
38900 17 GO TO (75,59,61,70,70),CH123
39000 75 NPLUS=+NPLUS+1
39100 RITSID(NPLUS)=RITSID(TEMP1)
39200 RITSID(TEMP1)=NPLUS
39300 GO TO 23
39400 18 IF(NEWINF.NE.RECKEY(SEARCH))GO TO 24
39500 GO TO 16
39600 24 IF(I.EQ.1)GO TO 25
39700 GO TO (76,59,61,70,70),CH123
39800 76 NPLUS=NPLUS+1
39900 RITSID(NPLUS)=SEARCH
40000 GO TO 27
40100 25 SEARCH=LEFTSI(TEMP1)
40200 GO TO 26
40300 21 GO TO (77,59,61,70,70),CH123
40400 77 NPLUS=NPLUS+1
40500 LEFTSI(NPLUS)=LEFTSI(TEMP1)
40600 LEFTSI(TEMP1)=NPLUS
40700 GO TO 23
40800 26 IF(NEWINF.LE.RECKEY(SEARCH))GO TO 28
40900 GO TO 29
41000 28 IF(NEWINF.NE.RECKEY(SEARCH))GO TO 30
41100 GO TO 16
41200 29 IF(I.EQ.1)GO TO 21
41300 GO TO 17
41400 30 IF(I.EQ.1)GO TO 31
41500 GO TO 32
41600 31 IF(LEFTSI(SEARCH).EQ.0)GO TO 33
41700 TEMP1=SEARCH
41800 SEARCH=LEFTSI(SEARCH)
41900 GO TO 26
42000 33 GO TO (78,59,61,70,70),CH123
42100 78 NPLUS=NPLUS+1
42200 LEFTSI(SEARCH)=NPLUS
42300 GO TO 23
42400 32 IF(RITSID(SEARCH).EQ.0)GO TO 35
42500 TEMP1=SEARCH
42600 SEARCH=RITSID(SEARCH)
42700 GO TO 26
42800 35 GO TO (79,59,61,70,70),CH123
42900 79 NPLUS=NPLUS+1
43000 RITSID(SEARCH)=NPLUS
43100 GO TO 23
43200 19 SEARCH=RITSID(TEMP1)
43300 40 IF(NEWINF.LE.RECKEY(SEARCH))GO TO 36
43400 GO TO 37
43500 36 IF(NEWINF.NE.RECKEY(SEARCH))GO TO 38
43600 GO TO 16
43700 38 GO TO (81,59,61,70,70)CH123
43800 81 NPLUS=NPLUS+1
43900 RITSID(NPLUS)=SEARCH
44000 RITSID(TEMP1)=NPLUS
44100 GO TO 23
44200 37 IF(RITSID(SEARCH).NE.0)GO TO 39
44300 GO TO 35
44400 39 TEMP1=SEARCH
44500 SEARCH=RITSID(SEARCH)
44600 GO TO 40
44700 46 GO TO (68,58,55,43,101),CH123
44800 52 CALL DEFINE FILE(4 ,0,NV,'MESFIL.',0,0,109)
44900 WRITE(4 ,54)NEWINF
45000 54 FORMAT(' YOU ATTEMPTED TO DELETE A RECORD PREVIOUSLY DELETED.'/,
45100 1' THE KEY IS ',I10,' .'/)
45200 101 RETURN
45300 55 CALL PRTREC
45400 RETURN
45500 56 CALL DEFINE FILE(4 ,0,NV,'MESFIL.',0,0,109)
45600 WRITE(4 ,57)NEWINF
45700 57 FORMAT(' YOU ATTEMPTED TO PRINT A RECORD PREVIOUSLY DELETED.'/,
45800 1' THE KEY IS ',I10,' .'/)
45900 RETURN
46000 58 DELMRK(SEARCH)='D'
46100 DELFRE=DELFRE+1
46200 RETURN
46300 59 CALL DEFINE FILE(4 ,0,NV,'MESFIL.',0,0,109)
46400 WRITE(4 ,60)NEWINF
46500 60 FORMAT(' YOU ATTEMPTED TO DELETE A RECORD WHICH DOES NOT EXIST.'/,
46600 1' THE KEY IS ',I10,' .'/)
46700 RETURN
46800 61 CALL DEFINE FILE(4 ,0,NV,'MESFIL.',0,0,109)
46900 WRITE(4 ,62)NEWINF
47000 62 FORMAT(' YOU ATTEMPTED TO PRINT A RECORD WHICH DOES NOT EXIST.'/,
47100 1' THE KEY IS ',I10,' .'/)
47200 RETURN
47300 67 IF(NEWINF.LE.RECKEY(TEMP1))GO TO 21
47400 GO TO 20
47500 3 CALL DEFINE FILE(4,0,NV,'MESFIL.',0,0,109)
47600 WRITE(4,11)NEWINF
47700 11 FORMAT(' YOU ATTEMPTED TO MODIFY A RECORD PREVIOUSLY DELETED.'/,
47800 1' THE KEY IS ',I10,' ,'/)
47900 RETURN
48000 68 CALL DEFINE FILE(4,0,NV,'MESFIL.',0,0,109)
48100 WRITE(4,82)NEWINF
48200 82 FORMAT(' YOU ATTEMPTED TO INSERT WITH A KEY WHICH ALREADY EXISTS.
48300 1'/,1X,' THE KEY IS ',I10,' .'/)
48400 RETURN
48500 70 CALL DEFINE FILE(4,0,NV,'MESFIL.',0,0,109)
48600 WRITE(4,71)NEWINF
48700 71 FORMAT(' YOU ATTEMPTED TO MODIFY WITH A KEY WHICH DOES NOT EXIST.
48800 1 '/1X,'THE KEY IS ',I10,' .'/)
48900 SW3=1
49000 RETURN
49100 END
49200 SUBROUTINE RITIT(RECKEY)
49250 IMPLICIT INTEGER (A-Z)
49300 DIMENSION IFMT(112),JFMT(114)
49400 EQUIVALENCE(IFMT(1),JFMT(2))
49500 DIMENSION RECKEY(1)
49600 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
49700 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
49800 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
49900 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
50000 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
50100 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV
50300 Z=INSCTR+NORECS
50400 IF(Z.GT.3500 )GO TO 2
50500 IF(INSCTR.LE.200)GO TO 1
50600 CALL DEFINE FILE(4,0,NV,'MESFIL.',0,0,109)
50700 WRITE(4,3)NEWINF,Z
50800 3 FORMAT(1X,'THE MAX. NO. OF RECORD INSERTIONS HAS BEEN REACHED.'/
50900 11X,'START OVER BY ENTERING THE "NEW" OPTION. THE FIRST RECORD '/1X
51000 2,'NOT INSERTED HAS KEY ',I10,' .'/1X,'THE TOTAL NO. OF RECORDS ',
51100 3'IN YOUR FILE IS ',I5,' .'/)
51200 SW3=1
51300 RETURN
51400 1 WRITE(7 #SEARCH) (DATA(I),I=1,NOVAR)
51500 RECKEY(SEARCH)=NEWINF
51600 RETURN
51700 2 CALL DEFINE FILE(4,0,NV,'MESFIL.',0,0,109)
51800 WRITE(4,4)
51900 4 FORMAT(1X,'YOUR FILE CONTAINS MAX. NO. OF RECORDS(3500 ) ',
52000 1'ALLOWED BY THIS PROGRAM.'/1X,'THE FIRST RECORD NOT INSERTED ',
52100 2'HAS KEY ',I10,' .'/)
52200 SW3=1
52300 RETURN
52400 END
52500 SUBROUTINE PRTREC
52550 IMPLICIT INTEGER (A-Z)
52600 DIMENSION IFMT(112),JFMT(114)
52700 EQUIVALENCE(IFMT(1),JFMT(2))
52800 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
52900 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
53000 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
53100 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
53200 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
53300 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV
53500 READ(6 #SEARCH) (DATA(I),I=1,NOVAR)
53600 IF(IDEVO.EQ.'LPT'.OR.IDEVO.EQ.'TTY')GO TO 1
53700 WRITE(IRP,IFMT)(DATA(I),I=1,NOVAR)
53800 2 RETURN
53900 1 WRITE(IRP,JFMT)(DATA(I),I=1,NOVAR)
54000 GO TO 2
54100 END
54200 SUBROUTINE RESRET(LEFTSI,RITSID,SASEAR,DELMRK)
54250 IMPLICIT INTEGER (A-Z)
54300 DIMENSION IFMT(112),JFMT(114)
54400 EQUIVALENCE(IFMT(1),JFMT(2))
54500 DIMENSION LEFTSI(1),RITSID(1),SASEAR(1),DELMRK(1)
54600 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
54700 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
54800 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
54900 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
55000 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
55100 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV,NAME1(2),NAME2(2)
55300 CALL DEFINE FILE(6,NOVAR,NV,JNAME1,0,0)
55400 NONODS=NORECS
55500 IF((1.AND.NORECS).EQ.0)NONODS=NORECS+1
55600 1 NPLU =NONODS+INSCTR-DELFRE
55700 SEARCH=1
55800 LIFO=1
55900 I=1
56000 COUNTR=0
56100 IF(LEFTSI(1).LE.NONODS)GO TO 2
56200 LIFO=1
56300 GO TO 4
56400 2 I=2
56500 SEARCH=0
56600 GO TO 3
56700 4 IF(I.EQ.1)GO TO 5
56800 SW1=1
56900 GO TO 6
57000 5 SASEAR(LIFO)=SEARCH
57100 IF(LEFTSI(SEARCH).LE.NONODS)GO TO 14
57200 LIFO=LIFO+1
57300 SEARCH=LEFTSI(SEARCH)
57400 GO TO 4
57500 6 TEMP2=SEARCH
57600 10 SEARCH=RITSID(SEARCH)
57700 IF(DELMRK(SEARCH).NE.'D')CALL REDRIT
57800 IF(COUNTR.EQ.NPLU )RETURN
57900 IF(RITSID(SEARCH).LT.NONODS.AND.RITSID(SEARCH).NE.0)GO TO 8
58000 11 IF(RITSID(SEARCH).NE.0)GO TO 10
58100 IF(SW1.GT.1)GO TO 9
58200 SEARCH=TEMP2
58300 GO TO 3
58400 9 SEARCH=TEMP1
58500 GO TO 3
58600 8 SW1=SW1+1
58700 TEMP1=RITSID(SEARCH)
58800 GO TO 10
58900 3 SEARCH=SEARCH+1
59000 IF(LEFTSI(SEARCH).LT.NONODS)GO TO 13
59100 I=1
59200 LIFO=1
59300 GO TO 5
59400 13 IF(DELMRK(SEARCH).NE.'D')CALL REDRIT
59500 IF(COUNTR.EQ.NPLU )RETURN
59600 GO TO 12
59700 12 IF(I.EQ.1)GO TO 15
59800 GO TO 16
59900 14 IF(DELMRK(SEARCH).NE.'D')CALL REDRIT
60000 IF(COUNTR.EQ.NPLU )RETURN
60100 IF(LIFO.EQ.1)GO TO 17
60200 LIFO=LIFO-1
60300 SEARCH=SASEAR(LIFO)
60400 IF(LEFTSI(SEARCH).LE.NONODS)GO TO 19
60500 GO TO 14
60600 17 IF(I.EQ.1)GO TO 18
60700 I=1
60800 GO TO 15
60900 18 I=2
61000 GO TO 16
61100 19 IF(DELMRK(SEARCH).NE.'D')CALL REDRIT
61200 IF(COUNTR.EQ.NPLU )RETURN
61300 SEARCH=SEARCH+1
61400 GO TO 12
61500 15 IF(LEFTSI(SEARCH).LE.NONODS)GO TO 20
61600 LIFO=1
61700 GO TO 4
61800 16 IF(RITSID(SEARCH).LE.NONODS)GO TO 20
61900 LIFO=1
62000 GO TO 4
62100 20 IF(I.EQ.2)GO TO 3
62200 I=2
62300 GO TO 16
62400 END
62500 SUBROUTINE REDRIT
62550 IMPLICIT INTEGER (A-Z)
62600 DIMENSION IFMT(112),JFMT(114)
62700 EQUIVALENCE(IFMT(1),JFMT(2))
62800 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
62900 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
63000 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
63100 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
63200 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
63300 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV
63500 COUNTR=COUNTR+1
63600 IF((1.AND.NORECS).NE.0)GO TO 1
63700 IF(SEARCH.EQ.MEDIAN)GO TO 2
63800 1 READ(6 #SEARCH) (DATA(I),I=1,NOVAR)
63900 IF(IDEVO.EQ.'LPT'.OR.IDEVO.EQ.'TTY')GO TO 3
64000 WRITE(IRP,IFMT)(DATA(I),I=1,NOVAR)
64100 2 RETURN
64200 3 WRITE(IRP,JFMT)(DATA(I),I=1,NOVAR)
64300 RETURN
64400 END
64500 C CALLED BY 'NEW' PATH(DYN1)
64600 SUBROUTINE DYN1(LEFTSI,RITSID,RECKEY,DELMRK)
64650 IMPLICIT INTEGER(A-Z)
64700 DIMENSION IFMT(112),JFMT(114)
64800 EQUIVALENCE(IFMT(1),JFMT(2))
64900 DIMENSION LEFTSI(1),RITSID(1),RECKEY(1),DELMRK(1)
65000 DIMENSION KNAM(10),NAME4(2)
65100 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
65200 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
65300 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
65400 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
65500 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
65600 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV,NAME1(2),NAME2(2)
65800 NAME4(1)=NAME3(1)
65900 NAME4(2)=NAME3(2)
66000 13 FORMAT(A5,A1)
66100 17 CALL NAMER(NAME4)
66200 CALL EXIST(NAME1,IERR)
66300 IF(IERR.EQ.-1)GO TO 14
66400 IF(IERR.NE.0)GO TO 10
66500 CALL DEVICE(INT)
66600 WRITE(IDLG,11)
66700 11 FORMAT(1X,'THIS MASTER FILE NAME ALREADY EXISTS.USE ANOTHER NAME.'
66800 1/)
66900 16 WRITE(IDLG,12)
67000 12 FORMAT(1X,'WHICH MASTER FILE NAME WOULD YOU LIKE?'/)
67100 READ(INT,13)NAME4
67200 GO TO 17
67300 14 WRITE(IDLG,15)
67400 15 FORMAT(1X,'INVALID NAME-TRY AGAIN.'/)
67500 GO TO 16
67600 10 TEMP=0
67700 NAME5(1)=NAME2(1)
67800 NAME5(2)=NAME2(2)
67900 CALL DEFINE FILE(7,0,NV,JNAME1,0,0,109)
68000 IF((1.AND.NORECS).EQ.0)GO TO 19
68100 DO 18 I=1,TRESIZ
68200 IF(IDEVI.NE.'TTY')GO TO 40
68300 READ(6)(DATA(K),K=1,NOVAR)
68400 GO TO 35
68500 40 READ(INP,IFMT)(DATA(K),K=1,NOVAR)
68600 35 IF(DATA(KEYNO).LE.0)GO TO 26
68700 IF(DATA(KEYNO)-TEMP)27,28,32
68800 32 RECKEY(I)=DATA(KEYNO)
68900 TEMP=DATA(KEYNO)
69000 18 WRITE(7 )(DATA(J),J=1,NOVAR)
69100 GO TO 25
69200 19 DO 20 I=1,MEDIAN-1
69300 IF(IDEVI.NE.'TTY')GO TO 36
69400 READ(6)(DATA(J),J=1,NOVAR)
69500 GO TO 37
69600 36 READ(INP,IFMT)(DATA(J),J=1,NOVAR)
69700 37 IF(DATA(KEYNO).LE.0)GO TO 26
69800 IF(DATA(KEYNO)-TEMP)27,28,33
69900 33 RECKEY(I)=DATA(KEYNO)
70000 TEMP=DATA(KEYNO)
70100 20 WRITE(7 )(DATA(J),J=1,NOVAR)
70200 WRITE(7 )(DATA(J),J=1,NOVAR)
70300 DO 23 I=MEDIAN+1,TRESIZ
70400 IF(IDEVI.NE.'TTY')GO TO 38
70500 READ(6)(DATA(J),J=1,NOVAR)
70600 GO TO 39
70700 38 READ(INP,IFMT)(DATA(J),J=1,NOVAR)
70800 39 IF(DATA(KEYNO).LE.0)GO TO 26
70900 IF(DATA(KEYNO)-TEMP)27,28,34
71000 34 RECKEY(I)=DATA(KEYNO)
71100 TEMP=DATA(KEYNO)
71200 23 WRITE(7)(DATA(J),J=1,NOVAR)
71300 25 DO 24 I=1,TRESIZ+200
71400 24 DELMRK(I)=BLANK
71500 CALL RELEAS(INP)
71600 CALL RELEAS(7 )
71700 RETURN
71800 26 WRITE(IDLG,29)DATA(KEYNO)
71900 29 FORMAT(1X,I10,' IS INVALID KEY.'/)
72000 CALL EXIT
72100 27 WRITE(IDLG,30)DATA(KEYNO)
72200 30 FORMAT(1X,I10,' IS A KEY OUT OF SEQUENCE.'/)
72300 CALL EXIT
72400 28 WRITE(IDLG,31)DATA(KEYNO)
72500 31 FORMAT(1X,I10,' IS A KEY WITH A DUPLICATE.'/)
72600 END
72700 C CALLED BY 'INSER' AND 'MODIF' PATHS(DYN2)
72800 SUBROUTINE DYN2(LEFTSI,RITSID,RECKEY,DELMRK)
72850 IMPLICIT INTEGER(A-Z)
72900 DIMENSION IFMT(112),JFMT(114),VALUE(16)
73000 EQUIVALENCE(IFMT(1),JFMT(2))
73100 DIMENSION LEFTSI(1),RITSID(1),RECKEY(1),DELMRK(1)
73200 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
73300 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
73400 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
73500 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
73600 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
73700 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV,NAME1(2),NAME2(2)
73900 IF(SW4.EQ.1)GO TO 1
74000 6 CALL DEFINE FILE(7,NOVAR,NV,JNAME1,0,0)
74100 CALL IOB(0)
74200 8 IF(CH123.EQ.4)GO TO 14
74300 29 IF(IDEVI.EQ.'TTY')WRITE(IDLG,7)
74400 7 FORMAT(' #',$)
74500 READ(INP,IFMT,END=50,ERR=9)(DATA(I),I=1,NOVAR)
74600 SEARCH=MEDIAN
74700 NEWINF=DATA(KEYNO)
74800 IF(NEWINF.EQ.0)GO TO 4
74900 CALL INMODE(LEFTSI,RITSID,RECKEY,DELMRK)
75000 IF(SW3.EQ.1)RETURN
75100 GO TO 29
75200 50 CALL RELEAS(7 )
75300 CALL RELEAS(INP)
75400 IF(CH123.NE.1)GO TO 21
75500 TRESIZ=NPLUS
75600 21 RETURN
75700 1 CALL DEFINE FILE(6,0,NV,JNAME2,0,0)
75800 READ(6)(DUMMY,I=1,121)
75900 READ(6)(DUMMY,I=1,121)
76000 X=TRESIZ/60
76100 DO 3 I=1,X
76200 3 READ(6)(RECKEY(J),DELMRK(J),J=(I-1)*60+1,I*60)
76300 IF(X *60.NE.TRESIZ)READ(6) (RECKEY(J),DELMRK(J),J=X*60+1,
76400 1TRESIZ)
76500 CALL RELEAS(6 )
76600 GO TO 6
76700 4 CALL DEFINE FILE(4,0,NV,'MESFIL.',0,0,109)
76800 WRITE(4,5)
76900 5 FORMAT(1X,'KEY IS ZERO AND NOT ALLOWED.'/)
77000 GO TO 8
77100 9 WRITE(IDLG,10)
77200 10 FORMAT(1X,'?INVALID CHARACTER IN YOUR RESPONSE. TRY AGAIN.'/)
77300 GO TO 8
77400 14 WRITE(IDLG,12)
77500 12 FORMAT(1X,'ENTER KEY AND NO. OF FIELDS TO BE CHANGED.'/1X,
77600 1'0 IF WHOLE RECORD IS CHANGED.'/)
77700 READ(INP,13,END=50)KEY,VARNO
77800 13 FORMAT(3I)
77900 SEARCH=MEDIAN
78000 NEWINF=KEY
78100 IF(NEWINF.EQ.0)GO TO 4
78200 CH123=5
78300 CALL INMODE(LEFTSI,RITSID,RECKEY,DELMRK)
78400 IF(SW3.EQ.1)GO TO 22
78500 CALL DEFINE FILE(6,NOVAR,NV,JNAME1,0,0)
78600 READ(6#SEARCH)(DATA(I),I=1,NOVAR)
78700 CALL RELEAS(6)
78800 IF(VARNO.EQ.0)GO TO 53
78900 20 WRITE(IDLG,19)
79000 19 FORMAT(1X,'ENTER FIELD NUMBER FOLLOWED BY COMMA AND VALUE.'/)
79100 DO 15 J=1,VARNO
79200 23 IF(IDEVI.EQ.'TTY')WRITE(IDLG,7)
79300 READ(INP,16,END=51)FIELD,VALUE
79400 IF(FIELD.LE.0.OR.FIELD.GT.MSIZE)GO TO 17
79500 IF(FIELD.EQ.KEYNO)GO TO 17
79600 IFULLS=JX(FIELD)-JX(FIELD-1)
79700 DO 52 K=1,IFULLS
79800 52 DATA(JX(FIELD)+K)=VALUE(K)
79900 15 CONTINUE
80000 51 CALL RITIT(RECKEY)
80100 CH123=4
80200 GO TO 14
80300 17 WRITE(IDLG,18)
80400 18 FORMAT(1X,'?YOU ENTERED AN INVALID FIELD NO.'/)
80500 GO TO 23
80600 16 FORMAT(I,16A5)
80700 22 SW3=0
80800 GO TO 14
80900 53 WRITE(IDLG,54)
81000 54 FORMAT(1X,'ENTER RECORD.'/)
81100 READ(INP,IFMT)(DATA(I),I=1,NOVAR)
81200 IF(DATA(KEYNO).EQ.KEY)GO TO 51
81300 55 CALL DEFINE FILE(4,0,NV,'MESFIL.',0,0,109)
81400 WRITE(4,56)
81500 56 FORMAT(1X,'INVALID KEY FIELD N0.'/)
81600 CALL RELEAS(4)
81700 GO TO 14
81800 END
81900 C CALLED BY (SW5.EQ.0.AND.CHOICE.NE.'NEW') PATH(DYN3)
82000 SUBROUTINE DYN3(LEFTSI,RITSID,RECKEY,DELMRK)
82050 IMPLICIT INTEGER (A-Z)
82100 DIMENSION IFMT(112),JFMT(114)
82200 EQUIVALENCE(IFMT(1),JFMT(2))
82300 DIMENSION LEFTSI(1),RITSID(1),RECKEY(1),DELMRK(1)
82400 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
82500 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
82600 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
82700 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
82800 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
82900 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV
83100 X=TRESIZ/60
83200 DO 67 I=1,X
83300 67 READ(6)(RECKEY(J),DELMRK(J),J=(I-1)*60+1,I*60)
83400 IF(X *60.NE.TRESIZ)READ(6) (RECKEY(J),DELMRK(J),J=X*60+1,
83500 1TRESIZ)
83600 DO 1 I=1,X
83700 1 READ(6)(LEFTSI(J),RITSID(J),J=(I-1)*60+1,I*60)
83800 IF(X *60.NE.TRESIZ)READ(6)(LEFTSI(J),RITSID(J) ,J=X*60+1,
83900 1TRESIZ)
84000 CALL RELEAS(6 )
84100 RETURN
84200 END
84300 C CALLED BY 'EXIT' PATH(DYN4)
84400 SUBROUTINE DYN4(LEFTSI,RITSID,RECKEY,DELMRK)
84450 IMPLICIT INTEGER(A-Z)
84500 DIMENSION IFMT(112),JFMT(114)
84600 EQUIVALENCE(IFMT(1),JFMT(2))
84700 DIMENSION LEFTSI(1),RITSID(1),RECKEY(1),DELMRK(1)
84800 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
84900 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
85000 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
85100 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
85200 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
85300 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV,NAME1(2),NAME2(2)
85500 IF(SW4.EQ.1)GO TO 1
85600 CALL DEFINE FILE(7,0,NV,JNAME5 ,0,0,109)
85700 WRITE(7)NORECS,TRESIZ,MEDIAN,KEYNO,INSCTR,DELFRE,MAX,NOVAR,IFMT
85800 1,MSIZE
85900 WRITE(7)(JX(I),I=0,120)
86000 X=TRESIZ/60
86100 DO 48 I=1,X
86200 48 WRITE(7)(RECKEY(J),DELMRK(J),J=(I-1)*60+1,I*60)
86300 IF(X *60.NE.TRESIZ)WRITE(7)(RECKEY(J),DELMRK(J),J=X*60+1,
86400 1TRESIZ)
86500 DO 2 I=1,X
86600 2 WRITE(7)(LEFTSI(J),RITSID(J),J=(I-1)*60+1,I*60)
86700 IF(X *60.NE.TRESIZ)WRITE(7)(LEFTSI(J),RITSID(J),J=X*60+1,
86800 1TRESIZ)
86900 CALL RELEAS(7)
87000 1 CALL RELEAS(4)
87100 RETURN
87200 END
87300 C CALLED BY 'DELET' PATH(DYN5)
87400 SUBROUTINE DYN5(LEFTSI,RITSID,RECKEY,DELMRK)
87450 IMPLICIT INTEGER(A-Z)
87500 DIMENSION IFMT(112),JFMT(114)
87600 EQUIVALENCE(IFMT(1),JFMT(2))
87700 DIMENSION LEFTSI(1),RITSID(1),RECKEY(1),DELMRK(1)
87800 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
87900 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
88000 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
88100 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
88200 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
88300 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV,NAME1(2),NAME2(2)
88500 IF(SW4.EQ.1)GO TO 1
88600 6 CALL IOB(0)
88700 64 IF(IDEVI.NE.'TTY')GO TO 5
88800 9 WRITE(IDLG,4)
88900 4 FORMAT(/' #',$)
89000 5 READ (INP,7,END=59,ERR=2)NEWINF
89100 7 FORMAT(I)
89200 SEARCH=MEDIAN
89300 CALL INMODE(LEFTSI,RITSID,RECKEY,DELMRK)
89400 GO TO 64
89500 59 CALL RELEAS(INP)
89600 RETURN
89700 1 CALL DEFINE FILE(6,0,NV,JNAME2 ,0,0)
89800 READ(6)(DUMMY,I=1,121)
89900 READ(6)(DUMMY,I=1,121)
90000 X=TRESIZ/60
90100 DO 3 I=1,X
90200 3 READ(6)(RECKEY(J),DELMRK(J),J=(I-1)*60+1,I*60)
90300 IF(X *60.NE.TRESIZ)READ(6) (RECKEY(J),DELMRK(J),J=X*60+1,
90400 1TRESIZ)
90500 CALL RELEAS(6)
90600 GO TO 6
90700 2 WRITE(IDLG,8)
90800 8 FORMAT(1X,'?INVALID CHARACTER IN YOUR RESPONSE. TRY AGAIN.'/)
90900 GO TO 9
91000 END
91100 C CALLED BY 'OUTPT' PATH(DYN6)
91200 SUBROUTINE DYN6(LEFTSI,RITSID,SASEAR,DELMRK)
91250 IMPLICIT INTEGER(A-Z)
91300 DIMENSION IFMT(112),JFMT(114)
91400 EQUIVALENCE(IFMT(1),JFMT(2))
91500 DIMENSION LEFTSI(1),RITSID(1),DELMRK(1),SASEAR(1)
91600 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
91700 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
91800 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
91900 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
92000 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
92100 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV,NAME1(2),NAME2(2)
92300 IF(SW4.EQ.1)GO TO 1
92400 CALL DEFINE FILE(7,0,NV,JNAME2 ,0,0,109)
92500 WRITE(7)NORECS,TRESIZ,MEDIAN,KEYNO,INSCTR,DELFRE,MAX,NOVAR,IFMT
92600 1,MSIZE
92700 WRITE(7)(JX(I),I=0,120)
92800 X=TRESIZ/60
92900 DO 48 I=1,X
93000 48 WRITE(7)(SASEAR(J),DELMRK(J),J=(I-1)*60+1,I*60)
93100 IF(X *60.NE.TRESIZ)WRITE(7)(SASEAR(J),DELMRK(J),J=X*60+1,
93200 1TRESIZ)
93300 DO 2 I=1,TRESIZ/60
93400 2 WRITE(7)(LEFTSI(J),RITSID(J),J=(I-1)*60+1,I*60)
93500 X=TRESIZ/60
93600 IF((TRESIZ/60)*60.NE.TRESIZ)WRITE(7)(LEFTSI(J),RITSID(J),J=X*60+1,
93700 1TRESIZ)
93800 CALL RELEAS(7)
93900 SW4=1
94000 1 CALL IOB(1)
94100 CALL RESRET(LEFTSI,RITSID,SASEAR,DELMRK)
94200 CALL RELEAS(IRP)
94300 CALL RELEAS(6)
94400 CALL DEVCHG('DSK',2)
94500 RETURN
94600 END
94700 C CALLED BY 'LISTN' PATH(DYN7)
94800 SUBROUTINE DYN7(LEFTSI,RITSID,SASEAR,DELMRK)
94850 IMPLICIT INTEGER(A-Z)
94900 DIMENSION IFMT(112),JFMT(114)
95000 EQUIVALENCE(IFMT(1),JFMT(2))
95100 DIMENSION LEFTSI(1),RITSID(1),DELMRK(1),SASEAR(1)
95200 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
95300 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
95400 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
95500 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
95600 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
95700 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV,NAME1(2),NAME2(2)
95900 IF(SW4.EQ.1)GO TO 1
96000 CALL DEFINE FILE(7,0,NV,JNAME2 ,0,0,109)
96100 WRITE(7)NORECS,TRESIZ,MEDIAN,KEYNO,INSCTR,DELFRE,MAX,NOVAR,IFMT
96200 1,MSIZE
96300 WRITE(7)(JX(I),I=0,120)
96400 X=TRESIZ/60
96500 DO 48 I=1,X
96600 48 WRITE(7)(SASEAR(J),DELMRK(J),J=(I-1)*60+1,I*60)
96700 IF(X *60.NE.TRESIZ)WRITE(7)(SASEAR(J),DELMRK(J),
96800 1J=X*60+1,TRESIZ)
96900 DO 2 I=1,X
97000 2 WRITE(7)(LEFTSI(J),RITSID(J),J=(I-1)*60+1,I*60)
97100 IF(X *60.NE.TRESIZ)WRITE(7)(LEFTSI(J),RITSID(J),
97200 1J=X*60+1,TRESIZ)
97300 CALL RELEAS(7)
97400 SW4=1
97500 1 CALL DEVCHG('DSK',IRP)
97600 CALL DEFINE FILE(IRP ,0 ,NV,'NFS.',0,0)
97700 CALL RESRET(LEFTSI,RITSID,SASEAR,DELMRK)
97800 A="377 .AND.CHOICE
97900 B=(A/2)-"60
98000 CALL RELEAS(IRP)
98100 CALL RELEAS(6)
98200 CALL PRINTS('NFS',2,0,B)
98300 RETURN
98400 END
98500 C CALLED BY 'PTREC' PATH(DYN9)
98600 SUBROUTINE DYN9(LEFTSI,RITSID,RECKEY,DELMRK)
98650 IMPLICIT INTEGER(A-Z)
98700 DIMENSION IFMT(112),JFMT(114)
98800 EQUIVALENCE(IFMT(1),JFMT(2))
98900 DIMENSION LEFTSI(1),RITSID(1),RECKEY(1),DELMRK(1)
99000 DOUBLE PRECISION JNAME1,JNAME2,JNAME5
99100 EQUIVALENCE(NAME1,JNAME1),(NAME2,JNAME2),(NAME5,JNAME5)
99200 COMMON/IOBLK/IDLG,INT,INP,IRP,IDEVI,IDEVO,ICODE,IBNK,NAME3(2)
99300 COMMON MSIZE,NAME5(2),NORECS,TRESIZ,MEDIAN,KEYNO,NOVAR, SEARCH,
99400 1NPLUS,NEWINF,JX(0/120),INSCTR,DELFRE,COUNTR,CH123,
99500 2MAX,DATA(198),JFMT,BLANK,CHOICE,SW4,SW3,ODEV,NAME1(2),NAME2(2)
99700 IF(SW4.EQ.1)GO TO 1
99800 4 CALL DEFINE FILE(6 ,NOVAR ,NV,JNAME1 ,0,0)
99900 CALL IOB(1)