% VAX-11 Librarian V04-00@0)~8Z$%,,, \ ALLOC_STRINGAOBLEQ_WAOBLSS_WASKBBCCI_W2BBCC_WBBCS_WBBC_WBBSC_W~BBSSI_WBBSS_WBBS_WBCC_WBCS_WfBEQLU_WBEQL_W.BGEQU_WBGEQ_WBGTRU_W BGTR_W BLBC_W rBLBS_W BLEQU_W DBLEQ_W BLSSU_W!BLSS_W BNEQU_W pBNEQ_W BVC_W8BVS_WCOLLAPSECONCAT DEF_PSECT^DISPLAYVDO0 FIND_LENGTH!hBNEQU_W!BNEQ_W!0BVC_W!BVS_WCOLLAPSECONCAT DEF_PSECTDISPLAY(DO FIND_LENGTHX RESET_PSECTRUN SET_PSECT!SOBGEQ_WSOBGTR_WSPAWNWAIT_OPCDEFBLSS_W_OPCDEFWTCT$N.MACRO FIND_LENGTH STRINGG .IF BLANK STRINGO) .ERROR 0;FIND_LENGTH -- no name given;L .MEXIT- .ENDC .EXTERNAL STR_LEN PUSHAQ STRING'_DS CALLS #1, G^STR_LEN MOVL R0, STRING.ENDM FIND_LENGTH wwIT .ENDC .IF IDENTICAL , .LISTSTRING'_S==BYTE_COUNTSTRING'_T:: .BLKB STRING'_SSTRING:: .LONG STRING'_S .ADDRESS STRING'_TSTRING'_DS:: .LONG STRING'_S .ADDRESS STRING'_T .NLIST .IF_FALSE .LISTSTRING'_S=BYTE_COUNTST DEST_NEXT:B .ENDM BBCS_Www .LONG STRING'_S .ADDRESS STRING'_TSTRING'_DS: .LONG STRING'_S .ADDRESS STRING'_T .NLIST .ENDC.ENDM ALLOC_STRINGww!/.MACRO AOBLEQ_W LIMIT, INDEX, DEST, ?INT, ?NEXT AOBLEQ LIMIT, INDEX, INT BRB NEXT INT: BRW DESTNEXT:.ENDM AOBLEQ_Www6!/.MACRO AOBLSS_W LIMIT, INDEX, DEST, ?INT, ?NEXT AOBLSS LIMIT, INDEX, INT BRB NEXT INT: BRW DESTNEXT:.ENDM AOBLSS_Www/ M.MACRO A COMMAND .EXTERNAL LIB$SPAWN .IF BLANK COMMAND CALLS #0, G^LIB$SPAWN .IF_FALSE PUSHAL COMMAND CALLS #1, G^LIB$SPAWN .ENDC .ENDM SPAWNMwwREIGN>E .ERROR 0;ASK -- input source must be INPUT,COMMAND or FOREIGN; .MEXIT .ENDC .ENDC .ENDC .IF BLANK PROMPT_STRING/ .ERROR 0;ASK -- input prompt string missing; .MEXIT .ENDC .IF BLANK RESULT_STRING/ .ERROR 0;ASK -- input result string missing; .MEXIT .ENDC .IF BLANK RESUL t`#.MACRO BBC_W POS, BASE, DEST, ?NEXTg BBS POS, BASE, NEXT BRW DESTNNEXT:G .ENDM BBC_W_wwCOUNT=3 .IF IDENTICAL , .IF NOT_BLANK FLAGS PUSHAL FLAGS __ARG_COUNT=4 .ENDC .ENDC PUSHAW RESULT_LENGTH PUSHAL PROMPT_STRING PUSHAL RESULT_STRING$ CALLS #__ARG_COUNT, G^LIB$GET_'FROM .ENDM ASKww Q$!+.MACRO BBCCI_W POS, BASE, DEST, ?INT, ?NEXT BBCCI POS, BASE, INT BRB NEXT INT: BRW DESTNEXT: .ENDM f.MACRO BCC_W DEST, ?NEXT BCS NEXTB BRW DEST?NEXT:B .ENDM BCC_W,ww BRW DESTNEXT: .ENDM BBCC_Www.!$.MACRO BBCS_W POS, BASE, DEST, ?NEXT BBSS POS, BASE, NEXT BRW DESTNEXT: .ENDM BBCS_Www 2!#.MACRO BBC_W POS, BASE, DEST, ?NEXT BBS POS, BASE, NEXT BRW DESTNEXT: .ENDM BBC_Www5!$.MACRO BBSC_W POS, BASE, DEST, ?NEXT BBCC POS, BASE, NEXT BRW DESTNEXT: .ENDM BBSC_Www6! l.MACRO BGTRU_W DEST, ?NEXT BLEQU NEXT BRW DESTSNEXT: .ENDM BGTRU_Www: BRW DESTNEXT: .ENDM BBSSI_Www9!$.MACRO BBSS_W POS, BASE, DEST, ?NEXT BBCS POS, BASE, NEXT BRW DESTNEXT: .ENDM BBSS_Www , __TYPE_OK=0E .PSECT PSECT_NAME PIC,USR,CON,REL,GBL,SHR,EXE,RD,NOWRT,'ALIGNMENT' .ENDC .IF IDENTICAL , __TYPE_OK=0G .PSECT PSECT_NAME PIC,USR,CON,REL,GBL,NOSHR,NOEXE,RD,WRT,'ALIGNMENT' .ENDC .IF IDENTICAL , __TYPE_OK=0G .PSECT -- input prompt string missing;S .MEXIT, .ENDC .IF BLANK RESULT_STRING/ .ERROR 0;ASK -- input result string missing;E .MEXITC .ENDC .IF BLANK RESULT_LENGTH/ .ERROR 0;ASK -- input result length missing;C .MEXITT .ENDC .EXTERNAL LIB$GET_'FROM __ARG_COUNT=3 .IF IDENTICAL ,D .IF NOT_BLANK FLAGS PUSHAL FLAGS __ARG_COUNT=4 .ENDC .ENDC PUSHAW RESULT_LENGTHP PUSHAL PROMPT_STRINGa PUSHAL RESULT_STRING$ CALLS #__ARG_COUNT, G$N/.MACRO CONCAT DEST=, S1, S2, S3, S4, S5, S6, S7I .IF BLANK DEST+ .ERROR 0;CONCAT -- destination required;C .MEXIT. .ENDC .IF BLANK S1o: .ERROR 0;CONCAT -- at least one source string required; .MEXITC .ENDC .EXTERNAL STR$CONCATM __ARG_COUNT=1$ .IRP S_NAME,  .IF NOT_BLANK S_NAMES PUSHAQ S_NAMEI __ARG_COUNT=__ARG_COUNT+1 .ENDC .ENDR PUSHAQ DEST'_DS! CALLS #__ARG_COUNT, G^STR$CONCATG FIND_LENGTH DEST .ENDM CONCATwwLENGTHww .MACRO RESET_PSECT .IF NOT_DEFINED __PS_LEVEL@ .ERROR 0;RESET_PSECT -- attempt to RESET psect without a SET; .MEXIT .ENDC .IF EQUAL __PS_LEVEL+ .ERROR 0;RESET_PSECT -- too many resets; .MEXIT .ENDC __PS_LEVEL=__PS_LEVEL-1 .RESTORE_PSECT.ENDM RESET_PSECTww: .MACRO RUN PROGRAM .IF BLANK PROGRAM% .ERROR 0;RUN -- nothing to run...; .MEXIT .ENDC .EXTERNAL LIB$RUN_PROGRAM[@+ SNEDDON_D DEF_PSECT SET_PSECT RESET_PSECTDISPLAYASKDORUNSPAWNWAIT ALLOC_STRING FIND_LENGTHCONCATCOLLAPSEAOBLEQ_WAOBLSS_WBBCCI_WBBCC_WBBCS_WBBC_WBBSC_WBBSSI_WBBSS_WBBS_WBCC_WBCS_WBEQLU_WBEQL_WBGEQU_WBGEQ_WBGTRU_WBGTR_WBLBC_WBLBS_WBLEQU_WBLEQ_WBLSSU_WBLSS_WBNEQU_WBNEQ_WBVC_WBVS_WSOBGEQ_WSOBGTR_W 9Z WOPDBSOPS _OPCDEF"~8Z.macro _opcdef gbl$defini opc,gbl$def opc$b_rqstcode .blkb 1O$def opc$b_scope .blkb 1$def opc$l_options .blkl 1$def opc$l_rq_options .blkl 1E$def opc$l_attnmask1 .blkl 1$def opc$l_attnmask2 .blkl 1$def opc$l_rqstid .blkl 1C$def opc$l_uic .blkl 1E$def opc$k_hdr_sizeF __save = . . = __save!$def opc$w_request_length .blkw 1M$def opc$t_request_textB$def opc$k_request_min_size . = __save"$def opc$w_security_length .blkw 1$def opc$t_s .LISTSTRING'_S==BYTE_COUNTiSTRING'_T:: .BLKB STRING'_S.STRING:: .LONG STRING'_S .ADDRESS STRING'_TSTRING'_DS:: .LONG STRING'_S .ADDRESS STRING'_T .NLIST .IF_FALSE .LISTSTRING'_S=BYTE_COUNTSTRING'_T: .BLKB STRING'_SSTRING: .LONG STRING'_S .ADDRESS STRING'_TSTRING'_DS: .LONG STRING'_S .ADDRESS STRING'_T .NLIST .ENDC.ENDM ALLOC_STRINGww 6.MACRO DEF_PSECT PSECT_NAME, TYPE=CODE, ALIGNMENT=PAGE .IF BLANK PSECT_NAME' .ERROR 0;DEF_PSECT -- name is blank; .MEXIT .ENDC __TYPE_OK=1 .IF IDENTICAL , __TYPE_OK=0E .PSECT PSECT_NAME PIC,USR,CON,REL,GBL,SHR,EXE,RD,NOWRT,'ALIGNMENT' .ENDC .IF IDENTICAL , __TYPE_OK=0G .PSECT PSECT_NAME PIC,USR,CON,REL,GBL,NOSHR,NOEXE,RD,WRT,'ALIGNMENT' .ENDC .IF IDENTICAL , __TYPE_OK=0G .PSECT PSECT_NAME PIC,USR,CON,REL,GBL,SHR,NOEXE,RD,NOWRT,'ALIGNMENT' .ENDC .IF NOT_EQUAL __TYPE_OK= .ERROR 0;DEF_PSECT -- PSECT must be CODE, DATA or RO_DATA; .ENDC.ENDM DEF_PSECTww`C).MACRO SET_PSECT PSECT_NAME, SAVE_CONTEXT .IF BLANK PSECT_NAME' .ERROR 0;SET_PSECT -- name is blank; .MEXIT .ENDC .IF NOT_DEFINED __PS_LEVEL __PS_LEVEL=0 .ENDC .IF BLANK SAVE_CONTEXT .SAVE_PSECT .ENDC .IF NOT_BLANK SAVE_CONTEXT .SAVE_PSECT LOCAL_BLOCK .ENDC .PSECT PSECT_NAME __PS_LEVEL=__PS_LEVEL+1.ENDM SET_PSECTwwP.MACRO RESET_PSECT .IF NOT_DEFINED __PS_LEVEL@ .ERROR 0;RESET_PSECT -- attempt to RESET psect without a SET; .MEXIT .ENDC .IF EQUAL __PS_LEVEL+ .ERROR 0;RESET_PSECT -- too many resets; .MEXIT .ENDC __PS_LEVEL=__PS_LEVEL-1 .RESTORE_PSECT.ENDM RESET_PSECTww] .MACRO DISPLAY DESCRIPTOR .IF BLANK DESCRIPTOR* .ERROR 0;DISPLAY -- nothing to display; .MEXIT .ENDC .EXTERNAL LIB$PUT_OUTPUT PUSHAQ DESCRIPTOR CALLS #1, G^LIB$PUT_OUTPUT .ENDM DISPLAYww$M.MACRO ASK FROM=INPUT, PROMPT_STRING=, RESULT_STRING=, RESULT_LENGTH=, FLAGS= .IF DIFFERENT ,! .IF DIFFERENT ,# .IF DIFFERENT ,E .ERROR 0;ASK -- input source must be INPUT,COMMAND or FOREIGN; .MEXIT .ENDC .ENDC .ENDC .IF BLANK PROMPT_STRING/ .ERROR 0;ASK $^LIB$GET_'FROM .ENDM ASKww8.MACRO DO COMMAND .IF BLANK COMMAND# .ERROR 0;DO -- nothing to do...; .MEXIT .ENDC .EXTERNAL LIB$DO_COMMAND PUSHAL COMMAND CALLS #1, G^LIB$DO_COMMAND.ENDM DOww ;.MACRO RUN PROGRAM .IF BLANK PROGRAM% .ERROR 0;RUN -- nothing to run...; .MEXIT .ENDC .EXTERNAL LIB$RUN_PROGRAM PUSHAL PROGRAM CALLS #1, G^LIB$RUN_PROGRAM .ENDM RUNww ;.MACRO SPAWNF.MACRO WAIT SECONDS .IF BLANK SECONDS+ .ERROR 0;WAIT -- no wait time specified; .MEXIT .ENDC .EXTERNAL LIB$WAIT PUSHAF SECONDS CALLS #1, G^LIB$WAIT .ENDM WAITwwI6.MACRO ALLOC_STRING STRING=, BYTE_COUNT=, GBL=NOGLOBAL .IF BLANK STRING* .ERROR 0;ALLOC_STRING -- no name given; .MEXIT .ENDC .IF BLANK BYTE_COUNT0 .ERROR 0;ALLOC_STRING -- no byte count given; .MEXIT .ENDC .IF IDENTICAL ,f]/.MACRO AOBLSS_W LIMIT, INDEX, DEST, ?INT, ?NEXT AOBLSS LIMIT, INDEX, INT BRB NEXT INT: BRW DESTNEXT:.ENDM AOBLSS_Wwwf]+.MACRO BBCCI_W POS, BASE, DEST, ?INT, ?NEXT BBCCI POS, BASE, INT BRB NEXT INT: BRW DESTNEXT: .ENDM BBCCI_Www t`$.MACRO BBCC_W POS, BASE, DEST, ?NEXT BBSC POS, BASE, NEXT BRW DESTNEXT: .ENDM BBCC_Www t`$.MACRO BBCS_W POS, BASE, DEST, ?NEXT BBSS POS, BASE, NEXT BRW  t`$.MACRO BBSC_W POS, BASE, DEST, ?NEXT BBCC POS, BASE, NEXT BRW DESTNEXT: .ENDM BBSC_Wwwa+.MACRO BBSSI_W POS, BASE, DEST, ?INT, ?NEXT BBSSI POS, BASE, INT BRB NEXT INT: BRW DESTNEXT: .ENDM BBSSI_Wwwe$.MACRO BBSS_W POS, BASE, DEST, ?NEXT BBCS POS, BASE, NEXT BRW DESTNEXT: .ENDM BBSS_Wwwe#.MACRO BBS_W POS, BASE, DEST, ?NEXT BBC POS, BASE, NEXT BRW DESTNEXT: .ENDM BBS_Www$ f.MACRO BCS_W DEST, ?NEXT BCC NEXT BRW DESTNEXT: .ENDM BCS_Www"k.MACRO BEQLU_W DEST, ?NEXT BNEQU NEXT BRW DESTNEXT: .ENDM BEQLU_Www"k.MACRO BEQL_W DEST, ?NEXT BNEQ NEXT BRW DESTNEXT: .ENDM BEQL_Www l.MACRO BGEQU_W DEST, ?NEXT BLSSU NEXT BRW DESTNEXT: .ENDM BGEQU_Www l.MACRO BGEQ_W DEST, ?NEXT BLSS NEXT BRW DESTNEXT: .ENDM BGEQ_Www" `o.MACRO BLBC_W SRC, DEST, ?NEXT BLBS SRC, NEXT BRW DESTNEXT: .ENDM BLBC_Www`o.MACRO BLBS_W SRC, DEST, ?NEXT BLBC SRC, NEXT BRW DESTNEXT: .ENDM BLBS_Www=q.MACRO BLEQU_W DEST, ?NEXT BGTRU NEXT BRW DESTNEXT: .ENDM BLEQU_Www=q.MACRO BLEQ_W DEST, ?NEXT BGTR NEXT BRW DESTNEXT: .ENDM BLEQ_Www@Jt.MACRO BLSSU_W DEST, ?NEXT BGEQU NEXT BRW DESTNEXT: .ENDM BL$ @Jt.MACRO BLSS_W DEST, ?NEXT BGEQ NEXT BRW DESTNEXT: .ENDM BLSS_WwwWw.MACRO BNEQU_W DEST, ?NEXT BEQLU NEXT BRW DESTNEXT: .ENDM BNEQU_WwwWw.MACRO BNEQ_W DEST, ?NEXT BEQL NEXT BRW DESTNEXT: .ENDM BNEQ_Www x.MACRO BVC_W DEST, ?NEXT BVS NEXT BRW DESTNEXT: .ENDM BVC_Www x.MACRO BVS_W DEST, ?NEXT BVC NEXT BRW DESTNEXT: .ENDM BVS_Www x#ecurity_text$def opc$k_security_min_size . = __save$def opc$t_reply_opr$def opc$k_reply_min_size . = __save$def opc$t_oprenable_opr$def opc$k_operenable_min_size . = __save$def opc$t_logfile_opr$def opc$k_logfile_min_size . = __save$def opc$t_status_opr$def opc$k_status_min_size . = __save$def opc$k_cancel_min_size . = __save$def opc$k_timestamp_min_size . = __save$def opc$k_shutdown_min_size$vield opc,0,<- &$- - - >$vield opc,0,<- - - - >$vield opc,0,<- - - - - >$vield opc,0,<- - >$vield opc,0,<- - >$vield opc,0,<- - - - - - - - >$equlst opc$k_,gbl,,,<- - - - - >$equlst opc$k_,gbl,,,<- - - - - >$equlst opc$_x_,gbl,,,<- - - - - - - - - - - - - >$defend opc,gbl .endm _opcdefww