*DECK RHFGETL 
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMACBF 
PROC RHFGETL(ALN,HDRAREA,TEXTAREA,MAXBLKLEN); 
# TITLE RHFGETL - GET A MESSAGE FROM ANY ONE OF A LIST OF ACN-S. #
  
      BEGIN  # RHFGETL #
  
# 
**    RHFGETL - GET A MESSAGE FROM ANY ONE OF A LIST OF ACN-S.
* 
*     RHFGETL GENERATES A NETGETL CALL TO THE RHF SUBSYSTEM IN ORDER TO 
*     GET A MESSAGE FROM ANY ONE OF A LIST OF ACN-S.
* 
*     PROC RHFGETL(ALN,HDRAREA,TEXTAREA,MAXBLKLEN)
* 
*     ENTRY   -  ALN        - APPLICATION LIST NUMBER.
*                HDRAREA    - HEADER WORD OF MESSAGE. 
*                TEXTAREA   - TEXT AREA OF MESSAGE. 
*                MAXBLKLEN  - MAXIMUM LENGTH IN CM WORDS OF A BLOCK THAT
*                             THE CALLING PROGRAM CAN ACCEPT. 
* 
*     ENTRY   -  NSUP UPDATED.
*                HEADER WORD UPDATED IF NOT A NULL BLOCK. 
*                TEXT AREA UPDATED IF NOT A NULL BLOCK AND IF BLOCK IS
*                LESS THAN OR EQUAL TO MAXBLKLEN. 
* 
*     PROCESS -  ZERO HEADER AREA.
*                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 RA+1 CALL IN ORDER TO CALL SSC 
*                    (WITH AUTO RECALL) SO AS TO CALL THE RHF SUBSYSTEM 
*                    WITH A NETGETL FUNCTION. 
*                  IF DBUGDATA FLAG IS ON,
*                  THEN:  
*                    CALL DBGMSG TO WRITE DEBUG INFO TO THE JOB DAYFILE.
*                  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 ALN        I;           # APPLICATION LIST NUMBER #
*CALL HDRAREA 
*CALL TEXTAREA
        ITEM MAXBLKLEN  I;           # MAXIMUM LENGTH OF INPUT BLOCK #
  
# 
****  PROC RHFGETL - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        PROC DBGMSG;                 #  WRITE DEBUG MESSAGES #
        PROC RHFXFRC;                #  CONTINUE FILE TRANSFER #
        PROC INTAMSG;                #  INTERCEPT ASYNCHRONOUS MESSAGE #
        PROC CALLSYS;                # MAKES RA+1 REQUESTS #
        END 
  
# 
****  PROC RHFGETL - 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
*     NETGETL FUNCTION. 
# 
  
      SSCPARAMAD[0] = LOC (BKFORRQRLY); 
      BKF$ALN[0]    = ALN;
      BKF$FNCNUM[0] = NETGETLFNC; 
      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 
  
      DBGGETL = DBGGETL + 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  # RHFGETL #
  
      TERM
