*DECK RHFGET
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMACBF 
PROC RHFGET(ACN,HDRAREA,TEXTAREA,MAXBLKLEN);
# TITLE RHFGET - GET MESSAGE FROM RHF SUBSYSTEM. #
  
      BEGIN  # RHFGET # 
  
# 
**    RHFGET - GET MESSAGE FROM RHF SUBSYSTEM.
* 
*     RHFGET GENERATES A NETGET CALL TO THE RHF SUBSYSTEM IN ORDER TO 
*     GET EITHER DATA OR SUPERVISORY MESSAGES FOR AN APPLICATION
*     PROGRAM.
* 
* 
*     ENTRY   -  ACN        - APPLICATION CONNECTION NUMBER.
*                HDRAREA    - HEADER WORD AREA. 
*                TEXTAREA   - TEXT AREA.
*                MAXBLKLEN  - MAXIMUM LENGTH IN CM WORDS OF A BLOCK THAT
*                             THE CALLING PROGRAM CAN ACCEPT. 
* 
*     EXIT    -  NSUP UPDATED.
*                HEADER AREA UPDATED. 
*                TEXT AREA UPDATED IF NOT A NULL BLOCK AND IF BLOCK IS
*                LESS THAN OR EQUAL TO MAXLENGTH. 
* 
*     PROCESS -  ZERO HEADER WORD.
*                IF NUMFILEXFR .NE. 0,
*                THEN:  
*                  CALL RHFXFRC TO CONTINUE DATA TRANSFERS. 
*                SET MSGFORAP TO FALSE. 
*                WHILE MSGFORAP IS FALSE: 
*                  SET MSGFORAP TO TRUE.
*                  CALL SYSTEM TO MAKE AN RA+1 REQUEST FOR SSC SO AS TO 
*                    CALL THE RHF SUBSYSTEM FOR A NETGET FUNCTION.
*                  IF DBUGDATA FLAG IS ON OR IF DBUGSUP FLAG IS ON, 
*                  THEN:  
*                    CALL DBGMSG TO WRITE DEBUG INFO TO THE JOB DAYFILE.
*                  IF NUMFILEXFR .NE. 0 AND IF A SUPERVISORY MESSAGE, 
*                  THEN:  
*                    CALL INTAMSG TO CHECK FOR ASYNCHRONOUS SUPERVISORY 
*                      MESSAGES ASSOCIATED WITH ACTIVE DATA TRANSFERS.
* 
* 
# 
  
      ITEM ACN        I;             # APPLICATION CONNECTION NUMBER #
*CALL HDRAREA 
*CALL TEXTAREA
      ITEM MAXBLKLEN  I;             # MAXIMUM LENGTH OF INPUT BLOCK #
  
# 
****  PROC RHFGET - XREF LIST BEGIN.
# 
  
      XREF
        BEGIN 
        PROC DBGMSG;                 #  WRITE DEBUG MESSAGES #
        PROC INTAMSG;                #  INTERCEPT ASYNCHRONOUS MESSAGE #
        PROC RHFXFRC;                #  CONTINUE FILE TRANSFER #
        PROC CALLSYS;                # MAKES RA+1 REQUESTS #
        END 
  
# 
****  PROC RHFGET - XREF LIST END.
# 
  
      CONTROL WEAK DBGMSG, INTAMSG, RHFXFRC;
# 
        NOTE - DBGMSG IS LOADED WHEN RHFDBG IS LOADED.  INTAMSG AND 
               RHFXFRC ARE LOADED WHEN RHFXFR IS LOADED.
# 
                                               CONTROL EJECT; 
# 
*     FORMAT THE RHF SUBSYSTEM REQUEST/REPLY PARAMETER BLOCK FOR A
*     NETGET FUNCTION.
# 
  
      BKF$ACN[0]    = ACN;
      BKF$FNCNUM[0] = NETGETFUNC; 
      BKF$HDRADR[0] = LOC (HDRAREA);
      BKF$MAXBL[0]  = MAXBLKLEN;
      BKF$TEXTAD[0] = LOC (TEXTAREA); 
  
      IF NUMFILEXFR NE 0
      THEN
        BEGIN 
        RHFXFRC;                     # CONTINUE TRANSFER OF FILES # 
        END 
  
      DBGGET = DBGGET + 1;
      MSGFORAP = FALSE; 
      ASLONGAS NOT MSGFORAP DO
        BEGIN 
        MSGFORAP = TRUE;
        HDR$WORD[0] = 0;
        BKF$DONE[0] = FALSE;
        CALLSYS (SSCCALL);
        DBGSSC = DBGSSC + 1;
        IF DBUGDAT OR DBUGSUP 
        THEN
          BEGIN 
          DBGMSG (LOC (HDRAREA), LOC (TEXTAREA), FALSE);
          END 
  
        IF  NUMFILEXFR NE 0   AND   HDR$ABT[0] EQ SUPMSGBLK 
        THEN
          BEGIN 
          INTAMSG (HDRAREA, TEXTAREA);  # INTERCEPT A MESSAGE # 
          END 
  
        END 
  
      END  # RHFGET # 
  
      TERM
