PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 1 10 !********************************************************************* & ! PDPLBR - PDP LIBRARIAN * & ! * & ! D I S C L A I M E R * & ! ------------------- * & ! THIS SOFTWARE HAS NO GUARANTEES, EXPRESSED OR * & ! IMPLIED, AND IS FREE TO BE COPIED, REPRODUCED * & ! OR MODIFIED. ANYONE WHO HAS A COPY MAY USE * & ! IT, WITH THE FOLLOWING RESTRICTIONS: * & ! 1. THIS DISCLAIMER MUST BE INCLUDED * & ! 2. THIS SOFTWARE MUST NOT BE SOLD, * & ! (ONLY GIVEN AWAY FREELY) * & ! * & !********************************************************************* & ! AUTHOR AND AUTHOR'S COMPANY ASSUMES NO RESPONSIBILITY FOR * & ! USE OR RELIABLITY OF THIS SOFTWARE * & !********************************************************************* & ! PROGRAMMER: JIM HOBBS * & ! ADOLPH COORS COMPANY, * & ! GOLDEN, CO. 80401 * & ! (303) 277-2855 * & ! DATE WRITTEN: JULY 1981 * & ! DESCRIPTION: THIS PROGRAM WILL ALLOW PROGRAMMERS TO MOVE * & ! SOURCES, COMMAND FILES, ODL FILES, COMPILED * & ! TASKS BETWEEN THE LIBRARY, PRODUCTION AND * & ! DEVELOPMENT ACCOUNTS WITHOUT THE NEED FOR * & ! MANUALLY REQUESTING THESE TRANSFERS. * & ! & ! THIS PROGRAM TAKES INTO CONSIDERATION THE * & ! FILES REQUIRED FOR BASIC PLUS AND BASIC PLUS * & ! TWO SOURCES, DIFFERENCE IN COMPILED EXTENSION* & ! ETC. ALSO IN MOVING MAPS AND SUBROUTINES ONL* & ! SPECIFIC REQUIRED FILES ARE COPIED EITHER INT* & ! OR OUT OF ACCOUNTS. * & ! & ! THERE WILL BE CHECKING AGAINST A LIBRARIAN * & ! FILE WHICH WILL KEEP HISTORY AS WELL AS * & ! WHO HAS A PROGRAM CHECKED OUT CURRENTLY. * & ! WHEN A PROGRAM IS CHECKED OUT FOR MODIFICATIO* & ! NO ONE ELSE WILL BE ABLE TO CHECK THE SAME * & ! PROGRAM OUT AT THE SAME TIME. * & ! & ! THERE IS A CCL ENTRY POINT INTO THIS PROGRAM * & ! BUT THERE IS NO CHAIN ENTRY ALLOWED * & ! & ! THERE ARE TWO TYPES OF 'HELP' WHICH CAN BE * & ! PRINTED FOR THE USER. THE FIRST IS A COMPLET* & ! DESCRIPTION OF HOW TO USE THIS PROGRAM AND TH* & ! SWITCHES WHICH ARE USED. & ! THE SECOND IS A BRIEF HELP, MORE TOWARDS SHOR* & ! EXAMPLES OF THE MOST COMMONLY USED FUNCTIONS * & ! OF THIS PROGRAM & ! & ! & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 2 ! NOTE: & ! THIS PROGRAM IS DESIGNED TO CREATE PRIVILEGED & ! TASKS. (ALLOW CROSS ACCOUNT FILE ACCESS) & ! FEATURE PATCH OF 3.5.22 APRIL 81 MUST BE APPLIED & ! TO ALLOW THIS PROGRAM TO CREATE <240> TASKS & ! & 15 ! MODIFICATION HISTORY & ! DATE PROGRAMMER REASON & ! & ! 30-JUL-81 JIM HOBBS MODIFIED UPDATE LOGIC SO THAT & ! /CO/RO WOULD NOT UPDATE & ! AND DESTROY HISTORY. & ! & ! 28-DEC-81 JIM HOBBS CHANGES MADE WERE: & ! ALLOW USER TO /RO ANY & ! FILE REGUARDLESS OF & ! BEING CHECKED OUT OR NOT & ! INCLUDE NEW SWITCH, /EXC & ! ALLOW SAVE PROGRAM AND & ! EXISTING TASK TO BE & ! REVERSED IF NEW TASK IS & ! BAD & ! INCLUDE NEW SWITCH, /NOBLD & ! TO COPY BP2 SOURCE WITH & ! NO CMD ODL FILES & ! & 130 COMMON (DATPRM) DATE.1900%, DATE.STRING$ = 18%, DATE.JUL, ERRFLAG% & ! DATE CONVERSION COMMON STATEMENTS, SUBPROGRAM DATECV & ! DEFINE RETURNED FIELDS & ! DATE.1900% = DAYS IN CENTURY, JAN. 1, 1901 = 1 & ! DATE.STRING = DATE IN CHARACTER FORMAT & ! DATE.JUL = JULIAN DATE YYDDD & ! ERRFLAG% = ERROR FLAG, TURNED ON IF INVALID INPUT DATE & ! & ! VALID INTYPES: & ! 1% = JULIAN DATE YYDDD, 78029 & ! 2% = MM/DD/YY, 01/29/78 & ! 3% = MMDDYY, 012978 & ! 4% = DAYS FROM JAN. 1, 1901, DDDDD, 28253 & ! 5% = STANDARD SYSTEM DATE DD-Mmm-YY, 28-Jan-78 & ! 6% = YYMMDD & ! (NOTE THAT THE LAST TWO LETTERS OF MONTH ARE LOWER CASE) & ! & ! VALID OUTTYPE%, RETURNED FORMAT AND FIELD ARE AS FOLLOWS & ! 1% = JULIAN DATE, YYDDD, 78027, DATE.JUL & ! 2% = MM/DD/YY, 01/27/78 & ! 3% = MMDDYY, 012778, DATE.STRING$ & ! 4% = DAYS SINCE JAN. 1, 1901, DDDDD, 28253, DATE.1900% & ! 5% = CALANDER DATE JANUARY 27, 1978, DATE.STRING$ & ! 6% = DAY OF WEEK, FRIDAY & ! 7% = YYMMDD & ! & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 3 ! CALL DATECV WITH THESE PARAMETERS ONLY & ! IF INVALID INTYPE%, OUTYPE%, OR INVALID INPUT DATE & ! THEN ERRFLAG IS SET TO 1% & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 4 900 MAP (PDPLBR) PDP.MAXSIZ$ = 56% & \ MAP (PDPLBR) PDP.PRMKEY$ = 10% & \ MAP (PDPLBR) PDP.PROGRAM.NAME$ = 10%, & PDP.COMPILED.DISK$ = 4%, & PDP.COMPILED.ACCOUNT%, & PDP.PROGRAM.LOCKED%(4%), & PDP.ACCOUNT.RECEIVED%(4%), & PDP.ACCOUNT.DATE%(4%), & PDP.ACCOUNT.TIME%(4%) & \ MAP (PDPLBR) PDP.ACCOUNTS$ = 10%, & PDP.DISK$(7%) = 3%, & PDP.ACCOUNT%(7%) & \ PDP.MAXSIZ$ = "" & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 5 910 MAP (FSPFUN) DUMM$ = 32% & \ MAP (FSPFUN) DUMM%(15%) & ! & ! SET UP NEEDED MAPS FOR FILE STRING SCAN FUNCTION & ! AND FOR FSP FUNCTION CALL (BP2 FUNCTION) & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 6 1000 ON ERROR GOTO 32000 & \ I% = CTRLC & \ PPN% = PEEK(PEEK(PEEK(520%)+8%)+24%) & \ I% = SWAP%(PPN%) AND 255% & \ GOTO 1010 IF I% = 1% OR I% = 80% & \ PRINT #0%, "?What?" & \ GOTO 32767 & ! & !***************************************************************** & !***************************************************************** & !** CHECK PROJECT NUMBER TO SEE IF THEY SHOULD USE ** & !** THIS PROGRAM, THIS MAY NEED TO BE EXPANDED OR ** & !** CHANGED, OR ENTIRELY REMOVED ** & !***************************************************************** & !***************************************************************** & ! & ! IF NOT VALID USER, THEN PRINT BASIC MONITOR '?WHAT?' & ! AND EXIT PROGRAM & ! & 1010 CRLF$ = CHR$(13%) + CHR$(10%) & \ DIM SWITCH$(25%), SWITCH%(25%) & \ SWITCH$(I%) = "" FOR I% = 0% TO 25% & \ SWITCH%(I%) = 0% FOR I% = 0% TO 25% & \ USER.ACC$ = FNACC$(PPN%) & \ LBR.CHNL% = 2% & \ KB.CHNL% = 3% & \ IN.CHNL% = 4% & \ OUT.CHNL% = 5% & \ HLP.CHNL% = 6% & \ OPEN "TI:" AS FILE #KB.CHNL% & \ SWAP.CHNL% = SWAP%(IN.CHNL%) + OUT.CHNL% & \ RESTORE & \ READ MAX.SWITCHES% & \ FOR J% = 0% TO MAX.SWITCHES% & \ READ SWITCH$(J%), SWITCH%(J%) & \ NEXT J% & \ GOTO 1080 IF CCL.ENTRY% & ! & ! SET ERROR TRAPPING & ! SET CONTROL C TRAPPING & ! DIMENSION SWITCH % AND $ VARIABLES & ! OPEN KB AS FILE & ! FIND THE CURRENT USER'S PROG,PROJ INTEGER VALUE & ! SKIP PROMPTS IF CCL ENTRY & ! & 1020 PRINT #KB.CHNL%, "PDPLBR" + CHR$(9%) + ERT$(0%) & + CHR$(9%) + DATE$(0%) + CHR$(9%) + TIME$(0%) & \ GOTO 1060 & ! & ! PRINT HEADER ID & ! & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 7 1040 PRINT #KB.CHNL%, "'/HE' - HELP, '/BR' - BRIEF HELP" & \ CCL.ENTRY% = 0% & ! & ! PRINT MESSAGE TO ASK FOR HELP & ! ALSO, SINCE THIS MIGHT HAVE BEEN A CCL ENTRY & ! AND IF THERE WAS NO DATA IN DATA.LINE$ & ! THEN LET THE USER ENTER MORE THAN JUST & ! ONE COMMAND & ! & 1060 RESTORE & \ READ MAX.SWITCHES% & \ FOR J% = 0% TO MAX.SWITCHES% & \ READ SWITCH$(J%), SWITCH%(J%) & \ NEXT J% & \ FUNCTION% = 0% & \ PRINT #KB.CHNL%, CRLF$ + "> "; & \ INPUT LINE #KB.CHNL%, DATA.LINE$ & \ DATA.LINE$ = EDIT$(DATA.LINE$,-1%) & ! & ! RE INITIALIZE SWITCHES BEFORE EACH PROMPT & ! GET INPUT, COMPRESS AND STRIP EVERYTHING OFF INPUT & ! & 1080 GOTO 1040 IF DATA.LINE$ = "" & \ GOTO 28000 IF INSTR(1%,DATA.LINE$,"/HE") & \ GOTO 28500 IF INSTR(1%,DATA.LINE$,"/BR") & ! & ! IF NOTHING WAS ENTERED GOBACK AND PRNT HELP MESSAGE PROMPT & ! IF ASK FOR HELP , GIVE IT & ! RETURN FROM HELP BACK TO INPUT PROMPT & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 8 4000 OPEN "DB0:[1,3]PDPLBR.IND" FOR INPUT AS FILE #LBR.CHNL%, & ORGANIZATION INDEXED FIXED, & ACCESS MODIFY, ALLOW MODIFY, & MAP PDPLBR, & PRIMARY KEY PDP.PRMKEY$ & ! & \ LSET PDP.ACCOUNTS$ = "ACCOUN LOC" & \ GET #LBR.CHNL%, KEY #0% EQ PDP.ACCOUNTS$ & \ LIBR.SOUR.ACC$ = PDP.DISK$(0%) + ":" + FNACC$(PDP.ACCOUNT%(0%)) & \ LIBR.BLD.ACC$ = PDP.DISK$(1%) + ":" + FNACC$(PDP.ACCOUNT%(1%)) & ! & ! OPEN MASTER LIBRARY FILE & ! FIND LIBRARY SOURCE ACCOUNT & ! FIND LIBRARY BUILD ACCOUNT (CMD, ODL) & ! & ! UP TO EIGHT DIFFERENT DISKS, ACCOUNTS CAN & ! BE SPECIFIED IN CURRENT RECORD FOR MULTIPLE & ! (SEPERATE) PROGRAM LIBRARIES & ! & 4020 DATA.LINE$ = DATA.LINE$ + "/" & \ I% = INSTR(1%,DATA.LINE$,"/") & \ FILE.NAME$ = LEFT(DATA.LINE$,I%-1%) & \ DATA.LINE$ = RIGHT(DATA.LINE$,I%) & ! & ! PULL THE FILE NAME OFF THE INPUT DATA LINE & ! RESET THE DATA LINE WITH ONLY THE OPTION SWITCHES & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 9 4100 !********************************************************************* & ! FIND WHICH FUNTION IS BEING REQUESTED AND WHAT SWITCHES ARE * & ! SPECIFIED ON THE INPUT DATA LINE * & ! * & !********************************************************************* & FOR J% = 0% TO MAX.SWITCHES% & \ I% = INSTR(1%,DATA.LINE$,SWITCH$(J%)) & \ IF I% & THEN SWITCH%(J%) = -1% & \ I1% = INSTR(I%+1%,DATA.LINE$,"/") & \ DATA.LINE$ = LEFT(DATA.LINE$,I%-1%) + RIGHT(DATA.LINE$,I1%) & ! & 4120 NEXT J% & \ GOTO 4140 IF DATA.LINE$ = "/" & \ PRINT #KB.CHNL%, CRLF$ + "Invalid switches: " & + LEFT(DATA.LINE$,LEN(DATA.LINE$)-1%) & \ GOTO 32767 IF CCL.ENTRY% & \ GOTO 1060 & ! & ! FOR ALL SWITCHES, FIND IF THEY EXIST IN THE COMMAND LINE & ! IF THEY DO, THEN SET SWITCH%() TRUE, AND REMOVE THE COMMAND & ! FROM THE LINE & ! IF AFTER ALL VALID COMMANDS HAVE BEEN EXTRACTED, THERE IS & ! STILL SOMETHING LEFT, THEN PRINT AN ERROR MESSAGE, & ! GO TO END AND QUIT IF CCL ENTRY, OTHERWISE GOBACK AND PROMPT & ! USER FOR INPUT AGAIN & ! & ! & ! SWITCH%(0%) = COPY & ! SWITCH%(1%) = READ ONLY & ! & ! SWITCH%(2%) = MAP FILE & ! SWITCH%(3%) = SUBROUTINES & ! SWITCH%(4%) = BASIC PLUS SOURCE & ! SWITCH%(5%) = BASIC PLUS TWO SOURCE (DEFAULT) & ! SWITCH%(6%) = DO NOT REPLACE BASIC PLUS SOURCE & ! SWITCH%(7%) = DO NOT REPLACE BASIC PLUS TWO SOURCE & ! & ! SWITCH(8%) = NOCHANGE & ! & ! SWITCH%(9%) = REPLACE & ! SWITCH%(10) = REPLACE TASK & ! SWITCH%(10) = REPLACE CMD & ! SWITCH%(12%) = REPLACE ODL & ! SWITCH%(13%) = DO NOT REPLACE TASK & ! SWITCH%(13) = DO NOT REPLACE CMD & ! SWITCH%(15%) = DO NOT REPLACE ODL & ! SWITCH%(16%) = DO NOT REPLACE OBJ & ! SWITCH%(17%) = REPLACE EXISTING SOURCE, TASK, CMD, ODL & ! NO SAVING OF EXISTING FILES & ! SWITCH%(18%) = NEW FILE, NO NEED TO SAVE EXISTING & ! & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 10 ! SWITCH%(19%) = WATCH PROGRESSION OF FILE TRANSFERENCE & ! SWITCH%(20%) = WATCH PROGRESSION OF FILE TRANSFERENCE & ! & ! SWITCH%(21%) = LIST MODULES THAT ARE CURRENTLY OUT & ! AND WHO HAS THEM (PRIVILEGED ONLY) & ! SWITCH%(22%) = LIST ALL MODULES, ALL PREVIOUS UPDATE & ! UPDATE INFORMATION (PRIVILEGED ONLY) & ! SWITCH%(23%) = MANUALLY UPDATE LIBRARIAN RECORDS; ONE & ! RECORD AT A TIME (PRIVILEGED ONLY) & ! SWITCH%(24%) = EXCHANGE OLD TSV FOR EXISTING TASK & ! SWITCH%(25%) = NO BLD TO COPY INTO USER ACCOUNT & ! & 4140 GOTO 4150 UNLESS ( SWITCH%(0%) AND SWITCH%(9%) ) OR & ( SWITCH%(0%) AND SWITCH%(8%) ) OR & ( SWITCH%(8%) AND SWITCH%(9%) ) OR & ( SWITCH%(0%) AND SWITCH%(24%) ) OR & ( SWITCH%(8%) AND SWITCH%(24%) ) OR & ( SWITCH%(9%) AND SWITCH%(24%) ) & \ PRINT #KB.CHNL%, CRLF$ + "Invalid switch combination" & \ GOTO 32767 IF CCL.ENTRY% & \ GOTO 1060 & ! & ! IF SPECIFIED COPY AND REPLACE PRINT ERROR MESSAGE & ! QUIT IF CCL, GO TO PROMPT OTHERWISE & ! & 4150 DUMM$ = SYS(CHR$(6%) + CHR$(-10%) + FILE.NAME$) & \ PROG.EXT$ = "BAS" & \ PROG.EXT$ = "B2S" IF RAD$(DUMM%(5%)) = SPACE$(3%) UNLESS SWITCH%(4%) & \ PROG.EXT$ = RAD$(DUMM%(5%)) IF RAD$(DUMM%(5%)) <> SPACE$(3%) & \ FILE.NAME$ = RAD$(DUMM%(3%)) + RAD$(DUMM%(4%)) + "." + PROG.EXT$ & \ SWITCH%(4%) = -1% IF INSTR(1%,FILE.NAME$,".BAS") & \ SWITCH%(5%) = -1% IF INSTR(1%,FILE.NAME$,".B2S") & \ GOTO 4155 IF SWITCH%(4%) OR SWITCH%(5%) & \ PRINT #KB.CHNL%, CRLF$ + "Invalid file name: " + FILE.NAME$ & + CRLF$ + "MUST be a B2S or BAS file extension!" & \ GOTO 32767 IF CCL.ENTRY% & \ GOTO 1060 & ! & ! MAKE SURE A SWITCH IS SPECIFIED & ! IF USER DID NOT SPECIFICLY APPLY A SWITCH & ! & & 4155 GOTO 4160 IF LEN(FILE.NAME$) < 11% & \ PRINT #KB.CHNL%, CRLF$ + "Invalid file name: " + FILE.NAME$ & \ GOTO 32767 IF CCL.ENTRY% & \ GOTO 1060 & ! & ! FIND OUT IF AN EXTENSION WAS SPECIFIED & ! IF THERE WAS ONE, CHECK TO SEE IF IT IS A BASIC PLUS & ! IF IT WAS THEN SET SWITCH% FLAG, JUST INCASE THE USER & ! DID NOT & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 11 ! IF NOT ADD A DEFAULT OF '.B2S' UNLESS SWITCH% SPECIFIED & ! A BASIC PLUS PROGRAM & ! IF THE FILE NAME IS STILL LESS THAN 11 CONTINUE & ! OTHERWISE PRINT ERROR MESSAGE, IF CCL ENTRY QUIT & ! OTHERWISE GOBACK AND PROMPT AGAIN & ! & & 4160 USER.FILE.NO.EXT$ = LEFT(FILE.NAME$,INSTR(1%,FILE.NAME$,".")) & ! & ! CREATE THE USER ACCOUNT NUMBER AND FILE NAME BUT WITHOUT & ! ANY EXTENSION, (DOES INCLUDE '.' OF FILE NAME) & ! & \ FUNCTION% = 5% IF SWITCH%(8%) & \ FUNCTION% = 6% IF SWITCH%(24%) & \ FUNCTION% = 1% IF SWITCH%(0%) & \ FUNCTION% = 2% IF SWITCH%(9%) & \ FUNCTION% = 3% & IF ( SWITCH%(21%) OR SWITCH%(22%) ) AND & ( SWAP%(PPN%) AND 255% ) = 1% & \ FUNCTION% = 4% IF ( SWITCH%(23%) AND ( SWAP%(PPN%) AND 255% ) = 1% ) & \ GOTO 6040 IF FUNCTION% = 3% OR FUNCTION% = 4% & \ GOTO 6000 IF FUNCTION% & \ PRINT #KB.CHNL%, CRLF$ & + STRING$(3%,7%) & + "'/CO', '/RE', '/NOCHANGE', OR 'EXCHANGE' " & + "MUST be specified !!" & \ GOTO 32767 IF CCL.ENTRY% & \ GOTO 1060 & ! & ! SET THE FUNTION TO BE DONE & ! TO USE FUNCTION THREE, MUST BE PRIVILEGED USER & ! & ! 1 = COPY & ! 2 = REPLACE & ! 3 = LIST CHECKED OUT, OR ALL SOURCES STATUS & ! 4 = MANUAL UPDATE OF PDPLBR FILE & ! 5 = NOCHANGE & ! 6 = EXCHANGE & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 12 6000 !********************************************************************* & ! WE NOW HAVE A VALID FILE NAME, AND ALL VALID SWITCHES HAVE * & ! BEEN SET, NOW FIND OUT IF THE FILE NAME EXISTS IN THE * & ! LIBRARIAN TABLE. (MUST ALLOW FOR NEW ENTRIES, BUT ONLY IN * & ! REPLACING. * & ! * & !********************************************************************* & LSET PDP.PRMKEY$ = FILE.NAME$ & \ GET #LBR.CHNL%, KEY #0% EQ PDP.PRMKEY$ & 6001 GOTO 6040 IF ( PDP.PROGRAM.LOCKED%(0%) AND 1% ) AND & ( FUNCTION% = 2% OR FUNCTION% = 5% ) AND & ( PPN% = PDP.ACCOUNT.RECEIVED%(0%) ) OR & ( PDP.PROGRAM.LOCKED%(0%) = 0% AND FUNCTION% = 1% ) OR & ( FUNCTION% = 1% AND SWITCH%(1%) ) OR & ( FUNCTION% = 6% ) & \ GOTO 6010 UNLESS FUNCTION% = 2% & \ PRINT #0%, CRLF$ & + "Sorry, you cannot replace " + PDP.PRMKEY$ + & ". It was not checked out to you." & \ GOTO 6039 & ! & ! CONTINUE PROCESSING REQUEST IF ONE OF THE FOLLOWING IS TRUE: & ! & ! PROGRAM IS LOCKED, ACTION REQUESTED TO REPLACE OR NOCHANGE & ! AND IS ASKED BY USER WHO HAS IS CHECKED OUT TO THEM & ! OR & ! PROGRAM IS NOT LOCKED, ACTION REQUESTED IS TO CHECK IT OUT & ! OR & ! REGUARDLESS OF LOCK OR NOT, IF REQUEST IS TO COPY READ ONLY & ! LET USER HAVE IT & ! OR & ! EXCHANGE OPTION BEING USED & ! & 6010 GOTO 6020 IF PDP.PROGRAM.LOCKED%(0%) AND 1% & \ PRINT #KB.CHNL%, CRLF$ & + "Program " & + PDP.PRMKEY$ & + " has been copied 'READ ONLY' by:" & + CRLF$ & + FNWHO$(PDP.ACCOUNT.RECEIVED%(0%),PDP.ACCOUNT.DATE%(0%), & PDP.ACCOUNT.TIME%(0%)) & + " --- Continuing" IF PDP.PROGRAM.LOCKED%(0%) AND 2% & \ GOTO 6040 & ! & ! CHECK 'PDP.PROGRAM.LOCKED%(0%)' FOR BIT PATTERN FLAGS & ! ( MAKE SPECIAL NOTE OF PROGRAM LOCKED OUT BUT CURRENT USER & ! IS TRYING TO REPLACE THAT MODULE, AND HE IS THE ONE WHO & ! HAS IT LOCKED OUT) & ! PRINT MESSAGE ACCORDING TO WHAT IS CORRECT & ! & ! 0% = NOT CURRENTLY CHECKED OUT & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 13 ! 1% = CHECKED OUT TO MODIFY & ! 2% = & ! 4% = & ! 8% = & ! 16% = & ! 32% = & ! 64% = & ! 128% = & ! 256% = & ! 512% = & ! & 6020 UNLOCK #LBR.CHNL% & \ PRINT #KB.CHNL%, CRLF$ & + "Sorry ... Program " & + PDP.PRMKEY$ & + " is already checked out to:" & + CRLF$ & + FNWHO$(PDP.ACCOUNT.RECEIVED%(0%),PDP.ACCOUNT.DATE%(0%), & PDP.ACCOUNT.TIME%(0%)) & 6039 GOTO 32767 IF CCL.ENTRY% & \ GOTO 1060 & ! & ! IF PROGRAM IS LOCKED OUT TELL CURRENT USER WHO & ! HAS THE PROGRAM, AND WHAT DAY AND TIME IT WAS TAKEN & ! IF CCL ENTRY GO TO END, OTHERWISE GOBACK AND REPROMPT & ! & 6040 ON FUNCTION% GOSUB 8000, 10000, 12000, 14000, 16000, 18000 & \ GOTO 32767 IF CCL.ENTRY% & \ GOTO 1060 & ! & ! 1% = COPY FROM LIBRARY TO DEVELOPMENT ACCOUNT & ! 2% = COPY FROM DEVELOPMENT TO LIBRARY & ! 3% = LIST PDPLBR.IND FILE (PRIVILEGED ONLY) & ! 4% = UPDATE PDPLBR.IND FILE (PRIVILIEGED ONLY) & ! 5% = REPLACE NOCHANGE & ! 6% = EXCHANGE TSV TO TSK, TSK TO BAD & ! & 6060 GOSUB 14100 & \ LSET PDP.PRMKEY$ = FILE.NAME$ & \ GET #LBR.CHNL%, KEY #0% EQ PDP.PRMKEY$ & \ GOTO 6040 & ! & ! USER WISHES TO ADD NEW PROGRAM INTO LIBRARY & ! SO GO GET THE REQUIRED INFORMATION & ! RE-GET THE SAME RECORD, MUST NOT BE UNLOCKED TO CAN BE & ! UPDATED, NOW GOBACK INTO NORMAL 'GOSUB' OF PROGRAM & ! TO 'REPLACE' ITEMS BACK INTO THE LIBRARY & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 14 8000 !********************************************************************* & ! THIS SUBROUTINE IS THE ONE THAT COPIES FILES FROM THE LIBRARY* & ! ACCOUNTS TO THE USER'S ACCOUNT. * & ! THE ONLY VALID SWITCH IS THE READ ONLY "/CO" * & ! * & !********************************************************************* & PRINT #KB.CHNL%, CRLF$ + "Copying from library accounts " & + LIBR.SOUR.ACC$ + " and " + LIBR.BLD.ACC$ & + " to " + USER.ACC$ IF SWITCH%(19%) OR SWITCH%(20%) & \ FILES.MOVED% = 0% & \ GOTO 8030 IF SWITCH%(1%) & ! & ! CHANGED FROM ORIGINAL DESIGN & ! NOT TO UPDATE HISTORY FILE IF TAKEN ONLY FOR READ ONLY & ! THIS WILL ALSO PREVENT THE NOTICE OF 'READ ONLY' WHEN & ! TAKEN OUT & ! & \ FOR I% = 3% TO 0% STEP -1% & \ PDP.PROGRAM.LOCKED%(I%+1%) = PDP.PROGRAM.LOCKED%(I%) & \ PDP.ACCOUNT.RECEIVED%(I%+1%) = PDP.ACCOUNT.RECEIVED%(I%) & \ PDP.ACCOUNT.DATE%(I%+1%) = PDP.ACCOUNT.DATE%(I%) & \ PDP.ACCOUNT.TIME%(I%+1%) = PDP.ACCOUNT.TIME%(I%) & \ NEXT I% & ! & ! EVERYTHING IS VALID, PROGAM IS NOT CHECKED OUT, SO LET THIS & ! USER HAVE IT. BUT FIRST PUT CURRENT HISTORY BACK ONE AND & ! SHIFT EVERYTHING SO THAT THE LATEST ONE IS THE ONE TO BE LOST & ! & 8020 PDP.PROGRAM.LOCKED%(0%) = 1% & \ PDP.PROGRAM.LOCKED%(0%) = 2% IF SWITCH%(1%) & \ PDP.ACCOUNT.RECEIVED%(0%) = PPN% & \ CALL DATECV(5%,1%,DATE$(0%)) & \ PDP.ACCOUNT.DATE%(0%) = & INT( DATE.JUL - 70000. ) & \ TMP$ = TIME$(0%) & \ PDP.ACCOUNT.TIME%(0%) = & 60% * (24% - VAL( LEFT(TMP$,2%) ) ) - VAL( RIGHT(TMP$,4%) ) & ! & ! FIND THE PROJECT PROGRAMMER NUMBER & ! DALL DATECV FOR THE INTEGER FORMAT OF CURRENT DATE & ! CALCULATE THE INTEGER OF CURRENT TIME & ! GET THE CURRENT USERS ACCOUNT NUMBER & ! & 8030 OUTPUT.FILE$ = FILE.NAME$ & ! & ! SET OUTPUT NAME TO SAME AS THE FILE NAME TO BE TRANSFERRED & ! & 8040 OPEN USER.ACC$ + OUTPUT.FILE$ FOR INPUT AS FILE #OUT.CHNL% & \ CLOSE #OUT.CHNL% & ! & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 15 ! TRY TO OPEN OUTPUT FILE FOR INPUT TO MAKE SURE THAT & ! FILE OF SAME NAME DOES NOT ALREADY EXISTS & ! & 8060 PRINT #KB.CHNL%, CRLF$ + OUTPUT.FILE$ & + " currently exists in your account!!" & + CRLF$ + "Do you wish to supercede it (Y/N) ? "; & \ LINPUT #KB.CHNL%, ANS$ & \ ANS$ = EDIT$(ANS$,-1%) & \ ANS$ = "N" IF ANS$ = "" & \ GOTO 8060 IF ANS$ <> "N" AND ANS$ <> "Y" & \ GOTO 8080 IF ANS$ == "Y" & \ PRINT #KB.CHNL%, "Filename for output: "; & \ LINPUT #KB.CHNL%, OUTPUT.FILE$ & \ OUTPUT.FILE$ = OUTPUT.FILE$ + "." + PROG.EXT$ & IF INSTR(1%,OUTPUT.FILE$,".") = 0% & \ GOTO 8040 & ! & ! FIND OUT IF USER WANTS TO SUPERCEDE EXISTING FILE OR & ! PUT OUTPUT FILE TO DIFFERNT NAME & ! & 8080 DUMM$ = FNFAST.COPY$(LIBR.SOUR.ACC$ + FILE.NAME$, & USER.ACC$ + OUTPUT.FILE$) & \ FILES.MOVED% = FILES.MOVED% + 1024% & 8140 GOTO 8150 UNLESS SWITCH%(2%) OR & SWITCH%(3%) OR & SWITCH%(4%) OR & SWITCH%(25%) & \ PRINT #KB.CHNL%, CRLF$ & + PROG.EXT$ + " file has been copied to your account" & \ GOTO 8300 & ! & ! CLOSE THE INPUT AND OUTPUT FILES & ! SKIP TO NEXT STATEMENT UNLESS THIS IS A MAP OR SUBROUTINE & ! OR BASIC PLUS PROGRAM THAT HAS BEEN COPIED. & ! IF WAS MAP OR SUB THEN PRINT MESSAGE THAT SOURCE HAS BEEN & ! COPIED, AND DO NOT LOOK FOR CMD OR ODL FILES & ! IF WAS A BASIC PLUS PROGRAM, THERE ARE NO CMD OR ODL TO FIND & ! & 8150 FILE.NAME$ = LEFT(FILE.NAME$,INSTR(1%,FILE.NAME$,".")) & \ OUTPUT.FILE$ = LEFT(OUTPUT.FILE$,INSTR(1%,OUTPUT.FILE$,".")) & ! & ! CLOSE THE INPUT AND OUTPUT FILES & ! & 8160 PRINT #KB.CHNL%, CRLF$ + "Copying "+ LIBR.BLD.ACC$+ FILE.NAME$+ "BLD" & + " to "; IF SWITCH%(19%) OR SWITCH%(20%) & \ OPEN LIBR.BLD.ACC$ + FILE.NAME$ + "BLD" FOR INPUT AS FILE #IN.CHNL% & ! & ! OPEN THE "BLD" FILE, WHICH CONTAINS THE CMD THEN THE & ! ODL AS ONE FILE. & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 16 ! & 8180 PRINT #KB.CHNL%, USER.ACC$+ OUTPUT.FILE$ + "CMD"; & IF SWITCH%(19%) OR SWITCH%(20%) & \ OPEN USER.ACC$ + OUTPUT.FILE$ + "CMD" FOR OUTPUT AS FILE #OUT.CHNL% & ! & ! OPEN SAME FILE NAME AS OUTPUT, DON'T CHECK FOR EXISTING & ! FILE THIS TIME & ! & 8200 INPUT LINE #IN.CHNL%, CMD$ UNTIL LEFT(CMD$,10%) = ";**** CMD*" & ! & ! READ FILE UNTIL HAVE FOUND CMD HEADER & ! & 8220 INPUT LINE #IN.CHNL%, CMD$ & \ GOTO 8240 IF LEFT(CMD$,10%) = ";**** ODL*" & \ PRINT #OUT.CHNL%, CMD$; & \ GOTO 8220 & ! & ! PRINT OUT OUTPUT '.CMD' FILE UNTIL FIND ODL HEADER & ! & 8240 CLOSE #OUT.CHNL% & \ PRINT #KB.CHNL%, " and " + USER.ACC$ + OUTPUT.FILE$ + "ODL" & IF SWITCH%(19%) OR SWITCH%(20%) & \ OPEN USER.ACC$ + OUTPUT.FILE$ + "ODL" FOR OUTPUT AS FILE #OUT.CHNL% & ! & ! CLOSE THE CMD FILE AND OPEN THE ODL FILE & ! & 8260 INPUT LINE #IN.CHNL%, CMD$ & \ PRINT #OUT.CHNL%, CMD$; & \ GOTO 8260 & ! & ! READ REST OF FILE INTO OUTPUT '.ODL' FILE & ! ERROR TRAP 11 WILL CATCH END OF FILE & ! & 8280 FILES.MOVED% = FILES.MOVED% + 2048% & \ CLOSE #IN.CHNL%, #OUT.CHNL% & \ PRINT #KB.CHNL%, CRLF$ & + ".B2S, .CMD, and .ODL " & + "files have been copied to your account" & + CRLF$ & ! & ! CLOSE THE INPUT AND OUTPUT FILES & ! PRINT MESSAGE TO USER THAT FILES WERE COPIED SUCCESSFULLY & ! & 8300 UPDATE #LBR.CHNL% & \ RETURN & ! & ! LAST THING TO DO IS TO GOAHEAD AND UPDATE THE RECORD & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 17 ! WITH THE NEWEST INFORMATION & ! RETURN & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 18 10000 !********************************************************************* & ! THIS SUBROUTINE IS THE ONE THAT HANDLES THE MORE COMPLICATED * & ! COPIES FROM DEVELOPMENT ACCOUNT BACK INTO PRODUCTION ACCOUNT * & ! THE TASK, AS WELL AS MOVING THE SOURCE, ODL,CMD BACK TO THEIR* & ! LIBRARY ACCOUNT. * & ! * & !********************************************************************* & \ PRINT #KB.CHNL%, CRLF$ + "Coping from " + USER.ACC$ + " to " & + LIBR.SOUR.ACC$ + " and " + LIBR.BLD.ACC$ & IF SWITCH%(19%) OR SWITCH%(20%) & \ FILES.MOVED% = 0% & ! & 10010 GOTO 10020 IF SWITCH%(6%) OR SWITCH%(7%) & \ PRINT #KB.CHNL%, CRLF$ + "Looking for " + USER.ACC$ + & USER.FILE.NO.EXT$ + PROG.EXT$; & IF SWITCH%(19%) OR SWITCH%(20%) & \ OPEN USER.ACC$ + USER.FILE.NO.EXT$ + PROG.EXT$ & FOR INPUT AS FILE #IN.CHNL%, & MODE 8192% & \ CLOSE #IN.CHNL% & \ PRINT #KB.CHNL%, "....found" IF SWITCH%(19%) OR SWITCH%(20%) & ! & ! IF USER DOES NOT WISH TO TRANSFER SOURCE DO NOT LOOK & ! FOR IT IN THEIR ACCOUNT & ! & 10020 GOTO 10050 IF SWITCH%(2%) & \ GOTO 10025 UNLESS SWITCH%(3%) & \ PRINT #KB.CHNL%, CRLF$ + "Looking for " + USER.ACC$ + & USER.FILE.NO.EXT$ + "OBJ"; IF SWITCH%(19%) OR SWITCH%(20%) & \ OPEN USER.ACC$ + USER.FILE.NO.EXT$ + "OBJ" & FOR INPUT AS FILE #IN.CHNL%, & MODE 8192% & \ CLOSE #IN.CHNL% & \ PRINT #KB.CHNL%, "....found" IF SWITCH%(19%) OR SWITCH%(20%) & \ GOTO 10050 & ! & ! SKIP THIS UNLESS REPLACING A SUBROUTINE & ! IF USER IS REPLACING SUB, THEN MAKE SURE THAT THE 'OBJ' & ! EXISTS & ! & 10025 GOTO 10030 IF SWITCH%(13%) & \ COMP.PROG.EXT$ = "TSK" & \ COMP.PROG.EXT$ = "BAC" IF SWITCH%(4%) & \ PRINT #KB.CHNL%, CRLF$ + "Looking for " + USER.ACC$ + & USER.FILE.NO.EXT$ + COMP.PROG.EXT$; & IF SWITCH%(19%) OR SWITCH%(20%) & \ OPEN USER.ACC$ + USER.FILE.NO.EXT$ + COMP.PROG.EXT$ & FOR INPUT AS FILE #IN.CHNL%, & MODE 8192% & \ CLOSE #IN.CHNL% & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 19 \ PRINT #KB.CHNL%, "....found" IF SWITCH%(19%) OR SWITCH%(20%) & ! & ! & ! IF USER DOES NOT WISH TO TRANSFER TASK DO NOT LOOK FOR IT & ! & 10030 GOTO 10040 IF SWITCH%(4%) OR SWITCH%(14%) & \ PRINT #KB.CHNL%, CRLF$ + "Looking for " + USER.ACC$ + & USER.FILE.NO.EXT$ + "CMD"; & IF SWITCH%(19%) OR SWITCH%(20%) & \ OPEN USER.ACC$ + USER.FILE.NO.EXT$ + "CMD" & FOR INPUT AS FILE #IN.CHNL%, & MODE 8192% & \ CLOSE #IN.CHNL% & \ PRINT #KB.CHNL%, "....found" IF SWITCH%(19%) OR SWITCH%(20%) & ! & ! IF THIS IS A BASIC PLUS PROGRAM THERE IS NO CMD OR ODL & ! IF USER DOES NOT WISH TO TRANSFER CMD DO NOT LOOK FOR IT & ! & 10040 GOTO 10050 IF SWITCH%(15%) & \ PRINT #KB.CHNL%, CRLF$ + "Looking for " + USER.ACC$ + & USER.FILE.NO.EXT$ + "ODL"; & IF SWITCH%(19%) OR SWITCH%(20%) & \ OPEN USER.ACC$ + USER.FILE.NO.EXT$ + "ODL" & FOR INPUT AS FILE #IN.CHNL%, & MODE 8192% & \ CLOSE #IN.CHNL% & \ PRINT #KB.CHNL%, "....found" IF SWITCH%(19%) OR SWITCH%(20%) & ! & ! IF USER DOES NOT WISH TO TRANSFER ODL DO NOT LOOK FOR IT & ! & ! & ! MAKE SURE THAT THE SOURCE, TASK, ODL, AND CMD FILES & ! CURRENTLY EXIST IN USER'S ACCOUNT & ! (AN ERROR ON ANY OF THESE WILL ABORT THE CURRENT COMMAND & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 20 10050 !********************************************************************* & ! IF WE HAVE GOTTEN THIS FAR ALL THE NECESSARY FILES EXIST IN * & ! THE USER'S ACCOUNT. SO NOW START DECIPHERING THE SWITCHES * & ! TO PERFORM THE REQUIRED FILE TRANSFERS. * & ! * & !********************************************************************* & GOTO 10055 IF ( SWITCH%(4%) AND SWITCH%(6%) ) & OR ( SWITCH%(5%) AND SWITCH%(7%) ) & \ SAVE.EXT$ = "B2V" & \ PROG.EXT$ = "B2S" & \ PROG.EXT$ = "BAS" IF SWITCH%(4%) & \ SAVE.EXT$ = "BSV" IF SWITCH%(4%) & \ DEST.ACC$ = LIBR.SOUR.ACC$ & \ FILE1% = 1% & \ FILE2% = 2% & \ GOSUB 11000 & \ NAME TRANSFER.OUT.FILE$ AS TRANSFER.OUT.FILE$ + "<56>" IF SWITCH%(2%) & ! & ! GO WORK ON THE SOURCE & ! MAKE PROTECTION 56 IF THIS IS A MAP, OR COMMON USED WITH A & ! MAP SWITCH & ! & 10055 GOTO 10060 UNLESS SWITCH%(3%) & \ GOTO 10060 IF SWITCH%(16%) & \ SAVE.EXT$ = "OSV" & \ PROG.EXT$ = "OBJ" & \ DEST.ACC$ = LIBR.SOUR.ACC$ & \ FILE1% = 4% & \ FILE2% = 8% & \ GOSUB 11000 & \ NAME TRANSFER.OUT.FILE$ AS TRANSFER.OUT.FILE$ + "<56>" & ! & ! WORK ON THE OBJECT IF THIS IS A SUBROUTINE ONLY & ! & & 10060 GOTO 10500 IF SWITCH%(2%) OR SWITCH%(3%) & \ GOTO 10065 IF SWITCH%(13%) & \ SAVE.EXT$ = "TSV" & \ PROG.EXT$ = "TSK" & \ SAVE.EXT$ = "BCS" IF SWITCH%(4%) & \ PROG.EXT$ = "BAC" IF SWITCH%(4%) & \ DEST.ACC$ = PDP.COMPILED.DISK$ + FNACC$(PDP.COMPILED.ACCOUNT%) & \ FILE1% = 16% & \ FILE2% = 32% & \ GOSUB 11000 & \ NAME TRANSFER.OUT.FILE$ AS TRANSFER.OUT.FILE$ + "<240>" & ! & ! SKIP THE REST OF THIS IF WHAT WE ARE WORKING WITH IS & ! A MAP OR SUBROUTINE & ! GO WORK ON THE TSK OR BAC COMPILED FILE & ! SINCE WAS COMPILED, MAKE SURE IT HAS A COMPILED & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 21 ! PROTECTION CODE & ! & & 10065 GOTO 10500 IF SWITCH%(4%) & ! & ! HAVE MOVED THE SOURCE AND COMPILED VERSION OF PROGRAM & ! IF WE HAVE A BASIC PLUS PROGRAM THAT IS ALL THERE IS & ! SO QUIT & ! & 10070 GOTO 10130 IF SWITCH%(18%) & \ CMD$ = ";**** CMD*" + CRLF$ & \ ODL$ = ";**** ODL*" + CRLF$ & \ OPEN LIBR.BLD.ACC$ + USER.FILE.NO.EXT$ + "BLD" & FOR INPUT AS FILE #IN.CHNL%, & MODE 8192% & ! & ! DON'T BOTHER LOOKING FOR EXISTING 'BLD' IF THIS IS & ! A NEW PROGRAM BEING ADDED & ! PUT THE EXISTING BUILD FILE TO A 'SAVE' BUILD FILE & ! OPEN THE EXISTING BUILD FILE AND READ INTO PROGRAM & ! BOTH THE CMD AND ODL FILES AND KEEP THEM AS ONE VARIBLE & ! & & 10080 INPUT LINE #IN.CHNL%, TMP$ UNTIL LEFT(TMP$,10%) == ";**** CMD*" & ! & ! READ INPUT UNTIL FIND FIRST DESIRED LINE & ! & 10100 INPUT LINE #IN.CHNL%, TMP$ & \ GOTO 10110 IF LEFT(TMP$,10%) == ";**** ODL*" & \ CMD$ = CMD$ + TMP$ & \ GOTO 10100 & ! & ! SAVE ALL 'COMMAND' LINES INTO VARIABLE CMD$ & ! LOOKING FOR THE FIRST LINE OF THE ODL & ! & 10110 INPUT LINE #IN.CHNL%, TMP$ & \ ODL$ = ODL$ + TMP$ & \ GOTO 10110 & ! & ! SAVE ALL THE ODL LINES INTO VARIABLE ODL$ & ! ON ERROR TRAP WILL RESUME NEXT LINE WHEN EOF FOUND & ! & 10120 CLOSE #IN.CHNL% & ! & ! CLOSE THE INPUT FILE & ! & 10125 GOTO 10130 IF SWITCH%(17%) & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 22 \ SYS$ = FNKILL.FILE$(LIBR.BLD.ACC$ + USER.FILE.NO.EXT$ + "HLD") & ! & ! IF REPLACING EXISTING CMD, ODL THEN DONT DELETE AND RENAME & ! TRY TO KILL THE OLD 'BLD' FILE, THERE MAY OR MAY NOT BE ONE & ! (NON-FATAL TO KILL A NON-EXISTANT 'BLD' & ! & 10126 SYS$ = FNNAME.FROM.TO$(LIBR.BLD.ACC$ + USER.FILE.NO.EXT$ + "BLD", & LIBR.BLD.ACC$ + USER.FILE.NO.EXT$ + "HLD") & ! & ! NAME THE EXISTING BUILD FILE TO THE OLD ONE & ! (NON-FATAL ERROR TO RENAME NON-EXISTANT FILE) & ! & 10130 OPEN LIBR.BLD.ACC$ + USER.FILE.NO.EXT$ + "BLD" & FOR OUTPUT AS FILE #OUT.CHNL% & \ PRINT #KB.CHNL%, CRLF$ + "Creating "+LIBR.BLD.ACC$+USER.FILE.NO.EXT$ & + "BLD from "; IF SWITCH%(19%) OR SWITCH%(20%) & \ GOTO 10140 UNLESS SWITCH%(14%) & \ PRINT #OUT.CHNL%, CMD$; & \ PRINT #KB.CHNL%, "Existing CMD"; IF SWITCH%(19%) OR SWITCH%(20%) & \ GOTO 10160 & ! & ! OPEN NEW BUILD FILE & ! IF WANT TO KEEP OLD 'ODL' THEN PRINT ODL$ TO OUTPUT & ! OTHERWISE OPEN USER ACCOUNT FILE AND PRINT IT TO THE BUILD & ! FILE & ! & 10140 OPEN USER.ACC$ + USER.FILE.NO.EXT$ + "CMD" & FOR INPUT AS FILE #IN.CHNL%, & MODE 8192% & \ PRINT #KB.CHNL%, USER.ACC$ + USER.FILE.NO.EXT$ + "CMD"; & IF SWITCH%(19%) OR SWITCH%(20%) & \ PRINT #OUT.CHNL%, ";**** CMD*" & ! & ! OPEN THE USER'S VERSION OF THE CMD & ! & 10150 INPUT LINE #IN.CHNL%, TMP$ & \ PRINT #OUT.CHNL%, TMP$; & \ GOTO 10150 & ! & ! GET AND PUT LINE UNTIL EOF ERROR & ! & 10160 CLOSE #IN.CHNL% & \ GOTO 10170 UNLESS SWITCH%(15%) & \ PRINT #OUT.CHNL%, ODL$; & \ PRINT #KB.CHNL%, " and existing ODL" IF SWITCH%(19%) OR SWITCH%(20%) & \ GOTO 10190 & ! & ! CLOSE INPUT CHANNEL & ! REPLACE ODL WITH USER'S ODL UNLESS WANTS TO KEEP THE ORIGINAL & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 23 ! & 10170 OPEN USER.ACC$ + USER.FILE.NO.EXT$ + "ODL" & FOR INPUT AS FILE #IN.CHNL%, & MODE 8192% & \ PRINT #KB.CHNL%, " and " + USER.ACC$ + USER.FILE.NO.EXT$ + "ODL" & IF SWITCH%(19%) OR SWITCH%(20%) & \ PRINT #OUT.CHNL%, ";**** ODL*" & ! & ! OPEN THE USER'S ODL FILE & ! & 10180 INPUT LINE #IN.CHNL%, TMP$ & \ PRINT #OUT.CHNL%, TMP$; & \ GOTO 10180 & ! & ! COPY THE ODL FILE INTO THE BUILD FILE & ! & 10190 CLOSE #IN.CHNL%, #OUT.CHNL% & \ SYS$ = FNKILL.FILE$(USER.ACC$ + USER.FILE.NO.EXT$ + "CMD") & \ SYS$ = FNKILL.FILE$(USER.ACC$ + USER.FILE.NO.EXT$ + "ODL") & \ SYS$ = FNKILL.FILE$(USER.ACC$ + USER.FILE.NO.EXT$ + "OBJ") & \ SYS$ = FNKILL.FILE$(USER.ACC$ + USER.FILE.NO.EXT$ + "MAP") & \ SYS$ = FNKILL.FILE$(USER.ACC$ + USER.FILE.NO.EXT$ + "BAK") & ! & ! CLOSE BOTH THE INPUT AND OUTPUT FILES & ! KILL THE CMD AND THE ODL FILE THAT ARE IN THE USER'S ACCOUNT & ! EVEN IF THEY WERE NOT TO BE REPLACED, JUST CLEAN UP THE & ! ACCOUNT FOR HIM. (NON-FATAL ERROR TO KILL NON-EXISTANT & ! 'CMD' OR 'ODL' FILE & ! & ! GOAHEAD AND TRY TO CLEAN UP USER'S ACCOUNT BY GETTING RID OF & ! THEIR OBJ, MAP, AND BAK FILES & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 24 10500 !********************************************************************* & ! ALL THE TRANSFERS HAVE BEEN MADE THAT WERE REQUESTED * & ! NOW MUST UPDATE THE LIBRARIAN FILE TO REFLECT THE CHANGES * & ! AND THAT THE PROGRAM IS NOW AVAILABLE TO OTHERS * & ! * & !********************************************************************* & PDP.PROGRAM.LOCKED%(0%) = 0% & \ CALL DATECV(5%,1%,DATE$(0%)) & \ PDP.ACCOUNT.DATE%(0%) = INT( DATE.JUL - 70000. ) & \ TMP$ = TIME$(0%) & \ PDP.ACCOUNT.TIME%(0%) = & 60% * (24% - VAL( LEFT(TMP$,2%) ) ) - VAL( RIGHT(TMP$,4%) ) & \ UPDATE #LBR.CHNL% & \ RETURN & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 25 11000 TRANSFER.IN.FILE$ = USER.ACC$ + USER.FILE.NO.EXT$ + PROG.EXT$ & \ TRANSFER.OUT.FILE$ = DEST.ACC$ + USER.FILE.NO.EXT$ + PROG.EXT$ & \ TRANSFER.SAVE.FILE$ = DEST.ACC$ + USER.FILE.NO.EXT$ + SAVE.EXT$ & \ GOTO 11070 IF SWITCH%(17%) OR SWITCH%(18%) & ! & ! BUILD UP THE FILE NAMES FOR THE INPUT, OUTPUT & ! AND THE SAVE FILE & ! & 11010 SYS$ = FNKILL.FILE$(TRANSFER.SAVE.FILE$) & ! & ! KILL THE OLD SAVE FILE & ! MAKE WAY FOR NEW ONE UNLESS REPLACING EXISTANT FILE & ! WITHOUT SAVING, OR A NEW PROGRAM IS BEING ADDED TO THE & ! LIBRARY & ! & 11020 SYS$ = FNNAME.FROM.TO$(TRANSFER.OUT.FILE$, TRANSFER.SAVE.FILE$) & \ FILES.MOVED% = FILES.MOVED% + FILE1% & ! & ! RENAME THE EXISTING FILE TO THE SAVE FILE & ! (FASTER THAN FAST COPY, AND SAVES THE OLD CREATION & ! TIME AND DATES, NON-FATAL IF FILE NOT FOUND) & ! & 11070 DUMM$ = FNFAST.COPY$(TRANSFER.IN.FILE$,TRANSFER.OUT.FILE$) & \ FILES.MOVED% = FILES.MOVED% + FILE2% & \ SYS$ = FNKILL.FILE$(TRANSFER.IN.FILE$) & \ RETURN & ! & ! THE FIRST FILE TO BE MOVED WILL BE THE SOURCE BACK INTO THE & ! SOURCE LIBRARY ACCOUNT & ! BUT FIRST KILL THE OLD VERSION, IN OUR CASE THE "B2V" OR & ! THE "BSV" IN THE SOURCE LIBRARY ACCOUNT, & ! RENAME THE EXITING "B2S" OR "BAS" TO "B2V" OR "BSV" & ! THEN COPY IN THE NEW SOURCE. & ! & ! KILL THE USER'S SOURCE FILE FROM HIS ACCOUNT & ! & ! THERE ARE SOME POSSIBLE SWITCHES THAT WILL CHANGE THIS & ! SLIGHTLY; THEY ARE: & ! SWITCH%(6%) - DO NOT REPLACE BASIC PLUS SOURCE & ! SWITCH%(7%) - DO NOT REPLACE BASIC PLUS TWO SOURCE & ! SWITCH%(17%)- REPLACE EXISTING SOURCE WITHOUT SAVING & ! THE CURRENT ".B2S" TO A ".BSV" & ! & ! CREATE FILE NAMES FOR INPUT AND OUTPUT, FIRST TO SAVE THE & ! EXISTING BACK TO A SAVE, THEN THE MODDIFIED VERSION TO & ! THE CURRENT SOURCE, FILENAMES INCLUDE MINIMUM OF ACCOUNT & ! AND FULL FILE SPECIFICATION, ON LIBRARY ACCOUNT NAME ALSO & ! INCLUDES WHICH DISK OUTPUT SHOULD BE TO. & ! & ! DO THE FAST COPY TO A SAVE FIRST & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 26 ! THEN DO THE FAST COPY FROM USER ACCOUNT TO CURRENT SOURCE & ! AFTER EACH TRANSFER UPDATE THE FILES.MOVED FLAG, SO THAT & ! INCASE SOMETHING GOES WRONG WE CAN TELL THE USER WHAT & ! WAS COMPLETED & ! & ! KILL THE SOURCE FROM THE USER'S ACCOUNT & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 27 12000 !********************************************************************* & ! THIS SECTION LISTS OUT DATA FROM THE PDPLBR.IND FILE TO * & ! PRIVILEGED USERS ONLY. * & ! "/LI" = LIST PROGRAMS THAT ARE CURRENTLY OUT WITH * & ! ACCOUNT, DATE AND TIME TAKEN. * & ! "/FU" = LIST ALL PROGRAMS, WITH ALL HISTORY OF ACCOUNT, * & ! DATE, AND TIME TAKEN. * & ! * & !********************************************************************* & PRINT #KB.CHNL%, "Output to: "; & \ LINPUT #KB.CHNL%, TMP$ & \ TMP$ = EDIT$(TMP$,-1%) & \ TMP$ = "TI:" IF TMP$ = "" & \ OPEN TMP$ FOR OUTPUT AS FILE #HLP.CHNL% & ! & ! ASK FOR WHERE OUTPUT SHOULD GO TO & ! IF RETURN, THEN SET DEFAULT TO KB & ! OPEN FILE & ! & 12010 LSET PDP.PRMKEY$ = "ACCOUN LOC" & \ GET #LBR.CHNL%, KEY #0% GE PDP.PRMKEY$ & ! & ! GET FIRST RECORD IN FILE & ! & 12015 GOTO 12020 IF LEFT(FILE.NAME$,6%) == SPACE$(6%) & \ LSET PDP.PRMKEY$ = FILE.NAME$ & \ GET #LBR.CHNL%, KEY #0% EQ PDP.PRMKEY$ & \ GOTO 12040 & ! & ! GET A SPECIFIC PROGRAM ONLY & ! & 12020 GOTO 12499 IF LEFT(FILE.NAME$,6%) <> SPACE$(6%) & \ GET #LBR.CHNL% & ! & ! GET NEXT SEQUENTIAL RECORD & ! (ONLY ONE 'ACCUN LOC' RECORD IN FILE, SO THIS 'GET' WILL & ! WILL GET EITHER THE FIRST PROGRAM FILE NAME, OR THE NEXT) & ! & 12040 GOTO 12050 IF SWITCH%(22%) & \ GOTO 12020 UNLESS (PDP.PROGRAM.LOCKED%(0%) AND 1%) AND SWITCH%(21%) & ! & ! SKIP CHECK IF USER WANTS ALL OF RECORD DISPLAYED & ! OTHERWISE MAKE SURE THAT PROGRAM IS CHECKED OUT & ! BEFORE DISPLAYING IT & ! & 12050 PRINT #HLP.CHNL%, "Program name : " + PDP.PROGRAM.NAME$ + CRLF$ & + "Compiled location : " + PDP.COMPILED.DISK$ & + FNACC$(PDP.COMPILED.ACCOUNT%) & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 28 ! & + CRLF$ + SPACE$(5%) + "1" + SPACE$(3%) & + NUM1$(PDP.PROGRAM.LOCKED%(0%)) + SPACE$(3%) & + FNWHO$(PDP.ACCOUNT.RECEIVED%(0%),PDP.ACCOUNT.DATE%(0%), & PDP.ACCOUNT.TIME%(0%)) + CRLF$ & \ GOTO 12020 IF SWITCH%(21%) & ! & ! PRINT A SHORT LISTING OF ONLY THOSE THAT ARE CHECKED OUT & ! GO GET NEXT RECORD & ! & 12060 PRINT #HLP.CHNL%, SPACE$(5%) + "2" + SPACE$(3%) & + NUM1$(PDP.PROGRAM.LOCKED%(1%)) + SPACE$(3%) & + FNWHO$(PDP.ACCOUNT.RECEIVED%(1%),PDP.ACCOUNT.DATE%(1%), & PDP.ACCOUNT.TIME%(1%)) + CRLF$ & ! & + SPACE$(5%) + "3" + SPACE$(3%) & + NUM1$(PDP.PROGRAM.LOCKED%(2%)) + SPACE$(3%) & + FNWHO$(PDP.ACCOUNT.RECEIVED%(2%),PDP.ACCOUNT.DATE%(2%), & PDP.ACCOUNT.TIME%(2%)) + CRLF$ & ! & + SPACE$(5%) + "4" + SPACE$(3%) & + NUM1$(PDP.PROGRAM.LOCKED%(3%)) + SPACE$(3%) & + FNWHO$(PDP.ACCOUNT.RECEIVED%(3%),PDP.ACCOUNT.DATE%(3%), & PDP.ACCOUNT.TIME%(3%)) + CRLF$ & ! & + SPACE$(5%) + "5" + SPACE$(3%) & + NUM1$(PDP.PROGRAM.LOCKED%(4%)) + SPACE$(3%) & + FNWHO$(PDP.ACCOUNT.RECEIVED%(4%),PDP.ACCOUNT.DATE%(4%), & PDP.ACCOUNT.TIME%(4%)) + CRLF$ & ! & \ GOTO 12020 & ! & ! PRINT A "FULL" LISTING & ! GO AND GET NEXT RECORD & ! & 12499 CLOSE #HLP.CHNL% & \ RETURN & ! & ! CLOSE OUTPUT FILE & ! RETURN TO GOSUB & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 29 14000 !********************************************************************* & ! THIS SECTION UPDATES THE PDPLBR.IND FILE BY PROGRAM NAME * & ! * & !********************************************************************* & CHANGE.KEY% = 0% & \ PRINT #KB.CHNL%, CRLF$ & + "1 - Add 2 - Update 3 - Delete 4 - Quit "; & \ INPUT #KB.CHNL%, I% & \ GOTO 14000 IF I% < 1% OR I% > 4% & \ RETURN IF I% = 4% & \ ON I% GOSUB 14100, 14200, 14300 & \ GOTO 14000 & ! & ! GET READY FOR POSSIBLE ADDITION, DELETIONS OR CHANGES & ! ALSO DON'T FORGET TO QUIT & ! ALLOW USER ONCE HERE, TO DO MULITPLE UPDATED & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 30 14100 GOTO 14101 UNLESS LEFT(FILE.NAME$,6%) <> SPACE$(6%) & \ LSET PDP.PROGRAM.NAME$ = FILE.NAME$ & \ FILE.NAME$ = "" UNLESS SWITCH%(18%) & \ GOTO 14105 & ! & ! IF USER SPECIFIED FILENAME ALONG WITH SWITCH & ! THEN EXTRACT IT , DON'T ASK FOR ANOTHER ON FOR THE FIRST & ! TIME THROUGH & ! RESET FILENAME BACK TO NULL SO THAT WE WILL ASK FOR A NAME & ! THE SECOND OR MORE TIMES THROUGH & ! & 14101 GOSUB 14500 & ! & ! GO GET A VALID FILENAME & ! & 14105 GET #LBR.CHNL%, KEY #0% EQ PDP.PROGRAM.NAME$ & \ UNLOCK #LBR.CHNL% & \ PRINT #KB.CHNL%, CRLF$+ PDP.PROGRAM.NAME$ & + "Already on file, cannot be re-added." & \ GOTO 14199 & ! & ! MAKE SURE THAT THAT NAME DOES NOT ALREADY EXIST IN FILE & ! & 14110 IF I% = 4% & THEN PRINT #KB.CHNL%, "New account for account received, "+ & "IE '[20,0]'" & ELSE PRINT #KB.CHNL%, "Disk and Account for compiled program, IE "+ & "'DB1:[20,0]'" & 14115 LINPUT #KB.CHNL%, TMP$ & \ DUMM$ = SYS(CHR$(6%)+CHR$(-10%)+TMP$) & \ GOTO 14117 IF I% = 4% & \ GOTO 14110 UNLESS (SWAP%(DUMM%(12%)) AND 255%) = 255% & \ PDP.COMPILED.DISK$ = CHR$(DUMM%(11%) AND 255%) & + CHR$(SWAP%(DUMM%(11%)) AND 255%) & + NUM1$(DUMM%(12%) AND 255%) + ":" & \ PDP.COMPILED.ACCOUNT% = DUMM%(2%) & \ PRINT #KB.CHNL%, CRLF$ + PDP.COMPILED.DISK$; & 14117 PRINT #KB.CHNL%, FNACC$(DUMM%(2%)) & \ PRINT #KB.CHNL%, CRLF$ & \ LINPUT #KB.CHNL%, "Is this correct (Y/N): "; TMP$ & \ GOTO 14110 UNLESS ASCII(TMP$) = ASCII("Y") & \ RETURN IF GO.SUB% & ! & ! GET THE INPUT FROM USER & ! DO A FILE NAME STRING SCAN ON INPUT & ! MAKE SURE A DISK WAS SPECIFIED, IF NOT GOBACK AND ASK FOR & ! INPUT AGAIN & ! CREATE THE DISK NAME, AND SET THE ACCOUNT INTO THE & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 31 ! PROPER MAP VARIABLES & ! DISPLAY INPUT FOR USER AND MAKE SURE IT IS CORRECT & ! & 14130 PDP.PROGRAM.LOCKED%(I%), & PDP.ACCOUNT.RECEIVED%(I%), & PDP.ACCOUNT.TIME%(I%) = 0% FOR I% = 0% TO 4% & \ CALL DATECV(5%,1%,DATE$(0%)) & \ PDP.ACCOUNT.DATE%(I%) = DATE.JUL - 70000. FOR I% = 0% TO 4% & ! & ! ALL THE REQUIRED DATA HAS BEEN ACCEPTED & ! SO JUST ZERO FILL THE REST OF THE RECORD & ! & 14140 GO.SUB% = -1% & \ GOSUB 14210 & \ GO.SUB% = 0% & \ LINPUT #KB.CHNL%, "Is this correct (Y/N): "; TMP$ & \ GOTO 14140 IF ASCII(TMP$) <> ASCII("Y") AND ASCII(TMP$) <> ASCII("N") & \ GOTO 14100 IF ASCII(TMP$) = ASCII("N") & \ PUT #LBR.CHNL% & \ PRINT #KB.CHNL%, CRLF$+ "Record has been added to file" & ! & ! ONE LAST TIME TO MAKE SURE ABOVE DATA CORRECT & ! GO ASK AGAIN IF NOT, ADD IT TO THE FILE IF IT IS & ! & 14199 RETURN & ! & ! THAT'S ALL FOR THE ADD & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 32 14200 GOTO 14201 UNLESS LEFT(FILE.NAME$,6%) <> SPACE$(6%) & \ LSET PDP.PROGRAM.NAME$ = FILE.NAME$ & \ FILE.NAME$ = "" & \ GOTO 14205 & ! & ! IF USER SPECIFIED FILENAME ALONG WITH SWITCH & ! THEN EXTRACT IT , DON'T ASK FOR ANOTHER ON FOR THE FIRST & ! TIME THROUGH & ! RESET FILENAME BACK TO NULL SO THAT WE WILL ASK FOR A NAME & ! THE SECOND OR MORE TIMES THROUGH & ! & 14201 GOSUB 14500 & ! & ! GO GET A VALID FILENAME & ! & 14205 GET #LBR.CHNL%, KEY #0% EQ PDP.PROGRAM.NAME$ & ! & ! MAKE SURE THAT THAT NAME DOES ALREADY EXIST IN FILE & ! DO NOT UNLOCK THE RECORD SINCE IT MAY BE UPDATED & ! & 14210 PRINT #KB.CHNL%, PDP.PROGRAM.NAME$ + CRLF$ & + PDP.COMPILED.DISK$ + CRLF$ & + FNACC$(PDP.COMPILED.ACCOUNT%) & \ PRINT #KB.CHNL%, I%+1%, & PDP.PROGRAM.LOCKED%(I%), & FNACC$(PDP.ACCOUNT.RECEIVED%(I%)), & DATE$(PDP.ACCOUNT.DATE%(I%)), & TIME$(PDP.ACCOUNT.TIME%(I%))+CRLF$ & FOR I% = 0% TO 4% & \ RETURN IF GO.SUB% & ! & 14220 PRINT #KB.CHNL%, "Change: 1 - Program name" + CRLF$ & + " 2 - Compiled disk and account"+ CRLF$ & + " 3 - Program lock" + CRLF$ & + " 4 - Account received" + CRLF$ & + " 5 - Account date" + CRLF$ & + " 6 - Account time" + CRLF$ & + CRLF$ + "What to change: "; & 14230 INPUT #KB.CHNL%, I% & \ GOTO 14220 IF I% < 1% OR I% > 6% & \ GOTO 14240 IF I% < 3% & 14235 INPUT #KB.CHNL%, "For which record (1-5) "; J% & \ GOTO 14235 IF J% < 1% OR J% > 5% & \ J% = J% - 1% & 14240 GOTO 14242 UNLESS I% = 1% & \ CHANGE.KEY% = -1% & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 33 \ OLD.PROGRAM.NAME$ = PDP.PROGRAM.NAME$ & \ GOSUB 14500 & ! & ! IF USER WANTS TO CHANGE KEY, SET FLAG IN J% & ! SAVE THE OLD PROGRAM NAME & ! THEN GO GET A NEW ONE & ! & 14242 GO.SUB% = -1% & \ GOSUB 14110 IF I% = 2% & ! & ! GO GET A NEW DISK AND PPN & ! & \ GOTO 14244 UNLESS I% = 3% & \ PRINT #KB.CHNL%, "Old value: "; PDP.PROGRAM.LOCKED%(J%); & \ INPUT #KB.CHNL%, " New value: "; PDP.PROGRAM.LOCKED%(J%) & ! & ! GET A NEW LOCK VALUE & ! & 14244 GOTO 14245 UNLESS I% = 4% & \ PRINT #KB.CHNL%, "Old account is: " & + FNACC$(PDP.ACCOUNT.RECEIVED%(J%)) & \ GOSUB 14110 & \ PDP.ACCOUNT.RECEIVED%(J%) = DUMM%(2%) & ! & ! CHANGE ACCOUNT IF REQUESTED & ! & 14245 GO.SUB% = 0% & \ GOTO 14246 UNLESS I% = 5% & \ PRINT #KB.CHNL%, "Old date is: " & + DATE$(PDP.ACCOUNT.DATE%(J%)) & \ LINPUT #KB.CHNL%, "Enter date as 'MMDDYY' :";TMP$ & \ CALL DATECV(3%,1%,TMP$) & \ PDP.ACCOUNT.DATE%(J%) = & INT( DATE.JUL - 70000. ) & \ PRINT #KB.CHNL%, "New date is: " & + DATE$(PDP.ACCOUNT.DATE%(J%)) & ! & ! CHANGE DATE IF REQUESTED & ! & 14246 GOTO 14248 UNLESS I% = 6% & \ PRINT #KB.CHNL%, "Old time is: " & + TIME$(PDP.ACCOUNT.TIME%(J%)) & \ LINPUT #KB.CHNL%, "Enter time as 'HH:MM' :"; TMP$ & \ PDP.ACCOUNT.TIME%(J%) = & 60% * (24% - VAL( LEFT(TMP$,2%) ) ) - VAL( RIGHT(TMP$,4%) ) & \ PRINT #KB.CHNL%, "New time is: " & + TIME$(PDP.ACCOUNT.TIME%(J%)) & ! & ! CHANGE TIME IF REQUESTED & ! & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 34 14248 LINPUT #KB.CHNL%, "Any more changes (Y/N): "; TMP$ & \ GOTO 14248 IF ASCII(TMP$) <> ASCII("Y") AND ASCII(TMP$) <> ASCII("N") & \ GOTO 14220 IF ASCII(TMP$) = ASCII("Y") & & 14250 GO.SUB% = -1% & \ GOSUB 14210 & \ GO.SUB% = 0% & \ LINPUT #KB.CHNL%, "Is this correct (Y/N): "; TMP$ & \ GOTO 14250 IF ASCII(TMP$) <> ASCII("Y") AND ASCII(TMP$) <> ASCII("N") & \ GOTO 14100 IF ASCII(TMP$) = ASCII("N") & \ GOTO 14260 UNLESS CHANGE.KEY% & \ TMP$ = PDP.MAXSIZ$ & \ GET #LBR.CHNL%, KEY #0% EQ OLD.PROGRAM.NAME$ & \ DELETE #LBR.CHNL% & \ LSET PDP.MAXSIZ$ = TMP$ & ! & ! CHECK AND SEE IF KEY WAS CHANGED, IF SO KEEP MODIFIED RECORD & ! GET ORIGINAL RECORD AND DELETE IT & ! THEN REPLACE SAVED RECORD AND UPDATE (REALLY PUT) RECORD & ! BACK INTO FILE & ! & 14260 UPDATE #LBR.CHNL% & \ UNLOCK #LBR.CHNL% & \ PRINT #KB.CHNL%, CRLF$+ "Record has been updated" & ! & ! ONE LAST TIME TO MAKE SURE ABOVE DATA CORRECT & ! GO ASK AGAIN IF NOT, ADD IT TO THE FILE IF IT IS & ! & 14270 RETURN & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 35 14300 GOTO 14301 UNLESS LEFT(FILE.NAME$,6%) <> SPACE$(6%) & \ LSET PDP.PROGRAM.NAME$ = FILE.NAME$ & \ FILE.NAME$ = "" & \ GOTO 14305 & ! & ! IF USER SPECIFIED FILENAME ALONG WITH SWITCH & ! THEN EXTRACT IT , DON'T ASK FOR ANOTHER ON FOR THE FIRST & ! TIME THROUGH & ! RESET FILENAME BACK TO NULL SO THAT WE WILL ASK FOR A NAME & ! THE SECOND OR MORE TIMES THROUGH & ! & 14301 GOSUB 14500 & ! & ! GO GET A VALID FILENAME & ! & 14305 GET #LBR.CHNL%, KEY #0% EQ PDP.PROGRAM.NAME$ & ! & ! MAKE SURE THAT THAT NAME DOES ALREADY EXIST IN FILE & ! DO NOT UNLOCK THE RECORD SINCE IT MAY BE DELETED & ! & 14310 GO.SUB% = -1% & \ GOSUB 14210 & \ GO.SUB% = 0% & ! & ! GO PRINT THE FULL RECORD OUT FOR USER TO SEE & ! & 14320 PRINT #KB.CHNL%, CRLF$ + "Is this the record to be deleted (Y/N) : "; & \ INPUT #KB.CHNL%, TMP$ & \ GOTO 14320 IF ASCII(TMP$) <> ASCII("Y") AND ASCII(TMP$) <> ASCII("N") & \ GOTO 14399 IF ASCII(TMP$) = ASCII("N") & \ DELETE #LBR.CHNL% & \ PRINT #KB.CHNL%, CRLF$+ "Record has been deleted" & ! & 14399 RETURN & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 36 14500 !********************************************************************* & ! GET A PROGRAM NAME FOR THE 'UPDATE' SECTION ABOVE * & ! * & !********************************************************************* & PRINT #KB.CHNL%, "Complete file name and extension must be specified" & \ LINPUT #KB.CHNL%, "PDP.PROGRAM.NAME$ : "; PDP.PROGRAM.NAME$ & \ J% = INSTR(1%,PDP.PROGRAM.NAME$,".") & \ PDP.PROGRAM.NAME$ = LEFT(PDP.PROGRAM.NAME$,J%-1%) & + SPACE$(7%-J%) + RIGHT(PDP.PROGRAM.NAME$,J%) & ! & ! GET PROGRAM NAME TO BE ADDED, & ! PAD OUT NAME TO FULL 6 POSITIONS PAD WITH SPACE & ! IF NEEDED & ! & 14510 RETURN IF INSTR(1%,PDP.PROGRAM.NAME$,".B2S") OR & INSTR(1%,PDP.PROGRAM.NAME$,".BAS") & \ PRINT #KB.CHNL%, "Program name "+ PDP.PROGRAM.NAME$+ " invalid " & + "must be 'B2S' or 'BAS'" & \ GOTO 14500 & ! & ! NOW MAKE SURE A VALID EXETENSION WAS SUPPLIED & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 37 16000 SYS$ = FNKILL.FILE$(USER.ACC$ + FILE.NAME$ ) & \ GOTO 10500 IF SWITCH%(4%) & \ SYS$ = FNKILL.FILE$(USER.ACC$ + LEFT(FILE.NAME$,7%) + "ODL" ) & \ SYS$ = FNKILL.FILE$(USER.ACC$ + LEFT(FILE.NAME$,7%) + "CMD" ) & \ GOTO 10500 & ! & ! SPECIAL HANDLING OF "NOCHANGE" SWITCH # 8% & ! NO NEED TO COPY ANYTHING BACK, SO JUST KILL THE FILES & ! OUT OF THE USER'S ACCOUNT AND RESET LIBRARIAN SO OTHER & ! NOW HAVE ACCESS TO PROGRAM & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 38 18000 !********************************************************************* & ! /EXCHANGE -> MOVE TSK TO BAD, TSV TO TSK * & ! * & !********************************************************************* & DEST.ACC$ = PDP.COMPILED.DISK$ + FNACC$(PDP.COMPILED.ACCOUNT%) & \ TRANSFER.IN.FILE$ = DEST.ACC$ + USER.FILE.NO.EXT$ + "TSV" & \ TRANSFER.OUT.FILE$ = DEST.ACC$ + USER.FILE.NO.EXT$ + "TSK" & \ TRANSFER.SAVE.FILE$ = DEST.ACC$ + USER.FILE.NO.EXT$ + "BAD" & ! & 18020 PRINT #0%, CRLF$+ "This will REVERSE the /RE option for TSK's only"+ & CRLF$+ "Do you really want to name "+ & TRANSFER.OUT.FILE$+" to "+TRANSFER.SAVE.FILE$+ & CRLF$+ "and copy "+TRANSFER.IN.FILE$+" to "+ & TRANSFER.OUT.FILE$+ " (Y/N) "; & \ LINPUT #0%, TMP$ & \ TMP$ = EDIT$(TMP$,-1%) & \ TMP$ = "N" UNLESS LEN(TMP$) & \ GOTO 18020 UNLESS LEFT(TMP$,1%) = "N" OR LEFT(TMP$,1%) = "Y" & \ GOTO 18100 IF LEFT(TMP$,1%) = "N" & ! & ! TELL USER WHAT IS GOING TO HAPPEN IF THEY PROCEED & ! AND ASK THEM IF THIS IS WHAT THEY WANT & ! IF NOT GET OUT, OTHERWISE CONTINUE & ! & 18040 SYS$ = FNNAME.FROM.TO$(TRANSFER.OUT.FILE$, TRANSFER.SAVE.FILE$) & ! & ! TAKE EXISTING TASK AND RENAME IT TO 'BAD' & ! & 18060 DUMM$ = FNFAST.COPY$(TRANSFER.IN.FILE$,TRANSFER.OUT.FILE$) & \ NAME TRANSFER.OUT.FILE$ AS TRANSFER.OUT.FILE$ + "<240>" & ! & ! TAKE TSV AND COPY BACK INTO TSK & ! AND MAKE IT PRIVILEGED & ! & 18100 RETURN & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 39 27000 DEF FNACC$(ACC%) = & "[" & + NUM1$( SWAP%( ACC% ) AND 255% ) & + "," & + NUM1$( ACC% AND 255% ) & + "]" & ! & ! TAKE THE INTEGER VALUE OF ACCOUNT NUMBER AND CREATE & ! THE STANDARD "[XXX,XXX]" PROJECT PROGRAMMER NUMBER & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 40 27100 DEF FNWHO$(ACC%,DAT%,TIM%) = & FNACC$(ACC%) & + " on " & + DATE$( DAT% ) & + " at " & + TIME$(TIM%) & ! & ! EXPAND INTEGER FORMAT DATE AND TIME TO BE PRINTED & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 41 27200 DEF FNFAST.COPY$(IN$,OUT$) & \ PRINT #KB.CHNL%, CRLF$+ "Copying "+ IN$+ " to "+ OUT$; & IF SWITCH%(19%) OR SWITCH%(20%) & \ OPEN IN$ FOR INPUT AS FILE #IN.CHNL%, & MODE 8192% & \ DUMM$ = FSP$(IN.CHNL%) & 27201 OPEN OUT$ FOR OUTPUT AS FILE #OUT.CHNL%, & FILESIZE DUMM%(2%), & MODE 64% & ! & ! OPEN IN FOR INPUT, READ ONLY & ! OUT FOR OUTPUT, FILESIZE OF THE INPUT FILE, & ! AND CONTIGOUS IF THE SYSTEM HAS THE FILESPACE & ! GET THE FAST COPY CHANNEL NUMBER & ! & 27202 ATRIB$ = RIGHT( & SYS(CHR$(6%)+CHR$(-25%)+CHR$(IN.CHNL%)+CHR$(0%)), & 5%) & \ RUN.TIME$ = SYS(CHR$(6%) + CHR$(-17%) + CHR$(OUT.CHNL%) & + RIGHT(ATRIB$,23%)) & ! & ! GET THE ATTRIBUTES FROM INPUT FILE & ! ALSO GET THE RUN TIME NAME OFF INPUT AND WRITE THEM TO & ! THE OUTPUT FILE & ! & 27203 GOTO 27210 UNLESS CVT$%(ATRIB$) & ! & ! IF INPUT DOES NOT HAVE ANY ATTRIBUTES THEN SKIP TRYING & ! TO WRITE THEM TO THE OUTPUT FILE & ! & 27204 ATB% = 21% & \ ATB% = ATB% - 2% UNTIL CVT$%(RIGHT(ATRIB$,ATB%)) & \ ATB% = (ATB% + 1%) / 2% & \ ATRIB$ = SYS(CHR$(6%)+CHR$(-25%)+CHR$(OUT.CHNL%)+CHR$(ATB%) & + LEFT(ATRIB$,ATB%*2%)) & ! & ! FIND OUT THE AMOUNT OF ATTRIBUTES THERE ARE FOR FILE & ! MAX VALUE OF ATB% IS 11%, MINIMUM IS 1% & ! WRITE ATTRIBUTES TO OUTPUT FILE & ! & 27210 GET #IN.CHNL% & \ PUT #SWAP.CHNL% & \ GOTO 27210 & ! & ! DO GET, PUT UNTIL EOF, ERROR TRAP WILL RESUME NEXT STATEMENT & ! & 27220 CLOSE #IN.CHNL%, #OUT.CHNL% & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 42 \ PRINT #KB.CHNL%, " ...completed" IF SWITCH%(19%) OR SWITCH%(20%) & \ FNEND & ! & ! CLOSE THE TWO FILES & ! QUIT & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 43 27300 DEF FNNAME.FROM.TO$(IN$,OUT$) & \ PRINT #KB.CHNL%, CRLF$+ "Naming "+ IN$+ " to "+ OUT$ & IF SWITCH%(19%) OR SWITCH%(20%) & \ NAME IN$ AS OUT$ & 27310 FNEND & ! & ! RENAME ROUTINE, FROM CURRENT VERSION TO OLD VERSION & ! DISPLAY MESSAGE IF WATCH OR LOG SWITCH & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 44 27400 DEF FNKILL.FILE$(IN$) & \ PRINT #KB.CHNL%, CRLF$ + "Deleting " + IN$ & IF SWITCH%(19%) OR SWITCH%(20%) & \ KILL IN$ & 27410 FNEND & ! & ! KILL ROUTINE, DISPLAY MESSAGE IF WATCH OR LOG SWITCH & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 45 28000 !********************************************************************* & ! SUPPLY FULL HELP DESCRIPTION TO USER * & ! * & !********************************************************************* & OPEN "DB0:[1,3]PDPLBR.HLP" FOR INPUT AS FILE #HLP.CHNL%, & MODE 8192% & ! & ! OPEN HELP FILE READ ONLY & ! & 28010 GET #HLP.CHNL% & \ PUT #SWAP%(HLP.CHNL%) + KB.CHNL% & \ GOTO 28010 & ! & ! GET HELP FILE, AND PUT IT TO THE KEYBOARD & ! ON ERROR 11 RESUME NEXT LINE & ! & 28020 CLOSE #HLP.CHNL% & \ GOTO 1060 & ! & ! CLOSE HELP FILE & ! GOBACK AND PROMPT USER FOR DATA LINE & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 46 28500 !********************************************************************* & ! BRIEF HELP, PRIMARILY EXAMPLES OF MOST COMMONLY USED SWITCHES* & ! * & !********************************************************************* & PRINT #KB.CHNL%, "BRIEF HELP"+ CRLF$+ & "EXTRACT A MODULE FROM LIBRARY TO CURRENT ACCOUNT"+ & CRLF$+ CRLF$+ & " COMMAND PERFORMS"+ & CRLF$+ & "Filename/CO copies .B2S, .CMD, .ODL to current account"+ & CRLF$+ & "Filename/CO/BAS copies .BAS to current account"+ & CRLF$+ & "Filename/CO/MAP copies .B2S to current account"+ & CRLF$+ & "Filename/CO/SUB copies .B2S to current account"+ & CRLF$+ CRLF$+ & "Filename/RE saves existing .B2S, .TSK, .CMD, .ODL, replaces"+ & CRLF$+ & " .TSK, .B2S, .CMD, .ODL, and deletes"+ & CRLF$+ & " all of these files from your account"+ & CRLF$+ & "Filename/RE/BAS saves existing .BAS, .BAC, replaces"+ & CRLF$+ & " .BAS, .BAC, and deletes both files from your account"+ & CRLF$+ & "Filename/RE/MAP saves existing .B2S, replaces .B2S"+ & CRLF$+ & " and deletes these files from your account"+ & CRLF$+ & "Filename/RE/SUB saves existing .B2S, .OBJ, replaces .B2S AND .OBJ"+ & CRLF$+ & " and deletes these files from your account"+ & CRLF$+ CRLF$+ CRLF$+ & "OTHER SWITCHES"+ & CRLF$+ & "/RO read only - used only when copying, module cannot be replaced"+ & CRLF$+ & "/REX replace exisiting - used only when replacing, does not do save"+ & CRLF$+ & " of current modules to 'saved' modules"+ & CRLF$+ & "/NEW replace only - used when adding a new program to library" & 28599 SLEEP 5% & \ GOTO 1060 & ! & ! PRINT SHORT EXAMPLES OF COMMANDS & ! GOBACK TO PROMPT & ! & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 47 ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 48 29000 !********************************************************************* & ! DATA SWITCHES FOR INPUT * & ! * & !********************************************************************* & DATA 25, & "/CO", 0, & "/RO", 0 & 29010 !********************************************************************* & ! DATA SWITCHES FOR INPUT OR OUTPUT * & ! * & !********************************************************************* & DATA "/MAP", 0, & "/SUB", 0, & "/BA", 0, & "/B2", 0, & "/NOBA", 0, & "/NOB2", 0 & 29020 !********************************************************************* & ! SPECIAL CASE SWITCH - NOCHANGE * & ! * & !********************************************************************* & DATA "/NOCH", 0 & 29030 !********************************************************************* & ! DATA SWITCHES FOR OUTPUT ONLY * & ! * & !********************************************************************* & DATA "/RE", 0, & "/TS", -1, & "/CM", -1, & "/OD", -1, & "/NOTS", 0, & "/NOCM", 0, & "/NOOD", 0, & "/NOOB", 0, & "/REX", 0, & "/NEW", 0 & 29040 !********************************************************************* & ! GENERAL DATA SWITCHES FOR PROGRAM MONITORING * & ! * & !********************************************************************* & DATA "/WA", 0, & "/LO", 0 & 29050 !********************************************************************* & ! DATA SWITCHES FOR PRIVILEGED USERS ONLY * & ! * & !********************************************************************* & DATA "/LI", 0, & "/FU", 0, & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 49 "/UP", 0 & 29060 !********************************************************************* & ! LATE ADDITIONS * & ! * & !********************************************************************* & DATA "/EXC", 0, & "/NOBL", 0 & 29090 ! & ! SWITCH%(0%) = COPY & ! SWITCH%(1%) = READ ONLY & ! & ! SWITCH%(2%) = MAP FILE & ! SWITCH%(3%) = SUBROUTINES & ! SWITCH%(4%) = BASIC PLUS SOURCE & ! SWITCH%(5%) = BASIC PLUS TWO SOURCE (DEFAULT) & ! SWITCH%(6%) = DO NOT REPLACE BASIC PLUS SOURCE & ! SWITCH%(7%) = DO NOT REPLACE BASIC PLUS TWO SOURCE & ! & ! SWITCH%(8%) = NOCHANGE & ! & ! SWITCH%(9%) = REPLACE & ! SWITCH%(10) = REPLACE TASK & ! SWITCH%(10) = REPLACE CMD & ! SWITCH%(12%) = REPLACE ODL & ! SWITCH%(13%) = DO NOT REPLACE TASK & ! SWITCH%(13) = DO NOT REPLACE CMD & ! SWITCH%(15%) = DO NOT REPLACE ODL & ! SWITCH%(16%) = DO NOT REPLACE OBJ & ! SWITCH%(17%) = REPLACE EXISTING SOURCE, TASK, CMD, ODL & ! NO SAVING OF EXISTING FILES & ! SWITCH%(18%) = NEW FILE, NO NEED TO SAVE EXISTING & ! & ! SWITCH%(19%) = WATCH PROGRESSION OF FILE TRANSFERENCE & ! SWITCH%(20%) = WATCH PROGRESSION OF FILE TRANSFERENCE & ! & ! SWITCH%(21%) = LIST MODULES THAT ARE CURRENTLY OUT & ! AND WHO HAS THEM (PRIVILEGED ONLY) & ! SWITCH%(22%) = LIST ALL MODULES, ALL PREVIOUS UPDATE & ! UPDATE INFORMATION (PRIVILEGED ONLY) & ! SWITCH%(23%) = MANUALLY UPDATE LIBRARIAN RECORDS; ONE & ! RECORD AT A TIME (PRIVILEGED ONLY) & ! SWITCH%(24%) = EXCHANGE TSV TO TSK, TSK TO BAD & ! SWITCH%(25%) = NO BLD ON COPY & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 50 30000 !********************************************************************* & ! CCL ENTRY INTO LIBRARIAN * & ! * & !********************************************************************* & SYS$ = SYS(CHR$(7%)) & \ SYS$ = EDIT$(SYS$,-1%) & \ IF LEFT(SYS$,6%) == "PDPLBR" & THEN DATA.LINE$ = RIGHT(SYS$,7%) & \ CCL.ENTRY% = -1% & \ GOTO 1000 & ELSE PRINT #KB.CHNL%, CRLF$+"CORE COMMON NOT SET CORRECTLY FOR CCL" & + CRLF$ + SYS$ + CRLF$ & \ GOTO 32767 & ! & ! GET CORE COMMON & ! COMPRESS INPUT LINE & ! IF THE FIRST SIX ARE NOT 'PDPLBR' THEN GET OUT & ! OTHERWISE STRIP OFF THE USER TYPED DATA & ! MAKE NOTE THAT THIS WAS A CCL ENTRY INTO PROGRAM & ! GO TO TOP OF PROGRAM SKIPPING PROMPTS & ! & 31000 PRINT #0%, "THERE IS NO CHAIN OPTION FOR PDPLBR, SORRY" & \ GOTO 32767 & ! & ! DO NOT ALLOW CHAINS INTO PROGRAM & ! & ! PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 51 32000 !********************************************************************* & ! ERROR TRAPPING * & ! * & !********************************************************************* & RESUME 32767 IF ERR = 28% & ! & ! ON CONTROL C EXIT PROGRAM & ! & \ IF ERR = 154% OR ERR = 10% & THEN SLEEP 2% & \ RESUME & ! & ! CATCH LOCKED BLOCKS OR PROTECTION VIOLATION & ! & 32005 RESUME 32767 IF ERR = 11% AND ERL = 1060% & ! & ! IF CONTROL-Z AT PROMPT LINE THEN EXIT PROGRAM & ! & \ IF ERR = 2% AND ERL = 4150% & THEN PRINT #KB.CHNL%, CRLF$ + ERT$(2%) & \ RESUME 32767 IF CCL.ENTRY% & \ RESUME 1060 & ! & ! FOUND ILLEGAL FILE NAME IN FILE NAME STRING SCAN & ! & 32007 RESUME 8080 IF ERR = 5% AND ERL = 8040% & ! & ! SHOULD NORMALLY OCCUR & ! TESTING TO BE SURE OUTPUT FILE NAME DOES NOT ALREADY EXIST & ! & \ IF ERR = 11% AND ERL = 8060% & THEN RESUME 32767 IF CCL.ENTRY% & \ RESUME 1060 & ! & ! END OF FILE TRAP AT PROMPT FOR 'DIFFERENT' OUTPUT FILE NAME & ! QUIT IF CCL ENTRY, OTHERWISE GO BACK TO PROMPT FOR INPUT & ! & 32010 RESUME 8140 IF ERR = 11% AND ERL = 8120% & ! & ! HAVE COMPLETED TRANSFER OF .B2S & ! CLOSE FILE AND RESUME TO TRANSFER CMD AND ODL & ! & \ RESUME 8280 IF ERR = 11% AND ERL = 8260% & ! & ! HAVE HIT END OF FILE OF "BLD" FILE & ! THIS FILE CONTAINS BOTH THE CMD AND ODL OF THE & ! PROGRAM. THIS ROUTINE EXTRACTS THEM BACK TO TWO & ! FILES, AND WHEN HITS THE END OF FILE RESUMES TO CLOSE & ! THE ODL AND PROCEDE WITH NOTIFICATION OF FILES COPIED & ! & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 52 \ IF ERR = 155% AND ERL = 6000% & THEN RESUME 6060 IF SWITCH%(18%) & \ PRINT #KB.CHNL%, CRLF$+PDP.PRMKEY$+" Not found in LBRARY.IND" & \ RESUME 32767 IF CCL.ENTRY% & \ RESUME 1060 & ! & ! TRIED TO GET NON EXISTANT FILE NAME FROM LIBRARIAN FILE & ! OK, IF A 'NEW' FILE BEING ADDED & ! & 32020 IF ERR = 5% & THEN PRINT #0%, CRLF$ + "Source file not found" IF ERL = 10010% & \ PRINT #0%, CRLF$ + "Object file not found" IF ERL = 10020% & \ PRINT #0%, CRLF$ + "TSK or BAC not found" IF ERL = 10025% & \ PRINT #0%, CRLF$ + "CMD file not found" IF ERL = 10030% & \ PRINT #0%, CRLF$ + "ODL file not found" IF ERL = 10040% & ! & 32030 RESUME 10120 IF ERR = 11% AND ERL = 10110% & ! & ! HIT END OF FILE FOR 'BLD' FILE WHILE READING IN DATA & ! (SINCE 'BLD' CONTAINS BOTH 'CMD' AND 'ODL' FILES & ! MUST READ INTO PROGRAM DATA WHICH WOULD NORMALLY & ! BE IN SEPERATE FILES, JUST INCASE THE USER MAY NOT & ! WANT TO REPLACE EITHER ONE OR BOTH FILES & ! & \ RESUME 10160 IF ERR = 11% AND ERL = 10150% & ! & ! HIT END OF FILE OF USER'S 'CMD' FILE, IF WE ARE USING & ! IT TO REPLACE THE EXISTING 'CMD' WITHIN THE 'BLD' FILE & ! & \ RESUME 10190 IF ERR = 11% AND ERL = 10180% & ! & ! HIT END OF FILE OF USER'S 'ODL' FILE, IF WE ARE USING & ! IT TO REPLACE THE EXISTING 'ODL' WITHIN THE 'BLD' FILE & ! & 32035 IF ERR = 155% AND ERL = 12015% & THEN PRINT #KB.CHNL%, CRLF$ + PDP.PRMKEY$ & + " Not found in LBRARY.IND" & \ RESUME 12499 & ! & ! PRIVILEGED USER TRIED TO LIST A NON-EXISTANT PROGRAM & ! & 32040 RESUME 12499 IF ERR = 11% AND ERL = 12020% & ! & ! READING LIBRARIAN FILE SEQUENTIALLY, HIT END OF FILE & ! & \ RESUME 32767 IF ERR = 11% AND (ERL/1000%) = 14% & ! & ! ON ANY CONTROL-Z AT INPUT PROMPT IN UPDATE SECTION & ! JUST QUIT & ! & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 53 \ RESUME 14110 IF ERR = 155% AND ERL = 14105% & ! & ! MAKE SURE RECORD DOES NOT ALREADY EXIST WHEN & ! TRYING TO ADD A NEW PROGRAM TO LIBRARIAN FILE & ! & \ IF ERR = 155% AND ( ERL = 14205% OR ERL = 14305% ) & THEN PRINT #KB.CHNL%, CRLF$ + "Record not found for program: " & + PDP.PROGRAM.NAME$ & \ RESUME 14199 & ! & ! DID NOT FIND RECORD WHEN TRYING TO UPDATE OR DELTE & ! MUST RESUME BACK AT A 'RETURN' SINCE WE WERE IN A 'GOSUB' & ! WHEN THE ERROR OCCURED & ! & 32050 RESUME 27220 IF ERR = 11% AND ERL = 27210% & ! & ! HIT END OF FILE WITHIN FAST COPY FILE ROUTINE & ! & \ IF ERR = 5% AND ERL = 27300 & THEN RESUME 27310 IF SWITCH%(18%) & \ PRINT #0%, CRLF$ & + "There is not an existing source or task to be saved." & + CRLF$ & + "If this is a new program make sure you " & + "have used the '/NEW' switch" & \ RESUME 32610 & ! & ! IF ERR OF FILE NOT FOUND, WHILE TRYING TO SAVE EXISTING & ! TASK TO OLD TASK AND THIS IS A NEW FILE BEING SAVED & ! THEN RESUME, OTHERSIWSE STATE THE ERROR AS TO WHY WE & ! CANNOT CONTINUE, THEN QUIT & ! & 32060 RESUME 27410 IF ERR = 5% AND ERL = 27400% & ! & ! TRIED TO KILL A NON-EXIATNT FILE & ! & \ RESUME 28020 IF ERR = 11% AND ERL = 28010% & ! & ! RESUME TO CLOSE 'HELP' FILE AFTER PRINTING IT FOR THE USER & ! & 32600 PRINT #0%, STRING$(3%,7%) + CRLF$ & + "UNEXPECTED ERROR " + NUM1$(ERR) + " IN PDPLBR AT LINE " & + NUM1$(ERL) + CRLF$ + ERT$(ERR) & ! & ! WHEN ALL ELSE FAILS, TELL USER WHAT HAPPENED & ! & 32610 PRINT #0%, CRLF$ & + "Files that were transfered before program error were:" & + CRLF$ & \ PRINT #0%, "NONE" IF FILES.MOVED% = 0% & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 54 \ PRINT #0%, "Original source to saved source" IF FILES.MOVED% AND 1% & \ PRINT #0%, "User source to Library source" IF FILES.MOVED% AND 2% & \ PRINT #0%, "Original object to saved object" IF FILES.MOVED% AND 4% & \ PRINT #0%, "User object to Library object" IF FILES.MOVED% AND 8% & \ PRINT #0%, "Original task to saved task" IF FILES.MOVED% AND 16% & \ PRINT #0%, "User task to Library task" IF FILES.MOVED% AND 32% & \ PRINT #0%, "Original CMD to saved CMD" IF FILES.MOVED% AND 64% & \ PRINT #0%, "User CMD to Library CMD" IF FILES.MOVED% AND 128% & \ PRINT #0%, "Original ODL to saved ODL" IF FILES.MOVED% AND 256% & \ PRINT #0%, "User ODL to Library ODL" IF FILES.MOVED% AND 512% & \ PRINT #0%, "Original source to your account" IF FILES.MOVED% AND 1024 % & \ PRINT #0%, "Original CMD and ODL to your account" IF FILES.MOVED% AND 20 48% & & 32767 CLOSE #I% FOR I% = 1% TO 12% & \ SYS$ = CHR$(9%) & \ END & ! & ! CLOSE ALL POSSIBLE FILES & ! CLEAR PROGRAM FROM MEMORY & ! END & ! & PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 55 Line Numbers #1000 30000:6 #1010 1000:5 #1040 1080 #1060 1020:2 4120:5 4140:4 4150:11 4155:4 4160:12 6039:2 6040:3 28020:2 28599:2 32005 32005:5 32007:4 32010:7 #1080 1010:18 #4140 4120:2 #4150 4140 32005:2 #4155 4150:8 #4160 4155 #6000 4160:9 32010:3 #6010 6001:2 #6020 6010 #6039 6001:4 #6040 4160:8 6001 6010:3 6060:4 #6060 32010:4 #8000 6040 #8030 8000:3 #8040 8060:10 32007 #8060 8060:5 32007:2 #8080 8060:6 32007 #8120 32010 #8140 32010 #8150 8140 #8220 8220:4 #8240 8220:2 #8260 8260:3 32010:2 #8280 32010:2 #8300 8140:3 #10000 6040 #10010 32020:2 #10020 10010 32020:3 #10025 10020:2 32020:4 #10030 10025 32020:5 #10040 10030 32020:6 #10050 10020 10020:7 10040 #10055 10050 #10060 10055 10055:2 #10065 10060:2 #10100 10100:4 #10110 10100:2 10110:3 32030 #10120 32030 #10130 10070 10125 #10140 10130:3 #10150 10150:3 32030:2 #10160 10130:6 32030:2 #10170 10160:2 #10180 10180:3 32030:3 #10190 10160:5 32030:3 #10500 10060 10065 16000:2 16000:5 PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 56 #11000 10050:9 10055:8 10060:10 #11070 11000:4 #12000 6040 #12015 32035 #12020 12015 12040:2 12050:2 12060:2 32040 #12040 12015:4 #12050 12040 #12499 12020 32035:3 32040 #14000 6040 14000:4 14000:7 #14100 6060 14000:6 14140:6 14250:6 #14101 14100 #14105 14100:4 32040:3 #14110 14115:4 14117:4 14242:2 14244:3 32040:3 #14117 14115:3 #14140 14140:5 #14199 14105:4 32040:6 #14200 14000:6 #14201 14200 #14205 14200:4 32040:4 #14210 14140:2 14250:2 14310:2 #14220 14230:2 14248:3 #14235 14235:2 #14240 14230:3 #14242 14240 #14244 14242:3 #14245 14244 #14246 14245:2 #14248 14246 14248:2 #14250 14250:5 #14260 14250:7 #14300 14000:6 #14301 14300 #14305 14300:4 32040:4 #14320 14320:3 #14399 14320:4 #14500 14101 14201 14240:4 14301 14510:3 #16000 6040 #18000 6040 #18020 18020:5 #18100 18020:6 #27210 27203 27210:3 32050 #27220 32050 #27300 32050:2 #27310 32050:3 #27400 32060 #27410 32060 #28000 1080:2 #28010 28010:3 32060:2 #28020 32060:2 #28500 1080:3 #32000 1000 #32610 32050:5 #32767 1000:7 4120:4 4140:3 4150:10 4155:3 4160:11 6039 6040:2 30000:8 31000:2 32000 32005 32005:4 32007:3 32010:6 PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 57 32040:2 Variables ACC% 27000 27000 27000 27100 27100 ANS$ @8060:2 @8060:3 8060:3 @8060:4 8060:4 8060:5 8060:5 8060:6 ATB% @27204 @27204:2 27204:2 27204:2 @27204:3 27204:3 27204:4 27204:4 ATRIB$ @27202 27202:2 27203 27204:2 @27204:4 27204:4 CCL.ENTRY% 1010:18 @1040:2 4120:4 4140:3 4150:10 4155:3 4160:11 6039 6040:2 @30000:5 32005:4 32007:3 32010:6 CHANGE.KEY% @14000 @14240:2 14250:7 CMD$ @8200 8200 @8220 8220:2 8220:3 @8260 8260:2 @10070:2 @10100:3 10100:3 10130:4 COMP.PROG.EXT$ @10025:2 @10025:3 10025:4 10025:5 CRLF$ @1010 1060:7 4120:3 4140:2 4150:9 4150:9 4155:2 4160:10 6001:3 6010:2 6010:2 6020:2 6020:2 8000 8060 8060 8140:2 8160 8280:3 8280:3 10000:2 10010:2 10020:3 10025:4 10030:2 10040:2 10070:2 10070:3 10130:2 12050 12050 12050 12060 12060 12060 12060 14000:2 14105:3 14115:7 14117:2 14140:8 14210 14210 14210:2 14220 14220 14220 14220 14220 14220 14220 14260:3 14320 14320:6 18020 18020 18020 27200:2 27300:2 27400:2 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 28500 30000:7 30000:7 30000:7 32005:3 32010:5 32020:2 32020:3 32020:4 32020:5 32020:6 32035:2 32040:5 32050:4 32050:4 32600 32600 32610 32610 DAT% 27100 27100 DATA.LINE$ @1060:8 @1060:9 1060:9 1080 1080:2 1080:3 @4020 4020 4020:2 4020:3 @4020:4 4020:4 4100:2 4100:5 @4100:6 4100:6 4100:6 4120:2 4120:3 4120:3 @30000:4 DATE.1900% #130 DATE.JUL #130 8020:5 10500:3 14130:3 14245:6 DATE.STRING$=18 #130 DEST.ACC$ @10050:6 @10055:5 @10060:7 11000:2 11000:3 @18000 18000:2 18000:3 18000:4 DUMM$=32 #910 @4150 @8080 @11070 @14115:2 @18060 @27200:4 PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 58 DUMM%(15) #910:2 4150:3 4150:4 4150:4 4150:5 4150:5 14115:4 14115:5 14115:5 14115:5 14115:6 14117 14244:4 27201 ERRFLAG% #130 FILE.NAME$ @4020:3 4150 @4150:5 4150:6 4150:7 4150:9 4155 4155:2 4160 4160 6000 6060:2 8030 8080 @8150 8150 8150 8160 8160:2 12015 12015:2 12020 14100 14100:2 @14100:3 14200 14200:2 @14200:3 14300 14300:2 @14300:3 16000 16000:3 16000:4 FILE1% @10050:7 @10055:6 @10060:8 11020:2 FILE2% @10050:8 @10055:7 @10060:9 11070:2 FILES.MOVED% @8000:2 @8080:2 8080:2 @8280 8280 @10000:3 @11020:2 11020:2 @11070:2 11070:2 32610:2 32610:3 32610:4 32610:5 32610:6 32610:7 32610:8 32610:9 32610:10 32610:11 32610:12 32610:13 32610:14 FUNCTION% @1060:6 @4160:2 @4160:3 @4160:4 @4160:5 @4160:6 @4160:7 4160:8 4160:8 4160:9 6001 6001 6001 6001 6001 6001:2 6040 GO.SUB% 14117:5 @14140 @14140:3 14210:3 @14242 @14245 @14250 @14250:3 @14310 @14310:3 HLP.CHNL% @1010:10 12000:5 12050 12060 12499 28000 28010 28010:2 28020 I% @1000:2 @1000:4 1000:5 1000:5 1010:3 @1010:3 1010:4 @1010:4 @4020:2 4020:3 4020:4 @4100:2 4100:3 4100:5 4100:6 @8000:4 8000:5 8000:5 8000:6 8000:6 8000:7 8000:7 8000:8 8000:8 8000:9 @14000:3 14000:4 14000:4 14000:5 14000:6 14110 14115:3 14130 14130 14130 @14130 14130:3 @14130:3 14210:2 14210:2 14210:2 14210:2 14210:2 @14210:2 @14230 14230:2 14230:2 14230:3 14240 14242:2 14242:3 14244 14245:2 14246 32767 32767 I1% @4100:5 4100:6 IN$ 27200 27200:2 27200:3 27300 27300:2 27300:3 27400 27400:2 @27400:3 IN.CHNL% @1010:8 1010:12 8160:2 8200 8220 8260 8280:2 10010:3 10010:4 10020:4 10020:5 10025:5 10025:6 10030:3 10030:4 10040:3 10040:4 10070:4 10080 10100 10110 10120 10140 10150 10160 10170 10180 10190 27200:3 27200:4 27202 27210 27220 J% @1010:15 1010:16 1010:16 1010:17 @1060:3 1060:4 1060:4 1060:5 @4100 4100:2 4100:4 4120 @14235 14235:2 14235:2 @14235:3 14235:3 14242:4 14242:5 14244:2 14244:4 14245:3 14245:6 14245:7 14246:2 14246:4 14246:5 @14500:3 14500:4 14500:4 14500:4 PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 59 KB.CHNL% @1010:7 1010:11 1020 1040 1060:7 1060:8 4120:3 4140:2 4150:9 4155:2 4160:10 6010:2 6020:2 8000 8060 8060:2 8060:7 8060:8 8140:2 8160 8180 8240:2 8280:3 10000:2 10010:2 10010:5 10020:3 10020:6 10025:4 10025:7 10030:2 10030:5 10040:2 10040:5 10130:2 10130:5 10140:2 10160:4 10170:2 12000 12000:2 14000:2 14000:3 14105:3 14110:2 14110:3 14115 14115:7 14117 14117:2 14117:3 14140:4 14140:8 14210 14210:2 14220 14230 14235 14242:4 14242:5 14244:2 14245:3 14245:4 14245:7 14246:2 14246:3 14246:5 14248 14250:4 14260:3 14320 14320:2 14320:6 14500 14500:2 14510:2 27200:2 27220:2 27300:2 27400:2 28010:2 28500 30000:7 32005:3 32010:5 32035:2 32040:5 LBR.CHNL% @1010:6 4000 4000:3 6000:2 6020 6060:3 8300 10500:6 12010:2 12015:3 12020:2 14105 14105:2 14140:7 14205 14250:9 14250:10 14260 14260:2 14305 14320:5 LIBR.BLD.ACC$ @4000:5 8000 8160 8160:2 10000:2 10070:4 10125:2 10126 10126 10130 10130:2 LIBR.SOUR.ACC$ @4000:4 8000 8080 10000:2 10050:6 10055:5 MAX.SWITCHES% @1010:14 1010:15 @1060:2 1060:3 4100 ODL$ @10070:3 @10110:2 10110:2 10160:3 OLD.PROGRAM.NAME$ @14240:3 14250:9 OUT$ 27200 27200:2 27201 27300 27300:2 27300:3 OUT.CHNL% @1010:9 1010:12 8040 8040:2 8180:2 8220:3 8240 8240:3 8260:2 8280:2 10130 10130:4 10140:3 10150:2 10160:3 10170:3 10180:2 10190 27201 27202:2 27204:4 27220 OUTPUT.FILE$ @8030 8040 8060 @8060:8 @8060:9 8060:9 8060:9 8080 @8150:2 8150:2 8150:2 8180 8180:2 8240:2 8240:3 PDP.ACCOUNT%(7) #900:4 4000:4 4000:5 PDP.ACCOUNT.DATE%(4) #900:3 6010:2 6020:2 @8000:7 8000:7 @8020:5 @10500:3 12050 12060 12060 12060 12060 @14130:3 14210:2 14245:3 @14245:6 14245:7 PDP.ACCOUNT.RECEIVED%(4) #900:3 6001 6010:2 6020:2 @8000:6 8000:6 @8020:3 12050 12060 12060 12060 12060 @14130 14210:2 14244:2 @14244:4 PDP.ACCOUNT.TIME%(4) #900:3 6010:2 6020:2 @8000:8 8000:8 @8020:7 @10500:5 12050 12060 12060 12060 12060 @14130 14210:2 14246:2 @14246:4 14246:5 PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 60 PDP.ACCOUNTS$=10 #900:4 @4000:2 4000:3 PDP.COMPILED.ACCOUNT% #900:3 10060:7 12050 @14115:6 14210 18000 PDP.COMPILED.DISK$=4 #900:3 10060:7 12050 @14115:5 14115:7 14210 18000 PDP.DISK$(7)=3 #900:4 4000:4 4000:5 PDP.MAXSIZ$=56 #900 @900:5 14250:8 @14250:11 PDP.PRMKEY$=10 #900:2 #4000 @6000 6000:2 6001:3 6010:2 6020:2 @6060:2 6060:3 @12010 12010:2 @12015:2 12015:3 32010:5 32035:2 PDP.PROGRAM.LOCKED%(4) #900:3 6001 6001 6010 6010:2 @8000:5 8000:5 @8020 @8020:2 @10500 12040:2 12050 12060 12060 12060 12060 @14130 14210:2 14242:4 @14242:5 PDP.PROGRAM.NAME$=10 #900:3 12050 @14100:2 14105 14105:3 @14200:2 14205 14210 14240:3 @14300:2 14305 @14500:2 14500:3 @14500:4 14500:4 14500:4 14510 14510 14510:2 32040:5 PDPLBR #4000 PPN% @1000:3 1000:4 1010:5 4160:6 4160:7 6001 8020:3 PROG.EXT$ @4150:2 @4150:3 @4150:4 4150:5 8060:9 8140:2 10010:2 10010:3 @10050:3 @10050:4 @10055:4 @10060:4 @10060:6 11000 11000:2 RUN.TIME$ @27202:2 SAVE.EXT$ @10050:2 @10050:5 @10055:3 @10060:3 @10060:5 11000:3 SWAP.CHNL% @1010:12 27210:2 SWITCH%(25) #1010:2 @1010:4 @1010:16 @1060:4 @4100:4 4140 4140 4140 4140 4140 4140 4140 4140 4140 4140 4140 4140 4150:3 @4150:6 @4150:7 4150:8 4150:8 4160:2 4160:3 4160:4 4160:5 4160:6 4160:6 4160:7 6001 8000 8000 8000:3 8020:2 8140 8140 8140 8140 8160 8160 8180 8180 8240:2 8240:2 10000:2 10000:2 10010 10010 10010:2 10010:2 10010:5 10010:5 10020 10020:2 10020:3 10020:3 10020:6 10020:6 10025 10025:3 10025:4 10025:4 10025:7 10025:7 10030 10030 10030:2 10030:2 10030:5 10030:5 10040 10040:2 10040:2 10040:5 10040:5 10050 10050 10050 10050 10050:4 10050:5 10050:10 10055 10055:2 10060 10060 10060:2 10060:5 10060:6 10065 10070 10125 10130:2 10130:2 10130:3 10130:5 10130:5 10140:2 10140:2 10160:2 10160:4 10160:4 10170:2 10170:2 11000:4 11000:4 12040 12040:2 12050:2 14100:3 16000:2 27200:2 27200:2 27220:2 27220:2 27300:2 27300:2 27400:2 27400:2 32010:4 32050:3 PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 61 SWITCH$(25) #1010:2 @1010:3 @1010:16 @1060:4 4100:2 SYS$ @10125:2 @10126 @10190:2 @10190:3 @10190:4 @10190:5 @10190:6 @11010 @11020 @11070:3 @16000 @16000:3 @16000:4 @18040 @30000 @30000:2 30000:2 30000:3 30000:4 30000:7 @32767:2 TIM% 27100 27100 TMP$ @8020:6 8020:7 8020:7 @10080 10080 @10100 10100:2 10100:3 @10110 10110:2 @10150 10150:2 @10180 10180:2 @10500:4 10500:5 10500:5 @12000:2 @12000:3 12000:3 @12000:4 12000:4 12000:5 @14115 14115:2 @14117:3 14117:4 @14140:4 14140:5 14140:5 14140:6 @14245:4 P14245:5 @14246:3 14246:4 14246:4 @14248 14248:2 14248:2 14248:3 @14250:4 14250:5 14250:5 14250:6 @14250:8 14250:11 @14320:2 14320:3 14320:3 14320:4 @18020:2 @18020:3 18020:3 @18020:4 18020:4 18020:5 18020:5 18020:6 TRANSFER.IN.FILE$ @11000 11070 11070:3 @18000:2 18020 18060 TRANSFER.OUT.FILE$ 10050:10 10050:10 10055:9 10055:9 10060:11 10060:11 @11000:2 11020 11070 @18000:3 18020 18020 18040 18060 18060:2 18060:2 TRANSFER.SAVE.FILE$ @11000:3 11010 11020 @18000:4 18020 18040 USER.ACC$ @1010:5 8000 8040 8080 8180 8180:2 8240:2 8240:3 10000:2 10010:2 10010:3 10020:3 10020:4 10025:4 10025:5 10030:2 10030:3 10040:2 10040:3 10140 10140:2 10170 10170:2 10190:2 10190:3 10190:4 10190:5 10190:6 11000 16000 16000:3 16000:4 USER.FILE.NO.EXT$ @4160 10010:2 10010:3 10020:3 10020:4 10025:4 10025:5 10030:2 10030:3 10040:2 10040:3 10070:4 10125:2 10126 10126 10130 10130:2 10140 10140:2 10170 10170:2 10190:2 10190:3 10190:4 10190:5 10190:6 11000 11000:2 11000:3 18000:2 18000:3 18000:4 User-defined Functions FNACC$( ) 1010:5 4000:4 4000:5 10060:7 12050 14117 14210 14210:2 14244:2 18000 #27000 27100 FNFAST.COPY$( ) 8080 11070 18060 #27200 FNKILL.FILE$( ) 10125:2 10190:2 10190:3 10190:4 10190:5 10190:6 11010 11070:3 16000 16000:3 16000:4 #27400 FNNAME.FROM.TO$( ) 10126 11020 18040 #27300 PDPLBR Cross-Reference Listing of PDPLBR.B2S on 03-Dec-82 at 08:24 Page 62 FNWHO$( ) 6010:2 6020:2 12050 12060 12060 12060 12060 #27100 COMMON Areas DATPRM #130 DATE.1900% DATE.STRING$=18 DATE.JUL ERRFLAG% MAP Definitions .NONAME. #4000 PDPLBR PDP.PRMKEY$=10 FSPFUN #910 #910:2 DUMM$=32 DUMM%(15) PDPLBR #900 #900:2 #900:3 #900:4 PDP.MAXSIZ$=56 PDP.PRMKEY$=10 PDP.PROGRAM.NAME$=10 PDP.COMPILED.DISK$=4 PDP.COMPILED.ACCOUNT% PDP.PROGRAM.LOCKED%(4) PDP.ACCOUNT.RECEIVED%(4) PDP.ACCOUNT.DATE%(4) PDP.ACCOUNT.TIME%(4) PDP.ACCOUNTS$=10 PDP.DISK$(7)=3 PDP.ACCOUNT%(7) Subprograms called DATECV( ) 8020:4 10500:2 14130:2 14245:5 Please check the use of the following: ACC% DAT% OUT$ RUN.TIME$ TIM% There were 180 identifiers listed, and 1334 references to them. 291 work-file entries (37 disk blocks) were used.