Because the alias selection function is not invoked at
session termination, the session management exit routine can only
allocate the alias suffix entries. Another session management exit
function must deallocate the alias suffix entry when a session ends.
The final accounting function, function code X'03', performs this
task.
The final accounting function examines the alias LU name
in the RIC of the PLU and the SLU. If the LU name contains a 5-character
prefix of ALIAS, the session management
exit routine can deallocate the proper alias suffix entry. This is
done by converting the last 3 characters of the alias name to a binary
value. That value is an index into the alias suffix storage area.
The code then resets the allocation indicator from X'FF'—X'00'.
The
entire final accounting function is not included in this sample; however,
the portion of code that deallocates the appropriate entry at session
termination follows:
***********************************************************************
*
** SME ROUTINE - FINAL ACCOUNTING FUNCTION - DEALLOCATE ALIAS
* SUFFIX ROUTINE
*
ALIASS4 EQU *
L R1,8(R11) USER DATA FIELD ADDRESS
L R1,0(R1) USER DATA STORAGE AREA ADDRESS
LA R15,0 NO FINAL ACCOUNTING RETURN CODE
CLI 32(R1),X'FF' TEST IF ALIAS SUFFIX STORAGE OBTAINED
BE RETURN NO, ALIAS TRANSLATION NOT PERFORMED -
* VTAM RETURN
L R1,32(R1) ALIAS SUFFIX STORAGE ADDRESS
*
** LOCATE PLU RESOURCE INFORMATION CONTROL VECTOR - ALIAS LUNAME
*
ALIASS4A EQU *
SR R5,R5 CLEAR WORK REGISTER 5
L R4,12(R11) PLU RIC ADDRESS
LA R4,4(R4) PLU RIC SSCPNAME ADDRESS
IC R5,0(R4) PLU RIC SSCPNAME LENGTH
AR R4,R5 PLU RIC REAL NETID ADDRESS VECTOR
* MINUS ONE
LA R4,1(R4) PLU RIC NETID LENGTH ADDRESS
IC R5,0(R4) PLU RIC NETID LENGTH
AR R4,R5 PLU RIC REAL LUNAME ADDRESS VECTOR
* MINUS ONE
LA R4,1(R4) PLU RIC REAL LUNAME LENGTH ADDRESS
IC R5,0(R4) PLU RIC REAL LUNAME LENGTH
AR R4,R5 PLU RIC ALIAS NETID ADDRESS VECTOR
* MINUS ONE
LA R4,1(R4) PLU RIC ALIAS NETID LENGTH ADDRESS
IC R5,0(R4) PLU RIC ALIAS NETID LENGTH
AR R4,R5 PLU RIC ALIAS LUNAME ADDRESS VECTOR
* MINUS ONE
LA R4,1(R4) PLU RIC ALIAS LUNAME LENGTH
LA R4,1(R4) PLU RIC ALIAS LUNAME ADDRESS
CLC 0(5,R4),=C'ALIAS' PLU RIC ALIAS NAME EQUAL 'ALIAS'
BE ALIASS4C PLU ALIAS NAME ALLOCATED BY SME -
* DEALLOCATE
*
** LOCATE SLU RESOURCE INFORMATION CONTROL VECTOR - REAL LUNAME
*
ALIASS4B EQU *
L R4,16(R11) SLU RIC ADDRESS
LA R4,4(R4) SLU RIC SSCPNAME ADDRESS
IC R5,0(R4) SLU RIC SSCPNAME LENGTH
AR R4,R5 SLU RIC REAL NETID ADDRESS VECTOR
* MINUS ONE
LA R4,1(R4) SLU RIC NETID LENGTH ADDRESS
IC R5,0(R4) SLU RIC NETID LENGTH
AR R4,R5 SLU RIC REAL NETID ADDRESS VECTOR
* MINUS ONE
LA R4,1(R4) SLU RIC REAL LUNAME LENGTH ADDRESS
IC R5,0(R4) SLU RIC REAL LUNAME LENGTH
AR R4,R5 SLU RIC ALIAS NETID ADDRESS VECTOR
* MINUS ONE
LA R4,1(R4) SLU RIC ALIAS NETID LENGTH ADDRESS
IC R5,0(R4) SLU RIC ALIAS NETID LENGTH
AR R4,R5 SLU RIC ALIAS LUNAME ADDRESS VECTOR
* MINUS ONE
LA R4,1(R4) SLU RIC ALIAS LUNAME LENGTH
LA R4,1(R4) SLU RIC ALIAS LUNAME ADDRESS
CLC 0(5,R4),=C'ALIAS' SLU RIC ALIAS NAME EQUAL 'ALIAS'
BNE RETURN SLU RIC ALIAS NAME NOT ALLOCATED
* BY SME - VTAM RETURN
*
** ALIAS NAME SUFFIX DEALLOCATION SUBROUTINE
**
** R1 = ADDRESS OF ALIAS NAME SUFFIX STORAGE
** R2 = ALIAS SUFFIX ENTRY INDEX
** R4 = ADDRESS OF ALIAS NAME NAME - PLU/SLU RIC
** R14 = RETURN ADDRESS - MAIN ROUTINE OF ALIAS FUNCTION
*
ALIASS4C EQU *
PACK 0(8,R1),5(3,R4) PACK ALIAS SUFFIX VALUE
CVB R2,0(R1) CONVERT ALIAS SUFFIX ENTRY TO BINARY
* INDEX VALUE
SLL R2,2 OFFSET OF SUFFIX ENTRY
LA R1,8(R2,R1) CALCULATE ALIAS SUFFIX ENTRY ADDRESS
MVI 0(R1),X'00' DEALLOCATE ALIAS SUFFIX ENTRY
B RETURN EXIT TO VTAM
***********************************************************************