Distributed Name Service (DNS) Management Programming Manual

DNS Programming Example, TAL
46958 Tandem Computers Incorporated G–13
!Request buffer
STRUCT .EXT req^buf(zdns^ddl^msg^buffer^def);
!Response buffer
STRUCT .EXT resp^buf(zdns^ddl^msg^buffer^def);
STRUCT
.param(zdns^ddl^info^name^p^def) !INFO NAME parameter.
,.candidate(zdns^ddl^info^name^br^def) !Last name returned
,.alias^br(zdns^ddl^info^alias^br^def) !for resolution using
,.alias^dr(zdns^ddl^info^alias^dr^def) !aliases.
;
INT
!Token map for INFO NAME parameter.
param^map[0:zdns^map^info^name^p^wln - 1] = 'P' := zdns^map^info^name^p
!
!Token map for INFO NAME response.
, resp^map[0:zdns^map^info^name^br^wln - 1] = 'P' := zdns^map^info^name^br
;
!
! Procedure body: reset AMBIGUOUS flag for now.
!
ambiguous := false;
!
! Initialize INFO NAME parameter.
!
IF (status := ssnull(param^map, param)) THEN
result := dns^spierr(status);
IF NOT error THEN
BEGIN
!
! Build INFO NAME parameter.
!
param.zname ':=' name FOR zdns^val^objlen;
param.zdefnode ':=' defnode FOR 8;
IF param.zdefnode.z^b = " " THEN
param.zdefnode.z^b := "*";
!
! Initialize REQUEST buffer.
!
IF (status := ssinit(req^buf
, zdns^val^buflen
, dns^ssid
, zspi^val^cmdhdr
, zdns^cmd^info
, zdns^obj^name))