#IF (!0>0) // check that none of the params are indicators. We wrap this in an IFLOGICAL because the # test // also fires on other symbols like EQ #IFLOGICAL !1 #CHECK !1 _# #ENDIF #IFSAME !1 OF TO #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX INVALID POSITION FOR '!1' #ELSE #IFSAME !1 FIELD #IFCLASS !2 F // test for file element #PUSH !h #SET H$ %!2 // get the fieldnumber of parameter SEND$HELP |CI!h !3 !4 !5 !6 !7 !8 !9 #POP H$ #ELSE #ERROR DFERR_COMP_UNDEFINED_SYMBOL_IN_ARGUMENT UNKNOWN FIELD: !2 #ENDIF #ELSE #IFSAME !1 FILE_FIELD #IFCLASS !2 F // test for file element #PUSH !h #PUSH !g #SET H$ %!2 // get the fieldnumber of parameter #SET G$ !2 // get the filenumber of parameter SEND$HELP |CI!g |CI!h !3 !4 !5 !6 !7 !8 !9 #POP G$ #POP H$ #ELSE #ERROR DFERR_COMP_UNDEFINED_SYMBOL_IN_ARGUMENT UNKNOWN FILE_FIELD: !2 #ENDIF #ELSE // As of 10.1 we will support passing of object names as parameters. #IFDEF !1 // if value is defined, just use it #DPUSH !1 #ELSE #IFCLASS !1 0123456789ABCDEF // this allows one to pass hex constants (e.g. $C003, NOENTER) #DPUSH !1 #ELSE // not defined, see if this is an object, referecne #IFDEF GET_!1 // if defined as a function and is an object access, use it #IF (GET_!1>$40000000) DPUSH$EXP (!1(current_object)) #ELSE #DPUSH !1 // will generate a symbol not defined error #ENDIF #ELSE #DPUSH !1 // will generate a symbol not defined error #ENDIF #ENDIF #ENDIF SEND$HELP !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDIF #ENDIF #ENDIF