home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / wafrug.zip / ROS10000.010 < prev    next >
Text File  |  1986-09-17  |  38KB  |  212 lines

  1. 000098@DOCNAMES@■BIGLIST²COMBINE.LISTS²GLOBE²INVERT.LST²MENU.LST²MODIFY²MSELECT²TEXTEASY²UPPER²XLATEN■1410834TEXTEASY■* TEXTEASY - a program to make the TEXT processor more user friendly■* PROGRAM MODIFIED (8/86) BY WILLIAM R WEBBER, TO ADD MULTIPLE SCREENS■* Lines modified are indicated by '!(#)', #=number of lines modidifed■■COMMON /TEXT.MENU.COMMON/ FILENAME,DOCNAME,DOCNAMES.USED,MAXWIDTH■■SENT=TRIM(@SENTENCE)■CONVERT ' ' TO @FM IN SENT■PARM=TRIM(SENT<2>)■IF PARM='' THEN PARM='OLD'■■BOTTOM=@(0,24):@(-4)■DASHES=STR('-',29)■FSW=0■* !(4) Options - WRW 8/1/86■OPTIONS = '/C=Create /E=Edit /F=File /I=Initalize /P=Print /R=Run /S#=Screen / =TCL /[#'■MINWIDTH=13■SCREEN=0   ■MAXSCREEN=0■PERFORM 'SET-COLOR 0I,01,0H,04'■HI.LITE=@COLOR<4>■NORM=@COLOR<2>■* !■■GET.FILE.NAME:■IF FILENAME='' OR FSW THEN ■ IF FSW THEN■  OLDNAME=FILENAME■  DOCNAME=''■ END ELSE■  OLDNAME='DOCUMENTS'■  DOCNAME='LETTER'■ END■ DOCNAMES.USED=''■ MAXWIDTH=10■ PRINT BOTTOM:'Enter name of document file to use. (Default=':■ PRINT OLDNAME:')':■ PRINT HI.LITE: ; INPUT NEWFILENAME: ;PRINT NORM:■ PRINT BOTTOM:■ IF FILENAME='END' OR FILENAME='end' THEN STOP■ IF NEWFILENAME='' THEN■  FILENAME=OLDNAME■ END ELSE■  FILENAME=NEWFILENAME■ END■END■■OPEN.FILES:■OPEN '', FILENAME TO FILEIN ELSE■ PRINT BOTTOM:'Document file ':FILENAME:' does not exist. ':■ PRINT 'Create, Attach, Quit (C,A,Q)':■ PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■ IF ANS='END' OR ANS='end' THEN STOP■■ BEGIN CASE■  CASE ANS='C'■   PERFORM 'CREATE-FILE ':FILENAME:' 1 1'■   OPEN '', FILENAME TO FILEIN ELSE■    PRINT BOTTOM:'File creation was unsuccessful.  Press <ENTER>':■    PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■    IF ANS='END' OR ANS='end' THEN STOP■    GOTO GET.FILE.NAME:■   END■  CASE ANS='A'■   PRINT BOTTOM:'Enter drive to ATTACH ':FILENAME:' from':■   PRINT HI.LITE: ; INPUT DRIVE: ; PRINT NORM:■   DRIVE=TRIM(DRIVE)■   IF DIRVE='END' OR DRIVE='end' THEN STOP■   PERFORM 'ATTACH ':DRIVE:' ':FILENAME■   OPEN '', FILENAME TO FILEIN ELSE■    PRINT BOTTOM:'ATTACH was unsuccessful.  Press <ENTER>':■    PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■    IF ANS='END' OR ANS='end' THEN STOP■    GOTO GET.FILE.NAME:■   END■  CASE 1■   FILENAME=''■   GOTO GET.FILE.NAME:■ END CASE■END■■READ REC FROM FILEIN, '@DOCNAMES@' THEN■ DOCNAMES.USED=REC<1>■ MAXWIDTH=REC<2>■END ELSE GOSUB INITIALIZE:  ; * ! WRW 8/1/86■■■START:■PRINT @(-1):■PRINT DASHES:'Current Document Names':DASHES:■TEMP=STR('-',80)■TEMP[40-(INT(LEN(FILENAME)/2)),LEN(FILENAME)]=FILENAME■PRINT @(0,22):TEMP:OPTIONS ; * ! List of cmds - WRW 8/1/86■MAXCNT=COUNT(DOCNAMES.USED,@VM)+(DOCNAMES.USED#'')-1■ROWS=21■CNT=0■OFFSET=0■■* ! Skip document display if file contains no documents■IF MAXCNT GE 0 THEN■■* !(10) Loop keeps data on screen - WRW■REC.CNT=MAXCNT+1■MAXDISPLAY=REC.CNT■LOOP UNTIL (MAXDISPLAY-1+(21-MOD(MAXDISPLAY-1,ROWS)))*(MAXWIDTH+6) LT 1659■   IF MAXWIDTH GT MINWIDTH THEN MAXWIDTH -= 1 ELSE MAXDISPLAY -= 1■REPEAT■■NCLM=(INT(MAXDISPLAY-1)/21)+1                ; * ! Number of columns■MAXWIDTH +=INT(MOD(78,(MAXWIDTH+6))/NCLM)    ; * ! Maxwidth of each column■■MAXSCREEN=INT(MAXCNT/MAXDISPLAY)             ; * ! Maximum number of screens■PRINT @(0,0):'Screen ':SCREEN+1:' of ':MAXSCREEN+1:■■CNT = SCREEN*MAXDISPLAY■J=0■LOOP WHILE (J < MAXDISPLAY AND CNT < REC.CNT)■* FOR J=0 TO MAXDISPLAY-1   ! Use loop to display screeen■ CNT+=1 ■ PRINT @(OFFSET,MOD(J,ROWS)+1):CNT 'R#4':') ':HI.LITE:DOCNAMES.USED<1,CNT>[1,MAXWIDTH]:NORM : ; * changed R#3 to R#4 - WRW■ IF MOD(J+1,ROWS)=0 THEN■  OFFSET+=MAXWIDTH+6   ; * ! Changed +5 to +6 - WRW■ END■J+=1■REPEAT■END ; * ! END OF IF STATMENT FOR ZERO RECORDS IN FILE - WRW■  ■GET.ITEM.NAME:■PRINT BOTTOM:■BEGIN CASE■ CASE PARM='NEW'■  PRINT BOTTOM:'Enter name of new document to create':■  PRINT HI.LITE: ; INPUT NEWNAME: ; PRINT NORM:■  NEWNAME=TRIM(NEWNAME)■  IF NEWNAME='END' OR NEWNAME='end' THEN STOP■  IF NEWNAME[1,1]='/' THEN CMD=NEWNAME; GOSUB NEW.COMMANDS:■  IF NEWNAME='' THEN GOTO GET.ITEM.NAME:■  DOCNAME=NEWNAME■  LOCATE DOCNAME IN DOCNAMES.USED SETTING FOUND THEN■   PRINT BOTTOM:'This item already exists.  Do you want to edit it (Y/N)':■   PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■   IF ANS='END' OR ANS='end' THEN STOP■   IF ANS = 'Y' THEN■    PRINT @(-1):■    PERFORM 'TEXT ':FILENAME:' ':DOCNAME■    GOSUB CHECK.FOR.DELETE:■    FLUSH■    GOTO START:■   END ELSE■    GOTO GET.ITEM.NAME:■   END■  END■  PRINT @(-1):■  PERFORM 'TEXT ':FILENAME:' ':DOCNAME■  GOSUB CHECK.FOR.NEWITEM:■  FLUSH■  GOTO START:■ CASE PARM='OLD'■  PRINT BOTTOM:'Enter name/number of document to EDIT. (Default=':■  PRINT DOCNAME:')':■  PRINT HI.LITE: ; INPUT OLDNAME: ; PRINT NORM:■  OLDNAME=TRIM(OLDNAME)■  IF OLDNAME='END' OR OLDNAME='end' THEN STOP■  IF OLDNAME[1,1]='/' THEN CMD=OLDNAME; GOSUB NEW.COMMANDS:■  IF OLDNAME='' THEN OLDNAME=DOCNAME■  OLDNAME=TRIM(OLDNAME)■  IF NUM(OLDNAME) THEN■   IF OLDNAME<1 THEN■    PRINT BOTTOM:'Document number out of range. Press <ENTER>.':■    PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■    IF ANS='END' OR ANS='end' THEN STOP■    GOTO GET.ITEM.NAME:■   END■   OLDNAME=DOCNAMES.USED<1,OLDNAME>■   IF OLDNAME='' THEN■    PRINT BOTTOM:'Document number out of range. Press <ENTER>.':■    PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■    IF ANS='END' OR ANS='end' THEN STOP■    GOTO GET.ITEM.NAME:■   END■  END■  DOCNAME=OLDNAME■  LOCATE DOCNAME IN DOCNAMES.USED SETTING FOUND THEN■   PRINT @(-1):■   PERFORM 'TEXT ':FILENAME:' ':DOCNAME■   GOSUB CHECK.FOR.DELETE:■   FLUSH■  END ELSE■   PRINT BOTTOM:'Document ':DOCNAME:' not found.  Create new document (Y/N)':■   PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■   IF ANS='END' OR ANS='end' THEN STOP■   IF ANS='Y' THEN■    PRINT @(-1):■    PERFORM 'TEXT ':FILENAME:' ':DOCNAME■    GOSUB CHECK.FOR.NEWITEM:■    FLUSH■   END ELSE■    GOTO GET.ITEM.NAME:■   END■  END■ CASE PARM='PRINT'■  PRINT BOTTOM:'Enter name/number of document to PRINT. (Default=':■  PRINT DOCNAME:')':■  PRINT HI.LITE: ; INPUT OLDNAME: ; PRINT NORM:■  OLDNAME=TRIM(OLDNAME)■  IF OLDNAME='END' OR OLDNAME='end' THEN STOP■  IF OLDNAME[1,1]='/' THEN CMD=OLDNAME; GOSUB NEW.COMMANDS:■  IF OLDNAME='' THEN OLDNAME=DOCNAME■  OLDNAME=TRIM(OLDNAME)■  IF NUM(OLDNAME) THEN■   IF OLDNAME<1 THEN■    PRINT BOTTOM:'Document number out of range. Press <ENTER>.':■    PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■    IF ANS='END' OR ANS='end' THEN STOP■    GOTO GET.ITEM.NAME:■   END■   OLDNAME=DOCNAMES.USED<1,OLDNAME>■   IF OLDNAME='' THEN■    PRINT BOTTOM:'Document number out of range. Press <ENTER>.':■    PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■    IF ANS='END' OR ANS='end' THEN STOP■    GOTO GET.ITEM.NAME:■   END■  END■  DOCNAME=OLDNAME■  LOCATE DOCNAME IN DOCNAMES.USED SETTING FOUND THEN■   PRINT BOTTOM:'Printing document ':DOCNAME:'.':■   PERFORM 'COPY ':FILENAME:' ':DOCNAME:' (PS'■   PRINT BOTTOM:■  END ELSE■   PRINT BOTTOM:'Document ':DOCNAME:' not found.  Press <ENTER>.':■   PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■   IF ANS='END' OR ANS='end' THEN STOP■   PRINT BOTTOM:■  END■  GOTO GET.ITEM.NAME:■ CASE 1■  PARM='OLD'■  GOTO GET.ITEM.NAME:  ; * !■END CASE■GOTO START:■■CHECK.FOR.NEWITEM:■■READ TREC FROM FILEIN, DOCNAME THEN■ LOCATE DOCNAME IN DOCNAMES.USED BY 'AL' SETTING FOUND ELSE■   DOCNAMES.USED=INSERT(DOCNAMES.USED,0,FOUND,0,DOCNAME)■ END■ MLEN=LEN(DOCNAME)■■ IF MLEN>MAXWIDTH THEN MAXWIDTH=MLEN■ REC=''■ REC<1>=DOCNAMES.USED■ REC<2>=MAXWIDTH■ WRITE REC ON FILEIN, '@DOCNAMES@'■END■■RETURN■■CHECK.FOR.DELETE:■■READ TREC FROM FILEIN, DOCNAME ELSE■ LOCATE DOCNAME IN DOCNAMES.USED SETTING FOUND THEN■  * Remove deleted item from sorted list■  DOCNAMES.USED=DELETE(DOCNAMES.USED,0,FOUND,0)■  REC=''■  REC<1>=DOCNAMES.USED■  REC<2>=MAXWIDTH■  WRITE REC ON FILEIN, '@DOCNAMES@'■ END■END■■RETURN■■NEW.COMMANDS:■■NCMD=CMD[1,2]; PARAM=CMD[3,99]■BEGIN CASE■ CASE NCMD='/P'              ■  PARM='PRINT'■  IF PARAM#'' THEN DATA PARAM■ CASE NCMD='/C'              ■  PARM='NEW'■  IF PARAM#'' THEN DATA PARAM■ CASE NCMD='/E'              ■  PARM='OLD'■  IF PARAM#'' THEN DATA PARAM■ CASE NCMD='/F'              ■  FSW=1 ; SCREEN=0■  IF PARAM#'' THEN DATA PARAM■  GOTO GET.FILE.NAME:■ CASE NCMD='/R'■  READ CREC FROM FILEIN, '$':DOCNAME THEN■   PRINT @(-1):■   PERFORM 'RUN ':FILENAME:' ':DOCNAME■   PRINT BOTTOM:'Press <ENTER> to return to TEXTEASY.':■   PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■   IF ANS='END' OR ANS='end' THEN STOP■   RETURN TO START:■  END ELSE■   PRINT BOTTOM:'The compile was unsuccessful or not done yet. Press <ENTER>':■   PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■   IF ANS='END' OR ANS='end' THEN STOP■  END■ CASE NCMD='/ ' OR CMD='/'   ; * Process a TCL command■  SAVEPROMPT=GETPROMPT()■  PROMPT ''■  PRINT BOTTOM:'CMD->:':■  IF PARAM#'' THEN DATA PARAM■  PRINT HI.LITE: ; INPUT TCLCMD: ; PRINT NORM:■  PROMPT SAVEPROMPT■  TCLCMD=TRIM(TCLCMD)■  IF TCLCMD#'' THEN■   PERFORM TCLCMD■   RETURN TO START:■  END■* !(2) Initialize document list■ CASE NCMD='/I'■  GOSUB INITIALIZE:■* !(6) Select Screen you wish to display■ CASE NCMD='/S'■  IF NUM(PARAM) THEN■     IF PARAM GT 0 THEN SCREEN=PARAM-1 ELSE SCREEN +=1 ; IF SCREEN>MAXSCREEN THEN SCREEN=0■     IF SCREEN>MAXSCREEN THEN SCREEN=MAXSCREEN■     RETURN TO START:■  END■ * !(31) Display full name on line 24 or change minimum column width.■ CASE NCMD='/['■  CLROP=@(0,24):@(-4)■  IF PARAM='' THEN■     PRINT CLROP:'Set Minwidth, Display full name (M,D) ': ; PRINT HI.LITE: ; INPUT ANS,1: ; PRINT NORM:■     IF ANS='M' THEN■        PRINT CLROP:'Enter minimum Width 1-70 (Default=':MINWIDTH:')': ; PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■        ANS=TRIM(ANS)■        IF NUM(ANS) AND ANS#'' THEN ■           MINWIDTH=ANS■           IF MINWIDTH LT 1 THEN MINWIDTH=1■           IF MINWIDTH GT 70 THEN MINWIDTH=70■           MAXWIDTH=REC<2>■           RETURN TO START:■        END■     END■     IF ANS='D' THEN■        LOOP■        PRINT CLROP:'Enter the number of the item to display ': ; PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■        WHILE NUM(ANS) AND ANS#''■           IF ANS LT 1 THEN ANS=1■           IF ANS GT REC.CNT THEN ANS=REC.CNT■           PRINT CLROP:DOCNAMES.USED<1,ANS>:' ': ; PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■        REPEAT■     END■  END ELSE■   IF NUM(PARAM) THEN■     DISPLAY.NAME=DOCNAMES.USED<1,PARAM>■     PRINT @(0,24):@(-4):DISPLAY.NAME:' ': ; PRINT HI.LITE: ; INPUT ANS: ; PRINT NORM:■     PRINT @(0,24):@(-4):OPTIONS:■   END■  END■* !■END CASE■■RETURN TO GET.ITEM.NAME:■■RETURN■■* ! This section is now a subroutine■INITIALIZE:■ PRINT BOTTOM:'One moment while I prepare ':FILENAME:' for use.':■ SELECT FILEIN■ READNEXT @ID ELSE GOTO START:■ LOOP■  IF @ID[1,1]#'$' AND @ID#'@DOCNAMES@' THEN■   LOCATE @ID IN DOCNAMES.USED BY 'AL' SETTING FOUND ELSE■    DOCNAMES.USED=INSERT(DOCNAMES.USED,0,FOUND,0,@ID)■   END■   MLEN=LEN(@ID)■   IF MLEN>MAXWIDTH THEN MAXWIDTH=MLEN■  END■  READNEXT @ID ELSE■   REC=''■   REC<1>=DOCNAMES.USED■   REC<2>=MAXWIDTH■   WRITE REC ON FILEIN, '@DOCNAMES@'■   GOTO START:■  END■ REPEAT■RETURN TO START:04732$TEXTEASY■'ó └üÇ└ǃΦ└$3@Ç■Φ½ΘΦ3@ΘÇQH;ΘÇ@Ωcèg@δÇè.@∞c@φÇ@εè@∩c@≡c@└%Çh@Ç~A±└@≥└@ÄÇQ∞    H∞HÑ≤Ä@ÄÇ@J▓≤Çä@ÄÇÄ@ÄÇ@Äè
  2. @Ω[Çò[≤[Ç├[±[⌠ceY≥[Ω[ÄÇ┼QÄÇ╔Q    HΩ|⌠ÇQHⁿÄ≤@JÄ⌠@ÇÄ⌡kGΩ[Ç═[Ä[Ç▄[Çε[±[÷ceY≥[÷Ç┼Q÷Ç╔Q    H9|÷ü QHë└%üÄü@Ç~AÇÄ⌡kGàΩ[ü[±[÷ceY≥[÷Ç┼Q÷Ç╔Q    HÇ|JâJ÷üNQHΩ[üP[Ä[üg[±[≈ceY≥[≈≈3@°Ç┼Q≈Ç╔Q    H╝|└%üm≈ÇÄ@Ç~AÇÄ⌡kG■Ω[üu[±[÷ceY≥[÷Ç┼Q÷Ç╔Q    H∙|JâJdHÄÇ@JâJ∙⌡ü¥öH7Ä∙@Ä∙@J:Kⁿ
  3. d[δ[ü¿[δ[·ÇèP.@·è(Ä$e#Ä$Ä1cè[·[φ[ç√IJBÄÇRd@ⁿè@²c@■c@√cVHî √d@é @édèédⁿ(Äèï{SGßÄεTH╫ĺd@J▌éºd@J¿ééd#èd@ĺèNÄè(é#@≡√é#@cc[ü┐[∩d[ü╟[≡d[²∩é@éc@ééS² SHﲺd@■éⁿ(d[²ü╠n[ü╨[±[Äd²cdÄ
  4. [≥[édⁿ(cQHÇ■ºÄè@éºd@J0Ω[Θü╙QHyΩ[ü╫[±[éceY≥[éé3@éÇ┼QéÇ╔Q    H├|édd
  5. üⁿQH╪éé@KΣéÇQHΣJÄÄé@ÄIJé¼HPΩ[ü■[±[÷ceY≥[÷Ç┼Q÷Ç╔Q    H|÷ü6QHJd[└%ü8ÄÇÄ@Ç~AKÄ▀J=JOJÄd[└%ü8ÄÇÄ@Ç~AK▀J=JΘÇQH╬Ω[ü>[Ä[Ç├[±[≤ceY≥[≤≤3@≤Ç┼Q≤Ç╔Q    H½|≤dd
  6. üⁿQH╛é≤@KΣ≤ÇQH╦≤Ä@≤≤3@≤&H6≤dSHΩ[üo[±[÷ceY≥[÷Ç┼Q÷Ç╔Q    H√|JÄ≤Äd≤c@≤ÇQH5Ω[üo[±[÷ceY≥[÷Ç┼Q÷Ç╔Q    H0|JÄÄ≤@ÄIJé¼Hpd[└%ü8ÄÇÄ@Ç~AKÄ▀J╩Ω[ü£[Ä[üª[±[÷ceY≥[÷Ç┼Q÷Ç╔Q    Hû|÷ü6QH─d[└%ü8ÄÇÄ@Ç~AK▀J╔JÄJΘü═QHΩ[ü╙[Ä[Ç├[±[≤ceY≥[≤≤3@≤Ç┼Q≤Ç╔Q    H|≤dd
  7. üⁿQHé≤@KΣ≤ÇQH!≤Ä@≤≤3@≤&Hî≤dSHVΩ[üo[±[÷ceY≥[÷Ç┼Q÷Ç╔Q    HQ|JÄ≤Äd≤c@≤ÇQHïΩ[üo[±[÷ceY≥[÷Ç┼Q÷Ç╔Q    Hå|JÄÄ≤@ÄIJé¼H╤Ω[ü[Ä[ü[└%üÄÇÄü @Ç~AΩ[J√Ω[ü£[Ä[ü%[±[÷ceY≥[÷Ç┼Q÷Ç╔Q    H≈|Ω[JÄJdHΘÇ@JÄJJ=é⌡ÄöHëÄÄüA²é▐GIÄÄcécÄ@é Ä$@é ÄTHbÄé @∙Ç@∙ºdccÄ@∙ºeccÄ@∙⌡ü¥ô└èd@té⌡ÄöG▀ÄIJé¼H▐ÄÄcéc@∙Ç@∙ºdccÄ@∙ºeccÄ@∙⌡ü¥ô└èd@té!éde
  8. @é"éfèc
  9. @é!üDQH!Θü═@é"ÇRH└+└+é"üG@J±
  10. é!üIQHIΘü╙@é"ÇRHE└+└+é"üG@J±
  11. é!üLQHpΘÇ@é"ÇRHl└+└+é"üG@J±
  12. é!üOQH¥∞d@∩c@é"ÇRHò└+└+é"üG@JâJ±
  13. é!üRQH    é#⌡üUÄöH÷d[└%üWÄÇÄ@Ç~AΩ[ü\[±[÷ceY≥[÷Ç┼Q÷Ç╔Q    Hε|u=J    Ω[üü[±[÷ceY≥[÷Ç┼Q÷Ç╔Q    H    |J±
  14. é!ü╜QéüⁿQ    HÇ    é$@ÇΩ[ü└[é"ÇRHN    └+└+é"üG@±[é%ceY≥[é$é%é%3@é%ÇRH{    └%é%@Ç~Au=J±
  15. é!ü╟QHÆ    Kⁿ
  16. J±
  17. é!ü╩QH╒    é"&H╨    é"cTH│    ∩é"d@J┴    ∩ºd@∩≡TH┴    ∩c@∩≡TH╦    ∩≡@u=J±
  18. é!ü═QH±
  19. é&cèg@é"ÇQH│
  20. é&[ü╨[±[÷deY≥[÷ü≈QHZ
  21. é&[ü∙[ε[Ç├[±[÷ceY≥[÷÷3@÷&÷ÇRHY
  22. ε÷@εdSH?
  23. εd@εèFTHK
  24. εèF@Ä∙@u=÷üQH»
  25. é&[ü[±[÷ceY≥[÷&÷ÇRH«
  26. ÷dSHë
  27. ÷d@÷ THô
  28. ÷ @é&[Äd÷c[Ç[±[÷ceY≥[Jd
  29. J∞
  30. é"&Hδ
  31. é'Ädé"c@cè[g[é'[Ç[±[÷ceY≥[cè[g[φ[J±
  32. uÄtΩ[üG[Ä[üc[⌡x└)vG J=└)dd
  33. üUR└)ü¥RHf └)ÄüA²é▐GN ÄÄcéc└)@é └)$@é ÄTHe Äé @└)vGÿ ∙Ç@∙ºdccÄ@∙ºeccÄ@∙⌡ü¥ô└èd@J=J u=|TEXT.MENU.COMMON OLD-L/C=Create /E=Edit /F=File /I=Initalize /P=Print /R=Run /S#=Screen / =TCL /[#SET-COLOR 0I,01,0H,04RTP18    DOCUMENTSLETTER-Enter name of document file to use. (Default=)ENDendDocument file  does not exist. Create, Attach, Quit (C,A,Q)C CREATE-FILE  1 1.File creation was unsuccessful.  Press <ENTER>AEnter drive to ATTACH  fromATTACH 'ATTACH was unsuccessful.  Press <ENTER>
  34. @DOCNAMES@Current Document NamesScreen  of R#4) NEW$Enter name of new document to create/7This item already exists.  Do you want to edit it (Y/N)YTEXT 0Enter name/number of document to EDIT. (Default=,Document number out of range. Press <ENTER>.    Document & not found.  Create new document (Y/N)PRINT1Enter name/number of document to PRINT. (Default=Printing document .COPY  (PS not found.  Press <ENTER>.AL/P/C/E/F/R$RUN $Press <ENTER> to return to TEXTEASY.;The compile was unsuccessful or not done yet. Press <ENTER>/ CMD->:/I/S/[&Set Minwidth, Display full name (M,D) M"Enter minimum Width 1-70 (Default=D(Enter the number of the item to display One moment while I prepare      for use.TEXTEASY
  35. TEXT.MENU.COMMON,3,1
  36. FILENAME,2,1
  37. DOCNAME,2,2
  38. DOCNAMES.USED,2,3
  39. MAXWIDTH,2,4
  40. SENT,-1,1
  41. PARM,-1,2
  42. BOTTOM,-1,3
  43. DASHES,-1,4
  44. FSW,-1,5
  45. OPTIONS,-1,6
  46. MINWIDTH,-1,7
  47. SCREEN,-1,8
  48. MAXSCREEN,-1,9
  49. HI.LITE,-1,10
  50. NORM,-1,11
  51. OLDNAME,-1,12
  52. NEWFILENAME,-1,13
  53. FILEIN,-1,14
  54. ANS,-1,15
  55. DRIVE,-1,16
  56. DIRVE,-1,17
  57. REC,-1,18
  58. TEMP,-1,19
  59. MAXCNT,-1,20
  60. ROWS,-1,21
  61. CNT,-1,22
  62. OFFSET,-1,23
  63. REC.CNT,-1,24
  64. MAXDISPLAY,-1,25
  65. NCLM,-1,26
  66. J,-1,27
  67. NEWNAME,-1,28
  68. CMD,-1,29
  69. FOUND,-1,30
  70. TREC,-1,31
  71. MLEN,-1,32
  72. NCMD,-1,33
  73. PARAM,-1,34
  74. CREC,-1,35
  75. SAVEPROMPT,-1,36
  76. TCLCMD,-1,37
  77. CLROP,-1,38
  78. DISPLAY.NAME,-1,39
  79. 01859BIGLIST■DECLARE FUNCTION XLATEN■PRINT "This program creates a record called BIGLIST in the LISTS file"■PRINT "which combines the multivalue keys of the specified"■PRINT "file, records and field."■PRINT■PRINT "File >": ; INPUT FILE■CMD='SELECT ':FILE:" ?'@ID'?... (S)"■PERFORM CMD■■IF @RECCOUNT = 0 THEN STOP 'No records selected to combine'■■DICT.FLD = ''■PRINT "Field Number (or DICT name) >": ; INPUT FLD■BEGIN CASE■CASE FLD EQ 'END' OR FLD EQ 'end' ; STOP■CASE NUM(FLD) ; DICT.FLD = ''■CASE 1  ; DICT.FLD = FLD■END CASE■■BIGLIST=''■TRUE = 1 ; FALSE = 0 ; DONE.WITH.FILE = FALSE■■DONE=FALSE■UNIQUE = ''■LOOP UNTIL UNIQUE # ''■PRINT "Are all keys unique (Y/N) ":;INPUT ANS,1■CONVERT 'yn' TO 'YN' IN ANS■IF ANS = 'Y' THEN UNIQUE = TRUE■IF ANS = 'N' THEN ■  LOOP UNTIL UNIQUE # ''■  PRINT 'Do you wish to make keys unique (Y/N)':;INPUT ANS,1■  CONVERT 'yn' TO 'YN' IN ANS■  IF ANS = 'Y' THEN UNIQUE = FALSE■  IF ANS = 'N' THEN UNIQUE = TRUE■  IF UNIQUE = '' THEN PRINT 'ANSWER Y OR N'■  REPEAT■END■IF UNIQUE = '' THEN PRINT 'Answer Y if all multivalues for all records selected are unique'■REPEAT■■LOOP UNTIL DONE.WITH.FILE■READNEXT @ID THEN■  IF DICT.FLD THEN ■    VALS = XLATEN(FILE,@ID,DICT.FLD,'X',ERROR)■    IF ERROR THEN■       BEGIN CASE■          CASE ERROR=1 ; STOP 'File ':FILE:' could not be opened'■          CASE ERROR=2 ; STOP 'Dict ':FILE:' could not be opened'■       END CASE■    END■  END ELSE VALS = XLATE(FILE,@ID,FLD,'X')■  ■  BIGLIST<1,-1> = VALS■END ELSE DONE.WITH.FILE = TRUE■REPEAT■■ENDR:■■CONVERT @VM TO @FM IN BIGLIST■NBIGLIST=''■IF UNIQUE = FALSE THEN ■I=1■*■LOOP WHILE BIGLIST<I>■V1=BIGLIST<I>■*■LOCATE V1 IN NBIGLIST BY 'AL' USING @FM SETTING A ELSE■ NBIGLIST=INSERT(NBIGLIST,A,0,0,V1)■END■*■PRINT @(0,23):I:@(-4)■I += 1■REPEAT■*■BIGLIST=NBIGLIST■END■■OPEN '','LISTS' TO FILE.OUT ELSE STOP■WRITE BIGLIST TO FILE.OUT,'BIGLIST'■■END01230$BIGLIST■█Ç[çÇ@[çÇt[ççÇì[ΦZΘÇöΦÇ£@└%Θ@ǼA└VcQHDÇ▓[ç|ΩÇ╤@Ç╥[δZδÇ≡QδÇ⌠Q    Hc|J{δ&HpΩÇ╤@J{dH{Ωδ@J{∞Ç╤@φd@εc@∩ε@≡ε@±Ç╤@±Ç╤RGÇ°[≥dcYüü≥½≥üQH║±φ@≥üQH±Ç╤RGü[≥dcYüü≥½≥üQHΘ±ε@≥üQH⌡±φ@±Ç╤QHüC[çJ─±Ç╤QHüQ[çJû∩Gö└)vHìΩHs≤Φ└)Ωüæ⌠üôA╣@⌠Ho⌠dQHXüÜΦüá[ç|Jn⌠eQHnü╡Φüá[ç|JnJ~≤Φ└)δüæc»@∞ºddc≤@JÉ∩φ@J²■∞½⌡Ç╤@±εQH÷÷d@∞÷ccH≡≈∞÷cc@≈⌡ü╗■°▐G╪⌡⌡°cc≈@cè[÷[g[ç÷ºd@J░∞⌡@Ç╤ü╛∙kG|∞∙ü─ô└èd@|>This program creates a record called BIGLIST in the LISTS file3which combines the multivalue keys of the specifiedfile, records and field.File >SELECT  ?'@ID'?... (S)RTP18No records selected to combineField Number (or DICT name) >ENDendAre all keys unique (Y/N) ynYNYN%Do you wish to make keys unique (Y/N)ANSWER Y OR N?Answer Y if all multivalues for all records selected are uniqueXXLATENFile  could not be openedDict ALLISTSBIGLISTBIGLIST
  80. FILE,-1,1
  81. CMD,-1,2
  82. DICT.FLD,-1,3
  83. FLD,-1,4
  84. BIGLIST,-1,5
  85. TRUE,-1,6
  86. FALSE,-1,7
  87. DONE.WITH.FILE,-1,8
  88. DONE,-1,9
  89. UNIQUE,-1,10
  90. ANS,-1,11
  91. VALS,-1,12
  92. ERROR,-1,13
  93. NBIGLIST,-1,14
  94. I,-1,15
  95. V1,-1,16
  96. A,-1,17
  97. FILE.OUT,-1,18
  98. 02345XLATEN■FUNCTION XLATEN(FN,KEY,SOURCE,CODE,ERROR)■*■* Copyright 1985 by JOHN GUNTHER. Unllimited license for personal■* use is hereby granted. NOT TO BE SOLD OR USED FOR PROMOTIONAL■* PURPOSES!■*■* Usage is same as XLATE function except:■*    1) uses DICT NAME of source field instead of field number.■*    2) source field can be a symbolic field instead of a real field.■*    3) error code is passed back to calling program.■* PARAMETERS:■*    1) FN is source file where KEY must be found.■*    2) KEY is @ID of record to look up in source file.■*    3) SOURCE is dictionary name of field to use as source.■*    4) CODE is X or C as used in XLATE function.■*    5) ERROR passes an error code back to the calling program.■*       A) 0 means OK.■*       B) 1 means file couldn't be opened.■*       C) 2 means DICT couldn't be opened.■*       D) 3 means KEY didn't exist in the source file.■*       If parameter SOURCE doesn't contain a valid dictionary■*       name in source file, a runtime error will occur.■* After cataloging XLATEN, you must begin the calling program or■* formula code with DECLAR FUNCTION XLATEN.■ERROR = 0                                ;* initialize error code.■*                                        ;* Open source file.■OPEN '',FN TO FV ELSE ERROR=1;GOSUB FAIL:;GOTO FIN3:■T.DICT=@DICT                             ;* Save existing @DICT value.■*                                        ;* Open dictionary.■OPEN 'DICT',FN TO @DICT ELSE ERROR=2;GOSUB FAIL:;GOTO FIN2:■T.ID=@ID                                 ;* Save existing @ID value.■@ID=KEY                                  ;* SET @ID to supplied record key.■T.RECORD=@RECORD                         ;* Save existing @RECORD.■*                                        ;* Read source record.■READ @RECORD FROM FV,@ID ELSE ERROR=3;GOSUB FAIL:;GOTO FIN1:■FUNCT.VAL=CALCULATE(SOURCE)              ;* Set retuned value to value of■*                                        ;* dictionary item.■FIN1:   @RECORD=T.RECORD                 ;* Restore @ varibles, as needed.■@ID=T.ID■FIN2:   @DICT=T.DICT■FIN3:   RETURN FUNCT.VAL                 ;* Return to calling program.■FAIL:■        *                                ;* Same error action as XLATE.■        IF CODE='X' THEN FUNCT.VAL='' ELSE FUNCT.VAL=KEY■        RETURN                           ;* Return to GOSUB■        END00312$XLATEN■
  99. ⌐░∞c@ÇΦφkG:∞d@KÆJÄε└D@ÇΦ└DkGS∞e@KÆJë∩└)@└)Θ@≡└*@└*φ└)öGv∞f@KÆJ±ΩÑA@└*≡@└)∩@└Dε@±)╕δÇQHó±Ç@JѱΘ@t|DICTXXLATEN
  100. FN,-1,1
  101. KEY,-1,2
  102. SOURCE,-1,3
  103. CODE,-1,4
  104. ERROR,-1,5
  105. FV,-1,6
  106. T.DICT,-1,7
  107. T.ID,-1,8
  108. T.RECORD,-1,9
  109. FUNCT.VAL,-1,10
  110. 00676COMBINE.LISTS■PRINT 'THIS PROGRAM COMBINES TWO LISTS INTO ONE NEW LIST'■PRINT■PRINT 'ENTER NAMES OF LISTS YOU WISH TO COMBINE'■PRINT 'LST1:':; INPUT LST1■PRINT 'LST2:':; INPUT LST2■PRINT■PRINT 'ENTER NAME OF COMBINED LIST'■PRINT 'LST12:':; INPUT LST12■OPEN '',"LISTS" TO FILE.LISTS ELSE■         PRINT 'NO LISTS'■         STOP■END      ■DATA LST1,LST2,''■PERFORM "SELECT LISTS ?'NAME'?..."■NEW.REC=''■AGAIN:■READNEXT @ID ELSE■         PRINT 'DONE WITH LISTS'■         GOTO ENDR:■END      ■READ @RECORD FROM FILE.LISTS, @ID ELSE■         PRINT 'CANT FIND LIST':@ID■         GOTO AGAIN:■END      ■NEW.REC = NEW.REC:@RECORD■GOTO AGAIN:■ENDR:■WRITE NEW.REC ON FILE.LISTS,LST12■END00479$COMBINE.LISTS■ºÇÇ[ççÇ3[çÇ\[ΦZÇb[ΘZçÇh[çÇä[ΩZÇïÇîδkGBÇÆ[ç|└+└+ΦÇ¢ΘÇ¢ÇïÇ¢@└%Ç¥@Ç╢A∞Çï@└)vGyÇ╝[çJ£└*δ└)öGÉÇ╠[└)[çJh∞∞└*@Jh∞δΩô└èd@|1THIS PROGRAM COMBINES TWO LISTS INTO ONE NEW LIST(ENTER NAMES OF LISTS YOU WISH TO COMBINELST1:LST2:ENTER NAME OF COMBINED LISTLST12:LISTSNO LISTSSELECT LISTS ?'NAME'?...RTP18DONE WITH LISTSCANT FIND LISTCOMBINE.LISTS
  111. LST1,-1,1
  112. LST2,-1,2
  113. LST12,-1,3
  114. FILE.LISTS,-1,4
  115. NEW.REC,-1,5
  116. 00383GLOBE■* PROGRAM GLOBAL■* Moves specifed file to GLOBAL account and deletes original file.■■FILE.NAME=''; CMD1='RENAME-FILE '; CMD2='MOVE X C TO: GLOBAL '; CMD3='DELETE-FILE X'■TOP:■PRINT 'Enter file name that you wish to make global ':;■INPUT FILE.NAME■IF FILE.NAME EQ 'END' THEN STOP■CMD=CMD1:FILE.NAME:' X'■PERFORM CMD■CMD=CMD2:FILE.NAME:' C'■PERFORM CMD■PERFORM CMD3■GOTO TOP:■END00282$GLOBE■c╤ΦÇ@ΘÇ@ΩÇ@δÇ$@Ç2[ΦZΦÇ`QH0|∞ΘΦÇd@└%∞@ÇgA∞ΩΦÇm@└%∞@ÇgA└%δ@ÇgAJ | RENAME-FILE MOVE X C TO: GLOBAL DELETE-FILE X-Enter file name that you wish to make global END XRTP18 CGLOBE
  117. FILE.NAME,-1,1
  118. CMD1,-1,2
  119. CMD2,-1,3
  120. CMD3,-1,4
  121. CMD,-1,5
  122. 00721INVERT.LST■SUBROUTINE INVERT.EXPOSURES(LST,FILE,FIELDS,F)■*■* Author      : William Webber■* Date        : 15 Jan 86■*■* Subroutine to invert only records from a select list.■*■* LST is key on LISTS file for keys of records to be inverted■* FILE is the file to be inverted■* FIELDS are the fields to be inverted separated by commas■* F is either 'Y' to clear inverted field or 'N' not to clear inverted field■*■* Works with earlier version of INVERT.ALL■*■CONVERT ',' TO @FM IN FIELDS■COL=0■AGAIN:■REMOVE FIELD FROM FIELDS AT COL SETTING MARK■IF MARK LT 3 THEN■    PERFORM "GET-LIST ":LST■    IF @RECCOUNT THEN■         DATA '', FILE, FIELD, F■         PERFORM 'INVERT.ALL'■    END■END■IF MARK NE 0 THEN GOTO AGAIN■RETURN00251$INVERT.LST■yÿÇ■Ω½∞c@φΩ∞ε╥εfSHk└%ÇΦ@ÇA└VHj└+└+ÇÇΘÇφÇδÇ@└%Ç@ÇAεcRHuJ%t|,    GET-LIST RTP18
  123. INVERT.ALLINVERT.LST
  124. LST,-1,1
  125. FILE,-1,2
  126. FIELDS,-1,3
  127. F,-1,4
  128. COL,-1,5
  129. FIELD,-1,6
  130. MARK,-1,7
  131. 01573$MENU.LST■∩╫└%Ç@ÇA└qÇ@hÇdA└rÇj@eÇdA└Vc@Φd@Θd@Ωc@ÇkÇp└DkGS|ÇjÇpδkG^|└yÇu■Çä■Çæ@└|d@└xd@└zè■è■è@└|d@└xd@∞Çj@φc@εc@└)∩åG─Ωd@εd@≡∞@±└)@ΘΩH▐Ç¢[çcΣ|ΩHτJ»└*δ└)öG⌡Jñ└Vºd@±Ç»ÑA@≥Ç│ÑAÇ╛n@≤d@⌠è@⌡≥@÷Ç├ÑAd∩cÇ╨n@≈d@°è@∙÷@·ÇäÑAd∩cÇ╨n@√d@ⁿè@²·@■ÇæÑAd∩cÇ╨n@ d@éè@é■@éc@⌡∞Rε    H¢≡∞@∞⌡@εºd@ΘH½Θc@J└t∞@ï√Ç╒└t½└t└t3@εH    çÇ╫ÇjÇ▌n[Ç╒[è-[Ç╒[è-[çΩ%HεfSHdÇdAφc@ΩH|éc@ééVH5é■ é╥ééTHCéé@°éVHR∙÷≈°╥°éTH^é°@ⁿéVHm²·√ⁿ╥ⁿéTHyéⁿ@└t∞@ï√Ç╒└t½└t└t3@ÇΓ[∙Çσn[Ç╒[²Çσn[Ç╒[éÇσn[çéhSH╝çéH▐éÇj@∙Çj@²Çj@éé@Jçφºd@Jñ|SSELECT RDES MENUS (S)RTP18E                 ** MENU SCREEN DUMP ** 'L'                 'BL'  'D'RTP15DICTRDES  MENU.PROCESS MENU.COMMAND    MENU.HELPZERO Records Listed@ID
  132. MENU.TITLET#20 MENU.PROCESST#25   ***L#27  L#25MENU.LST
  133. LAST.BREAK,-1,1
  134. FIRST.PASS,-1,2
  135. LAST.RECORD,-1,3
  136. FILE.IN,-1,4
  137. PREV.MENU.TITLE,-1,5
  138. MENU.TITLE.BREAK.COUNT,-1,6
  139. MENU.TITLE.BREAK,-1,7
  140. WHICH.VALUE,-1,8
  141. MENU.TITLE,-1,9
  142. S.ATID,-1,10
  143. M.MENU.TITLE,-1,11
  144. P.MENU.TITLE,-1,12
  145. C.MENU.TITLE,-1,13
  146. S.MENU.TITLE,-1,14
  147. M.MENU.PROCESS,-1,15
  148. P.MENU.PROCESS,-1,16
  149. C.MENU.PROCESS,-1,17
  150. S.MENU.PROCESS,-1,18
  151. M.MENU.COMMAND,-1,19
  152. P.MENU.COMMAND,-1,20
  153. C.MENU.COMMAND,-1,21
  154. S.MENU.COMMAND,-1,22
  155. M.MENU.HELP,-1,23
  156. P.MENU.HELP,-1,24
  157. C.MENU.HELP,-1,25
  158. S.MENU.HELP,-1,26
  159. PREVIOUS.MARK.LEVEL,-1,27
  160. NEW.MARK.LEVEL,-1,28
  161. 01701MODIFY■* PROGRAM MODIFY■* BY W.R.WEBBER■* 2 APR 86 , V1.1 8/11/86■PRINT 'Program MODIFY version 1.1'■PRINT■PRINT 'This program will modify a field value for a selected group of records.'■PRINT 'The program asks for the name of the file containing the data to be modified,'■PRINT 'the name of the field containing the data, the old value'■PRINT '(a <cr> will modify all records), and the new value.'■PRINT■PRINT 'Step 1: Select a group of records to be modified then'■PRINT '        SAVE-LIST MODIFY.LIST'■PRINT■PRINT 'Step 2: Run this program.'■PRINT■■PERFORM "GET-LIST MODIFY.LIST"■RECORDS=@RECCOUNT■IF NOT(RECORDS) THEN STOP 'NO RECORDS TO MODIFY'■CNT = 0■■PRINT "FILE.NAME ":;INPUT FILE.NAME■PRINT "FIELD.NAME ":;INPUT FIELD.NAME■DICT.FILE = 'DICT ':FILE.NAME■FIELD.NO = XLATE(DICT.FILE,FIELD.NAME,2,'X')■IF NOT(FIELD.NO) THEN STOP 'FIELD ':FIELD.NAME:' IS NOT A FIXED FIELD'■■OPEN 'DICT',FILE.NAME TO @DICT ELSE STOP 'CANT OPEN DICT ':FILE.NAME■OPEN '', FILE.NAME TO FILE ELSE STOP 'CANT OPEN FILE ':FILE.NAME■■PRINT■PRINT "OLD.VALUE OF ":FIELD.NAME:; INPUT OLD.VALUE■PRINT "NEW.VALUE OF ":FIELD.NAME:; INPUT NEW.VALUE■IF NEW.VALUE='' THEN NVALUE='NULL' ELSE NVALUE=NEW.VALUE■■AGAIN:■READNEXT @ID ELSE■         PRINT■         PRINT 'DONE WITH MODIFY.LIST'■         PRINT CNT: ' records modified'■         PRINT RECORDS-CNT: ' records not modified'■         STOP■END      ■READ @RECORD FROM FILE,@ID ELSE■         PRINT 'CANT FIND ': @ID■         GOTO AGAIN:■END      ■* IF OLD.VALUE  THEN■OVALUE=CALCULATE(FIELD.NAME)■  IF OLD.VALUE = OVALUE OR OLD.VALUE= '' THEN■     WRITEV NEW.VALUE TO FILE,@ID,FIELD.NO■     CNT += 1■     PRINT @ID "L#10":' ': OVALUE : ' changed to ': NVALUE■  END■GOTO AGAIN:01201$MODIFY■ fÇ[ççÇ[çÇd[çÇ▓[çÇδ[ççü [çüV[ççüt[çç└%üÄ@üúAΦ└V@Φ%H_ü⌐[ç|Θc@ü╛[ΩZü╔[δZ∞ü╒Ω@φ∞δeü█c»@φ%Hùü▌δüΣ[ç|ü·Ω└DkG½ü Ω[ç|üΩεkG╜üΩ[ç|çü [δ[∩Zü.[δ[≡Z≡üQHπ±ü<@Jµ±≡@└)vG çüA[çΘ[üW[çΦΘ[üi[ç|└*ε└)öG$ü[└)[çJΦ≥δÑA@∩≥Q∩üQ    H`≡ε└)φz└èd@Θºd@└)üèn[üÅ[≥[üæ[±[çJΦ|Program MODIFY version 1.1GThis program will modify a field value for a selected group of records.MThe program asks for the name of the file containing the data to be modified,8the name of the field containing the data, the old value4(a <cr> will modify all records), and the new value.5Step 1: Select a group of records to be modified then        SAVE-LIST MODIFY.LISTStep 2: Run this program.GET-LIST MODIFY.LISTRTP18NO RECORDS TO MODIFY
  162. FILE.NAME  FIELD.NAME DICT XFIELD  IS NOT A FIXED FIELDDICTCANT OPEN DICT CANT OPEN FILE OLD.VALUE OF NEW.VALUE OF NULLDONE WITH MODIFY.LIST records modified records not modified
  163. CANT FIND L#10   changed to MODIFY
  164. RECORDS,-1,1
  165. CNT,-1,2
  166. FILE.NAME,-1,3
  167. FIELD.NAME,-1,4
  168. DICT.FILE,-1,5
  169. FIELD.NO,-1,6
  170. FILE,-1,7
  171. OLD.VALUE,-1,8
  172. NEW.VALUE,-1,9
  173. NVALUE,-1,10
  174. OVALUE,-1,11
  175. 03652MSELECT■! ■* FORMAT■* MSELECT {DICT} {FILE} {WITH STATEMENTS} {BY STATEMENTS}■*■* PROGRAM TO EXPLODE MULTI-VALUES AND SELECT EXPLODED RECORDS■* By W. R. Webber, NBS Gaithersburg MD 20899■* 9/12/86■* Program requires files 'LISTS', 'HP.SUBS'■*■* Use text to create a record in the VOC file■*    @ID = COND.CHK■* field 01 = RBASIC■*       02■*       03 = HP.SUBS■*       04 = COND.CHK■*■* MSELECT must be cataloged■* ■!■* GET LAST SENTENCE■CMD=TRIM(@SENTENCE)■CMD = CMD[2,LEN(CMD)] ; * GETS RID OF LETTER M■@LAST.ERROR = ''■PERFORM CMD■IF NOT(@LAST.ERROR = '402' OR @LAST.ERROR = '404') THEN STOP 'ERROR ':@LAST.ERROR : ' * CDM DID NOT WORK'■* EXECUTE 'SAVE-LIST MSELECT'■■* SET MESSAGES■MSG1 = 'How did you ever get here!'■MSG2 = 'No value for with condition'■MSG3 = 'Can not use dictionary file'■MSG4 = ' is not a field'■MSG5 = 'No condition specified for multi-valued field, MSELECT not needed'■■* DETERMINE SELECTION CONDITIONS■* INITIALIZE VALUES■■CONVERT ' ' TO @FM IN CMD■FILE=''■COND=''■COND1=''■■I=1■IF NOT(CMD<I> EQ 'SELECT' OR CMD<1> EQ 'SSELECT') THEN STOP MSG1■■I += 1■IF CMD<I> THEN■    IF NUM(CMD<I>) OR CMD<I>='ONLY' THEN I += 1■    FILE = CMD<I>■    IF FILE = 'DICT' THEN STOP MSG3■END■■* OPEN DICT AND DATA FILES■OPEN 'DICT',FILE TO @DICT ELSE STOP CANT:"DICT ":FILE■OPEN '',FILE TO FILE.IN ELSE STOP CANT:FILE■OPEN '','LISTS' TO FILE.OUT ELSE STOP CANT:'LISTS'■■COND = ''■■LOOP I += 1 WHILE CMD<I> # ''■    BEGIN CASE■         CASE CMD<I> = 'WITH' OR CMD<I> = 'WITHOUT'■              COND1 = ''■              IF CMD<I> = 'WITHOUT' THEN COND1 = 'NOT'■              I += 1■              READV SM FROM @DICT,CMD<I>,4 ELSE STOP CMD<I>: MSG4■              IF SM[1,1]='M' THEN SM='<1,WHICH.VALUE>' ELSE SM=''■              COND1 := '({':CMD<I>:'}':SM■              IF CMD<I+1> EQ ']' THEN COND1 :='[1,':LEN(CMD<I+2>) - 2:'] EQ ' ; I +=1■              LOOP I += 1 UNTIL (CMD<I>[1,1] = "'" OR CMD<I>[1,1]='"')■                   IF CMD<I> = '' THEN STOP MSG2■                   IF CMD<I>='BETWEEN' OR CMD<I>='FROM' THEN■                        COND1 := ' GE ':CMD<I+1>:' AND {':CMD<I-1>:'} LE':SM■                        I += 2■                   END  ELSE COND1 := ' ':CMD<I>■              REPEAT■              COND := COND1:' ':CMD<I>:')'■              LOOP I += 1 WHILE (CMD<I>[1,1] = "'" OR CMD<I>[1,1]='"')■                   COND := ' OR ':COND1:' ':CMD<I>:')'■              REPEAT■              I -= 1■         CASE CMD<I> = 'AND' OR CMD<I> = 'OR'■              COND := ' ':CMD<I>:' '■              ■    END CASE■REPEAT■* PRINT FILE■PRINT COND■IF NOT(INDEX(COND,'WHICH.VALUE',1)) THEN STOP MSG5■■* GENERATE RBASIC PROGRAM COND.CHK ON FILE HP.SUBS■OPEN '','HP.SUBS' TO HPSUBS.FILE ELSE STOP CANT:'HP.SUBS'■MSELECT = 'SUBROUTINE COND.CHK(DICT,RECORD,WHICH.VALUE,ANS)':@FM■MSELECT := "@DICT=DICT ; @RECORD=RECORD":@FM■MSELECT := "IF ":COND:" THEN ANS='1' ELSE ANS='0'":@FM■MSELECT := "RETURN"■WRITE MSELECT TO HPSUBS.FILE,'COND.CHK'■EXECUTE 'BASIC HP.SUBS COND.CHK'■■*GENERATE RECORD KEYS■* PERFORM 'GET-LIST MSELECT'■■CANT = "UNABLE TO OPEN FILE "■REC.COUNT=0■LAST.RECORD=0■FIRST.PASS=1■KEYS=''■*■*■READRECORD:■LINEMARK■*■■READNEXT @ID,WHICH.VALUE ELSE LAST.RECORD=1■■IF FIRST.PASS AND LAST.RECORD THEN STOP "ZERO Records Selected"■    ■IF LAST.RECORD THEN GOTO BREAKS■■READ @RECORD FROM FILE.IN,@ID ELSE GOTO READRECORD■■FIRST.PASS=0■■* CHECK CONDITION■CALL COND.CHK(@DICT,@RECORD,WHICH.VALUE,ANS)■IF ANS THEN■    KEYS := @ID:'²':WHICH.VALUE:' '■    REC.COUNT += 1■END■■GOTO READRECORD■■BREAKS:■■KEYS = TRIM(KEYS)■CONVERT ' ' TO @FM IN KEYS■■WRITE KEYS TO FILE.OUT,'MSELECT'■■PRINT REC.COUNT : ' Records saved on LISTS file MSELECT'■■END01924$MSELECT■⌡OΦ└$3@ΦΦeΦ$
  176. @π
  177. Ç@└%Φ@ÇAπ
  178. ÇQπ
  179. Ç Q    %HWÇπ
  180. Ç[ç|ΘÇ+@ΩÇF@δÇb@∞Ç~@φÇÄ@Ç╨■Φ½εÇ@∩Ç@≡Ç@±d@Φ±ccÇ╥QΦÇ┘Q    %H½Θ[ç|±ºd@Φ±ccHΦΦ±cc&Φ±ccÇßQ    H╙±ºd@εΦ±cc@εǵQHτδ[ç|ǵε└DkG²≥Çδε[ç|Çε≤kG ≥ε[ç|ÇDZ⌠kG≥DZ[ç|∩Ç@±ºd@Φ±ccÇRHπΦ±ccÇ≈QΦ±ccÇⁿQ    H┤≡Ç@Φ±ccÇⁿQHa≡ü@±ºd@⌡└DΦ±ccgwGΦ±cc∞[ç|⌡dd
  181. üQHô⌡ü
  182. @Jù⌡Ç@≡ºüΦ±ccü⌡@Φ±dccüQH╒≡ºü!Φ±ecc$eü%@±ºd@±ºd@Φ±ccdd
  183. ü+QΦ±ccdd
  184. ü-Q    GZΦ±ccÇQHΩ[ç|Φ±ccü/QΦ±ccü7Q    HJ≡ºü<Φ±dccüAΦ±dccüH⌡@±ºe@JV≡ºÇ╨Φ±cc@J╓∩º≡Ç╨Φ±ccüM@±ºd@Φ±ccdd
  185. ü+QΦ±ccdd
  186. ü-Q    H¬∩ºüO≡Ç╨Φ±ccüM@Jn±ºd@J▀Φ±ccüTQΦ±ccüXQ    H▀∩ºÇ╨Φ±ccÇ╨@J▀J%∩[ç∩ü[d!%H≈φ[ç|Çüg÷kG ≥üg[ç|≈üo■@≈ºüá■@≈ºü╝∩ü└■@≈ºü█@≈÷üΓô└èd@üδ₧≥ü@°c@∙c@·d@√Ç@└)ⁿåGu∙d@·∙Hâü[ç|∙HîJ╨└*≤└)öGÜJg·c@└D└*ⁿ²üΓA²H╔√º└)ü-ⁿÇ╨@°ºd@Jg√√3@Ç╨■√½√⌠ü/ô└èd@°[ü7[ç|RTP18402404ERROR  * CDM DID NOT WORKHow did you ever get here!No value for with conditionCan not use dictionary file is not a fieldANo condition specified for multi-valued field, MSELECT not needed SELECTSSELECTONLYDICTDICT LISTSWITHWITHOUTNOTM<1,WHICH.VALUE>({}][1,] EQ '"BETWEENFROM GE  AND {} LE) OR ANDOR WHICH.VALUEHP.SUBS0SUBROUTINE COND.CHK(DICT,RECORD,WHICH.VALUE,ANS)@DICT=DICT ; @RECORD=RECORDIF  THEN ANS='1' ELSE ANS='0'RETURNCOND.CHKBASIC HP.SUBS COND.CHKUNABLE TO OPEN FILE ZERO Records Selected²MSELECT$ Records saved on LISTS file MSELECTMSELECT
  187. CMD,-1,1
  188. MSG1,-1,2
  189. MSG2,-1,3
  190. MSG3,-1,4
  191. MSG4,-1,5
  192. MSG5,-1,6
  193. FILE,-1,7
  194. COND,-1,8
  195. COND1,-1,9
  196. I,-1,10
  197. CANT,-1,11
  198. FILE.IN,-1,12
  199. FILE.OUT,-1,13
  200. SM,-1,14
  201. HPSUBS.FILE,-1,15
  202. MSELECT,-1,16
  203. REC.COUNT,-1,17
  204. LAST.RECORD,-1,18
  205. FIRST.PASS,-1,19
  206. KEYS,-1,20
  207. WHICH.VALUE,-1,21
  208. ANS,-1,22
  209. 00120UPPER■FUNCTION UPPER(OLD)■NEW=OLD■CONVERT 'abcdefghijklmnopqrstuvwxyz' TO 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' IN NEW■RETURN NEW00116$UPPER■RΘΦ@ÇÇΘ½Θ)╕|abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZUPPER
  210. OLD,-1,1
  211. NEW,-1,2
  212. 03688MENU.LST■* ROUTINE TO LIST RDES MENUS.■! ■* SORT RDES MENUS BREAK-ON MENU.TITLE "'PB'" MENU.PROCESS MENU.COMMAND  HEADING "'B'                                  'D'                      PAGE 'P' " ID-SUPP DBL-SPC  (SX) BY @ID■! ■PERFORM 'SSELECT RDES MENUS (S)'■■■* ■* HEADING/FOOTING■HEADING "                 ** MENU SCREEN DUMP ** 'L'                 'BL'  'D'"■FOOTING ""■* ■@REC.COUNT=0■LAST.BREAK=1■FIRST.PASS=1■LAST.RECORD=0■* ■* OPEN DICT AND DATA FILES■* ■OPEN "DICT","RDES" TO @DICT ELSE STOP■OPEN "","RDES" TO FILE.IN ELSE STOP■* ■* MAKE COLUMN HEADING■* ■COLHEADING "  MENU.PROCESS" : @FM : "MENU.COMMAND" : @FM : "MENU.HELP"■COLLENGTH 27 : @FM : 25 : @FM : 25■* ■* NULL PREVIOUS BREAK BUCKETS■* ■PREV.MENU.TITLE=''■MENU.TITLE.BREAK.COUNT=0■* ■! ■READRECORD:■! ■* ■* ■* ZERO BREAK FLAGS TO FALSE■* ■MENU.TITLE.BREAK=0■* ■* ■READNEXT @ID,WHICH.VALUE ELSE■LAST.RECORD=1■MENU.TITLE.BREAK=1■MENU.TITLE=PREV.MENU.TITLE■END■* ■S.ATID=@ID■* ■IF FIRST.PASS AND LAST.RECORD THEN■PRINT "ZERO Records Listed"■PRINTER OFF■STOP■END■* ■IF LAST.RECORD THEN GOTO BREAKS■* ■READ @RECORD FROM FILE.IN,@ID ELSE GOTO READRECORD■* ■@REC.COUNT+=1■* ■* ■* CALCULATE VALUE(S) FOR COLUMN(S)■* ■S.ATID={@ID}■M.MENU.TITLE={MENU.TITLE} "T#20" ; P.MENU.TITLE=1 ; C.MENU.TITLE=7■* ■* INITIALIZE TEXT BREAK CHECK VARIABLE(S)■* ■S.MENU.TITLE = M.MENU.TITLE■M.MENU.PROCESS={MENU.PROCESS}<1,WHICH.VALUE> "T#25" ; P.MENU.PROCESS=1 ; C.MENU.PROCESS=7■* ■* INITIALIZE MULTIVALUE BREAK CHECK VARIABLE■* ■S.MENU.PROCESS = M.MENU.PROCESS■M.MENU.COMMAND={MENU.COMMAND}<1,WHICH.VALUE> "T#25" ; P.MENU.COMMAND=1 ; C.MENU.COMMAND=7■* ■* INITIALIZE MULTIVALUE BREAK CHECK VARIABLE■* ■S.MENU.COMMAND = M.MENU.COMMAND■M.MENU.HELP = {MENU.HELP}<1,WHICH.VALUE> "T#25" ; P.MENU.HELP=1 ; C.MENU.HELP=7■S.MENU.HELP = M.MENU.HELP■■■* ■PREVIOUS.MARK.LEVEL=0■* ■* TEST FOR CONTROL BREAK(S)■* ■IF (S.MENU.TITLE NE PREV.MENU.TITLE) OR MENU.TITLE.BREAK THEN■MENU.TITLE=PREV.MENU.TITLE■PREV.MENU.TITLE=S.MENU.TITLE■MENU.TITLE.BREAK+=1■END■* ■* ■IF FIRST.PASS THEN■FIRST.PASS=0■GOTO DETAIL■END■* ■* ■! ■BREAKS:■! ■* ■* PRINT BREAK TOTAL(S) AND ACCUMULATE TOTAL(S)■* ■@BREAK=PREV.MENU.TITLE■CONVERT CHAR(251) TO ' ' IN @BREAK■@BREAK=TRIM(@BREAK)■* ■IF MENU.TITLE.BREAK THEN■PRINT■PRINT ("  ***" : "")"L#27" : " " :■PRINT SPACE(25) : " " :■PRINT SPACE(25)■IF NOT(LAST.RECORD) THEN■* ■IF MENU.TITLE.BREAK LT 3 THEN■PAGE■END■* ■END■* ■MENU.TITLE.BREAK.COUNT=0■END■* ■* PERFORM LAST RECORD OUTPUT IF DONE■* ■IF LAST.RECORD THEN■* PRINT■* PRINT @REC.COUNT : " Records Processed"■STOP■END■* ■! ■DETAIL:■! ■* ■* REMOVE APPROPRIATE VALUE FROM MULTI-VALUED COLUMN(S)■* ■NEW.MARK.LEVEL=0■* ■IF C.MENU.HELP GE PREVIOUS.MARK.LEVEL THEN■REMOVE S.MENU.HELP FROM M.MENU.HELP AT P.MENU.HELP SETTING C.MENU.HELP■END■IF C.MENU.HELP GT NEW.MARK.LEVEL THEN NEW.MARK.LEVEL=C.MENU.HELP■IF C.MENU.PROCESS GE PREVIOUS.MARK.LEVEL THEN■REMOVE S.MENU.PROCESS FROM M.MENU.PROCESS AT P.MENU.PROCESS SETTING C.MENU.PROCESS■END■IF C.MENU.PROCESS GT NEW.MARK.LEVEL THEN NEW.MARK.LEVEL=C.MENU.PROCESS■IF C.MENU.COMMAND GE PREVIOUS.MARK.LEVEL THEN■REMOVE S.MENU.COMMAND FROM M.MENU.COMMAND AT P.MENU.COMMAND SETTING C.MENU.COMMAND■END■IF C.MENU.COMMAND GT NEW.MARK.LEVEL THEN NEW.MARK.LEVEL=C.MENU.COMMAND■* ■* DO CONVERSIONS IF ANY■* ■* ■@BREAK=PREV.MENU.TITLE■CONVERT CHAR(251) TO " " IN @BREAK■@BREAK = TRIM(@BREAK)■* ■* PRINT DETAIL LINE■* ■PRINT "  " : S.MENU.PROCESS "L#25" : " " :■PRINT S.MENU.COMMAND "L#25" : " " :■PRINT S.MENU.HELP "L#25"■IF NEW.MARK.LEVEL < 5  THEN PRINT■* ■IF NEW.MARK.LEVEL THEN■S.MENU.HELP=''■S.MENU.PROCESS=''■S.MENU.COMMAND=''■PREVIOUS.MARK.LEVEL=NEW.MARK.LEVEL■GOTO DETAIL■END■* ■PRINT■MENU.TITLE.BREAK.COUNT+=1■* ■GOTO READRECORD■* ■END■