FTN4,L
      PROGRAM TXPM1(3,89),91711-16003  REV 1926  790421 
C 
C*********************************************************************
C 
C  DESCRIPTION: 
C  ------------ 
C 
C    THE PURPOSE OF THIS PROGRAM IS TO EXECUTE THE
C    MEMORY VERIFICATIONS PROGRAM "TXPM2" IN ALL
C    PARTITIONS, STARTING WITH THE FIRST PARTITION. 
C 
C 
C  OPERATING PROCEDURE: 
C  -------------------- 
C 
C    SCHEDULE THE PROGRAM "TXPM1" USING THE RUN COMMAND:
C 
C      :RU,TXPM1,LGLU,# PASSES
C 
C      WHERE LGLU     =  LU ON WHICH MESSAGES ARE LOGGED. 
C            # PASSES = NUMBER OF PASSES OF TEST PROGRAM. 
C 
C************************************************************************ 
C 
      DIMENSION ICMD(30),IPRAM(5),NAME(3),IERR(2),MSG1(15)
      DIMENSION MSG2(27),MSG3(14),MSG4(15),MSG5(23),MSG6(6) 
      EQUIVALENCE (IERR(2),ICMD)
      DATA MSG1 /2H  ,2HTX,2HPM,2H1 ,2H- ,2HME,2HMO,2HRY, 
     *           2H T,2HES,2HT ,2HRU,2HNN,2HIN,2HG /
      DATA MSG2 /2H  ,2HTX,2HPM,2H1 ,2H- ,2HME,2HMO,2HRY,2H T,
     *           2HES,2HT ,2HFI,2HNI,2HSH,2HED,2H  ,2H  ,2H##,
     *           2H P,2HAR,2HTI,2HTI,2HON,2HS ,2HTE,2HST,2HED/
      DATA MSG3 /2H  ,2HTX,2HPM,2H1 ,2H- ,2HME,2HMO,2HRY, 
     *           2H T,2HES,2HT ,2HER,2HRO,2HR!/ 
      DATA MSG4 /2H  ,2HTX,2HPM,2H1 ,2H- ,2HME,2HMO,2HRY, 
     *           2H T,2HES,2HT ,2HAB,2HOR,2HTE,2HD!/
      DATA MSG5 /2H  ,2HTX,2HPM,2H1 ,2H- ,2HAT,2HTE,
     *           2HMP,2HT ,2HTO,2H T,2HES,2HT ,2HNO,2HN-,2HEX,
     *           2HIS,2HTE,2HNT,2H M,2HEM,2HOR,2HY!/
      DATA MSG6 /2HAS,2H,T,2HXP,2HM2,2H, ,2H 0/ 
      DATA NAME /2HTX,2HPM,2H2 /
      DATA IERR /2H  ,2H  / 
C 
C***************** GET TERMINAL LOGICAL UNIT NO. ********************** 
C 
      CALL RMPAR(IPRAM) 
      LU=IPRAM(1) 
      IF (LU.LE.0) LU=LOGLU(LU) 
C 
C************************ SET UP LOOP **********************************
C 
      IF(IPRAM(2).LE.0) IPRAM(2)=1
C 
C***********************************************************************
C************** GET NUMBER OF GENERATED PARTITIONS ************** 
C 
      LAST = NPART(K) 
C 
C*******DO ONE LINE SPACE AND DISPLAY INFORMATION MESSAGE ******
C 
      CALL EXEC(3,LU+1100B,1) 
      CALL EXEC(2,LU,MSG1,15) 
      CALL EXEC(3,LU+1100B,1) 
C 
C************************ START TESTING ************************
C 
      IPASS = IPRAM(2)
      ILOOP = 0 
50    ITEST = 0 
      IPART = 1 
C 
C********************* GET PARTITION STATUS ********************* 
C 
100   CALL EXEC(25,IPART,IPAGE,ISIZE,ISTAT) 
C   SKIP UNDEFINED PARTITIONS 
      IF (ISIZE.EQ.-1)  GO TO 300 
C   SKIP MOTHER PARTITIONS
      IF (IAND(ISTAT,20000B).NE.0)  GO TO 300 
C 
C******************* UNASSIGN PROGRAM "TXPM2" ******************* 
C 
      DO 200  I = 1,6 
      ICMD(I) = MSG6(I) 
200   CONTINUE
      LENG = 12 
      MLENG = MESSS(ICMD,LENG)
      IF (MLENG.LT.0)  GO TO 400
C 
C***** ADJUST PROGRAM SIZE OF "TXPM2" TO FIT ANY PARTITION *****
C 
      ICMD(1) = 2HSZ
      ICMD(6) = 2H 2
      MLENG = MESSS(ICMD,LENG)
      IF (MLENG.LT.0)  GO TO 400
C 
C********** ASSIGN PROGRAM "TXPM2" TO PARTITION IPART **********
C 
      ICMD(1) = 2HAS
      ICMD(6) = KCVT(IPART) 
      MLENG = MESSS(ICMD,LENG)
      IF (MLENG.LT.0)  GO TO 400
C 
C****** INCREASE SIZE OF "TXPM2" TO MATCH PARTITION IPART ******
C 
      ICMD(1) = 2HSZ
      ICMD(6) = KCVT(ISIZE) 
      MLENG = MESSS(ICMD,LENG)
      IF (MLENG.LT.0)  GO TO 400
C***********************************************************************
C*********************** SCHEDULE "TXPM2" *********************** 
C 
      CALL EXEC(23,NAME)
      CALL RMPAR(IPRAM) 
      IF (IPRAM(1).EQ.100000B)  CALL EXEC(2,LU,MSG3,15) 
      IF (IAND(IPRAM(1),77777B).NE.0)  CALL EXEC(2,LU,MSG5,23)
C 
C********************* TEST ALL PARTITIONS *********************
C 
      ITEST = ITEST+1 
300   IF (IPART.GE.LAST)  GO TO 350 
      IPART = IPART+1 
      GO TO 100 
C 
C**************** COMPLETE ALL PASSES OF THE PROGRAM *****************
C 
350   ILOOP = ILOOP+1 
      IF(ILOOP.GE.IPASS) GOTO 500 
      GOTO 50 
C 
C******************** DISPLAY ERROR MESSAGE ********************
C 
400   CALL EXEC(2,LU,IERR,MLENG-2)
      CALL EXEC(2,LU,MSG4,15) 
      GO TO 600 
C 
C**************** DISPLAY TEST FINISHED MESSAGE ****************
C 
500   MSG2(18) = KCVT(ITEST)
      CALL EXEC(3,LU+1100B,1) 
      CALL EXEC(2,LU,MSG2,27) 
      CALL EXEC(3,LU+1100B,1) 
600   CALL EXEC(13,LU,ISTAT)
      IF (IAND(ISTAT,100000B).NE.0)  GO TO 600
      END 
      END$
                                                                                                                                                                                                                                        