HelpForUniverse
From Pickwiki
Jump to navigationJump to search
Back to BasicSource
When using the HELP command in Universe at the console on an NT machine, the screen cannot be addressed, so the output is useless. This help follows (almost) the command syntax for the Universe help, but the output is more like the Unidata help.
PROGRAM UVHELP * ECL - KRJ - [[UniVerse]] help that works when the screen addressing doesn't SENTENCE = TRIM(@SENTENCE) CONVERT ' ' TO @AM IN SENTENCE IF OCONV(SENTENCE<1>,'MCU') = 'RUN' THEN DEL SENTENCE<1> DEL SENTENCE<1> END DEL SENTENCE<1> IF OCONV(SENTENCE<2>,'MCU') = 'FROM' THEN CLASS = SENTENCE<3> TOPIC = SENTENCE<1> IF CLASS = '' THEN CLASS = 'SYS.HELP' END ELSE CLASS = SENTENCE<1> TOPIC = SENTENCE<2> IF TOPIC = '' THEN TOPIC = CLASS CLASS = 'SYS.HELP' END END GOT.CLASS = @TRUE DISP = CLASS OPEN CLASS TO HELP.FILE ELSE GOT.CLASS = @FALSE IF NOT(GOT.CLASS) AND FIELD(CLASS,'.',2) NE 'HELP' THEN DISP = CLASS:'.HELP' OPEN DISP TO HELP.FILE ELSE CRT 'Cannot open "':CLASS:'"' STOP END END HEADLINE = 'Help information for "':DISP:' ':TOPIC:'"' READ REC FROM HELP.FILE,TOPIC ELSE CRT 'No information available for ':TOPIC STOP * commented out following - was trying to cater for stuff not being there * EXECUTE 'SSELECT HELP.FILE' CAPTURING JUNK * REC = '' * LOOP WHILE READNEXT ID DO * REC<-1> = ID * REPEAT END PLEN = SYSTEM(3)-3 LINES = DCOUNT(REC,@AM) PAGES = INT(LINES[[/PLEN]]) + (REM(LINES,PLEN) NE 0) SPACES = 80-LEN(HEADLINE) SPACES = INT(SPACES/2) SPACES = SPACE(SPACES) HEADLINE = SPACES:HEADLINE:SPACES HEADLINE = HEADLINE[1,69]:' Page: ' PAGE = 1 LOOP IF PAGE GT PAGES THEN PAGE = PAGES CRT @(-1):HEADLINE:PAGE:'/':PAGES CRT BOT = ((PAGE-1)*20) + 1 MSUP = BOT + PLEN - 1 FOR XX = BOT TO MSUP CRT REC<XX> NEXT XX CRT LOOP GOOD = @TRUE CRT "Page 'U'p, 'D'own, 'T'op, 'B'ottom or 'Q'uit ": INPUT ANS ANS = OCONV(TRIM(ANS),'MCU') BEGIN CASE CASE ANS = 'T' ; PAGE = 1 CASE ANS = 'B' ; PAGE = PAGES CASE ANS = 'U' PAGE = PAGE - 1 IF PAGE LT 1 THEN PAGE = 1 CASE ANS = 'D' OR ANS = '' PAGE = PAGE + 1 CASE ANS MATCHES '1[[N0N]]' PAGE = ANS CASE ANS = 'Q' ; STOP CASE 1 GOOD = @FALSE END CASE UNTIL GOOD DO CRT "Invalid entry '":ANS:"' --- Must be 'U', 'D', 'T', 'B' or 'Q'" REPEAT REPEAT