FTN4 SUBROUTINE STORB, 92080-16550 REV.2026 800331 C C C NAME: STORB STORAGE MODULE # 2 C SOURCE: &STORB 92080-18550 C BINARY: %STORB 92080-16550 THIS IS %STORB C C PMGR: FRANCOIS GAULLIER C C C ************************************************************** C * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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 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: STORB IS A T.U.S. OF THE TMP C (TRANSACTION MONITOR PROGRAM) C C C STORB = 2ND STORAGE MODULE (FILE ACCESS & USER STO.) C C C TMPER 'INTERNAL ERROR' REPORTED BY STORB: C =========================================== C C FORMAT: INTERNAL ERROR 6XX** NNNN C C C 601 'TDCBR' FAIL TO RESTORE THE DCB C NNN = 'TDCBR' STATUS C 602 'TDCBS' FAIL TO SAVE THE DCB C NNN = 'TDCBS' STATUS C 605 'LURQ' FIAL C NNN = 'LURQ' STATUS C 610 'TSMG' FAIL TO CLOSE THE TS C NNN = 'TSMG' STATUS C 620 FMP ERROR C NNN = FMP ERROR # C C********************************************** F. GAULLIER (HPG) *** C C C DIMENSION IBUF(512),IDCB(144),IREG(2) INTEGER DATA,AREG,BREG,TSMG(3),FORMN,SQUAL,JNDEX,FMGST EQUIVALENCE (REG,IREG(1),AREG),(BREG,IREG(2)) C *** LOGICAL FUNCTION LOGICAL WRITF,POST,TDCBS,TDCBR,ISBIT C C*** TRUE COMMON COMMON ICOM00(5) C C*** 1ST COMMON BLOCK C COMMON LU,ICTLB,ITYP,IST,ITL,M,LUTERM,ITSN . ,ITSOPT,ITIMPT,NPAD(136) C C*** 2ND COMMON BLOCK C COMMON NUQ,NMQ,J,INDEXM,K,LUQ,LMQ,DATA(512) C C*** 3RD COMMON BLOCK C COMMON FORMN,SQUAL,JNDEX,FMGST C C*** LAST COMMON WORD C COMMON ICOMEN C DATA TSMG/2HTS,2HMG,2H / C C-----DEFINE LOCAL FUNCTION C IRS12(M0)=IAND(IALF2(M0),360B)/16 IRS8(M2)=IAND(IALF2(M2),377B) C C------DEFINE COMMON BLOCK STRUCTURE, C CALL TMDFN(ICOM00,LU,NUQ,FORMN,ICOMEN) C IF(LU.NE.3 .OR. ITYP.NE.7905) RETURN C M=K+9 ITIMPT=K+3 LUTERM=DATA(K) ITSOPT=DATA(K+1) ITSN=J C CALL LOGEV(ICOM00(2),LUTERM,2000,0,ITSN,DATA(ITIMPT)) C 30 K=IRS12(DATA(M))+1 M=M+1 GOTO (90,40,45,40,90),K C-----WRITE ON DISC FILE 40 IER1=601 IF( TDCBR(DATA(M),IDCB,IER2) ) GOTO 720 GOTO 50 C-----IF LU, DO LULOCK, CHECK TAPE STATUS AND BACKSPACE ONE EOF 45 LUSTR=DATA(M) AREG=LURQ(100001B,LUSTR,1) IF(AREG .EQ. 0) GOTO 47 CALL TMPZ(50) GOTO 45 47 REG=EXEC(3,600B+LUSTR) ASSIGN 78 TO IERTN CALL EXEC(13,LUSTR,IEQT5) IF( IAND(IEQT5,77B) .NE. 0 ) GOTO 701 IF( IAND(IEQT5,300B) .EQ. 0 ) GOTO 701 REG=EXEC(3,1400B+LUSTR) C C-----FORMAT THE BUFFER FOR THE STORAGE C 50 CALL MOVEW(DATA,IBUF,LUQ) J=0 570 IF(J .EQ. INDEXM) GOTO 70 J=J+1 CALL MOVEW(DATA(LUQ+1+(J-1)*LMQ),IBUF(LUQ+1),LMQ) C-----IF STORAGE ON LU, USE EXEC CALL INSTEAD OF FMP CALL IF( K .EQ. 3 ) GOTO 60 ASSIGN 80 TO IERTN IF( WRITF(IDCB,IER2,IBUF,LUQ+LMQ) ) GOTO 700 GOTO 66 60 REG=EXEC(2,DATA(M),IBUF,LUQ+LMQ) C-----------CHECK FOR DEVICE FUL ???????????? !!!!!!!!!!!!!!!!! 66 IF(MOD(J,3) .NE. 0) GOTO 570 CALL TMPZ GOTO 570 C C-----THE DATA BUFFER IS EXAUSTED, GOTO NEXT STORAGE MEDIA C 70 IF( K .EQ. 3 ) GOTO 75 ASSIGN 80 TO IERTN IF( POST(IDCB,IER2) ) GOTO 700 IER1=602 IF( TDCBS(DATA(M),IDCB,IER2) ) GOTO 720 GOTO 80 C-----IF LU, WRITE EOF AND UNLOCK THE LU 75 REG=EXEC(3,100B+DATA(M)) C----------CHECK FOR DEVICE FULL ?????????????? !!!!!!!!!!!!!!! 78 CALL LURQ(0,DATA(M),1) 80 M=M+5 GOTO 30 C C-----CLOSE THE TS IF STORAGE CODE = 1 WAS USED C 90 IF( .NOT. ISBIT(ITSOPT,14) ) GOTO 95 CALL TMCBE(0,FORMN) FORMN=ITSN SQUAL=13 CALL TMSUB(TSMG) IF(FMGST .NE. 0) GOTO 715 CALL TMCBD(FORMN) C C-----STORAGE FROM A USER WRITTEN SUBROUTINE C 95 IF(K .NE. 5) GOTO 999 DATA(M)=IOR(DATA(M),100000B) CALL TMSUB(DATA(M)) IF(IST .NE. 0) CALL TMPER(0,53,ITSN,LUTERM,DATA(M),IST) M=M+3 GOTO 30 C C FATAL ERROR PROCESSING C ---------------------- C C C-----CR FULL WHEN WRITTING A DISC FILE ! C (IF LOGGING IS USED, WARNING 26 ONLY) 700 IER1=620 IF( TDCBS(DATA(M),IDCB) ) GOTO 720 IERNB=66 IF(IER2 .NE. -6) GOTO 720 GOTO 702 C-----THE MAG. TAPE IS NOT POSITIONNED WERE IT MUST BE ! C (IF LOGGING IS USED, WARNING 28 ONLY) 701 IERNB=68 702 IF( ISBIT(ITSOPT,2) ) IERNB=IERNB-40 CALL TMPER(IERTN,IERNB,ITSN,LUTERM,DATA(M),DATA(M+3)) C-----ERROR ON LURQ 710 CONTINUE 713 IER1=605 GOTO 720 C-----ERROR IN TSMG 715 IER1=610 IER2=FMGST C-----ERROR DURING TMS-FMP DCB SAVE ROUTINE 720 CALL TMPER(0,99,ITSN,LUTERM,IER1,IER2) C C EXIT C 999 CONTINUE CALL LOGEV(ICOM00(2),LUTERM,2010,0,ITSN,DATA(ITIMPT)) RETURN END END$