FTN4
      PROGRAM TGP5(5), 92903-16360 REV.1913  790131 1715
C 
C     SOURCE 92903-18360
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 
C 
C      PRGMR : JEAN CHARLES MIARD (HPG) 
C 
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 11,12     *
C*   AND 13 . 
C*            THE ANSWERS AFTER A CHECK ARE STORED IN JFORM.         *
C*                                                                   *
C*            THIS SEGMENT IS LOADED ONLY TO ANALYSE SCREEN ANSWERS  *
C*   INDIC IS NOT USED .                                             *
C*                                                                   *
C*       IF INDIC=-77 A HELP MESSAGE IS TO BE PRINTED                *
C*                                                                   *
C*                                                                   *
C*   WARNING !! : CARE MUST BE TAKEN * :                             *
C*                                                                   *
C*       PRINTED SCREEN # 11 CORRESPONDS IN THE CODE TO ISCRN=12     *
C*        ............... 12 ................................ 13     *
C*        ............... 13 ................................ 14     *
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 JNAM(3),ILNGT(4,3)
      DIMENSION JOUT(10),KNAM(3),LNAM(3)
      DIMENSION IHP20(5),IHP21(6) 
      DIMENSION IHP30(4),IHP31(5) 
      DIMENSION IHP40(4),IHP41(5) 
C 
      EQUIVALENCE (NOF,KFORM(531))
C 
      LOGICAL JPAR,RNUM,GETBK,OKABT,ISBIT,NAMCK 
C 
C  DATA VALUES :
C 
      DATA JNAM/2HTG,2HP3,2H  / 
      DATA KNAM/2HTG,2HP4,2H  / 
      DATA LNAM/2HTG,2HP1,2H  / 
      DATA IHP20/0,0,1,2,4/ 
      DATA IHP21/0,0,1,2,3,4/ 
      DATA IHP30/0,0,2,4/ 
      DATA IHP31/0,0,2,3,4/ 
      DATA IHP40/5,6,7,4/ 
      DATA IHP41/5,6,7,3,4/ 
      DATA ILNGT/22,28,24,30,46,52,48,54,47,53,49,55/ 
      DATA JBYTES/140/
      DATA JWORDS/70/ 
C 
C 
C*********************************************************************
C 
C  GET USER'S ANSWERS IN THE SCREEN 
C 
C*********************************************************************
C 
      IF(INDIC.EQ.-77) GO TO 3011 
C 
C 
C 
      ISTAT1=0
      ISTAT2=0
      ISTAT3=0
      ISTAT4=0
15    I=IAND(ITT,3B)+1
      J=ISCRN-11
      ITLOG=ILNGT(I,J)
      IF(GETBK(ILU,KFORM,ITLOG)) GO TO 17 
C-----SET ICARD=1, IF INPUT FROM CARD READER, 
C-----FURTHERMORE, SET IMCRD=1, IF INPUT FROM IMAGE CARD. 
      ICARD=0 
      IMCRD=0 
C-----INPUT FROM CARD?
      IF(IGET1(JFORM,5+(IQST-1)*JBYTES).EQ.1H )GO TO 18 
C-----YES, CARD INPUT.
      ICARD=1 
C-----IMAGE CARD INPUT? 
      IF(IGET1(JFORM,43+(IQST-1)*JBYTES).EQ.1HI) IMCRD=1
      GO TO 18
C 
C  ERROR IN GETTING ANSWERS REPRINT SCREEN
C 
17    IF(ISCRN.NE.14) CALL EXEC(8,JNAM) 
      CALL EXEC(8,KNAM) 
C 
C*********************************************************************
C 
C GO TO ANALYSE USER ANSWERS TO SCREEN # ISCRN
C 
C*********************************************************************
C 
18    I=ISCRN-11
      GO TO(1200,1300,1400) I 
C 
C*********************************************************************
C 
C  SCREEN # 11  (INTEGER EDITS) 
C 
C*********************************************************************
C 
C 
C  MAXIMUM VALUE *  CHECK INTEGER OR BLANK
C 
1200  NOF=1 
      IF(JPAR(KFORM,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 
      IFLG1=IFLG
      IF(IFLG.EQ.0)       GO TO 1201
      IF(IFLG.NE.1)       GO TO 1281
      XMAX=JVAL 
1201  CALL MOVCA(JOUT,1,JFORM,(49+(IQST-1)*JBYTES),6) 
C 
C  MINIMUM VALUE  * CHECK INTEGER OR BLANK * MAX > MIN *
C 
      NOF=NOF+1 
      IF(JPAR(KFORM,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 
      IFLG2=IFLG
      IF(IFLG.EQ.0)       GO TO 1202
      IF(IFLG.NE.1)       GO TO 1282
      XMIN=JVAL 
      IF(IFLG1.EQ.0)      GO TO 1202
      IF(XMIN.GE.XMAX)    GO TO 1283
1202  CALL MOVCA(JOUT,1,JFORM,(55+(IQST-1)*JBYTES),6) 
C 
C-----GET DEFAULT ANSWER
C 
      NOF=NOF+1 
      IF(JPAR(KFORM,ITLOG,NOF,JOUT,6,IFLG,JVAL)) GO TO 3000 
      XDEFLT=0
      IF(IFLG.EQ.0)       GO TO 1205
      IF(IFLG.NE.1)       GO TO 1284
      XDEFLT=JVAL 
1205  IF(IFLG1.EQ.0)      GO TO 1207
      IF(XDEFLT.LE.XMAX)  GO TO 1207
      IF(ISTAT1.EQ.1)     GO TO 1207
      ISTAT1=1
      GO TO 1285
1207  IF(IFLG2.EQ.0)      GO TO 1210
      IF(XDEFLT.GE.XMIN)  GO TO 1210
      IF(ISTAT2.EQ.1)     GO TO 1210
      ISTAT2=1
      GO TO 1285
1210  CALL MOVCA(JOUT,1,JFORM,(61+(IQST-1)*JBYTES),6) 
      GO TO 1430
C 
C  ERROR PROCESSING SCREEN 12 
C 
1184  CALL MES05(1,NOF) 
      GO TO 15
1280  CALL MES05(2,NOF) 
      GO TO 15
1281  CALL MES05(8,NOF) 
      GO TO 15
1282  CALL MES05(9,NOF) 
      GO TO 15
1283  NOF=NOF-1 
      CALL MES05(10,NOF)
      GO TO 15
C     "ILLEGAL CHARACTER INPUT" 
1284  CALL MES05(7,NOF) 
      GO TO 15
C     "WARNING : DEFAULT VALUE OUTSIDE OF LIMITS" 
1285  NOF=3 
      CALL WARN(0,0)
      GO TO 15
C 
C*********************************************************************
C 
C  SCREEN 12   ( REAL EDITS ) 
C 
C*********************************************************************
C 
C 
C  MAXIMUM VALUE  * MUST BE REAL *
C 
1300  NOF=1 
      XMAX=0
      XMIN=0
      XDEFLT=0
      IF(JPAR(KFORM,ITLOG,NOF,JOUT,14,IFLG,JVAL)) GO TO 3000
      IFLG3=IFLG
      IF(IFLG.EQ.0)       GO TO 1302
      IF(RNUM(JOUT,1,14,XMAX)) GO TO 1281 
      CALL CODE 
      READ(JOUT,*) XMAX 
1302  CALL MOVCA(JOUT,1,JFORM,(49+(IQST-1)*JBYTES),14)
C 
C  MINIMUM VALUE  * MUST BE REAL . MAX > MIN *
C 
      NOF=NOF+1 
      IF(JPAR(KFORM,ITLOG,NOF,JOUT,14,IFLG,JVAL)) GO TO 3000
      IFLG4=IFLG
      IF(IFLG.EQ.0)       GO TO 1304
1303  IF(RNUM(JOUT,1,14,XMIN)) GO TO 1282 
      CALL CODE 
      READ(JOUT,*) XMIN 
      IF(IFLG3.EQ.0)      GO TO 1304
      IF(XMIN.GE.XMAX)    GO TO 1283
1304  CALL MOVCA(JOUT,1,JFORM,(63+(IQST-1)*JBYTES),14)
C 
C--GET DEFAULT ANSWER 
C 
      NOF=NOF+1 
      IF(JPAR(KFORM,ITLOG,NOF,JOUT,14,IFLG,JVAL)) GO TO 3000
      XDEFLT=0
      IF(IFLG.EQ.0) GO TO 1305
      IF(RNUM(JOUT,1,14,XDEFLT)) GO TO 1284 
      CALL CODE 
      READ(JOUT,*) XDEFLT 
1305  IF(IFLG3.EQ.0)      GO TO 1306
      IF(XDEFLT.LE.XMAX)  GO TO 1306
      IF(ISTAT3.EQ.1)     GO TO 1306
      ISTAT3=1
      GO TO 1285
1306  IF(IFLG4.EQ.0)      GO TO 1310
      IF(XDEFLT.GE.XMIN)  GO TO 1310
      IF(ISTAT4.EQ.1)     GO TO 1310
      ISTAT4=1
      GO TO 1285
1310  CALL MOVCA(JOUT,1,JFORM,(77+(IQST-1)*JBYTES),14)
      GO TO 1430
C 
C*********************************************************************
C 
C  SCREEN 13   (STRING EDITS) 
C 
C*********************************************************************
C 
C 
C  MAXIMUM STRING LENGTH  * INTEGER  1<= LENGTH <=126 * 
C  STRING LENGTH FOR DATA BASE ITEM CANNOT BE MODIFIED
C 
1400  NOF=1 
      IF(JPAR(KFORM,ITLOG,NOF,JOUT,3,IFLG,JVAL)) GO TO 3000 
      JVAL1=JVAL
      IF(IFLG.NE.1) GO TO 1480
      IF((JVAL.LT.1).OR.(JVAL.GT.126)) GO TO 1480 
      IF(IGET1(JFORM,1+(IQST-1)*JBYTES).NE.2HD ) GO TO 1402 
      IF(JFORM(25+(IQST-1)*JWORDS).NE.JVAL) GO TO 1488
1402  JFORM(25+(IQST-1)*JWORDS)=JVAL
      IF(LNCAR(JFORM,(72+(IQST-1)*JBYTES),20).GT.JVAL1)  GO TO 1486 
C 
C  STRING POSITIONING   * R OR L  DEFAULT IS L *
C 
1404  NOF=NOF+1 
      IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 
      IF(IFLG.EQ.0) JOUT(1)=2HL 
      IF((JOUT(1).NE.2HR ).AND.(JOUT(1).NE.2HL )) GO TO 1481
      ILR=JOUT
      CALL MOVCA(JOUT,1,JFORM,(51+(IQST-1)*JBYTES),1) 
C 
C  STRING MASK
C 
      NOF=NOF+1 
      IF(JPAR(KFORM,ITLOG,NOF,JOUT,20,IFLG,JVAL)) GO TO 3000
      IF(IFLG.EQ.0) GO TO 1408
      IL=LNCAR(JOUT,1,20) 
C    -LEFT OR RIGHT JUSTIFIED?
      IF(ILR.EQ.2HR ) GO TO 1406
C    -LEFT JUSTIFIED, THEREFORE, ERR IF LEADING BLANKS. 
      IF(IGET1(JOUT,1).EQ.1H ) GO TO 1478 
      IF(IL.GT.JVAL1) GO TO 1485
      GO TO 1408
C    -RIGHT JUSTIFIED, MASK MUST BE RIGHT JUSTIFIED.
1406  IF(IL.GT.JVAL1) GO TO 1485
      IF(IL.NE.JVAL1) GO TO 1479
1408  CALL MOVCA(JOUT,1,JFORM,(52+(IQST-1)*JBYTES),20)
C 
C-----GET DEFAULT ANSWER: 
C         1. CHECK DEFAULT ANS NOT LONGER THAN MAX STRING LENGTH
C         2. CHECK THAT MASK ISN'T LONGER THAN DEFAULT ANS. 
C 
      NOF=NOF+1 
      IF (JPAR(KFORM,ITLOG,NOF,JOUT,20,IFLG,JVAL)) GO TO 3000 
      IL=LNCAR(JOUT,1,20) 
      IF(IL.GT.JVAL1) GO TO 1486
      IF(LNCAR(JFORM,52+(IQST-1)*JBYTES,20).GT.JVAL1) GO TO 1485
      CALL MOVCA(JOUT,1,JFORM,(72+(IQST-1)*JBYTES),20)
      GO TO 1435
C 
C********************************************************************** 
C 
C  ARITHMETIC OPERATORS (SCREENS 11/12) 
C 
C********************************************************************** 
C 
C   CHECK ANSWER IS BLANK OR X . IF X CHECK ARITH OPERATORS HAVE BEEN 
C   DEFINED AS SFK'S
C 
1430  NOF=NOF+1 
      IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 
C-----IF CARD INPUT, ARITHMETIC OPERATIONS NOT ALLOWED. 
      IF(ICARD.EQ.0) GO TO 1431 
      IF(IFLG.NE.0) GO TO 1498
1431  IF((IFLG.NE.0).AND.(JOUT(1).NE.2HX )) GO TO 1184
      IF(IFLG.EQ.0) GO TO 1434
      DO 1432 I=1,11
      DO 1432 J=1,3,2 
      IF(IKEY(I,J).EQ.9) GO TO 1434 
1432  CONTINUE
      GO TO 1482
1434  IF(ISCRN.EQ.12) N=67
      IF(ISCRN.EQ.13) N=91
      CALL MOVCA(JOUT,1,JFORM,(N+(IQST-1)*JBYTES),1)
C 
C*********************************************************************
C 
C  NEXT ENTRY IN AN IMAGE CHAIN ? (TR. TYPE > 1)
C 
C*********************************************************************
C 
C  CHECK ANSWER IS BLANK OR X . IF X CHECK NEXT ENTRY HAS BEEN DEFINED
C  AND CHECK FIND IN DETAIL DATA SET DEFINED TOO .
C 
1435  IF(.NOT.ISBIT(ITT,1)) GO TO 1438
      NOF=NOF+1 
      IF(JPAR(KFORM,ITLOG,NOF,JOUT,1,IFLG,JVAL)) GO TO 3000 
C-----IF CARD INPUT, NEXT ENTRY IN AN IMAGE CHAIN IS NOT ALLOWED. 
      IF(ICARD.EQ.0) GO TO 14351
      IF(IFLG.NE.0) GO TO 1498
14351 IF((IFLG.NE.0).AND.(JOUT(1).NE.2HX )) GO TO 1184
      IF(IFLG.EQ.0) GO TO 1438
C-----'NEXT ENTRY' FOR ITEM TYPE S,I,R NOT ALLOWED. 
      IARG=IGET1(JFORM,1+(IQST-1)*JBYTES) 
      IF((IARG.EQ.2HS ).OR.(IARG.EQ.2HI ).OR.(IARG.EQ.2HR )) GO TO 1497 
      DO 1436 I=1,11
      DO 1436 J=1,3,2 
      IF(IKEY(I,J).EQ.12) GO TO 1437
1436  CONTINUE
      GO TO 1483
1437  IF(IMDT.EQ.0) GO TO 1487
      IF(IQST.LE.IUMAX) GO TO 1489
1438  IF(ISCRN.EQ.12) N=68
      IF(ISCRN.EQ.13) N=92
      IF(ISCRN.EQ.14) N=92
      CALL MOVCA(JOUT,1,JFORM,(N+(IQST-1)*JBYTES),1)
      IF(.NOT.ISBIT(ITT,1)) CALL BLAN(JFORM,N+(IQST-1)*JBYTES,1)
C 
C*********************************************************************
C 
C  USER EDIT SUBROUTINE (TR. TYPE 1/3 ONLY) 
C 
C*********************************************************************
C 
1440  IF(.NOT.ISBIT(ITT,0)) GO TO 1444
      NOF=NOF+1 
      IF(JPAR(KFORM,ITLOG,NOF,JOUT,5,IFLG,JVAL)) GO TO 3000 
      IF(IFLG.EQ.0) GO TO 1444
      IF(NAMCK(JOUT)) GO TO 1476
1444  IF(ISCRN.EQ.12) N=69
      IF(ISCRN.EQ.13) N=93
      IF(ISCRN.EQ.14) N=93
      CALL MOVCA(JOUT,1,JFORM,(N+(IQST-1)*JBYTES),5)
      IF(.NOT.ISBIT(ITT,0)) CALL BLAN(JFORM,N+(IQST-1)*JBYTES,5)
      GO TO 1630
C 
C  ERROR PROCESSING SCREENS(12/13/14) 
C 
C    -"ILLEGAL FILE NAME" 
1476  CALL MES05(28,NOF)
      GO TO 15
C    -"MASK MUST BE LEFT JUSTIFIED" 
1478  CALL MES05(26,NOF)
      GO TO 15
C    -"MASK MUST BE RIGHT JUSTIFIED"
1479  CALL MES05(27,NOF)
      GO TO 15
1480  CALL MES05(3,NOF) 
      GO TO 15
1481  CALL MES05(4,NOF) 
      GO TO 15
1482  CALL MES05(5,NOF) 
      GO TO 15
1483  CALL MES05(6,NOF) 
      GO TO 15
1485  CALL MES05(12,NOF)
      GO TO 15
1486  CALL MES05(13,NOF)
      GO TO 15
1487  CALL MES05(14,NOF)
      GO TO 15
1488  CALL MES05(11,NOF)
      GO TO 15
1489  CALL MES05(15,NOF)
      GO TO 15
C-----"TOO MANY CHARACTERS HAVE BEEN SPECIFIED FOR THIS CARD" 
1490  CALL MES05(16,1)
      GO TO 15
C-----"IMAGE CARD INPUT--USER WRITTEN MODULE REQUIRED"
1491  CALL MES05(17,NOF)
      GO TO 15
C-----"IMAGE CARD INPUT--STRING LENGTH MUST BE EVEN"
1492  CALL MES05(18,NOF)
      GO TO 15
C-----"IMAGE CARD INPUT--'R' IS ILLEGAL"
1493  CALL MES05(19,NOF)
      GO TO 15
C-----"IMAGE CARD INPUT--MASK NOT ALLOWED"
1494  CALL MES05(20,NOF)
      GO TO 15
C-----"IMAGE CARD INPUT--LIMIT CHECK NOT ALLOWED" 
1495  CALL MES05(21,NOF)
      GO TO 15
C-----"IMAGE CARD INPUT--NOT ALLOWED" 
1496  CALL MES05(22,NOF)
      GO TO 15
C-----"NOT ALLOWED" 
1497  CALL MES05(23,NOF)
      GO TO 15
C-----"NOT ALLOWED WITH CARD READER INPUT"
1498  CALL MES05(24,NOF)
      GO TO 15
C 
C-----BEFORE CALLING NEXT SCREEN, VERIFY THAT IF INPUT IS FROM CARD,
C     THE MAX LENGTH OF THE CARD HAS NOT BEEN EXCEEDED. 
C 
1630  INDEX=0 
      IBYTES=0
C 
C*********************************************************************
C 
C  CALL DISPLAY INFORMATION SCREEN OR PASS TO THE NEXT QUESTION ? 
C 
C*********************************************************************
C 
C  DISPLAY SCREEN * 
C 
1515  I=IGET1(JFORM,(2+(IQST-1)*JBYTES))
      IF(I.NE.2HX ) GO TO 1099
      ISCRN=16
      GO TO 1002
C 
C  NEXT QUESTION
C 
1099  IQST=IQST+1 
      IF(IQST.GT.(IUMAX+IMMAX)) GO TO 1632
      ISCRN=11
      GO TO 1000
1632  ISCRN=17
      GO TO 1002
C 
C 
C*********************************************************************
C 
C 2645 SOFT KEYS 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 3005
      CALL MES05(7,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
      INDIC=-77 
      GO TO 17
3011  INDIC=0 
      ILST=0
      IF(ISCRN.NE.12) GO TO 3008
      IF(.NOT.ISBIT(ITT,1)) IMES=IHP20(NOF) 
      IF(ISBIT(ITT,1)) IMES=IHP21(NOF)
      IF((.NOT.ISBIT(ITT,0)).AND.(.NOT.ISBIT(ITT,1)).AND.(NOF.EQ.4))
     *   ILST=1 
      IF((ISBIT(ITT,1)).AND.(.NOT.ISBIT(ITT,0)).AND.(NOF.EQ.5)) ILST=1
      GO TO 3060
3008  IF(ISCRN.NE.13) GO TO 3009
      IF(.NOT.ISBIT(ITT,1)) IMES=IHP30(NOF) 
      IF(ISBIT(ITT,1)) IMES=IHP31(NOF)
      IF((.NOT.ISBIT(ITT,0)).AND.(.NOT.ISBIT(ITT,1)).AND.(NOF.EQ.3))
     *   ILST=1 
      IF((ISBIT(ITT,1)).AND.(.NOT.ISBIT(ITT,0)).AND.(NOF.EQ.4)) ILST=1
      GO TO 3060
3009  IF(.NOT.ISBIT(ITT,1)) IMES=IHP40(NOF) 
      IF(ISBIT(ITT,1)) IMES=IHP41(NOF)
      IF((ISBIT(ITT,1)).AND.(.NOT.ISBIT(ITT,0)).AND.(NOF.EQ.4)) ILST=1
3060  CALL HLP05(IMES,NOF,ILST) 
      GO TO 15
C 
C  IFLG=8 MEANS LAST SCREEN 
C 
3010  IF(IFLG.NE.8) GO TO 3040
      IF(IGET1(JFORM,(5+(IQST-1)*JBYTES)).EQ.1HX) GO TO 3013
        ISCRN=11
        CALL EXEC(8,JNAM) 
3013  ISCRN=91
      CALL EXEC(8,KNAM) 
C 
C  CALL NEXT SCREEN 
C 
1000  CALL EXEC(8,JNAM) 
1002  CALL EXEC(8,KNAM) 
C 
C  ABORT PROGRAM
C 
3040  IF(.NOT.(OKABT(ILU))) GO TO 17
      INDIC=99
      CALL EXEC(8,LNAM) 
C 
C  END OF SEGMENT 
C 
      CALL TGP
C 
C 
      END 
      END$
                                                                                                