perm filename PUBMAC.DFS[2,TES] blob sn#036705 filedate 1973-04-24 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00002 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	.!SPACES ← "#####################################################" 
 00009 ENDMK
⊗;
.!SPACES ← "#####################################################" ;
.!HYPHENS ← "--------------------------------------------------------------" ;
.MACRO FRACTION(NUM, DEN) ; ⊂
.TURN ON "{↑↓[]&#" ;
.	N ← "NUM" ; D ← "DEN" ;
.	LN ← LENGTH(N) ; LD ← LENGTH(D) ;
.	IF LN > LD THEN START D ← !SPACES[1 TO (LN-LD) DIV 2] & D ; LMAX ← LN END ;
.	IF LD > LN THEN START N ← !SPACES[1 TO (LD-LN) DIV 2] & N ; LMAX ← LD END ;
.	"↑[{N}]&↓[{D}]&[{(!HYPHENS[1 TO LMAX])}]" ; TURN OFF ; ⊃
.MACRO SCRIPTS ⊂ TURN ON "↑↓[]&_∪" ⊃
.MACRO GREEKS ⊂ TURN ON "{∂\αβ#←→∞" ⊃
.MACRO FORMAT ⊂ SCRIPTS ; GREEKS ⊃
.MACRO STANDARD FRONT(SECPRINT, SSPRINT, PAGEPRINT, INDEXCHAR) ⊂
.IF "SECPRINT" ≠ NULL THEN
.	START
.	COUNT SECTION PRINTING "SECPRINT"
.	MACRO SEC(NAME) ⊂ SECNAME ← SSNAME ← NULL ;
.	NEXT PAGE; NEXT SECTION;
.		BEGIN
.		FORMAT CENTER
↓_SECTION {!}_↓
.		SKIP
↓_NAME_↓
.		SKIP 3
.		SECNAME ← "NAME"
.		SEND CONTENTS ⊂ SKIP 1;
{SECTION!}∂8NAME{BREAK ⊃
.		END	⊃
.	END ;
.IF "SSPRINT" ≠ NULL THEN
.	START
.	SUBBING ← "YES"
.	COUNT SUBSECTION IN SECTION PRINTING "SSPRINT"
.	MACRO SS(NAME) ⊂ SSNAME←"NAME"; IF LINES<7 THEN NEXT PAGE; NEXT SUBSECTION;
.		START
.		FILL SKIP 2 TURN ON "{∂∞→#↓_"
.		SEND CONTENTS ⊂
∂(13){SUBSECTION!}∂(23)NAME\∞ ∞.∞ →#{PAGE!}
. ⊃
.		END
↓_NAME_↓
.		SKIP
{!}.##{		TURN OFF ; ⊃
.	END
.ELSE SUBBING ← "NO"
.IF "PAGEPRINT" ≠ NULL THEN COUNT PAGE IN SECTION PRINTING "PAGEPRINT"
.INDEXING ← IF "INDEXCHAR"=NULL THEN "*" ELSE "INDEXCHAR" ;
.IF "INDEXCHAR" ≠ NULL THEN
.	START
.	AT INDEXING  PHRASE  INDEXING  ⊂
.		"PHRASE" ; TURN ON "{"
.		SEND INDEX ⊂}<<{PAGE}#PHRASE#{⊃
.			   TURN OFF	     ⊃
.	END
.ELSE INDEXING ← "NO"
.INSERT CONTENTS
.PORTION MAINPORTION
.SECNAME ← SSNAME ← NULL
.		⊃
.
.MACRO STANDARD BACK ⊂
.SECNAME ← SSNAME ← NULL
.IF INDEXING ≠ "NO" THEN
.	START
.	PORTION INDEX
.	WASWORD ← WASLETT ← WASPG ← NULL ;
.	AT "<<" PGNO "#" PHRASE "#" ⊂ LETT ← "PHRASE"[1] ;
.		IF LETT ≠ WASLETT THEN IF LINES<6 THEN NEXT PAGE ELSE SKIP 2 ;
.		IF "PHRASE" ≠ WASWORD THEN START BREAK }PHRASE##PGNO{ END
.		ELSE IF "PGNO" ≠ WASPG THEN },#PGNO{ ;
.		WASPG ← "PGNO" ; WASLETT ← LETT ; WASWORD ← "PHRASE" ; ⊃
.	NOFILL FORMAT INDENT 0,0 PREFACE 0
←INDEX
.	SKIP 4
.	SECNAME ← "INDEX"
.	RECEIVE "##"
.	SECNAME ← NULL
.	END
.COUNT PAGE PRINTING "i"
.PORTION CONTENTS
.FILL NOJUST FORMAT CRBREAK
.INDENT 0,30,10 PREFACE 1 TABS 30,33,36,39,42,45,48,51,54,57,60,63
←↓_T A B L E   O F   C O N T E N T S_↓
.SKIP 3
.IF SUBBING THEN
←SECTION→PAGE
.SKIP 2
.SECNAME ← "TABLE OF CONTENTS"
.RECEIVE
.		⊃