FTN4 PROGRAM TGPI0(5), 92080-1X373 REV.2026 800514 C C SOURCE 92080-18373 C C C C ************************************************************** C * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978. ALL RIGHTS * C * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * C * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * C * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * C ************************************************************** C C C C PRGMR : JEAN CHARLES MIARD (HPG) C C********************************************************************* C* * C* THIS IS A SEGMENT OF THE TGP PROGRAM USED TO READ OR * C* WRITE TRANSACTION SPECS. IT IS ALSO USED TO MANIPULATE LIBRARIES * C* OF TRANSACTION SPECS (ADD,DELETE AND PRINT DIRECTORIES) . * C* * C* ACCORDING TO THE VALUE OF INDIC AND ISCRN DIFFERENT * C* PORTIONS OF CODE ARE EXECUTED : * C* * C* IF : INDIC = 1 : REQUEST TO WRITE A TRANSACTION SPEC ON A * C* LIBRARY (OLD OR NEW) . COMING FROM SCREEN * C* # 18 AND TGP8 . * C* INDIC = 2 : REQUEST TO BUILD TRANSACTION SPEC LIBRARY * C* ADD. DELETE OR PRINT DIRECTORY . COMING FROM * C* SCREENS 19 OR 20 AND TGP8 . * C* ISCRN = 3 : REQUEST TO READ A TRANSACTION SPEC ON A * C* LIBRARY TO MODIFY IT OR PRINT IT . * C* COMING FROM SCREEN # 3 AND TGP1 . * C* * C********************************************************************* C C C C DECLARATIONS COMMON VARIABLES ************** C COMMON ILU,ISCRN,IQST,ISKIP,INDIC COMMON IFORM(780) COMMON JFORM(1700) COMMON MFORM(28) COMMON LFORM(42) COMMON ITT COMMON IKEY(26,3) COMMON IUMAX,IMMAX COMMON IMODB COMMON ILITE(15) COMMON IMAI(45,5) COMMON IMFLG,IMAS,IMDT,IMKY COMMON KFORM(2844) COMMON ILIBR(67) COMMON NIMAG COMMON IBASE(10),IMODE C C LOCAL VARIABLES ***************** C DIMENSION ITGP1(3),ITGP4(3),ITGP13(3),IBUF(52),ITGP3(3),JOUT(3) DIMENSION MEDIS(5),NFORM(5),IDCB(288),IHD(15) DIMENSION MEDID(5),IDEN(125),IPRES(22) DIMENSION INIT(9),IWR(4),IRD(4),ITR(17),IBON(3) DIMENSION IBD(11),ISC(8),IDT(8),ILH(9),IOK(14),ILF1(4) DIMENSION IDI(13),INA(2),INM(3),ISCO(7),ICOP(33) DIMENSION IDSAVE(5),MEDSAV(5),ICR(3) C DIMENSION I128(128) C LOGICAL TSRD,TSWR,ISSPA,INUM,CMPW,JPAR,ISBTW,GETBK,OKABT,NAMCK C C DATA VALUES *************** C DATA ITGP1/2HTG,2HP1,2H / DATA ITGP4/2HTG,2HP4,2H / DATA ITGP13/2HTG,2HPI,2H3 / DATA ITGP3/2HTG,2HP3,2H / DATA ICR/2H ,2H ,2H / C C INIT IS FORMAT OFF,BLOCK MODE OFF,ENABLE KEYBD,HOME UP,CLEAR C DISPLAY,INVERSE VIDEO ON C DATA INIT/15530B,15446B,65460B,41040B,15542B,15510B, C15512B,15446B,62102B/ DATA IWR/2HWR,2HIT,2HIN,2HG / DATA IRD/2HRE,2HAD,2HIN,2HG / DATA ITR/2HTR,2HAN,2HSA,2HCT,2HIO,2HN ,2HSP,2HEC,2HIF,2HIC, C2HAT,2HIO,2HNS,15446B,62100B,6412B,5012B/ DATA IBON/15446B,65461B,41040B/ DATA IBD/2HBU,2HIL,2HDI,2HNG,2H L,2HIB,2HRA,2HRI,2HES,2H O,2HF / DATA ISC/5012B,15B,2H ,2H ,2H S,2HOU,2HRC,2HE / DATA IDT/5012B,15B,2HDE,2HST,2HIN,2HAT,2HIO,2HN / DATA IOK/15446B,62102B,2H O,2HK ,2H? ,2H(Y,2H/N,2H) ,2H , C15446B,62100B,15504B,15504B,137B/ DATA ILF1/15501B,15501B,15501B,15512B/ DATA IDI/2H ,2HDI,2HRE,2HCT,2HOR,2HY ,2HOF,2H L,2HIB,2HRA,2HRY, C2H :,2H / DATA INA/2HNA,2HME/ DATA INM/2HNU,2HMB,2HER/ DATA ISCO/2HSE,2HCU,2HRI,2HTY,2H C,2HOD,2HE / DATA ILH/2HLI,2HBR,2HAR,2HY ,2HHE,2HAD,2HER,2H :,2H / DATA IPRES/15542B,6412B,6412B, .15446B,62112B,2HPr,2Hes,2Hs ,15446B,62113B,2HNE,2HXT,2H S,2HCR, .2HEE,2HN ,15446B,62112B,2Hke,74433B,23144B,40040B/ DATA ICOP/5012B,15B,2HTR,2HAN,2HSA,2HCT,2HIO,2HN ,2HSP,2HEC,2HIF, C2HIC,2HAT,2HIO,2HNS,2H C,2HOP,2HIE,2HD ,2HON,2H T,2HHE,2H D, C2HES,2HTI,2HNA,2HTI,2HON,2H L,2HIB,2HRA,2HRY,5012B/ DATA ILFX/15B/ C C*********************************************************************** C C GO TO THE REQUIRED PORTION OF TGP10 . C C*********************************************************************** C C --- PUT IN LIBRARY SECURITY CODE OF 35 C MEDIS(5)=35 MEDID(5)=35 MEDSAV(5)=35 C IF(ISCRN.EQ.3) GO TO 500 IF(INDIC.EQ.1) GO TO 200 IF(INDIC.EQ.2) GO TO 1000 C C********************************************************************** C C INDIC = 1 WRITE TRANSACTION SPEC ON LIBRARY . C C*********************************************************************** C C OUTPUT MESSAGE C 200 CALL MOVEW(INIT,IBUF,9) CALL MOVEW(IWR,IBUF(10),4) CALL MOVEW(ITR,IBUF(14),17) CALL EXEC(2,ILU,IBUF,30) C C DEFINE MEDIA ON WHICH TRANSACTION SPEC IS TO BE WRITTEN C FILE NAME / CR # . C CALL MOVEW(LFORM(16),MEDID,3) C -CR# ASCII? IF(.NOT.INUM(LFORM,37,6,MEDID(4))) GO TO 205 C -YES. MEDID(4)=LFORM(19) C-----SAVE "MEDID" 205 CALL MOVEW(MEDID,MEDSAV,5) NFORM=100000B NFORM(4)=100000B NFORM(5)=100000B C C IF LIBRARY IS NOT CREATED BUT ALREADY EXITS READ LIBRARY FIRST C OTHERWISE CREATE LIBRARY . C IF(.NOT.ISSPA(LFORM,43,30)) GO TO 1040 CALL MOVEW(LFORM(22),IHD,15) GO TO 1120 C C********************************************************************** C C INDIC = 2 BUILD LIBRARY OF TRANSACTION SPECS . C C********************************************************************* C C C PUT CONSOLE IN CHAR. MODE ,SEND MESSAGE C 1000 CALL MOVEW(INIT,IBUF,9) CALL MOVEW(IBD,IBUF(10),11) CALL MOVEW(ITR,IBUF(21),17) CALL EXEC(2,ILU,IBUF,37) IF(IANS.EQ.-1) GO TO 1135 C C DEFINE SOURCE LIBRARY MEDIA (FILE NAME AND CR #) C SET NFORM TO READ FIRST SEQUENTIAL TRANSCACTION SPEC NO SEC. CODE C CALL MOVEW(ILIBR(2),MEDIS,3) C -CR# ASCII? IF(.NOT.INUM(ILIBR,9,6,MEDIS(4))) GO TO 1002 C -YES. MEDIS(4)=ILIBR(5) 1002 NFORM=100000B NFORM(4)=100000B NFORM(5)=100000B C C OPEN AND READ SOURCE LIBRARY HEADER C IF(TSRD(MEDIS,0,ISTAT,NFORM,KFORM,IFORM,IDCB,IHD,IMODE)) . GO TO 8000 C-----IF CR WAS NOT SPECIFIED, GET IT NOW FROM IDCB IF(MEDIS(4).NE.0) GO TO 1005 ICR=ICRLU(-IAND(IDCB,77B)) C -IGNORE CR # IF TYPE 0. IF(IDCB(3).EQ.0) GO TO 1005 CALL JASC(ICR,ILIBR,9,6) C -DO THIS IF CRN IS ASCII. IF(.NOT.NAMCK(ICR)) CALL MOVEW(ICR,ILIBR(5),3) C C IF MODE OF OPERATION IS NOT "L" PRINT SOURCE LIBRARY HEADER C AND ASK IF OK ? C 1005 IF(ILIBR.EQ.2H L) GO TO 1075 CALL MOVEW(ISC,IBUF,8) CALL MOVEW(ILH,IBUF(9),9) CALL MOVEW(IHD,IBUF(18),15) CALL MOVEW(IOK,IBUF(33),14) 1010 CALL EXEC(2,ILU,IBUF,46) C C ASK THE USER IF THIS IS THE GOOD LIBRARY ? C IF(IMODE.EQ.1) GO TO 1030 CALL REIO(1,500B+ILU,IANS,-1) IF(IGET1(IANS,1).EQ.1HY) GO TO 1030 IF(IGET1(IANS,1).EQ.1HN) GO TO 1020 C C ANSWER IS NOT "Y" OR "N" ASK QUESTION AGAIN C CALL EXEC(2,ILU,ILF1,4) GO TO 1010 C C ANSWER IS "N" PRINT SCREEN 19 ,CLOSE SOURCE LIBRARY,SET BLOCK MODE C 1020 CALL EXEC(2,ILU,IBON,3) ISCRN=20 INDIC=0 1025 IF(TSRD(MEDIS,3,ISTAT,NFORM,KFORM,IFORM,IDCB,IHD,IMODE)) . GO TO 8000 CALL EXEC(8,ITGP3) C C ANSWER IS "Y" DEFINE DESTINATION LIBRARY (FILE NAME AND CR #) C SET NFORM TO READ FIRST SEQUENTIAL TRANSACTION SPEC NO SEC. CODE C 1030 CALL EXEC(2,ILU,ILFX,1) CALL MOVEW(ILIBR(41),MEDID,3) C-----SAVE "MEDID" CALL MOVEW(MEDID,MEDSAV,5) C -CR# ASCII? IF(.NOT.INUM(ILIBR,87,6,MEDID(4))) GO TO 1032 C -YES. MEDID(4)=ILIBR(44) 1032 NFORM=100000B NFORM(4)=100000B NFORM(5)=100000B C C DESTINATION LIBRARY MUST BE CREATED ? C IF(ISSPA(ILIBR,93,30)) GO TO 1110 C C************************************************************************ C C DESTINATION LIBRARY ALREADY EXIST READ IT C C*********************************************************************** C C C OPEN DESTINATION LIBRARY AND READ HEADER C 1040 IF(TSRD(MEDID,0,ISTAT,NFORM,IBUF,IFORM,IDCB(145),IHD,IMODE)) . GO TO 1042 C-----IF CR WAS NOT SPECIFIED, GET IT NOW FROM IDCB IF(MEDID(4).NE.0) GO TO 1045 ICR=ICRLU(-IAND(IDCB(145),77B)) C -IGNORE CR # IF TYPE 0 FILE. IF(IDCB(147).EQ.0) GO TO 1045 IF(INDIC.EQ.1) GO TO 1041 CALL JASC(ICR,ILIBR,87,6) C -DO THIS IF CRN IS ASCII. IF(.NOT.NAMCK(ICR)) CALL MOVEW(ICR,ILIBR(44),3) GO TO 1045 1041 CALL JASC(ICR,LFORM,37,6) C -DO THIS IF CRN IS ASCII. IF(.NOT.NAMCK(ICR)) CALL MOVEW(ICR,LFORM(19),3) GO TO 1045 1042 ISKIP=ISTAT C-----IF ERR=-6: "LIBRARY COULD NOT BE FOUND" IF(ISKIP.EQ.-6) ISKIP=66 GO TO 8005 C C IF MODE OF OPERATION IS NOT "L" OUTPUT DEST. LIBRARY HEADER C 1045 IF(ILIBR.EQ.2H L) GO TO 1075 CALL MOVEW(IDT,IBUF,8) CALL MOVEW(ILH,IBUF(9),9) CALL MOVEW(IHD,IBUF(18),15) CALL MOVEW(IOK,IBUF(33),14) 1050 CALL EXEC(2,ILU,IBUF,46) C C ASK USER IF DEST. LIBR. IS GOOD ? C IF(IMODE.EQ.1) GO TO 1080 CALL REIO(1,500B+ILU,IANS,-1) IF(IGET1(IANS,1).EQ.1HY) GO TO 1080 IF(IGET1(IANS,1).EQ.1HN) GO TO 1060 C C ANSWER IS NOT "Y" OR "N" ASK QUESTION AGAIN C CALL EXEC(2,ILU,ILF1,4) GO TO 1050 C C ANSWER IS "N", SET BLOCK MODE PRINT RIGHT SCREEN,CLOSE DEST. LIBR C 1060 INDIC=0 CALL EXEC(2,ILU,IBON,3) IF(TSRD(MEDID,3,ISTAT,NFORM,IBUF,IFORM,IDCB(145),IHD,IMODE)) . GO TO 9000 IF(ISCRN.EQ.19) CALL EXEC(8,ITGP4) ISCRN=21 GO TO 1025 C C FOR PRINT DIRECTORY USE SOURCE LIBRARY TO BE READ C 1075 M=1 DO 1076 I=1,5 1076 MEDID(I)=MEDIS(I) GO TO 1082 C C************************************************************************ C C READ LIBRARY AN SAVE ID'S C C************************************************************************* C 1080 CALL EXEC(2,ILU,ILFX,1) M=145 1082 IFX=0 MEDID=-MEDID 1090 IF(TSRD(MEDID,1,ISTAT,NFORM,IBUF,IBUF(11),IDCB(M),IHD,IMODE)) . GO TO 1100 IFX=IFX+1 CALL MOVEW(IBUF(2),IDEN(1+(IFX-1)*5),5) C-----SAVE LAST READ TS IN CASE CR FILLS UP WHEN C WRITING 1ST TS TO THIS LIBRARY. CALL MOVEW(IBUF(2),IDSAVE,5) GO TO 1090 1100 IF(ISTAT.EQ.2) GO TO 1105 IF(M.EQ.1) GO TO 8000 GO TO 9000 1105 IF(ILIBR.EQ.2H L) GO TO 7000 IFIRST=1 IF(IFX.EQ.25) GO TO 6000 GO TO 1130 C C*********************************************************************** C C DESTINATION LIBRARY MUST BE CREATED ,WRITE HEADER C C*********************************************************************** C C 1110 CALL MOVEW(ILIBR(47),IHD,15) 1120 IF(TSWR(MEDID,4,ISTAT,KFORM,IFORM,IDCB(145),IHD)) GO TO 9005 C-----IF CR WAS NOT SPECIFIED, GET IT NOW FROM IDCB IF(MEDID(4).NE.0) GO TO 1122 ICR=ICRLU(-IAND(IDCB(145),77B)) IF(INDIC.EQ.1) GO TO 1121 CALL JASC(ICR,ILIBR,87,6) C -DO THIS IF CRN IS ASCII. IF(.NOT.NAMCK(ICR)) CALL MOVEW(ICR,ILIBR(44),3) GO TO 1122 C -FILE TYPE 0? (IF SO, DON'T STORE CR #). 1121 IF(IDCB(147).EQ.0) GO TO 1122 C -NO. SAVE CR #. CALL JASC(ICR,LFORM,37,6) C -DO THIS IF CRN IS ASCII. IF(.NOT.NAMCK(ICR)) CALL MOVEW(ICR,LFORM(19),3) 1122 IFX=0 MEDID=-MEDID C C********************************************************************** C C READ FROM SOURCE LIBRARY C C********************************************************************* C 1130 IF(INDIC.EQ.1) GO TO 1150 MEDIS=-MEDIS CALL EXEC(2,ILU,ICOP,33) IANS=-1 GO TO 7009 1131 IANS=0 1132 IF(TSRD(MEDIS,2,ISTAT,NFORM,KFORM,IFORM,IDCB,IHD,IMODE)) . GO TO 1210 C C C IF BUILDING LIBRARY CHECK IF FORM IS TO COPY OR EXCLUDE C 1150 IF(INDIC.EQ.1) GO TO 1135 DO 1160 I=1,10 C IF(.NOT.ISSPA(ILIBR,21+(I-1)*6,6)) GO TO 1185 IF(INUM(ILIBR,21+(I-1)*6,6,IANS)) GO TO 1170 IF(IANS.EQ.KFORM(5)) GO TO 1180 GO TO 1160 1170 IF(CMPW(KFORM(2),ILIBR(11+(I-1)*3),3)) GO TO 1180 1160 CONTINUE IF(ILIBR.EQ.2H C) GO TO 1132 GO TO 1135 1180 IF(ILIBR.EQ.2H E) GO TO 1132 GO TO 1135 1185 IF(ILIBR.EQ.2H E) GO TO 1135 GO TO 1132 C C CHECK FOR DUPLICATE ID C 1135 IANS=0 IF(IFX.EQ.0) GO TO 1190 DO 1140 I=1,IFX IF(CMPW(KFORM(2),IDEN(1+(I-1)*5),3)) GO TO 4000 IF(KFORM(5).EQ.IDEN(4+(I-1)*5)) GO TO 4000 1140 CONTINUE C C CHECK NO MORE THAN 25 SPECS IN A LIBRARY C 1190 IF(IFX.EQ.25) GO TO 6000 IFX=IFX+1 C C********************************************************************* C C WRITE SPECS ON DEST. LIBRARY C C******************************************************************** C 1200 IANS=1 IF(IFIRST.EQ.1) IANS=2 IF(INDIC.EQ.1) GO TO 1208 DO 1201 I=1,23 1201 IBUF(I)=2H CALL MOVEW(KFORM(2),IBUF(4),3) CALL CNUMD(KFORM(5),IBUF(11)) CALL JASC(KFORM(6),IBUF,37,6) 1208 IF(TSWR(MEDID,IANS,ISTAT,KFORM,IFORM,IDCB(145),IHD)) GO TO 1209 IF(INDIC.EQ.1) GO TO 1215 C-----PRINT THE TS JUST WRITTEN ONTO THE INTERACTIVE TERMINAL CALL EXEC(2,ILU,IBUF,23) IFIRST=0 CALL MOVEW(KFORM(2),IDEN(1+(IFX-1)*5),5) C-----SAVE LAST WRITTEN TS NAME, NO., & SECURITY CODE IN CASE OF WRITE ERROR. CALL MOVEW(KFORM(2),IDSAVE,5) GO TO 1132 C-----IF CR FILLED UP, TAKE CORRECTIVE ACTION. C1209 IF(ISTAT.NE.-6 .AND. ISTAT.NE.7) GO TO 9000 1209 IF(ISTAT.NE.-33 .AND. ISTAT.NE.7) GO TO 9000 C-----CR FILLED UP. CALL MOVEW(MEDSAV,MEDID,5) ISTATX=ISTAT C-----THE FOLLOWING LOOP STARTS AT THE BEGINNING OF THE DEST. LIB. & C READS FORWARD UNTIL FINDING THE LAST KNOWN GOOD TS, THEN WRITES C AN EOF. NFORM=100000B NFORM(4)=100000B NFORM(5)=100000B C-----OPEN & READ HEADER. IF(TSRD(MEDID,0,ISTAT,NFORM,KFORM,IFORM,IDCB(145),IHD,IMODE)) . GO TO 9000 MEDID=-MEDID C-----READ FORWARD UNTIL FINDING DESIRED TS. 12090 IF(TSRD(MEDID,1,ISTAT,NFORM,KFORM,IFORM,IDCB(145),IHD,IMODE)) . GO TO 9000 IF(.NOT.CMPW(KFORM(2),IDSAVE,5)) GO TO 12090 C-----FOUND IT. IF(TSWR(MEDID,3,ISTAT,KFORM,IFORM,IDCB(145),IHD)) GO TO 9000 ISTAT=ISTATX GO TO 9010 C C NO MORE SPECS ON SOURCE LIBRARY C 1210 IF(ISTAT.NE.2) GO TO 8000 C C********************************************************************* C C CLOSE SOURCE AND DESTINATION LIBRARIES C C********************************************************************* C CALL EXEC(2,ILU,IPRES,22) CALL REIO(1,ILU,IANS,-1) 1214 IF(TSRD(MEDIS,3,ISTAT,NFORM,KFORM,IFORM,IDCB,IHD,IMODE)) . GO TO 8000 1215 IF(TSWR(MEDID,3,ISTAT,KFORM,IFORM,IDCB(145),IHD)) GO TO 9000 IF(INDIC.EQ.99) CALL EXEC(8,ITGP1) IF(INDIC.EQ.1) CALL EXEC(8,ITGP13) INDIC=0 ILIBR=2H CALL EXEC(2,ILU,IBON,3) ISCRN=20 CALL EXEC(8,ITGP3) C C************************************************************************ C C PRINT DIRECTORY C C*********************************************************************** C C C FORMAT MEDIA ,PRINT HEADER C 7000 CALL EXEC(3,1100B+ISKIP,-1) CALL EXEC(3,1100B+ISKIP,2) CALL BLANC(IBUF,6) CALL MOVEW(IDI,IBUF(7),13) CALL MOVEW(ILIBR(2),IBUF(20),3) CALL MOVEW(6H (CR =,IBUF(23),3) CALL MOVEW(ILIBR(5),IBUF(26),3) IBUF(29)=2H) CALL EXEC(2,ISKIP,IBUF,29) CALL EXEC(3,1100B+ISKIP,1) CALL BLANC(IBUF,10) CALL MOVEW(IHD,IBUF(11),15) CALL EXEC(2,ISKIP,IBUF,25) CALL EXEC(3,1100B+ISKIP,2) C C PRINT TITLES " NAME, #, SEC. CODE " C 7009 DO 7010 I=1,25 7010 IBUF(I)=2H CALL MOVEW(INA,IBUF(4),2) CALL MOVEW(INM,IBUF(11),3) CALL MOVEW(ISCO,IBUF(19),7) CALL EXEC(2,ISKIP,IBUF,25) CALL EXEC(3,1100B+ISKIP,2) IF(IANS.EQ.-1) GO TO 1131 C C C PRINT DIRECTORY LINE PER LINE C DO 7050 I=1,IFX DO 7015 J=1,23 7015 IBUF(J)=2H CALL MOVEW(IDEN(1+(I-1)*5),IBUF(4),3) CALL CNUMD(IDEN(4+(I-1)*5),IBUF(11)) CALL JASC(IDEN(5+(I-1)*5),IBUF,37,6) C -BLANK IT OUT IF NO TRANSACTION NAME. IF(IDEN(1+(I-1)*5).EQ.0) CALL BLANC(IBUF,23) CALL EXEC(2,ISKIP,IBUF,23) 7050 CONTINUE IF(ISKIP.NE.ILU) GO TO 1020 CALL EXEC(2,ILU,IPRES,22) CALL REIO(1,ILU,IANS,-1) GO TO 1020 C C********************************************************************* C C ERROR SECTION C C C********************************************************************* C 5000 STOP 5000 C C ERROR MORE 25 SPECS TO BE STORED C 6000 ISKIP=10 ISCRN=21 IF(INDIC.EQ.1) ISCRN=19 GO TO 8003 C C FMGR ERRORS FROM SOURCE LIBRARY C 8000 ISCRN=20 8002 ISKIP=ISTAT 8003 IF(INDIC.EQ.1) GO TO 8004 IF(TSRD(MEDIS,3,IANS,NFORM,KFORM,IFORM,IDCB,IHD,IMODE)) . GO TO 5000 8004 IF(ILIBR.EQ.2H L) GO TO 8005 IF(TSWR(MEDID,3,IANS,KFORM,IFORM,IDCB(145),IHD)) GO TO 5000 8005 INDIC=2 CALL EXEC(2,ILU,IBON,3) IF(ISCRN.EQ.19) CALL EXEC(8,ITGP4) CALL EXEC(8,ITGP3) C C FMGR DEST. LIBRARY ERROR C 9000 ISCRN=21 IF(INDIC.EQ.1)ISCRN=19 GO TO 8002 C-----ERROR OCCURRED WHEN ATTEMPTING TO CREATE A NEW LIBRARY. 9005 ISCRN=21 IF(INDIC.EQ.1) ISCRN=19 ISKIP=ISTAT C-----IF ERR=-2 (DUPLICATE FILE NAME) CLOSE THE FILE. IF(ISTAT.NE.-2) GO TO 9007 IF(TSRD(MEDID,3,ISTAT,KFORM,IBUF,IFORM,IDCB(145),IHD,IMODE)) . GO TO 8005 GO TO 8005 C-----IF ERR=-6: CR IS FULL, CLOSE SOURCE LIBRARY BEFORE EXITING C9007 IF(ISTAT.NE.-6 .AND. ISTAT.NE.7) GO TO 8005 9007 IF(ISTAT.NE.-33 .AND. ISTAT.NE.7) GO TO 8005 IF(TSRD(MEDIS,3,IANS,NFORM,KFORM,IFORM,IDCB,IHD,IMODE)) . GO TO 8005 GO TO 8005 C-----CR FILLED UP WHILE WRITING A TS TO A LIBRARY 9010 IF(INDIC.EQ.2) GO TO 9015 C-----INDIC=1 MEANS CR FILLED UP WHILE WRITING TS ONTO A C LIBRARY (OLD OR NEW) FROM SCR 18 ISCRN=19 ISKIP=77 IF(ISTAT.EQ.7) ISKIP=88 GO TO 8005 C-----INDIC=2 MEANS CR FILLED UP WHILE WRITING FROM 1 LIB TO ANOTHER, C CLOSE SOURCE LIBRARY BEFORE EXITING 9015 IF(TSRD(MEDIS,3,IANS,NFORM,KFORM,IFORM,IDCB,IHD,IMODE)) . GO TO 8005 ISCRN=21 ISKIP=99 IF(ISTAT.EQ.7) ISKIP=88 GO TO 8005 C C********************************************************************** C C A DUPLICATE ID HAS BEEN FOUND C C********************************************************************** C C PREPARE BUFFER TO BE PASSED TO DUPL SUBROUTINE C 4000 CALL MOVEW(IDEN(1+(I-1)*5),IBUF,3) CALL MOVEW(KFORM(2),IBUF(9),3) CALL CNUMD(IDEN(4+(I-1)*5),IBUF(40)) CALL MOVEW(IBUF(41),IBUF(4),2) CALL CNUMD(KFORM(5),IBUF(40)) CALL MOVEW(IBUF(41),IBUF(12),2) CALL JASC(IDEN(5+(I-1)*5),IBUF,11,6) CALL JASC(KFORM(6),IBUF,27,6) C C NOW PRINT SCREEN TO ASK NEW ID C CALL DUPL(IBUF,IMODE) C C GET ANSWER C 4010 IF(GETBK(ILU,IBUF,18,IMODE)) GO TO 4000 C C ANALYSE SCREEN * NEW NAME C NOF=1 IF(JPAR(IBUF,18,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 IF(ISBTW(IGET1(JOUT,1),1HA,1HZ)) GO TO 4100 CALL MOVEW(JOUT,KFORM(2),3) CALL MOVEW(JOUT,IFORM(29),3) C C NEW NUMBER C NOF=NOF+1 IF(JPAR(IBUF,18,NOF,JOUT,4,IFLG,JVAL)) GO TO 3000 IF(IFLG.EQ.0) GO TO 4110 IF(IFLG.NE.1) GO TO 4110 IF((JVAL.LT.1).OR.(JVAL.GT.9999)) GO TO 4110 IF(JVAL.LT.0) GO TO 4110 CALL MOVEW(JOUT,IFORM(32),2) KFORM(5)=JVAL C C NEW SECURITY CODE C NOF=NOF+1 JVAL=0 IF(JPAR(IBUF,18,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 IF(IFLG.GT.1) GO TO 4120 CALL MOVEW(JOUT,IFORM(34),3) KFORM(6)=JVAL C IANS=-1 GO TO 1000 C C ERROR SECTION C 3000 IF(IFLG.NE.9) GO TO 4130 IF(.NOT.OKABT(ILU)) GO TO 4000 IF(INDIC.EQ.2) GO TO 3002 INDIC=99 GO TO 1215 3002 INDIC=99 GO TO 1214 C 4100 CALL MES10(1,NOF) GO TO 4010 4110 CALL MES10(2,NOF) GO TO 4010 4120 CALL MES10(3,NOF) GO TO 4010 4130 CALL MES10(4,NOF) GO TO 4010 C --- SHOULD NEVER GET HERE, BUT IF SO CAUSED BY BAD LIBRARY SECURITY C CODE. 4140 CALL MES10(5,NOF) PAUSE 4140 C C C********************************************************************** C C C READ TRANSACTION SPEC . C C********************************************************************** C C C OUTPUT MESSAGE C 500 CALL MOVEW(INIT,IBUF,9) CALL MOVEW(IRD,IBUF(10),4) CALL MOVEW(ITR,IBUF(14),17) CALL EXEC(2,ILU,IBUF,30) C C DEFINE MEDIA (FILE NAME AND CR #) C C CALL MOVEW(IFORM(14),MEDIS,3) C -CR# ASCII? IF(.NOT.INUM(IFORM,33,6,MEDIS(4))) GO TO 530 C -YES. MEDIS(4)=IFORM(17) C C DEFINE TRANSACTION SPEC. NAME AND SECURITY CODE C C -IS THERE A TS NAME? 530 IF(INUM(IFORM,15,6,NFORM(4))) GO TO 532 C -NO. IT IS A TS #. SET NFORM(1) TO NO NAME. NFORM=100000B GO TO 534 532 CALL MOVEW(IFORM(8),NFORM,3) C -SET NO NUMBER BIT. NFORM(4)=100000B C -IS THERE A SECURITY CODE? 534 IF(.NOT.INUM(IFORM,21,6,NFORM(5))) GO TO 536 C -NO. SET NO NUMBER BIT. NFORM(5)=100000B C C READ NOW C 536 IF(TSRD(MEDIS,2,ISTAT,NFORM,KFORM,IFORM,IDCB,IHD,IMODE)) . GO TO 540 C C READ IS GOOD CLOSE MEDIA C IF(TSRD(MEDIS,3,ISTAT,NFORM,KFORM,IFORM,IDCB,IHD,IMODE)) . GO TO 540 INDIC=3 C-----IF CR NOT GIVEN, GET IT FROM IDCB, BUT NOT IF IT IS A TYPE 0 FILE. IF(IDCB(3).EQ.0) GO TO 550 IF(MEDIS(4).NE.0) GO TO 550 ICR=ICRLU(-IAND(IDCB,77B)) CALL JASC(ICR,IFORM,33,6) C -DO THIS IF CRN IS ASCII. IF(.NOT.NAMCK(ICR)) CALL MOVEW(ICR,IFORM(17),3) GO TO 550 C C READ IS BAD ISKIP=STATUS C 540 INDIC=1 ISKIP=ISTAT C C RETURN TO TGP1 BEFORE TURN BLOCK MODE ON C 550 CALL EXEC(2,ILU,IBON,3) CALL EXEC(8,ITGP1) C C C C END OF SEGMENT C END END$