Distributed Name Service (DNS) Management Programming Manual

DNS Programming Example, TAL
46958 Tandem Computers Incorporated G–15
result := dns^dnserr(retcode);
IF NOT (done OR error) THEN
BEGIN
!
! Get INFO NAME response from RESPONSE buffer.
!
IF (status := ssget(resp^buf, resp^map, candidate, 1)) THEN
result := dns^spierr(status);
IF NOT error THEN
BEGIN
!
! We'll use MATCH to indicate whether this name matches
! MASK.
!
match := false;
!
! First see if the name itself matches.
!
IF (mask '<<' candidate.zdnstype) < 0d THEN
match := true
ELSE
!
! Name didn't match; if it's an alias, does its
! referent have the right type?
!
IF candidate.zdnstype = zdns^obj^alias AND
(mask '<<' candidate.zreftype) < 0d
THEN
BEGIN
!
! Yes; look up the referent.
!
result := dns^lookup^alias(fno
, candidate.zdnsname
, candidate.zdefnode
, alias^br
, alias^dr
, status);
IF NOT error THEN
IF status THEN
!
! We specified both the name and defnode, so the
! name should have been unique.
!