Trailing-Edge
-
PDP-10 Archives
-
BB-R595B-SM_11-9-85
-
mcb/nmx/nmxine.bli
There is 1 other file named nmxine.bli in the archive. Click here to see a list.
module NMXINE ( ! Database Maintenance
ident = 'X01110'
) =
begin
!
! COPYRIGHT (c) 1980, 1981, 1982
! DIGITAL EQUIPMENT CORPORATION
! Maynard, Massachusetts
!
! 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 which is not supplied by
! DIGITAL.
!
!++
!
! FACILITY: MCB Network Management
!
! ABSTRACT:
!
! NMXINI supplies functions which allow maintenance of the NMX
! LINE/CIRCUIT/MODULE data bases.
!
! ENVIRONMENT: MCB V3.2
!
! AUTHOR: Scott G. Robinson CREATION DATE: 12-FEB-81
!
! MODIFIED BY:
!
! 01 - Add additional routines to support interrogation of Entity Data bases
! 02 - Add yet another routine for interrogation of Entity Data Bases
! 03 - Fix routines to call GET_??? correctly
! 04 - Add support for DLX items
! 05 - Add parameter services for DLL.
! NOTE: Unable to complete because of no access to executor number/name.
! 06 - Fix to not include name length in name in $NPNAM.
! 07 - Create JMPs to routine from special psect to allow easy modification.
! 08 - Change line/circuit references to common link block
! 09 - Use new entity data bases.
! Alan D. Peckham, 14-Apr-82
! 10 - Rework for NM support.
! Data bases restructured.
! 11 - Check input id string lengths for all calls.
!--
!
! INCLUDE FILES:
!
library 'XPORTX';
library 'MCBLIB';
library 'NMXPAR';
library 'NMXLIB';
literal
NMX$ID_lo = min (NMX$ID_owner, NMX$ID_provider),
NMX$ID_hi = max (NMX$ID_owner, NMX$ID_provider);
!
! TABLE OF CONTENTS:
!
forward routine
NMX$$CREATE : CALL$, ! NMX$CREATE functions
NMX$$DESTROY : CALL$, ! NMX$DESTROY functions
NMX$$MAP : CALL$, ! NMX$MAP functions
NMX$$MODIFY_ID : CALL$, ! NMX$MODIFY id functions
NMX$$MODIFY_NAME : CALL$, ! NMX$MODIFY name functions
NMX$$OBTAIN : CALL$, ! NMX$OBTAIN functions
NMX$$PARAMETER_NAME : CALL$, ! NMX$PARAMETER_x
NMX$$PARAMETER_OWNER : CALL$, ! NMX$PARAMETER_x_OWNER
NMX$$PARAMETER_USER : CALL$; ! NMX$_x_USER
literal JUMP_TO = %o'137';
psect
global = NMXJMP (nowrite, execute);
global
$NMCRE : vector [2] initial (JUMP_TO, NMX$$CREATE),
$NMDES : vector [2] initial (JUMP_TO, NMX$$DESTROY),
$NMMID : vector [2] initial (JUMP_TO, NMX$$MODIFY_ID),
$NMMNA : vector [2] initial (JUMP_TO, NMX$$MODIFY_NAME),
$NMMAP : vector [2] initial (JUMP_TO, NMX$$MAP),
$NMGID : vector [2] initial (JUMP_TO, NMX$$OBTAIN),
$NPNAM : vector [2] initial (JUMP_TO, NMX$$PARAMETER_NAME),
$NPOWN : vector [2] initial (JUMP_TO, NMX$$PARAMETER_OWNER),
$NPUSR : vector [2] initial (JUMP_TO, NMX$$PARAMETER_USER);
undeclare JUMP_TO;
!
! Externals
!
external
MCB$GAW_PROCESS_DATA_BASE : vector [2];
macro ! Map to NMXPAR's representation
$true = true %,
$false = false %;
!
routine NMX$$CREATE (IN_TYPE, IN_PTR, IN_FLAGS, OUT_NMXID) : CALL$ = ! NMX$CREATE
!++
! FUNCTIONAL DESCRIPTION:
!
! NMX$$CREATE processes the creation of an NMX database entry for
! an entity. This routine is called from the following interprocess
! synchronous calls:
!
! NMX$CREATE_CIRCUIT (NMXPIX, NAME_PTR, FLAGS, NMXID);
! NMX$CREATE_LINE
! NMX$CREATE_MODULE
!
! FORMAL PARAMETERS:
!
! .IN_TYPE - the type of entity (CIRCUIT, LINE, or MODULE)
! .IN_PTR - a pointer to the name string in I-16 format
! .IN_FLAGS - the flags associated with this entity
! .OUT_NMXID - the address of where to return NMX's Internal Id
!
! IMPLICIT INPUTS:
!
! NMXDB items pointing to database entries
!
! IMPLICIT OUTPUTS:
!
! NMXDB items created
!
! ROUTINE VALUE:
!
! $true - operation successful
! $false - operation failed
!
! SIDE EFFECTS:
!
! None
!--
begin
map
IN_TYPE : NMX_TYPE_BLOCK;
macro
$return (VALUE) =
begin
local STATUS; STATUS = VALUE;
MAP$ (.PREVIOUS_MAP);
.OUT_NMXID = .NMXID;
return .STATUS
end %;
local
ID : vector [byt$allocation (17)],
ENTBLK : ref NMX_GENERAL_BLOCK,
NMXID,
PREVIOUS_MAP;
bind
FREE_PTR = byt$ptr (uplit (%char (0))),
ID_PTR = byt$ptr (ID);
!
! Copy items from calling process space to ours
!
if ch$rchar (.IN_PTR) gtru 16 then return $false;
ch$move ((ch$rchar (.IN_PTR) + 1), .IN_PTR, ID_PTR);
NMXID = ..OUT_NMXID;
SMAP$ (PREVIOUS_MAP);
!
! See if an entity currently exists for this creation and if so fail
! the creation otherwise create the data base.
!
if (ENTBLK = $NMX_MAP_ENTITY_ID (.IN_TYPE [N$IENT], ID_PTR)) neqa 0
then
$return ($false);
if (ENTBLK = $NMX_MAP_ENTITY_ID (.IN_TYPE [N$IENT], FREE_PTR)) eqla 0
then
$return ($false);
ENTBLK [GENERAL_SYSTEM_FLAGS] = .IN_FLAGS;
ch$copy ((ch$rchar (ID_PTR) + 1), ID_PTR, 0, 17, byt$ptr (ENTBLK [GENERAL_NAME]));
NMXID = .ENTBLK [GENERAL_ID];
!
! Now Exit
!
$return ($true)
end; ! of NMX$$CREATE
routine NMX$$DESTROY (IN_TYPE, IN_PTR) : CALL$ = ! NMX$DESTROY
!++
! FUNCTIONAL DESCRIPTION:
!
! NMX$$DESTROY invalidates an NMX entity database.
! This routine is called from the following interprocess
! synchronous calls:
!
! NMX$DESTROY_CIRCUIT (NMXPIX, NAME_PTR);
! NMX$DESTROY_LINE
! NMX$DESTROY_MODULE
!
! FORMAL PARAMETERS:
!
! .IN_TYPE - the type of entity (CIRCUIT, LINE, or MODULE)
! .IN_PTR - a pointer to the name string in I-16 format
!
! IMPLICIT INPUTS:
!
! NMXDB items pointing to database entries
!
! IMPLICIT OUTPUTS:
!
! NMXDB items created
!
! ROUTINE VALUE:
!
! $true - operation successful
! $false - operation failed
!
! SIDE EFFECTS:
!
! None
!--
begin
map
IN_TYPE : NMX_TYPE_BLOCK;
macro
$return (VALUE) =
begin
local STATUS; STATUS = VALUE;
MAP$ (.PREVIOUS_MAP);
return .STATUS
end %;
local
ID : vector [byt$allocation (17)],
ENTBLK : ref NMX_GENERAL_BLOCK,
PREVIOUS_MAP;
bind
ID_PTR = byt$ptr (ID);
!
! Copy items from calling process space to ours
!
if ch$rchar (.IN_PTR) gtru 16 then return $false;
ch$move ((ch$rchar (.IN_PTR) + 1), .IN_PTR, ID_PTR);
SMAP$ (PREVIOUS_MAP);
!
! See if an entity currently exists; if it doesn't return failure else
! invalidate the entity.
!
if (ENTBLK = $NMX_MAP_ENTITY_ID (.IN_TYPE [N$IENT], ID_PTR)) eqla 0
then
$return ($false);
!
! Release the block by zeroing the ID length.
!
ch$wchar (0, byt$ptr (ENTBLK [GENERAL_NAME]));
!
! Now Exit
!
$return ($true)
end; ! of NMX$$DESTROY
routine NMX$$MAP (IN_NMXID, OUT_TYPE, OUT_PTR) : CALL$ = ! NMX$MAP functions
!++
! FUNCTIONAL DESCRIPTION:
!
! NMX$$MAP maps the NMXID back to the type and string.
! This routine is called from the following interprocess
! synchronous calls:
!
! NMX$MAP_NMXID (NMXPIX, NMXID, TYPE, NAME_PTR);
!
! FORMAL PARAMETERS:
!
! .IN_NMXID - NMX's Internal Id
! .OUT_TYPE - address of where to store the NMX_TYPE fields
! .OUT_PTR - pointer to where to store the Id string (must be 17 bytes long)
!
!
! IMPLICIT INPUTS:
!
! NMXDB items pointing to database entries
!
! IMPLICIT OUTPUTS:
!
! NMXDB items created
!
! ROUTINE VALUE:
!
! $true - operation successful
! $false - operation failed
!
! SIDE EFFECTS:
!
! None
!--
begin
macro
$return (VALUE) =
begin
local STATUS; STATUS = VALUE;
MAP$ (.PREVIOUS_MAP);
return .STATUS
end %;
map
OUT_TYPE : ref NMX_TYPE_BLOCK;
local
ID : vector [byt$allocation (17)],
ENTBLK : ref NMX_GENERAL_BLOCK,
PREVIOUS_MAP;
bind
ID_PTR = byt$ptr (ID);
!
! Copy items from calling process space to ours
!
SMAP$ (PREVIOUS_MAP);
!
! Search appropriate data base for entity
!
if (ENTBLK = $NMX_MAP_NMXID (.IN_NMXID)) eqla 0
then
$return ($false);
!
! Ok, copy the ID string to local storage
!
ch$move ((.ENTBLK [GENERAL_NAME_LENGTH] + 1), byt$ptr (ENTBLK [GENERAL_NAME]), ID_PTR);
!
! Now Exit and return information
!
MAP$ (.PREVIOUS_MAP);
OUT_TYPE [N$IENT] = .IN_NMXID<8, 8, 0>;
ch$move ((ch$rchar (ID_PTR) + 1), ID_PTR, .OUT_PTR);
$true
end; ! of NMX$$MAP
routine NMX$$MODIFY_ID (IN_TYPE, IN_PTR, IN_ID, OUT_NMXID) : CALL$ = ! NMX$MODIFY id
!++
! FUNCTIONAL DESCRIPTION:
!
! NMX$$MODIFY_ID modifies an NMX entity data base entry.
! This routine is called from the following interprocess
! synchronous calls:
!
! NMX$MODIFY_CIRCUIT_{OWNER or PROVIDER} (NMXPIX, NAME_PTR, ID, NMXID);
! NMX$MODIFY_LINE
! NMX$MODIFY_MODULE
!
! FORMAL PARAMETERS:
!
! .IN_TYPE - the type of entity (CIRCUIT, LINE, or MODULE)
! and ID (OWNER or PROVIDER)
! .IN_PTR - a pointer to the name string in I-16 format
! .IN_ID - the ID to put in NMX's data base
! .OUT_NMXID - the address of where to return NMX's ID for this entity
!
! IMPLICIT INPUTS:
!
! NMXDB items pointing to database entries
!
! IMPLICIT OUTPUTS:
!
! NMXDB items created
!
! ROUTINE VALUE:
!
! $true - operation successful
! $false - operation failed
!
! SIDE EFFECTS:
!
! None
!--
begin
map
IN_TYPE : NMX_TYPE_BLOCK;
macro
$return (VALUE) =
begin
local STATUS; STATUS = VALUE;
MAP$ (.PREVIOUS_MAP);
.OUT_NMXID = .NMXID;
return .STATUS
end %;
local
ID : vector [byt$allocation (17)],
EID,
ENTBLK : ref block field (NMX_GENERAL_FIELDS, NMX_LINK_FIELDS, NMX_CIRCUIT_FIELDS, NMX_LINE_FIELDS, NMX_MODULE_FIELDS),
NMXID,
PREVIOUS_MAP;
bind
ID_PTR = byt$ptr (ID);
!
! Copy items from calling process space to ours
!
if ch$rchar (.IN_PTR) gtru 16 then return $false;
ch$move ((ch$rchar (.IN_PTR) + 1), .IN_PTR, ID_PTR);
EID = .IN_ID;
NMXID = ..OUT_NMXID;
SMAP$ (PREVIOUS_MAP);
!
! See if an entity currently exists; if it doesn't return failure else
! update the requested item.
!
if (ENTBLK = $NMX_MAP_ENTITY_ID (.IN_TYPE [N$IENT], ID_PTR)) eqla 0
then
$return ($false);
!
! We now have the entity update according to requested item
!
case .IN_TYPE [N$FFNC] from NMX$ID_lo to NMX$ID_hi of
set
[NMX$ID_owner] :
begin
if (.IN_TYPE [N$IENT] eql NMX$ENT_ckt) or (.IN_TYPE [N$IENT] eql NMX$ENT_lin)
then
if .ENTBLK [LINK_LUN_BLOCK] eql 0 then ENTBLK [LINK_USER_ID] = .EID;
ENTBLK [GENERAL_OWNER_ID] = .EID;
end;
[NMX$ID_provider] :
ENTBLK [GENERAL_PROVIDER_ID] = .EID;
[inrange, outrange] :
$return ($false);
tes;
NMXID = .ENTBLK [GENERAL_ID];
!
! Now Exit
!
$return ($true)
end; ! of NMX$$MODIFY_ID
routine NMX$$MODIFY_NAME (IN_TYPE, IN_PTR, IN_NEW, OUT_NMXID) : CALL$ = ! NMX$MODIFY name
!++
! FUNCTIONAL DESCRIPTION:
!
! NMX$$MODIFY_NAME modifies the name of an entity without affecting
! any other items in that data base.
! This routine is called from the following interprocess
! synchronous calls:
!
! NMX$MODIFY_CIRCUIT_NAME (NMXPIX, NAME_PTR, NEW_PTR, NMXID);
! NMX$MODIFY_LINE_NAME
! NMX$MODIFY_MODULE_NAME
!
! FORMAL PARAMETERS:
!
! .IN_TYPE - the type of entity (CIRCUIT, LINE, or MODULE)
! .IN_PTR - a pointer to the name string in I-16 format
! .IN_NEW - a pointer to the new name string in I-16 format
! .OUT_NMXID - address of where to return NMX's Internal Id
!
! IMPLICIT INPUTS:
!
! NMXDB items pointing to database entries
!
! IMPLICIT OUTPUTS:
!
! NMXDB items created
!
! ROUTINE VALUE:
!
! $true - operation successful
! $false - operation failed
!
! SIDE EFFECTS:
!
! None
!--
begin
map
IN_TYPE : NMX_TYPE_BLOCK;
macro
$return (VALUE) =
begin
local STATUS; STATUS = VALUE;
MAP$ (.PREVIOUS_MAP);
.OUT_NMXID = .NMXID;
return .STATUS
end %;
local
OLD_ID : vector [byt$allocation (17)],
NEW_ID : vector [byt$allocation (17)],
ENTBLK : ref NMX_GENERAL_BLOCK,
NMXID,
PREVIOUS_MAP;
bind
OLD_ID_PTR = byt$ptr (OLD_ID),
NEW_ID_PTR = byt$ptr (NEW_ID);
!
! Copy items from calling process space to ours
!
if ch$rchar (.IN_PTR) gtru 16 then return $false;
ch$move ((ch$rchar (.IN_PTR) + 1), .IN_PTR, OLD_ID_PTR);
if ch$rchar (.IN_NEW) gtru 16 then return $false;
ch$move ((ch$rchar (.IN_NEW) + 1), .IN_NEW, NEW_ID_PTR);
NMXID = ..OUT_NMXID;
SMAP$ (PREVIOUS_MAP);
!
! See if an entity currently exists; if it doesn't return failure else
! update the name.
!
if (ENTBLK = $NMX_MAP_ENTITY_ID (.IN_TYPE [N$IENT], OLD_ID_PTR)) eqla 0
then
$return ($false);
!
! We now have the entity update the name
!
ch$copy ((ch$rchar (NEW_ID_PTR) + 1), NEW_ID_PTR, 0, 17, byt$ptr (ENTBLK [GENERAL_NAME]));
NMXID = .ENTBLK [GENERAL_ID];
!
! Now Exit
!
$return ($true)
end; ! of NMX$$MODIFY_NAME
routine NMX$$OBTAIN (IN_TYPE, IN_PTR, OUT_ID, OUT_NMXID) : CALL$ = ! NMX$OBTAIN functions
!++
! FUNCTIONAL DESCRIPTION:
!
! NMX$$OBTAIN is called to obtain IDs from the Entity Data bases.
! This routine is called from the following interprocess
! synchronous calls:
!
! NMX$OBTAIN_CIRCUIT_OWNER (NMXPIX, TYPE, NAME_PTR, OWNER_ID, NMXID);
! LINE PROVIDER PROVIDER_ID
! MODULE
!
! FORMAL PARAMETERS:
!
! .IN_TYPE - The NMX_TYPE fields
! .IN_PTR - pointer to the Id string
! .OUT_ID - points to where the returned OWNER or PROVIDER ID is stored
! .OUT_NMXID - points to where the returned NMX Internal Id is stored
!
!
! IMPLICIT INPUTS:
!
! NMXDB items pointing to database entries
!
! IMPLICIT OUTPUTS:
!
! NMXDB items created
!
! ROUTINE VALUE:
!
! $true - operation successful
! $false - operation failed
!
! SIDE EFFECTS:
!
! None
!--
begin
map
IN_TYPE : NMX_TYPE_BLOCK;
macro
$return (VALUE) =
begin
local STATUS; STATUS = VALUE;
MAP$ (.PREVIOUS_MAP);
return .STATUS
end %;
local
ID : vector [byt$allocation (17)],
NMXID,
ENTITY_ID,
ENTBLK : ref NMX_GENERAL_BLOCK,
PREVIOUS_MAP;
bind
ID_PTR = byt$ptr (ID);
!
! Copy items from calling process space to ours
!
if ch$rchar (.IN_PTR) gtru 16 then return $false;
ch$move ((ch$rchar (.IN_PTR) + 1), .IN_PTR, ID_PTR);
SMAP$ (PREVIOUS_MAP);
!
! Search appropriate data base for entity
!
if (ENTBLK = $NMX_MAP_ENTITY_ID (.IN_TYPE [N$IENT], ID_PTR)) eqla 0
then
$return ($false);
!
! We now have the entity update according to requested item
!
case .IN_TYPE [N$FFNC] from NMX$ID_lo to NMX$ID_hi of
set
[NMX$ID_owner] :
ENTITY_ID = .ENTBLK [GENERAL_OWNER_ID];
[NMX$ID_provider] :
ENTITY_ID = .ENTBLK [GENERAL_PROVIDER_ID];
[inrange, outrange] :
$return ($false);
tes;
NMXID = .ENTBLK [GENERAL_ID];
!
! Now Exit and return information
!
MAP$ (.PREVIOUS_MAP);
.OUT_ID = .ENTITY_ID;
.OUT_NMXID = .NMXID;
$true
end; ! of NMX$$OBTAIN
routine NMX$$PARAMETER_NAME (IN_TYPE, IN_NMXID, IN_NUM) : CALL$ = ! NMX$PARAMETER_x
!++
! FUNCTIONAL DESCRIPTION:
!
! NMX$$PARAMETER_NAME supplies the entity name for a specified
! parameter number. This routine is called from the following
! interprocess synchronous calls:
!
! NMX$PARAMETER_CIRCUIT (NMXPIX, NMXID, PRM_NUM);
! LINE
! MODULE
!
! FORMAL PARAMETERS:
!
! .IN_TYPE - The NMX_TYPE fields
! .IN_NMXID - NMX's Internal Id
! .IN_NUM - The parameter number
!
!
! IMPLICIT INPUTS:
!
! NMXDB items pointing to database entries
!
! IMPLICIT OUTPUTS:
!
! NMXDB items created
!
! ROUTINE VALUE:
!
! $true - operation successful
! $false - operation failed
!
! SIDE EFFECTS:
!
! None
!--
begin
map
IN_TYPE : NMX_TYPE_BLOCK;
macro
$return (VALUE) =
begin
local STATUS; STATUS = VALUE;
MAP$ (.PREVIOUS_MAP);
return .STATUS
end %;
local
ENTBLK : ref NMX_GENERAL_BLOCK,
PREVIOUS_MAP;
SMAP$ (PREVIOUS_MAP);
!
! Search appropriate data base for entity
!
if (ENTBLK = $NMX_MAP_NMXID (.IN_NMXID)) eqla 0
then
$return ($false);
!
! Ok, insert the name as the given parameter
!
PARAMETER_AI (.IN_NUM, .ENTBLK [GENERAL_NAME_LENGTH], byt$ptr (ENTBLK [GENERAL_NAME], 1));
!
! Now Exit and return information
!
$return ($true)
end; ! of NMX$$PARAMETER_NAME
routine NMX$$PARAMETER_OWNER (IN_TYPE, IN_NMXID, IN_NUM) : CALL$ = ! NMX$PARAMETER_x_OWNER
!++
! FUNCTIONAL DESCRIPTION:
!
! NMX$$PARAMETER_OWNER supplies the entity owner for a specified
! parameter number. This routine is called from the following
! interprocess synchronous calls:
!
! NMX$PARAMETER_CIRCUIT_OWNER (NMXPIX, NMXID, PRM_NUM);
!
! FORMAL PARAMETERS:
!
! .IN_TYPE - The NMX_TYPE fields
! .IN_NMXID - NMX's Internal Id
! .IN_NUM - The parameter number
!
!
! IMPLICIT INPUTS:
!
! NMXDB items pointing to database entries
!
! IMPLICIT OUTPUTS:
!
! NMXDB items created
!
! ROUTINE VALUE:
!
! $true - operation successful
! $false - operation failed
!
! SIDE EFFECTS:
!
! None
!--
begin
map
IN_TYPE : NMX_TYPE_BLOCK;
macro
$return (VALUE) =
begin
local STATUS; STATUS = VALUE;
MAP$ (.PREVIOUS_MAP);
return .STATUS
end %;
bind
NMXDB = MCB$GAW_PROCESS_DATA_BASE [1] : ref NMXDB_BLOCK;
local
ENTBLK : ref NMX_CIRCUIT_BLOCK,
PREVIOUS_MAP;
SMAP$ (PREVIOUS_MAP);
!
! Search appropriate data base for entity
!
if (ENTBLK = $NMX_MAP_NMXID (.IN_NMXID)) eqla 0
then
$return ($false);
!
! Ok, insert the owner as the given parameter
!
if .ENTBLK [GENERAL_OWNER_ID] eql 0 then $return ($true);
if $true %(owner is Transport)%
then
begin
PARAMETER_CM (.IN_NUM, 3);
PARAMETER_C_1 (, uplit (0)); ! Node entity
PARAMETER_DU_2 (, NMXDB [NMX_EXECUTOR_NUMBER]);
PARAMETER_AI (, .NMXDB [NMX_EXECUTOR_NAME_LENGTH],
byt$ptr (NMXDB [NMX_EXECUTOR_NAME], 1));
end;
!
! Now Exit and return information
!
$return ($true)
end; ! of NMX$$PARAMETER_OWNER
routine NMX$$PARAMETER_USER (IN_TYPE, IN_NMXID, IN_NUM) : CALL$ = ! NMX$PARAMETER_x_USER
!++
! FUNCTIONAL DESCRIPTION:
!
! NMX$$PARAMETER_USER supplies the entity user for a specified
! parameter number. This routine is called from the following
! interprocess synchronous calls:
!
! NMX$PARAMETER_CIRCUIT_USER (NMXPIX, NMXID, PRM_NUM);
!
! FORMAL PARAMETERS:
!
! .IN_TYPE - The NMX_TYPE fields
! .IN_NMXID - NMX's Internal Id
! .IN_NUM - The parameter number
!
!
! IMPLICIT INPUTS:
!
! NMXDB items pointing to database entries
!
! IMPLICIT OUTPUTS:
!
! NMXDB items created
!
! ROUTINE VALUE:
!
! $true - operation successful
! $false - operation failed
!
! SIDE EFFECTS:
!
! None
!--
begin
map
IN_TYPE : NMX_TYPE_BLOCK;
literal
LINK_ON = 0,
LINK_OFF = 1,
LINK_SERVICE = 2,
LINK_CLEARED = 3;
macro
$return (VALUE) =
begin
local STATUS; STATUS = VALUE;
MAP$ (.PREVIOUS_MAP);
return .STATUS
end %;
bind
NMXDB = MCB$GAW_PROCESS_DATA_BASE [1] : ref NMXDB_BLOCK;
local
ENTBLK : ref NMX_CIRCUIT_BLOCK,
PREVIOUS_MAP;
SMAP$ (PREVIOUS_MAP);
!
! Search appropriate data base for entity
!
if (ENTBLK = $NMX_MAP_NMXID (.IN_NMXID)) eqla 0
then
$return ($false);
!
! Ok, insert the user as the given parameter
!
if .ENTBLK [GENERAL_OWNER_ID] eql 0 then $return ($true);
if .ENTBLK [LINK_STATE] neq LINK_ON then $return ($true);
if $true %(owner is Transport)%
then
begin
PARAMETER_CM (.IN_NUM, 3);
PARAMETER_C_1 (, uplit (0)); ! Node entity
PARAMETER_DU_2 (, NMXDB [NMX_EXECUTOR_NUMBER]);
PARAMETER_AI (, .NMXDB [NMX_EXECUTOR_NAME_LENGTH],
byt$ptr (NMXDB [NMX_EXECUTOR_NAME], 1));
end;
!
! Now Exit and return information
!
$return ($true)
end; ! of NMX$$PARAMETER_USER
end
eludom
! Local Modes:
! Comment Column:36
! Comment Start:!
! Mode:BLISS
! Auto Save Mode:2
! End: