z/OS Communications Server: SNA Customization
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Translating OLU name

z/OS Communications Server: SNA Customization
SC27-3666-00

The next step is to translate the OLU name. The indicator for the OLU fields (NAME2) specifies that the real name is provided and an alias name must be returned. The sample exit routine allocates up to 999 names. The names consist of a required prefix, ALIAS, and a 3-digit suffix allocated from an alias-suffix table. The exit routine initializes and maintains this table in a user storage area. An alias table can be loaded in the begin function similar to the network identifier registration table. The sample code below examines the second entry of the alias input parameters and invokes a subroutine to allocate an alias name from the table.

Note: For this example, the CDRSCTI start option must be set to 0 so that the alias LU name assigned to the terminal can be deleted and reassigned to another real terminal after the session is terminated. The CDRSCTI start option can have a value other than 0 for real operations.    
***********************************************************************
ALIASS2  EQU   *
         LA    R2,32(R2)        ALIAS SECOND LUNAME ADDRESS -
*                                 REAL/ALIAS NAME
*
** PROCESS SECOND LOGICAL UNIT NAME IN ALIAS INPUT PARAMETER LIST:
**
** IF SECOND ENTRY IS THE REAL NAME OF THE TERMINAL, THEN
** ALLOCATE AN ALIAS NAME FROM THE ALIAS NAME POOL, OTHERWISE,
** EXIT TO VTAM WITHOUT ALIAS TRANSLATION.
**
** REASON: 1. THE TERMINAL IS THE OLU AND THE NAME REQUESTED BY VTAM
**            IS THE REAL NAME FOR THE OLU AND THE SME ROUTINE ONLY
**            PROVIDES ALIAS NAMES.
*
ALIASS2A EQU   *
         TM    2(R2),X'80'      SECOND ENTRY - REAL NAME SUPPLIED
         BO    ALIASS2C         YES, PERFORM ALIAS TRANSLATION
ALIASS2B EQU   *
         LA    R15,8            SOME TRANSLATION PERFORMED - NO ALIAS
*                                 APPLICATION
         B     RETURN           RETURN TO VTAM
ALIASS2C EQU   *
*
** IF THE INDICATOR IN THE FIRST BYTE OF THE ALIAS STORAGE ADDRESS IN
** THE USER DATA STORAGE AREA IS X'FF', THEN STORAGE WAS NOT AVAILABLE
** FOR THE TABLE. NO ALIAS PROCESSING CAN BE PERFORMED, THEREFORE EXIT.
**
** OTHERWISE, BRANCH TO SUBROUTINE THAT ALLOCATES AN AVAILABLE ALIAS
** NAME SUFFIX FROM THE ALIAS NAME POOL.  IF ALL ENTRIES ARE USED,
** REGISTER 15 (R15) CONTAINS A NON-ZERO RETURN CODE FOR VTAM WHICH
** DOES NOT ALLOW SESSION INITIATION TO CONTINUE. OTHERWISE, THE
** ADDRESS FOR THE ALIAS NAME SUFFIX IS ADDRESSABLE AT DISPLACEMENT
** ONE (1) USING REGISTER 1 (R1). THE SUFFIX IS APPENDED TO THE FIVE
** CHARACTER STRING 'ALIAS' TO FORM THE ALIAS NAME FOR THE TERMINAL.
*
         L     R4,8(R11)        PARAMETER LIST - USER DATA ADDRESS
         L     R4,0(R4)         USER DATA STORAGE ADDRESS
         CLI   32(R4),X'FF'     EXAMINE IF ALIAS NAME STORAGE OBTAINED
         BNE   ALIASS2E         YES, CONTINUE ALIAS NAME PROCESSING
ALIASS2D EQU   *
         LA    R15,20           NO ALIAS FUNCTION AVAILABLE - FAIL
*                                 SESSION SETUP
         B     RETURN           RETURN TO VTAM - NO ALIAS APPLICATION
ALIASS2E EQU   *
         L     R4,32(R4)        ALIAS NAME STORAGE ADDRESS
         BAL   R14,ALIASS3      BRANCH TO ALIAS NAME ALLOCATION ROUTINE
         LTR   R15,R15            ALIAS SUFFIX AVAILABLE
         BNZ   RETURN         RETURN TO VTAM - NO ALIAS ENTRY AVAILABLE
ALIASS2F EQU   *
         MVC   8(5,R3),=C'ALIAS' ALIAS OUTPUT PARAMETER - ALIAS NAME
*                                 PREFIX
         MVC   13(3,R3),1(R1)   ALIAS OUTPUT PARAMETER - ALIAS NAME
*                                 SUFFIX
         MVC   56(8,R3),=CL8'NET2' ALIAS OUTPUT PARAMETER - ALIAS NETID
         LA    R15,8       SOME TRANSLATION PERFORMED - NO COS, LOGMODE
         B     RETURN           RETURN TO VTAM
***********************************************************************
The subroutine that processes the alias suffix table initializes the storage, obtained in the begin function, during the first pass through the allocation process. During the first pass, no entry is allocated, as indicated by a X'00' in the first byte. After the entry is allocated, a X'FF' is moved to the first byte in the alias suffix entry. A binary counter for the entry number is converted to a 3-byte decimal value, the suffix, and is saved in the remaining three bytes of the 4-byte entry. The address of the alias suffix entry is then returned to the alias function that invoked the subroutine. The suffix is appended to the prefix string ALIAS to form the alias name.

The format of the alias suffix table is illustrated in Figure 1. An example of the subroutine code that performs the suffix allocation follows Figure 1.

Figure 1. Alias terminal name pool—3-digit suffix
Shows the format of the alias suffix table
   
***********************************************************************
ALIASS3  EQU   *
*
** ALIAS NAME SUFFIX ALLOCATION SUBROUTINE
**
** R1  = ADDRESS OF ALIAS NAME SUFFIX ENTRY ALLOCATED
** R4  = ADDRESS OF ALIAS NAME SUFFIX STORAGE - WORKAREA FOR CONVERT
**         TO DECIMAL
** R6  = ALIAS SUFFIX ENTRY COUNTER - DECREMENTED
** R7  = ALIAS SUFFIX ENTRY COUNTER - CONSTANT
** R14 = RETURN ADDRESS - MAIN ROUTINE OF ALIAS FUNCTION
** R15 = RETURN CODE
*
         LA    R1,8(R4)         ALIAS SUFFIX ADDRESS - FIRST ENTRY
         LA    R6,1000          ALIAS SUFFIX ENTRY COUNTER - DECREMENT
         LA    R7,1000          ALIAS SUFFIX ENTRY COUNTER - CONSTANT
ALIASS3A EQU   *
         CLI   0(R1),X'00'      ALIAS SUFFIX ENTRY ALLOCATED
         BNE   ALIASS3B         YES, INCREMENT ADDRESS TO NEXT ENTRY
         MVI   0(R1),X'FF'      NO, ALLOCATE ALIAS SUFFIX ENTRY
         SR    R7,R6        CALCULATE ALIAS SUFFIX ENTRY VALUE - BINARY
         CVD   R7,0(R4)         CONVERT ALIAS SUFFIX ENTRY TO DECIMAL -
*                               WORKAREA
         UNPK  1(3,R1),6(2,R4)  UNPACK SUFFIX VALUE INTO PROPER
*                                 SUFFIX ENTRY
         OI    3(R1),X'F0'      ENSURE DECIMAL VALUE - CHANGE SIGN OF
*                                 LAST CHARACTER
         BR    R14              RETURN TO INVOKING ROUTINE
ALIASS3B EQU   *
         LA    R1,4(R1)        INDEX ALIAS SUFFIX ADDRESS TO NEXT ENTRY
         BCT   R6,ALIASS3A      DECREMENT ALIAS SUFFIX COUNTER -
*                                 CONTINUE IF NONZERO
         LA    R15,20           ALL ALIAS SUFFIX ENTRIES ALLOCATED -
*                                 ENTRIES EXHAUSTED
         BR    R14              RETURN TO INVOKING ROUTINE - TERMINATE
*                                 SESSION SETUP
***********************************************************************

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014