PDPLBR - BASIC and BASIC PLUS TWO RSTS/E LIBRARIAN System - Single Program Utilty Language - Basic Plus Two / RMS11 Release - 01 FUNCTION: Allow programmers to move sources, cmds, odls and executables between library, development and production accounts. Once installed into the library, extraction and replacement are simple commands. Programmers do not need to know actual library or production locations. PDP(LBR) creates contigous privileged executables, this does require the optional feature patch 3.5.11. If so installed all users would have to be classified as privileged although no actual privileged account is used. PDP can be used for either Basic or Basic Plus Two, and handles special Basic Plus Two items as maps, subroutines, task with/without cmd and odl files. The default is for Basic Plus Two with cmd and odl files. PDP is dependent upon a few RSTS/E only functions, but could be (and soon will be) tailored for the VMS operating system. PDP consists of one task and one file (PDPLBR.IND) with one library record definition for its source and "bld" files as well as one record per program. The "bld" files are the combination of the sources cmd and odl files. They are totally transparent to the user and are used only to save disk space. (A one time program is used to create all "bld" files from existing cmd and odl files.) Two library accounts are now used, with space availble for several more to be added if needed or desired. The current design is to keep all sources in one account (along with all objs from subroutines) and one account to contain all "bld" files. Each program record contains the location of the executable image, the last five times this program (or module) was extracted and a lock flag. The history provives a log of what account checked out the module by date and time. The lock flag prevents the same module from being checked out multiple times simultaneously. The combination of both the account and lock flag prevent someone who might have the same module checked out 'read only' or a PIP'ed version from replacing back into the library. Another unseen function of PDP is that when a module is replaced all current versions of that module (ie, b2s, tsk or bac, bld files) are saved back one version and then the modified version copied back in as the (new) current version. There are currently 26 commands that PDP recognizes, they range from simple extract, replace commands to frequently used but quite helpful commands as exchange and nochange. A full list and short description of all commands are: 1. "/CO" - COPY - copy from library to user account 2. "/RO" - READ ONLY - used with /CO, cannot replace 3. "/MAP" - source file is map (.b2s only) 4. "/SUB" - source file is subroutine - (b2s on copy, b2s and obj on replace) 5. "/BA" - BASIC program source 6. "/B2" - BASIC PLUS TWO source 7. "/NOBA" - not a BASIC source 8. "/NOB2" - not a BASIC PLUS TWO source 9. "/NOCH" - NOCHANGE - copied file but did not change it 10. "/RE" - REPLACE - save old version and replace all new verions from user account 11. "/TS" - TASK - replace task 12. "/CM" - COMMAND - replace command file 13. "/OD" - ODL - replace odl file 14. "/NOTS" - NO TASK - do not replace task (executable) 15. "/NOCM" - NO COMMAND - do not replace command 16. "/NOOD" - NO ODL - do not replace odl 17. "/NOOB" - NO OBJECT - do not replace object 18. "/REX" - REPLACE EXISTING - do not save current version 19. "/NEW" - NEW program entering librarian 20. "/WA" - WATCH progress of file moved 21. "/LO" - LOG progress of files moved 22. "/LI" - LIST those modules checked out 23. "/FU" - FULL LIST - all modules and their history 24. "/UP" - UPDATE - manual update of librarian records 25. "/EXC" - EXCHANGE - save current executable as 'bad' copy saved executable as 'tsk' or 'bac' 26. "/NOBL" - NO CMD AND ODL - do not attempt to find cmd or odl The 'watch' feature besides being nice to look at allows the user to see what PDPLBR is looking for, finding or not finding, and see where files are being read from or put to. Also, there is some help reguardless of the 'watch' or 'log' option that is always enabled. If PDPLBR errors off, besides the error message, error number and error line, a list of what file transfers were done is listed. This is helpfull in determining what files may have to be manually copied back into the user's account or manual changes to librarian's record performed ('update'). Currently 90% of PDP's usage for Adolph Coors Company has been with BASIC PLUS TWO, and has been very reliable and friendly to work with. Five programmers are currently using PDPLBR and find it to be an extremely valuable, time saving, and error saving productivity tool. None of these programmers would ever want to return to the 'manual' method of handling programs. There have been some minor flaws uncovered but can be managed around for most cases. There is definitely room for improvement. The code is fairly well documented as to what it is (trying) to do, so don't be afraid to modify to meet your applications better. Have fun, and better PDP - ing. 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.