*DECK RHFON 
PROC RHFON(ANAME,NSUP,STATIS,MINACN,MAXACN);
# TITLE RHFON - LOG ON TO NETWORK.  # 
  
      BEGIN  # RHFON #
  
# 
**    RHFON - LOG ON TO NETWORK.
* 
*     RHFON GENERATES A NETON CALL TO THE RHF SUBSYSTEM SO AS 
*     TO ESTABLISH COMMUNICATION WITH THE RHF SUBSYSTEM.
* 
*     PROC RHFON(ANAME,NSUP,STATIS,MINACN,MAXACN) 
* 
*     ENTRY   -  ANAME     - DISPLAY CODED NAME OF THE APPLICATION
*                            PROGRAM. 
*                NSUP      - THE APPLICATION-S SUPERVISORY MESSAGE
*                            STATUS WORD (NSUP).
*                STATIS    - RHFON REPLY STATUS WORD. 
*                MINACN    - SMALLEST APPLICATION CONNECTION NUMBER 
*                            (ACN) THIS APPLICATION CAN PROCESS.
*                MAXACN    - LARGEST ACN THIS APPLICATION CAN PROCESS.
* 
*     EXIT    -  STATIS    - 0, NETON WAS SUCCESSFUL AND NETWORK ACCESS 
*                               IS ESTABLISHED. 
*                          - 1, NETON WAS UNSUCCESSFUL BECAUSE RHF WAS
*                               NOT AT A CONTROL POINT OR DID NOT HAVE
*                               ENOUGH RESOURCES TO SERVICE THIS
*                               APPLICATION.
*                          - 2, NETON WAS REJECTED BECAUSE TOO MANY 
*                               APPLICATION PROGRAMS ARE CURRENTLY
*                               ACCESSING THE NETWORK WITH THE SAME NAME
*                               AS SPECIFIED BY -ANAME- PARAMETER.
*                          - 3, NETON WAS REJECTED BECAUSE THE
*                               APPLICATION IS IN A DISABLED STATE. 
*                          - 4, NETON WAS REJECTED BECAUSE OF AN
*                               ILLEGAL APPLICATION NAME. 
* 
*     PROCESS -  SAVE NSUP ADDRESS. 
*                FORMAT INPUT PARAMETERS INTO RHF REQUEST 
*                   PARAMETER BLOCK.
*                CALL SYSTEM TO MAKE AN RA+1 REQUEST TO CALL SSC
*                  (WITH AUTO RECALL) IN ORDER TO CALL THE RHF
*                  SUBSYSTEM WITH A NETON FUNCTION. 
*                INITIALIZE THE APPLICATION TABLE ADDRESS (APTABADR). 
*                IF ERROR STATUS IN RHF REQUEST/REPLY PARAMETER BLOCK 
*                  IS NOT EQUAL TO ZERO.
*                THEN:  
*                  SET STATIS = 1.
*                ELSE:  
*                  SET STATIS EQUAL TO RETURN VALUE OF RHF
*                    REQUEST/REPLY PARAMETER BLOCK. 
* 
# 
  
      ITEM ANAME       C(7);         # APPLICATION NAME # 
      ITEM NSUP        I;            # NETWORK SUP. MSG. STATUS WORD #
      ITEM STATIS      I;            # REPLY STATUS WORD #
      ITEM MINACN      I;            # MINIMUM ACN ALLOWED #
      ITEM MAXACN      I;            # MAXIMUM ACN ALLOWED #
  
# 
****  PROC RHFON - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        PROC CALLSYS;                # MAKES RA+1 REQUESTS #
        END 
  
# 
****  PROC RHFON - XREF LIST END. 
# 
  
      CONTROL PRESET; 
  
*CALL COMCBEGN
*CALL COMADEF 
*CALL COMACBF 
*CALL COMAMCB 
                                               CONTROL EJECT; 
      MSG$STATWD[0] = LOC (MSG$STATUS[0]);
      P<NSUPWORD> = LOC (NSUP); 
      MINIACN = MINACN; 
      MAXIACN = MAXACN; 
  
# 
*     FORMAT THE CALLSS MACRO PARAMETER BLOCK FOR A NETON CALL. 
# 
  
      BKF$WORD$0[0]  = 0; 
      BKF$WC[0]      = MAXWCRHFPL;
      BKF$FTLERR[0]  = TRUE;
      BKF$FNCNUM[0]  = NETONFUNC; 
      BKF$ANAME[0]   = ANAME; 
      BKF$NSUPAD[0]  = LOC (NSUP);
      BKF$MINACN[0]  = MINACN;
      BKF$MAXACN[0]  = MAXACN;
  
# 
*     INITIALIZE SSCPARAMAD.  THIS SHOULD ALSO BE DONE IN EACH OF THE 
*     MAIN ENTRY ROUTINES SO THAT IF ANY OF THE OTHER FUNCTIONS ARE 
*     CALLED BEFORE A NETON, A MEANINGFUL ERROR MESSAGE WILL RESULT.
# 
  
      SSCPARAMAD[0] = LOC(BKFORRQRLY);
  
# 
*     CALL THE RHF SUBSYSTEM.  UPON RETURN, THE RHF SUBSYSTEM WILL HAVE 
*     INITIALIZED THE APPLICATION TABLE ADDRESS (IN ARRAY BKFORRQRLY).
# 
  
      CALLSYS (SSCCALL);
      DBGSSC = DBGSSC + 1;   # INCREMENT SSC CALL COUNT # 
  
# 
*     SET THE USER-S STATUS WORD. 
# 
  
      IF BKF$NOTDEF[0] OR BKF$BUSY[0] OR BKF$NOTUP[0] 
      THEN
        BEGIN 
        STATIS = 1; 
        END 
  
      ELSE
        BEGIN 
        STATIS = BKF$RTNCDE[0]; 
        END 
  
# 
*     WORD 0 OF ARRAY BKFORRQRLY IS KEPT CLEAR (EXCEPT FOR THE COMPLETE 
*     BIT AND THE PARAMETER LIST WORD COUNT) UNTIL THE NEXT NETON.
# 
  
      BKF$WORD$0[0] = 0;
      BKF$WC[0]     = MAXWCRHFPL; 
      BKF$DONE[0]   = TRUE; 
      END  # RHFON #
  
      TERM
