FTN4 PROGRAM TGP1(5), 92080-1X352 REV.2026 800513 C C SOURCE 92080-18352 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 PRGMR : JEAN CHARLES MIARD (HPG) C C********************************************************************* C* * C* THIS IS A SEGMENT OF THE TGP PROGRAM USED TO * C* ANALYZE THE ANSWERS THE USER HAS GIVEN IN THE SCREENS 0,1,2 * C* 3,4, 41, AND 5 . * C* THE ANSWERS AFTER A CHECK ARE STORED IN IFORM. * C* * C* * C* FOLLOWING ARE THE DIFFERENT WAYS TO EXECUTE THIS * C* SEGMENT ACCORDING TO INDIC VALUE : * C* * C* INDIC = 0 : NORMAL PATH . ANALYSE ISCRN SCREEN ANSWERS . * C* OR COMING FROM TGP11 AN ERROR HAS OCCURED IN * C* OPENING THE DATA BASE REGET SCREEN #3 * C* = 1 : WHEN COMING FROM TGP10 . A TRANSACTION SPEC * C* HAS BEEN READ (MODE L OR M) BUT AN ERROR * C* OCURED DURING READ . ISKIP CONTAINS ERROR CODE * C* SET INDIC TO 4 AND REPRINT SCREEN # 3 . * C* = 2 : WHEN COMING FROM TGP11 . A DATA BASE HAS BEEN * C* SUCCESSFULLY OPENED GO TO PRINT SCREEN # 5 . * C* = 3 : WHEN COMING FROM TGP10 . A TRANSACTION SPEC * C* HAS BEEN SUCCESFULLY READ . * C* = 4 : SEE INDIC=1 AFTER PRINTING SCREEN 3 THE ISKIP * C* ERROR MESSAGE IS PRINTED . * C* =-77 A HELP MESSAGE MUST BE PRINTED * C* = 99 ABORT TGP * C* * 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,ISWICH(5) C C LOCAL VARIABLES ********** C DIMENSION ITGP0(3),ITGP10(3),ITGP11(3),ITGP13(3),ITGP3(3) DIMENSION JOUT(10),IFN(9),MNAM(3) DIMENSION IHP3(6),IHP4(11),IHP41(10),IRSET(8) DIMENSION NOMON(10),IERROR(6),ISTAT(10),IBASE0(10) C EQUIVALENCE(NOF,KFORM(1900)) EQUIVALENCE(WRNSET,KFORM(1023)) C LOGICAL JPAR,ISBTW,GETBK,OKABT,ISBIT,IMBED C C DATA VALUES : C DATA JBYTES/170/ DATA JWORDS/85/ DATA ITGP0/2HTG,2HP0,2H / DATA ITGP10/2HTG,2HPI,2H0 / DATA ITGP11/2HTG,2HPI,2H1 / DATA ITGP13/2HTG,2HPI,2H3 / DATA ITGP3/2HTG,2HP3,2H / DATA MNAM/2HDC,2HMO,2HN / DATA IFN/5,6,7,8,9,4,2,3,1/ DATA IHP3/27,2,7,3,4,5/ DATA IHP4/1,6,7,28,8,11,12,9,10,29,29/ DATA IHP41/17,13,16,23,14,19,20,21,22,15/ DATA IRSET/15530B,15555B,15446B,2Hk0,2HB ,15542B,15510B,15512B/ DATA NOMON/2H'D,2HCM,2HON,2H' ,2HNO,2HT ,2HPR,2HES,2HEN,2HT / DATA IERROR/2HER,2HRO,2HR ,2H ,2H ,2H / C C********************************************************************* C C ACCORDING TO INDIC VALUE GO TO THE REQUIRED PORTION OF TGP1 C C********************************************************************* IF(INDIC.NE.1) GO TO 20 INDIC=0 GO TO 227 20 IF(INDIC.NE.2) GO TO 25 INDIC=0 GO TO 526 25 IF(INDIC.NE.3) GO TO 30 INDIC=0 GO TO 222 30 IF(INDIC.NE.4) GO TO 35 INDIC=0 GO TO 230 35 IF(INDIC.NE.-77) GO TO 40 INDIC=0 GO TO 3062 40 IF(INDIC.EQ.99) GO TO 990 C C C********************************************************************* C C INDIC = 0 GET THE ANSWERS IN THE SCREEN C C********************************************************************* C 15 IF(ISBTW(ISCRN,3,4)) ITLOG=2 IF(ISCRN.EQ.3) ITLOG=36 IF(ISCRN.EQ.4) ITLOG=52 IF(ISCRN.EQ.41) ITLOG=31 IF(.NOT.(GETBK(ILU,KFORM,ITLOG,IMODE))) GO TO 10 C C ERROR IN GETTING ANSWERS REPRINT SCREEN C 17 IF(ISCRN.EQ.41) CALL EXEC(8,ITGP3) CALL EXEC(8,ITGP0) C C********************************************************************* C C GO TO ANALYSE USER ANSWERS TO SCREEN # ISCRN C C********************************************************************* C 10 IF(ISCRN.EQ.41) GO TO 4100 GO TO (100,400,200,500,600) ISCRN C C********************************************************************* C C SCREEN # 0 ANSWERS (EXPLANATORY SCREEN) C C********************************************************************* C 100 IF(ISCRN.EQ.1) GO TO 300 NOF=1 IF(.NOT.JPAR(KFORM,ITLOG,NOF,JOUT,2,IFLG,JVAL)) GO TO 105 IF(IFLG.NE.4) GO TO 3000 105 ISCRN=3 CALL EXEC(8,ITGP0) C C********************************************************************* C C SCREEN # 3 ANSWERS (MODE OF OPERATION) C C********************************************************************* C C MODE OF OPERATION C C --- IF IMODE EQUALS "0", BLANC OUT ILIBR IN CASE AN AUTOMATIC C MODIFY GETS DONE. ELEMENTS IN ILIBR WILL GET MOVED INTO C LFORM IN THIS CASE. C 200 IF(IMODE.EQ.1) GO TO 201 CALL BLANC(ILIBR,67) ILIBR(7)=0 C 201 NOF=1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 JVAL1=-1 IF(JOUT.EQ.2HC ) JVAL1=1 IF(JOUT.EQ.2HM ) JVAL1=2 IF(JOUT.EQ.2HL ) JVAL1=3 IF(JOUT.EQ.2HB ) JVAL1=4 IF(JOUT.EQ.2HA ) JVAL1=2 IF(JOUT.NE.2HE ) GO TO 203 ISCRN=1 CALL EXEC(8,ITGP0) 203 IF(JVAL1.EQ.-1) GO TO 250 IMODE=0 IF(JOUT.EQ.2HA ) IMODE=1 CALL MOVCA(JOUT,1,IFORM,13,1) IF(JVAL1.EQ.1) IUMAX=0 IF(JVAL1.EQ.1) IMMAX=0 IF(JVAL1.EQ.2) CALL BLANC(LFORM(22),15) C C TRANSACTION SPEC NAME OR # C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 IF((ISBTW(JVAL1,2,3)).AND.(IFLG.NE.0)) GO TO 260 IF(.NOT.(ISBTW(JVAL1,2,3)).AND.(IFLG.EQ.0)) GO TO 580 IF(IFLG.EQ.0) GO TO 207 IF(IFLG.NE.1) GO TO 205 IF((JVAL.LT.1).OR.(JVAL.GT.9999)) GO TO 550 GO TO 207 205 IF(ISBTW(IGET1(JOUT,1),1HA,1HZ)) GO TO 265 207 CALL MOVEW(JOUT,IFORM(8),3) C C TRANSACTION SPEC SECURITY CODE C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 IF((ISBTW(JVAL1,2,3)).AND.(IFLG.NE.0)) GO TO 260 IF(.NOT.(ISBTW(JVAL1,2,3)).AND.(IFLG.GT.1)) GO TO 555 IF(JVAL.EQ.-32768) GO TO 555 CALL MOVEW(JOUT,IFORM(11),3) C C LIBRARY FILE NAME C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 IF((ISBTW(JVAL1,2,3)).AND.(IFLG.NE.0)) GO TO 260 IF(.NOT.(ISBTW(JVAL1,2,3)).AND.(IFLG.EQ.0)) GO TO 262 CALL MOVEW(JOUT,IFORM(14),3) C C CARTRIDGE # C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 IF(ISBTW(JVAL1,2,3).AND.(IFLG.NE.0)) GO TO 260 C BLANK? IF(IFLG.EQ.0) GO TO 2091 C NO. INTEGER? IF(IFLG.NE.1) GO TO 208 C YES. IF(JVAL.LT.1) GO TO 264 GO TO 2091 C ASCII? 208 IF(IFLG.NE.3) GO TO 264 C YES. LEFT JUSTIFY IT & MAKE SURE IT IS A VALID 2 CHAR CR#. CALL JUSTF(JOUT,1,6,1) IF(LNCAR(JOUT,1,6).GT.2) GO TO 264 IF(ISBTW(IGET1(JOUT,1),1HA,1HZ)) GO TO 264 I=IGET1(JOUT,2) IF(ISBTW(I,1HA,1HZ) .AND. ISBTW(I,1H0,1H9) .AND. ISBTW(I,1H ,1H )) .GO TO 264 2091 CALL MOVEW(JOUT,IFORM(17),3) C C LIST FILE NAME C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 IF((JVAL1.NE.3).AND.(IFLG.NE.0)) GO TO 260 IF(JVAL1.NE.3) GO TO 209 C C DEFAULT LIST FILE IS INTERACTIVE LU C IF(IFLG.NE.0) GO TO 210 ISKIP=ILU GO TO 209 C C A LIST FILE NAME HAS BEEN GIVEN CHECK FILE EXIST ,IS TYPE 0 C GET THE LU # IN THE IDCB . C 210 IF(OPEN(KFORM,ISTAT,JOUT).LT.0) GO TO 212 IF(ISTAT.NE.0) GO TO 211 ISKIP=KFORM(4) CALL CLOSE(KFORM) GO TO 209 C C FILE TYPE IS NOT 0 C 211 IMES=4 CALL CLOSE(KFORM) GO TO 232 C C ERROR IN OPENING THE FILE C 212 IMES=19 IF(ISTAT.EQ.-6) IMES=31 IF(IMES.EQ.19) CALL JASC(ISTAT,JOUT,1,6) GO TO 232 C 209 CALL MOVEW(JOUT,IFORM(20),3) C C IF MODE OF OPERATION IS "B" PRINT SCREEN 19 C IF(JVAL1.NE.4) GO TO 199 CALL BLANC(ILIBR,67) ISCRN=20 INDIC=0 CALL EXEC(8,ITGP3) C C IF MODE OF OPERATION IS "L" OR "M" OR "A" GO TO READ FORM C 199 IF(JVAL1.GT.1) GO TO 225 C C HERE POINT OF RETURN FORM TGP10 IF MODE OF OP. WAS L OR M C TRANS. SPEC HAS BEEN READ C 222 JVAL=IGET1(IFORM,13) D GO TO 224 C-----IF "M" OR "A" BLANK THE LIBRARY HEADER IF(JVAL.EQ.2HM .OR. JVAL.EQ.2HA ) CALL BLAN(LFORM,43,30) C C-----IF AUTOMATIC MODE, GET DEST LIB FNAME, CRN, HEADER, & LISTFILE NAME. C IF(IMODE.NE.1) GO TO 2221 CALL MOVCA(ILIBR,1,LFORM,31,6) CALL MOVCA(ILIBR,7,LFORM,37,6) CALL MOVCA(ILIBR,15,LFORM,43,ILIBR(7)) IF(ILIBR(23).EQ.2H ) GO TO 2221 CALL MOVCA(ILIBR,45,LFORM,73,6) C C IF MODE OF OPERATION IS "L" GO TO PRINT SPECS C 2221 IF((JVAL.EQ.2HM ).OR.(JVAL.EQ.2HC ).OR.(JVAL.EQ.2HA )) GO TO 223 INDIC=4278 CALL EXEC(8,ITGP13) C C IF MODE OF OPERATION IS "C", "A", OR "M" INITIALISE BUFFERS C 223 CALL NUL(ILITE,14) CALL NUL(IMAI,225) IMFLG=0 IMAS=0 IMDT=0 IMKY=0 CALL NUL(IKEY,78) KFORM(1060)=0 C C INITIALISE SOURCE BUFFERS ONLY FOR CREATE C CALL BLANC(ILIBR,67) IF(JVAL.NE.2HC ) GO TO 224 INDIC=0 DO 706 I=24,780 706 IFORM(I)=2H CALL BLANC(JFORM,1700) CALL BLANC(LFORM,42) CALL BLANC(MFORM,28) DO 714 I=1,20 714 JFORM(66+(I-1)*JWORDS)=0 C C INITIALISE SFK'S TO THE DEFAULT SET C C KEY # C IFORM(44)=2H1 IFORM(60)=2H 2 IFORM(77)=2H3 IFORM(93)=2H 4 IFORM(110)=2H5 IFORM(126)=2H 6 IFORM(143)=2H7 IFORM(159)=2H 8 IFORM(176)=2H9 C C FUNCTION # AND TERMINATOR C IFORM(53)=2HAD IFORM(54)=2HX IFORM(69)=2H S IFORM(70)=2HUX IFORM(86)=2HMP IFORM(87)=2HX IFORM(102)=2H D IFORM(103)=2HVX IFORM(119)=2HEQ IFORM(120)=2HX IFORM(135)=2H A IFORM(136)=2HBX IFORM(152)=2HRC IFORM(153)=2HX IFORM(168)=2H S IFORM(169)=2HVX IFORM(185)=2HTC IFORM(186)=2HX C C SFK'S LABELS C DO 720 I=1,9 CALL FILAC(I,0,IFN(I),IFORM) 720 CONTINUE C C CALL NEXT SCREEN C 224 ISCRN=4 IMODE=0 IF(JVAL.EQ.2HA ) IMODE=1 CALL EXEC(8,ITGP0) C C GO TO READ FORM C 225 CALL EXEC(8,ITGP10) C C RETURN FROM TGP10 AN ERROR HAS OCCURED IN READING SPEC REPRINT C SCREEN 3 SET INDIC TO 4 TO PRINT LATER THE ERROR . C 227 ISCRN=3 INDIC=4 CALL EXEC(8,ITGP0) C C ERRORS ON READING FORM C 230 IMES=0 IF(ISKIP.EQ.1) IMES=15 IF(ISKIP.EQ.2) IMES=16 IF(ISKIP.EQ.5) IMES=17 IF(ISKIP.EQ.6) IMES=18 IF(ISKIP.EQ.-6) IMES=20 IF(ISKIP.EQ.-32) IMES=14 IF(ISKIP.EQ.7) IMES=21 IF(ISKIP.EQ.8) IMES=24 NOF=2 IF((IMES.NE.15).AND.(IMES.NE.17)) GO TO 231 NOF=4 231 IF(IMES.EQ.14) NOF=5 IF(IMES.EQ.20) NOF=4 IF(IMES.EQ.21) NOF=3 IF(IMES.NE.0) GO TO 232 IMES=19 CALL JASC(ISKIP,JOUT,1,6) 232 CALL MES01(IMES,NOF,JOUT) GO TO 15 C C ERROR PROCESSING SCREEN # 3 C 250 CALL MES01(1,NOF) GO TO 15 260 CALL MES01(10,NOF) GO TO 15 261 CALL MES01(11,NOF) GO TO 15 262 CALL MES01(12,NOF) GO TO 15 263 CALL MES01(13,NOF-1) GO TO 15 264 CALL MES01(14,NOF) GO TO 15 265 CALL MES01(22,NOF) GO TO 15 C --- ILLEGAL LIBRARY SECURITY CODE 266 CALL MES01(41,NOF) GO TO 15 C C********************************************************************* C C SCREEN # 1 ANSWERS (EXPLANATORY SCREEN) C C********************************************************************* C 300 NOF=1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,2,IFLG,JVAL)) GO TO 3000 ISCRN=2 CALL EXEC(8,ITGP0) C C********************************************************************* C C SCREEN # 2 ANSWERS (EXPLANATORY SCREEN) C C********************************************************************** C 400 NOF=1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,2,IFLG,JVAL)) GO TO 3000 ISCRN=5 CALL EXEC(8,ITGP0) C C********************************************************************* C C SCREEN # 4 ANSWERS (TRANS. IDENTIFICATION AND TYPE) C C********************************************************************** C C C SPECS NAME C 500 NOF=1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 IF(IFLG.EQ.0) GO TO 580 CALL JUSTF(JOUT,1,6,1) IF(ISBTW(IGET1(JOUT,1),1HA,1HZ)) GO TO 265 IF (IMBED(JOUT,1,6)) GO TO 588 CALL MOVEW(JOUT,IFORM(29),3) C C SPECS NUMBER C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,4,IFLG,JVAL)) GO TO 3000 IF(IFLG.EQ.0) GO TO 550 IF(IFLG.NE.1) GO TO 550 IF((JVAL.LT.1).OR.(JVAL.GT.9999)) GO TO 550 502 CALL MOVEW(JOUT,IFORM(32),2) C C SPECS SECURITY CODE C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 IF(IFLG.GT.1) GO TO 555 IF(JVAL.EQ.-32768) GO TO 555 CALL MOVEW(JOUT,IFORM(34),3) C C-----INITIALIZE ITT C ITT=0 C C-----LOGGING? C 510 NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 IF((IFLG.NE.0).AND.(JOUT(1).NE.2HX )) GO TO 585 CALL MOVCA(JOUT,1,IFORM,74,1) IF(JOUT.EQ.2HX ) CALL SETBT(ITT,2,1) C C USER WRITTEN MODULES ? C 520 NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 IF((IFLG.NE.0).AND.(JOUT(1).NE.2HX )) GO TO 585 IF(JOUT(1).EQ.2HX ) CALL SETBT(ITT,0,1) CALL MOVCA(JOUT,1,IFORM,73,1) C C SELF COMPLETING? C 5200 NOF=NOF+1 IF (JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 IF ((IFLG.NE.0).AND.(JOUT(1).NE.2HX )) GO TO 585 CALL MOVCA(JOUT,1,IFORM,1545,1) C C LIGHT # TO STAY LIT DURING TRANSACTION C 52001 NOF=NOF+1 IF (JPAR(KFORM,ITLOG,NOF,JOUT,2,IFLG,JVAL)) GO TO 3000 IF ((IFLG.NE.0).AND.(IFLG.NE.1)) GO TO 587 IF ((IFLG.EQ.1).AND.((JVAL.LT.0).OR.(JVAL.GT.14))) GO TO 587 CALL MOVCA(JOUT,1,IFORM,1546,2) IF(IFLG.NE.0) CALL SETBT(ITT,8,1) IF (IFLG.NE.0) ILITE(JVAL)=99 C C DATA BASE NAME C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,5,IFLG,JVAL)) GO TO 3000 IF((IFLG.NE.0).AND.(NIMAG.EQ.1)) GO TO 586 IF(IFLG.NE.0) CALL SETBT(ITT,1,1) CALL MOVCA(JOUT,1,IFORM,75,5) IFORM(40)=IAND(IFORM(40),177400B) IFORM(40)=IFORM(40)+40B C C DATA BASE SECURITY CODE C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,5,IFLG,JVAL)) GO TO 3000 IF(IFLG.EQ.0) GO TO 525 IF(.NOT.ISBIT(ITT,1)) GO TO 260 IF(IFLG.NE.1) GO TO 570 IF(JVAL.LT.1) GO TO 570 525 IF(ISBIT(ITT,1)) GO TO 5250 IF(IFLG.NE.0) GO TO 260 GO TO 5255 5250 IF(IFLG.NE.1) GO TO 570 5255 CALL MOVCA(JOUT,1,IFORM,81,5) C C-----CR# (5 NUMERIC CHAR, REQD IF DB SPECIFIED) C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,5,IFLG,JVAL)) GO TO 3000 C -USING DB? IF(ISBIT(ITT,1)) GO TO 5201 C -NO. CR# BLANK? IF(IFLG.EQ.0) GO TO 522 C -NO. ERROR. GO TO 260 C C NO. INTEGER? 5201 IF(IFLG.NE.1) GO TO 521 C YES. IF(JVAL.LT.1) GO TO 264 GO TO 522 C ASCII? 521 IF(IFLG.NE.3) GO TO 264 C YES. LEFT JUSTIFY IT & MAKE SURE IT IS A VALID 2 CHAR CR#. CALL JUSTF(JOUT,1,6,1) IF(LNCAR(JOUT,1,6).GT.2) GO TO 264 IF(ISBTW(IGET1(JOUT,1),1HA,1HZ)) GO TO 264 I=IGET1(JOUT,2) IF(ISBTW(I,1HA,1HZ) .AND. ISBTW(I,1H0,1H9) .AND. ISBTW(I,1H ,1H )) .GO TO 264 522 CALL MOVCA(JOUT,1,IFORM,1534,5) C C-----HIGHEST LEVEL ACCESS WORD OF DATA BASE (6 ASCII CHAR, REQD FOR DB) C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 IF(ISBIT(ITT,1)) GO TO 524 IF(IFLG.EQ.0) GO TO 524 GO TO 260 524 CALL MOVCA(JOUT,1,IFORM,1539,6) C C IF DATA BASE ACESSED GO TO TGP11 TO OPEN IT ISKIP=D.B. SEC. CODE C IF(.NOT.ISBIT(ITT,1)) GO TO 526 C -BUILD THE DATA BASE NAMR & STORE IT INTO IBASE BEFORE CALLING TGP11 DO 5257 I=1,10 IBASE0(I)=2H IBASE(I)=2H 5257 CONTINUE C -BYTES 1,2 : DS NODE (NOT YET IMPLEMENTED) IBASE0(1)=2H C -BYTES 3-7 : DB NAME CALL MOVCA(IFORM,75,IBASE0,3,5) C -BYTE 8 : COLON CALL PUTCA(IBASE0,1H:,8) C -BYTES 9-13 : SECURITY CODE CALL MOVCA(IFORM,81,IBASE0,9,5) C -BYTE 14 : COLON CALL PUTCA(IBASE0,1H:,14) C -BYTES 15-19 : CR# CALL MOVCA(IFORM,1534,IBASE0,15,5) C -BYTE 20 : SEMI-COLON CALL PUTCA(IBASE0,1H;,20) C -NOW PACK IBASE ELIMINATING IMBEDDED BLANKS. K=3 DO 5258 I=2,20 J=IGET1(IBASE0,I) IF(J.EQ.1H ) GO TO 5258 CALL PUTCA(IBASE,J,K) K=K+1 5258 CONTINUE ISKIP=JVAL INDIC=0 CALL EXEC(8,ITGP11) C C RETURN FROM TGP11 : DATA BASE SUCCESFULY OPENED C C C PRINT SCREEN # 41 C 526 ISCRN=41 CALL EXEC(8,ITGP3) C C SCREEN # 4 ERROR PROCESSING C 550 CALL MES01(2,NOF) GO TO 15 555 CALL MES01(3,NOF) GO TO 15 570 CALL MES01(6,NOF) GO TO 15 580 CALL MES01(7,NOF) GO TO 15 585 CALL MES01(9,NOF) GO TO 15 586 CALL MES01(5,NOF) GO TO 15 587 CALL MES01(32,NOF) GO TO 15 588 CALL MES01(35,NOF) GO TO 15 C C********************************************************************* C C SCREEN # 41 : DATA CAPTURE TERMINAL FEATURE SPECIFICATIONS C C********************************************************************* C C C---ALPHANUMERIC LED DISPLAY C 4100 NOF=1 C FIRST CLEAR BITS 3,4,5,6,7,9,10,11,12,13 IN ITT ITT=IAND(ITT,140407B) NOPTN=0 NOPT7=0 IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 IF(JOUT(1) .NE. 1H .AND. JOUT(1) .NE. 1HX) GO TO 4110 CALL MOVCA(JOUT,1,IFORM,1517,1) IF(JOUT .EQ. 1HX) CALL SETBT(ITT,7,1) C C---ALPHANUMERIC STRIP PRINTER C IFL1=0 NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 IF(JOUT(1) .NE. 1H .AND. JOUT(1) .NE. 1HX) GO TO 4110 IF(JOUT(1) .EQ. 1HX) NOPTN=NOPTN+1 IF(JOUT(1) .EQ. 1HX) CALL SETBT(ITT,3,1) CALL MOVCA(JOUT,1,IFORM,1515,1) IF(IFLG.NE.0) IFL1=IFLG C C--CRT DISPLAY C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 IF(JOUT(1) .NE. 1H .AND. JOUT(1) .NE. 1HX) GO TO 4110 IF(JOUT(1) .EQ. 1HX .AND. ISBIT(ITT,7)) GO TO 4119 CALL MOVCA(JOUT,1,IFORM,1550,1) IF(JOUT(1) .EQ. 1HX) CALL SETBT(ITT,13,1) IF(IFLG.NE.0) IFL1=IFLG C C---TIME REPORTING TERMINAL - MUST BE "12" OR "24", IF SPECIFIED, C CANNOT HAVE PRINTER, KEYBOARD, BAR CODE READER, CRT, LIGHT LIT. C TYPE III, V AND MAGSTRIPE READER ARE MUTUALLY EXCLUSIVE C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,2,IFLG,JVAL)) GO TO 3000 IF(IFLG .EQ. 0) GO TO 4105 IF(JOUT(1) .NE. 2H12 .AND. JOUT(1) .NE. 2H24) GO TO 4113 IF(ISBIT(ITT,3)) GO TO 4114 IF(IGET1(IFORM,1550) .EQ. 1HX) GO TO 4121 IF(IGET2(IFORM,1546) .NE.2H ) GO TO 4125 IF(IGET1(IFORM,1545) .NE.1H ) GO TO 4122 CALL SETBT(ITT,10,1) IF(JOUT(1) .EQ. 2H24) CALL SETBT(ITT,11,1) 4105 CALL MOVCA(JOUT,1,IFORM,1532,2) C C -IF TIME REPORTING TRANS, SET IKEY(26,3) TO DEFAULT & GO C TO SCREEN 8, SKIPPING 6-7 C IF(.NOT.ISBIT(ITT,10)) GO TO 4109 C -SET FUNCTIONS IKEY(1,1)=5 IKEY(2,1)=6 IKEY(3,1)=7 IKEY(4,1)=8 IKEY(5,1)=9 IKEY(6,1)=4 IKEY(7,1)=2 IKEY(8,1)=3 IKEY(9,1)=1 C -SET TERMINATOR FLAGS DO 4107 I=1,9 DO 4107 J=1,2 IKEY(I,J)=1 4107 CONTINUE C C---ERROR LABEL C 4109 NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,12,IFLG,JVAL)) GO TO 3000 IF(IFL1 .EQ. 0 .AND. IFLG .NE. 0 ) GO TO 4116 IF(IFLG .NE. 0 .AND. ISBIT(ITT,10)) GO TO 4116 CALL MOVCA(JOUT,1,IFORM,1520,12) IF(IFLG .EQ. 0 .AND. IFL1 .NE. 0) . CALL MOVCA(IERROR,1,IFORM,1520,12) C C---CARD READER/TYPE III BADGE C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 IF(JOUT(1) .NE. 1H .AND. JOUT(1) .NE. 1HX) GO TO 4110 IF(JOUT(1).EQ.1HX) NOPTN=NOPTN+1 IF(JOUT(1).EQ.1HX.AND.ISBIT(ITT,10)) NOPT7=NOPT7+1 IF(JOUT(1).EQ.1HX) CALL SETBT(ITT,4,1) CALL MOVCA(JOUT,1,IFORM,1518,1) C C---TYPE V BADGE C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 IF(JOUT(1) .NE. 1H .AND. JOUT(1) .NE. 1HX) GO TO 4110 IF(JOUT(1) .EQ. 1HX .AND. NOPTN .EQ. 2) GO TO 4112 IF(JOUT(1) .EQ. 1HX .AND. NOPT7 .EQ. 1) GO TO 4118 IF(JOUT(1) .EQ. 1HX) NOPTN=NOPTN+1 IF(JOUT(1) .EQ. 1HX.AND.ISBIT(ITT,10)) NOPT7=NOPT7+1 IF(JOUT(1) .EQ. 1HX) CALL SETBT(ITT,5,1) CALL MOVCA(JOUT,1,IFORM,1519,1) C C---MAG STRIPE READER C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 IF(JOUT(1) .NE. 1H .AND. JOUT(1) .NE. 1HX) GO TO 4110 IF(JOUT(1) .EQ. 1HX .AND. NOPTN .EQ. 2) GO TO 4112 IF(JOUT(1) .EQ. 1HX .AND. NOPT7 .EQ. 1) GO TO 4118 IF(JOUT(1) .EQ. 1HX) NOPTN=NOPTN+1 IF(JOUT(1) .EQ. 1HX.AND. ISBIT(ITT,10)) NOPT7=NOPT7+1 IF(ISBIT(ITT,10) .AND. NOPT7 .EQ. 0) GO TO 4117 IF(JOUT(1) .EQ. 1HX) CALL SETBT(ITT,12,1) CALL MOVCA(JOUT,1,IFORM,1548,1) C C---BAR CODE READER C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 IF(JOUT(1) .NE. 1H .AND. JOUT(1) .NE. 1HX) GO TO 4110 IF(JOUT(1) .EQ. 1HX .AND. ISBIT(ITT,10)) GO TO 4124 IF(JOUT(1) .EQ. 1HX .AND. NOPTN .EQ. 2) GO TO 4112 IF(JOUT(1) .EQ. 1HX) CALL SETBT(ITT,9,1) CALL MOVCA(JOUT,1,IFORM,1549,1) C C---APLHA KEYBOARD C NOF=NOF+1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 IF(JOUT(1) .NE. 1H .AND. JOUT(1) .NE. 1HX) GO TO 4110 IF(JOUT(1) .EQ. 1HX .AND. ISBIT(ITT,10)) GO TO 4115 CALL MOVCA(JOUT,1,IFORM,1516,1) IF(JOUT(1) .EQ. 1HX) CALL SETBT(ITT,6,1) C C-----PRINT SCREEN # 6 C-------UNLESS A 3077 IS BEING USED IN WHICH CASE SCR 6-7 ARE SKIPPED C ISCRN=6 IF(ISBIT(ITT,10)) ISCRN=9 IF(ISBIT(ITT,10)) CALL EXEC(8,ITGP3) CALL EXEC(8,ITGP0) C C SCREEN #41 ERROR PROCESSING C C C "FIELD MUST BE BLANK OR X" C 4110 CALL MES01(9,NOF) GO TO 15 C C "FIELD MUST BE BLANK" C 4111 CALL MES01(10,NOF) GO TO 15 C C "ONLY 2 OF THE "#" ITEMS MAY BE SPECIFIED" C 4112 CALL MES01(23,NOF) GO TO 15 C-----"MUST BE BLANK OR 12 OR 24 4113 CALL MES01(25,NOF) GO TO 15 C-----"PRINTER CANNOT BE SPECIFIED" 4114 CALL MES01(26,NOF) GO TO 15 C-----"KEYBOARD CANNOT BE SPECIFIED" 4115 CALL MES01(27,NOF) GO TO 15 C-----"ERROR MESSAGE CANNOT BE SPECIFIED" 4116 CALL MES01(28,NOF) GO TO 15 C -"BADGE OR CARD READER REQUIRED" 4117 CALL MES01(29,NOF) GO TO 15 C -"BOTH TYPE III & V CANNOT BE SPECIFIED" 4118 CALL MES01(30,NOF) GO TO 15 C-- BOTH ALPHA DISPLAY AND CRT NOT ALLOWED 4119 CALL MES01(40,NOF) GO TO 15 C--**************************************************************** C **************************************************************** C **************************************************************** C CRT CAN NOT BE SPECIFIED 4121 CALL MES01(36,NOF) GO TO 15 C CANNOT SPECIFY SELF COMPLETE WITH A 3077-IT JUST DOES IT 4122 CALL MES01(39,NOF) GO TO 15 C CAN'T SPECIFY 3077 WITH SELF COMPLETE 4123 CALL MES01(38,NOF) GO TO 15 C CANNOT USE BAR CODE READER WITH 3077 4124 CALL MES01(37,NOF) GO TO 15 C CANNOT HAVE LIGHT LIT FOR TRANSACTION WITH A 3077. 4125 CALL MES01(42,NOF) GO TO 15 C C C********************************************************************* C C SCREEN # 5 ANSWERS (EXPLANATORY SCREEN) C C********************************************************************* C 600 NOF=1 IF(JPAR(KFORM,ITLOG,NOF,JOUT,2,IFLG,JVAL)) GO TO 3000 ISCRN=3 CALL EXEC(8,ITGP0) C C*********************************************************************** C C CALL NEXT SCREEN C 1000 CALL EXEC(8,ITGP0) C C********************************************************************* C C C********************************************************************* C C 2645 SOFT FUNCTION KEY PROCESSING C C********************************************************************* C C IFLG=5 MEANS NON PRINTABLE ASCII C 3000 IF(IFLG.EQ.4) IFLG=5 IF(IFLG.NE.5) GO TO 3007 3001 CALL MES01(8,NOF) GO TO 15 C C IFLG=6 MEANS ILLEGAL PARSE C 3005 IF(IFLG.NE.6) GO TO 3007 STOP 500 C C IFLG=7 MEANS HELP C 3007 IF(IFLG.NE.7) GO TO 3010 IF((ISCRN.GT.2).AND.(ISCRN.NE.5)) GO TO 3061 3006 JOUT=20040B JOUT(2)=15542B CALL EXEC(2,ILU,JOUT,2) GO TO 15 3061 INDIC=-77 GO TO 17 3062 IF(ISCRN.NE.3) GO TO 3050 IMES=IHP3(NOF) GO TO 3060 3050 IF(ISCRN.NE.4) GO TO 3053 IMES=IHP4(NOF) IF(WRNSET.EQ.3 .AND. NOF.EQ.-1) IMES=24 IF(NOF.EQ.-1) NOF=1 GO TO 3060 3053 IF(ISCRN.NE.41) GO TO 15 IMES=IHP41(NOF) 3060 CALL HLP01(IMES,NOF) GO TO 15 C C IFLG=8 MEANS LAST SCREEN C 3010 IF(IFLG.NE.8) GO TO 3017 IF(ISCRN.EQ.0) GO TO 3015 C C IF SCRN 4 GIVE WARNING ABOUT PRESSING PREVIOUS SCREEN C IF(ISCRN.NE.4) GO TO 30105 IF(WRNSET.EQ.3) GO TO 30105 WRNSET=3 NOF=-1 GO TO 3061 30105 WRNSET=0 IF(ISCRN.EQ.1 .OR. ISCRN.EQ.4) GO TO 3011 IF(ISCRN.EQ.2) GO TO 3012 IF(ISCRN.EQ.3) GO TO 30121 IF(ISCRN.EQ.41) GO TO 3013 IF(ISCRN.EQ.5) GO TO 3014 GO TO 3015 3011 ISCRN=3 GO TO 3015 3012 ISCRN=ISCRN-1 GO TO 3015 30121 ISCRN=0 GO TO 3015 3013 ISCRN=4 IF(ISBIT(ITT,1)) CALL DBCLS(IBASE,ID,1,ISTAT) GO TO 3015 3014 ISCRN=2 GO TO 3015 3015 CALL EXEC(8,ITGP0) C C-----ABORT KEY PRESSED? C 3017 IF(OKABT(ILU)) GO TO 990 C-----NO, RESCHEDULE TGP0. IF(ISCRN.EQ.41) CALL EXEC(8,ITGP3) CALL EXEC(8,ITGP0) C-----YES, ABORT PROGRAM C-----WAS A DATA BASE USED? 990 IF(.NOT.ISBIT(ITT,1)) GO TO 992 C-----YES, (IE, TRANS. TYPE 2 OR 3) CLOSE DATA BASE CALL DBCLS(IBASE,ID,1,ISTAT) C-----RESET TERMINAL. 992 CALL EXEC(2,ILU,IRSET,8) CALL RESET(ILU,ISWICH,IVAL,0) C-----RE-SCHEDULE 'DCMON' C FIRST UNLOCK THE TERMINAL CALL LURQ(100000B,ILU,1) GO TO 7212 7212 CONTINUE CALL EXEC(100000B+23,MNAM,ILU) GO TO 995 993 GO TO 999 C-----"DCMON NOT PRESENT" 995 CALL EXEC(2,ILU,NOMON,10) GO TO 999 C-----END OF SEGMENT 996 CALL TGP 999 END END$