/* ** Help ** ** Name: Help.rexx ** Version: 2.01 ** Author: Anthony Towns ** ** $VER: Help 2.01 (Apr.1993) */ /* ** SETUP CONSTANTS */ TRUE = 1 FALSE = 0 RETURN_OK = 0 RETURN_WARN = 5 RETURN_ERROR = 10 RETURN_FAIL = 20 /* ** SETUP VARIABLES */ OldDir = PRAGMA('Directory') /* ** SET OPTIONS */ OPTIONS NO RESULTS /* ** OPEN LIBRARIES */ LibsToAdd = 2 Library.1 = 'rexxsupport.library' Library.2 = 'amigaguide.library' DO CurrentLibrary = 1 TO LibsToAdd IF ~SHOW('L',Library.CurrentLibrary) THEN IF ~ADDLIB(Library.CurrentLibrary, 0, -30, 0) THEN DO CALL WRITELN(STDOUT,'Error: Could not add 'CurrentLibrary'!') CALL QUIT(RETURN_FAIL) END END /* ** Extensions */ IF ~EXISTS('ENV:HelpRX') THEN DO WRITELN(STDOUT,'Error 205: Help Settings Not Found - Refer to Manual') QUIT(RETURN_ERROR) END IF ~OPEN('Ext','ENV:HelpRX/Extensions') THEN DO WRITELN(STDOUT,'Error: Couldn''t open "Extensions"') QUIT(RETURN_ERROR) END IF ~OPEN('Name','ENV:HelpRX/Names') THEN DO WRITELN(STDOUT,'Error: Couldn''t open "Names"') QUIT(RETURN_ERROR) END DO Ext = 1 UNTIL EOF('Ext') Line = READLN('Ext') Program.Ext.E.seg = TRIM(SUBSTR(Line,1,1)) Extension.Ext = TRIM(SUBSTR(Line,2,12)) Program.Ext.E = TRIM(SUBSTR(Line,14)) IF Program.Ext.E = '' THEN DO Pre = Ext - 1 Program.Ext.E = Program.Pre.E END END Extensions = Ext - 1 CLOSE('Ext') DO Name = 1 UNTIL EOF('Name') Line = READLN('Name') Program.Name.N = TRIM(SUBSTR(Line,1,1)) Name.Name = TRIM(SUBSTR(Line,2,12)) Program.Name.N = TRIM(SUBSTR(Line,14)) IF Program.Name.N = '' THEN DO Pre = Name - 1 Program.Name.N = Program.Pre.N END END Names = Name - 1 CLOSE('Name') /* ** START OF MAIN PROGRAM */ /*** Argument Information: Help OpenLibrary() -> AutoDocs Help FileInfoBlock -> C Include File Help DirectoryOpus -> HELP:DirectoryOpus/ReadMeFirst Help AmigaGuide AmigaGuide -> HELP:AmigaGuide/AmigaGuide.guide Help AmigaGuide Glossary -> HELP:AmigaGuide/Glossary.guide Help AddCR -> HELP:Miscellaneous/AddCR.man Help term News -> HELP:term/News Help term Menus -> HELP:term/term.guide / Menus Help term termRexx Index -> HELP:term/termRexx.guide / Index Help [] [] or Help >>> Looks For HELP: >>> IF EXISTS -> Changes directory to ... else to HELP:Misc, Database = >>> IF of any ext. exists, loads it with ELSE loads of any ext. if exists and goes to segment ELSE loads (names) if exist and goes to segment ***/ PARSE ARG Arguments DO WHILE Arguments = '?' CALL WRITECH(STDOUT,'PROGRAM,DATABASE,SEGMENT: ') Arguments = READLN(STDIN) END PARSE VAR Arguments Program ' ' Database ' ' Segment IF EXISTS('HELP:'Program) THEN PRAGMA('Dir','HELP:'Program) ELSE DO PRAGMA('Dir','HELP:Miscellaneous') IF Database ~= '' AND Segment = '' THEN Segment = Database Database = Program END IF Database = '' THEN Database = Program DO FOREVER DO Ext = 2 TO Extensions IF RIGHT(Database,LENGTH(Extension.Ext)) = Extension.Ext THEN IF DISPLAY(Database,Segment,Program.Ext.E.Seg,Program.Ext.E) THEN QUIT(RETURN_OK) ELSE DO WRITELN(STDOUT,'Error 205: File not found') QUIT(RETURN_ERROR) END END DO Ext = 1 TO Extensions IF DISPLAY(Database || Extension.Ext,Segment,Program.Ext.E.Seg,Program.Ext.E) THEN QUIT(RETURN_OK) END IF Segment = '' & Database ~= Program THEN DO Segment = Database Database = Program END ELSE DO DO Name = 1 TO Names IF DISPLAY(Name.Name,Segment,Program.Name.N.Seg,Program.Name.N) THEN QUIT(RETURN_OK) END IF WORDS(GetXRef(Program)) > 1 THEN DO ADDRESS COMMAND 'AmigaGuide' 'Document' Program QUIT(RETURN_OK) END WRITELN(STDOUT,'Error 205: Couldn''t find Help file.') QUIT(RETURN_ERROR) END END /* ** END OF MAIN PROGRAM */ /* ** SUB-ROUTINES */ QUIT: PROCEDURE EXPOSE OldDir PRAGMA('Directory',OldDir) EXIT(ARG(1)) DISPLAY: PROCEDURE EXPOSE TRUE FALSE IF ARG() ~= 4 THEN RETURN 2 file = ARG(1) segment = ARG(2) IF ARG(3) = 'Y' & segment ~= '' THEN ext = 'Document' segment ELSE ext = '' IF EXISTS(file) THEN DO ADDRESS COMMAND ARG(4) File ext RETURN TRUE END ELSE RETURN FALSE /* ** FUNCTIONS */