SPI Programming Manual (G06.24+, H06.03+, J06.03+)

General SPI Programming Guidelines
SPI Programming Manual427506-006
5-35
Checking Tokens in the Command
int errcode
struct .ssid(ZSPI^DDL^SSID^DEF)
begin
struct error(ZSPI^DDL^ERROR^DEF)
struct parm^err(ZSPI^DDL^PARM^ERR^DEF)
SSPUT(reply,ZSPI^TKN^RETCODE,errcode)
SSPUT(reply,ZSPI^TKN^ERRLIST)
error.z^ssid := subsys^VAL^SSID
error.z^error := errcode
SSPUT(reply,ZSPI^TKN^ERROR,error)
parm^err.z^tokencode.z^tkncode := tokencode
parm^err.z^index := index
parm^err.z^offset := 0
SSPUT(reply,ZSPI^TKN^PARM^ERR,parm^err)
if $param(ssid) then
begin
SSPUT(reply,ZSPI^TKN^SSID^ERR,ssid)
end;
SSPUT(reply,ZSPI^TKN^ENDLIST)
end reject
SSGETERR: Inserts RETCODE and error list into response buffer
to report SSGET error
proc ssgeterr(tokencode,index,errcode)
int(32) .tokencode
int index
int errcode
begin
struct error(ZSPI^DDL^ERROR^DEF)
struct parm^err(ZSPI^DDL^PARM^ERR^DEF)
SSPUT(reply,ZSPI^TKN^RETCODE,subsys^ERR^SSPROC^ERROR)
SSPUT(reply,ZSPI^TKN^ERRLIST)
error.z^ssid := subsys^VAL^SSID
error.z^error := subsys^ERR^SSPROC^ERROR
SSPUT(reply,ZSPI^TKN^ERROR,error)
SSPUT(reply,ZSPI^TKN^ERRLIST,,,ZSPI^VAL^SSID)
error.z^ssid := ZSPI^VAL^SSID
error.z^error := errcode
SSPUT(reply,ZSPI^TKN^ERROR,error)
SSPUT(reply,ZSPI^TKN^PROC^ERR,ZSPI^VAL^SSGET)
parm^err.z^tokencode := tokencode
parm^err.z^index := index
parm^err.z^offset := 0
SSPUT(reply,ZSPI^TKN^PARM^ERR,parm^err)
SSPUT(reply,ZSPI^TKN^ENDLIST)
SSPUT(reply,ZSPI^TKN^ENDLIST)
end ssgeterr
This example does not take into account that one cannot pass a literal as a reference
parameter in TAL; your subsystem must include code to pass the parameters properly.