/*REXX*/ 'ISREDIT MACRO(PARMS)' /*-------------------------------------------------------------------*/ /*˙˙There are two type of help displays, those that are just text ˙*/ /*˙˙files and those that display themselves such as DOS help.˙˙˙˙˙˙˙˙*/ /*˙˙The text files are displayed in a BROWSE window, the self-˙˙ ˙˙˙˙*/ /*˙˙displaying help files are called via ISPEXEC CMD with parms that˙*/ /*˙˙have been type on the command line.˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙*/ /* */ /* This program demonstrates the use of enumerated subscripts and */ /* the REXX interpret command. */ /* */ /* External Variables Used: */ /* DVAR = Drive letter where all my utilities are */ /* UTIL = Drive:\Path where my utilties are */ /* */ /* By Mark McDonald - Last Update 11Jul2001 */ /*-------------------------------------------------------------------*/ /* TRACE ?R */ /*--- If source has not been saved, save it just in case ---*/ 'ISREDIT (MODIFIED) = DATA_CHANGED' IF (MODIFIED=YES) THEN 'ISREDIT SAVE' /*--- Get External Variables (From DOS) - Can be Hard Coded ---*/ DVAR = MVAR("DRV") UTIL = DVAR":\U" /*--- Get Passed Parms ---*/ PARMS = TRANSLATE(PARMS) NWRDS = WORDS(PARMS) PASSED = '' /*------------------------------------------------------------*/ /* get cursor position and line data. */ /*------------------------------------------------------------*/ 'isredit (line, column) = cursor' 'isredit (text) = line .zcsr' 'isredit (lrecl) = lrecl' 'isredit (cur_file) = member' /*--- Is Cursor on Command Line or On a Keyword? ---*/ if column = 0 then NOP ELSE DO IF NWRDS = 0 THEN DO /* --- Get first previous text position ---*/ TableYes = '_\-:.*?' || xrange('0','9') || xrange('A','Z') || xrange('a','z'); TableNo = translate(xrange(),,TableYes,' ') wordmask = translate(text,,TableNo, ' '); wordmask = translate(wordmask,,TableYes,'*'); /* --- Get wordindex for the cursor position when function key pressed ---*/ n = 1; Wi = 0 Wn = 0 do FOREVER; i = wordindex(wordmask,n); if (i = 0) then leave; if (i <= column) then do Wi = i; Wn = n; end; else leave; n = n+1; end; /* --- Get word text ---*/ Wm = word(wordmask,Wn); WFile = substr(text,Wi,length(Wm)); PARMS = TRANSLATE(WFile) NWRDS = 3 END END /*--- Load Passed Parm into Ennumerated Subscript ---*/ P1 = WORD(PARMS,1) S = 0 /*--- Functions in My Hypertext Help Program ---*/ SLIST = "ASCII BOX CAL CALC COLOR LOCK SCAN POPKEY RULER POINT" /*--- Other Help Modules Recognized ---*/ SLIST = SLIST' ASM ANSI C COBOL CP CMS CTC' SLIST = SLIST' DL6 DOS DOSERROR FORTRAN HTM' SLIST = SLIST' INTERRUP PB PBC PBV PCA PCREXX' SLIST = SLIST' QMODEM REXX SAAREXX VMREXX ZB WBT WB' SLIST = SLIST' VSCOBOL2 SPF' IF NWRDS > 0 THEN DO PARM1 = WORD(PARMS,1) S = POS(PARM1,SLIST,1) END /*--- Use Help File for Current Language? (Means none of the Above Passed) ---*/ IF S = 0 THEN DO PASSED = WORD(PARMS,1) IF NWRDS > 1 THEN PARMS = PARMS' 'WORD(PARM,2) IF NWRDS > 2 THEN PARMS = PARMS' 'WORD(PARM,3) /* --- Retrieve File Name of Member ---*/ 'ISREDIT (FULLNAME) = MEMBER' FULLNAME = TRANSLATE(FULLNAME) /* --- Get Extenstion of File Name ---*/ EXNT = SUBSTR(FULLNAME,POS('.',FULLNAME)+1,3) /* --- Determine Default Help File for Edit Session by ext ---*/ IF EXNT = 'ASM' THEN P1 = 'ASM' IF EXNT = 'BAT' THEN P1 = 'RCREXX' IF EXNT = 'C' THEN P1 = 'C' IF EXNT = 'CBL' THEN P1 = 'VSCOBOL2' IF EXNT = 'DL6' THEN P1 = 'DL6' IF EXNT = 'HTM' THEN P1 = 'HTM' IF EXNT = 'PBC' THEN P1 = 'PBC' IF EXNT = 'PBS' THEN P1 = 'PB' IF EXNT = 'REX' THEN P1 = 'REXX' IF EXNT = 'SPF' THEN P1 = 'CTC' IF EXNT = 'WBT' THEN P1 = 'WB' IF EXNT = 'ZBS' THEN P1 = 'ZB' END IF NWRDS > 1 THEN PASSED = PASSED' 'WORD(PARMS,2) IF NWRDS > 2 THEN PASSED = PASSED' 'WORD(PARMS,3) /*--- Define Executables ---*/ EXE = "'ISREDIT DOS '"DVAR"':\DOCS\" MARK = "'ISREDIT DOS "DVAR":\U\MHELP\BHELP.EXE " /*--- Define How to Call My Help Program ---*/ HELP.? = MARK''"/?'" HELP.ASCII = MARK''"ASCII'" HELP.ASM = MARK''"ASM'" HELP.BOX = MARK''"BOX'" HELP.C = MARK''"C'" HELP.CAL = MARK''"CAL'" HELP.CALC = MARK''"CALC'" HELP.CBL = MARK''"VSCOBOL2'" HELP.COLOR = MARK''"COLOR'" HELP.CTC = MARK''"CTC'" HELP.DL6 = MARK''"DL6'" HELP.HTM = MARK''"HTM'" HELP.INTERRUP = MARK''"INTERRUP'" HELP.LOCK = MARK''"LOCK'" HELP.PB = MARK''" PB'" HELP.PBC = MARK''"PBC'" HELP.PBV = MARK''"PBV'" HELP.PCA = MARK''"PCA'" HELP.POINT = MARK''"POINT'" HELP.REXX = MARK''"REXX'" HELP.RULER = MARK''"RULER'" HELP.SCAN = MARK''"SCAN'" HELP.WB = MARK''"WB'" HELP.ZB = MARK''"ZB'" /*--- Define SPF Browse Files ---*/ HELP.ANSI = BROWSE''"ANSICODE.DOC'" /*--- Define Self-displaying Help Files ---*/ HELP.CP = EXE"CP.exe'" HELP.CMS = EXE"CMS.exe'" HELP.COBOL = EXE"COBOL2.EXE'" HELP.FORTRAN = EXE"FORTRAN2.EXE" HELP.SAAREXX = EXE"SAAREXX.exe'" HELP.QMODEM = EXE"QMODEM.exe'" HELP.VMREXX = EXE"VMREXX.exe'" /*--- Define PCDOS 7.0 Help Files ---*/ HELP.DOS = "'ISREDIT DOS '"DVAR"':\PCDOS\view cmdref'" HELP.DOSERROR = "'ISREDIT DOS '"DVAR"':\PCDOS\view doserror'" HELP.PCREXX = "'ISREDIT DOS '"DVAR"':\PCDOS\view dosrexx'" /*--- Execute Help Request ---*/ PASSED = PASSED' 1' HELP.P1 = HELP.P1' 'PASSED INTERPRET HELP.P1 IF WORDS(PASSED) > 1 THEN DO CALL SEPLINE1 /* DO WHILE LINES("C:\TEMP\SPF.NOT") > 0 */ DATALINE = LINEIN(UTIL"\MHELP\SPF.NOT") CALL FIXQUOTES /* END */ CALL SEPLINE2 T = LINEOUT(UTIL"\MHELP\SPF.NOT") END EXIT 0 /*--------------------------------------------------------------------*/ SEPLINE1: ERRLINE = COPIES('=',69) "ISREDIT LINE_BEFORE " line "= NOTELINE " ERRLINE RETURN /*--------------------------------------------------------------------*/ SEPLINE2: ERRLINE = COPIES('=',69) "ISREDIT LINE_AFTER " line "= NOTELINE " ERRLINE RETURN /*--------------------------------------------------------------------*/ /*--- Change quotes(single/double) to tildes - prevents REXX errors --*/ FIXQUOTES: ERRLINE = TRANSLATE(DATALINE,"~","'") ERRLINE = TRANSLATE(ERRLINE,'~','"') "ISREDIT LINE_BEFORE " line "= NOTELINE '"ERRLINE"'" RETURN /*---------------------------------------------------------------*/ MVAR: PROCEDURE ARG X X = TRANSLATE(X) /* --- Build Semi-Unique Result File Name ---*/ RESULT = 'C:\TEMP\'SUBSTR(DATE('J'),3,3," ")''TIME('S') TBAT = RESULT'.BAT' RESULT = RESULT'.TXT' /* --- Build/Execute Temp BAT File ---*/ T = LINEOUT(TBAT,'SET > 'RESULT) T = LINEOUT(TBAT,'EXIT') T = LINEOUT(TBAT) 'ISREDIT DOS 'TBAT /* --- Find VAR ---*/ DO WHILE LINES(RESULT) > 0 T = TRANSLATE(LINEIN(RESULT)) T = TRANSLATE(T," ","=") IF WORD(T,1) = X THEN DO RETURN WORD(T,2) END END XR = "" RETURN XR /*---------------------------------------------------------------*/