1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-04-29 21:17:05 +00:00

Commit changes to SNOBOL files in preparation for proofing and correction: correct sequence numbers, up-case text; commit README file.

This commit is contained in:
Paul Kimpel
2016-07-16 18:19:45 -07:00
parent 06f337393f
commit ef496fd661
3 changed files with 8162 additions and 8130 deletions

View File

@@ -0,0 +1,37 @@
SNOBOL3 Interpreter for the Burroughs B5500
This implementation of SNOBOL3 was written by John Chambers at the
University of Wisconsin. The source was apparently obtained from CUBE
library tape CUBEA13, file SNOBOL/L200010.
A user manual is available at
http://bitsavers.org/pdf/burroughs/B5000_5500_5700/listing/
B5700_Snobol_Manual_Jun76.pdf.
The compiler and test program were originally transcribed by Rich
Cornwell of North Carolina, US.
**NOTE**
These files have not yet been proofread and corrected.
SNOBOL3-Compile.card
Card deck to compile the SNOBOL interpreter.
SYMBOL/SNOBOL.alg_m
Source of the interpreter, transcribed from
http://bitsavers.org/pdf/burroughs/B5000_5500_5700/listing/
B5700_Snobol_Compiler_Apr77.pdf
by Rich Cornwell of
SNTEST.card
A card deck with a series of SNOBOL test runs supplied by Rich
Cornwell.
__________
2016-07-16 Paul Kimpel
Commit initial files as transcribed by Rich Cornwell; overwrite with
revised source having up-cased text and sequence number corrections,
ready for proofreading.

View File

@@ -1,159 +1,159 @@
?execute snobol/disk ?EXECUTE SNOBOL/DISK
?file print = print back up disk ?FILE PRINT = PRINT BACK UP DISK
?common=3 ?COMMON=3
?data program ?DATA PROGRAM
-list -LIST
* example 2, differentiation of algebraic expression * EXAMPLE 2, DIFFERENTIATION OF ALGEBRAIC EXPRESSION
* *
* this program differentiates a fully parenthesized * THIS PROGRAM DIFFERENTIATES A FULLY PARENTHESIZED
* algebraic expression with respect to x. the exponentiation * ALGEBRAIC EXPRESSION WITH RESPECT TO X. THE EXPONENTIATION
* operator is indicated by a dollar sign. * OPERATOR IS INDICATED BY A DOLLAR SIGN.
- space 2 - SPACE 2
define("d(d)","do","u,v,n") DEFINE("D(D)","DO","U,V,N")
define("simplify(exp)","s0","u") DEFINE("SIMPLIFY(EXP)","S0","U")
trace("d,simplify") TRACE("D,SIMPLIFY")
- space - SPACE
* READ In the expression. * READ IN THE EXPRESSION.
- space - SPACE
read exp = trim(syspit) /f(end) READ EXP = TRIM(SYSPIT) /F(END)
- space - SPACE
mode("anchor") MODE("ANCHOR")
syspot = SYSPOT =
syspot = "the derivative of " exp " is " simplify(d(exp)) SYSPOT = "THE DERIVATIVE OF " EXP " IS " SIMPLIFY(D(EXP))
. /(end) . /(END)
- space 2 - SPACE 2
* the function "d" * THE FUNCTION "D"
- space - SPACE
do d "(" *(u)* "+" *(v)* ")" = "(" d(u) "+" d(v) ")" DO D "(" *(U)* "+" *(V)* ")" = "(" D(U) "+" D(V) ")"
. /s(return) . /S(RETURN)
- space - SPACE
D "(" *(u)* "-" *(v)* ")" = "(" d(u) "-" d(v) ")" D "(" *(U)* "-" *(V)* ")" = "(" D(U) "-" D(V) ")"
. /s(return) . /S(RETURN)
- space - SPACE
D "(" *(u)* "*" *(v)* ")" = "((" u "*" d(v) ")+(" D "(" *(U)* "*" *(V)* ")" = "((" U "*" D(V) ")+("
. v "*" d(u) "))" /s(return) . V "*" D(U) "))" /S(RETURN)
- space - SPACE
D "(" *(u)* "/" *(v)* ")" = "(((" v "*" d(u) ")-(" D "(" *(U)* "/" *(V)* ")" = "(((" V "*" D(U) ")-("
. u "*" d(v) "))/(" v "$2))" /s(return) . U "*" D(V) "))/(" V "$2))" /S(RETURN)
- space - SPACE
D "(" *(u)* "$" *(v)* ")" = D "(" *(U)* "$" *(V)* ")" =
. "((" n "*(" U "$" n - "1" "))*" d(U) ")" . "((" N "*(" U "$" N - "1" "))*" D(U) ")"
. /s(return) . /S(RETURN)
- space - SPACE
d = equals(d,"x") "1" /s(return) D = EQUALS(D,"X") "1" /S(RETURN)
d = "0" /(return) D = "0" /(RETURN)
* the function "simplify" * THE FUNCTION "SIMPLIFY"
- space - SPACE
s0 mode("unanch") S0 MODE("UNANCH")
s1 exp "(" *(u)* "*0)" = "0" /s(s1) S1 EXP "(" *(U)* "*0)" = "0" /S(S1)
exp "(0*" *(u)* ")" = "0" /s(s1) EXP "(0*" *(U)* ")" = "0" /S(S1)
s2 exp "(" *(u)* "$1)" = u /s(s2) S2 EXP "(" *(U)* "$1)" = U /S(S2)
s3 exp "(" *(u)* "*1)" = u /s(s3) S3 EXP "(" *(U)* "*1)" = U /S(S3)
s4 exp "(1*" *(u)* ")" = u /s(s4) S4 EXP "(1*" *(U)* ")" = U /S(S4)
s5 exp "(0+" *(u)* ")" = u /s(s5) S5 EXP "(0+" *(U)* ")" = U /S(S5)
s6 exp "(" *(u)* "+0)" = U /S(S6) S6 EXP "(" *(U)* "+0)" = U /S(S6)
s7 exp "(" *(u)* "-0)" = u /s(s7) S7 EXP "(" *(U)* "-0)" = U /S(S7)
simplify = exp /(return) SIMPLIFY = EXP /(RETURN)
end END
?data card ?DATA CARD
(((a*(x$2))+(b*x))+c) (((A*(X$2))+(B*X))+C)
?end ?END
?execute snobol/disk ?EXECUTE SNOBOL/DISK
?file print = print back up disk ?FILE PRINT = PRINT BACK UP DISK
?common=3 ?COMMON=3
?data program ?DATA PROGRAM
-list -LIST
* example 1. the wang algorithm * EXAMPLE 1. THE WANG ALGORITHM
* *
* this program is the algorithm by hao want (cf. "toward * THIS PROGRAM IS THE ALGORITHM BY HAO WANT (CF. "TOWARD
* mechanical mathematics", ibm journal be research and * MECHANICAL MATHEMATICS", IBM JOURNAL BE RESEARCH AND
* development for the propositional calculus., it prints out a * DEVELOPMENT FOR THE PROPOSITIONAL CALCULUS., IT PRINTS OUT A
* PRoof or disproof according as a given formula is a theorem * PROOF OR DISPROOF ACCORDING AS A GIVEN FORMULA IS A THEOREM
* or not. thealogrithm uses sequents which consist of two * OR NOT. THEALOGRITHM USES SEQUENTS WHICH CONSIST OF TWO
* lists of formulas seperated by an arrow (--*). INITIALLY, for * LISTS OF FORMULAS SEPERATED BY AN ARROW (--*). INITIALLY, FOR
* a given formula p the sequent * A GIVEN FORMULA P THE SEQUENT
* *
* --* f * --* F
* *
* is formed. wang has defined rules for simplifying a formula * IS FORMED. WANG HAS DEFINED RULES FOR SIMPLIFYING A FORMULA
* IN a sequent by removing the main connective and then * IN A SEQUENT BY REMOVING THE MAIN CONNECTIVE AND THEN
* generating a new sequent or sequents. there is a terminal * GENERATING A NEW SEQUENT OR SEQUENTS. THERE IS A TERMINAL
* test for a sequent consisting of only atomic formulas: * TEST FOR A SEQUENT CONSISTING OF ONLY ATOMIC FORMULAS:
* *
* two sequent consisting of only atomic formulas is valid if * TWO SEQUENT CONSISTING OF ONLY ATOMIC FORMULAS IS VALID IF
* the two lists of formulas have a formula in common. * THE TWO LISTS OF FORMULAS HAVE A FORMULA IN COMMON.
* *
* by repeated application of the rules one is led to a set of * BY REPEATED APPLICATION OF THE RULES ONE IS LED TO A SET OF
* sequents consisting of atomic formulas. if each one of these * SEQUENTS CONSISTING OF ATOMIC FORMULAS. IF EACH ONE OF THESE
* sequents is valid then so is the original formula. * SEQUENTS IS VALID THEN SO IS THE ORIGINAL FORMULA.
- space 5 - SPACE 5
define("wang(ante,conseq)" , "wang","phi,psi") DEFINE("WANG(ANTE,CONSEQ)" , "WANG","PHI,PSI")
* read in the expression * READ IN THE EXPRESSION
- space - SPACE
read exp = trim(syspit) /f(end) READ EXP = TRIM(SYSPIT) /F(END)
syspot = SYSPOT =
syspot = "formula: " exp SYSPOT = "FORMULA: " EXP
syspot = SYSPOT =
wang(," " exp) /f(invalid) WANG(," " EXP) /F(INVALID)
syspot = "valid" /(read) SYSPOT = "VALID" /(READ)
invalid syspot = "not valid" /(read) INVALID SYSPOT = "NOT VALID" /(READ)
wang syspot = ante " --* " conseq WANG SYSPOT = ANTE " --* " CONSEQ
ante " not(" *(phi)* ")" = /s(anot) ANTE " NOT(" *(PHI)* ")" = /S(ANOT)
ante " and(" *(phi)* "," *(psi)* ")" = /s(aand) ANTE " AND(" *(PHI)* "," *(PSI)* ")" = /S(AAND)
ante " imp(" *(phi)* "," *(psi)* ")" = /s(aimp) ANTE " IMP(" *(PHI)* "," *(PSI)* ")" = /S(AIMP)
ante " or(" *(phi)* "," *(psi)* ")" = /s(aor) ANTE " OR(" *(PHI)* "," *(PSI)* ")" = /S(AOR)
ante " equ(" *(phi)* "," *(psi)* ")" = /s(aequ) ANTE " EQU(" *(PHI)* "," *(PSI)* ")" = /S(AEQU)
- space - SPACE
conseq " not(" *(phi)* ")" = /s(cnot) CONSEQ " NOT(" *(PHI)* ")" = /S(CNOT)
conseq " and(" *(phi)* "," *(psi)* ")" = /s(cand) CONSEQ " AND(" *(PHI)* "," *(PSI)* ")" = /S(CAND)
conseq " imp(" *(phi)* "," *(psi)* ")" = /s(cimp) CONSEQ " IMP(" *(PHI)* "," *(PSI)* ")" = /S(CIMP)
conseq " or(" *(phi)* "," *(psi)* ")" = /s(cor) CONSEQ " OR(" *(PHI)* "," *(PSI)* ")" = /S(COR)
conseq " equ(" *(phi)* "," *(psi)* ")" = /s(cequ) CONSEQ " EQU(" *(PHI)* "," *(PSI)* ")" = /S(CEQU)
- space - SPACE
(ante " :" conseq " ") " " *(p)* " " ** ":" ** " " p " " (ANTE " :" CONSEQ " ") " " *(P)* " " ** ":" ** " " P " "
. /s(return)f(freturn) . /S(RETURN)F(FRETURN)
anot wang(ante,conseq " " phi) /s(return)f(freturn) ANOT WANG(ANTE,CONSEQ " " PHI) /S(RETURN)F(FRETURN)
- -
AAND wang(ante " " phi " " psi, conseq) /s(return)f(freturn) AAND WANG(ANTE " " PHI " " PSI, CONSEQ) /S(RETURN)F(FRETURN)
- -
aor wang(ante " " phi,conseq) /f(freturn) AOR WANG(ANTE " " PHI,CONSEQ) /F(FRETURN)
wang(ante " " psi,conseq) /s(return)f(freturn) WANG(ANTE " " PSI,CONSEQ) /S(RETURN)F(FRETURN)
- -
aimp wang(ante " " psi,conseq) /f(freturn) AIMP WANG(ANTE " " PSI,CONSEQ) /F(FRETURN)
wang(ante,conseq " " phi) /s(return)f(freturn) WANG(ANTE,CONSEQ " " PHI) /S(RETURN)F(FRETURN)
- -
aequ wang(ante " " phi " " psi,conseq) /f(freturn) AEQU WANG(ANTE " " PHI " " PSI,CONSEQ) /F(FRETURN)
wang(ante,conseq " " phi " " psi) /S(return)F(FREturn) WANG(ANTE,CONSEQ " " PHI " " PSI) /S(RETURN)F(FRETURN)
- -
cnot wang(ante " " phi,conseq) /s(return)f(freturn) CNOT WANG(ANTE " " PHI,CONSEQ) /S(RETURN)F(FRETURN)
- -
cand wang(ante,conseq " " phi) /f(freturn) CAND WANG(ANTE,CONSEQ " " PHI) /F(FRETURN)
wang(ante,conseq " " psi) /s(return)f(freturn) WANG(ANTE,CONSEQ " " PSI) /S(RETURN)F(FRETURN)
- -
cor wang(ante,conseq " " phi " " psi) /s(return)F(FRETURN) COR WANG(ANTE,CONSEQ " " PHI " " PSI) /S(RETURN)F(FRETURN)
- -
CIMP WANG(ANTE " " PHI,CONSEQ " " PSI) /s(return)f(freturn) CIMP WANG(ANTE " " PHI,CONSEQ " " PSI) /S(RETURN)F(FRETURN)
- -
cequ wang(ante " " phi,conseq " " psi) /f(freturn) CEQU WANG(ANTE " " PHI,CONSEQ " " PSI) /F(FRETURN)
wang(ante " " psi,conseq " " phi) /s(RETURN)f(freturn) WANG(ANTE " " PSI,CONSEQ " " PHI) /S(RETURN)F(FRETURN)
end END
imp(not(or(p,q)),not(p)) IMP(NOT(OR(P,Q)),NOT(P))
imp(and(not(p),not(q)),equ(p,q)) IMP(AND(NOT(P),NOT(Q)),EQU(P,Q))
imp(imp(OR(P,Q),or(p,r)),OR(P,imp(q,r))) IMP(IMP(OR(P,Q),OR(P,R)),OR(P,IMP(Q,R)))
stop STOP
?end ?END
?execute snobol/disk ?EXECUTE SNOBOL/DISK
?file print = print back up disk ?FILE PRINT = PRINT BACK UP DISK
?common=3 ?COMMON=3
?data program ?DATA PROGRAM
-list -LIST
* BLANK IS A CONCATENATION OPERATOR! * BLANK IS A CONCATENATION OPERATOR!
FIRST = "HORACE" FIRST = "HORACE"
SECOND = "GREELEY" SECOND = "GREELEY"
NAME = FIRST " " SECOND NAME = FIRST " " SECOND
SYSPOT = NAME SYSPOT = NAME
INT = 12 div 2 * 3 INT = 12 DIV 2 * 3
* MULTIPLICATION HAS HIGHER PRECEDENCE THAN DIVISION * MULTIPLICATION HAS HIGHER PRECEDENCE THAN DIVISION
* ARITHMETIC HAS HIGHER PRECENCE THAN CONCATENATION * ARITHMETIC HAS HIGHER PRECENCE THAN CONCATENATION
SYSPOT = "12 / 2 * 3 = " INT SYSPOT = "12 / 2 * 3 = " INT
@@ -174,208 +174,208 @@ LOOP STUFF "CAT" = "DOG" /S(LOOP)
END END
THE CAT JUMPED OVER THE DOG. THE CAT JUMPED OVER THE DOG.
THE DOG JUMPED OVER THE CAT. THE DOG JUMPED OVER THE CAT.
?end ?END
?execute snobol/disk ?EXECUTE SNOBOL/DISK
?file print = print back up disk ?FILE PRINT = PRINT BACK UP DISK
?common=3 ?COMMON=3
?data program ?DATA PROGRAM
-list -LIST
* ID START * ID START
* DATA * DATA
READ LINE = SYSPIT READ LINE = SYSPIT
LINE "STOP" /S(QUIT) LINE "STOP" /S(QUIT)
NLINE = LINE NLINE = LINE
NLINE *LAST* "," *FIRST* "-" *TITLE* NLINE *LAST* "," *FIRST* "-" *TITLE*
AUTHOR = FIRST " " LAST AUTHOR = FIRST " " LAST
TITLE = " " TITLE " " TITLE = " " TITLE " "
TITLE " THE " = " " TITLE " THE " = " "
TITLE " A " = " " TITLE " A " = " "
TITLE " AN " = " " TITLE " AN " = " "
STITLE = TITLE STITLE = TITLE
DEBLANK TITLE " " = " " /S(DEBLANK) DEBLANK TITLE " " = " " /S(DEBLANK)
LOOP TITLE " " = "," /S(LOOP) LOOP TITLE " " = "," /S(LOOP)
TITLE *FIRSTCHAR/"1"* = TITLE *FIRSTCHAR/"1"* =
WORDLIST = WORDLIST TITLE WORDLIST = WORDLIST TITLE
SYSPOT = LINE SYSPOT = LINE
SYSPOT = AUTHOR "-" STITLE SYSPOT = AUTHOR "-" STITLE
SYSPOT = TITLE "$" WORDLIST SYSPOT = TITLE "$" WORDLIST
/(READ) /(READ)
QUIT SIZE = "14" QUIT SIZE = "14"
REDEFINE ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. " REDEFINE ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. "
DECR SIZE = SIZE - "1" DECR SIZE = SIZE - "1"
SIZE "-" /S(DONE) SIZE "-" /S(DONE)
BACK WORDLIST *WORD* "," = /F(LAST) BACK WORDLIST *WORD* "," = /F(LAST)
WORD *HEAD/SIZE* *PIT/"1"* /F(ALL) WORD *HEAD/SIZE* *PIT/"1"* /F(ALL)
$PIT = $PIT WORD "," /(BACK) $PIT = $PIT WORD "," /(BACK)
ALL BIN = BIN WORD "," /(BACK) ALL BIN = BIN WORD "," /(BACK)
LAST BIN *WORDLIST* = LAST BIN *WORDLIST* =
AGAIN ALPHABET *PIT/"1"* = /F(REDEFINE) AGAIN ALPHABET *PIT/"1"* = /F(REDEFINE)
WORDLIST = WORDLIST $PIT WORDLIST = WORDLIST $PIT
$PIT = /(AGAIN) $PIT = /(AGAIN)
DONE SYSPOT = "WORDLIST" WORDLIST DONE SYSPOT = "WORDLIST" WORDLIST
END READ END READ
STURGEON,THEODORE-MORE THAN HUMAN STURGEON,THEODORE-MORE THAN HUMAN
SMITH,E.E.-GRAY LENSMAN SMITH,E.E.-GRAY LENSMAN
SMITH,E.E.-TRIPLANETARY SMITH,E.E.-TRIPLANETARY
RAGAN,RICHARD-TEST THE PROGRAM RAGAN,RICHARD-TEST THE PROGRAM
STOP STOP
?end ?END
?execute snobol/disk ?EXECUTE SNOBOL/DISK
?file print = print back up disk ?FILE PRINT = PRINT BACK UP DISK
?common=3 ?COMMON=3
?data program ?DATA PROGRAM
-list -LIST
DEFINE("PERM(NAME,RENAME)","ENT") DEFINE("PERM(NAME,RENAME)","ENT")
READ1 CARD1 = SYSPIT READ1 CARD1 = SYSPIT
CARD1 "STOP" /S(END) CARD1 "STOP" /S(END)
CARD2 = SYSPIT CARD2 = SYSPIT
CARD1 *NUMCOD1/"6"* = CARD1 *NUMCOD1/"6"* =
CARD2 *NUMCOD2/"4"* = CARD2 *NUMCOD2/"4"* =
CARD1 *Y/"2"* = CARD1 *Y/"2"* =
CARD2 *Y/"4"* = CARD2 *Y/"4"* =
EQUALS(CARD1,CARD2) /S(SAME) EQUALS(CARD1,CARD2) /S(SAME)
NUM1 = PERM(CARD1,"FIRST") NUM1 = PERM(CARD1,"FIRST")
NUM2 = PERM(CARD2,"LAST") NUM2 = PERM(CARD2,"LAST")
.EQ(NUM1,NUM2) /S(ASET) .EQ(NUM1,NUM2) /S(ASET)
.LT(NUM1,NUM2) /S(FILL1)F(FILL2) .LT(NUM1,NUM2) /S(FILL1)F(FILL2)
FILL1 A = NUM1 FILL1 A = NUM1
ADD A = A + "1" ADD A = A + "1"
$("FIRST" A ) = $("FIRST" A ) =
.EQ(A,NUM2) /F(ADD)S(CONT) .EQ(A,NUM2) /F(ADD)S(CONT)
FILL2 A = NUM2 FILL2 A = NUM2
INCR A = A + "1" INCR A = A + "1"
$("LAST" A) = $("LAST" A) =
.EQ(A,NUM1) /F(INCR)S(CONT) .EQ(A,NUM1) /F(INCR)S(CONT)
ASET A = NUM1 ASET A = NUM1
CONT COUNT = "0" CONT COUNT = "0"
MORE COUNT = COUNT + "1" MORE COUNT = COUNT + "1"
SYSPOT = NUMCOD1 " " NUMCOD2 " " $("FIRST" COUNT) SYSPOT = NUMCOD1 " " NUMCOD2 " " $("FIRST" COUNT)
SYSPOT = NUMCOD1 " " NUMCOD2 " " $("LAST" COUNT) SYSPOT = NUMCOD1 " " NUMCOD2 " " $("LAST" COUNT)
.EQ(COUNT,A) /F(MORE)S(READ1) .EQ(COUNT,A) /F(MORE)S(READ1)
SAME SYSPOT = NUMCOD1 " " NUMCOD2 " " CARD1 /(READ1) SAME SYSPOT = NUMCOD1 " " NUMCOD2 " " CARD1 /(READ1)
ENT NAME = TRIM(NAME) " " ENT NAME = TRIM(NAME) " "
DEBLANK NAME " " = " " /S(DEBLANK) DEBLANK NAME " " = " " /S(DEBLANK)
NAME *WORD1* " " = NAME *WORD1* " " =
NAME = NAME "$" WORD1 " " NAME = NAME "$" WORD1 " "
PERM = "0" PERM = "0"
LOOP PERM = PERM + "1" LOOP PERM = PERM + "1"
NAME *WORD* " " = NAME *WORD* " " =
NAME = NAME WORD " " NAME = NAME WORD " "
NAME ANCHOR(X) "$" = /S(RETURN) NAME ANCHOR(X) "$" = /S(RETURN)
$(RENAME PERM ) = NAME $(RENAME PERM ) = NAME
CLEAN $(RENAME PERM ) "$" = /S(CLEAN)F(LOOP) CLEAN $(RENAME PERM ) "$" = /S(CLEAN)F(LOOP)
END END
STURGEON,THEODORE-MORE THAN HUMAN STURGEON,THEODORE-MORE THAN HUMAN
SMITH,E.E.-GRAY LENSMAN SMITH,E.E.-GRAY LENSMAN
SMITH,E.E.-TRIPLANETARY SMITH,E.E.-TRIPLANETARY
RAGAN,RICHARD-TEST THE PROGRAM RAGAN,RICHARD-TEST THE PROGRAM
STOP STOP
?end ?END
?execute snobol/disk ?EXECUTE SNOBOL/DISK
?file print = print back up disk ?FILE PRINT = PRINT BACK UP DISK
?common=3 ?COMMON=3
?data program ?DATA PROGRAM
-list -LIST
- TITLE PROCESS S A T AND 1 2 T H G R A D E CARDS. - TITLE PROCESS S A T AND 1 2 T H G R A D E CARDS.
* THIS PROGRAM TAKES AN SAT CARD AND A 12TH GRADE SCHOOL CARD * THIS PROGRAM TAKES AN SAT CARD AND A 12TH GRADE SCHOOL CARD
* AND ATTEMPTS TO GENERATE A SINGLE CARD COMBINING THE * AND ATTEMPTS TO GENERATE A SINGLE CARD COMBINING THE
* INFORMATION ON BOTH OF THESE. IN PARTICULAR THE PROGRAM * INFORMATION ON BOTH OF THESE. IN PARTICULAR THE PROGRAM
* SEARCHES OUT THE BEST SCHOOL NAME FROM THE TWO CARDS. * SEARCHES OUT THE BEST SCHOOL NAME FROM THE TWO CARDS.
* WHEN A MATCH IS NOT OBTAINED MULTIPLE CARDS ARE GENERATED * WHEN A MATCH IS NOT OBTAINED MULTIPLE CARDS ARE GENERATED
* CONTAINING CYCLIC PERMUTATIONS OF THE SCHOOL NAME FROM * CONTAINING CYCLIC PERMUTATIONS OF THE SCHOOL NAME FROM
* BOTH CARDS. THE CHOICE OF THE ADDRESS CARD TO BE USED * BOTH CARDS. THE CHOICE OF THE ADDRESS CARD TO BE USED
* IS LEFT TO THE DISCRETION OF THE USER. IN GENERAL * IS LEFT TO THE DISCRETION OF THE USER. IN GENERAL
* ONLY ONE CARD WILL BE GENERATED SINCE CERTAIN KEYWORDS * ONLY ONE CARD WILL BE GENERATED SINCE CERTAIN KEYWORDS
* SUCH AS "HIGH" , "SCHOOL", "HS", "H S" ARE ELIMINATED * SUCH AS "HIGH" , "SCHOOL", "HS", "H S" ARE ELIMINATED
* FROM THE TEXT BEFORE COMPARISON OF SCHOOL NAMES IS * FROM THE TEXT BEFORE COMPARISON OF SCHOOL NAMES IS
* ATTEMPTED. THIS RESULTS IN A MUCH HIGHER PERCENTAGE OF * ATTEMPTED. THIS RESULTS IN A MUCH HIGHER PERCENTAGE OF
* MATCHES THAN WOULD OTHERWISE BE OBTAINED. * MATCHES THAN WOULD OTHERWISE BE OBTAINED.
* *
* RICHARD RAGAN * RICHARD RAGAN
* FSU COMPUTING CNTR. * FSU COMPUTING CNTR.
* 5-1-66 * 5-1-66
DEFINE("EXCERPT(STRING,WORD1,WORD2)","ENTRY") DEFINE("EXCERPT(STRING,WORD1,WORD2)","ENTRY")
DEFINE("PERM(NAME,RENAME)","ENT") DEFINE("PERM(NAME,RENAME)","ENT")
DEFINE("HSGET(SNAME,SLOC)","Z") DEFINE("HSGET(SNAME,SLOC)","Z")
DEFINE("RESTOR(QUAL,QUAN)","104") DEFINE("RESTOR(QUAL,QUAN)","104")
BLANK = " " BLANK = " "
READ SAT = SYSPIT READ SAT = SYSPIT
SAT "STOP" /S(END) SAT "STOP" /S(END)
12TH = SYSPIT 12TH = SYSPIT
12TH *12CODE/"4"* *FILLER/"3"* *12NAME/"27"* *COUNTY/"4"* 12TH *12CODE/"4"* *FILLER/"3"* *12NAME/"27"* *COUNTY/"4"*
. *FILLER/"3"* *CTYCODE/"2"* *FILLER/"3"* *12LOC* . *FILLER/"3"* *CTYCODE/"2"* *FILLER/"3"* *12LOC*
SAT *FILLER/"2"* *SATCODE/"4"* *FILLER/"2"* *SATNAME/"21"* SAT *FILLER/"2"* *SATCODE/"4"* *FILLER/"2"* *SATNAME/"21"*
. *FILLER/"22"* *SATLOC* . *FILLER/"22"* *SATLOC*
12NAME = TRIM(12NAME) " " 12NAME = TRIM(12NAME) " "
SATNAME = TRIM(SATNAME) " " SATNAME = TRIM(SATNAME) " "
DEMIN 12NAME "-" = " " /S(DEMIN) DEMIN 12NAME "-" = " " /S(DEMIN)
DEMINUS SATNAME "-" = " " /S(DEMINUS) DEMINUS SATNAME "-" = " " /S(DEMINUS)
SATNAME = HSGET(SATNAME,12LOC) SATNAME = HSGET(SATNAME,12LOC)
S12NAME = 12NAME S12NAME = 12NAME
SSATNAME = SATNAME SSATNAME = SATNAME
12NAME = EXCERPT(12NAME," SCHOOL "," SCH ") 12NAME = EXCERPT(12NAME," SCHOOL "," SCH ")
12NAME = EXCERPT(12NAME," H "," S ") 12NAME = EXCERPT(12NAME," H "," S ")
12NAME = EXCERPT(12NAME," HS "," HIGH ") 12NAME = EXCERPT(12NAME," HS "," HIGH ")
SATNAME = EXCERPT(SATNAME," SCHOOL "," SCH ") SATNAME = EXCERPT(SATNAME," SCHOOL "," SCH ")
SATNAME = EXCERPT(SATNAME," H "," S ") SATNAME = EXCERPT(SATNAME," H "," S ")
SATNAME = EXCERPT(SATNAME," HS "," HIGH ") SATNAME = EXCERPT(SATNAME," HS "," HIGH ")
12NAME = EXCERPT(12NAME," SR "," JR ") 12NAME = EXCERPT(12NAME," SR "," JR ")
SATNAME = EXCERPT(SATNAME," SR "," JR ") SATNAME = EXCERPT(SATNAME," SR "," JR ")
EQUALS(12NAME,SATNAME) /S(LUCK) EQUALS(12NAME,SATNAME) /S(LUCK)
OFF = RESTOR(12NAME,S12NAME) OFF = RESTOR(12NAME,S12NAME)
ON = RESTOR(SATNAME,SSATNAME) ON = RESTOR(SATNAME,SSATNAME)
P12 = PERM(12NAME,"12.") P12 = PERM(12NAME,"12.")
PSAT = PERM(SATNAME,"SAT.") PSAT = PERM(SATNAME,"SAT.")
COUNT = "0" COUNT = "0"
MORE COUNT = COUNT + "1" MORE COUNT = COUNT + "1"
ALL = $("12." COUNT) OFF ALL = $("12." COUNT) OFF
ALL = ALL BLANK ALL = ALL BLANK
ALL *FIXFLD/"27"* ALL *FIXFLD/"27"*
SYSPPT = 12CODE SATCODE CTYCODE COUNTY FIXFLD TRIM(12LOC) SYSPPT = 12CODE SATCODE CTYCODE COUNTY FIXFLD TRIM(12LOC)
.EQ(P12,COUNT) /F(MORE) .EQ(P12,COUNT) /F(MORE)
COUNT = "0" COUNT = "0"
AGAIN COUNT = COUNT + "1" AGAIN COUNT = COUNT + "1"
NONE = $("SAT." COUNT) ON NONE = $("SAT." COUNT) ON
NONE = NONE BLANK NONE = NONE BLANK
NONE *FLD/"27"* NONE *FLD/"27"*
SYSPPT = 12CODE SATCODE CTYCODE COUNTY FLD TRIM(12LOC) SYSPPT = 12CODE SATCODE CTYCODE COUNTY FLD TRIM(12LOC)
.EQ(PSAT,COUNT) /F(AGAIN)S(READ) .EQ(PSAT,COUNT) /F(AGAIN)S(READ)
LUCK .GE(SIZE(S12NAME),SIZE(SSATNAME)) /S(S12)F(SSAT) LUCK .GE(SIZE(S12NAME),SIZE(SSATNAME)) /S(S12)F(SSAT)
S12 S12NAME = S12NAME BLANK S12 S12NAME = S12NAME BLANK
S12NAME *SAVE/"27"* S12NAME *SAVE/"27"*
SYSPPT = 12CODE SATCODE CTYCODE COUNTY SAVE TRIM(12LOC) SYSPPT = 12CODE SATCODE CTYCODE COUNTY SAVE TRIM(12LOC)
. /(READ) . /(READ)
SSAT SSATNAME = SSATNAME BLANK SSAT SSATNAME = SSATNAME BLANK
SSATNAME *KEEP/"27"* SSATNAME *KEEP/"27"*
SYSPPT = 12CODE SATCODE CTYCODE COUNTY KEEP TRIM(12LOC) SYSPPT = 12CODE SATCODE CTYCODE COUNTY KEEP TRIM(12LOC)
. /(READ) . /(READ)
- EJECT - EJECT
ENTRY STRING WORD1 = " " ENTRY STRING WORD1 = " "
STRING WORD2 = " " STRING WORD2 = " "
EXCERPT = STRING /(RETURN) EXCERPT = STRING /(RETURN)
- EJECT - EJECT
Z SNAME ANCHOR(X) "HIGH SCHOOL" /F(FRETURN) Z SNAME ANCHOR(X) "HIGH SCHOOL" /F(FRETURN)
SLOC *TNAME* "FLORIDA" /S(ROTAT) SLOC *TNAME* "FLORIDA" /S(ROTAT)
SLOC *TNAME* "FLA" /F(FRETURN) SLOC *TNAME* "FLA" /F(FRETURN)
ROTAT HSGET = TNAME SNAME /(RETURN) ROTAT HSGET = TNAME SNAME /(RETURN)
- EJECT - EJECT
ENT NAME = TRIM(NAME) " " ENT NAME = TRIM(NAME) " "
PERM = "1" PERM = "1"
DEBLANK NAME " " = " " /S(DEBLANK) DEBLANK NAME " " = " " /S(DEBLANK)
$(RENAME PERM) = NAME $(RENAME PERM) = NAME
NAME *WORD1* " " = NAME *WORD1* " " =
NAME = NAME "$" WORD1 " " NAME = NAME "$" WORD1 " "
NAME ANCHOR(X) "$" = /S(RETURN) NAME ANCHOR(X) "$" = /S(RETURN)
LOOP PERM = PERM + "1" LOOP PERM = PERM + "1"
$(RENAME PERM) = NAME $(RENAME PERM) = NAME
NAME *WORD* " " = NAME *WORD* " " =
NAME ANCHOR(X) "$" = /S(OKAY) NAME ANCHOR(X) "$" = /S(OKAY)
NAME = NAME WORD " " NAME = NAME WORD " "
CLEAN $(RENAME PERM) "$" = /S(CLEAN) CLEAN $(RENAME PERM) "$" = /S(CLEAN)
BL $(RENAME PERM) " " = " " /S(BL)F(LOOP) BL $(RENAME PERM) " " = " " /S(BL)F(LOOP)
OKAY $(RENAME PERM) "$" = /(RETURN) OKAY $(RENAME PERM) "$" = /(RETURN)
- EJECT - EJECT
104 QUAN QUAL *CODE* 104 QUAN QUAL *CODE*
RESTOR = TRIM(CODE) " " /(RETURN) RESTOR = TRIM(CODE) " " /(RETURN)
END END
?end ?END

File diff suppressed because it is too large Load Diff