function svcerror:string(err:long) %{ static struct { int svcerr; char *string; } svc_errtbl[] = { {1, "SVC_GARBAGE" }, {2, "SVC_SYSERR" }, {3, "SVC_VALID" }, {4, "SVC_NEGATIVE" }, {5, "SVC_OK" }, {6, "SVC_DROP" }, {7, "SVC_DENIED" }, {8, "SVC_PENDING" }, {9, "SVC_COMPLETE" }, }; int i; int tabsz = (sizeof(svc_errtbl)/sizeof(svc_errtbl[0])); for (i = 0; i < tabsz; i++) { if (svc_errtbl[i].svcerr == THIS->err) { break; } } if (i == tabsz) snprintf(THIS->__retvalue, MAXSTRINGLEN, "svcerr %lld", THIS->err); else snprintf(THIS->__retvalue, MAXSTRINGLEN, "svcderr %d(%s)", svc_errtbl[i].svcerr, svc_errtbl[i].string); %}