Distributed Name Service (DNS) Management Programming Manual

DNS Programming Example, TACL
46958 Tandem Computers Incorporated F–15
== <type-list> list of numbers representing the types of names that
== are acceptable; if empty, any name type will do.
==
#FRAME
#PUSH l^name {<name>}
#PUSH l^defnode {<defnode>}
#PUSH l^status {SPI procedure status}
#PUSH l^retcode {Value of ZSPI^TKN^RETCODE}
[#DEF l^maxresp TEXT |BODY| -1] {Value of ZSPI^TKN^MAXRESP}
[#DEF l^have^response TEXT |BODY| 0] {True if we have one name already}
[#DEF l^done TEXT |BODY| 0] {True when we're finished}
#PUSH l^done^1 {Inner loop control variable}
#PUSH l^continue {True when we had ZDNS^TKN^CONTEXT}
#PUSH l^types {<type-list>}
#PUSH l^sc {#GETSCAN/#SETSCAN variable}
#DEF l^request^buf STRUCT LIKE zdns^ddl^msg^buffer; {Request buffer}
#DEF l^response^buf STRUCT LIKE zdns^ddl^msg^buffer; {Response buffer}
#DEF l^param STRUCT LIKE zdns^ddl^info^name^p; {INFO NAME parameter}
#DEF l^candidate STRUCT LIKE zdns^ddl^info^name^br; {INFO NAME response}
#DEF l^response STRUCT LIKE zdns^ddl^info^name^br; {INFO NAME response}
#DEF l^alias^br STRUCT LIKE zdns^ddl^info^alias^br; {INFO ALIAS response}
#DEF l^alias^dr STRUCT LIKE zdns^ddl^info^alias^dr; {INFO ALIAS response}
==
== Get <name>.
==
SINK [#ARGUMENT /VALUE l^name/ WORD]
==
== Save where we are in the argument list.
==
#SET l^sc [#GETSCAN]
==
== Get <defnode>, if any.
==
[#IF ([#ARGUMENT /VALUE l^defnode/ SYSTEMNAME/SYNTAX/
NUMBER
END] = 2)
|THEN|
{No <defnode> -- set variable and reset scan position}
#SET l^defnode *
#SETSCAN l^sc
]
==
== Get <type-list>; if none, set for any type.
==