FTN4 SUBROUTINE OFLPO, 92903-16580 REV.1913 790126 C C C NAME: OFLPO OFLPOGE MODULE # 1 C SOURCE: &OFLPO 92903-18580 C BINARY: %OFLPO 92903-16570 THIS IS %OFLPO C C PGMR: FRANCOIS GAULLIER 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 THIS PROGRAM IS A PART OF THE: C C DATA CAPTURE SOFTWARE C ( D A T A C A P ) C C IT USES FEATURES OF THE TERMINAL MONITOR SOFTWARE (TMS). C C THIS MODULE: OFLPO IS A T.U.S. OF THE TMP C (TRANSACTION MONITOR PROGRAM) C C C OFLPO = OFF LINE PRINT OUT MODULE. C C C C TMPER 'INTERNAL ERROR' REPORTED BY OFLPO: C =========================================== C C FORMAT: INTERNAL ERROR 7XX** NNNN C C C 703 'TSMG' RETURN A BAD STATUS (NNN IS THE STATUS) C C C INTEGER FORMN,SQUAL,JNDEX,FMGST,STATLN,STATE . ,STATPT,OBULN,OBUF,OUTDEV,INPDEV,OUTLEN,OUTBUF . ,TSMG(3),IEQUIV(3),TEMPA(64),MESA(13),PRTBUF(13) C LOGICAL ISBIT C COMMON ICOM00(5) C COMMON LU(19),IOMODL(3),IXXXX0(15),OUTDEV,INPDEV,IXXXX1(5) . ,OUTLEN,OUTBUF(40) C COMMON NUQ,NMQ,STATPT,INDEXM,OBULN,LUQ,LMQ,OBUF(250) C COMMON FORMN,SQUAL,JNDEX,FMGST,STATLN,STATE(80) . ,INPLEN,INPBUF(100) . ,MAXPO,I1,I2,I3,INDEX C COMMON ICOMEN C EQUIVALENCE (ITMTP,IEQUIV(1)),(ITMLN,IEQUIV(2)),(IBUPT,IEQUIV(3)) D EQUIVALENCE (LUOXXX,ICOM00) C DATA TSMG/2HTS,2HMG,2H / DATA MESA/20015B,10*2H==,2*6440B/ DATA PRTBUF/2*20015B,2H**,2H**,2H* ,2HT.,2H ,2H ,2H ,2H * .,2H**,2H**,6440B/ C ITML(M0)=IAND(INPBUF(M0),7760B)/20B ITMT(M1)=IAND(INPBUF(M1),17B) IPT(M2)=IAND(INPBUF(M2+1),7777B) C C CALL TMDFN(ICOM00,LU,NUQ,FORMN,ICOMEN) C C-----INIT VARIABLES C INDEX=1 SQUAL=4 C C-----SET UP VARIABLE FOR I/O MODULE, AND PRINT THE FIRST "============" C OUTDEV=2 INPLEN=0 50 CALL MOVEW(MESA,OUTBUF,12) OUTLEN=22 CALL TMSUB(IOMODL) C C-----GET OFF LINE PRINT-OUT STATE VECTOR C JNDEX=0 I1=3 I2=2 C 100 JNDEX=JNDEX+1 CALL TMSUB(TSMG) IF(FMGST.NE.0) CALL TMPER(0,99,FORMN,LU,703,FMGST) K=I2-I1+1 CALL MOVEW(INPBUF(I1),INPBUF,K) I1=K+1 I2=2 C-----IF FIRST TIME, SAVE THE NUMBER OF PRINT-OUT IF(JNDEX .NE. 1) GOTO 200 MAXPO=STATE(2) I2=4 C C-----PRINT HEADER C CALL MOVEW(PRTBUF,OUTBUF,13) CALL CNUMD(FORMN,OUTBUF(7)) CALL BLANC(OUTBUF(14),20) OUTBUF(18)=IASC(LU) OUTBUF(20)=20015B OUTBUF(30)=6440B OUTLEN=60 C-----IF DATE & TIME ARE SELECTED IN THE TS, PRINT THEM I=IAND(IALF2(STATE(3)),377B) IF(I.NE.0) CALL MOVEW(OBUF(I),OUTBUF(22),3) I=IAND(STATE(3),377B) IF(I.EQ.0) GOTO 180 OUTBUF(27)=OBUF(I) OUTBUF(28)=2H: CALL MOVCA(OBUF(I+1),1,OUTBUF(28),2,2) 180 CALL TMSUB(IOMODL) C C-----PROCESS THE STATE VECTOR, SAVE IT INTO 'INPBUF' C 200 CALL MOVEW(STATE(I2),INPBUF(I1),STATLN) I2=STATLN+I1-I2 I1=1 C##################################################################### D WRITE(LUOXXX,8766)MAXPO,STATLN,I2,(INPBUF(I),I=I1,I2) D8766 FORMAT(" /OFLPO: ",I6" PRINTS, STATLN="I3", I2="I3, D .", STATE VECTOR:",12(/,10@7)) C##################################################################### C C-----PRINT 3 LINES AT A TIME C 250 OUTLEN=1 CALL BLANC(OUTBUF,40) I3=1 275 K=I2-I1+1 IF( ISBIT(INPBUF(I1),15) ) GOTO 300 C-----ECHO OF A VALUE ON THE PRINTER IF(K .LT. 2) GOTO 500 ITMTP=ITMT(I1) ITMLN=ITML(I1) IBUPT=IPT(I1) IF(IBUPT .GT. LUQ) IBUPT=IBUPT+(INDEX-1)*LMQ CALL BLANC(TEMPA,20) CALL CNVTO(ITMTP,OBUF(IBUPT),TEMPA,L) CALL JUSTF(TEMPA,1,20,0) L=20 CALL MOVCA(TEMPA,1,OUTBUF,OUTLEN,L) I1=I1+2 GOTO 350 C-----PRINT THE TITLE 300 L=ITML(I1) IF(K .LT. 1+(L+1)/2) GOTO 500 CALL MOVCA(INPBUF(I1+1),1,OUTBUF,OUTLEN,L) I1=I1+1+(L+1)/2 C-----STORE A CR, AND CHECK IF LAST PRINT 350 OUTLEN=OUTLEN+L CALL PUTCA(OUTBUF,6400B,OUTLEN) OUTLEN=OUTLEN+1 MAXPO=MAXPO-1 IF(MAXPO .LE. 0) GOTO 500 I3=I3+1 IF(I3 .LE. 3) GOTO 275 C C-----EXECUTE THE PRINT C 500 OUTLEN=OUTLEN-1 IF(OUTLEN .NE. 0) CALL TMSUB(IOMODL) IF(MAXPO .LE. 0) GOTO 800 IF(I3 .GT. 3) GOTO 250 GOTO 100 C C-----IF MORE THAN ONE LINE OF M-QUESTION, RESTART THE PRINT-OUT C 800 IF(INDEX .GE. INDEXM) GOTO 810 INDEX=INDEX+1 GOTO 50 C C-----THE PRINTOUT IS FINISHED C 810 CALL MOVEW(MESA,OUTBUF,13) OUTLEN=26 CALL TMSUB(IOMODL) RETURN END END$