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▓ ≤Çä@ÄÇÄ@ÄÇ@Äè