*DECK SSIAATS 
USETEXT TEXTATS 
USETEXT TEXTIPL 
      PROC SSIAATS; 
*CALL COPYRITE
# TITLE SSIAATS - ACTIVATE ATS CLIENT SOCKET.                          #
  
      BEGIN                            # SSIAATS                       #
# 
****  SSIAATS - ACTIVATE ATS CLIENT SOCKET. 
* 
*     THIS PROCEDURE ACTIVATES THE ATS CLIENT SOCKET. 
* 
*     ENTRY 
* 
*     EXIT     CLNT$SOCKET = SOCKET NUMBER
* 
*     METHOD   ISSUE A DAYFILE STATING THAT THE ATS CLIENT IS BEING 
*              INITIALIZED, CALL *IPPOPES* TO OPEN THE SOCKET AND 
*              *IPPBINS* TO BIND IT TO A PORT.  THE PROCEDURE LOOPS 
*              UNTIL THE OPEN AND BIND ARE SUCCESSFUL.
# 
  
# 
****  PROC SSIAATS - XREF LIST. 
# 
  
      XREF
        BEGIN 
        PROC IPPABOS;    # ABORT SOCKET                                #
        PROC IPPBINS;    # BIND SOCKET                                 #
        PROC IPPOPES;    # OPEN SOCKET                                 #
        PROC IPUWAIT;    # SUSPEND APPLICATION PROCESSING              #
        PROC MESSAGE;    # ISSUE DAYFILE MESSAGE                       #
        END 
  
# 
**
# 
  
      ITEM IGNORE     S:SOCKSTAT;      # SOCKET STATUS                 #
      ITEM LOOP                I;      # LOOP COUNTER                  #
      ITEM SOCKSTATUS S:SOCKSTAT;      # SOCKET STATUS                 #
  
  
# 
****  THIS ARRAY DEFINES THE MESSAGE FOR INITIALIZING THE ATS CLIENT. 
# 
      ARRAY ACCMSG [00:00] S(4);
        BEGIN 
        ITEM ACC$TEXT    C(00,00,31) = [
          "ATF-INITIALIZING CLIENT SOCKET."]; 
        ITEM ACC$ZBYTE   U(03,06,54) = [0]; 
        END 
CONTROL EJECT;
  
# 
****  START MAIN PROCEDURE
# 
  
      MESSAGE (ACCMSG, 0);             # ISSUE I'M HERE DAYFILE MESSAGE#
  
      FOR LOOP = 0
      DO
        BEGIN 
        CLNT$SOCKET = 0;
        IPPOPES (CLNT$SOCKET, (PTYPE"SOCKETUDP"), SOCKSTATUS);
  
        IF SOCKSTATUS EQ S"OK"
        THEN
          BEGIN 
          IPPBINS (CLNT$SOCKET, 0, SOCKSTATUS); 
          IF SOCKSTATUS NQ S"OK"
          THEN                         # BIND FAILED ABORT SOCKET      #
            IPPABOS (CLNT$SOCKET, IGNORE);
          ELSE
            RETURN; 
          END 
  
        IPUWAIT ((WAITTIME$));         # WAIT TWO MINUTES              #
        END 
  
      END                              # SSIAATS                       #
  
      TERM
