FTN4 PROGRAM TMPG5(5),92903-16457 REV.1913 790130 C C C NAME: TMPG5,ILPRS C SOURCE: &TMPG5 92903-18457 C BINARY: %TMPG5 92903-16457 C C PGMR: DANIEL POT/FRANCOIS GAULLIER HPG 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 * THIS PROGRAM HANDLES SCREENS # X & Y USING AN INTERC- * C * TIVE DIALOGUE ON A 2645/2648 TERMINAL. * C * DEFINTION OF INTERACTIVE LU (HP 307X TERMINALS) * C * AND T.U.S. (USER WRITTEN SUBROUTINE) * C * * C ************************************************************** C C STOP USED: 5000 - 5002 - 5003 C ---------- C C IJOB = 2 SCREEN HAS BEEN PRINT, READ AND ANALYSE C IJOB = 3 DO ALL T.U.S. DEFINITION INTO USER PARTITION C IJOB = 0 DO EVERYTHING (LU INT. & AUX. AND T.U.S.) DEFINITION C C IEND = 0 : CURRENT INTERACTIVE PROCESS SHOULD BE CONTINUED C IEND = 1 : END OF INTERACTIVE PROCESS C IEND = 2 : ABORT TMPGN PROGRAM C IEND = 3 : PREVIOUS FAMILY SCREEN C C C-----LABEL COMMON # 1 GENERAL INFORMATION C COMMON /TMGC1/LU,LUPRT,LUOUT,ISYTP,ISCRN,IOFST,IEND,IJOB C C-----LABEL COMMON # 2 FLAGS C COMMON /TMGC2/IDUM0(31),IMOTR C C-----LABEL COMMON # 3 BUFFER AREA C COMMON /TMGC3/IDUM1(7),NCRTH(2100),IEXFL,IPTR C C-----LABEL COMMON # 4 I/O BUFFER (MAX SIZE = 100 WORDS) C COMMON /TMGC4/IOBUF C C LOGICAL GETBK,TMPRS LOGICAL IEXFL C C CURRENT JOB ON PROCESS C IF(IJOB.EQ.2) GOTO 90 IF(IJOB.EQ.3) GOTO 40 IF(IJOB.NE.0) STOP 5000 C C INTERACTIVE LOGICAL UNIT (HP 3070 DEVICE) C 10 ISCRN=1 CALL ILPRS(IOFST,IEND) IF(IEND.EQ.3) GOTO 65 IF(IEND.NE.1) GOTO 60 IOFST=0 C IF(IMOTR .NE. 1) GOTO 75 C C TMS-SUBROUTINES AND LIBRARIES (USER WRITTEN MODULES) C 40 ISCRN=3 IF( TMPRS(IOFST,LENGH,4,IEND,IFLD) ) GOTO 85 IF(IEND.EQ.1) GOTO 100 IF(IEND.NE.3) GOTO 60 C-----PREVIOUS SCREEN OK ? IF(IMOTR .NE. 1) GOTO 65 IOFST=0 GOTO 10 C C RETURN FROM ILPRS, TMPRS C 60 IF(IEND.EQ.0) GOTO 70 IF(IEND.EQ.2.OR.IEND.EQ.1) GOTO 80 STOP 5002 C C PREVIOUS SCREEN NEED TO ACTUALLY CHANGE THE SCREEN, C IF NOT ALLOWED, RE-ISSUE THE SAME ONE AND PRINT ERROR ! C 65 IEND=-33 C C INTERACTIVE PROCESS, PRINT THE SCREEN. C 70 CALL TMGSC(3,ISCRN,IOFST,IEND,2) C C END OF INTERACTIVE PROCESS, ABORT OR PARTIAL PROCESS C 75 IEND=1 80 CALL TMGSC(0,0,0,IEND,IJOB) C C ERROR PROCESSING: C 84 IEND=-IEND IFLD=1 85 CALL TMPGE(IEND,IFLD) C C SET UP INPUT LENGTH C 90 LENGH=0 IF(IEND .LT. 0) GOTO 84 IF(ISCRN.EQ.1) LENGH=63 IF(ISCRN.EQ.3) LENGH=140 IF(LENGH.EQ.0) STOP 5003 C C WAIT FOR INPUT FROM THE 2645 C 95 IF(GETBK(LU,IOBUF,LENGH)) GOTO 70 C C DISPATCH TO ANALYSIS CODE C IF(ISCRN .EQ. 1) GOTO 10 IF(ISCRN .EQ. 3) GOTO 40 C C INTERACTIVE PROCESS: CONTINUED WITH IMAGE & MAIN DEFINITION C 100 IF(IMOTR .NE. 1) GOTO 75 ISCRN=0 IOFST=0 IJOB=0 CALL TMGSC(4,ISCRN,IOFST,IEND,IJOB) C C DUMMY CALL TO MAIN !! C CALL TMPGN END SUBROUTINE ILPRS(IOFST,IEND),92903-16457 REV.1913 790130 C C C *************************************************** C * * C * THIS SUBROUTINE PROCESS SCREEN NUMBER 1 CONTENT * C * BEFORE TRANLATING IT IN TABLE "NCRTH". * C * * C * IF IOFST=0 : INITIALISATION TAKE PLACE * C * * C * IF IOFST#0 : PENDING SCREEN IS PROCESSED AND A * C * MESSAGE CAN BE SENT TO POINT AT AN ERROR. * C * * C * WHEN A SCREEN IS RECEIVED, UNCOMPLETELY FILLED, * C * AND IS GOOD, IT IS CONSIDERED AS THE LAST ONE * C * OF THE SCREEN NUMBER ONE FAMILY AND NCRTH(2000) * C * IS DECONTRACTED IN THE STANDARD FORMAT INTO THE * C * NCRTH(45) INITIAL TABLE AND IEND IS SET TO "1". * C * IF ABORT KEY WAS DEPRESSED IEND IS SET TO "2". * C * IF PREVIOUS SCREEN KEY WAS USED, TO GO BACK * C * BEFORE THIS SCREEN, IEND IS SET TO "3" * C * * C *************************************************** C C C-----LABEL COMMON # 1 TERMINAL LU C COMMON /TMGC1/LU C C-----LABEL COMMON # 3 BUFFER AREA C COMMON /TMGC3/IREFC,ILUGH,INTMS,ILPRG,IDECL,ILGMX,NBPRO . ,NCRTH(1) C C-----LABEL COMMON # 4 I/O BUFFER ( MAX SIZE = 100 WORDS ) C COMMON /TMGC4/IOBUF C DIMENSION NAME(3),IBUFR(192),IPOB(3) LOGICAL JPAR,ISBTW,OKABT,GETBK C C ISZSC=48 ILONG=64 IF(IOFST.NE.0) GOTO 30 C C FIRST TIME ILPRS IS CALLED C IEND=0 CALL CTILU IOFST=IDECL RETURN C C INTERACTIVE LU# PHASE IS PROCESSING C 30 IEND=0 CALL NUL(IBUFR,24) IFIN=0 IPRVS=0 C C ACQUISITION C DO 90 I=1,(ISZSC/2)-2,3 J=I IF(JPAR(IOBUF,ILONG,I,IPOB,2,IFLG,IBUFR(I))) GOTO 200 IFLG1=IFLG IBUFR(I+1)=0 IF(JPAR(IOBUF,ILONG,I+1,IPOB,2,IFLG,IBUFR(I+1))) GOTO 200 IFLG2=IFLG IBUFR(I+2)=2H IF(JPAR(IOBUF,ILONG,I+2,IBUFR(I+2),1,IFLG,IPOB)) GOTO 200 IFLG3=IFLG IF(IFLG1+IFLG2+IFLG3.NE.0) GOTO 35 C C CHECK FOR PREVIOUS SCREEN OR ABORT COMMAND C IBUFR(I)=0 IBUFR(I+1)=0 IBUFR(I+2)=2H IF(J.NE.(ISZSC/2)-2) J=J+3 DO 33 II=J,(ISZSC/2)-2,3 IF(JPAR(IOBUF,ILONG,II,IPOB,2,IFLG,IBUFR(II))) GOTO 34 IF(JPAR(IOBUF,ILONG,II+1,IPOB,2,IFLG,IBUFR(II+1))) GOTO 34 IBUFR(II+2)=2H IF(JPAR(IOBUF,ILONG,II+2,IBUFR(II+2),1,IFLG,IPOB)) GOTO 34 33 CONTINUE IF(I.NE.1.OR.IOFST.NE.IDECL) GOTO 3033 J=1 CALL TMPGE(43,J) GOTO 110 3033 IFIN=1 CALL NUL(IBUFR(J),24-J) CALL MOVEW(IBUFR,NCRTH((IOFST+2)/2),ISZSC/2) IOFST=IOFST+ISZSC GOTO 92 C C ABORT OR PREVIOUS SCREEN ( WITH INPUT ) C 34 IPRVS=0 IF(IFLG.NE.8) GOTO 330 CALL NUL(IBUFR(J),24-J) IPRVS=1 GOTO 92 C C CHECK DEFINED LU, 1