Trailing-Edge
-
PDP-10 Archives
-
tops20-v7-ft-dist2-clock
-
language-sources/setai.bli
There are 21 other files named setai.bli in the archive. Click here to see a list.
MODULE SETAI ( ! Extract access info from node ID, or put it in
IDENT = '2'
%BLISS36(,
ENTRY(
SETAI, ! Nodeid with access info -> NLB
SETAIF ! NLB -> Nodeid with access info
))
) =
BEGIN
! COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1981, 1986.
! ALL RIGHTS RESERVED.
!
! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND
! COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH
! THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR
! ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE
! AVAILABLE TO ANY OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE
! SOFTWARE IS HEREBY TRANSFERRED.
!
! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
! NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
! EQUIPMENT CORPORATION.
!
! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF
! ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.
!++
! FACILITY:
!
! ABSTRACT:
!
!
! ENVIRONMENT:
!
! AUTHOR: , CREATION DATE:
!
! MODIFIED BY:
!
! , : VERSION
! 01 -
!--
!
! TABLE OF CONTENTS:
!
FORWARD ROUTINE
SETAI: NOVALUE,
SETAIF: NOVALUE;
!
! INCLUDE FILES:
!
LIBRARY 'BLISSNET';
LIBRARY 'BLI:XPORT';
!
! MACROS:
!
MACRO DESCRIPTOR_LENGTH[]=FIXED_DESC_LEN %;
MACRO ALLOCATE_DESCRIPTOR[]=
(LOCAL DESC: REF $STR_DESCRIPTOR(%REMAINING);
$XPO_GET_MEM(UNITS=DESCRIPTOR_LENGTH(%REMAINING),
RESULT=DESC,
FILL=0);
$STR_DESC_INIT(%REMAINING, DESCRIPTOR=.DESC);
.DESC) %;
MACRO ALLOCATED_DESCRIPTOR[]=ALLOCATE_DESCRIPTOR(%REMAINING):
$STR_DESCRIPTOR(%REMAINING) %;
!
! EQUATED SYMBOLS:
!
LITERAL
FIXED_DESC_LEN = STR$K_F_BLN , ! Length of a fixed descriptor
DYNAMIC_DESC_LEN = STR$K_D_BLN , ! Length of a dynamic descriptor
BOUNDED_DESC_LEN = STR$K_B_BLN , ! Length of a bounded descriptor
DYNAMIC_BOUNDED_DESC_LEN = STR$K_DB_BLN ; ! dynamic bounded descriptor
!
! OWN STORAGE:
!
!
! EXTERNAL REFERENCES:
!
GLOBAL ROUTINE SETAI (NLB,NODESPEC) :NOVALUE = !
!++
! FUNCTIONAL DESCRIPTION:
!
!
! FORMAL PARAMETERS:
!
! NLB: Addr of NLB
! NODESPEC: Descriptor for nodeid (with possible access info in it)
!
! IMPLICIT INPUTS:
!
! NONE
!
! IMPLICIT OUTPUTS:
!
! NONE
!
! ROUTINE VALUE:
! COMPLETION CODES:
!
! NONE
!
! SIDE EFFECTS:
!
! STRING DESCRIPTORS WILL BE ALLOCATED FOR NODE, USERID, PASSWORD
! ACCOUNT, & OPTIONAL DATA IF PRESENT IN NODEID
!
!--
BEGIN
MAP NODESPEC: REF $STR_DESCRIPTOR(CLASS=BOUNDED),
NLB:REF $XPN_NLB();
BIND
NODEID=ALLOCATED_DESCRIPTOR(CLASS=FIXED),
USERID= ALLOCATED_DESCRIPTOR(CLASS=FIXED),
PASSWORD= ALLOCATED_DESCRIPTOR(CLASS=FIXED),
ACCOUNT=ALLOCATED_DESCRIPTOR(CLASS=FIXED),
OPTIONAL= ALLOCATED_DESCRIPTOR(CLASS=FIXED);
LOCAL
D; ! Delimiter
$STR_SCAN(REMAINDER=.NODESPEC,STOP='":',DELIMITER=D,
SUBSTRING=.NODESPEC);
$STR_DESC_INIT(DESCRIPTOR=NODEID,STRING=.NODESPEC);
NLB[NLB$A_NODE_NAME]=NODEID;
IF .D EQL %C'"'
THEN
BEGIN
$STR_SCAN(REMAINDER=.NODESPEC,SPAN='"',SUBSTRING=.NODESPEC);
$STR_SCAN(REMAINDER=.NODESPEC,STOP='" ',DELIMITER=D,
SUBSTRING=.NODESPEC);
$STR_DESC_INIT(DESCRIPTOR=USERID,STRING=.NODESPEC);
NLB[NLB$A_USER_ID]=USERID;
IF .D EQL %C' '
THEN
BEGIN
$STR_SCAN(REMAINDER=.NODESPEC,SPAN=' ',SUBSTRING=.NODESPEC);
$STR_SCAN(REMAINDER=.NODESPEC,STOP='" ',DELIMITER=D,
SUBSTRING=.NODESPEC);
$STR_DESC_INIT(DESCRIPTOR=PASSWORD,STRING=.NODESPEC);
NLB[NLB$A_PASSWORD]=PASSWORD;
IF .D EQL %C' '
THEN
BEGIN
$STR_SCAN(REMAINDER=.NODESPEC,SPAN=' ',SUBSTRING=.NODESPEC);
$STR_SCAN(REMAINDER=.NODESPEC,STOP='" ',DELIMITER=D,
SUBSTRING=.NODESPEC);
$STR_DESC_INIT(DESCRIPTOR=ACCOUNT,STRING=.NODESPEC);
NLB[NLB$A_ACCOUNT]=ACCOUNT;
IF .D EQL %C' '
THEN
BEGIN
$STR_SCAN(REMAINDER=.NODESPEC,SPAN=' ',SUBSTRING=.NODESPEC);
$STR_SCAN(REMAINDER=.NODESPEC,STOP='" ',DELIMITER=D,
SUBSTRING=.NODESPEC);
$STR_DESC_INIT(DESCRIPTOR=OPTIONAL,STRING=.NODESPEC);
NLB[NLB$A_OPTIONAL]=OPTIONAL
END;
END;
END;
END;
END; !End of SETAI
GLOBAL ROUTINE SETAIF (NLB,NODESPEC) :NOVALUE =
!++
! FUNCTIONAL DESCRIPTION:
!
! Convert nodeid/access info in NLB to spec
! (The reverse of what SETAI does)
!
! FORMAL PARAMETERS:
!
! NLB: Addr of NLB
! NODESPEC: Descriptor to store nodespec
!
! IMPLICIT INPUTS:
!
! NONE
!
! IMPLICIT OUTPUTS:
!
! NONE
!
! ROUTINE VALUE:
! COMPLETION CODES:
!
! NONE
!
! SIDE EFFECTS:
!
!
!--
BEGIN
MAP NODESPEC: REF $STR_DESCRIPTOR(CLASS=BOUNDED),
NLB:REF $XPN_NLB();
BIND
NODEID=.NLB[NLB$A_NODE_NAME]: $STR_DESCRIPTOR(CLASS=FIXED),
USERID= .NLB[NLB$A_USER_ID]: $STR_DESCRIPTOR(CLASS=FIXED),
PASSWORD=.NLB[NLB$A_PASSWORD]: $STR_DESCRIPTOR(CLASS=FIXED),
ACCOUNT= .NLB[NLB$A_ACCOUNT]: $STR_DESCRIPTOR(CLASS=FIXED),
OPTIONAL= .NLB[NLB$A_OPTIONAL]: $STR_DESCRIPTOR(CLASS=FIXED);
$STR_COPY(STRING=NODEID, TARGET=.NODESPEC);
IF USERID NEQ 0
THEN ($STR_APPEND(STRING=$STR_CONCAT('"',USERID), TARGET=.NODESPEC);
IF PASSWORD NEQ 0
THEN ($STR_APPEND(STRING=$STR_CONCAT(' ',PASSWORD),
TARGET=.NODESPEC);
IF ACCOUNT NEQ 0
THEN ($STR_APPEND(STRING=$STR_CONCAT(' ',ACCOUNT),
TARGET=.NODESPEC);
IF OPTIONAL NEQ 0
THEN $STR_APPEND(STRING=$STR_CONCAT(' ',OPTIONAL),
TARGET=.NODESPEC);
)
);
$STR_APPEND(STRING='"',TARGET=.NODESPEC);
);
$STR_APPEND(STRING='::', TARGET=.NODESPEC);
END; !End of SETAIF
END !End of module
ELUDOM