!*! Updated on 01-Nov-91 at 12:15 PM by Michele Tonti; edit time: 0:00:25
.......|..>................................._..................... |
;^i*^i^i*^m
(%***************************************************************%
(* *
(* AMUS SOFTWARE LIBRARY INFORMATION SHEET *
(* *
(* Software name: _TYPET.BAS_ *
(* *
(* Created by: _Donn Rodekohr_ on: _May 28, 1983_ *
(* *
(* Donated to AMUS on: _May 23, 1985_ *
(* *
(* For information contact: _Donn Rodekohr_ *
(* _Nebraska Water Resources Center_ *
(* _310 Ag. Hall, East Campus_ *
(* _University of Nebraska_ *
(* _Lincoln, Ne. 68583-0710_ *
(* *
(* Status: *
(* [X] Donated (may be distributed) *
(* [ ] For demonstration (available on the Network) *
(* [ ] For AMUS staff use only *
(* *
(* Abstract: *
(* TYPET is a pre-processing program that is designed to ease *
(* the entry of complex and precise typesetting codes. *
(* There are two phases, or modes, in which the program *
(* operates. The first mode asks the user for typesetting *
(* codes which are assigned to a simple flag (e.g., ]1). *
(* When completed, a command file is created so that the *
(* typesetting codes do not need to be re-entered. The *
(* second mode processes a list file (.LST) substituting the *
(* typesetting codes for any flags that are found. The *
(* output file is called *.SAV. The program also removes *
(* any doublespaces, and sets the text to a left margin of *
(* zero (0). *
(* *
(* The function of the command file (named CODES.CMD) is to *
(* allow the operator to process several different files *
(* that have the same typesetting format without re-entering *
(* the typesetting codes. Additional codes may be entered *
(* if desired, and the command file can be re-generated. *
(* *
(%***************************************************************%
! TYPET.BAS -- a typesetting aide for standard .LST file
! Author: Donn Rodekohr, University of Nebraska
! Date Created: 4-23-83
! Date Donated: 4-23-85
! The function of this program is to ease the entry of complex typesetting
! codes by substituting a simple flag in the text file with the code.
head:
strsiz 132
map1 READY'DATA ! The name and size of the file to be typeset
map2 FIL2,s,10
map2 CNT,F,6
map1 TYPE'SET'CODES ! user set typesetting codes
map2 SPACER ! special case of leading spaces
map3 SP'FLAG(3),f,6
map3 SP'CODE(3),s,6
map2 CODE'FLAG(64),f,6
map2 CODES(64),s,24
map1 MISC'VAR
map2 CODE'CNT,f,6 ! count of all the codes set
map2 CDFLG,s,1,"]" ! flag for advising of code to follow
map2 row,f,6
map2 col,f,6
map2 EFLAG,f,6
data 49,57,65,90,97,122 ! ascii values for digits and letters
EFLAG = 1 ! what is the error flag value?
row = 2 ! where do I start printing?
q = 1 ! how many special cases are there?
screen'one:
print tab(-1,0)
print tab(1,18);"MODE I: TYPE SETTING CODE INPUT"
input'loop:
lpcnt = lpcnt + 1
read st,sp
for i = st to sp
z = z + 1
print tab(20,0),tab(-1,10)
print "Enter the typesetting code for ]"chr(i)
input line "(limit of 24 characters): ",CODES(z)
CODES(z) = ucs(CODES(z)) ! convert to upper case
if CODES(z) <> "" call show &
else i=sp : next i : goto exit'loop
call spec'case ! call sub for special cases
CODE'FLAG(z) = i
CODE'CNT = z
next i
if lpcnt < 3 then goto input'loop
exit'loop:
call print'out
print tab(-1,0)
print tab(4,18)
print "MODE II: PROCESSING TEXT"
? : ?
input "The name of the file you wanted processed -- "FIL$
FIL1$ = FIL$ + ".LST"
lookup FIL1$,W
if W = 0 then call not'here :&
on EFLAG goto exit'loop,that'is'all
if W < 0 then call random'file :&
on EFLAG goto exit'loop,that'is'all
if W > 0 then call found'it
finished:
close #1 ! input file *.lst
close #2 ! output file *.sav
open #3 "READY.DAT",output ! store the processed file name and line count
print #3 FIL2;CNT
close #3
that'is'all:
print tab(22,0)tab(-1,10)
print "Enter command"
end
! ***********************************************************
! SUBROUTINES THAT CHECK FOR FILE EXISTANCE
not'here:
print chr(7)
print tab(20,0);tab(-1,10)
print "Sorry, but "FIL1$" is not located in your directory."
print
input "Do you wish to try another file name? (Y or N) "AN$
AN$ = ucs(AN$)
IF AN$ = "N" then EFLAG = 2
return
random'file:
print chr(7)
print tab(10,0);tab(-1,10)
print "Sorry, but "FIL1$" is a random access file and is not printable."
print
input "Do you wish to try another file name? (Y or N) "AN$
AN$ = ucs(AN$)
IF AN$ = "N" then EFLAG = 2
return
! ***********************************************************
! SUBROUTINES CALLED FROM INPUT LOOP
show:
if z > 32 goto page'two
if z < 16 then col = 1
row = row + 1
if row = 17 then row = 3
if z => 16 then col = 40
print tab(row,col)"]"chr(i)" : "
print tab(row,col+6)CODES(z)
return
page'two:
if page'flg = 0 then print tab(2,72)"PAGE 2";tab(-1,10) :&
page'flg = 1
if z < 48 then col = 1
row = row + 1
if row = 17 then row = 3
if z => 48 then col = 40
print tab(row,col)"]"chr(i)" : "CODES(z)
return
print'out:
print tab(20,0);tab(-1,10)
print "Do you want to generate a command file to save these codes"
input "and also get an explanitory print out of these codes? ",AN$
AN$ = UCS(AN$)
if AN$ = "Y" then goto proceed else return
proceed:
print tab(20,0);tab(-1,10)
input "Enter the name of the printer: ",PRNTR$
open #99,"CODES.LST",output
open #98,"CODES.CMD",output
print #98":R"
print #98"RUN TYPET"
for i = 1 to CODE'CNT
out'flag = 0
print ".";
for j = 1 to 3
if CODE'FLAG(i) = SP'FLG(j) then call print'spec'case
next j
if out'flag=1 then next i
OUT$ = CODES(i)+space(36-len(CODES(i)))
OUT2$ = "; code flag ]" + chr(CODE'FLAG(i))
OUT3$ = OUT$ + OUT2$
print #99 OUT3$
print #98 CODES(i)
next i
close #99
print ".";
close #98
print ".";
xcall spool,"CODES.LST",PRNTR$,2,1,"NORMAL"
print "Done"
return
spec'case: ! a special case of inserting leading blanks
if instr(1,CODES(z),"SP(") = 0 then goto go'back
CP = instr(4,CODES(z),")") ! look for close parenthesis
BLANKS$ = mid(CODES(z),4,(CP-4))
SP'FLG(q) = i
SP'CODE(q) = CODES(z)
q = q + 1
CODES(z) = space(BLANKS$)
go'back:
return
print'spec'case: ! how do you print these buggers out?
out'flag=1
OUT$ = SP'CODE(j)+space(36-len(SP'CODE(j)))
OUT2$ = "; code flag ]"+chr(SP'FLG(j))
OUT3$ = OUT$ + OUT2$
print #99 OUT3$
print #98 SP'CODE(j)
return
!******************************************************************
! SUBROUTINES FOR PROCESSING THE TYPESETTING CODES
found'it:
open #1,FIL1$,input
FIL2 = FIL$ + ".SAV"
open #2,FIL2,output
CNT = 0 ! line counter set to zero
print tab(12,0)
print "Number of lines processed -- "
start'reading:
input line #1,TEXT$
if eof(1) = 1 then goto home'james
CNT = CNT + 1
print tab(13,30);
print using "####",CNT;
X = 1
10 move'left: ! deletes all leading blanks
J$ = mid(TEXT$,X,1)
if asc(J$)=32 then X=X+1 :&
then goto move'left
SHORT1$ = right(TEXT$,(len(TEXT$)-(X-1)))
call check'dbl
call check'codes
print #2,SHORT1$
goto start'reading
home'james:
return
! ********************************************************
! SUBROUTINES CALLED FROM start'reading
check'dbl:
DBL$ = " "
K = instr(1,SHORT1$,DBL$)
if K = 0 then return
SHORTF$ = left$(SHORT1$,K) ! front half of line
SHORTB$ = right$(SHORT1$,(len(SHORT1$)-(K+1))) ! back half
SHORT1$ = SHORTF$ + SHORTB$
goto check'dbl ! look for more
check'codes:
CD = instr(1,SHORT1$,CDFLG) ! look for the ]
if CD = 0 then return
look'for'code:
Q$ = mid(SHORT1$,(CD+1),1) ! look to the first space after the code flag
if asc(Q$) < 48 then call next'half :&
return ! check the back side of the line
CODE = asc(Q$)
for i = 1 to CODE'CNT
if CODE = CODE'FLAG(i) then call real'code
next i
goto check'codes ! look for many flags
next'half:
SHORT2$=left$(SHORT1$,CD) ! save the front half of the line
SHORT3$ = right$(SHORT1$,(len(SHORT1$)-(CD+1)))
CD = instr(1,SHORT3$,CDFLG) ! look for code in last part
if CD = 0 then goto done'with'this'half
Q$ = mid(SHORT3$,(CD+1),1)
if asc(Q$) < 48 then goto done'with'this'half
CODE = asc(Q$)
CD = CD + len(SHORT2$) + 1 ! get proper replacement spot
for i = 1 to CODE'CNT
if CODE = CODE'FLAG(i) then call real'code
next i
done'with'this'half:
return