ÿL 01F4 09:52:37 27 Feb 2003 128016 DATA rpl-load þ01usr/lib/pick/abý7ý87ý01F4þ/usr/lib/pick/dtý7ý87ý01F4þ/home/tape/tape.Zý7ý87ý01F4þ EOFÿ ÿL 01F4 09:52:37 27 Feb 2003 128016 DATA rpl-load þ01 ÿM65ÿXC EOFÿ ÿL 01F4 09:52:37 27 Feb 2003 128016 DATA rpl-load rpl-load þ01 ÿDþ1þFADþ0017rpl-loadþdþ96924þ37þþþþþþLþ12þþþ(37)þÿDþ2þFAEþ001Bcontrol-fileþDþ97348þ1þþþþþþLþ10þþþ(1)þÿDþ3þFAFþ001Bcontrol-fileþDþ97513þ3þþþþþþLþ10þþþþÿDþ2þFB0þ0018newac-spsþDþ97350þ1þþþþþþLþ10þþþ(1)þÿDþ3þFB1þ0018newac-spsþDþ97403þ1þþþþþþLþ10þþþ(1)þÿIFB1þ17C7Bþ0094:list-system-errorsþNþSORT DM,ERRORS, BY-DSND DATE BY-DSND STIME TIMDAT R ERROR.MESSAGE LAST-TCL-ENTRY USERPIB ABS-VERS-PGM ID-SUPP DBL-SPCþÿIFB1þ17C7Bþ004Flist-system-errorsþVR01þ3ý$RPL.VERBSþFþSYSPROG-PL-S LIST-SYSTEM-ERRORSþÿIFB1þ17C7Bþ0039sysprog-sþVR01þ3ý$RPL.VERBSþFþSYSPROG-PL-S LOGONþÿIFB1þ17C7Bþ003Ecompile-rplþVR01þ3ý$RPL.VERBSþFþPROCLIB-S COMPILE-RPLþÿIFB1þ17C7Bþ0042list-uncompiledþVR01þ3ý$RPL.VERBSþFþPROCLIB-S COMPILE-RPLþÿIFB1þ17C7Bþ0032goþVR01þ3ý$RPL.VERBSþFþSYSPROG-PL-S LOGONþÿIFB1þ17C7Bþ0035:verify-systemþVRþ3ý9þFþDM,BP, VERIFY-SYSTEMþÿIFB1þ17C7Bþ0045verify-systemþVR01þ3ý$RPL.VERBSþFþsysprog-pl-s verify-systemþÿIFB1þ17C7Bþ0043account-saveþVR01þ3ý$RPL.VERBSþFþsysprog-pl-s account-saveþÿIFB1þ17C7Bþ0041acc-restoreþVR01þ3ý$RPL.VERBSþFþsysprog-pl-s acc-restoreþÿIFB1þ17C7Bþ004Bchange-to-rpl102þVR01þ3ý$RPL.VERBSþFþsysprog-pl-s change-to-rpl102þÿIFB1þ17C7Bþ0041update-userþVR01þ3ý$RPL.VERBSþFþsysprog-pl-s update-userþÿIFB1þ17C7Bþ004Bmake-account-rplþVR01þ3ý$RPL.VERBSþFþSYSPROG-PL-S MAKE-ACCOUNT-RPLþÿIFB1þ17C7Bþ003Dfile-saveþVR01þ3ý$RPL.VERBSþFþsysprog-pl-s file-saveþÿIFB1þ17C7Bþ004Dlist-control-fileþVR01þ3ý$RPL.VERBSþFþsysprog-pl-s list-control-fileþÿIFB1þ17C7Bþ0015systemþqþmdsþÿIFB1þ17C7Bþ0045LIST-ACC-FILEþVR01þ3ý$RPL.VERBSþFþSYSPROG-PL-S LIST-ACC-FILEþÿIFB1þ17C7Bþ0019newacþqþdmþnewacþÿIFB1þ17C7Bþ0013flushþVTþDþÿIFB1þ17C7Bþ0026mverifyþvrþ3ý9þfþdm,bp, mloadþÿDþ2þFB2þ0018proclib-sþDþ97517þ1þþþþþþLþ10þþþ(1)þÿDþ3þFB3þ0018proclib-sþDþ97583þ13þþþþþþLþ10þþþþÿIFB3þ17D2Fþ04D5SET-FILEþPQþ* PROGRAM : (SET-FILE) CREATES A Q-POINTER TO ENTERED FILE AND ACCOUNTþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (JAN 23, 1984)þ*þ* THIS IS CALLED BY CATALOG ITEM 'SET-FILE'þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO CREATE A Q-POINTERþ* CALLED 'QFILE' TO ADDRESS AN ENTERED ACCOUNT AND FILE.þ*þ*þ** INPUT BUFFERSþ*---------------þ*þ* %1 - VERBþ* %2 - ACCOUNT NAME OR NULLþ* %3 - FILE NAME OR NULLþ*þ*þ* CREATE Q-POINTER 'QFILE' TO SPECIFIED ACCOUNT & FILEþ*þF-OUTPUT &1 "DICT MD"þ*þ* ACCOUNT NAMEþ*þIF # %2 THENþ TERM L,"Account Name ? "þ IPF %2þ IF %2 = "*"ý"" GO 9999þ ENDþ*þ* FILE NAMEþ*þIF # %3 THENþ TERM L,"File Name ? "þ IPF %3þ IF %3 = "*"ý"" GO 9999þ ENDþ*þF-READ &1 "QFILE"þ&1.1 = 'Q'þIF &1.1(1,1) = 'D' THENþ TERM L, "'QFILE' ALREADY EXISTS AS A 'D' ITEM IN M/DICT, Q-POINTER NOT UPDATED"þ GO 9999þ ENDþ*þMV &1.2 %2, %3, "", "", "", "", "", "L", "10"þF-WRITE &1þTERM "'QFILE' Updated",Lþ*þ9999 *þRTNþÿIFB3þ17D2Fþ0224HEADINGþPQþ* PROGRAM : (HEADING) SMI UTILITIES HEADING GENERATORþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (JAN 18, 1984)þ*þ* THIS IS CALLED BY MANY PROGRAMS IN PROCLIB-Sþ*þ* THIS PROGRAM PROVIDES THE FACILITY TO DISPLAY A STANDARDþ* HEADING ON THE TERMINAL.þ*þ*þ** INPUT BUFFERSþ*---------------þ*þ*þ* %1 - HEADING DATA (MAX 39 CHARACTERS)þ*þTERM C,"SMI UTILITIES",þ (20),%1:T1,39:,(60),$2:MTH:,(70),$1:D2:,Lþ*þRTNþÿIFB3þ17D2FþLTCL-II-INITþÿTCL-II-INITþPQþ* PROGRAM : (TCL-II-INIT) TERMINAL INTERFACE TO GET FILE NAME AND ITEM IDS'þ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (MAR 15, 1984)þ* LAST MODIFIED : W.J.POLLIN (04/88) FOR EDGEþ*þ* THIS IS CALLED BY PROGRAMS 'P-LIST', 'PQ', '.CMD', 'EX',þ* 'DELETE', 'CHECK-DATA', 'COPY'þ*þ* THIS SUBROUTINE IS CALLED BY OTHER UTILITY PROGRAMS AS ANþ* INTERFACE AT TCL FOR ENTERING DATA. THIS CAN NOT BEþ* RUN AT TCL.þ*þ* IT WILL:þ* IF %2 IS NULL, PROMPT FOR FILE NAME.þ* STORE OPTIONS FROM STRING.þ* PROMPTS FOR ITEM-IDS IF NO SELECT LIST AND NO IDS IN INPUT IN %3.þ* THIS PGM USES %1, SO SAVES THE VERB IN &9.0 THEN PUTS IT BACK IN %1þ*þ* OUTPUT TO PROGRAMS THAT CALLED THIS PGM:þ* OPTIONS WILL BE PUT INTO #1.þ* FILE NAME WILL BE IN %2.þ* ITEM ID NAMES WILL BE IN %3 TO %250 IF THE .INDEX (%1) IS '2'þ* OR IN SELECT REGISTER 1 (!1) IF THE .INDEX (%1) IS '0'.þ*þ** INPUT BUFFERSþ*---------------þ*þ*þ+EQ .INDEX %1þ+EQ .FILENAME %2þ+EQ .FILE &1þ+EQ .ITEMID %%1þ+EQ .MD &2þ+EQ .TCL-COMMAND &9.0þ*þ*þF-INPUT &2 "DICT MD"þ*þ* SAVE THE TCL COMMAND OR VERBþ*þ.TCL-COMMAND = %1þ*þIF .TCL-COMMAND # 'EX' THENþ IF %2 = ('('0X) MV %2 "",%2þ IF .FILENAME = "DICT" MV .FILENAME .FILENAME*" "*%3, %4, *þ F-READ .MD %1 ELSEþ ENDþ*þ* IF A CATALOG ITEM GET THE FILE NAMEþ*þ IF .MD.1 = "VC" THENþ %1 = .MD.4:G0 1:þ ELSEþ %1 = .MD.0þ ENDþ ENDþ*þ* IF NO FILE NAME, GET ITþ*þIF .FILENAME = "" THENþ TERM L,"File Name "þ IPF?.FILENAMEþ ENDþ*þ* MOVE OPTIONS TO #1 AND REMOVE FROM ITEM LISTþ*þFOR .INDEX = 3 TO 250þ IF .ITEMID = ""ý("("0X) THENþ #1 = .ITEMID:G1(1::G0)1:þ .ITEMID = ""þ .INDEX = 250þ ENDþNEXT .INDEXþ*þ* NEXT CHECK ITEM ID NAMES IN %3.þ* IF THE ITEM IDS' WERE ALREADY ENTERED, SET .INDEX TO '2'.þ* IF THE ITEM IDS' WERE NOT ENTERED, SEE IF THERE WAS Aþ* SELECT LIST ENTERED AND PUT INTO !1. IF !1 HAS ITEMS,þ* SET .INDEX TO '0' INDICATING ITEMS ARE IN THE SELECT REGISTER.þ*þIF %3 THENþ .INDEX = 2þ ELSEþ*þ* IF FOR 'EX', ASK FOR ITEM ID (ONLY 1 ITEM ID ALLOWED)þ IF .TCL-COMMAND = 'EX' GO 1000þ .INDEX = #1þ !1 = ""þ #1 = "PQ-SELECT 1"þ Pþ IF !1 THENþ HPQ-RESELECT 1þ Pþ #1 = .INDEXþ .INDEX = 0þ GO 9999þ ENDþ*þ* PROMPT FOR ITEMIDSþ*þ1000 *þ #1 = .INDEXþ FOR .INDEX = 3 TO 250þ IFN .INDEX = 3 THENþ TERM "Enter Item-ID "þ ELSEþ TERM "Next Item-ID "þ ENDþ IPF?.ITEMIDþ IF # .ITEMID .INDEX = 250þ* IF VERB 'EX', ONLY GET ONE ITEM IDþ IF .TCL-COMMAND = 'EX' .INDEX = 250þ IF .ITEMID = '*' THENþ IFN .INDEX = 3 .INDEX = 250þ ENDþ NEXT .INDEXþ .INDEX = 2þ ENDþ*þ* IF FIRST & ONLY ITEMID IS "*", USE F-SEL TO SELECT ALL ITEMSþ*þIF %3 = "*" THENþ IF # %4 THENþ F-INPUT .FILE .FILENAMEþ F-SEL .FILE !1þ .INDEX = 0þ ENDþ ENDþ*þ9999 *þRTNþÿIFB3þ17D2FþLCHECK-DATAþÿCHECK-DATAþPQþ* PROGRAM : (CHECK-DATA) GENERATES OR VERIFIES CHECKSUM RECORDS FOR ITEMS IN THE DATA SECTION OF A FILEþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (JAN 23, 1984)þ* : JIM ROBRTS 12/07/89 CHANGE GROUP MARKER FROM * TO |þ*þ* THIS IS CALLED BY CATALOG ITEM 'CHECK-DATA'þ*þ* THIS PROGRAM CAN BE RUN FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO GENERATE A CHECKSUM ITEMþ* FOR RPL PROGRAMS. IT WILL ALSO VERIFY AN EXISTING CHECKSUMþ* ITEM FOR A PROGRAM WITH THE PROGRAM FOR MISMATCHES.þ*þ** INPUT BUFFERSþ*---------------þ*þ* #1 = OPTION LISTþ* #2 =þ* #3 = CHECKSUM RECORD FROM DICTþ* #4 = RECORD SIZE IN BYTESþ* #5 = BYTE DIFFERENCEþ* #6 = FLAG FOR PRINT OPTIONþ* #7 = CKSUM FROM FILE ITEMþ* #8 = FLAG (E OPTION)þ* #9 = FLAG (FOR G OPTIONþ*þ*þ+EQ .FILE &1þ+EQ .FILE-DICT &2þ*þ* FOLLOWING SUBROUTINE OPENS FILE FROM %2 TO &1;þ* STORES OPTIONS FROM INPUT BUFFER IN #1.þ* ETC.þ[PROCLIB-S TCL-II-INIT]þ*þF-OUTPUT .FILE %2þF-OUTPUT .FILE-DICT DICT %2þ*þ* CHECK OPTIONSþ*þ* P - LIST ON PRINTER (OTHERWISE DISPLAY ON TERMINAL)þ* G - GENERATE NEW CHECKSUM DATAþ* E - EXAMINE CHECKSUM DATA WITH EXISTING DATAþ* NULL DEFAULTS TO 'E' OPTION WITH DISPLAYþ*þ*þIF #1 # ""ý"P"ý"G"ý"P,G"ý"G,P"ý"E"ý"E,P" TERM L,(1),"INVALID OPTION LIST, ENTER RTN " ü IP-%1 ü GO 9999þSTL #8 #1,"P"þIF #8 = "" L NþSTL #8 #1,"E"þIF #8 #8 = "E"þSTL #9 #1,"G"þIF #9 #9 = "G"þ*þ* GET THE CHECKSUM RECORD IN THE DICTIONARY OF THE FILE BEING USED.þ* IF NOT THERE, CREATE IT.þ*þF-READ .FILE-DICT "CHECKSUM"þMV .FILE-DICT.0 "CHECKSUM","X"þLPTR HDR,"DATA CHECK-SUM FOR: ",%2,(46),T," PAGE ",P,Lþ*þ* MAIN LOOPþ*þ* %1 = INDEX (IF 0, IDS IN SELECT STRING)þ* %2 = NEXT IDþ*þ400 *þIFN %1 = 0 THEN %2 = !1 þ ELSE %1 = %1 + 1ü %2 = %%1þ ENDþ405 *þIF # %2 GO 9999þF-READ .FILE %2 ELSEþ LPTR L,%2,(25)," NOT ON FILE"ü GO 400þ ENDþ*þ#4 = $8 ü* SAVE ITEM SIZEþMVL #3 .FILE-DICT.2,%2*"|]"þIF #9 # "G" GO 500þ*þ* GENERATE CHECKSUMþ*þMVK .FILE-DICT.2 .FILE-DICT.2,#3 ü* KILL OLD CHECKSUMþ* MVE #3 .FILE-DICT.2,#3þ*þ* THE FOLLOWING USER EXIT GENERATES A CHECKSUM VALUE FOR THEþ* FILE STARTING AT ATTR 0 AND PUTS IT INTO #7.þ*þU51B9, .FILE.0, #7þ*þ* DISPLAY RESULTS AND WRITE TO DICT ITEMþ*þMVA .FILE-DICT.2 %2*"|"*#7*"|"*#4þ.FILE-DICT.1 = "X"þF-WRITE .FILE-DICTþLPTR %2,(25)," CHECKSUM = ",#7," SIZE = ",#4," BYTES"þ*þGO 400þ*þ* VERIFY MODEþ*þ500 *þIF # #3 LPTR (1),%2,(25)," VERIFY ABORTED DUE TO NO GENERATED CHECKSUM"üGO 400þMVE #3 .FILE-DICT.2,#3þ*þ* THE FOLLOWING USER EXIT GENERATES A CHECKSUM VALUE FOR THEþ* FILE STARTING AT ATTR 0 AND PUTS IT INTO #7.þ*þU51B9, .FILE.0, #7þ*þ* COMPARED COMPUTED CHECKSUM TO EXISTING CHECKSUM FOR ITEMþ*þIFN #4 # #3:G2|1: THENþ #5 = #4 - #3:G2|1:þ LPTR (1),%2,(25)," BYTE COUNT ERROR; COUNT = ",#4," ERROR = ",#5þ ELSEþ IF #7 # #3:G1|1: THENþ #5 = #4 - #7:G2|1:þ LPTR (1),%2,(25)," CHECK SUM ERROR; CKSUM = ",#7," ERROR = ",#5þ ELSE IF #8 # "E" LPTR (1),%2,(25)," VERIFIED"þ ENDþ ENDþ*þ GO 400þ*þ9999 *þRTNþÿIFB3þ17D30þ058BPRINTRONIXþPQþ* PROGRAM : (PRINTRONIX) HANDLES PRINTRONIX PRINTER FOR SPECIAL FORMSþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (JAN 20, 1984)þ*þ* THIS IS CALLED BY CATALOG ITEM 'PRINTRONIX'þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO RESET THE ELECTRONICþ* VFU FOR PRINTRONIX PRINTERS.þ*þ*þ* IF EXTERNALLY CALLEDþ* --------------------þ*þ* %1 - VERBþ* %2 - PAGE LENGTH IN INCHES OR NULLþ* %3 - NUMBER OF PRINT LINES PER INCH (6 OR 8) OR NULLþ*þ*þ*þ*þ* ENTER FORMS LENGTHþ*þIF %2 GO 200þ100 *þTERM L,"Enter Form Length (in Inches) "þIP?%2þ IFN %2 < 0 TERM L,"INVALID ENTRY" ü GO 100þ IFN %2 >= 20 TERM L,"INVALID ENTRY" ü GO 100þ*þ* ENTER NUMBER LINES PER INCHþ*þ200 *þIF %3 GO 300þTERM "Specify 6 or 8 Lines Per Inch "þIP?%3þ*þ* COMPUTE # LINES; FORCE 6 LINES/INCH IF ILLEGAL VALUE IN %3þ*þ300 *þIFN %3 # 8ý6 %3 = 6þ%2 = (%2;MD1; X %3) / 10þ*þ* AT THIS POINT, %2 HAS # LINES (MAY BE 0)þ*þIFN %2 = 0 %3 = "1E";MX;ü GO 700þIFN %2 > 15 IFN %2 < 132 GO 400þTERM L, B, "ILLEGAL # LINES: < 15 OR > 132!"þMV %2 "", ""þGO 100þ400 *þ%3 = "1E10";MX;þ%4 = "11";MX;þ500 *þ%2 = %2 -1þIFN %2 > 0 %3 = %3*%4 ü GO 500þ%4 = "1F";MX;þ%3 = %3*%4þ700 *þLPTR %3þLPTR (133),"^"ü L (133), "^"ü L (133), "^"ü L (133), "^"þ*þ9999 *þRTNþÿIFB3þ17D30þLMODULOþÿMODULOþPQþ* PROGRAM : (MODULO) NEW MODULO CALCULATIONþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (DEC 28, 1984)þ*þ* THIS IS CALLED BY PROGRAMS 'CMS', 'REALLOCATE'.þ* ALSO CALLED BY PROGRAMS 'CHANGE-MD', 'LIST-FILE-STATS'þ* IN SYSPROG-PL-S. AND CALLED BY 'FILE-ALLOCATE'þ* IN MASTER FILE FOR BCP/MCS.þ*þ* THIS PROGRAM CAN ONLY BE EXECUTED FROM ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO CALCULATE A SUGGESTEDþ* NEW MODULO FOR A FILE GIVEN THE NUMBER OF ITEMS ANDþ* AVERAGE ITEM SIZE. THE SEPARATION IS ASSUMED TO BE '1'.þ*þ*þ** INPUT BUFFERSþ*---------------þ*þ* ENTRY WITH: %2= AVG. ITEM SIZE;þ* %3= NUMBER OF ITEMS EXPECTED;þ* %4= 0 IF HIGH-ACTIVITY FILE; 1 IF LOW.þ*------------------------------------------*þ* EXIT WITH : %2= AVG BYTES/GROUP * 10þ* %3= AVG ITEMS/GROUP * 10þ* %4= SELECTED MODULOþ*þ* %1 - WORK FIELDþ*þ*------------------------------------------*þ*þ+EQ .AVG-ITEM-SIZE %2þ+EQ .NUM-ITEMS %3þ+EQ .ACTIVITY %4þ+EQ .GROUP-SIZE %4þ*þ+EQ .AVG-BYTES-GRP %2þ+EQ .AVG-ITEMS-GRP %3þ+EQ .SUGG-MODULO %4þ*þ*þ.GROUP-SIZE = 4000þIF # .ACTIVITY .ACTIVITY = 0þ*þ* AVG-ITEM-SIZE < 500þ*þIFN .AVG-ITEM-SIZE < 500 THENþ IFN .ACTIVITY = 0 THENþ .GROUP-SIZE = 1500þ GO 10þ ELSEþ .GROUP-SIZE = 3500þ GO 10þ ENDþENDþ*þ* AVG-ITEM-SIZE > 500þ*þIFN .ACTIVITY = 1 THENþ .GROUP-SIZE = 12000þELSEþ .GROUP-SIZE = 6000þENDþ*þ10 *þ.SUGG-MODULO = ((.NUM-ITEMS X .AVG-ITEM-SIZE) / .GROUP-SIZE) + 1þIFN .SUGG-MODULO > .NUM-ITEMS .SUGG-MODULO = .NUM-ITEMSþ*þ* CHECK FOR MAXIMUMSþIF $11 = "M" THENþ IFN .SUGG-MODULO > 8000000 .SUGG-MODULO = 8000000þ ELSEþ IFN .SUGG-MODULO > 65635 .SUGG-MODULO = 65631þ ENDþ*þ* FORCE MODULO NOT MULTIPLE OF 2, 3, 5, 7, OR 11þ*þ%1 = .SUGG-MODULO R 2ü IFN %1 = 0 .SUGG-MODULO = .SUGG-MODULO + 1 þIFN .SUGG-MODULO <= 11 THENþ IFN .SUGG-MODULO = 9 .SUGG-MODULO = 11þ IFN .SUGG-MODULO = 5 .SUGG-MODULO = 7þ GO 20þ ENDþ15 *þ%1 = .SUGG-MODULO R 3ü IFN %1 = 0 .SUGG-MODULO = .SUGG-MODULO + 2 ü GO 15þ%1 = .SUGG-MODULO R 5ü IFN %1 = 0 .SUGG-MODULO = .SUGG-MODULO + 2 ü GO 15þ%1 = .SUGG-MODULO R 7ü IFN %1 = 0 .SUGG-MODULO = .SUGG-MODULO + 2 ü GO 15þ%1 = .SUGG-MODULO R 11ü IFN %1 = 0 .SUGG-MODULO = .SUGG-MODULO + 2 ü GO 15þ*þ* COMPUTE AVG BYTES/GROUP AND AVG ITEMS/GROUP.þ*þ20 *þ.AVG-ITEMS-GRP = (.AVG-ITEMS-GRP X 10) / .SUGG-MODULOþ.AVG-BYTES-GRP = (.AVG-BYTES-GRP X .AVG-BYTES-GRP)þRTNþÿIFB3þ17D30þ011CSLAVE-ONþPQþ* PROGRAM : (SLAVE-ON) PREPARES FOR PRINTING ON SLAVE PRINTERþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : RAL (JAN 3, 1985)þ* LAST MODIFIED : Xþ*þ*þ*þLPTR NþHTERM 79,60,,,5þPþTERM X12þRTNþÿIFB3þ17D31þLCOMPILE-RPLþÿcompile-rplþPQþ* PROGRAM : (COMPILE-RPL) COMPLIES ALL OR LISTS UNCOMPILED RPL PROGRAMS IN AN ACCOUNTþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : C MURTHI (JAN 27, 1981)þ* LAST MODIFIED : DALE TYLER (JAN 23, 1985)þ* : KMP 03/05/90þ* : KMP 03/05/90 - CRS 3821 - DO NOT PRINT UNLESS 'P' OPTION IS ENTEREDþ* : TJG 08/03/95 REMOVE OLD AP AND R83 OBJECT BEFORE COMPILEþ*þ* THIS IS CALLED BY CATALOG ITEM 'LIST-UNCOMPILED' ,'COMPILE-RPL' OR 'VERIFY-RPL'þ* AND PROGRAMS 'ACC-RESTORE', 'CHANGE-SYSTEM' (IN SYSPROG-PL-S).þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO LIST ALL UNCOMPILEDþ* PROGRAMS WITHIN AN ACCOUNT. IT WILL ALSO RECOMPILE ALLþ* PROGRAM FILES WITHIN AN ACCOUNT. IT WILL ALSOþ* VERIFY ALL RPL OBJECT PROGRAMS IN AN ACCOUNT ANDþ* OPTIONALLY FIX PROGRAMS THAT ARE NOT IN CONTIGUOUSþ* FRAMES.þ*þ* IF CALLED EXTERNALLY, THE FOLLOWING IS NECESSARYþ* ------------------------------------------------þ*þ* %1 - VERB 'VERIFY-RPL', 'COMPILE-RPL' OR 'LIST-UNCOMPILED'þ* %2 - ACCOUNT NAME þ* %3 - OPTIONS IF COMPILING OR VERIFYINGþ* %4 - NULLþ*þ** INPUT BUFFERSþ*---------------þ*þ*þIF %1 = "EX" MV %1 %3,*þ%1 = %1:MCU:þIF %1 = "COMPILE-RPL"ý"LIST-UNCOMPILED"ý"VERIFY-RPL"þ%250 = "COMPILE ALL" ý %250 = "LIST ALL UNCOMPILED" ý %250 = "VERIFY ALL"þ*þIF # %1 THENþ TERM L,"INVALID USE OF PROGRAM, NO VERB"þ GO 9999þENDþ*þ* IF CALLED EXTERNALLY, GO TO PROCESSINGþ*þIF %2 IF %2 # "PROCLIB"ý"SYSPROG"ý"SYSPROG-S" GO 150þ*þ%1 = %250*" RPL PROGRAMS"þ[PROCLIB-S HEADING]þ*þ* GET ACCOUNT NAMEþ*þIF %2 = "PROCLIB"ý"" %2 = $4:MCU: ü * UPPER CASE ACCOUNT NAMEþIF %2 = "SYSPROG"ý"SYSPROG-S" %2 = ""þTERM (0,4), %250*" PROGRAMS IN THE ACCOUNT "þE*KþE^KþEIPN(50,4), %2, X30þIF %2 = ""ý"^"ý"*" THENþ GO 9999þENDþ*þ%4 = ''þ*þ* IF COMPILE OR VERIFY, GET OPTIONSþ*þIF %250 = "COMPILE ALL"ý"VERIFY ALL" THENþ IF %3 = "COMPILE-RPL"ý"VERIFY-RPL" %3 = ""þ TERM (0,6), "USING OPTIONS", (21), %3þ IF # %3 EIPN(21,6), %3, X14þ IF %3 THENþ IF %3(1,1) # ("(") %3 = "("*%3þ ENDþ*þ* IF USING 'F' OPTION ON VERIFY OR NOT USING 'S' OPTIONþ* ON COMPILE, ADVISE USER THAT OBJECT PROGRAMS MAY NOTþ* BE RUN DURING EXECUTION OF THIS PROGRAM.þ*þ %6 = "" ü* INITIALIZE FLAG SETTINGþ IF %250 = "COMPILE ALL" THENþ STL %5 %3,"S"þ IF # %5 %6 = "WARNING"þ ELSE ü* MUST BE VERIFYINGþ STL %5 %3,"F"þ IF %5 %6 = "WARNING"þ ENDþ IF %6 = "WARNING" THENþ TERM (0,8),"WARNING: ALL USERS OF PROGRAMS IN ACCOUNT "*%2(1,20)þ TERM (0,9),"MUST LOG OFF AND REMAIN OFF THE SYSTEM UNTIL THIS PROGRAM COMPLETES"þ TERM (0,10),"ENTER 'GO' TO CONTINUE; ELSE PRESS '*' TO EXIT THIS PROGRAM"þ80 *þ MV %7 ""þ EIRPN(68,10),%7,X2þ IF %7 IF %7 # "GO"ý"*" TERM E,"INVALID RESPONSE" ü GO 80þ IF %7 = "*" GO 9999 ü* EXIT PROGRAMþ ENDþ*þ* IF COMPILE OR VERIFY, GET TIME TO START COMPILE OR VERIFYþ*þ TERM (0,12), "OPTIONALLY, SLEEP UNTIL "þ100 *þ TERM (44,12), "HH:MM:SS IN 24 HOUR FORMAT"þ %4 = ''þ EIPN(32,12), %4, X10þ IF %4 = "*" GO 9999þ IF %4 # (0N)ý(0N:0N)ý(0N:0N:0N)ý"" THENþ TERM E, "INVALID START TIME"þ GO 100þ ENDþENDþ*þ* IF A TIME WAS ENTERED TO START, PUT TERMINAL TO SLEEP UNTIL THENþ*þIF %4 THENü* START PROCESS NOW.þ TERM L, L, "D O N O T T O U C H ! ! !", Lþ TERM L, "THIS TERMINAL IS ASLEEP "þ IF %4 = (0N) THEN TERM " FOR ", %4, " SECONDS"þ ELSE TERM " UNTIL ", %4þ ENDþ STOFFþ MV #1 "SLEEP", %4, _þ PþENDþ*þ* CREATE A Q-POINTER TO ACCOUNT AND MDþ*þ150 *þF-OUTPUT &1 "MD"þMV &1.0 'COMPILING-FILE','Q',%2,'',,,,,,'L','10'þF-WRITE &1þ*þ* SELECT ALL RPL PROGRAM FILES WITHIN THE MD OF THE ACCOUNTþ*þ#1 = "SSELECT DICT "þ#2 = "COMPILING-FILE NOT 'POINTER-FILE'"þ#3 = 'WITH *A1 "DC]" OR WITH *A1 "D]" AND WITH *A13 "B]"'þSTONþ#1 = "PQ-SELECT 1"þPþ*þ*þMV &1.0 'COMPILING-FILE','Q', %2,'',,,,,,'L','10'þIF %250 = "LIST ALL UNCOMPILED" THENþ LPTR HDR, 'LISTING OF UNCOMPILED PROGRAMS IN ACCOUNT: ',þ %2, ' ',T," PAGE ",P,LþENDþ*þ* PROCESS EACH FILE SELECTEDþ*þ200 *þ&1.3 = !1þIF # &1.3 THENþ TERM L, "DONE"þ GO 9999þENDþ* UPDATE THE Q-POINTER WITH FILE NAMEþF-WRITE &1þ*þTERM (0,22),(-3),(11),&1.3þIF %250 = "COMPILE ALL" THENþ MVL %5 %3, "P"þ IF # %5 GO 210þ LPTR T, "COMPILING FILE: ", &1.3, " IN ACCOUNT: ", %2þENDþ*þ210 *þ*þIF %250 = "VERIFY ALL" THENþ LPTR T, "VERIFYING FILE: ", &1.3, " IN ACCOUNT: ", %2þENDþSTOFFþROþ#1 = "SSELECT COMPILING-FILE"þ*þ* IF LISTING UNCOMPILED PROGRAMS, CREATE A DICTIONARY ITEM TO BE USEDþ* TO SELECT ANY PROGRAMS MISSING A COMPILATION RECORD IN THEþ* DICTIONARY OF THE PROGRAM FILE. SELECT FOR THOSE PROGRAMSþ* AND LIST THEM.þ*þIF %250 = "LIST ALL UNCOMPILED" THENþ F-OUTPUT &9 "DICT COMPILING-FILE" ELSEþ LPTR L, 'ERROR IN OPENING DICT OF ', &1.3, Lþ GO 200þ ENDþ MV &9.0 'EXCEPS','A',0,'','','','','','','L',10þ IF $11 # 'M' THENþ &9.8 = 'A;(0)(TDICT COMPILING-FILE;X;0;0)'þ ELSEþ &9.8 = 'A;(0)(T*COMPILING-FILE;X;1;1)'þ ENDþ F-WRITE &9þ #2 = ' WITH NO EXCEPS 'þ STONþ #1 = "PQ-SELECT 2"þ PHþ IF !2 THENþ #1 = "PQ-RESELECT 2"þ Pþ LPTR L,'*** UNCOMPILED PROGRAMS IN FILE: ', &1.3, ' ***',Lþ300 *þ %30 = !2þ IF %30 THENþ LPTR (6), %30þ GO 300þ ENDþ ELSEþ LPTR L, 'ALL PROGRAMS WERE COMPILED SUCCESSFULLY IN FILE: ', &1.3,Lþ ENDþ F-READ &9 "EXCEPS"þ NOPþ F-DELETE &9þ*þ* IF COMPILING PROGRAMS, COMPILE ALL PROGRAMS IN FILEþ* WITH OPTIONS ENTERED.þ*þELSEþ IF %250 = "COMPILE ALL" THENþ STONþ* BEGIN TJG 08/03/95þ #1 = "RPL-DEL COMPILING-FILE"þ #2 = %3þ Pþ HSELECT DICT COMPILING-FILE = "[*C*]"þ STONþ HDELETE DICT COMPILING-FILEþ Pþ STOFFþ ROþ #1 = "SSELECT COMPILING-FILE"þ STONþ #1 = "RPL COMPILING-FILE"þ* TJG - ABOVE LINE, '*' REMOVED AFTER FILE NAME.þ* END TJG 08/03/95þ #2 = %3þ Pþ ELSEþ STONþ #1 = ":RPL-VER DICT COMPILING-FILE *"þ #2 = %3þ Pþ ENDþENDþ*þ* GET NEXT FILEþ*þGO 200þ*þ9999 *þRTNþÿIFB3þ17D31þ05C2TAPEþPQþ* PROGRAM : (TAPE) TAPE HANDLINGþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (JAN 20, 1984)þ* : JR! (JAN 13, 1993) CONVERT TO UPPERCASE FOR ADVANCED PICKþ*þ* THIS IS CALLED BY CATALOG ITEMS 'T-PRINT', 'TM-PRINT', 'SPACE',þ* 'CHECK', 'T-SPACE'þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO EXECUTE A TAPEþ* COMMAND FOR A SPECIFIC NUMBER OF FILES ON A TAPE.þ* 'SPACE' AND 'T-SPACE' WILL MOVE THE TAPE FORWARD.þ* 'CHECK' WILL PERFORM A PARITY CHECK.þ* 'TM-PRINT' WILL PERFORM AN SP-TAPEOUT.þ* 'T-PRINT' WILL PERFORM AN SP-TAPEOUT FOR A SPECIFIED STRING.þ*þ** INPUT BUFFERSþ*---------------þ*þ* %1 - VERBþ* %2 - NUMBER OF TIMES TO EXECUTEþ* IF USED WITH 'T-PRINT', THIS IS THE CHAR STRING.þ* %3 - NULL IF CALLED BY ANOTHER PROGRAMþ* USED FOR FOR-NEXT LOOP WITHIN THIS PROGRAMþ*þ%3 = 0þ%1 = %1:MCU:þIF %1 = "T-SPACE"ý"SPACE"ý"CHECK"ý"T-PRINT"ý"TM-PRINT" þ GO 100 ýGO 100 ýGO 100 ý GO 300 ý GO 100þGO 9999þ*þ100 *þIF %1 = 'CHECK'ý 'TM-PRINT'ý 'T-SPACE'ý 'SPACE'þ %1 = 'T-CHK' ý %1 = 'SP-TAPEOUT'ý %1 = 'T-FWD'þ*þFOR %3 = 1 TO %2þ TERM 'FILE ', %3, ' 'þ #1 = %1þ PþNEXT %3þ*þTERM "DONE",LþGO 9999þ*þ* PRINT 1 SPOOLER TAPE FILEþ* %2 IS STRING AS IN SP-EDITþ*þ300 *þMV #1 "SP-TAPEOUT",%2,*þPþ*þ9999 *þRTNþÿIFB3þ17D32þ0326SYSPROG-S-ONLYþPQþ* PROGRAM : (SYSPROG-S-ONLY) FLAGS VERBS THAT SHOULD ONLY BE EXECUTED FROM SYSPROG-Sþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (JAN 3, 1985)þ*þ* THIS PROGRAM CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO DISPLAY A MESSAGEþ* INDICATING A VERB SHOULD ONLY BE EXECUTED FROMþ* SYSPROG-S OR SYSPROG ACCOUNTS.þ*þ** INPUT BUFFERSþ*---------------þ*þ* %1 Xþ*þ* #1 OPERATOR INPUTþ*þIF $0 # 'I'ý'V'ý'H' TERM L, "VERB SHOULD ONLY BE EXECUTED FROM SYSPROG-S, ENTER RTN TO CONTINUE "þIF $0 = 'I'ý'V'ý'H' TERM L, "VERB SHOULD ONLY BE EXECUTED FROM SYSPROG-S OR SYSPROG, ENTER RTN TO CONTINUE "þIP-#1þ#1 = ""þ*þRTNþÿIFB3þ17D32þ010ASLAVE-OFFþPQþ* PROGRAM : (SLAVE-OFF) STOPS PRINTING ON SLAVE PRINTERþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : RAL (JAN 3, 1985)þ* LAST MODIFIED : Xþ*þ*þTERM X14þHTERM 79,24þPþRTNþÿIFB3þ17D32þLTAPE-SIZEþÿTAPE-SIZEþPQþ* PROGRAM : (TAPE-SIZE) COMPUTES TAPE SIZES FOR VARIOUS BLOCK SIZES, DENSITIES, REEL SIZESþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (APR 26, 1984)þ*þ* THIS IS CALLED BY CATALOG 'TAPE-SIZE'þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO COMPUTE TAPE þ* NUMBER OF RECORDS A TAPE CAN HOLDþ* FOR ENTERED BLOCK SIZE, DENSITY, REEL SIZE.þ*þ*þ** INPUT BUFFERSþ*---------------þ*þ* %1 - VERBþ* %2 - NULL FOR OPERATOR ENTRYþ* '(P)' OR 'LPTR' FOR OPERATOR ENTRY AND PRINT OF DATAþ* 'I' FOR DEFAULT TO STANDARD BLOCK SIZES FOR CALCULATION,þ* NO OPERATOR ENTRY.þ* %3 - '(P)' OR 'LPTR' FOR PRINT OF DATAþ* OTHERWISE NULLþ*þ*þ* CALCULATES TAPE TRANSFER TIMINGS FOR VARIOUS BLOCK-SIZESþ* MAY BE USED INTERACTIVELY TO COMPUTE TAPE SIZES ALSO.þ* :TAPE-SIZE {(P)} ... NON-INTERACTIVEþ* :TAPE-SIZE I ... INTERACTIVEþ*þ* INTER-RECORD GAP (100-THS INCH); STOP-START TIME, MS.þ* DENSITY- BITS/INCHþ* REEL SIZE- FEETþ* NUMBER OF RECORDS; RECORD SIZE- INCHES; CAPACITY OF REEL- FEETþ* TAPE SPEED- INCHES/SECONDþ*þ*þ*þ%1 = "COMPUTE TAPE SIZES"þ[PROCLIB-S HEADING]þ*þIF %2 = ("("P0X)ý"LPTR" THENþ %3 = %2þ %2 = ""þENDþIF %3 = ("("P0X)ý"LPTR" THENþ LPTR HDR, (15), "COMPUTE TAPE SIZES",L,þ L,"TAPE BLOCK DENSITY REEL-SIZE NUMBER CAPACITY THEORETICAL TRANSFER",þ L, " SIZE BPI FT OF RECS M-BYTES RATE MB/MIN.",þ L, " @ 25IPS @ 45IPS",LþELSEþ %3 = ""þENDþ*þTERM (0,2),"TAPE BLOCK DENSITY REEL-SIZE NUMBER CAPACITY THEORETICAL TRANSFER",þ (0,3), " SIZE BPI FT OF RECS M-BYTES RATE MB/MIN.",þ (0,4), " @ 25IPS @ 45IPS",Lþ#12 = 5þE*, TERM (0,22)ü GO 9999þIF %2 # "I" GO 40þ*þ* INTERACTIVE, WITH OPERATOR ENTRYþ*þ#2 = 800þ*þ3 *þ*þ#12 = #12 + 1þIFN #12 > 20 THENþ MV #10 "", ""þ #12 = 6þENDþTERM (0,#12), S78þ*þ* ENTER BLOCK SIZEþ*þEIPN, (0,#12), #1, N8þIF # #1 GO 9999þ*þ* ENTER DENSITYþ*þEIR, (14,#12),#2, N4þ*þ* ENTER TAPE REEL SIZE, IN FEETþ*þ#3 = ""þEI , (23,#12),#3, N5þ*þ* ENTER CAPACITY IF NO REEL SIZEþ*þIFN #3 = 0 EIR , (41,#12),#6, N4.1þTERM (0)þ#6 = #6 X 10þGOSUB 100þ#6 = #6 / 10þGO 3þ*þ40 * NON-INTERACTIVE, DEFAULT TO STANDARD BLOCK SIZESþ*þMV %9 "256ý512ý1024ý2048ý4096ý6144ý8192", 0þIF # %3 %2 = "DISPLAY"þ*þ50 *þ*þ%10 = %10 + 1þMVE #1 %9, %10þIF # #1 THEN þ IF %3 TERM L, (0), "SEE PRINTER FOR REPORT"þ GO 9999þENDþGOSUB 300þMV #2 800, 2400þGOSUB 100þGOSUB 300þMV #2 800, 3200þGOSUB 100þGOSUB 300þMV #2 1600, 2400þGOSUB 100þGOSUB 300þMV #2 1600, 3200þGOSUB 100þGO 50þ*þGO 9999þ*þ100 * CALCULATE NUMBER OF RECORDS, CAPACITY M-BYTESþ*þ#5 = 75 + ((#1 X 100) / #2)þIFN #3 = 0 THENþ #4 = (#6 X 10000)/#1 þ #3= (#4 X #5) / 1200 þELSEþ #4 = (#3 X 1200) / #5þ #6 = (#4 X #1) / 10000þENDþ*þ110 *þ*þ#7 = 25þGOSUB 200þ%6 = %1þ#7 = 45þGOSUB 200þIF %2 TERM (0,#12), S78þ*þIF #1 # #10 THENþ IF %3 LPTR (1), #1:MD008 :, +þ IF %2 TERM (0,#12), #1:MD008 :þENDþ*þIF #2 # #11 THENþ IF %3 LPTR (14), #2:MD004 :, +þ IF %2 TERM (14,#12), #2:MD004 :þENDþ*þIF %3 THENþ LPTR (23), #3:MD005 :,þ (29), #4:MD00,9 :, (39), #6:MD126 :, +þENDþ*þIF %2 THENþ TERM (23, #12), #3:MD005 :,þ (29), #4:MD00,9 :, (39), #6:MD126 :þENDþ*þIF #1*#2 # #10*#11 THENþ IF %3 THENþ LPTR (50), %6:MD225 :, (60), %1:MD225 :, +þ ENDþ IF %2 THENþ TERM (50, #12), %6:MD225 :, (60), %1:MD225 :þ ENDþENDþ*þIF %3 THENþ LPTR (80)þENDþ*þ#10 = #1þ#11 = #2þRSUBþ*þ200 * CALCULATE THEORETICAL TRANSFER RATEþ*þ%1 = (#6 )/((((#5 X 10/ #7)+26) X #4)/60000)þRSUBþ*þ300 * FULL DISPLAY, ENTER RTN TO CONTINUEþ*þIF %2 THENþ #12 = #12 + 1þ IFN #12 > 20 THENþ TERM (0,22), "ENTER * TO VOID, RTN TO CONTINUE"þ %1 = ""þ EIP?(40,22), %1, X1þ MV #10 "", ""þ #12 = 6þ ENDþENDþRSUBþ*þ9999 * END PROGRAMþ*þIF %3 L CþRTNþÿIFB3þ17D32þ058FCMSþPQþ* PROGRAM : (CMS) CALCULATE MODULO AND SEPARATIONþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (JAN 18, 1984)þ*þ* THIS PROGRAM IS CALLED BY CATALOG ITEM 'CMS'þ*þ* THIS PROGRAM CAN BE EXECUTED FROM TCL OR FROM ANOTHER PROGRAM.þ*þ* THIS PROGRAM CALCULATES AND DISPLAYS A SUGGESTED NEW MODULO (FOR Aþ* SEPARATION OF 1).þ*þ** INPUT BUFFERSþ*---------------þ*þ*þ%1 = "ESTIMATION OF MODULO FOR FILES"þ[PROCLIB-S HEADING]þTERM (3,8),".AVERAGE...NUMBER.OF..HI......AVERAGE...AVERAGE........SELECTED"þTERM (3,9),"ITEM SIZE ITEMS LO BYTES/GRP ITMS/GRP MODULO SEPAR "þ#5 = 11ü #7 = "MD0 10 "ü #8 = "MD1 10 "þ10 *þ*þ* ENTER AVERAGE SIZE OF ITEMSþ*þ#2 = ""þE*,GO 9999þTERM (1,3),"ENTER APPROXIMATE SIZE OF AN ITEM"ü EIPN(65,3),#2,N5þE*,GO 10þIF #2 = "" GO 9999þ%2 = #2þ*þ* ENTER NUMBER OF ITEMSþ*þTERM (1,4),"ENTER APPROXIMATE # ITEMS IN THE FILE"ü EIPN(63,4),#3,N7þ%3 = #3þ*þ* ENTER HIGH OR LOW ACTIVITYþ*þIF # #4 #4 = "H"þTERM (1,5),"SPECIFY IF FILE IS HIGH OR LOW ACTIVITY (H OR L)"ü EIPN(69,5),#4,X1þIF #4 = "L"ý"H"ý""ý(0X)þ %4 = 1 ý %4 = 0 ü #4 = 'H'þ*þ[PROCLIB-S MODULO]þ*þ* DISPLAY CALCULATED MODULOþ*þTERM (1,#5),#2:#7:,#3:#7:," ",#4," ",%2:#8:,%3:#8:,%4:#7:, " 1"þ#5 = #5 + 1þTERM (1,#5), S64þIFN #5 = 22 #5 = 11þGO 10þ*þ9999 *þTERM (1,21)þRTNþÿIFB3þ17D32þ002Fhelp-driverþPQþSTOFFþROþHSLEEP 1þPþRTNþÿIFB3þ17D33þLCOMþÿCOMþPQþ* PROGRAM : (COM) GENERAL PROGRAM TO PROCESS BASIC PROGRAMS OR RUNOFF ITEMSþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (JULY 26, 1984)þ*þ* THIS IS CALLED BY CATALOG ITEM 'COM'.þ*þ* THIS PROGRAM CAN ONLY BE EXECUTED FROM TCL.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO COMPILE, EDIT,þ* DELETE, EXECUTE, ETC. ONE OR MORE BASIC PROGRAMSþ* AT A TIME. ONE OR MORE RUNOFF ITEMS CAN BEþ* EDITED OR PRINTED ALSO.þ*þ*þ*þ** INPUT BUFFERSþ*---------------þ*þ+EQ .OPTIONS &1.0þ+EQ .INDEX %1þ+EQ .FILE %2þ+EQ .ITEM %3þ*þ.OPTIONS = ''þ10 * GET FILENAME, ITEMLISTþ[PROCLIB-S TCL-II-INIT]þ*þ* IF THE .INDEX IS '2', ALL ITEM IDS' ARE IN %3 ON.þ* IF THE .INDEX IS '0', ALL ITEM IDS' ARE SELECT REGISTER 1.þ* LOAD THEM ALL INTO %3, SEPARATED BY A SPACEþ*þIFN .INDEX = 2 THENþ FOR %1 = 4 TO 250þ IF %%1 THENþ %3 = %3*' '*%%1þ ELSEþ %1 = 250þ ENDþ NEXT %1þ ELSEþ %3 = ''þ60 *þ %4 = !1þ IF # %4 GO 65þ %3 = %3*' '*%4þ GO 60þ65 *þ ENDþ*þ* NOW ALL ITEM-IDS' ARE IN %3, SEPARATED BY A SPACEþ*þMV %4 _þSTOFFþROþSTONþROþSTOFFþ*þ* ALLOW SELECTION FOR PROGRAMSþ*þ80 *þTERM L, .FILE, " ", .ITEM, " E/B/R/RU/F/I/X/HELP"þ%1 = ''þIP?%1þ*þ* ISOLATE VERB FROM ANY OTHER PARAMETERSþ*þ#1 = %1:G0 1: ü %1 = %1:G1 99:þ*þ* LOAD FILE AND ITEMS INTO OUTPUT BUFFER.þ* THEN DETERMINE WHICH VERBS ARE TO BE EXECUTED.þ*þMV #2 .FILE, .ITEMþIF #1 = "B"ý"R"ý"F"ý"I"ý"X"ý"*"ý"RU"ý"HELP"þ GO 200ý GO 300ý GO 400ý GO 500ý GO 600ý GO 600ý GO 700ý GO 900þ*þ* EVERYTHING ELSE IS ASSUMED AS IN THE EDITORþ*þ* EDITþ*þ100 *þIF # %1 IF #1 # "E" %1 = #1þ#1 = "ED"þ* LOAD THE FIRST EDITOR COMMAND TO BE EXECUTEDþSTONþ#1 = %1þSTOFFþ*þGO 9050þ*þ* COMPILEþ*þ200 *þ#1 = "BASIC"þ* ADD OPTIONS, IF ANY.þ* OF USE THE OPTIONS ENTERED BEFORE.þIF %1 THENþ GOSUB 9100þ #4 = %1þ .OPTIONS = %1þ ELSEþ #4 = .OPTIONSþ ENDþGO 9050þ*þ*þ* RUN BASIC PROGRAMþ*þ300 *þ* TERMþ* ADD OPTIONS, IF ANY.þ* OF USE THE OPTIONS ENTERED BEFORE.þIF %1 THENþ GOSUB 9100þ #4 = %1þ .OPTIONS = %1þ ELSEþ #4 = .OPTIONSþ ENDþ#1 = "RUN"þ*þGO 9050þ*þ* CHANGE FILE NAMEþ*þ400 *þ.FILE = ''þGO 10þ*þ* CHANGE ITEMSþ*þ500 *þ.ITEM = ''þGO 10þ*þ* EXIT OR VOIDþ*þ600 *þROþGO 9999þ*þ* RUNOFF ITEMþ*þ700 *þ#1 = "RUNOFF"þ* ADD OPTIONS, IF ANY.þ* OF USE THE OPTIONS ENTERED BEFORE.þIF %1 THENþ GOSUB 9100þ #4 = %1þ .OPTIONS = %1þ ELSEþ #4 = .OPTIONSþ ENDþGO 9050þ*þ* HELP, DISPLAY ALL OPTIONS AVAILABLEþ*þ900 *þTERM L, (10), "E (OR NULL) - EDIT ITEMS",þ L, (10), "B - COMPILE BASIC PROGRAMS",þ L, (10), "R - EXECUTE BASIC PROGRAMS",þ L, (10), "RU - RUNOFF ITEMS",þ L, (10), "F - CHANGE FILE NAME",þ L, (10), "I - CHANGE ITEM NAMES",þ L, (10), "X - EXIT TO TCL"þGO 80þ*þ* PROCESS WHATEVER IS IN THE OUTPUT BUFFERSþ*þ9050 *þ*þPþ*þGO 80þ*þ* IF OPTIONS DO NOT HAVE PARENTHESES, ADD THEMþ*þ9100 *þIF %1 # ('('0X) %1 = '('*%1*')'þRSUBþ*þ9999 *þRTNþÿIFB3þ17D34þ0531REALLOCATEþPQþ* PROGRAM : (REALLOCATE) SUGGESTED MODULO TO REALLOCATE FILEþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (APR 26, 1984)þ*þ* THIS IS CALLED BY PROGRAM 'ATB-POINTER'þ*þ** INPUT BUFFERSþ*---------------þ*þ* ENTER WITH:þ* %2 = "DICT" OR NULLþ* %3 = FILENAMEþ*þ+EQ .AVE-ITEM-SIZE %2þ+EQ .TOTAL-SIZE %2þ+EQ .NUM-ITEMS %3þ*þ*þF-INPUT &9 %2*" "*%3þF-SEL &9 !5þ*þ* INITIALIZE SIZE AND ITEM COUNTERSþ*þMV .TOTAL-SIZE 0, 0þ10 *þ*þ* COUNT THE NUMBER OF ITEMS IN THE FILEþ* AND TOTAL THE NUMBER OF CHARACTERS IN EACH ITEM.þ*þ* WHEN ALL HAS BEEN COUNTED, CALCULATE AN AVERAGE SIZE PER ITEMþ* AND PASS THIS TO THE MODULO PROGRAM FOR CALCULATIONþ*þF-READ &9 !5 ELSEþ .AVE-ITEM-SIZE = ((.TOTAL-SIZE X 10)/.NUM-ITEMS ) / 10þ MV %6 %1, *2þ IF %6 TERM L,"# ITEMS = ",.NUM-ITEMS," AVERAGE ITEM SIZE = ",.AVE-ITEM-SIZEþ*þ %4 = 1þ [PROCLIB-S MODULO]þ*þ IF %6 THEN þ TERM L,"SUGGESTED MODULO = ",%4, " ITEMS/GROUP = ",þ %3:MD11:, " BYTES/GROUP = ",%2:MD11:,Lþ ENDþ GO 9999þ ENDþ*þ* UPDATE SIZE AND ITEM COUNTERSþ*þ.TOTAL-SIZE = .TOTAL-SIZE + $8þ.NUM-ITEMS = .NUM-ITEMS + 1þGO 10þ*þ9999 *þRTNþÿIFB3þ17D34þ0214RPL-REVþPQþ* PROGRAM : (RPL-REV) DISPLAYS RPL REVISIONþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (JAN 20, 1984)þ*þ* THIS IC CALLED BY CATALOG ITEM 'RPL-REV'.þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO DISPLAY THE CURRENTþ* RPL REVISION LEVEL THE COMPUTER IS RUNNING.þ*þ** INPUT BUFFERSþ*---------------þ*þTERM L,"RPL VERSION: RPL-",$12, Lþ*þRTNþÿIFB3þ17D34þLCONþÿCONþPQþ* PROGRAM : (CON) GENERAL DATA CONVERSION PROGRAM FROM TCLþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (FEB 24, 1984)þ*þ* THIS IS CALLED BY CATALOG ITEM 'CON'þ*þ* THIS PROGRAM CAN ONLY BE EXECUTED FROM TCL.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO CONVERT DATA TO INTERNALþ* OR EXTERNAL FORMAT AND DISPLAY RESULTS. IT WILL ALSOþ* CONVERT DATES, HEXIDECIMAL NUMBERS, DECIMAL NUMBERS.þ*þ** INPUT BUFFERSþ*---------------þ*þ* %2 = CONVERSION CODE; IF PRECEDED BY ";" DO INPUT CONVERSION.þ* 'D' INDICATES DATE CONVERSIONþ* 'A' INDICATES ARITHMETICþ* MASKS (IE. MD2) FOR MASK CONVERSIONS USING THE MASK ENTEREDþ* %3 .... %N = DATA TO BE CONVERTED; IF NULL PROMPT FOR DATA.þ*þ+EQ .CONVERSION-CODE %2þ+EQ .VALUE %%1þ+EQ .CONVERTED-VALUE %%1þ+EQ .INPUT-BUFFER-INDEX %1þ+EQ .INPUT-VALUE-FLAG &0.1 ü* 'Y' INDICATES OPERATOR ALREADY ENTERED VALUESþ* '' INDICATES VALUES NEED TO BE INPUTþ+EQ .EXT-INT-FLAG &0.2 ü* EXTERNAL TO INTERNAL FLAGþ+EQ .HEXDEC #1þ+EQ .NUMONE #3þ+EQ .NUMTWO #4þ+EQ .OPERATION #5þ+EQ .RESULT #6þ+EQ .NUMTHR #7þ+EQ .COUNTER %9þ+EQ .OPT %%9þ+EQ .LOC %10þ+EQ .OPTWO %11þ*þROþMV .INPUT-VALUE-FLAG "", ""þ.INPUT-BUFFER-INDEX = 3þ*þIF .VALUE .INPUT-VALUE-FLAG = 'Y' þIF .CONVERSION-CODE(1,1) = ";" .EXT-INT-FLAG = 'Y'ü .CONVERSION-CODE = .CONVERSION-CODE(2,50) þ*þ* GET VALUES IS NOT ALREADY ENTEREDþ*þ10 *þIF # .INPUT-VALUE-FLAG THENþ TERM Lþ IPF<.VALUEþ ENDþ*þ* IN NO MORE VALUES, EXITþ*þIF .VALUE = ""ý"*" GO 9999þIF .CONVERSION-CODE(1,1) # "D" GO 15þ*þ* SPECIAL FOR DATE CONVERSIONþ*þIF .VALUE = (0N) .EXT-INT-FLAG = ""þIF .VALUE # (0N) .EXT-INT-FLAG = 'Y'þ*þ15 *þ*þ* IF ARITHMETIC, GO TO MATH SUBROUTINEþ*þIF .CONVERSION-CODE(1,1) = "A" THENþ GOSUB 40þ* IF .INPUT-VALUE-FLAG .INPUT-BUFFER-INDEX = .INPUT-BUFFER-INDEX + 1 þ IF .INPUT-VALUE-FLAG GO 9999þ GO 10þ ENDþ*þ* CONVERT TO INTERNAL OR EXTERNAL FORMAT DEPENDING ON FLAGþ*þIF .EXT-INT-FLAG .CONVERTED-VALUE = .VALUE;.CONVERSION-CODE;þIF # .EXT-INT-FLAG .CONVERTED-VALUE = .VALUE:.CONVERSION-CODE:þ*þ* DISPLAY CONVERTED VALUEþ*þTERM L, (20), .CONVERTED-VALUEþ*þ* INCREMENT INDEX TO GET NEXT VALUEþ*þIF .INPUT-VALUE-FLAG .INPUT-BUFFER-INDEX = .INPUT-BUFFER-INDEX + 1þGO 10þ*þ*þ* ARITHMETIC SUBROUTINEþ*þ*þ40 *þ.HEXDEC = .VALUE:T1:þIF .HEXDEC = "D"ý"H" GO 110ý GO 120þ* DO THIS TEST INCASE AN ADDTION IS TO BE MADEþ* AND THE INPUT DROPPED THE '+'.þIF .VALUE = (0N) .VALUE = ' +'*.VALUEþIF .VALUE(1,1) = "+"ý"-"ý"/"ý"X"ý" " .VALUE = .RESULT*.VALUEþ.COUNTER = 5þMV .OPT "+","-","/","X"þ45 *þSTL .LOC .VALUE,.OPTþIF .LOC GO 50þ.COUNTER = .COUNTER + 1þIF .COUNTER > 8 TERM L,"INVALID OPERAND!!!" ü RSUBþGO 45þ50 *þMV %11 "G0"*.OPT*"1"þ.NUMONE = .VALUE:.OPTWO:þ.OPTWO = "G1"*.OPT*"1"þ.NUMTWO = .VALUE:.OPTWO:þ.OPERATION = .OPTþSTR .NUMONE .NUMONE," ","",1þSTR .NUMTWO .NUMTWO," ","",1þIF .OPERATION = "+"ý"-"ý"X"ý"/" GOSUB 51 ý GOSUB 52ý GOSUB 53ý GOSUB 54þ*þ* PRINT RESULTþ*þTERM L, (20), .RESULTþRSUBþ*þ* ADDITIONþ*þ51 *þ.RESULT = .NUMONE + .NUMTWOþRSUBþ*þ* SUBTRACTIONþ*þ52 *þ.RESULT = .NUMONE - .NUMTWOþRSUBþ*þ* MULTIPLICATIONþ*þ53 *þ.RESULT = .NUMONE X .NUMTWOþRSUBþ*þ* DIVISIONþ*þ54 *þ.RESULT = .NUMONE / .NUMTWOþRSUBþ*þ* DECIMAL TO HEXIDECIMALþ*þ110 *þSTR .VALUE .VALUE,"D","",0þMV #1 'DTX',.VALUE,_þPþRSUBþ*þ* HEXIDECIMAL TO DECIMALþ*þ120 *þSTR .VALUE .VALUE,"H","",0þMV #1 'XTD',.VALUE,_þPþRSUBþ*þ9999 *þRTNþÿIFB3þ17D34þLEDIT-RPLþÿEDIT-RPLþPQþ* PROGRAM : (EDIT-RPL) EDITS RPL PROGRAMS IN AN ACCOUNTþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (APR 13, 1984)þ*þ* THIS IS CALLED BY CATALOG ITEM 'EDIT-RPL'þ*þ* THIS PROGRAM CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO PERFORM A PREVIOUSLYþ* ENTERED SET OF 'EDITS' ON ALL RPL PROGRAMS WITHIN ANþ* ACCOUNT. THE 'EDITS' TO BE USED MUST HAVE ALREADY BEENþ* ENTERED AS AN ITEM CALLED 'EDITS' IN THE M/DICT.þ*þ* IF CALLES EXTERNALLYþ* --------------------þ*þ* %1 - CATALOG ITEM 'EDIT-RPL'þ* %2 - ACCOUNT NAME OR NULLþ*þ*þ** INPUT BUFFERSþ*---------------þ*þ*þ*þIF "EDIT-RPL" # %1ý%3 GO 100ü* PROGRAM IS CALLED FROM ANOTHERþ%1 = "EDIT ALL RPL PROGRAMS"þ[PROCLIB-S HEADING]þTERM (5,4), "EDIT ALL PROGRAMS IN THE ACCOUNT "þIF %2 THENþ TERM (42,4), %2þ GO 100þENDþIF %2 = "PROCLIB"ý"" %2 = $4þEIPN(42,4), %2, X25þIF %2 = ""ý"*" TERM L, (0),"EXITED"ü GO 9999þ100 *þ*þ* CHECK IF THE PRESTORED 'EDITS' EXIST IN MDþ*þF-OUTPUT &1 "MD"þF-READ &1 "EDITS" ELSEþ TERM E,"ITEM 'EDITS' DOES NOT EXIST IN M/DICT, ENTER RTN TO CONTINUE"þ %1 = ""þ EIPN(77,23),%1,X1þ GO 9999þENDþ*þMV &9.1 &1.1,*þ*þ* CREATE A Q-POINTER TO THE MD OF THE ACCOUNTþ*þMV &1.0 'EDIT-FILE','Q', %2, '', , , , , , 'L', '10'þF-WRITE &1þ200 *þ*þ* SELECT ALL THE RPL PROGRAM FILES IN THE ACCOUNTþ*þ#1 = "SSELECT DICT "þ#2 = "EDIT-FILE"þ#3 = 'WITH 1 "DC]" OR WITH 1 "D]" AND WITH *A13 "B]"'þSTONþ#1 = "PQ-SELECT 1"þPþ*þ* CREATE A Q-POINTER TO THE RPL FILE ABOUT TO BE PROCESSEDþ*þMV &1.0 'EDIT-FILE', 'Q', %2, '', , , , , , 'L', '10'þ210 *þ&1.3 = !1þIF # &1.3 TERM L,"DONE"üGO 9999þF-WRITE &1þTERM C, "FILE : ", &1.3þ#1 = "SELECT EDIT-FILE"þSTONþ#1 = "PQ-SELECT 5"þPþ220 *þ*þ* FOR EACH ITEM IN THE RPL FILE, PROCESS THE PRESTORED EDITþ* COMMANDS THEN FILE THE ITEM.þ*þ#1 = "ED EDIT-FILE "þ#2 = !5þIF # #2 GO 210þTERM #2*" ":T1,20:þSTONþ%1 = 1þ250 *þ#%1 = &9.%1 ü H<þ%1 = %1 + 1þIF &9.%1 GO 250þHFI<þPHþ*þGO 220þ*þ9999 *þRTNþÿIFB3þ17D35þ046BLOOP-ONþPQþ* PROGRAM : (LOOP-ON) REPEATS A SET OF INSTRUCTIONS FROM TCLþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (JAN 20, 1984)þ*þ* THIS IS CALLED BY CATALOG ITEM 'LOOP-ON'þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ* NOTE: THE ONLY WAY TO END THIS PROGRAM IS BY HITTING THEþ* BREAK KEY!þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO REPEAT A TCL COMMANDþ* MANY TIMES UNTIL THE OPERATOR HITS THE BREAK KEY TO END.þ*þ*þ** INPUT BUFFERSþ*---------------þ*þ* %1 - VERB 'LOOP-ON'þ* %2 - TCL COMMAND TO BE LOOPED.þ* %3 ON - ANYOTHER DATA NECESSARY FOR THE TCL COMMAND.þ*þ*þMV %1 %2, *þ*þ100 *þIF # %1 THENþ TERM L,(0),"MISSING A VERB FOR LOOPING, ENTER RTN TO CONITNUE "þ IP:%1þ GO 9999þ ENDþ*þ* LOAD INFO INTO OUTPUT BUFFER AND PROCESSþ*þSTOFFþROþMV #1 %1, *þPþ*þ* PAUSE FOR A FEW SECONDS BEFORE REPEATINGþ*þSTOFFþROþHSLEEP 2þPþ*þ* THE INSTRUCTIONS KEEP REPEATING UNTIL THE OPERATOR BREAKSþ* AND ENDS THIS PROGRAM.þ*þTERM LþGO 100þ*þ9999 *þRTNþÿIFB3þ17D35þ02CELISTUSERSþPQþ* PROGRAM : (LISTUSERS) LISTS CURRENT USERS AND ACCOUNT LOGGED ONþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (MAR 6, 1985)þ*þ* THIS IS CALLED BY CATALOG ITEMS 'LISTUSERS', 'LISTU'þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO LIST TO THE TERMINAL ALLþ* USERS CURRENTLY LOGGED ON TO AN ACCOUNT BY CHANNEL NUMBER.þ*þ*þ** INPUT BUFFERSþ*---------------þ*þ* %1 - VERBþ* %2 - PRINT OPTION 'LPTR' OR NULLþ*þSTOFFþROþHSORT ACC ID-SUPP HDR-SUPP WITH NAME. LINE PCB-FID NAME. TIME. DATE. LOCATION.þIF %2 = '(P)'ý'LPTR' H LPTRþPþÿIFB3þ17D35þLRETERMþÿRETERMþPQþ* PROGRAM : (RETERM) RESET TERMINAL/PRINTER CHARACTERISTICSþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : RICHARD TELOEKEN (APR 1, 1981)þ* LAST MODIFIED : ROBIN LOSITO (MAY 2, 1984)þ* : KMP - 12/07/90þ*þ* THIS IS CALLED BY CATALOG ITEM 'RETERM', 'SET-LPTR'.þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO CHANGE THEþ* TERMINAL AND PRINTER CHARACTERISTICS.þ*þ*þ* INPUT BUFFERSþ* -------------þ*þ* %1 DATA FOR PROCLIB-S HEADINGþ* %1 $16 STRING OF TERMINAL CHARACTERISTICSþ* %2 $16 STRING OF TERMINAL CHARACTERISTICS WITHOUT COMMASþ* %3 TERMINAL PAGE WITHþ* %4 TERMINAL PAGE DEPTHþ* %5 TERMINAL LINE SKIPþ* %6 TERMINAL LINE FEED DELAYþ* %7 TERMINAL FORM FEED DELAYþ* %8 BACKSPACEþ* %9 PRINTER PAGE WIDTHþ* %10 PRINTER PAGE DEPTHþ* %11 TERMINAL TYPE ($22)þ* %12 CHANGE LINE RESPONSEþ*þ*þ*þ%1 = "RESET TERMINAL/PRINTER CHARACTERISTICS"þ[PROCLIB-S HEADING]þRIþ*þ* DISPLAY SCREENþ*þTERM (20,3),"TERMINAL", (35),"PRINTER",þ (0,5),"1. PAGE WIDTH",þ (0,7),"2. PAGE DEPTH",þ (0,9),"3. LINE SKIP",þ (0,11),"4. LINE FEED DELAY",þ (0,13),"5. FORM FEED DELAY",þ (0,15),"6. BACKSPACE",þ (0,17),"7. TYPE"þ*þ5 * DISPLAY TERMINAL CHARACTERISTICSþ*þ%1 = $16þ*þSTR %2 %1, ",", "*", 1þMV %3 %2:G0*1:, %2:G1*1:, %2:G2*1:, %2:G3*1:þMV %7 %2:G4*1:, %2:G5*1:, %2:G6*1:, %2:G7*1:þ%11 = $22þ*þTERM (23,5),%3:MD0 3 :,(37),%9:MD0 3 :,þ (23,7),%4:MD0 3 :,(37),%10:MD0 3 :,þ (23,9),%5:MD0 2 :,þ (23,11),%6:MD0 2 :,þ (23,13),%7:MD0 2 :,þ (23,15),%8:MD0 2 :,þ (24,17),%11þ*þ10 * CHANGE LINEþ*þTERM (0,22), "ENTER LINE # TO CHANGE, * TO VOID, OR RTN TO POST"þ*þ%12 = ""þEIPN (53,22),%12,X1þIFN %12 = "1"ý"2"ý"3"ý"4"ý"5"ý"6"ý"7" GO 20ýGO 30ýGO 40ýGO 50ýGO 60ýGO 70ý GO 80þIF %12 = ""ý"*" GO 100ýGO 999þ*þ20 * TERMINAL/PRINTER PAGE WIDTHþ*þEIPN (23,5),%3,N3þ*þEIPN (37),%9,N3þGO 10þ*þ30 * TERMINAL/PRINTER PAGE DEPTHþ*þEIPN (23,7),%4,N3þ*þEIPN (37),%10,N3þGO 10þ*þ40 * LINE SKIPþ*þEIPN (23,9),%5,N2þGO 10þ*þ50 * LINE FEED DELAYþ*þEIPN (23,11),%6,N2þGO 10þ*þ60 * FORM FEED DELAYþ*þEIPN (23,13),%7,N2þGO 10þ*þ70 * BACKSPACEþ*þEIPN (23,15),%8,N2þGO 10þ*þ80 * TERMINAL TYPEþ*þIF $11 = "M" THENþ EIPN (24,17), %11, N2þ GO 10þELSEþ EIPN (24,17),%11,X1þ GO 10þENDþ*þ100 * POSTþ*þ#1 = "TERM "*%3*","*%4*","*%5*","*%6*","*%7*","*%8*","*%9*","*%10*","*%11þPþ*þ999 * EXITþ*þRTNþÿIFB3þ17D35þ02E1BLOCK-TERMþPQþ* PROGRAM : (BLOCK-TERM) BLOCK PRINT TO TERMINALþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (FEB 6, 1984)þ* LAST MODIFIED : W.J.POLLIN (04/88) FOR EDGEþ*þ* THIS IS CALLED BY CATALOG ITEM 'BLOCK-TERM'þ*þ* THIS PROGRAM CAN BE EXECUTED FROM TCL OR OTHER PROGRAMþ*þ* THIS PROGRAM PROVIDES THE FACILITY TO BLOCK PRINT WORDS TOþ* THE TERMINAL INSTEAD OF THE PRINTER.þ*þ* IF CALLED EXTERNALLYþ* --------------------þ*þ* ALL DATA FOR DISPLAY MUST BE IN THE INPUT BUFFER STARTING AT %2þ*þ*þ*þSTOFFþROþHBLOCK-PRINT þFOR %100 = 2 TO 250þIF # %%100 %100 = 250þH%%100þH þNEXT %100þ*þPþ*þRTNþÿIFB3þ17D35þLATB-SUBSþÿATB-SUBSþPQþ* PROGRAM : (ATB-SUBS) SUBROUTINE FOR DICTIONARY ATTRIBUTE BUILDERþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (MAR 6, 1985)þ*þ* THIS IS CALLED BY PROGRAMS 'ATB' AND 'ATB-POINTER'þ*þ* THIS PROGRAM CAN NOT BE EXECUTED FROM TCL.þ*þ* THIS PROGRAM HANDLES THE SYNONUM NAME, STRUCTURE, CONVERSION,þ* CORRELATIVE FIELDS OF A DICTIONARY ITEM TO BREAKþ* THEM INTO SEVERAL LINES FOR MAINTENANCE.þ*þ*þ** INPUT BUFFERSþ*---------------þ*þ* %1 = WORK AREAþ* %2 = RETURN CODE; NULL IF OK; * IF VOIDEDþ* %3 = SCRATCHþ* %4 = SCRATCHþ* %6 = FLAG FOR CONTINUOUS ITEM IN MULTI-VAL FIELDþ* %14 = 'OLD' OR 'NEW' REFLECTING STATUS IF ENGLISH ITEMþ*þ* #1 STARTING ROW POSITION FOR DISPLAY OR ENTRYþ* #2 ATTRIBUTE DATA TO DISPLAY OR CHANGEþ* #3 MAX NUMBER OF LINES FOR DISPLAY OR INPUTþ* #4, #5, #6 SCRATCHþ* #7 SUBROUTINE TO USEþ* 400 - FOR DISPLAY ONLYþ* 450 - FOR INPUTþ* #8 FLAG TO FORCE BLANKING OF MV FIELD DISPLAYþ* #9, #10, #11 SCRATCHþ* #12 CHARACTER LENGTH OF DATA TO BE DISPLAYEDþ* #13 COUNT OF VALUES IN DATA FOR DISPLAY OR CHANGEþ*þ*þ* &1 = (OUTPUT) DICT USER FILEþ* &2 = (INPUT) MASTER DICTIONARY (DICT M/DICT)þ* &2.0 = INPUT THE NAME OF THE USER FILE (WHEN &2.0 IS NULL)þ*þ+EQ .MDICT &1þ+EQ .DICT &2þ*þ*-------------------------------------þ*þE*, %2 = "*"ü GO 9999þ%2 = ""þIFN #7 = 400ý450 GOSUB 400 ü GO 9999 ý GOSUB 450 ü GO 9999 þTERM E,"SUBROUTINE ENTERED WITH INCORRECT FLAG: ",#7þGO 9999þ*þ*---------------------------------------þ*þ* SUBROUTINE TO DISPLAY DATAþ* CONVERT MULTI-VAL SET WITH CONTINUOUS VALUEþ400 *þ#4 = 1þMVC #13 #2þ* EXTRACT MULTI-VAL **þ405 *þIFN #4 > #13 THENþ GOSUB 440þ RSUBþ ENDþMVE #7 #2, #4þ* MAKE 48 BYTES A MULTI-VAL AND ADD "\" **þ410 *þ#4 = #4 + 1þ* NOW GET CHARACTER LENGTH OF DATA IN #7þ#7 = #7þ#12 = $8þ* IF EACH VALUE WITHIN THE MV DATA HAS A LENGTH GREATER THAN 48þ* BREAK IT UP INTO 48 OR LESS VALUES AND ADD TO THE MV DATAþIFN #12 > 48 THENþ MVI #2 #2, #7(49, #12), #4þ #4 = #4 - 1þ MVR #2 #2, #7(1, 48)*"\", #4þ #4 = #4 + 1þ #13 = #13 + 1þ #7 = #7(49,#12)þ GO 410þ ENDþGO 405þ*þ* SUBROUTINE TO DISPLAY A MULTI-VALUED SETþ440 *þMV #9 1, 1, #1þ442 *þMVE %1 #2, #9þIF %1*#8 THENþ TERM (13,#11),þ %1*" ":T1,50:,þ (77,#11),S1þ IF %1 IF %1:T1: # "\"ý"." TERM (77,#11),#10 ü #10 = #10 + 1þ #9 = #9 + 1þ #11 = #11 + 1þ IFN #9 <= #3 GO 442þ ENDþ#8 = ""þRSUBþ*þ* SUBROUTINE TO INPUT A MULTI VALUE TO #2þ450 *þ#5 = 1þ#6 = #1þE^, RSUBþ* COUNT THE NUMBER OF VALUES FOR DATAþMVC #13 #2þIFN #13 > #3 TERM E, "THERE IS MORE DATA THAN THE ", #3, " LINES DISPLAYED"þ%6 = ""þ452 *þMVE %3 #2, #5þ%4 = %3þ*þ* INPUT DATA; "I" - MEANS INSERT NEW FIELD PREVIOUS TO THIS ONE;þ* IF DATA ENDS IN "\", FIELD IS CONTINUED TO NEXT LINE.þ*þEIT, (13,#6), %3, X50þIF %3 = "." GO 452þ*þIF %6*%3 = "\I" THENþ TERM E, 'You cannot insert in the middle of a value'þ GO 452þ ENDþ*þ* TEST FOR NULL INPUT & NULL FIELDþIF # %3*%4 THENþ* SPECIAL TEST FOR SYSTEM DICT, TO ALLOWþ* NULL FIELDS IN L/RET & L/UPDþ IF &1.0 # "SYSTEM" RSUBþ #5 = #5 + 1þ MVE %3 #2, #5þ IF %3 GO 460þ RSUBþ ENDþ*þ* TEST FOR INSERT FIELDþIF %3 = "I" THEN þ MVI #2 #2, ".", #5þ GOSUB 440þ GO 452þ ENDþIF # %3 THENþ IF %6 = "\" THENþ TERM E, 'This line cannot be deleted! Delete previous line or replace this one'þ GO 452þ ELSEþ*þ* TEST FOR DELETE FIELDþ*þ GOSUB 1600þ #8 = "*" ü GOSUB 440þ GO 452þ ENDþ ENDþ*þ* REPLACE FIELDþ*þMVR #2 #2, %3, #5þ* TEST FOR \ IN LAST CHARACTER; IF \, ADD NEW FIELDþ#7 = #5 + 1þIF %3 # %4 THENþ IF %3:T1: = "\" THENþ IF %4:T1: # "\" THENþ MVI #2 #2, ".", #7þ #8 = "*" ü GOSUB 440þ ENDþ ENDþ ENDþ*þ#5 = #5 + 1þ460 *þ#6 = #6 + 1þ* SAVE LAST CHARACTER OF THIS FIELDþ%6 = %3:T1:þIFN #5 <= #3 GO 452þ*þRSUBþ*-----þ* SUBROUTINE TO DELETE LINESþ1600 **þMVE #9 #2, #5þIF #9:T1: # "\" MVK #2 #2,#5 ü RSUBþMVK #2 #2,#5þGO 1600þ*---þ* EXITþ9999 *þRTNþÿIFB3þ17D36þL.CMDþÿ.CMDþPQþ* PROGRAM : (.CMD) PRESTORE (DOT) COMMANDþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (FEB 28, 1984)þ*þ* THIS IS CALLED BY CATALOG ITEM '.'þ*þ* THIS CAN ONLY BE EXECUTED FROM TCL.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO SAVE A FILE NAMEþ* AND ITEM LIST TO BE USED AMONG TCL COMMANDS WITHOUTþ* RE-ENTERING FILE NAME AND ITEM LIST AGAIN.þ*þ** INPUT BUFFERSþ*---------------þ*þ*þ*þ*þ*þF-OUTPUT &1 "DICT MD" ELSEþ TERM M,201,'MD'þ GO 9999þENDþ*þ* THE POSSIBLE COMMANDS ARE:þ* %1 %2 %3 %4 %5þ* 1. C VERB DICT FILE ITEM (OPTIONS)þ* 2. C VERB DICT FILE ITEMþ* 3. C VERB FILE ITEM (OPTIONS)þ* 4. C VERB FILE ITEMþ* 5. C VERB (OPTIONS)þ* 6. C VERBþ*þ&0.0 = %1þIFN $8 # 1 O INVALID CALL TO '.CMD' PROGRAM ü GO 9999þ*þ* SINCE THE '.' IS IN INPUT BUFFER 1, REMOVE IT ANDþ* MOVE INPUT BUFFER 2 AND BEYOND INTO INPUT BUFFER 1.þ*þMV %1 %2, *þ*þ* IF THE INPUT BUFFER 2 IS 'DICT' INSTEAD OF THE FILE NAME,þ* COMBINE 'DICT' AND FILE NAME INTO ONE.þ*þIF %2 = ("("0X)ý"DICT"ý"dict" MV %2 "",,%2ýMV %2 %2*" "*%3," ",%4þ*þGOSUB 100þ*þ* READ THE RECORD '.' IN THE M/DICT TO GET ANY PRESTOREDþ* FILE NAME AND ITEMS. THE CATALOG INFO IS IN THE FIRST 6 ATTR.þ*þ* ATTR 7-X CONTAIN FILE-NAME/ITEM-ID PAIRS, 2 PER CHANNELþ* EX: CHANNEL 0 DATA IS IN ATTRS 7 & 8, CHANNEL 1 IN 9 & 10 ETC.þ*þ* IF A NEW FILE NAME AND ITEMS WERE ENTERED,þ* SAVE THEM IN THE RECORD '.' IN THE M/DICT.þ*þF-READ &1 &0.0 ELSEþENDþ*þ* SUPPLY THE FILE AND ITEMLIST FROM OR TO THE CATALOGUED M/DICTþ* ITEM; MAKE SURE THIS ITEM IS IMMEDIATELY UNLOCKED.þ*þ#1 = 8 + ( $3 X 2 )þIF %2 THENþ IF # %3 THENþ #1 = #1 + 1þ %3 = &1.#1þ #1 = #1 - 1þ ENDþ MV &1.#1 %2, %3þ F-WRITE &1þELSEþ MV %2 &1.#1, *1þ IF # %2 THENþ TERM "No previous information stored.",Lþ IF # %1 GO 9999þ MV %249 %1,#1þ MV %2 '', '', ''þ [PROCLIB-S TCL-II-INIT]þ %1 = %249þ GOSUB 100þ MV &1.%250 %2, %3þ F-WRITE &1þ ELSEþ F-FREEþ ENDþENDþ*þIF %1 # "PQ" TERM "using ",%2," ",%3,LþIF # %1 GO 9999þ*þMV #1 %1,%2,%3,%4þPþGO 9999þ*þ* PUT ALL DATA INTO %3, SEPARATED BY A SPACEþ* (EXCEPT ANY OPTIONS THAT ARE IN PARENTHESES)þ*þ100 *þIF %4 THENþ IF %4 # ('('0X) THENþ MV %3 %3*" "*%4, %5, *þ GO 100þ ENDþENDþRSUBþ*þ9999 *þRTNþÿIFB3þ17D36þLDISPLAY-MOD-SEPþÿDISPLAY-MOD-SEPþPQþ* PROGRAM : (DISPLAY-MOD-SEP) DISPLAYS DICT & DATA MODULO AND SEPARATION OF A FILEþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : CM (OCT 13, 1980)þ* LAST MODIFIED : ROBIN LOSITO (JAN 19, 1984)þ*þ* THIS IS CALLED BY CATALOG ITEMS 'DFD', 'DISPLAY-MOD-SEP'þ*þ* THIS PROGRAM CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO DISPLAY THE MODULOþ* AND SEPARATION OF THE DICTIONARY AND DATA SECTIONSþ* OF A FILE.þ*þ*þ** INPUT BUFFERSþ*---------------þ*þ*þ%1 = "DISPLAY FILE DATA"þ[PROCLIB-S HEADING]þ*þ* ENTER FILE NAMEþ*þ25 *þTERM (0,5), 'FILE NAME 'þ%1 = ''þEIP?, (15,5), %1, X50þIF # %1 TERM (0,22)ü GO 9999þTERM (0,7), S79þ%2 = %1þ*þF-OUTPUT &1 'DICT MD'þF-READ &1 %1þ &1.1 = ""þIF &1.1(1,1) = "Q"ý"D"ý(0X)ý"" GO 100ý GO 200ý GOSUB 900ü GO 25þ*þ* IF A Q-POINTER, DISPLAY ACCOUNT AN FILE POINTING TOþ*þ100 *þIF $11 = "M" IF # &1.3 IF &1.2 # "SYSTEM" MV &1.2 "SYSTEM", &1.2þ*þTERM (0,7),%1," IS A Q-POINTER TO FILE ",&1.3þIF # &1.3 TERM "M/DICT"þIF &1.2 # $4 TERM " IN ACCOUNT ",&1.2þ*þ%2 = &1.3þMV &1.0 "DISPLAY-MOD-SEP-"*$3, "Q", &1.2, "", ".", _þF-WRITE &1þ* þ* READ D-POINTER FROM Q-ACCOUNTþF-INPUT &1 "DICT DISPLAY-MOD-SEP-"*$3þ*þIF # %2 GO 200þF-READ &1 %2 ELSEü ENDþIF &1.1 = "Q" GOSUB 910üGO 25þIF &1.1(1,1) # "D" GOSUB 900ü GO 25þ*þ* IF EXISTS IN PRESENT ACCOUNTþ*þ200 *þTERM (0,9), "DICTIONARY OF ", %2, S20þ*þGOSUB 210þ*þ* OPEN DICTIONARY TO GET DATA POINTERþ*þF-INPUT &1 DICT %1þ*þ* REALITY/ULTIMATEþIF $11 = "M" THENþ &1.0 = "DL/ID"þ ELSEþ &1.0 = %2þ ENDþ*þF-READ &1 &1.0þ TERM L,'NO DATA SECTION',L,S20,L,S20,L,S20 ü GO 25þTERM L, "DATA "þ*þGOSUB 210þ*þGO 25þ*þ* DISPLAY BASE, MODULO, SEPARATIONþ*þ210 *þTERM L,'BASE :', ' '*&1.2:T9:,L,þ 'MODULO :', ' '*&1.3:T9:,L,þ 'SEPAR :', ' '*&1.4:T9:,LþRSUBþ*þ900 *þTERM E,"'",%1,"' IS NOT A FILE-NAME"þRSUBþ*þ910 *þTERM E,"*** ERROR : Q-POINTER CANNOT POINT TO Q-POINTER ***"þRSUBþ*þ9999 *þ*þ* IF Q-POINTER CREATED, DELETE IT FROM MDþ*þF-OUTPUT &1 'DICT MD'þF-READ &1 'DISPLAY-MOD-SEP-'*$3þNOPþF-DELETE &1þ*þRTNþÿIFB3þ17D37þLCOMPARE-DATAþÿCOMPARE-DATAþPQþ* PROGRAM : (COMPARE-DATA) COMPARES DATA IN TWO FILESþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (MAR 1, 1985)þ*þ* THIS IS CALLED BY CATALOG ITEM 'COMPARE-DATA'.þ*þ* THIS PROGRAM CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO COMPARE DATA INþ* TWO FILES. IT WILL LIST ANY ITEMS FOUND IN ONE FILEþ* BUT NOT IN THE OTHER. IF AN ITEM IS FOUND IN BOTH,þ* THE ATTRIBUTES WILL BE COMPARED FOR DIFFERENCES ANDþ* PRINTED IF ANY ARE FOUND. A REPORT IS PRINTED FOR THEþ* RESULTS OF THE COMPARISON.þ*þ*þ** INPUT BUFFERSþ*---------------þ*þ* %1 KEYS TO MAIN FILEþ* %2 KEYS TO OTHER FILEþ* %3 FLAG INDICATING WHICH FILE HAS THE GREATER RECORD KEYþ* %4 OPERATOR INPUT FOR ERRORSþ* %5 MAIN FILE NAMEþ* %6 OTHER FILE NAMEþ* %7 Xþ* %8 Xþ* %9 Xþ* %10 HIGHEST ATTRIBUTE NUMBER BETWEEN THE 2 FILES FOR A RECORDþ* %11 NUMBER OF ATTRIBUTES FOR MAIN FILEþ* %12 NUMBER OF ATTRIBUTES FOR OTHER FILEþ* %13 WORK FOR LOOPING TO COMPARE ATTRIBUTES FOR A RECORDþ* %14 ATTRIBUTE NUMBER FOR A RECORD THAT DIFFERS BETWEEN THE 2 FILESþ* %15 ACCOUNT FOR MAIN FILEþ* %16 FILE DESC FOR MAIN FILEþ* %17 ACCOUNT FOR OTHER FILEþ* %18 FILE DESC FOR OTHER FILEþ* þ* THE REPORT OF MISMATCHES MAY BE ROUTED TO THE PRINTERþ*þ* A LIST OF ITEM-IDS OF MISMATCHING ITEMS MAY BE STOREDþ* IN A SPECIFIED ITEM IN THE MD FOR USE BY A FORM-LIST OR QSELECT.þ*þ+EQ .MAIN-FILE-KEY %1þ+EQ .OTHER-FILE-KEY %2þ+EQ .HIGHER-KEY %3þ+EQ .MAIN-FILE-NAME %5þ+EQ .OTHER-FILE-NAME %6þ+EQ .MAIN-FILE &1þ+EQ .OTHER-FILE &2þ+EQ .MDICT &3þ*þ* GET FILES FOR COMPARISONþ*þRIþ*þTERM "MAIN {DICT} filename", (30)ü IP?.MAIN-FILE-NAMEþIF .MAIN-FILE-NAME = ""ý"*" GO 9999þ*þ70 *þTERM "OTHER {DICT} filename", (30)ü IP?.OTHER-FILE-NAMEþIF .OTHER-FILE-NAME = ""ý"*" GO 9999þIF .OTHER-FILE-NAME = .MAIN-FILE-NAME THENþ TERM "CAN NOT USE THE SAME FILE", Lþ GO 70þ ENDþ*þF-INPUT .MAIN-FILE .MAIN-FILE-NAME ELSEþ TERM "FILE ", .MAIN-FILE-NAME, " DOES NOT EXIST IN ACCOUNT, ENTER RTN "þ IP:%4þ GO 9999þ ENDþF-INPUT .OTHER-FILE .OTHER-FILE-NAME ELSEþ TERM "FILE ", .OTHER-FILE-NAME, " DOES NOT EXIST IN ACCOUNT, ENTER RTN "þ IP:%4þ GO 9999þ ENDþ*þ* GET ACCOUNT NAMES AND FILE DESCRIPTIONS FOR HEADING OF REPORTþ*þF-INPUT .MDICT "MD"þ*þF-READ .MDICT .MAIN-FILE-NAMEþNOPþIF .MDICT.1 = "Q" THENþ MV %15 .MDICT.2, .MDICT.3þ ELSEþ MV %15 $4, .MAIN-FILE-NAMEþ ENDþ*þF-READ .MDICT .OTHER-FILE-NAMEþNOPþIF .MDICT.1 = "Q" THENþ MV %17 .MDICT.2, .MDICT.3þ ELSEþ MV %17 $4, .OTHER-FILE-NAMEþ ENDþ*þLPTR HDR, (90), T, " PAGE ", P, L, L,þ (1), "COMPARISON OF FILES",þ (30), "ACCT - ", %15, " FILE - ", %16,þ (80), "ACCT - ", %17, " FILE - ", %18, L, L,þ (1), "ITEM ID", Lþ*þTERM L, "NOW SELECTING THE ITEMS IN BOTH FILES"þ!1 = ''þ!2 = ''þ*þSTOFFþROþHSSELECT þH.MAIN-FILE-NAMEþSTONþROþHPQ-SELECT 1þPþ*þSTOFFþROþHSSELECT þH.OTHER-FILE-NAMEþSTONþROþHPQ-SELECT 2þPþ*þ* GET FIRST RECORD FROM BOTH FILES.þ*þ.MAIN-FILE-KEY = !1þ*þ.OTHER-FILE-KEY = !2þ*þ* COMPARE TO SEE WHICH IS GREATERþ*þ900 *þIF # .MAIN-FILE-KEY .MAIN-FILE-KEY = "END OF MAIN-FILE"þIF # .OTHER-FILE-KEY .OTHER-FILE-KEY = "END OF OTHER-FILE"þIF .MAIN-FILE-KEY = "END OF MAIN-FILE" IF .OTHER-FILE-KEY = "END OF OTHER-FILE" GO 9990þ*þIF .MAIN-FILE-KEY = "END OF MAIN-FILE" GO 2000þIF .OTHER-FILE-KEY = "END OF OTHER-FILE" GO 1000þ*þ*þIF .OTHER-FILE-KEY > .MAIN-FILE-KEY THENþ .HIGHER-KEY = "OTHER"þ ELSEþ IF .MAIN-FILE-KEY = .OTHER-FILE-KEY THENþ .HIGHER-KEY = "SAME"þ ELSEþ .HIGHER-KEY = "MAIN"þ ENDþ ENDþ*þIF .HIGHER-KEY = "OTHER"ý"MAIN"ý"SAME" GO 1000 ý GO 2000 ý GO 3000þ*þ* OTHER FILE HAS GREATER KEYþ*þ1000 *þF-READ .OTHER-FILE .MAIN-FILE-KEY ELSEþ LPTR (1), .MAIN-FILE-KEY, (80), "** MISSING **"þ .MAIN-FILE-KEY = !1þ GO 900þ ENDþGO 3000þ*þ* MAIN FILE HAS GREATER KEYþ*þ2000 *þF-READ .MAIN-FILE .OTHER-FILE-KEY ELSEþ LPTR (1), .OTHER-FILE-KEY, (30), "** MISSING **"þ .OTHER-FILE-KEY = !2þ GO 900þ ENDþGO 3000þ*þ* FOUND IN BOTH FILESþ*þ3000 *þF-READ .MAIN-FILE .MAIN-FILE-KEYþNOPþF-READ .OTHER-FILE .OTHER-FILE-KEYþNOPþ*þ* COUNT THE ATTRIBUTES IN EACH RECORD AND SEE WHICH IS HIGHER.þ*þACOUNT %11 .MAIN-FILE.1þACOUNT %12 .OTHER-FILE.1þIFN %11 > %12 THENþ %10 = %11þ ELSEþ %10 = %12þ ENDþIFN %10 = 0 GO 3950þ*þ* COMPARE EACH ATTRIBUTE IN THE TWO RECORDS TO FINDþ* ALL ATTRIBUTES THAT ARE DIFFERENT IN ANY WAY.þ*þFOR %13 = 1 TO %10þ ICOMP %14 .MAIN-FILE.%13, .OTHER-FILE.%13þ IFN %14 = -1 THENþ %13 = %10þ GO 3900þ ENDþ* FOUND AN ATTRIBUTE THAT DOES NOT MATCHþ %13 = %14þ*þ LPTR (1), .MAIN-FILE-KEY, " ATTR ", %13, (30), .MAIN-FILE.%13(1,50), (80), .OTHER-FILE.%13(1,50)þ3900 *þNEXT %13þ3950 *þ.MAIN-FILE-KEY = !1þ.OTHER-FILE-KEY = !2þGO 900þ*þ* EXIT PROGRAMþ*þ9990 *þLPTR Cþ9999 *þRTNþÿIFB3þ17D37þLSORTþÿsortþPQþ* PROGRAM : (SORT) FILE DICTIONARY SORT DISPLAY OR PRINTþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 102þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (MAR 6, 1985)þ* : Make Case insensitive for RS6000 JR 03/07/91þ*þ* THIS IS CALLED BY CATALOG ITEMS 'DSORT', 'LSORT', 'LSORT80'þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO LIST THE DICTIONARYþ* ITEMS FOR A FILE TO THE TERMINAL OR PRINTER. IF PRINTED,þ* A FULL WIDTH LIST CAN BE GENERATED OR A SHORT VERSION TOþ* CUT TO FIT AN 8 X 11 PAGE.þ*þ*þ* INPUT BUFFERSþ*þ* %1 - VERBþ* %2 - FILE NAMEþ* %3 - ADDITIONAL SELECT 'WITH' CRITERIA OR NULL.þ* THE 'WITH' MUST BE ENTERED BY OPERATOR OR CALLING PROGRAM.þ*þ* FILE 0 - USED FOR WORK IN BUILDING THE DATA RETRIVIAL SENTENCEþ*þ* MAKE VERB UPPERCASEþ*þ%1 = %1:MCU:þ*þ* GET FILE NAME IF MISSINGþ*þIF # %2 THENþ TERM L,"File Name ? "þ IPF %2þ IF %2 = "*"ý"" GO 9999þENDþ100 *þ&0.1 = ''þIF $11 # 'M' THENþ &0.1 = ' A4'þ IF %1 = 'LSORT' &0.1 = ' V/STRUC'þENDþ*þIF %1 = 'DSORT'ý'LSORT80' THENþ &0.0 = ' BY A2 A0 A1 A2 A3'*&0.1*' A7 A8 A9'þ IF %1 = 'LSORT80' &0.0 = &0.0*' LPTR'þENDþ*þIF %1 = 'LSORT' THENþ &0.0 = ' BY A2 A0 A1 A2 S/NAME'*&0.1*' V/CONV V/CORR A9 LPTR'þENDþ*þ&0.0 = &0.0*' A10'þ*þSTOFFþHSORT DICT þH%2þH NOT 'CHECKSUM' WITH D/CODE "A""S""X"þH HEADING "PAGE 'P' 'TL'þHFILE : þH%2þH"þ*þ* ADD ANY OTHER SELECTION CRITERIA FOR DSORTþ*þIF %1 = 'DSORT' THENþ IF %3 H ANDþ250 *þ IF %3 THENþ H þ H%3þ MV %3 %4, *þ GO 250þ ENDþENDþH&0.0þH ID-SUPPþPþ*þ* IF DSORT, EXIT PROGRAMþ* IF LSORT OR LSORT80 THEN SEE IF THERE IS ANOTHER FILE TO LISTþ*þIF %1 = 'DSORT' THENþ TERM L, "END OF DICTIONARY LIST, ENTER RTN TO CONTINUE "þ IPN%1þ GO 9999þENDþ*þIF %3 THENþ MV %2 %3, *þ TERM L, %1, " ", %2þ GO 100þENDþ*þ9999 *þRTNþÿIFB3þ17D37þLVMAPþÿvmapþPQþ* PROGRAM : (VMAP) RPL VARIABLE MAP PRINT PROGRAMþ* BCP/MCS VERSION : 6 (COPYRIGHT 1991 SYSTEMS MANAGEMENT, INC.)þ* CLIENT : SYSTEMS MANAGEMENT, INC.þ* LANGUAGE : RPL 102Aþ* AUTHOR : J. ROBERTSþ* LAST REVISED : 25 FEB 1991þ* CHANGE REQUESTS : Xþ* LAST MODIFIED : Xþ*þ* PRINTS A LISTING OF ALL VARIABLES USED IN AN RPL PROGRAMþ* FORMAT FROM TCL IS VMAP filename itemnameþ*þ* INPUT BUFFERSþ*þ* %1 MUST BE VMAP (CALL FROM TCL)þ* %2 FILE NAME TO PROCESSþ* %3 ITEM NAME TO PROCESSþ* %4 LAST LINE OF PROGRAMþ* %5 CURRENT LINE PROCESSINGþ* %6 MV OF LOCATION OF QUOTES IN LINEþ* %7 CURRENT START POSITION OF LITERAL STRING IN QUOTESþ* %8 END POSITION OF LITERAL STRING IN QUOTESþ* %9 STRING TO BE DELETED INCLUDING QUOTESþ* %10 CURRENT VALUE TO EXTRACT FROM CONVERTED LINEþ* %11 EXTRACTED WORD FROM LINEþ* %12 LOCAL FOR EXTRACTING NEXT VALUE FROM LINE (WORK AREA)þ* %13 LOCAL FOR EXTRACTING NEXT VALUE FROM LINE (WORK AREA)þ* %14 MULTI-VALUE OF EQUATE NAMESþ*þ* FILE DEFINITIONSþ*þ* &0 RPL-MAP.PORTþ* &1 FILE CALLED FOR BY USER INPUTþ* &2 SAME AS ABOVEþ* &3 DICT RPL-MAP.PORTþ*þ* SELECT REGISTERSþ*þ* !1 Xþ* !2 Xþ* !3 RESERVED FOR BATCH PROCESSINGþ* !4 Xþ* !5 Xþ*þ*þ* CAN ONLY BE CALLED FROM TCL AT THIS TIMEþ*þIF %1 # "VMAP"ý"vmap" THENþ TERM L,"CAN ONLY BE CALLED FROM TCL"þ GO 9999þENDþ*þ* MUST BE FILE RPL-MAP TO SAVE THE REFERENCESþ*þF-OUTPUT &0 "RPL-MAP."*$3 ELSEþ GOSUB 2000þENDþ*þ* CLEAR THE RPL-MAP FILEþ*þSTOFFþROþHCLEAR-FILE DATA RPL-MAP.þH$3þPþ*þ* GET THE FILE NAMEþ*þIF # %2 THENþ T L,"FILENAME"þ IP:%2þ IF # %2 GO 9999þENDþ*þ* IS THIS A VALID FILE?þ*þF-INPUT &1 %2 ELSEþ TERM L,"INVALID FILE NAME"þ GO 9999þENDþF-INPUT &2 %2þ*þ* GET THE ITEM NAME IF NOT CALLED BY TCLþ*þIF # %3 THENþ TERM L,"ITEM NAME"þ IP:%3þ IF # %3 GO 9999þENDþ*þ* READ THE ITEMþ*þF-READ &1 %3 ELSEþ TERM L,"ITEM DOES NOT EXIST!"þ GO 9999þENDþF-READ &2 %3 ELSEþ TERM L,"YOU JUST LOST THE ITEM"þ GO 9999þENDþ*þ* MAKE SURE THIS IS AN RPL PROGRAMþ*þIF &1.1 # "PQ" THENþ TERM L,%3," IS NOT AN RPL PROGRAM OR LINE 1 IS NOT PQ"þ GO 9999þENDþTERM C,(0,0),%1," ",%2," ",%3þ*þ* CALCULATE THE NUMBER OF LINES IN PROGRAMþ*þACOUNT %4 &1.1þTERM (0,2),"TOTAL LINES",(13),%4:MD0 6 :þTERM (0,4),"WORKING LINE"þ%5 = 2þ*þ100 * GET THE NEXT PROGRAM LINE AND PROCESSþ*þIFN %5 > %4 GO 1200þTERM (13,4),%5:MD0 6 :þ*þ* DONT WORK ON COMMENT LINESþ*þIF &1.%5(1,1) = "C"ý"*" GO 1100þ%9 = ""þ*þ*þ200 * GET RID OF ALL THINGS IN QUOTESþ*þSTL %6 &1.%5,'"'þIF # %6 GO 300þMVE %7 %6,1þMVE %8 %6,2þMVD %6 %7þMVD %6 %8þ%8 = %8 - %7 + 1þ%9 = &1.%5(%7,%8)þSTR &1.%5 &1.%5,%9," ",1þSTR %9 %9,'"','',1þ%9 = %9:G0*1:þGO 200þ*þ300 * GET RID OF PUNCTUATIONþ*þSTR &1.%5 &1.%5,","," ",1þSTR &1.%5 &1.%5,"("," ",1þSTR &1.%5 &1.%5,":"," ",1þSTR &1.%5 &1.%5,"*"," ",1þSTR &1.%5 &1.%5,")"," ",1þSTR &1.%5 &1.%5,";"," ",1þSTR &1.%5 &1.%5,"ü"," ",1þ*þ* TRIM OFF SPACESþ*þSTT &1.%5 &1.%5þ*þ* REPLACE ALL SPACES WITH VALUE MARKS MAKING EACH LINE A MULTIVALUEþ* OF WORDSþ*þSTR &1.%5 &1.%5," ","ý",1þ%10 = 1þMVC %15 &1.%5þ*þ400 * EXTRACT THE WORDS FROM THE LINE AND TEST FIRST LETTERþ*þMVE %11 &1.%5,%10þIF # %11 THENþ IFN %10 < %15 GO 1000þ GO 1100þENDþ*þ500 * LOOK AT EACH LETTER OF CHOSEN WORD UNTIL YOU RUN OUT OR FIND A VARIABLEþ*þIF %11 = "MV"ý"+EQ" GO 600ýGO 900þIF %11(1,1) = "F"ý"%"ý"&"ý"!"ý"#"ý"$"ý"." GO 700ýGO 800þ%11 = %11(2,)þIF # %11 GO 1000þGO 500þ*þ600 * HANDLE THE MOVE STATEMENTSþ*þ%12 = %10 + 1þMVE %13 &1.%5,%12þ*þ* HANDLE EQUATE STATEMENTþ*þIF %13(1,1) = "." THENþ MVL %13 %14,%13*"]"þ MVE %13 %14,%13þ %13 = %13:G1*1:þ IF # %13 GO 1000þENDþF-READ &0 "MV"þ&0.2 = "MOVE"þSTT &2.%5 &2.%5þ%15 = " "*%5:T4:þMVI &0.1 &0.1,"@ "*%15*":"*&2.%5,-1þF-WRITE &0þGO 1000þ*þ700 * HANDLE FILE IO BUFFERSþ*þIF %11(1,3) # "F-I"ý"F-O"ý"F-R"ý"F-W"ý"F-C"ý"F-D" GO 1000þ%10 = %10 + 1þMVE %12 &1.%5,%10þIF %12(1,1) # "&"ý"." GO 400þ*þ* CONVERT EQUATEþ*þIF %12(1,1) = "." THENþ MVL %12 %14,%12*"]"þ MVE %12 %14,%12þ %12 = %12:G1*1:þ IF # %12 GO 1000þENDþF-READ &0 %12þNOPþ&0.2 = "FILE I/O"þIF &0.1 = "NOT USED" &0.1 = ''þIF %11(1,3) = "F-I"ý"F-O" THENþ IF # %9 MVE %9 &1.%5,3þ %11 = %11*" "*%9þENDþMVI &0.1 &0.1,%11*" @ "*%5,-1þF-WRITE &0þGO 1000þ*þ800 * WRITE BUFFERSþ*þIF %11 = "#" GO 1000þIF %11(1,1) = "." THENþ MVL %12 %14,%11*"]"þ MVE %11 %14,%12þ %11 = %11:G1*1:þ IF # %11 GO 1000þENDþIF %11:T2,9999: # (0N)ý(1N"."0N)ý(2N"."0N) GO 1000þF-READ &0 %11þNOPþIF &0.1 = "NOT USED" &0.1 = ''þ&0.1 = &0.1*%5*" "þIF %11(1,1) = (0N) THENþ &0.2 = "LABEL"þELSEþ IF %11(1,1) = "%"ý"!"ý"$"ý"#"ý"&" THENþ &0.2 = %11(1,1)*" BUFFER"þ ELSEþ &2.0 = "MISC"þ ENDþENDþF-WRITE &0þGO 1000þ*þ900 * BUILD EQUATESþ*þ!1 = &1.%5þIF !1 # &1.%5 GO 1100þ*þ910 * PULL OFF EACH EQUATE AND PROCESSþ*þ%12 = !1þ%13 = !1þIF %12(1,1) # '.' GO 1100þIF # %13 GO 1100þIF # %12*%13 GO 1100þMVA %14 %12*"*"*%13þF-READ &0 %13þNOPþ&0.1 = "NOT USED"þIF %13(1,1) = (0N) THENþ &0.2 = "LABEL"þELSEþ IF %13(1,1) = "%"ý"!"ý"$"ý"#"ý"&" THENþ &0.2 = %13(1,1)*" BUFFER"þ ELSEþ &0.2 = "MISC"þ ENDþENDþMVA &0.3 %12þF-WRITE &0þGO 910þ*þ1000 * INCREMENT MULTIVALUE COUNTERþ*þ%10 = %10 + 1þGO 400þ*þ1100 * INCREMENT LINE COUNTERþ*þ%5 = %5 + 1þGO 100þ*þ1200 * NOW PRINT THE REPORTþ*þSTOFFþROþHSORT RPL-MAP.þH$3þH BY TYPEþH BY NUMBERþH EQUATEþH KEYþH LINEþH BREAK-ON TYPEþH HEADING "VMAPþH BUFFER REFERENCE MAPþH 'TL'þH FOR FILE: þH%2þH þH%3þH 'LL'þH"þH ID-SUPPþH LPTRþPþGO 9999þ*þ2000 * BUILD RPL-MAP.PORTþ*þSTOFFþROþHCREATE-FILE RPL-MAP.þH$3þH 1,1 1,1þPþF-OUTPUT &3 DICT "RPL-MAP."*$3 ELSEþ TERM L,"COULD NOT CREATE DICT RPL-MAP FILE FOR PORT ",$3þ KSUBþ XþENDþF-OUTPUT &0 "RPL-MAP."*$3 ELSEþ TERM L,"COULD NOT CREATE RPL-MAP FILE FOR PORT ",$3þ KSUBþ XþENDþ*þ* BUILD DICTIONARY ITEMSþ*þMV &3.0 "KEY","A","0","Buffer",,,,,,"L","6"þF-WRITE &3þF-CLEAR &3þMV &3.0 "NUMBER","A","0",,,,,,"T2,999","R","10"þF-WRITE &3þF-CLEAR &3þMV &3.0 "LINE","A","1","Used at Lines",,,,,,"T","60"þF-WRITE &3þF-CLEAR &3þMV &3.0 "TYPE","A","2","Description",,,,,,"L","11"þF-WRITE &3þF-CLEAR &3þMV &3.0 "EQUATE","A","3","Equate",,,,,,"L","30"þF-WRITE &3þF-CLEAR &3þRSUBþ*þ9999 * END OF PROGRAMþ*þRTNþÿIFB3þ17D37þLRPL-FILEþÿRPL-FILEþPQþ* PROGRAM : (RPL-FILE) CREATES AND DELETES RPL PROGRAM FILESþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (MAY 9, 1984)þ*þ* THIS IS CALLED BY CATALOG ITEMS 'CREATE-RPL-FILE', 'DELETE-RPL-FILE'þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO CREATE AND DELETEþ* RPL PROGRAM FILES.þ*þ*þ** INPUT BUFFERSþ*---------------þ*þ* %1 - VERBþ* %2 - FILE NAME (WITH OR WITHOUT PARENTHESES)þ* %3 - DICTIONARY MODULO AND SEPARATIONþ* IF DELETING, THIS IS 'Y' FOR DELETING FILE OR NULLþ* %4 - DATA MODULO AND SEPARATIONþ* %5 - USED FOR WORK FIELD IN CREATEþ*þ*þF-OUTPUT &1 "DICT MD"þ*þ* GET FILE NAMEþ*þIF # %2 THENþ TERM Cþ TERM L, (0), "Enter File Name ? "þ IPN%2þ IF %2 = ""ý"*" GO 9999þ IF $11 = "M" %2 = "("*%2þENDþ*þ* UPPERCASE VERB AND FILE NAMEþ*þ%1 = %1:MCU:þ%2 = %2:MCU:þ*þ* REMOVE THE LEFT PARENTHESISþ*þIF %2(1,1) = "(" THENþ %2 = %2(2,99)þENDþ*þ* CHECK IF DICT OR DATA ONLY, WHICH IS NOT ALLOWEDþ*þ* IF # %2 MV %2 %3,*þIF %2 # 'DICT POINTER-FILE' THENþ IF %2 = "DICT"ý"DATA" GO 900þENDþ*þIF %1(1,6) = "CREATE"ý"DELETE" GO 100ýGO 200þTERM "INVALID ENTRY TO PROGRAM RPL-FILE, ENTER RTN "üIP-%1 ü GO 9999þ*þ* CREATE RPL FILEþ*þ100 *þ*þ* CHECK FOR MODULO AND SEPARATION FOR BOTH DICT AND DATAþ*þ%5 = ""þSTL %5 %2, "*"þIF %5 THENþ TERM L, (0), "FILE NAME CAN NOT CONTAIN ASTERISKS '*', ENTER RTN "þ IP:%1þ GO 9999þENDþIF # %3 GO 900þIF %3:G0,1: # (0N) GO 920þIF %3:G1,1: # (0N) GO 920þ%4 = %4:G0)1:þIF %2 # 'DICT POINTER-FILE' THENþ IF # %4 GO 900þ IF %4:G0,1: # (0N) GO 930þ IF %4:G1,1: # (0N) GO 930þENDþ*þ*þ* CREATE THE FILEþ*þMV #1 "CREATE-FILE (",%2,*þPþ*þ* READ M/DICT ITEMþ*þIF %2 = 'DICT POINTER-FILE' %2 = 'POINTER-FILE'þF-READ &1 %2 ELSEþ &1.1 = ''þENDþ*þIF &1.1 # "D" TERM E," THIS FILE IS NOT A 'D' ITEM! ENTER RTN " ü IP-%1 ü GO 9999þ*þ* CHANGE M/DICT ITEM TO INDICATE AN RPL FILEþ*þIF $11 = "M"ý"O" THENþ &1.13 = "B"þELSEþ &1.1 = "DC"þENDþ*þ&1.10 = 30þF-WRITE &1þ*þF-OUTPUT &9 DICT %2þ*þ* ADD DICTIONARY ATTRIBUTES TO FILEþ*þIF %2 # 'POINTER-FILE' THENþ [PROCLIB-S RPL-DICT-ATTS]þENDþ*þTERM "RPL FILE ",%2," CREATED",LþGO 9999þ*þ* DELETE-RPL-FILEþ*þ200 *þF-READ &1 %2 ELSEþ TERM "'",%2,"' IS NOT A FILE-NAME! ENTER RTN "þ IP-%1þ GO 9999þENDþF-FREE &1þ*þ* VERIFY THE FILE IS AN RPL FILEþ*þIF $11 = "M"ý"O" THENþ IF &1.13 # 'B' GO 980þELSEþ IF &1.1 # 'DC' GO 980þENDþ* ASK IF TO BE DELETED.þ210 *þIF # %3 THENþ TERM "Do you wish to delete ", %2, " (Y/N) "þ IPF?%3þ IF %3 # "Y"ý"N"ý"*" THENþ TERM "INVALID ENTRY", Lþ %3 = ""þ GO 210þ ENDþENDþIF %3 # "Y" GO 9999þ*þ* DELETE THE OBJECT CODE FIRSTþ*þGO 290þ*þ* JR LET SYSTEM TAKE CARE OF OBJECT CODE DELETEþ*þ*þ*þ215 *þTERM "DELETING RPL OBJECT "þMV #1 "SSELECT DICT",%2þH WITH D/CODE "C""C^"þSTONþHPQ-SELECT 1þPþ220 *þ%1 = !1þTERM L,%1þIF # %1 GO 290þMV #1 ":RPL-DEL DICT",%2,%1þPþ* TERM %1,LþGO 220þ*þ* NOW DELETE THE REST OF THE FILEþ*þ290 *þMV #1 "DELETE-FILE (",%2þPþTERM "RPL FILE ",%2," DELETED",LþGO 9999þ*þ900 *þTERM "RPL FILE MUST HAVE BOTH DICT & DATA",LþGO 9999þ*þ920 *þTERM "INVALID MODULO OR SEPARATION FOR DICTIONARY"þGO 9999þ*þ930 *þTERM "INVALID MODULO OR SEPARATION FOR DATA"þGO 9999þ*þ980 *þTERM "FILE '", %2, "' IS NOT AN RPL FILE",LþGO 9999þ*þ9999 *þRTNþÿIFB3þ17D37þ0614P-LISTþPQþ* PROGRAM : (P-LIST) LISTS RPL PROGRAMSþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (FEB 28, 1984)þ*þ* THIS IS CALLED BY CATALOG ITEMS 'P-LIST', 'D-LIST'þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO LIST RPL PROGRAMS.þ*þ*þ* IF EXTERNALLY CALLEDþ* --------------------þ*þ* %1 - VERBþ* %2 - FILE NAMEþ* %3 ON - ITEM LIST AND OPTIONS (IF ANY)þ*þ*þ* COMPILER OPTIONS:þ* B = BLOCK STRUCTURING DISPLAYþ* L = LIST ALL LINES (NOT JUST ERRORS)þ* P = SEND OUTPUT TO SPOOLERþ* S = NO OBJECT CODE TO BE GENERATEDþ* D = DOUBLE LISTINGþ* W = WARNING MESSSAGE SUPPRESSþ*þ* USE STANDARD TCL-II INTERFACE SETUP SUBROUTINEþ* TO GET FILE NAME AND ITEM IDS' IF NOT ALREADY ENTERED.þ*þ*þ* SAVE THE VERB BEFORE CALLING SUBROUTINE.þ*þ%1 = %1:MCU:þ&9.0 = %1þ[PROCLIB-S TCL-II-INIT]þ*þ* IF THE .INDEX IS '2', ALL ITEM IDS' ARE IN %3 ON.þ* IF THE .INDEX IS '0', ALL ITEM IDS' ARE SELECT REGISTER 1.þ* LOAD THEM INTO THE OUTPUT BUFFER, BEING CAREFUL NOT TOþ* DESTROY ANY OPTIONS.þ*þIFN %1 = 2 THENþ MV #3 %3, *þELSEþ*þ %4 = 3þ100 *þ %3 = !1þ IF # %3 GO 200þ #%4 = %3þ %4 = %4 + 1þ GO 100þ200 *þENDþ*þ* NOW LOAD OPTIONS, IF ANY.þ*þH (þIF #1 THENþ H#1þ H,þENDþ*þ* MOVE IN THE OPTIONS NECESSARY FOR THE LISTSþ*þIF &9.0 = "D-LIST"ý"P-LIST" þHD,W,P,S,R) ý HP,L,B,S,R) þ*þ* NOW MOVE IN THE FILE NAMEþ*þMV #1 "RPL", %2þPþRTNþÿIFB3þ17D38þLATB-POINTERþÿATB-POINTERþPQþ* PROGRAM : (ATB-POINTER) SUBROUTINE FOR DICTIONARY ATTRIBUTE BUILDERþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (MAY 25, 1984)þ*þ* THIS IS CALLED BY PROGRAM 'ATB'þ*þ* THIS PROGRAM CAN NOT BE EXECUTED FROM TCL.þ*þ* THIS PROGRAM HANDLES 'D' AND 'Q' POINTERS.þ*þ* : LAST MOD MAR 3,1988 DWS TO ALLOW FILE RESIZE OPTIONþ*þ*þ** INPUT BUFFERSþ*---------------þ*þ*þ* PARAMETERS PASSED TO THIS PROGRAMþ*þ* &1.0 - FILE NAMEþ* &2 - RECORD TO BE MODIFIEDþ* %9 - CURRENT USED D/CODE, FIRST CHAR.þ* %14 - FLAG: "NEW" - NEW RECORD; "OLD" - OLD RECORDþ*þ* PARAMETERS PASSED FROM THIS PROGRAMþ*þ* &2 - MODIFIED RECORDþ* %2 - DISPOSTION FLAGþ* NULL - POST RECORDþ* * - VOID RECORDþ* 1 - &2.1 WAS 'Q', IS 'A','S' OR 'X'þ* D - DELETE RECORDþ*þ*- - - - - - - - - - - - - - - - - - - - - - - - - - - - þ* BUFFER USAGEþ* FILE BUFFERSþ* &1 MD - RECORD IS FILE USEDþ* &2 DICT FILE - RECORD IS ATTRIBUTEþ* INPUT BUFFERþ* %1 - WORKþ* %2 - FIELD TO CHANGE (PARAMETER)þ* - & SIZE OF REALLOCTION. &2.13þ* OUTPUT BUFFER - - PASS PARAMETERS TO ATB-SUBSþ* #1 - STARTING LINE FOR UPDATESþ* #2 - NEW MULTIVALUED FIELDþ* #3 - NUMBER OF POSSIBLE INPUT LINESþ* #7 - SUBROUTINE TO EXECUTEþ* 400 -DISPLAY FIELDþ* 450 -UPDATE FIELDþ* LOCAL #1 - COLUMN OF FIELD TO CHANGEþ* LOCAL #2 - ROW OF FIELD TO CHANGEþ* - - - - - - - - - - - - - - - - - - - - - - - - - - - -þ*þE*,GO 990 þE^,GO 980þ*þ%9 = &2.1(1,1)þ*þ%1 = "DICTIONARY ATTRIBUTE BUILDER"þ[PROCLIB-S HEADING]þ*þTERM (0,2),"FILE NAME: DICT ", &1.0,þ (0,3),"ATTR NAME: ", &2.0,þ (0,5),"1. D/CODE: ", &2.1,þ (0,8),"5. L/RET:",(64),"(RETRIEVAL/",L,þ (10),":",(65),"ACCESS LOCK",L,þ (10),":",(65),"CODES)",L,þ (10),":",L,þ (10),":",L,þ (10),":",þ (0,14),"6. L/UPD:",(64),"(UPDATE LOCK",L,þ (10),":",(65),"CODES)",L,þ (10),":",L,þ (10),":",L,þ (10),":",L,þ (10),":",þ (0,20),"9. V/TYPE: ",&2.9þ*þIF &1.0 = "SYSTEM" THENþ TERM (43,5), "7. PASSWORD:", (57), &2.7,þ (43,6), "8. PRIVILEGE:", (57), &2.8þ ENDþ*þTERM (22,20), "10. V/MAX: ", &2.10 þ15 *----------------------------------------------þIF &2.1 = "Q" THENþ TERM (0,6),"2. ACCOUNT: ",&2.2,þ (0,7),"3. FILE: ",&2.3þ ELSEþ TERM (6,6),"BASE: ",&2.2:MD0Z7 :,þ (22),"MOD,SEP: ", &2.3,",",&2.4þ IF &2.0 # "MD"ý"M/DICT" TERM (41,20),"13. F/REALLOC: ",&2.13,þ (0,21), "ENTER R TO COMPUTE REALLOCATION"þ ENDþIF &2.5 THENþ* L/RETþ MV #1 8,&2.5,6,,,,400,"*"þ [PROCLIB-S ATB-SUBS]þ END * L/UPDþIF &2.6 THENþ MV #1 14,&2.6,6,,,,400,"*"þ [PROCLIB-S ATB-SUBS]þ END * SCREEN DISPLAYEDþTERM (64,3), "* ", %14, " ITEM *"þ*þIF %14 # "OLD" THEN * SKIP TO FIELD TO CHANGE ON OLD RECORDSþ*þ* BUILD NEW RECORDþ*þ E^Kþ GOSUB 1020 ü * ACCOUNT NAMEþ GOSUB 1030 ü * FILE NAMEþ GOSUB 1050 ü * RETREVIAL LOCKSþ GOSUB 1060 ü * UPDATE LOCKSþ IF &1.0 = "SYSTEM" THENþ GOSUB 1070 ü * PASSWORDþ GOSUB 1080 ü * SYSTEM PRIVELEGE/WORKSPACEþ ENDþ GOSUB 1090 ü * V/TERM þ GOSUB 1100 ü * V/MAXþ ENDþ*þ* GET FIELD TO CHANGEþTERM (0,22),"ENTER LINE NUMBER TO CHANGE, * TO VOID, D TO DELETE OR RETURN TO POST:"þ40 *þE^, %2 = ""þ%2 = ""þEIPN(70,22),%2,X2þIF %2 = "" GO 9999þIF %9*%2 = "Q1"ý"D1"ý"DR"ý"QD" GO 55 ý GO 57ý GOSUB 1200 ý GO 9999þ*þIF %2 = 5ý6ý9ý10 GOSUB 1050ý GOSUB 1060ý GOSUB 1090ý GOSUB 1100þIF %9*%2 = "Q2"ý"Q3"ý"D13" GOSUB 1020 ý GOSUB 1030ý GOSUB 1130þIF &1.0 = "SYSTEM" IF %2 = 7ý8 GOSUB 1070ý GOSUB 1080þGO 40þ*þ55 * CHANGE D/CODE ON QþEIRPN(13,5),&2.1,X3þIF &2.1 = "Q"ý"A"ý"S"ý"X" GO 40ý GO 9999þTERM E,&2.1," IS NOT A VALID V/TYP"þ&2.1 = "Q"þGO 55þ*þ57 * CHANGE D/CODE FOR D RECORDSþ%1 = &2.1þEIRPN(13,5),%1,X3þIF $11 = "M" IF %1 = "D"ý"DX"ý"DY" &2.1 = %1 ü GO 40þ* PICK ADDITIONAL TESTSþIF %1(2,1) # "C" IF &2.1(2,1) = "C" GO 59þIF %1 = "DC"ý"DCX"ý"DCY"ý"D"ý"DX"ý"DY"ý"DZ"ý"DCZ" &2.1 = %1 ü GO 40þ59 *þTERM E,"YOU MAY NOT CHANGE FROM A D-POINTER"þGO 57þ*þ* EI RETURNSþ*þ980 * ^ RETURNþ%2 = ""þGO 9999þ990 * * RETURNþ%2 = "*"þGO 9999þ*þ* SUBROUTINES TO INPUT DATAþ*-------------------------------------------------þ*þ* INPUT ACCOUNT NAMEþ*þ1020 *þEIRPN(13,6),&2.2,X25þRSUBþ*þ* FILE NAMEþ*þ1030 *þEIPN(13,7),&2.3,X40þRSUBþ*þ* RETRIEVAL LOCK CODESþ1050 *þMV #1 8,&2.5,6,,,,450,""þ[PROCLIB-S ATB-SUBS]þIF %2 = "*" GO 9999þSTR &2.5 #2,"\ý","","1"þRSUBþ*þ* UPDATE LOCK CODESþ1060 *þMV #1 14,&2.6,6,,,,450,""þ[PROCLIB-S ATB-SUBS]þIF %2 = "*" GO 9999þSTR &2.6 #2,"\ý","","1"þRSUBþ*þ* PASSWORD (MUST USE IP TO ALLOW CONTROL CHARACTERS)þ*þ1070 *þTERM (57,5),*.17,(57),&2.7,(57,5)þIP&2.7þIF &2.7 = "*"ý"^"ý"_" &2.7 = ""üGO 990ý&2.7 = ""üGO 980ý&2.7 = ""þRSUBþ*þ* SYSTEM PRIV. LEVEL & WORKSPACEþ1079 *þTERM E, "INVALID FORMAT"þ1080 *þ%1 = &2.8þEIPN(57,6),%1,X9þIF %1 = ""ý"SYS1"ý"SYS2"ý"SYS0" &2.8 = %1 ü RSUBþIF %1 # ("SYS0"0X)ý("SYS1"0X)ý("SYS2"0X) GO 1079þIF %1:G1(1::G0)1: # (0N) GO 1079þIF %1:T1: # ")" GO 1079þ&2.8 = %1þRSUBþ*þ* V/TERM þ*þ1089 *þTERM E,%1," IS NOT A VALID V/TYP"þ1090 *þ%1 = &2.9þEIRPN(13,20),%1,X2þIF %1(1,1) # "R"ý"L"ý"U"ý"T" GO 1089þIF %1(2,1) # ""ý"R"ý"U" GO 1089þ&2.9 = %1þRSUBþ*þ* V/MAXþ*þ1099 *þTERM E, "MUST BE NUMBER OR 1 ALPHA+NUMBER"þ1100 * INPUT V/MAX (ALLOW ALPHA)þ %1 = &2.10þEIR, (33,20), %1, X4þIF %1 # (0N)ý(1A0N) GO 1099þ&2.10 = %1þRSUBþ*-----þ* REALLOCATION SPEC.þ*þ1129 * INVALID REALLOCATIONþTERM E, "MUST BE OF FORMAT '(MOD,SEP)'"þ1130 *þIF &2.0 = "MD"ý"M/DICT" RSUBþ%1 = &2.13þIF %1(1,1) = "B" %1 = %1(2,9)þ%2 = %1þEIPN(57,20),%1,X12þIF ' '*%1 = ' '*%2 RSUBþIF # %1 GO 1150þIF %1 = "R"ý"C" GO 1200þ%1 = %1þ%2 = $8þIFN %2 < 5 GO 1129þIF %1(%2,1) # ")" GO 1129þ%2 = %2 - 2 ü IF %1(2,%2) # (0N,0N) GO 1129þ* FALL THRUþ1150 *þIF &2.13(1,1) = "B" &2.13 = "B"*%1 ü RSUBþ&2.13 = %1þRSUBþ*þ1200 * COMPUTE REALLOCATIONþMV %2 "", ""þIF &1.0 = "MD"ý"M/DICT" MV %2 "DICT",&2.0 ü GO 1210þIF &2.1 = "D"ý(D0X) %2 = &2.0 ü GO 1210þF-OUTPUT &9 "DICT MD" ELSE TERM 'CANT OPEN MD?' ü ENDþMV &9.0 "Q-ATB","Q","","","","."þIF &1.0 = "SYSTEM" MV &9.2 "SYSTEM", &2.0 ü %2 = "DICT"ü GO 1205þMV &9.2 &1.2, &2.0þ1205 *þF-WRITE &9þ%3 = "Q-ATB"þ1210 *þTERM E, "COMPUTING REALLOCATION PARAMETER......"þTERM D,D,D,Dþ%1 = ""þ[PROCLIB-S REALLOCATE]þ*þTERM (0,23),S79þTERM (0,23), "# ITEMS = ",%8, " AVG ITEM SIZE = ", %7þ*IFN %4 <= &2.3 TERM E,(50), "MODULO OK"ü RSUBþ*NEW CODE TO ALLOW SIZE OPTION CHOICEþ*þ*þ*TERM (0,23),S79þIFN %4 <= &2.3 TERM (40,23), "MODULO OK, RESIZE FILE Y/N ?" üGO 1215þ*þ*þGO 1220þ*TERM (0,23),S79þ*TERM (20,23),"DO YOU WISH TO RESIZE FILE Y/N ?"þ*þ1215 *þ%200 = ""þEIR (72,23),%200,X1þIF %200 # 'Y'ý'N' GO 1215þIF %200 = 'N' RSUBþ*þ*þ*END CODE FOR OPTIONþ*þ1220 *þ*þ%1 = "("*%4*",1)"þGOSUB 1150þGO 1130þ*þ*-----------END OF PROGRAM----------*þ9999 *þRTNþÿIFB3þ17D38þLDELETEþÿDELETEþPQþ* PROGRAM : (DELETE) DELETES PRE-SELECTED OR ENTERED ITEMS FROM A FILEþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (MAR 20, 1985)þ*þ* THIS IS CALLED BY CATALOG ITEM 'DELETE', 'DELETE-DATA'þ*þ* THIS PROGRAM CAN BE CALLED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO DELETE ONE OR MOREþ* ITEMS FROM A FILE WITHOUT USING THE EDITOR.þ*þ*þ* IF CALLED EXTERNALLY, THE FOLLOWING DATA IS NEEDEDþ* --------------------------------------------------þ*þ* %1 - VERB 'DELETE' OR 'DELETE-DATA'þ* %2 - FILE NAMEþ* %3 TO %250 - ITEM LISTþ*þ*þ** INPUT BUFFERSþ*---------------þ*þ*þ* RECORDS MAY BE SPECIFICALLY SELECTED ORþ* MAY BE ENTERED AFTER A SELECT OR GET-LIST.þ* IF THE ITEMS ARE RPL PROGRAMS, THE OBJECT CODE WILL BE DELETEDþ* FIRST THEN THE SOURCE.þ*þ* FOLLOWING SUBROUTINE GETS THE FILE NAME AND ITEM IDS',þ* IF NOT ALREADY ENTERED.þ* ALSO STORES OPTIONS FROM INPUT BUFFER IN #1.þ*þ*þ[PROCLIB-S TCL-II-INIT]þ*þ* SAVE FILE NAME ENTEREDþ* DETERMINE IF THE DICT OF THE FILE IS BEING USEDþF-CLEAR &2þ&2.0 = %2:G0 1:þ&2.1 = %2:G1 99:þ*þF-OUTPUT &1 %2þ*þIF %3 # "*" GO 100þTERM "DO YOU WANT TO DELETE ALL ITEMS IN THE FILE (Y/N) "þIPF?%2þIF %2(1,1) # "Y" MV %1 1,_ þ*þ* LOOP TO DELETE ITEMS *þ*þ100 *þIFN %1 = 0 THEN þ %2 = !1þ ELSEþ %1 = %1 +1 ü %2 = %%1þ ENDþIF # %2 TERM "DONE",Lü GO 9999þ*þF-READ &1 %2 ELSEþ TERM "'",%2,"' NOT ON FILE",Lþ GO 100þ ENDþ*þ* CHECK FOR "D" ITEM IN DICTIONARY OF FILEþ*þIF &2.0 # "DICT" THENþ F-DELETE &1þ TERM "'",%2,"' DELETED",Lþ GO 100þ ENDþ*þIF &1.1(1,1) # "D" THENþ F-DELETE &1þ TERM "'",%2,"' DELETED",Lþ ELSEþ* þ TERM "'",%2,"' IS A FILE NAME - "þ IF %2 = "MD"ý"M/DICT"ý"DL/ID" THENþ TERM "FILE NOT DELETED",Lþ ELSEþ TERM "DO YOU WANT TO DELETE IT "þ IPF?#1þ IF #1 = "Y"ý"YES" THENþ* þ #1 = ":RPL-DEL DICT "*%2*" *"þ PHþ* þ #1 = "DELETE-FILE ("*%2*")"þ PHþ* FOR SAFETY, IN CASE NO DATA-LEVEL POINTER EXISTS: þ #1 = "DELETE-FILE (DICT "*%2*")"þ PHþ TERM "FILE '",%2,"' DELETED",Lþ ENDþ*þ ENDþ*þ ENDþ* þGO 100 þ*þ9999 *þRTNþÿIFB3þ17D38þ05C7COPYþPQþ* PROGRAM : (COPY) COPIES TO TERMINAL OR PRINTER ALL ATTRIBUTES OF A FILE AND ITEM LISTþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (AUG 28, 1984)þ*þ* THIS IS CALLED BY CATALOG ITEMS 'CT', 'CP'þ*þ* THIS PROGRAM CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO DISPLAY OR PRINT ALLþ* ATTRIBUTES FOR AN ITEM LIST WITHIN A FILE.þ*þ* IF CALLED EXTERNALLY, THE FOLLOWING DATA MUST BE AVAILþ* ------------------------------------------------------þ*þ* %1 - VERB 'CP' OR 'CT'þ* %2 - FILE NAMEþ* %3 TO %250 - ITEM LIST OR NULLþ*þ** INPUT BUFFERSþ*---------------þ*þ*þ*þ%1 = %1:MCU:þIF %1 # "CP"ý"CT" THENþ O INVALID CALL TO COPY PROGRAMþ GO 9999þENDþ*þ* SAVE VERBþ*þ&9.0 = %1þ*þ* CALL SUBROUTINE TO GET FILE NAME AND ITEM IDS'þ* IF NOT ALREADY ENTEREDþ*þ[PROCLIB-S TCL-II-INIT]þ*þ* IF THE %1 IS '2', ALL ITEM IDS' ARE IN %3 ON.þ* IF THE %1 IS '0', ALL ITEM IDS' ARE SELECT REGISTER 1.þ* LOAD THEM INTO THE OUTPUT BUFFER.þ*þIFN %1 = 2 THENþ MV #3 %3, *þELSEþ*þ %4 = 3þ100 *þ %3 = !1þ IF # %3 GO 200þ #%4 = %3þ %4 = %4 + 1þ GO 100þ200 *þENDþ*þIF &9.0 = "CP"ý"CT" GO 1000ý GO 2000þ*þ* COPY TO PRINTERþ1000 *þMV #1 "COPY",%2þH (P)þPþGO 9999þ*þ* COPY TO TERMINALþ2000 *þMV #1 "COPY",%2þSTONþH<þPþ*þTERM L, "END OF DISPLAY, ENTER RTN TO CONTINUE "þIPN%1þ*þ9999 *þRTNþÿIFB3þ17D38þLRPL-EDITOR.HOLDþÿRPL-EDITOR.HOLDþPQþ* Program : (RPL-EDITOR) Full Screen Program Editor For RPLþ* Bcp/Mcs Version : 6 (Copyright 1991 Systems Management, Inc.)þ* Client : Systems Management, Inc.þ* Language : RPL 102þ* Author : J. Robertsþ* Last Revised : 05 Feb 1991þ* Change Requests : Xþ* Last Modified : J. Roberts 24 May 1991 Version 1.1þ* : Fixed Delete bug when line over 1 screen long.þ* : Fixed Merge function adding null lines to end of item.þ* : Program now asks for file and item names if not on commnad line.þ* : Program now uses internal driver for Hilightingþ*þ* Hilights Are Equated þ*þ+EQ .REV &0.163þ+EQ .NOR &0.165þ*þ* Input Buffers Usageþ*þ* %1 = Pointer First Line Of Next Pageþ* %2 = Edit/Insert Flagþ* %3 = Current Attribute Being Editedþ* %4 = For Next Loop Counterþ* %5 = Current Cursor Colþ* %6 = Current Cursor Rowþ* %7 = Sequence Of Entered Charþ* %8 = Entered Charþ* %9 = Max Attributeþ* %10 = Extracted Attribute From Fileþ* %11 = Length Of Attribute + 1þ* %12 = Pointer To Current Character In Listþ* %13 = Max Character Position On Current Screenþ* %14 = Min Character Position On Current Screenþ* %15 = Saved Characters From Rest Of Line When Going To Insert Mode. þ* %16 = Workþ* %17 = Workþ* %18 = Current String To Find (This Is Not Cleared Between Uses.)þ* %19 = Current String To Replace (This Is Not Cleared Between Uses.)þ* %20 = Number Of Rows On Screenþ* %21 = Rows - 1þ* %22 = Rows - 2þ* %23 = Rows - 3þ* %24 = Number Of Columns On Screenþ* %25 = Columns - 5þ* %26 = Columns - 4þ* %27 = Last Merge File Nameþ* %28 = Last Merge Item Nameþ* %29 = Last Merge Starting Lineþ* %30 = Last Merge Ending Lineþ* %31 = Last Deleted Character, Word, Or Lineþ* %32 = First Marked Lineþ* %33 = Last Marked Lineþ* %34 = Search Only Flagþ* %35 = Used By Copy Commandþ* %36 = Used By Copy Commandþ* %37 = Keyboard Error Counterþ*þ* Clear Everythingþ*þSTOFFþROþ*þ* Read Keystrokes For Portþ*þF-INPUT &0 DICT "PROCLIB-S"þF-READ &0 "KEYSTROKES."*$3 ELSEþ F-READ &0 "KEYSTROKES.DEFAULT"þ [PROCLIB-S RPL-CMD]þ &0.0 = "KEYSTROKES."*$3þENDþIF %2 = "DICT" THENþ %2 = %2*" "*%3þ MV %3 %4,*þENDþIF # %2 GOSUB 8800þIF # %3 GOSUB 8810þF-OUTPUT &1 %2 ELSEþ TERM L,"Can not open ",%2," Invalid file name.",L,Bþ GO 9999þENDþTERM CþF-READ &1 %3þNOPþRIþ*þ* Get Terminal Characteristicsþ*þ%20 = $16:G1,1:þ%21 = %20 - 1þ%22 = %20 - 2þ%23 = %20 - 3þ%24 = $16:G0,1:þ%25 = %24 - 5þ%26 = %24 - 4þ*þ* Set Initial Variablesþ*þ%1 = 1þ%2 = "Edit "þ%3 = 1þ%5 = 5þ%6 = 0þACOUNT %9 &1.1þIFN %9 = 0 %2 = "Insert "þ%12 = 1þ%13 = 1 + %25þ%14 = 1þ%37 = 0þ*þ* Display Bottom Lineþ*þGOSUB 6010þIF %2 = "Insert " THENþ %9 = 1þ %1 = %20 + 1þ TERM (0,0),"0000"*%3:T4:þ GO 500þENDþGOSUB 1030þGOSUB 6000þ*þ20 * Edit Modeþ*þGOSUB 1000þ*þ* Parse Entryþ*þIF # &0.%7 THENþ %37 = %37 + 1þ IFN %37 > 2 THENþ [PROCLIB-S RPL-CMD]þ GOSUB 6200þ GOSUB 6010þ %37 = 0þ ENDþELSEþ %37 = 0þENDþIFN &0.%7 = 1ý2ý3ý4ý5ý6ý7ý8ý9ý10ý11ý12ý13ý14 GO 100ýGO 110ýGO 120ýGO 130ýGO 140ýGO 150ýGO 160ýGO 170ýGO 180ýGO 190ýGO 200ýGO 210ýGO 220ýGO 230þIFN &0.%7 = 15ý17ý20ý21ý22ý23ý24ý25ý26ý27ý28ý29 GO 7000ýGO 270ýGO 300ýGO 310ýGO 320ýGO 330ýGO 340ýGO 350ýGO 360ýGO 370ýGO 360ýGO 330þIFN &0.%7 = 30ý31ý32 GO 380ýGO 8000ýGO 7500þIFN &0.%7 = 18ý19 GO 400ýGO 390þGO 20þ*þ100 * Backward One Wordþ*þ%12 = %12 - 1þ*þ105 * Re-Entry Pointþ*þIFN %12 > 1 IF %10(%12,1) = ' 'ý','ý'.'ý'('ý')' GO 100þIF %12 < 1 THENþ GOSUB 1010þ %12 = %11þELSEþ IF %12 # 1 THENþ %12 = %12 - 1þ IF %10(%12,1) # ' 'ý','ý'.'ý'('ý')' GO 105þ %12 = %12 + 1þ ELSEþ IF %10(%12,1) = ' 'ý','ý'.'ý'('ý')' GO 100þ ENDþENDþ%5 = 5 + (%12 - %14)þGO 20þ*þ110 * Return Key Hitþ*þIFN %12 > 1 THENþ %5 = 5þ %12 = 1þELSEþ GOSUB 1020þENDþGO 20þ*þ120 * Bottom Of Textþ*þ%3 = %9þIFN %9 <= %21 THENþ %6 = %9 - 1þELSEþ %1 = (%9 / %21) X %21þ %6 = (%9 R %21) þ GOSUB 6000þENDþGOSUB 1030þ%12 = %11þ%5 = 5 + (%12 - %14)þGO 20þ*þ130 * Character Leftþ*þ%12 = %12 - 1þ%5 = %5 - 1þIFN %12 < 1 THENþ GOSUB 1010þ STC %11 %10þ %12 = %11 + 1þ %5 = %12 + 4þENDþGO 20þ*þ140 * Character Rightþ*þ%5 = %5 + 1þ%12 = %12 + 1þIFN %12 > %11 THENþ GOSUB 1020þ %5 = 5þ %12 = 1þENDþGO 20þ*þ150 * Down One Lineþ*þGOSUB 1020þGO 20þ*þ160 * End Of Lineþ*þIFN %12 = %11 GOSUB 1020þ%12 = %11þ%5 = %12 + 4þGO 20þ*þ170 * Forward One Wordþ*þ%12 = %12 + 1þIFN %12 < %11 IF %10(%12,1) # ' 'ý','ý'.'ý'('ý')'ý'"'ý"'" GO 170þIFN %12 >= %11 THENþ GOSUB 1020þ %12 = 1þ %5 = 5þ IF %10(%12,1) = ' 'ý','ý'.'ý'('ý')'ý'"'ý"'" GO 170þELSEþ*þ175 * Skip Special Charsþ*þ IF %10(%12,1) = ' 'ý','ý'.'ý'('ý')'ý'"'ý"'" THENþ %12 = %12 + 1þ GO 175þ ENDþ %5 = 5 + (%12 - %14)þENDþGO 20þ*þ180 * Go To Lineþ*þIF &0.160 = "YES" THENþ TERM (0,%21),(-4),"Line Number"þELSEþ TERM (0,%21),(-4),.REV,"Line Number",.NORþENDþ%16 = ''þEIPN(14,%21),%16,N5þ*þ185 * Entered Here From Cut/Copy/Move Menuþ*þ%16 = %16:MCN:þIFN %16 >= %9 GO 120þIFN %16 # 0 THENþ %1 = %16 - 3þ %3 = %16þ %6 = 3þ %12 = 1þ %5 = 5þ IFN %16 < 3 %6 = %16 - 1þ GOSUB 1030þ GOSUB 6000þENDþE*KþE[KþGOSUB 6010þGO 20 þ*þ190 * Home Cursorþ*þ%3 = %1 - %21þ%12 = 1þ%5 = 5þ%6 = 0þGOSUB 1030þGO 20þ*þ200 * Page Downþ*þIFN %6 < %22 THENþ FOR %4 = %6 TO %23þ %3 = %3 + 1þ %6 = %6 + 1þ IFN %3 > %9 THENþ %3 = %3 - 1þ %6 = %6 - 1þ %4 = %21þ ENDþ NEXT %4þELSEþ %3 = %1þ GOSUB 6000þ %6 = 0þENDþGOSUB 1030þ%12 = 1þ%5 = 5þGO 20þ*þ210 * Up A Pageþ*þIFN %6 > 0 THENþ FOR %4 = %6 TO 1 STEP -1þ %3 = %3 - 1þ %6 = %6 - 1þ IF %3 = 1 %4 = 1þ NEXT %4þELSEþ IFN %3 = 1 THENþ GO 20þ ELSEþ %1 = %1 - (%21 X 2)þ %3 = %3 - 1þ IFN %1 < 1 THENþ %1 = 1þ %3 = 1þ %6 = 0þ ELSEþ %6 = %22þ ENDþ GOSUB 6000þ ENDþENDþGOSUB 1030þ%12 = 1þ%5 = 5þGO 20þ*þ220 * Top Of Textþ*þIF %3 = 1 THENþ IF %12 = 1 GO 20þ %12 = 1þ %5 = 5þ GO 20þENDþ%1 = 1þ%3 = 1þ%5 = 5þ%6 = 0þ%12 = 1þ%13 = 1 + %25þ%14 = 1þGOSUB 6000þGOSUB 1030þGO 20þ*þ230 * Up One Lineþ*þGOSUB 1010þGO 20þ*þ270 * Change Case Of Letterþ*þ%16 = %12 - 1þ%10 = &1.%3(1,%16)þ%8 = &1.%3(%12,1)þIF %8 > "Z" THENþ %8 = %8:MCU:þELSEþ %8 = %8:MCL:þENDþ%16 = %12 + 1þ&1.%3 = &1.%3(%16,)þ&1.%3 = %10*%8*&1.%3þTERM (%5,%6),%8þ%5 = %5 + 1þ%12 = %12 + 1þGOSUB 1030þGO 20þ*þ300 * Delete Letter Under Cursorþ*þ%31 = &1.%3(%12,1)þIF %12 # %11 THENþ %16 = %12 - 1þ %10 = &1.%3(1,%16)þ %16 = %12 + 1þ &1.%3 = &1.%3(%16,)þ &1.%3 = %10*&1.%3þELSEþ %16 = %3 + 1þ %17 = %16 + 1þ &1.%3 = &1.%3*&1.%16þ MV &1.%16 &1.%17,* þ %9 = %9 - 1þ GOSUB 2000þENDþGOSUB 1030þTERM (0,%6),(-4),(0),'0000'*%3:T4:,(5),&1.%3(%14,%26)þIFN &0.%7 = 29 GO 360þGO 20þ*þ310 * Delete A Lineþ*þ%9 = %9 - 1þIFN %9 < 1 %9 = 1þ%31 = &1.%3þIFN %3 > %9 THENþ &1.%3 = ""þ TERM (0,%6),(-3)þ GOSUB 6010þ GOSUB 1010 þELSEþ %16 = %3 + 1þ MV &1.%3 &1.%16,*þ GOSUB 2000þ GOSUB 1030þENDþIFN %12 > %11 %12 = %11þGO 20þ*þ320 * Erase To End Of Lineþ*þ%16 = %12 - 1þ%31 = &1.%3(%12,)þ&1.%3 = &1.%3(1,%16)þTERM (%5,%6),(-4)þGOSUB 1030þGO 20þ*þ330 * Delete/Replace A Wordþ*þIF %10(%12,1) = ""ý" " GO 300þ%16 = %12 - 1þ%10 = &1.%3(1,%16)þFOR %4 = %12 TO %11þ IF &1.%3(%4,1) = ''ý' 'ý','ý'.'ý'('ý')'ý'"'ý"'" THENþ %31 = %4 - %12þ %31 = &1.%3(%12,%31)þ &1.%3 = &1.%3(%4,)þ &1.%3 = %10*&1.%3þ GOSUB 2000þ GOSUB 1030þ IFN &0.%7 = 29 GO 360þ GO 20þ ENDþNEXT %4þ%31 = &1.%3(%12,)þ&1.%3 = %10þGOSUB 2000þGOSUB 1030þGO 20þ*þ340 * Insert A Lineþ*þ%9 = %9 + 1þ%16 = %3 + 1þMV &1.%16 "",&1.%16,*þGOSUB 2000þGOSUB 1020þ%12 = 1þ%5 = 5þGO 360þ*þ350 * Insert A Spaceþ*þ%16 = %12 - 1þ&1.%3 = %10(1,%16)*' 'þ%10 = %10(%12,)þ&1.%3 = &1.%3*%10þGOSUB 1030þ%16 = %24 - %5þTERM (%5,%6),%10(%12,%16)þGO 20þ*þ360 * Insert Modeþ*þ%16 = %12 - 1þ%15 = %10(%12,)þ%10 = %10(1,%16)þIFN &0.%7 = 28 THENþ %2 = "Replace"þELSEþ %2 = "Insert "þENDþGOSUB 6010þGO 500þ*þ370 * Quit Modeþ*þIF &0.160 = "YES" THENþ TERM (0,%21)," Enter: F - to file S - to save X - to exit or D - to delete "þELSEþ TERM (0,%21),(-4),.REV," Enter: F - to file S - to save X - to exit or D - to delete ",.NORþENDþ%16 = ""þTERM (63,%21)þGOSUB 1005þ%16 = %8:MCU:þIF %16 # "F"ý"X"ý"D" THENþ IF %16 = "S" F-WRITE &1þ GOSUB 6010þ GO 20þENDþIF %16 = "F" THENþ TERM L,L,'"',&1.0,'"'," Filed."þ F-WRITE &1þELSEþ IF &0.160 = "YES" THENþ TERM (0,%21),B,(-4),"Enter Y to Confirm"þ ELSEþ TERM (0,%21),B,(-4),.REV,"Enter Y To Confirm",.NORþ ENDþ GOSUB 1005þ IF %8 = "Y"ý"y" THENþ IF %16 = "D" THENþ F-DELETE &1þ TERM L,L,'"',&1.0,'"'," Deleted"þ ELSEþ TERM L,L,'"',&1.0,'"'," Exited" þ ENDþ ELSEþ GOSUB 6010þ GO 20þ ENDþENDþGO 9999þ*þ380 * Refresh Screenþ*þGOSUB 6200þGO 20þ*þ390 * Undo Last Deleteþ*þIF # %31 GO 20þ%16 = %12 - 1þ&1.%3 = %10(%12,)þ%10 = %10(1,%16)þ&1.%3 = %10*%31*&1.%3þGOSUB 2000þGOSUB 1030þGO 20þ*þ400 * Display/Change Edit Keysþ*þ[PROCLIB-S RPL-CMD]þGOSUB 6200þGOSUB 6010þGO 20þ*þ500 * Insert Modeþ*þGOSUB 1000þ*þ* Parse Key Enteredþ*þIFN %7 = 29 THENþ %8 = "ý"þ GO 501þENDþIF %7 = 28 THENþ %8 = "ü"þ GO 501þENDþIF %7 = 8 GO 508þIF %7 = 9 GO 509þIF %7 = 13 GO 513þIFN %7 = 27 GO 527þIFN %7 < 32 GO 500þIFN %7 > 127 GO 500þ*þ501 * Good Character Hitþ*þ%10 = %10*%8þ&1.%3 = %10þ%16 = %24 - %5þIF %2 = "Replace" THENþ %15 = %15(2,)þ TERM (%5,%6),%8þELSEþ TERM (%5,%6),%8*%15(1,%16)þENDþ%5 = %5 + 1þ%12 = %12 + 1þIF %2 = "Replace" THENþ IFN %12 > %11 THENþ %2 = "Insert "þ GOSUB 6010þ ENDþENDþGO 500þ*þ508 * Backspace Entered.þ*þIFN %12 = 1 GO 500þ%5 = %5 - 1þ%12 = %12 - 1þ%16 = %12 - 1þ%10 = %10(1,%16)þ&1.%3 = %10*%15þ%16 = %24 - %5þTERM (%5,%6),%15(1,%16),(-4)þGO 500þ*þ509 * Tab Enteredþ*þ%8 = " "þ%16 = 5 - (%12 R 5)þIFN %16 = 0 %16 = 5þ%12 = %12 + %16þ%8 = %8(1,%16)þ%10 = %10*%8þ&1.%3 = %10þ%16 = %24 - %5 - %16þTERM (%5,%6),%8*%15(1,%16)þ%5 = 5 + (%12 - %14)þGO 500þ*þ513 * Return Entered.þ*þIF %2 = "Replace" GO 527þ&1.%3 = %10þ%9 = %9 + 1þIF %15 THENþ %3 = %3 + 1þ MV &1.%3 %15,&1.%3,*þ %3 = %3 - 1þELSEþ %3 = %3 + 1þ MV &1.%3 "",&1.%3,*þ %3 = %3 - 1þENDþIFN %6 < %21 GOSUB 2000þGOSUB 1020þ%12 = 1þ%5 = 5þ%10 = ''þ%15 = &1.%3þTERM (0,%6),'0000'*%3:T4:þGO 500þ*þ527 * Escape Hit Exit Edit Modeþ*þ&1.%3 = %10*%15þ%2 = "Edit "þGOSUB 6010þGOSUB 1030þGO 20þ*þ1000 * Subroutine To Get Next Charþ*þIFN %12 < %14 GOSUB 1040þIFN %12 > %13 GOSUB 1050þTERM (%5,%6)þ*þ1005 * Get Char Without Cursor Positionþ*þ%7 = %7:U31A5:þ%8 = %7:G1*1:þ%7 = %7:G0*1:þIF %7 = 42 %8 = "*"þRSUBþ*þ1010 * Go Up One Lineþ*þ%3 = %3 - 1þIFN %3 < 1 THENþ %3 = %3 + 1þELSEþ %6 = %6 - 1þ GOSUB 1030þ IFN %6 < 0 THENþ %1 = %1 - %20þ %6 = 0þ GOSUB 6000þ ENDþENDþRSUBþ*þ1020 * Down One Lineþ*þ%3 = %3 + 1þIFN %3 > %9 THENþ %3 = %3 - 1þELSEþ %6 = %6 + 1þ GOSUB 1030þ IFN %6 > %22 THENþ %1 = %1 + 1þ TERM (0,%21),(-4),(%24,%21)," "þ %6 = %22þ TERM (0,%6),"0000"*%3:T4:,(5),&1.%3(%14,%26),(-4)þ GOSUB 6010þ ENDþENDþRSUBþ*þ1030 * Extract A Lineþ*þ%10 = &1.%3þSTC %11 %10þ%11 = %11 + 1þIFN %12 > %11 THENþ %12 = %11þ %5 = 5 + (%11 - %14)þENDþRSUBþ*þ1040 * Move Window Leftþ*þ%14 = %14 - 40þIFN %12 < %14 GO 1040þ%1 = %1 - %21þGOSUB 6000þ%5 = %12 - %14 + 5þ%13 = %14 + %25þRSUBþ*þ*þ1050 * Move Window Rightþ*þ%14 = %14 + 40þ%13 = %14 + %25þIFN %12 > %13 GO 1050þ%1 = %1 - %21þGOSUB 6000þ%5 = %12 - %14 + 5þRSUBþ*þ2000 * Display Rest Of Page On Return Entered Insert Modeþ*þIFN %6 > %22 RSUBþ%16 = %3þFOR %4 = %6 TO %22þ IFN %16 <= %9 THENþ TERM (0,%4),(-4),(0),"0000"*%16:T4:,(5),&1.%16(%14,%26),(-4)þ ELSEþ TERM (0,%4),(-4)þ ENDþ %16 = %16 + 1þNEXT %4þRSUBþ*þ6000 * Subroutine To Display A Pageþ*þIFN %1 < 1 %1 = 1þFOR %4 = 0 TO %22þ IFN %1 <= %9 THENþ TERM (0,%4),(0),"0000"*%1:T4:," ",(5),&1.%1(%14,%26),(-4)þ ELSEþ TERM (0,%4),(-4)þ ENDþ %1 = %1 + 1þNEXT %4þGOSUB 6010þRSUBþ*þ6010 * Display Bottom Lineþ*þIF &0.160 = "YES" THENþ TERM (0,%21),(-4),(4),"RPL-Editor 1.1 Item: ",&1.0,(60),%2þELSEþ TERM (0,%21),.REV,(-4),(4),"RPL-Editor 1.1 Item: ",&1.0,(60),%2,(%25),.NORþENDþRSUBþ*þ6100 * Clear Window In Middle Of Screen For Prompting * new for rev 1.1þ*þIF &0.160 # "YES" THENþ IF &0.161 = "YES" THENþ %16 = 58þ ELSEþ %16 = 60þ ENDþ TERM (73,6),.NOR,(9,5),.REV,S62,.NORþ FOR %4 = 6 TO 16þ TERM (73,%4),.NOR,(11),.NOR,(9,%4),.REV," ",.NOR,S%16,.REV," ",.NORþ NEXT %4þ TERM (73,17),.NOR,(9,17),.REV,S62,.NORþELSEþ TERM (10,5),"+",*-58,"+"þ FOR %207 = 6 TO 16þ TERM (10,%207),"|",S58,"|"þ NEXT %207þ TERM (10,17),"+",*-58,"+"þENDþRSUBþ*þ6200 * Redisplay Screenþ*þ%1 = %1 - %21þGOSUB 6000þRSUBþ*þ7000 * Search And Replace Functionsþ*þ%34 = "NO"þ%35 = "NO"þ%36 = 0þGOSUB 6100þTERM (26,6),"Search & Replace from line ",%3:MD0 4 :,þ (12,8),"1. Search String:",þ (12,9),%18,þ (12,10),"2. Replace String With",þ (12,11),%19,þ (12,13),"3. Replace String",(30),%34,þ (12,14),"4. Global Replace",(30),%35,þ (12,16),"Enter #, * to cancel, (RTN) to locate"þ*þ* If Already A Search String Then Go Change Lineþ*þIF %18 GO 7050þ*þ7010 * Search Stringþ*þEIPN(12,9),%18,X55þGO 7050þ*þ7020 * Replace Stringþ*þEIPN(12,11),%19,X55þGO 7050þ*þ7030 * Search Only Flag (Toggle)þ*þIF %34 = "YES" THENþ %34 = "NO"þ %35 = "NO"þELSEþ %34 = "YES"þ %35 = "NO"þENDþTERM (30,13),S3,(30),%34,þ (30,14),S3,(30),%35þGO 7050þ*þ7040 * Toggle Global Replaceþ*þIF %34 = "YES" THENþ IF %35 = "YES" THENþ %35 = "NO"þ ELSEþ %35 = "YES"þ ENDþENDþTERM (30,14),S3,(30),%35þGO 7050þ*þ7050 * Change Lineþ*þTERM (58,16)þGOSUB 1005þIFN %8 = 1ý2ý3ý4 GO 7010ýGO 7020ýGO 7030ýGO 7040þ*þ* Check For Exit Without Changeþ*þIFN %7 = 27ý42 THENþ GOSUB 6200þ GO 20þENDþ*þ* Any Other Key But Return Beep And Try Againþ*þIF %7 # 13 THENþ TERM Bþ GO 7050þENDþIF %18 = "" THENþ GOSUB 6200þ GO 20þENDþ*þ7060 * Check Current Line Firstþ*þ%17 = %12 + 1þ%17 = %10(%17,)þSTL %16 %17,%18þIF %34 = "NO" THENþ IF %16 THENþ MVE %16 %16,1þ %16 = %16 + %12þ %4 = %3þ GO 7100þ ENDþELSEþ IF %35 = "YES" THENþ IF %16 THENþ &1.%3 = %10(1,%12)þ STR %17 %17,%18,%19,1þ &1.%3 = &1.%3*%17þ MVC %17 %16þ %36 = %36 + %17þ ENDþ ELSEþ IF %16 THENþ MVE %16 %16,1þ %16 = %16 + %12þ %4 = %3þ GO 7200þ ENDþ ENDþENDþ*þ* Search Rest Of Fileþ*þIF %34*%35 = 'NONO'ý'YESYES' TERM (12,16),S55,(12),"Searching....."þ%17 = %3 + 1þFOR %4 = %17 TO %9þ IF %34*%35 = 'NONO'ý'YESYES' TERM (27,16),%4:MD0 4 :þ STL %16 &1.%4,%18þ IF %16 THENþ IF %34 = "NO" THENþ GOSUB 7100þ ELSEþ IF %35 = "YES" THENþ STR &1.%4 &1.%4,%18,%19,1þ MVC %8 %16þ %36 = %36 + %8þ ELSEþ GO 7200þ ENDþ ENDþ ENDþNEXT %4þ*þ* No String Foundþ*þIF %34 = "YES" THENþ IF %35 = "YES" THENþ TERM (12,16)þ ELSEþ TERM (0,%21),(-4),(0)þ ENDþ TERM %36," changes made... Press any key to continue",BþELSEþ TERM (12,16),"Could not find string... Press any key to continue",BþENDþGOSUB 1005þGOSUB 6200þGOSUB 6010þGO 20þ*þ7100 * Move To Located Stringþ*þMVE %17 %16,1þ%1 = %4 - 3þ%3 = %4þGOSUB 1030þGOSUB 6000þIFN %3 < 4 THENþ %6 = %3 - 1þELSEþ %6 = 3þENDþ%12 = %17þ%5 = 5 + (%12 - %14)þGO 20þ*þ7200 * Replace Not Globalþ*þMVE %17 %16,1þ%1 = %4 - 3þ%3 = %4þGOSUB 1030þGOSUB 6000þIFN %3 < 4 THENþ %6 = %3 - 1þELSEþ %6 = 3þENDþ%12 = %17þ%5 = 5 + (%12 - %14)þIF &0.160 = "YES" THENþ TERM (0,%21),(-4),"Enter :R - Replace, S - Skip, or Q - quit",BþELSEþ TERM (0,%21),(-4),.REV,"Enter :R - Replace, S - Skip, or Q - quit",B,.NORþENDþ*þ7210 * Wait For Inputþ*þGOSUB 1000þ*þ* Escape Exitþ*þIF %7 = 27ý42 THENþ GOSUB 6200þ GOSUB 6010þ GO 20þENDþ*þ* Quit Exitþ*þIF %8 = 'Q'ý'q' THENþ GOSUB 6200þ GOSUB 6010þ GO 20þENDþ*þ* Skip This Oneþ*þIF %8 = 'S'ý's' THENþ GO 7060þENDþIF %8 = 'R'ý'r' THENþ %17 = %12 - 1þ &1.%3 = &1.%3(%12,)þ %10 = %10(1,%17)þ STR &1.%3 &1.%3,%18,%19,0þ STC %17 %19þ %12 = %12 + %17 - 1þ &1.%3 = %10*&1.%3þ %36 = %36 + 1þ GOSUB 1030þ GO 7060þENDþGO 7210þRSUBþ*þ7500 * Cut/Copy/Moveþ*þMV %32 '',''þGOSUB 6100þTERM (26,6),"--Cut/Copy/Move Text--",þ (15,8),"1. Cut Text - Deletes text",þ (15,9),"2. Copy Text - Save original and duplicates",þ (15,10),"3. Move Text - Copies to new, deletes original",þ (15,16),"Enter Choice"þ*þ7510 * Get Choiceþ*þTERM (31,16)þGOSUB 1005þIFN %7 = 13ý27ý42 GO 7599þIFN %8 = 1ý2ý3 THENþ GOSUB 6100þ IFN %8 = 1ý2ý3 GO 7600ýGO 7700ýGO 7800þENDþGO 7510þ*þ7599 * Done With Cut/Copy/Move þ*þMV %32 "",""þGOSUB 6200þGO 20þ*þ7600 * Cut Textþ*þE*,GO 7699þE[,GO 7699þTERM (26,6),"--------Cut Text-------",þ (15,8),"First Line of Cut",þ (15,9)," Last Line of Cut",þ (15,16),"(C)hange, (ESC), (RTN) to Cut"þ*þ7610 * Where Are The Cuts?þ*þEIPN(35,8),%32,N4þIF # %32 GO 7699þEIPN(35,9),%33,N4þIF # %33 THENþ %33 = %32þ TERM (35,9),%33:MD0 4 :þENDþIFN %33 > %9 THENþ %33 = %9þ TERM (35,9),%33:MD0 4 :þENDþIFN %33 < %32 THENþ TERM E,"Last line of cut must be greater than first line"þ GO 7610þENDþ*þ7620 * Cut Change Lineþ*þTERM (45,16)þGOSUB 1005þIFN %7 = 27ý42 GO 7699þIF # %32 GO 7699þIF %8 = 'C'ý'c' GO 7610þIF %7 # 13 GO 7620þ*þ* Call Cut Routineþ*þGOSUB 7900þ%9 = %9 - (%33 - %32)þ%16 = %32þIF %16 >= %9 %16 = %9 - 1þE*KþE^KþGO 185þ*þ7699 * End Of Cut Routineþ*þE*KþE[KþGO 7500þ*þ7700 * Copy Textþ*þE*,GO 7699þE[,GO 7699þTERM (26,6),"--------Copy Text-------",þ (15,8),"First Line Of Copy",þ (15,9)," Last Line Of Copy",þ (15,10)," Insert After Line",þ (15,16),"(C)hange, (ESC), (RTN) to Cut"þ*þ7710 * Get Data For Copyþ*þEIPN(35,8),%32,N4þIF # %32 GO 7699þEIPN(35,9),%33,N4þIF # %33 THENþ %33 = %32þ TERM (35,9),%33:MD0 4 :þENDþIFN %33 > %9 THENþ %33 = %9þ TERM (35,9),%33:MD0 4 :þENDþIFN %33 < %32 THENþ TERM E,"Last line of copy must be greater than first line"þ GO 7710þENDþ%17 = ''þEIPN(35,10),%17,N4þIFN %17 < 0 %17 = 0þIFN %17 > %9 %17 = %9þTERM (35,10),%17:MD0 4 :þ*þ7720 * Copy Change Lineþ*þTERM (45,16)þGOSUB 1005þIFN %7 = 27ý42 GO 7699þIF %8 = 'C'ý'c' GO 7710þIFN %7 # 13 GO 7720þF-CLEAR &2þF-CLEAR &3þ%17 = %17 + 1þ%16 = 1þ*þ* Save Off Data To Be Copiedþ*þFOR %4 = %32 TO %33þ &2.%16 = &1.%4þ %16 = %16 + 1þNEXT %4þGOSUB 7910þF-CLEAR &2þF-CLEAR &3þ%9 = %9 + ((%33 + 1) - %32)þ%16 = %17þIFN %16 >= %9 %16 = %9 - 1þGO 185þ*þ7800 * Move Textþ*þE*,GO 7699þE[,GO 7699þTERM (26,6),"--------Move Text-------",þ (15,8),"First Line Of Move",þ (15,9)," Last Line Of Move",þ (15,10)," Insert After Line",þ (15,16),"(C)hange, (ESC), (RTN) to Cut"þ*þ7810 * Get Move Linesþ*þEIPN(35,8),%32,N4þIF # %32 GO 7699þEIPN(35,9),%33,N4þIF # %33 THENþ %33 = %32þ TERM (35,9),%33:MD0 4 :þENDþIFN %33 > %9 THENþ %33 = %9þ TERM (35,9),%33:MD0 4 :þENDþIFN %33 < %32 THENþ TERM E,"Last line for move must be greater than first line"þ GO 7810þENDþ%17 = ''þEIPN(35,10),%17,N4þIFN %17 < 0 %17 = 0þIFN %17 > %9 %17 = %9þTERM (35,10),%17:MD0 4 :þIFN %17 >= %32 THENþ IFN %17 < %33 THENþ TERM E,"Can not move to middle of cut"þ GO 7810þ ENDþENDþ*þ7820 * Move Text Change Lineþ*þTERM (45,16)þGOSUB 1005þIFN %7 = 27ý42 GO 7699þIF %8 = 'C'ý'c' GO 7810þIFN %7 # 13 GO 7820þF-CLEAR &2þ*þ* First Save Off Data To Be Cutþ*þ%16 = 1þFOR %4 = %32 TO %33þ &2.%16 = &1.%4þ %16 = %16 + 1þNEXT %4þ*þIF %17 < %32 THENþ GOSUB 7900þ %17 = %17 + 1þ GOSUB 7910þELSEþ %17 = %17 + 1þ GOSUB 7910þ GOSUB 7900þENDþ* þ* Back From Subroutines Now Display Where Cust Was Enteredþ*þ%16 = %17 - 1þIFN %16 >= %9 %16 = %16 - 1þGO 185þ*þ7900 * Cut Routineþ*þ%33 = %33 + 1þMV &1.%32 &1.%33,*þRSUBþ*þ7910 * Subroutine To Copy Or Move Data þ*þMV &3.1 &1.%17,*þMV &1.%17 _þMV &1.%17 &2.1,*þ*þ* Now Add Back Remainingþ*þACOUNT %16 &1.0þMV &1.%16 &3.1,*þRSUBþ*þ8000 * Merge Functionþ*þE*,GO 8040þGOSUB 6100þTERM (26,6),"----- Merge Files -----",þ (12,7),"Merge from file:",þ (12,8),%27,þ (12,10),"Merge from item: ",þ (12,11),%28,þ (12,13),"Starting Line : ",%29:MD0 4 :,(38)," (RTN) for first line",þ (12,14),"Ending Line : ",%30:MD0 4 :,(38)," (RTN) for last line",þ (12,16),"(C)hange, * to exit, (RTN) to merge"þIF %27*%28*%29*%30 GO 8030þ*þ8010 * Get File Name To Copy Fromþ*þIF # %27 THENþ MVE %27 $21,2þ %27 = %27:G0 1:þENDþEIPN(12,8),%27,X50þIF # %27 GO 8040þ*þ* Read For Fileþ*þF-INPUT &2 %27 ELSEþ TERM E,"File does not exist"þ GO 8010þENDþ*þ8020 * Merge Itemþ*þIF # %28 %28 = &1.0þEIPN(12,11),%28,X50þIF # %28 GO 8040þF-READ &2 %28 ELSEþ TERM E,"Item ",%28," not of file"þ GO 8020þENDþACOUNT %17 &2.1þ*þ* Get First Lineþ*þEIPN(28,13),%29,N4þIFN %29 = 0 THENþ %29 = 1þ TERM (28,13),%29:MD0 4 :þENDþ*þ* Get Last Lineþ*þEIPN(28,14),%30,N4þIFN %30 = 0 %30 = %17þIFN %17 < %30 %30 = %17þTERM (28,14),%30:MD0 4 :þ*þ8030 * Merge Change Lineþ*þTERM (57,16)þGOSUB 1005þIF %8 = "C"ý"c" GO 8010þIF %8 = "*" GO 8040þIFN %7 # 13 GO 8030þ*þ* Merge It Inþ*þ%3 = %3 + 1þ%30 = %30 + 1þMV &2.%30 &1.%3,*þMV &2.0 &2.%29,*þMV &1.%3 &2.0,*þ%3 = %3 - 1þF-CLEAR &2þ%30 = %30 - 1þACOUNT %9 &1.1þ*þ8040 * Reset Bottom Lineþ*þGOSUB 6200þGOSUB 6010þGO 20þ*þ8800 * Get File Nameþ*þTERM "Filename? "þIPN%2þIF # %2 THENþ KSUBþ GO 9999þENDþRSUBþ*þ8810 * Get Item Nameþ*þTERM "Itemname? "þIPN%3þIF # %3 THENþ KSUBþ GO 9999þENDþRSUBþ*þ9999 * End Of Processþ*þRTNþÿIFB3þ17D39þLLISTþÿlistþPQþ* PROGRAM : (LIST) VARIOUS LISTS OF ITEMS IN MD OR FILE TO PRINTER OR TERMINALþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (DEC 28, 1984)þ*þ* THIS IS CALLED BY CATALOG ITEMS 'LISTRPL', 'LISTCONN', 'LISTF',þ* 'LISTFILES', 'LISTVERBS', 'LISTMDPROCS', 'LISTDICTS',þ* 'LISTDICT', 'LISTMDRPL'þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO LIST VARIOUS DATAþ* IN A FILE TO THE PRINTER OR TERMINALþ* (MAINLY THE M/DICT OF AN ACCOUNT):þ* 1) LIST ALL DATA AND PROGRAM FILES AND Q-POINTERSþ* 2) LIST ALL VERBS AND CATALOG ITEMSþ* 3) LIST ALL CONNECTIVES IN THE M/DICTþ* 4) LIST ALL CATALOG ITEMS IN THE M/DICTþ* 5) LIST ALL DICTIONARIES WITH MORE THAN ONE DATA SECTIONþ* 6) LIST ALL DICTIONARY ITEMSþ* 7) LIST ALL RPL PROGRAM FILESþ*þ*þ** INPUT BUFFERSþ*---------------þ*þ* %1 - VERBþ* %2 - FILE NAME (IF NULL, M/DICT IS ASSUMED)þ* %3 - OPTIONþ* %4 - OPTIONþ* %5 - OPTIONþ* %6 - WORK - LPTR OPTIONþ* %7 - HOLD A AND Q OPTIONSþ* %10 - A OPTION FLAGþ*þ*þ* UPPERCASE ALL ENTRIES [JR 01-03-90]þ*þ%1 = %1:MCU:þ%2 = %2:MCU:þ%3 = %3:MCU:þ%4 = %4:MCU:þ%6 = %5:MCU:þIF %2 = ''ý 'LPTR'ý 'A'ý 'Q'ý 'NOPAGE' MV %2 'MD', %2, %3, %4þ*þ* LINEPRINTER?þ*þIF %3 = 'LPTR'ý 'NOPAGE' %6 = %3ü %3 = ''þIF %4 = 'LPTR'ý 'NOPAGE' %6 = %4ü %4 = ''þIF %5 = 'LPTR'ý 'NOPAGE' %6 = %5ü %5 = ''þSTOFFþROþMV #1 "SORT DICT",%2þ*þ*þIF %1 = 'LISTF' %1 = 'LISTFILES'þIF %1(5,5) # 'FILES' GO 1000þ*þ* LISTFILESþ*þ* LISTS ALL FILES (D/CODE = D,DC,Q,DX,DY,DZ)þ* ALSO LISTS DATA LEVEL POINTER'S BASE/MOD/SEP ( DL/ID OR FILE-NAME)þ*þ*þ* Q-PTRS AND SHARED DICTIONARIES?þ*þ#2 = ' WITH *A1 'þ#3 = ' "D" "DL" "DX" "DY" "DZ" "DC" "DCX" "DCY" "DCZ"'þ#4 = '"Q"'þ%7 = %3*%4*%5þIF %7 = 'A' THENþ %10 = 'A'þ #4 = ''þELSEþ IF %7 = 'Q' THENþ #3 = ''þ ELSEþ IF %7 = ('A'0X)ý (1X'A') %10 = 'A'þ ENDþENDþ*þMV %3 '', '', ''þ#1 = "SSELECT DICT "*%2þ#5 = ' BY *A1 BY *A0 'þSTONþ#1 = "PQ-SELECT 1"þPHþ*%1 = !1þ*þ*þ*þF-OUTPUT &0 "DICT MD" ELSEþ %2 = 'MD'þ GO 950þENDþF-INPUT &1 "DICT "*%2 ELSEþ GO 950þENDþ*þMV %3 %2,"",""þIF %3 = "MD"ý"M/DICT" %3 = $4þ%1 = "FILES ON: "*%3*' ':T1,32:*" CODE DICT B,M,S/ACCOUNT"þIF %2 # "SYSTEM" THENþ %1 = %1*' DATA B,M,S/FILENAME'þELSEþ %1 = %1*' CREATION DATE/FILENAME'þENDþIF %6 = 'NOPAGE' THENþ LPTR N,NþENDþIF # %6 THENþ LPTR NþENDþLPTR HDR, %1, LþLPTR FTR, L, T, (50), 'PAGE ', Pþ*þ* PROCESS ALL DICT ITEMS SELECTEDþ*þ510 *þF-READ &1 !1 ELSEþ IF # &1.0 THENþ LPTR L, %4, ' ITEMS LISTED'þ LPTR HDR,''þ GO 9999þ ENDþENDþ%4 = %4 + 1þIF &1.1 = "Q"ý"q" THENþ LPTR (5), &1.0, (35), "Q ",&1.2(1,19), (60), &1.3(1,19)þELSEþ IF %2 = 'SYSTEM' THENþ F-CLEAR &2þ ELSEþ IF %2 = "MD" THEN þ F-INPUT &2 "DICT "*&1.0 ELSEþ %2 = &1.0þ GO 950þ GO 510þ ENDþ ELSEþ MV &0.0 "Q","Q",%2,&1.0,"."þ F-WRITE &0þ F-INPUT &2 "DICT Q" ELSE þ LPTR 'CANT OPEN FILE: ', %2, ' IN ACCOUNT: ', &1.0þ GO 510þ ENDþ ENDþ IF $11 = 'M' THENþ F-READ &2 'DL/ID' ELSEþ ENDþ ELSEþ F-READ &2 &1.0 ELSEþ ENDþ ENDþ IF &1.2 = &2.2 MV &2.2 _þ ENDþ LPTR %4, (5), &1.0, (35), &1.1, þ (40), &1.2:MD0 7 :, &1.3:MD0 6 :, (57), &1.4, +þ IF %2 = 'SYSTEM' THENþ LPTR (60), &1.14:D2:, +þ ELSEþ IF %10 # 'A' THENþ LPTR (60), &2.2:MD0 7 :, &2.3:MD0 6 :, (75), &2.4, +þ ENDþ ENDþ LPTR (79)þ* SEARCH FOR SHARED DICT DATA FILESþ IF %3 # $4 &2.0 = 'Q'þ IF %10 = 'A' THENþ #1 = 'SSELECT DICT '*&2.0þ #2 = ' WITH *A1 "D" "DX" "DY" "DZ" "DC" "DCX" "DCY" "DCZ" BY *A1 BY *A0'þ STONþ #1 = 'PQ-SELECT 2'þ PHþ*þ* LIST ALL SHARED DICT DATA FILESþ*þ600 *þ F-READ &2 !2 ELSEþ ENDþ IF &2.0 THENþ %4 = %4 + 1þ LPTR %4, (7),&2.0, (35),&2.1,þ (60),&2.2:MD0 7 :, &2.3:MD0 6 :, (75), &2.4þ GO 600þ ENDþ ENDþENDþ*þGO 510þ*þ1000 *þIF %1(5,4) # 'DICT' GO 2000þ*þ* LISTDICTS, LISTDICTþ* LIST ALL DICTIONARY ATTRIBUTES þ*þH D/CODE A/AMC S/NAME S/AMC V/TYP V/MAX WITH D/CODE "S""A""X" BY A/AMC BY D/CODE BY *A0þ*þGOSUB 900þ*þ2000 *þIF %1(5,4) # 'CONN' GO 3000þ*þ* LISTCONNþ* LIST CONNECTIVES (NOT PROCS) IN M/DICT þ*þH WITH *A1 "C]" D/CODEþ*þGOSUB 900þ*þ3000 *þIF %1(5,7) # 'MDPROCS' GO 4000þ*þ* LISTMDPROCSþ* LISTS ALL RPL-CAT ITEMSþ*þ*[ADH.5.23.88] H WITH *A2 "[82F8" *A3 *A4 *A5 *A6 þH WITH *A2 "[$]" *A3 *A4 þIF $0 = "I"ý"V"ý"C"ý"H" H *A7þ*þGOSUB 900þ*þ4000 *þIF %1(5,3) # 'RPL' THENþ IF %1(5,5) # "MDRPL" GO 5000þENDþ*þ* LISTRPL, LISTMDRPLþ* DISPLAY NAME, SIZE & 2ND LINE OF PROCSþ* IN FILE SPECIFIED þ*þIF %2 = "MD"ý"M/DICT" THENþ IF $11 = "M"ý"O" THENþ H WITH *A13 "B" *A13þ ELSEþ H WITH D/CODE "DC]" D/CODEþ ENDþELSEþ IF %2 THENþ H WITH D/CODE "C""C^"þ H TOTAL R/FRAMES R/BYTES DATE+TIMEþ ELSE T L,"FILE NAME MISSING"þ ENDþENDþ*þGOSUB 900þ*þ5000 *þIF %1(5,5) # 'VERBS' GO 9999þ*þ* LIST VERBS AND RPL-CAT ITEMS (NOT PROCS) IN M/DICT þ*þH WITH D/CODE "V]"þH D/CODE *A2 *A3 *A4 *A5þ*þGOSUB 900þ*þGO 9999þ*þ* END WITH "LPTR" OR "NOPAGE"þ900 *þIF %6 H ü H%6þPþRSUBþ*þ950 *þTERM L, 'CAN NOT OPEN DICT FILE: ',%2, ", ENTER RTN "þIP:%2þ*þ9999 *þRTNþÿIFB3þ17D39þLRPL-CMDþÿRPL-CMDþPQþ* Program : (RPL-CMD) Command Update Program For RPL-Editorþ* Bcp/Mcs Version : 6 (Copyright 1991 Systems Management, Inc.)þ* Client : Systems Management, Inc.þ* Language : RPL 102þ* Author : J. Robertsþ* Last Revised : 02 Feb 1991þ* Change Requests : Xþ* Last Modified : J. Roberts 05 May 1991 Rev 1.1þ* : Modified to control terminal specific reverse/normalþ* : from within the program as opposed non standard terminal drivers.þ*þ* This Routine Maintains The Valid Keystrokes For The Edit Portionþ* Of The RPL-EDITOR.þ*þ* Input Buffersþ*þ* %201 = Change Line Stuffþ* %202 = Row positionþ* %204 = Keystroke decimalþ* %205 = Keystroke convertedþ* %208 = Commands stringþ* %211 = Keystroke actualþ*þ* Equates for normal and reverseþ*þ+EQ .REV &0.163þ+EQ .NOR &0.165þ*þ* Open Filesþ*þF-OUTPUT &29 DICT 'PROCLIB-S'þ*þ10 * Build The String Of Characters For Displayþ*þE*,GO 9999þGOSUB 8000þF-CLEAR &29þMV &29.0 &0.0,*þGOSUB 1000þ*þ100 * Get Commandþ*þ%201 = ''þEIPN(45,22),%201,X2þ*þ* Process Commandsþ*þIFN %201 >= 1 IFN %201 <= 32 GO 200þIFN %201 = 33 GO 300þ*þ* Save Itþ*þIF %201 = "S"ý"s" THENþ MV &0.0 &29.0, *þ F-WRITE &29þ GO 9999þENDþIF %201 = "C"ý"c" THENþ F-READ &0 "KEYSTROKES."*$3þ MV &0.1 &29.1,*þ GO 9999þENDþIF %201 = 'R'ý'r' THENþ F-READ &29 "KEYSTROKES.DEFAULT"þ NOPþ MV &0.1 &29.1,*þ GO 10þENDþIF %201 GO 100þMV &0.0 &29.0,*þGO 9999þ*þ200 * Modify A Commandþ*þ%204 = %201 + 127þGOSUB 6100þSTR %205 &29.%204,"ý"," ",1þMVE %209 %208,%201þTERM (12,6),"Modify Command -> ",%209,þ (12,7),"Current Characters are:",þ (14,8),%205,þ (12,9),"Do you want to (A)dd, (D)elete, (RTN) " þ*þ210 * Get Choiceþ*þTERM (50,9)þGOSUB 500þIF %204 = 27ý13 THENþ GOSUB 1000þ GO 100þENDþIF %205 = "A"ý"a" GO 220þIF %205 = "D"ý"d" GO 230þGO 210þ*þ220 * Add A Keystrokeþ*þTERM (12,10),"Press key stroke you wish to add. "þGOSUB 500þIFN %204 = 17ý19ý27ý28ý29ý30ý31 THENþ TERM E,%205," is a reserved character, can not use"þ GO 210þENDþIF &29.%204 THENþ IF &29.%204 # %201 THENþ MVE %209 %208,&29.%204þ TERM E,"Choosen key stroke already used for command ",%209þ GO 210þ ENDþENDþ&29.%204 = %201þ%206 = 127 + %201þMVA &29.%206 %205þGO 200þ*þ230 * Delete A Keystrokeþ*þTERM (12,10),"Press key stroke you wish to delete. "þGOSUB 500þIF &29.%204 THENþ IF &29.%204 = %201 THENþ &29.%204 = ""þ %206 = 127 + %201þ MVD &29.%206 %205þ ELSEþ TERM E,"Choosen key stroke used for command ",&29.%204þ GO 230þ ENDþENDþGO 200þ*þ300 * Terminal Specific stuffþ*þTERM (0,1),(-3),(0,3),"Terminal Driver for port ",$3,þ (0,5),"1. Default Commands",(25),&29.160,þ (0,6),"2. Embedded Commands",(25),&29.161,þ (0,7),"3. Reverse Screen",(25),&29.162,þ (0,9),"4. Normal Screen",(25),&29.164,þ (0,22),"Enter Field to Change, or (RTN) to Return"þ*þ310 * Change line for terminal driverþ*þ%201 = ''þEIPN(44,22),%201,X1þIFN %201 = 1ý2 GO 320þIFN %201 = 3ý4 GO 330ýGO 350þGOSUB 1000þGO 100þ*þ320 * Toggle Yes no stuffþ*þIF %201 = 1ý2 %202 = 5ü%206 = 160ý%202 = 6ü%206 = 161þIF &29.%206 = "NO" THENþ &29.%206 = "YES"þELSEþ &29.%206 = "NO"þENDþTERM (25,%202),S3,(25),&29.%206þGO 310þ*þ330 * Reverse command stringþ*þTERM (25,7),(-4),(40),"Enter actual command. ^G when done.",þ (3,8),"Previous String",(25),&29.162þ%203 = ""þ%206 = 25þ&29.163 = ""þ*þ340 * Get Keystrokesþ*þTERM (%206,7)þGOSUB 500þIF %204 = 7 THENþ &29.162 = %203þ TERM (25,7),(-4),þ (0,8),(-4)þ TERM (25,7),&29.162þ GO 310þENDþTERM %205þ%203 = %203*%205þ&29.163 = &29.163*%211þSTC %206 %203þ%206 = %206 + 25þGO 340þ*þ350 * Reverse command stringþ*þTERM (25,9),(-4),(40),"Enter actual command. ^G when done.",þ (3,10),"Previous String",(25),&29.164þ%203 = ""þ%206 = 25þ&29.165 = ""þ*þ360 * Get Keystrokesþ*þTERM (%206,9)þGOSUB 500þIF %204 = 7 THENþ &29.164 = %203þ TERM (25,9),(-4),þ (0,10),(-4)þ TERM (25,9),&29.164þ GO 310þENDþTERM %205þ%203 = %203*%205þ&29.165 = &29.165*%211þSTC %206 %203þ%206 = %206 + 25þGO 360þ*þ500 * Get Next Keystrokeþ*þ%204 = %204:U31A5:þ%205 = %204:G1*1:þ%204 = %204:G0*1:þIF %204 = 42 %205 = '*'þ%211 = %205þIFN %204 < 27 THENþ %205 = %204 X 2 - 1þ %205 = %200(%205,2)þENDþIF %204 = 13 %205 = "RTN"þIF %204 = 32 %205 = "space"þIF %204 = 127 %205 = "-del-"þIF %204 = 27 %205 = "ESC"þRSUBþ*þ1000 * Display Screenþ*þTERM C,"RPL-EDITOR",(30),"Command Builder",(60),&29.0,þ (24,2),"Keystrokes",(64),"Keystrokes",þ (0,22),"Enter #, (S)ave, (R)eset, (C)ancel, (RTN)" þ*þ* Display Data For Each Commandþ*þFOR %201 = 1 TO 32þ %204 = %201 + 127þ IFN %201 <= 16 THENþ %202 = %201 + 2þ %203 = 0þ ELSEþ %202 = %201 - 14þ %203 = 40þ ENDþ %210 = %203 + 25þ MVE %209 %208,%201þ STR %205 &29.%204,"ý","",1þ TERM (%203,%202),%201:MD0 2 :,". ",%209,(%210),%205þNEXT %201þTERM (40,20),"33. Terminal Driver"þRSUBþ*þ6100 * Clear Window In Middle Of Screen For Promptingþ*þIF &0.160 # "YES" THENþ IF &0.161 = "YES" THENþ %16 = 58þ ELSEþ %16 = 60þ ENDþ TERM (73,6),.NOR,(9,5),.REV,S62,.NORþ FOR %4 = 6 TO 16þ TERM (73,%4),.NOR,(11),.NOR,(9,%4),.REV," ",.NOR,S%16,.REV," ",.NORþ NEXT %4þ TERM (73,17),.NOR,(9,17),.REV,S62,.NORþELSEþ TERM (10,5),"+",*-58,"+"þ FOR %207 = 6 TO 16þ TERM (10,%207),"|",S58,"|"þ NEXT %207þ TERM (10,17),"+",*-58,"+"þENDþRSUBþ*þ8000 * Build Control Character Stringþ*þ%200 = "^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^W^Z"þ%208 = "Back One WordýBegining Of LineýBottom Of TextýCharacter LeftýCharacter Right"þ%208 = %208*"ý"*"Down One LineýEnd Of LineýForward One wordýGo To Line"þ%208 = %208*"ý"*"Home CursorýPage DownýPage UpýTop of TextýUp One Line"þ%208 = %208*"ý"*"Search & ReplaceýNot Used ReservedýChange Case LetterýKeystrokes Menu"þ%208 = %208*"ý"*"Undo Last DeleteýDelete LetterýDelete Line"þ%208 = %208*"ý"*"Delete to EOLýDelete WordýInsert LineýInsert Space"þ%208 = %208*"ý"*"Insert ModeýQuitýReplace ModeýReplace WordýRefresh ScreenýMerge Text External"þ%208 = %208*"ý"*"Cut/Copy/Move Text"þRSUBþ*þ9999 * End Of Routineþ*þF-CLEAR &29þRTNþÿIFB3þ17D39þ0379LISTPROCSþPQþ* PROGRAM : (LISTPROCS) DISPLAYS OR PRINTS ALL DICTIONARY ITEMS WITH D/CODE 'PQ' IN A FILEþ* USER : SYSTEMS MANAGEMENT, INC.þ* FILE : PROCLIB-Sþ* LANGUAGE : RPL 81þ* AUTHOR : Xþ* LAST MODIFIED : ROBIN LOSITO (JAN 23, 1984)þ* : J. ROBERTS (3 JAN 1990) CAN USE ANY FILE IF NO FILE MDþ*þ* THIS IS CALLED BY CATALOG ITEM 'LISTPROCS'þ*þ* THIS CAN BE EXECUTED FROM TCL OR ANOTHER PROGRAM.þ*þ* THIS PROGRAM PROVIDES THE FACILITY TO LIST ALL PROCSþ* IN ANY FILE DEFAULTS TO MD.þ*þ*þ** INPUT BUFFERSþ*---------------þ*þ* %1 - VERBþ* %2 - FILE NAME OR PRINT OR NOPAGE OPTIONþ* %3 - PRINT OR NOPAGE OPTIONþ*þ*þIF %2 = 'NOPAGE'ý 'LPTR'ý '' THENþ %3 = %2þ %2 = 'MD'þ ENDþ*þ#1 = 'SORT '*%2*' WITH D/CODE "PQ"'þIF %3 # 'NOPAGE'ý 'LPTR'ý '' %3 = ''þ*þ#1 = #1*' '*%3þ*þPþ9999 *þRTNþÿIFB3þ17D39þLrpl-editorþÿRPL-EDITORþPQþ* Program : (RPL-EDITOR) Full Screen Program Editor For RPLþ* Bcp/Mcs Version : 6 (Copyright 1991 Systems Management, Inc.)þ* Client : Systems Management, Inc.þ* Language : RPL 102þ* Author : J. Robertsþ* Last Revised : 05 Feb 1991þ* Change Requests : Xþ* Last Modified : J. Roberts 24 May 1991 Version 1.1þ* : Fixed Delete bug when line over 1 screen long.þ* : Fixed Merge function adding null lines to end of item.þ* : Program now asks for file and item names if not on commnad line.þ* : Program now uses internal driver for Hilightingþ*þ* Hilights Are Equated þ*þ+EQ .REV &0.163þ+EQ .NOR &0.165þ*þ* Input Buffers Usageþ*þ* %1 = Pointer First Line Of Next Pageþ* %2 = Edit/Insert Flagþ* %3 = Current Attribute Being Editedþ* %4 = For Next Loop Counterþ* %5 = Current Cursor Colþ* %6 = Current Cursor Rowþ* %7 = Sequence Of Entered Charþ* %8 = Entered Charþ* %9 = Max Attributeþ* %10 = Extracted Attribute From Fileþ* %11 = Length Of Attribute + 1þ* %12 = Pointer To Current Character In Listþ* %13 = Max Character Position On Current Screenþ* %14 = Min Character Position On Current Screenþ* %15 = Saved Characters From Rest Of Line When Going To Insert Mode. þ* %16 = Workþ* %17 = Workþ* %18 = Current String To Find (This Is Not Cleared Between Uses.)þ* %19 = Current String To Replace (This Is Not Cleared Between Uses.)þ* %20 = Number Of Rows On Screenþ* %21 = Rows - 1þ* %22 = Rows - 2þ* %23 = Rows - 3þ* %24 = Number Of Columns On Screenþ* %25 = Columns - 5þ* %26 = Columns - 4þ* %27 = Last Merge File Nameþ* %28 = Last Merge Item Nameþ* %29 = Last Merge Starting Lineþ* %30 = Last Merge Ending Lineþ* %31 = Last Deleted Character, Word, Or Lineþ* %32 = First Marked Lineþ* %33 = Last Marked Lineþ* %34 = Search Only Flagþ* %35 = Used By Copy Commandþ* %36 = Used By Copy Commandþ* %37 = Keyboard Error Counterþ*þ* Clear Everythingþ*þSTOFFþROþ[PROCLIB-S TCL-II-INIT]þF-CLEAR &29þMV &29.1 %1,*þ*þ* Read Keystrokes For Portþ*þF-INPUT &0 DICT "PROCLIB-S"þF-READ &0 "KEYSTROKES."*$3 ELSEþ F-READ &0 "KEYSTROKES.DEFAULT"þ [PROCLIB-S RPL-CMD]þ &0.0 = "KEYSTROKES."*$3þENDþIF %2 = "DICT" THENþ %2 = %2*" "*%3þ MV %3 %4,*þENDþ*IF # %2 GOSUB 8800þ*IF # %3 GOSUB 8810þF-OUTPUT &1 %2 ELSEþ TERM L,"Can not open ",%2," Invalid file name.",L,Bþ GO 9999þENDþ10 *þRIþMV %1 &29.1,*þIFN %1 = 0 THENþ %3 = !1þELSEþ %1 = %1 + 1þ %3 = %%1þENDþMV &29.1 %1,*þIF # %3 TERM " DONE",LüGO 9999þTERM CþF-READ &1 %3þNOPþRIþ*þ* Get Terminal Characteristicsþ*þ%20 = $16:G1,1:þ%21 = %20 - 1þ%22 = %20 - 2þ%23 = %20 - 3þ%24 = $16:G0,1:þ%25 = %24 - 5þ%26 = %24 - 4þ*þ* Set Initial Variablesþ*þ%1 = 1þ%2 = "Edit "þ%3 = 1þ%5 = 5þ%6 = 0þACOUNT %9 &1.1þIFN %9 = 0 %2 = "Insert "þ%12 = 1þ%13 = 1 + %25þ%14 = 1þ%37 = 0þ*þ* Display Bottom Lineþ*þGOSUB 6010þIF %2 = "Insert " THENþ %9 = 1þ %1 = %20 + 1þ TERM (0,0),"0000"*%3:T4:þ GO 500þENDþGOSUB 1030þGOSUB 6000þ*þ20 * Edit Modeþ*þGOSUB 6010þGOSUB 1000þ*þ* Parse Entryþ*þIF # &0.%7 THENþ %37 = %37 + 1þ IFN %37 > 2 THENþ [PROCLIB-S RPL-CMD]þ GOSUB 6200þ GOSUB 6010þ %37 = 0þ ENDþELSEþ %37 = 0þENDþIFN &0.%7 = 1ý2ý3ý4ý5ý6ý7ý8ý9ý10ý11ý12ý13ý14 GO 100ýGO 110ýGO 120ýGO 130ýGO 140ýGO 150ýGO 160ýGO 170ýGO 180ýGO 190ýGO 200ýGO 210ýGO 220ýGO 230þIFN &0.%7 = 15ý17ý20ý21ý22ý23ý24ý25ý26ý27ý28ý29 GO 7000ýGO 270ýGO 300ýGO 310ýGO 320ýGO 330ýGO 340ýGO 350ýGO 360ýGO 370ýGO 360ýGO 330þIFN &0.%7 = 30ý31ý32 GO 380ýGO 8000ýGO 7500þIFN &0.%7 = 18ý19 GO 400ýGO 390þGO 20þ*þ100 * Backward One Wordþ*þ%12 = %12 - 1þ*þ105 * Re-Entry Pointþ*þIFN %12 > 1 IF %10(%12,1) = ' 'ý','ý'.'ý'('ý')' GO 100þIF %12 < 1 THENþ GOSUB 1010þ %12 = %11þELSEþ IF %12 # 1 THENþ %12 = %12 - 1þ IF %10(%12,1) # ' 'ý','ý'.'ý'('ý')' GO 105þ %12 = %12 + 1þ ELSEþ IF %10(%12,1) = ' 'ý','ý'.'ý'('ý')' GO 100þ ENDþENDþ%5 = 5 + (%12 - %14)þGO 20þ*þ110 * Return Key Hitþ*þIFN %12 > 1 THENþ %5 = 5þ %12 = 1þELSEþ GOSUB 1020þENDþGO 20þ*þ120 * Bottom Of Textþ*þ%3 = %9þIFN %9 <= %21 THENþ %6 = %9 - 1þELSEþ %1 = (%9 / %21) X %21þ %6 = (%9 R %21) þ GOSUB 6000þENDþGOSUB 1030þ%12 = %11þ%5 = 5 + (%12 - %14)þGO 20þ*þ130 * Character Leftþ*þ%12 = %12 - 1þ%5 = %5 - 1þIFN %12 < 1 THENþ GOSUB 1010þ STC %11 %10þ %12 = %11 + 1þ %5 = %12 + 4þENDþGO 20þ*þ140 * Character Rightþ*þ%5 = %5 + 1þ%12 = %12 + 1þIFN %12 > %11 THENþ GOSUB 1020þ %5 = 5þ %12 = 1þENDþGO 20þ*þ150 * Down One Lineþ*þGOSUB 1020þGO 20þ*þ160 * End Of Lineþ*þIFN %12 = %11 GOSUB 1020þ%12 = %11þ%5 = %12 + 4þGO 20þ*þ170 * Forward One Wordþ*þ%12 = %12 + 1þIFN %12 < %11 IF %10(%12,1) # ' 'ý','ý'.'ý'('ý')'ý'"'ý"'" GO 170þIFN %12 >= %11 THENþ GOSUB 1020þ %12 = 1þ %5 = 5þ IF %10(%12,1) = ' 'ý','ý'.'ý'('ý')'ý'"'ý"'" GO 170þELSEþ*þ175 * Skip Special Charsþ*þ IF %