FTN4,L,Q C C C DATE: SEPTEMBER 10,1979 C NAME: TXDSC C SOURCE: 02145-18013 C RELOC: 02145-16009 C PGMR: D.E.B. C C******************************************************************** C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS C RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, C REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE C WITHOUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. C******************************************************************** C SUBROUTINE TXDSC(LU,ERR,VALUS), 02145-1X013 REV.2001 800206 C DISC TEST SUBROUTINE. C OPENS A TYPE 8 FILE NAMED *TEST* ON LU, WRITES A RECORD TO IT, C READS THE RECORD BACK, VERIFIES IT AND PURGES THE FILE C LU MUST BE A DISC LU C C ERR RETURNS WITH AN ERROR NUMBER INDICATING THE TYPE OF FAILURE C ERR=0 NO ERROR C ERR=1 CREATE ERROR C ERR=2 WRITE ERROR C ERR=3 READ ERROR C ERR > 10 PURGE ERROR AND ERR-10 ERROR. IE IF ERROR = 12 THEN C THERE WAS A PURGE ERROR (10) AND A WRITE ERROR (2) [10+2=12] C C RESULTS ARE LOGGED IN THE BUFFER VALUS IN THE FORMAT OF THE FTEST LOG C BUFFER C C THIS SUBROUTINE IS CALLED BY FTEST, THE L-SERIES FUNCTIONAL C TEST PROGRAM IMPLICIT INTEGER(A-Z) INTEGER BUFR(10) INTEGER IDCB(144) INTEGER VALUS(64,8) INTEGER BUFW(10) INTEGER BR(40) INTEGER DSIZE(2) INTEGER NAME(3) INTEGER STARS(12),LUNUM(3) DATA BUFW/2HAB,2HCD,2HEF,2HGH,2HIJ,2HKL,2HMN,2HOP,2HQR,2HST/ C C SET THE RESULT TO FAIL, CHANGE IF ALL TESTS ARE PASSED C VALUS(LU,2)=5 ERR=0 DSIZE(1)=0 DSIZE(2)=8 C C CREATE A SCRATCH FILE ON SPECIFIED LU, LOG ERRORS C CALL CRETS(IDCB,IERR,NUM,NAME,DSIZE,8,0,0-LU) IF(IERR.EQ.-32) 30,40 30 ERR=7 VALUS(LU,2)=9 GOTO 600 C 40 IF(IERR.LT.0) 50,100 50 ERR=1 GOTO 600 C C STORE THE CURRENT FILE LOCATION THEN WRITE TEST BUFFER TO FILE, LOG ERRORS C 100 CALL LOCF(IDCB,IERR,IREC,ERB,IOFF) CALL WRITF(IDCB,IERR,BUFW,10) IF(IERR.LT.0) 150,200 150 ERR=2 GOTO 500 C C RESTORE FILE LOCATION AND READ BUFFER FROM FILE, LOG ERRORS C 200 CALL APOSN(IDCB,IERR,IREC,ERB,IOFF) CALL READF(IDCB,IERR,BUFR,10) IF(IERR.LT.0) 250,300 250 ERR=3 GOTO 500 C C VERIFY BUFFER WORD BY WORD, LOG ERRORS C 300 DO 320 I=1,10 IF(BUFR(I).EQ.BUFW(I)) 320,330 320 CONTINUE GOTO 500 C 330 ERR=3 C C PURGE FILE, LOG ERRORS C 500 CALL PURGE(IDCB,IERR,NAME,0,0-LU) IF(IERR.LT.0) 550,600 550 ERR=ERR+10 C C IF NO ERRORS THEN LOG A NO ERROR CONDITION C 600 IF(ERR.EQ.0) 700,900 700 VALUS(LU,2)=3 C 900 RETURN END