FTN4
      PROGRAM TMPG1(5),92903-16453 REV.1913  790212 
C 
C 
C     NAME: TMPG1 
C     SOURCE: &TMPG1    92903-18453 
C     BINARY %TMPG1     92903-16453 
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         *  THIS PROGRAM ALLOWS USER EITHER TO    *
C         *  LIST ALL FILES OF AN APPLICATION      *
C         *  OR TO LOAD ALL PROGRAMS ASSOCIATED    *
C         *  TO THIS APPLICATION.                  *
C         *                                        *
C         *   IF P1 = 0  FUNCTION LIST             *
C         *   IF P1 = 1  FUNCTION LOAD             *
C         ******************************************
C 
C 
C     STOP USED:  1000
C     ----------
C 
C     NOTE: WORKS ON PACKED FORM OF NCRTH 
C    ------ 
C 
C 
C-----LABEL COMMON # 1  GENERAL INFORMATION 
C 
      COMMON /TMGC1/LU,LUPRT,LUOUT,ISYTP,IRQ(3),IJOB
C 
C-----LABEL COMMON # 3  BUFFER AREA 
C 
      COMMON /TMGC3/IDUM0(7),NCRTH(1) 
C 
C 
      DIMENSION IBUF(350),NUMB(40),ILIS(20),IHEAD(40) 
C 
      LOGICAL PRINT 
C 
      EQUIVALENCE (NCRT5,NCRTH(5))
C 
      DATA ILIS/15530B,15555B,15446B,2Hk0,2HB ,15542B,15510B,15512B 
     .,2H  ,15446B,2HdC,2HLI,2HST,2HIN,2HG ,15446B,2Hd@,6412B 
     .,5012B,15554B/
      DATA IHEAD/2H P,2HAG,2HE ,2H00,2H01,2H  ,2H D,2HAT,2HAC 
     .          ,2HAP,2H/1,2H00,2H0 ,2H- ,2HHP,2H92,2H90,2H3A 
     .          ,2H R,2HEV,2H 1,2H91,2H3 ,17*2H  /
      DATA ICH/83/,LINPAG/60/,IUPT0/3/
C 
      IF(IRQ.EQ.1)  GOTO 2000 
      IF(IRQ.NE.0)  STOP 1000 
C 
C     ********************* 
C     * LISTING OPERATION * 
C     ********************* 
C 
C 
      CALL EXEC(2,LU,ILIS,20) 
C 
C-----IF LIST DEVICE IS NOT CRT, LOCK IT
C 
      CALL LCKLL(LU,LUPRT,500)
      CALL FTIME(IHEAD(25)) 
      IPAGE=0 
      ASSIGN 320 TO IRTN
      GOTO 900
320   K=NCRTH(11)+NCRTH(9)
      I=2HP 
      IF(NCRTH(6) .NE. 2HP1)  I=2HPD
      WRITE(LUPRT,100)I,NCRTH(8),K,(NCRTH(I),I=9,10)
      WRITE(LUPRT,240)
      IF(NCRTH(13) .EQ. 0) GOTO 350 
      IF(NCRTH(13) .LT. 256)  GOTO 340
      WRITE(LUPRT,132)(NCRTH(I),I=13,17)
      GOTO 360
340   WRITE(LUPRT,130)NCRTH(13) 
      GOTO 360
350   WRITE(LUPRT,135)
360   LINB=LINB+7 
      IF(NCRTH(26) .EQ. 0)  GOTO 380
      J=27
      DO 372 I=1,NCRTH(26)
      WRITE(LUPRT,140)I,(NCRTH(K),K=J,J+6)
      LINB=LINB+2 
372   J=J+15
      GOTO 390
380   WRITE(LUPRT,270)
      LINB=LINB+2 
390   WRITE(LUPRT,240)
      LINB=LINB+1 
      J=(NCRTH(3)-NCRTH(2))/2 
      WRITE(LUPRT,160) J
      LINB=LINB+2 
      J=J/7 
      K=NCRTH(2)
      IF(J.EQ.0) GOTO 401 
C 
C     PRINT 3070 LU'S 
C 
408   DO 400 I=1,J
      WRITE(LUPRT,170)(NCRTH(L),L=K,K+12,2) 
      LINB=LINB+2 
      K=K+14
400   CONTINUE
      IF(K.EQ.NCRTH(3)) GOTO 402
401   WRITE(LUPRT,170)(NCRTH(L),L=K,(NCRTH(3)-2),2) 
      LINB=LINB+2 
402   J=(NCRTH(4)-NCRTH(3))/2 
      WRITE(LUPRT,240)
      LINB=LINB+1 
C 
C     USER'S MODULES PROGRAMS 
C 
      CALL BLANC(IBUF,350)
      CALL PUTCA(IBUF,1H&,3)
      CALL MOVCA(NCRTH,9,IBUF,4,4)
      CALL PUTCA(IBUF,1H%,13) 
      CALL MOVCA(NCRTH,9,IBUF,14,4) 
      CALL PUTCA(IBUF,1H>,23) 
      CALL MOVCA(NCRTH,9,IBUF,24,4) 
      IBUF(17)=2H%T 
      CALL MOVEW(NCRT5,IBUF(18),2)
      IBUF(22)=2H>T 
      CALL MOVEW(NCRT5,IBUF(23),2)
      CALL MOVEW(IBUF(17),IBUF(27),10)
      CALL PUTCA(IBUF,1HL,54) 
      CALL PUTCA(IBUF,1HL,64) 
      ICH=73
C-----SET UP IMAGE MODULE IF ANY
      IF(NCRTH(26) .EQ. 0)  GOTO 630
      J=53
      DO 620 I=1,NCRTH(26)
      CALL PUTCA(IBUF,1H%,ICH)
      CALL PUTCA(IBUF,1H>,ICH+10) 
      CALL MOVCA(NCRTH,J,IBUF,ICH+1,5)
      CALL MOVCA(NCRTH,J,IBUF,ICH+11,5) 
      ICH=ICH+20
620   J=J+30
630   IUPT=0
      ITUS=0
      J=NCRTH(4)
C 
C-----LOOP ON EACH USER PARTITION 
C 
640   I=NCRTH(J)
      K=J 
      PRINT = IUPT .GE. IUPT0 
      J=((I-J-3)/18)+1
      IF( I-K-3 .EQ. 18*(J-1) ) J=J-1 
      IF( .NOT. PRINT )  GOTO 650 
645   LINB=LINB+J+4 
      ASSIGN 645 TO IRTN
      IF( LINB .GE. LINPAG )  GOTO 900
      WRITE(LUPRT,240)
C-----WRITE PROGRAM NUMBER, SWAP OPTION ... 
      M=IUPT-IUPT0+1
      WRITE(LUPRT,200) M
C-----WRITE LOADER OPTION 
      WRITE(LUPRT,240)
650   CALL PUTCA(IBUF,1H%,20*IUPT+ICH)
      CALL PUTCA(IBUF,1H>,20*IUPT+ICH+10) 
      CALL MOVCA(NCRTH,9,IBUF,20*IUPT+ICH+1,4)
      CALL MOVCA(NCRTH,9,IBUF,20*IUPT+ICH+11,4) 
      CALL PUTCA(IBUF,1HA+IUPT*256,20*IUPT+ICH+5) 
      CALL PUTCA(IBUF,1HA+IUPT*256,20*IUPT+ICH+15)
      CALL ISUPB(IBUF((20*IUPT+ICH+1)/2),3) 
      CALL ISUPB(IBUF((20*IUPT+ICH+11)/2),3)
      K=K+3 
      LINE=0
690   L=K 
      CALL BLAN(NUMB,1,79)
      M=(2*(L-(K-3))/3) 
695   CALL MOVEW(6H  LB: ,NUMB(M),3)
      IF(IAND(NCRTH(L),100000B).NE.0) GOTO 698
      ITUS=ITUS+1 
      NUMB(M+2)=2H -
      CALL JASC(ITUS,NUMB(M+1),-1,3)
698   NUMB(M+3)=IAND(NCRTH(L),77777B) 
      CALL MOVEW(NCRTH(L+1),NUMB(M+4),2)
      L=L+3 
      M=M+6 
      IF(L.EQ.I) GOTO 699 
      IF(L.NE.K+18) GOTO 695
699   IF( PRINT )  CALL EXEC(2,LUPRT,NUMB,38) 
      K=K+18
      LINE=LINE+1 
      IF(LINE.NE.J) GOTO 690
      J=I 
      IUPT=IUPT+1 
      IF(J .NE. NCRTH+1) GOTO 640 
C 
C-----PRINT  " NO USER MODULES "  IF  # OF PART. = 2
C 
      IF( IUPT .NE. IUPT0 )  GOTO 720 
      WRITE(LUPRT,250)
      LINB=LINB+2 
C 
C-----WRITE DIRECTORY (ALL FILES CREATED BY TMSGN)
C 
720   ASSIGN 720 TO IRTN
      K=1+(20*(IUPT+1)+ICH)/80
      LINB=LINB+5+K 
      IF( LINB .GE. LINPAG )  GOTO 900
      WRITE(LUPRT,230)
      J=1 
      DO 80 I=1,K 
      CALL EXEC(2,LUPRT,IBUF(J),39) 
80    J=J+40
C 
      CALL EXEC(3,1100B+LUPRT,-1) 
C 
C-----IF LIST DEVICE IS NOT CRT, UNLOCK THE LIST DEVICE 
C 
      IF(LU .NE. LUPRT)  CALL LURQ(0,LUPRT,1) 
      GO TO 3100
C 
C-----PRINT THE PAGE HEADER 
C 
900   IPAGE=IPAGE+1 
      CALL JASC(IPAGE,IHEAD,-7,4) 
      CALL EXEC(3,1100B+LUPRT,-1) 
      WRITE(LUPRT,110)IHEAD 
      LINB=4
      GOTO IRTN 
C 
C     FORMATS USED BY LISTG 
C 
110   FORMAT(40A2,2/, 
     .,5X"T R A N S A C T I O N   M O N I T O R   G E N E R A T O R"
     ."   L I S T" ,/)
100   FORMAT(/,3X,"TM"A2" IS GENERATED ON CARTRIDGE #"I6, 
     .2/,3X,"REQUIRES A MOTHER PARTITION OF"I4" K WORDS    (EMA=" 
     .I4,", MSEG="I3")")
120   FORMAT(/,3X,"NO USER'S MODULES")
130   FORMAT(/,3X,"LOGGING ON MAGNETIC TAPE LU :"I3)
132   FORMAT(/,3X,"LOGGING ON DISC FILE: "3A2," ON CARTRIDGE #"I6,
     ." SC ="I7)
135   FORMAT(/,3X,"NO LOGGING") 
140   FORMAT(/,3X,"DATA BASE #"I2", NAME: "3A2", LEVEL ACCESS WORD: "3A2, 
     .", SEC. CODE: "I6)
160   FORMAT(/,3X,"NUMBER OF DATA CAPTURE TERMINALS:  "I2)
170   FORMAT(/,3X,"LU :   "I2,6(7X,I2)) 
200   FORMAT(/,3X,"USER MODULES PROGRAM UNIT #: "I2,2X) 
220   FORMAT(3X,6(5A2,2X))
230   FORMAT(3/,3X"FILES CREATED BY TMPGN:",/)
240   FORMAT(5X)
250   FORMAT(/,3X,"NO USER MODULES.") 
270   FORMAT(/,3X,"NO DATA BASE") 
C 
C 
C 
C========================================================================== 
C 
C     ********************
C     *  LOAD OPERATION  *
C     ********************
C 
C 
2000  CALL TMGLD(IEND)
C-----IF LOAD OPERATION HAS FAILED, REPORT ERROR TO OPERATOR
      IF(IEND .LT. 0)  GOTO 3120
C 
C     LISTING OR LOADING PHASE IS FINISH, 
C     WRITE MESSAGE ON CRT IF NEEDED & EXIT 
C 
3100  IF(LU .NE. LUPRT) GOTO 3300 
      IEND=3
3120  CALL TMGSC(0,0,0,IEND,IJOB) 
C 
C-----ACKNOWLEDGMENT NOT NEEDED, TERMINATE TMPGN
C 
3300  CALL TMGSC(0,0,0,2) 
C 
C     DUMMY CALL TO MAIN  !!
C 
      CALL TMPGN
      END 
      END$
                                  