2! PROGRAM : NPRREQ.BAS - Network Print Request Requestor 5! VERSION : V1.0 6! EDIT : 00 7! EDIT DATE : 06-Jul-87 10 EXTEND 11 ! & & & ! C O P Y R I G H T & & & ! Copyright (C) 1987 by Terence M. Kennedy & ! & ! & ! This software is furnished under a license and may be used and & ! copied only in accordance with the terms of such license and & ! with the inclusion of the above copyright notice. This & ! software or any other copies thereof may not be provided or & ! otherwise made available to any other person. No title to and & ! ownership of the software is hereby transferred. & ! & ! The information in this software is subject to change without & ! notice and should not be construed as a commitment by either & ! Terence M. Kennedy or Saint Peter's College. & ! & !******************************************************************* & & 20 ! & & & ! M O D I F I C A T I O N H I S T O R Y & & & ! VER/ED EDIT DATE REASON & ! 00 06-Jul-87 Original Version & & & 30 ! & & & ! V A R I A B L E U S A G E & & & ! VARIABLE USAGE & & 100 ! "RUN" ENTRY - PRINT ERROR MESSAGE & & CCLENT%=0% & \ GOSUB 32300 110 PRINT "?Please use the DCL PRINT command" & \ GOTO 32767 & ! SET UP ERROR TRAP, PRINT SIGNON & ! PRINT ERROR MESSAGE, EXIT & 1000 ! MAIN ROUTINE - SEE IF QUEUE SPEC IS REMOTE & & PRINT "** command is ";COMND$ & \ QUENAM$=FNA$("/QU*EUE","") & \ GOTO 2000 IF QUENAM$="" & \ I%=INSTR(1%,QUENAM$,"::") & \ GOTO 1010 IF I%<>0% & \ I%=INSTR(1%,QUENAM$,"@") & \ GOTO 1020 IF I%<>0% & \ GOTO 2000 & ! EXTRACT QUEUE NAME & ! IF NULL, MUST BE DEFAULT ON LOCAL NODE & ! ELSE LOOK FOR NODE::QUEUE OR QUEUE@NODE SPECS & ! IF NOT FOUND, MUST BE LOCAL NON-DEFAULT QUEUE 1010 NODE$=LEFT(QUENAM$,I%-1%) & \ QUEUE$=MID(QUENAM$,I%+2%,LEN(QUENAM$)) & \ GOTO 3000 IF NODE$=HSTNOD$ & \ GOTO 1030 & ! SPLIT SPEC INTO NODE, QUEUE ! IF DEST NODE=SOURCE NODE, PRINT DIRECTLY & 1020 QUEUE$=LEFT(QUENAM$,I%-1%) & \ NODE$=MID(QUENAM$,I%+1%,LEN(QUENAM$)) & \ GOTO 3000 IF NODE$=HSTNOD$ & ! SPLIT SPEC INTO QUEUE, NODE & ! IF DEST NODE=SOURCE NODE, PRINT DIRECTLY & 1030 URP$="NPRINT/QUEUE="+QUEUE$+FRONT$+BACK$ & \ URP$=CVT$$(URP$,189%) & \ PRINT "** routing to node ";NODE$;" with command ";URP$ & \ GOTO 32767 & ! GENERATE REMOTE COMMAND STRING & ! PACK SAME & ! PRINT DEBUG INFO, EXIT & 2000 ! NOT A NETWORK PRINT REQUEST, ROUTE TO LOCAL SERVER & & URP$="$_PRINT "+COMND$ & \ URP$=CVT$$(URP$,189%) & \ PRINT "** Issuing command ";URP$;" to local PBS server." & \ A$=SYS(CHR$(14%)+URP$) & \ GOTO 32767 & ! GENERATE LOCAL COMMAND STRING & ! PACK SAME & ! GO ISSUE THE COMMAND & 3000 ! NETWORK PRINT REQUEST FOR SAME NODE, TRANSLATE TO LOCAL REQUEST & & URP$="$_PRINT "+FRONT$+"/QUEUE="+QUEUE$+BACK$ & \ URP$=CVT$$(URP$,189%) & \ PRINT "** Issuing command ";URP$;" to local PBS server." & \ A$=SYS(CHR$(14%)+URP$) & \ GOTO 32767 & ! GENERATE LOCAL COMMAND STRING WITH QUEUE NAME INSERTED & ! PACK SAME & ! GO ISSUE THE COMMAND & 30000 ! CCL ENTRY POINT - SET UP FOR PROCESSING, GET COMMAND LINE & & CCLENT%=1% & \ GOSUB 32300 & \ COMND$=SYS(CHR$(7%)) & \ I%=INSTR(1%,COMND$,"::") & \ GOTO 110 IF I%=0% & \ HSTNOD$=LEFT(COMND$,I%-1%) & \ J%=INSTR(1%,HSTNOD$," ") & \ HSTNOD$=MID(HSTNOD$,J%+1%,LEN(HSTNOD$)) & \ COMND$=" "+MID(COMND$,I%+2%,LEN(COMND$)) & \ GOTO 1000 & ! SET UP ERROR TRAP & ! GET CORE COMMON & ! ENSURE ENTRY VIA PRINT.COM & ! GET RID OF PROGRAM NAME & ! GET THIS SYSTEM'S NODE NAME & ! GO TO MAIN CODE & 32300 ! INITIALIZE ERROR HANDLING, DEFINE FUNCTIONS, PRINT SIGNON MESSAGE & & ON ERROR GOTO 32500 & \ DEF* FNE$(ERNO%) & \ FNE$=CVT$$(RIGHT(SYS(CHR$(6%)+CHR$(9%)+CHR$(ERNO%)),3%),5%) & \ FNEND & ! FUNCTION TO RETURN ERROR MSG & \ DEF* FNA$(TEMPLATE$,DEFAULT$) & \ REQD%=INSTR(1%,TEMPLATE$,"*") & \ REQD$=LEFT(TEMPLATE$,REQD%-1%) & \ OPTL%=INSTR(1%,COMND$,REQD$) & \ OPTL$=MID(TEMPLATE$,REQD%+1%,LEN(TEMPLATE$)) & \ FRONT$=LEFT(COMND$,OPTL%-1%) & \ GOTO 32310 IF OPTL%=0% & \ REST$=MID(COMND$,OPTL%+REQD%-1%,LEN(COMND$)) & \ FOR I%=1% TO LEN(OPTL$)+1% & \ GOTO 32320 IF MID(REST$,I%,1%)="=" & \ GOTO 32310 IF MID(OPTL$,I%,1%)<>MID(REST$,I%,1%) & \ NEXT I% & \ GOTO 32320 32310 FNA$=DEFAULT$ & \ FRONT$=COMND$ & \ BACK$="" & \ GOTO 32340 32320 TEMP$=MID(REST$,I%+1%,LEN(REST$)) & \ TERM%=INSTR(1%,TEMP$,"/") & \ GOTO 32330 IF TERM%<>0% & \ TERM%=INSTR(1%,TEMP$," ") & \ GOTO 32330 IF TERM%<>0% & \ FNA$=TEMP$ & \ BACK$="" & \ GOTO 32340 32330 FNA$=MID(TEMP$,1%,TERM%-1%) & \ BACK$=MID(TEMP$,TERM%,LEN(TEMP$)) 32340 FNEND & ! FUNCTION TO PARSE ALPHA SWITCHES & \ RETURN IF CCLENT%=1% & \ PRINT "NPRREQ V1.0-00 "; & \ PRINT FNE$(0%) & \ PRINT & \ RETURN & 32500 ! ERROR HANDLERS & & ERNO%=ERR & 32510 PRINT FNE$(ERNO%);" at line";ERL & \ RESUME 32767 & ! ERROR WE DON'T HANDLE, PANIC & 32767 END