FTN4
      PROGRAM TGPI0(5), 92903-16373 REV.1913  790110 0900 
C 
C     SOURCE 92903-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(766) 
      COMMON JFORM(1400)
      COMMON MFORM(16)
      COMMON LFORM(39)
      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(2704)
      COMMON ILIBR(61)
      COMMON NIMAG
C 
C LOCAL VARIABLES ***************** 
C 
      DIMENSION ITGP1(3),ITGP4(3),ITGP13(3),IBUF(46),ITGP3(3),JOUT(3) 
      DIMENSION MEDIS(4),NFORM(5),IDCB(288),IHD(15) 
      DIMENSION MEDID(4),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(4) 
C 
      LOGICAL TSRD,TSWR,ISSPA,INUM,CMPW,JPAR,ISBTW,GETBK,OKABT
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  /
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 
      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) 
      IF(INUM(LFORM,37,6,MEDID(4))) GO TO 5000
C-----SAVE "MEDID"
      CALL MOVEW(MEDID,MEDSAV,4)
      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)
      IF(INUM(ILIBR,9,6,MEDIS(4))) GO TO 5000 
      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)) 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))
      CALL JASC(ICR,ILIBR,9,6)
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 
      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)) 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,4)
      IF(INUM(ILIBR,87,6,MEDID(4))) GO TO 5000
      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)) 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)) 
      IF(INDIC.EQ.1) GO TO 1041 
      CALL JASC(ICR,ILIBR,87,6) 
      GO TO 1045
1041  CALL JASC(ICR,LFORM,37,6) 
      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 
      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)) GOTO 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,4 
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)) 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) 
      GO TO 1122
1121  CALL JASC(ICR,LFORM,37,6) 
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)) 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.
1209  IF(ISTAT.NE.-6) GO TO 9000
C-----CR FILLED UP. 
      CALL MOVEW(MEDSAV,MEDID,4)
      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)) GO TO 9000
      MEDID=-MEDID
C-----READ FORWARD UNTIL FINDING DESIRED TS.
12090 IF(TSRD(MEDID,1,ISTAT,NFORM,KFORM,IFORM,IDCB(145),IHD)) 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)) 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)
      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)) 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)) GO TO 8005 
      GO TO 8005
C-----IF ERR=-6: CR IS FULL, CLOSE SOURCE LIBRARY BEFORE EXITING
9007  IF(ISTAT.NE.-6) GO TO 8005
      IF(TSRD(MEDIS,3,IANS,NFORM,KFORM,IFORM,IDCB,IHD)) 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
      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)) GO TO 8005
      ISCRN=21
      ISKIP=99
      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) 
C 
C  GET ANSWER 
C 
4010  IF(GETBK(ILU,IBUF,18)) 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 
      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 
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) 
      IF(INUM(IFORM,33,6,MEDIS(4))) GO TO 5000
C 
C  DEFINE TRANSACTION SPEC. NAME AND SECURITY CODE
C 
530   IF(INUM(IFORM,15,6,NFORM(4))) GO TO 532 
      NFORM=100000B 
      GO TO 534 
532   CALL MOVEW(IFORM(8),NFORM,3)
      NFORM(4)=100000B
534   IF(INUM(IFORM,21,6,NFORM(5))) GO TO 5000
C 
C READ NOW
C 
      IF(TSRD(MEDIS,2,ISTAT,NFORM,KFORM,IFORM,IDCB,IHD)) GO TO 540
C 
C READ IS GOOD CLOSE MEDIA
C 
      IF(TSRD(MEDIS,3,ISTAT,NFORM,KFORM,IFORM,IDCB,IHD)) GO TO 540
      INDIC=3 
C-----IF CR NOT GIVEN, GET IT FROM IDCB 
      IF(MEDIS(4).NE.0) GO TO 550 
      ICR=ICRLU(-IAND(IDCB,77B))
      CALL JASC(ICR,IFORM,33,6) 
      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 
      CALL TGP
C 
C 
      END 
      END$
                                                                                  