C *************** C MODULE NAME: DBIDBH C C AUTHOR: JW DRUMMOND C C DATE: OCT 15 1976 C C MODULE FUNCTION: C HANDLES THE COMMUNICATION INTERFACE BETWEEN C THE APPLICATION PROGRAM AND THE DATA BASE HANDLER C ENSURING THE CALLING TASK IS NOT CHECKPOINTED C WHILE IT WAITS FOR THE DATA BASE HANDLER TO PERFORM C THE REQUESTED FUNCTION C C C CALLING SEQUENCE: C C CALL DBIDBH C C ARG1 = DBFCB C C *************** SUBROUTINE DBIDBH(DBFCB) INCLUDE '[230,100]COMMON.FTN/NOLIST' INCLUDE '[230,100]DBFCB.FTN/NOLIST' INCLUDE '[230,100]COMEQUIV.FTN/NOLIST' COMMON/CNTCOM/TTLRDS,TTLWTS INTEGER*4 TTLRDS INTEGER*4 TTLWTS ! TOTAL WRITES SO FAR INTEGER*2 REPLY(5),FCBADR INTEGER*2 IRDS ,IWTS EQUIVALENCE (REPLY(3),FCBADR) EQUIVALENCE (REPLY(4),IRDS) EQUIVALENCE (REPLY(5),IWTS) C INTEGER*2 DBFCB(FCBLEN) C CALL DISCKP !DISABLE CHECKPOINTING C I=IGETAD(DBFCB) CALL VSNDRR(DBHNAM,,I,,1,,,ERR) !SEND MESSAGE TO HANDLER IF(ERR.LT.1) GO TO 77 !MESSAGE NOT SENT C FCBADR=0 IRDS=0 IWTS=0 C C C NOTE CHANGE ",1,,," TO ",3,,," TO GET COUNT OF RDS AND WTS IN C THIS CALL. MAKE THIS CHANGE IN DBHTRF AS WELL. THIS WILL REQUIRE C TASK BUILDING ALL APPLICATION PGMS WITH NEW DBIDBH AND TERMN8 C C 20 CALL VRECSP(,REPLY,3,,,ERR) !CHECK FOR REPLY IF (REPLY(3).EQ.-1)CALL CRASH(DBFCB(FCBTSK),DBFCB(FCBTIN)) IF(FCBADR.EQ.0) GO TO 20 IF(ERR.GE.1) GO TO 25 !REPLY RECEIVED IF(ERR.EQ.-2) GO TO 79 !RECEIVE NOT QUEUED GO TO 20 C 77 CALL ERRMSG(29,IGETAD('SEND ')) DBFCB(FCBRCD)=29 GO TO 25 79 CALL ERRMSG(29,IGETAD('RECEIVE')) DBFCB(FCBRCD)=29 C C 25 CALL ENACKP !ENABLE CHECKPOINTING TTLRDS=TTLRDS+IRDS TTLWTS=TTLWTS+IWTS RETURN END