$ od -c -N 50000 [Erinyes]<LispManual>Draft>CHAPIO.TXT!1
0000000 \r 2 6 . \t I N P U T / O U T
0000020 P U T F U N C T I O N S \r \r
0000040 \r T h i s c h a p t e r d e
0000060 s c r i b e s t h e s t a n
0000100 d a r d I / O f u n c t i o
0000120 n s u s e d f o r r e a d
0000140 i n g a n d p r i n t i n g
0000160 c h a r a c t e r s a n d
0000200 I n t e r l i s p e x p r e s
0000220 s i o n s o n f i l e s a
0000240 n d o t h e r s t r e a m s
0000260 . F i r s t , t h e p r
0000300 i m i t i v e i n p u t f u
0000320 n c t i o n s a r e p r e s
0000340 e n t e d , t h e n t h e
0000360 o u t p u t f u n c t i o n s
0000400 , t h e n f u n c t i o n s
0000420 f o r r a n d o m - a c c e
0000440 s s o p e r a t i o n s ( s
0000460 u c h a s s e a r c h i n g
0000500 a f i l e f o r a g i
0000520 v e n s t r e a m , o r c
0000540 h a n g i n g t h e " n e x
0000560 t - c h a r a c t e r " p o i
0000600 n t e r t o a p o s i t i
0000620 o n i n a f i l e ) .
0000640 N e x t , t h e P R I N T O
0000660 U T s t a t e m e n t i s
0000700 d o c u m e n t e d ( p a g e
0000720 X . X X ) , w h i c h p r
0000740 o v i d e s a n e a s y w
0000760 a y t o w r i t e c o m p
0001000 l e x o u t p u t o p e r a
0001020 t i o n s . F i n a l l y ,
0001040 r e a d t a b l e s , u s e
0001060 d t o p a r s e c h a r a
0001100 c t e r s a s I n t e r l i
0001120 s p e x p r e s s i o n s ,
0001140 a r e d o c u m e n t e d . \r
0001160 \r 2 6 . 1 \t I n p u t F u
0001200 n c t i o n s \r \r M o s t o f
0001220 t h e f u n c t i o n s d
0001240 e s c r i b e d b e l o w h
0001260 a v e a n a r g u m e n t
0001300 F I L E , w h i c h s p e c
0001320 i f i e s t h e s t r e a m
0001340 o n w h i c h t h e o p
0001360 e r a t i o n i s t o t a
0001400 k e p l a c e . I f F I
0001420 L E i s N I L , t h e p
0001440 r i m a r y i n p u t s t r
0001460 e a m w i l l b e u s e d
0001500 . \r M o s t i n p u t f u n
0001520 c t i o n s a l s o h a v e
0001540 a R D T B L a r g u m e n
0001560 t , w h i c h s p e c i f i
0001600 e s t h e r e a d t a b l
0001620 e t o b e u s e d f o r
0001640 i n p u t ( s e e p a g e
0001660 X . X X ) . I f R D T
0001700 B L i s N I L , t h e p
0001720 r i m a r y r e a d t a b l
0001740 e w i l l b e u s e d . \r
0001760 W h e n r e a d i n g f r o
0002000 m t h e t e r m i n a l ,
0002020 t h e i n p u t i s b u f
0002040 f e r e d a l i n e a t
0002060 a t i m e ( u n l e s s b
0002100 u f f e r i n g h a s b e e
0002120 n i n h i b i t e d b y C
0002140 O N T R O L ( p a g e X . X
0002160 X ) o r t h e i n p u t
0002200 i s b e i n g r e a d b y
0002220 R E A D C o r P E E K C )
0002240 . U s i n g s p e c i f i
0002260 e d e d i t i n g c h a r a
0002300 c t e r s , t h e u s e r
0002320 c a n e r a s e a c h a r
0002340 a c t e r a t a t i m e ,
0002360 a w o r d a t a t i m
0002400 e , o r t h e w h o l e
0002420 l i n e . T h e k e y s
0002440 t h a t p e r f o r m t h e
0002460 s e e d i t i n g f u n c t
0002500 i o n s a r e a s s i g n a
0002520 b l e v i a S E T S Y N T A
0002540 X ( p a g e X . X X ) , w
0002560 i t h t h e i n t i a l s
0002600 e t t i n g s c h o s e n t
0002620 o b e t h o s e m o s t
0002640 n a t u r a l f o r t h e
0002660 g i v e n o p e r a t i n g
0002700 s y s t e m : c h a r a c t e
0002720 r s a r e d e l e t e d o
0002740 n e a t a t i m e b y
0002760 B a c k s p a c e ; w o r d s
0003000 a r e e r a s e d b y c
0003020 o n t r o l - W ; t h e w h
0003040 o l e l i n e i s e r a s
0003060 e d b y c o n t r o l - Q .
0003100 \r O n t h e I n t e r l i s
0003120 p - D d i s p l a y , d e l
0003140 e t i n g a c h a r a c t e
0003160 r o r a l i n e c a u s
0003200 e s t h e c h a r a c t e r
0003220 s t o b e p h y s i c a l
0003240 l y e r a s e d f r o m t
0003260 h e s c r e e n . T h i s
0003300 a c t i o n c a n b e m
0003320 o d i f i e d f o r o t h e
0003340 r t y p e s o f t e r m i
0003360 n a l s d i s p l a y t e r
0003400 m i n a l s b y u s i n g
0003420 D E L E T E C O N T R O L ( p
0003440 a g e X . X X ) . \r W h e n
0003460 r e a d i n g f r o m a f
0003500 i l e , a n d a n e n d
0003520 o f f i l e i s e n c o u
0003540 n t e r e d , a l l i n p u
0003560 t f u n c t i o n s g e n e
0003600 r a t e a n e r r o r , .
0003620 E N D O F F I L E N o t
0003640 e t h a t t h i s d o e s
0003660 n o t c l o s e t h e i
0003700 n p u t f i l e . \r ( R E A D
0003720 F I L E R D T B L F L G )
0003740 \t [ F u n c t i o n ] \r R e
0003760 a d s o n e e x p r e s s i
0004000 o n f r o m F I L E . A
0004020 t o m s a r e d e l i m i t
0004040 e d b y t h e b r e a k
0004060 a n d s e p a r a t o r c h
0004100 a r a c t e r s a s d e f i
0004120 n e d i n R D T B L . T
0004140 o i n c l u d e a b r e a
0004160 k o r s e p a r a t o r c
0004200 h a r a c t e r i n a n a
0004220 t o m , t h e c h a r a c t
0004240 e r m u s t b e p r e c e
0004260 d e d b y t h e i n p u t
0004300 e s c a p e c h a r a c t e
0004320 r % , e . g . , A B % ( C
0004340 i s t h e a t o m A B (
0004360 C , % % i s t h e a t o
0004400 m % , % c o n t r o l - K
0004420 i s t h e a t o m c o n t
0004440 r o l - K . F o r i n p u
0004460 t f r o m t h e t e r m i
0004500 n a l , a n a t o m c o n
0004520 t a i n i n g a n i n t e r
0004540 r u p t c h a r a c t e r c
0004560 a n b e i n p u t b y t
0004600 y p i n g i n s t e a d t h
0004620 e c o r r e s p o n d i n g
0004640 a l p h a b e t i c c h a r a
0004660 c t e r p r e c e d e d b y
0004700 c o n t r o l - V , e . g .
0004720 , ^ V D f o r c o n t r o
0004740 l - D . \r S t r i n g s a r e
0004760 d e l i m i t e d b y d o
0005000 u b l e q u o t e s . T o
0005020 i n p u t a s t r i n g
0005040 c o n t a i n i n g a d o u
0005060 b l e q u o t e o r a %
0005100 , p r e c e d e i t b y
0005120 % , e . g . , " A B % " C "
0005140 i s t h e s t r i n g A
0005160 B " C . N o t e t h a t
0005200 % c a n a l w a y s b e
0005220 t y p e d e v e n i f n e
0005240 x t c h a r a c t e r i s
0005260 n o t " s p e c i a l " , e
0005300 . g . , % A % B % C i s r
0005320 e a d a s A B C . \r I f a
0005340 n a t o m i s i n t e r p
0005360 r e t a b l e a s a n u m
0005400 b e r , R E A D c r e a t e
0005420 s a n u m b e r , e . g .
0005440 , 1 E 3 r e a d s a s a
0005460 f l o a t i n g p o i n t
0005500 n u m b e r , 1 D 3 a s a
0005520 l i t e r a l a t o m , 1
0005540 . 0 a s a n u m b e r ,
0005560 1 , 0 a s a l i t e r a l
0005600 a t o m , e t c . A n
0005620 i n t e g e r c a n b e i
0005640 n p u t i n o c t a l b y
0005660 t e r m i n a t i n g i t
0005700 w i t h a Q , e . g . ,
0005720 1 7 Q a n d 1 5 r e a d
0005740 i n a s t h e s a m e i
0005760 n t e g e r . T h e s e t
0006000 t i n g o f R A D I X ( p
0006020 a g e X . X X ) d e t e r m
0006040 i n e s i n w h i c h b a
0006060 s e i n t e g e r s a r e
0006100 p r i n t e d . \r W h e n r e
0006120 a d i n g f r o m t h e t
0006140 e r m i n a l , a l l i n p
0006160 u t i s l i n e - b u f f e
0006200 r e d t o e n a b l e t h
0006220 e a c t i o n o f t h e
0006240 b a c k s p a c i n g c o n t
0006260 r o l c h a r a c t e r s ,
0006300 u n l e s s i n h i b i t e d
0006320 b y C O N T R O L ( p a g
0006340 e X . X X ) . T h u s n
0006360 o c h a r a c t e r s a r e
0006400 a c t u a l l y s e e n b
0006420 y t h e p r o g r a m u n
0006440 t i l a c a r r i a g e - r
0006460 e t u r n ( a c t u a l l y
0006500 t h e c h a r a c t e r w i
0006520 t h t e r m i n a l s y n t
0006540 a x c l a s s E O L , s e
0006560 e p a g e X . X X ) , i s
0006600 t y p e d . H o w e v e r
0006620 , f o r r e a d i n g b y
0006640 R E A D , w h e n a m a
0006660 t c h i n g r i g h t p a r
0006700 e n t h e s i s i s e n c o
0006720 u n t e r e d , t h e e f f
0006740 e c t i s t h e s a m e
0006760 a s t h o u g h a c a r r
0007000 i a g e - r e t u r n w e r e
0007020 t y p e d , i . e . , t h
0007040 e c h a r a c t e r s a r e
0007060 t r a n s m i t t e d . T
0007100 o i n d i c a t e t h i s ,
0007120 I n t e r l i s p a l s o
0007140 p r i n t s a c a r r i a g
0007160 e - r e t u r n l i n e - f e
0007200 e d o n t h e t e r m i n
0007220 a l . T h e l i n e b u
0007240 f f e r i s a l s o t r a
0007260 n s m i t t e d t o R E A D
0007300 w h e n e v e r a n I M M
0007320 E D I A T E r e a d m a c r
0007340 o c h a r a c t e r i s t
0007360 y p e d ( p a g e X . X X )
0007400 . \r F L G = T s u p p r e s s
0007420 e s t h e c a r r i a g e -
0007440 r e t u r n n o r m a l l y
0007460 t y p e d b y R E A D f o
0007500 l l o w i n g a m a t c h i
0007520 n g r i g h t p a r e n t h
0007540 e s i s . ( H o w e v e r ,
0007560 t h e c h a r a c t e r s
0007600 a r e s t i l l g i v e n
0007620 t o R E A D ; i . e . , t
0007640 h e u s e r d o e s n o t
0007660 h a v e t o t y p e t h
0007700 e c a r r i a g e - r e t u r
0007720 n . ) \r \r ( R A T O M F I L E
0007740 R D T B L ) \t [ F u n c t
0007760 i o n ] \r R e a d s i n o n
0010000 e a t o m f r o m F I L E
0010020 . S e p a r a t i o n o f
0010040 a t o m s i s d e f i n e
0010060 d b y R D T B L . % i
0010100 s a l s o a n e s c a p e
0010120 c h a r a c t e r f o r R
0010140 A T O M , a n d t h e r e
0010160 m a r k s c o n c e r n i n g
0010200 l i n e - b u f f e r i n g
0010220 a n d e d i t i n g c o n t
0010240 r o l c h a r a c t e r s a
0010260 l s o a p p l y . \r I f t h
0010300 e c h a r a c t e r s c o m
0010320 p r i s i n g t h e a t o m
0010340 w o u l d n o r m a l l y
0010360 b e i n t e r p r e t e d a
0010400 s a n u m b e r b y R E
0010420 A D , t h a t n u m b e r
0010440 i s r e t u r n e d b y R
0010460 A T O M . N o t e h o w e
0010500 v e r t h a t R A T O M t
0010520 a k e s n o s p e c i a l
0010540 a c t i o n f o r " w h e
0010560 t h e r o r n o t i t i
0010600 s a b r e a k c h a r a c
0010620 t e r , i . e . , R A T O M
0010640 n e v e r m a k e s a s
0010660 t r i n g . \r \r ( R S T R I N G
0010700 F I L E R D T B L ) \t [
0010720 F u n c t i o n ] \r R e a d s
0010740 c h a r a c t e r s f r o m
0010760 F I L E u p t o , b u t
0011000 n o t i n c l u d i n g , t
0011020 h e n e x t b r e a k o r
0011040 s e p a r a t o r c h a r a
0011060 c t e r , a n d r e t u r n
0011100 s t h e m a s a s t r i
0011120 n g . B a c k s p a c e ,
0011140 c o n t r o l - W , c o n t r
0011160 o l - Q , c o n t r o l - V ,
0011200 a n d % h a v e t h e
0011220 s a m e e f f e c t a s w
0011240 i t h R E A D . \r \r N o t e
0011260 t h a t t h e b r e a k o
0011300 r s e p a r a t o r c h a r
0011320 a c t e r t h a t t e r m i
0011340 n a t e s a c a l l t o
0011360 R A T O M o r R S T R I N G
0011400 i s n o t r e a d b y
0011420 t h a t c a l l , b u t r
0011440 e m a i n s i n t h e b u
0011460 f f e r t o b e c o m e t
0011500 h e f i r s t c h a r a c t
0011520 e r s e e n b y t h e n
0011540 e x t r e a d i n g f u n c
0011560 t i o n t h a t i s c a l
0011600 l e d . I f t h a t f u
0011620 n c t i o n i s R S T R I N
0011640 G , i t w i l l r e t u r
0011660 n t h e n u l l s t r i n
0011700 g . T h i s i s a c o
0011720 m m o n s o u r c e o f p
0011740 r o g r a m b u g s . \r ( R A
0011760 T O M S A F I L E R D T B
0012000 L ) \t [ F u n c t i o n ] \r
0012020 C a l l s R A T O M r e p e
0012040 a t e d l y u n t i l t h e
0012060 a t o m A i s r e a d .
0012100 R e t u r n s a l i s t
0012120 o f t h e a t o m s r e
0012140 a d , n o t i n c l u d i n
0012160 g A . \r \r ( R A T E S T F L
0012200 G ) \t [ F u n c t i o n ] \r
0012220 I f F L G = T , R A T E
0012240 S T r e t u r n s T i f
0012260 a s e p a r a t o r w a s
0012300 e n c o u n t e r e d i m m e
0012320 d i a t e l y p r i o r t o
0012340 t h e a t o m r e t u r n
0012360 e d b y t h e l a s t R
0012400 A T O M o r R E A D , N I
0012420 L o t h e r w i s e . \r I f
0012440 F L G = N I L , R A T E S
0012460 T r e t u r n s T i f l
0012500 a s t a t o m r e a d b y
0012520 R A T O M o r R E A D w
0012540 a s a b r e a k c h a r a
0012560 c t e r , N I L o t h e r w
0012600 i s e . \r I f F L G = 1 ,
0012620 R A T E S T r e t u r n s
0012640 T i f l a s t a t o m r
0012660 e a d ( b y R E A D o r
0012700 R A T O M ) c o n t a i n e d
0012720 a % ( a s a n e s c a
0012740 p e c h a r a c t e r , e .
0012760 g . , % [ o r % A % B % C
0013000 ) , N I L o t h e r w i s e
0013020 . \r \r ( R E A D C F I L E R
0013040 D T B L ) \t [ F u n c t i o
0013060 n ] \r R e a d s a n d r e t
0013100 u r n s t h e n e x t c h
0013120 a r a c t e r , i n c l u d i
0013140 n g % , " , e t c , i
0013160 . e . , i s n o t a f f e
0013200 c t e d b y b r e a k , s
0013220 e p a r a t o r , o r e s c
0013240 a p e c h a r a c t e r .
0013260 T h e a c t i o n o f R E
0013300 A D C i s s u b j e c t t
0013320 o l i n e - b u f f e r i n g
0013340 , i . e . , R E A D C d o
0013360 e s n o t r e t u r n a
0013400 v a l u e u n t i l t h e
0013420 l i n e h a s b e e n t e
0013440 r m i n a t e d e v e n i f
0013460 a c h a r a c t e r h a s
0013500 b e e n t y p e d . T h
0013520 u s , t h e e d i t i n g
0013540 c o n t r o l c h a r a c t e
0013560 r s h a v e t h e i r u s
0013600 u a l e f f e c t . R D T
0013620 B L d o e s n o t d i r e
0013640 c t l y a f f e c t t h e
0013660 v a l u e r e t u r n e d ,
0013700 b u t i s u s e d a s u
0013720 s u a l i n l i n e - b u f
0013740 f e r i n g , e . g . , d e
0013760 t e r m i n i n g w h e n i
0014000 n p u t h a s b e e n t e
0014020 r m i n a t e d . I f ( C
0014040 O N T R O L T ) h a s b e
0014060 e n e x e c u t e d ( p a g
0014100 e X . X X ) , d e f e a t i
0014120 n g l i n e - b u f f e r i n
0014140 g , t h e R D T B L a r g
0014160 u m e n t i s i r r e l e v
0014200 a n t , a n d R E A D C r
0014220 e t u r n s a v a l u e a
0014240 s s o o n a s a c h a r
0014260 a c t e r i s t y p e d (
0014300 e v e n i f t h e c h a r
0014320 a c t e r t y p e d i s o
0014340 n e o f t h e e d i t i n
0014360 g c h a r a c t e r s , w h
0014400 i c h o r d i n a r i l y w
0014420 o u l d n e v e r b e s e
0014440 e n i n t h e i n p u t
0014460 b u f f e r ) . \r \r ( B I N S
0014500 T R E A M ) \t [ F u n c t i
0014520 o n ] \r R e t u r n s t h e
0014540 n e x t b y t e f r o m S
0014560 T R E A M ; t h u s , t h i
0014600 s o p e r a t i o n i s s
0014620 i m i l a r t o ( C H C O N
0014640 1 ( R E A D C S T R E A M )
0014660 ) . \r \r ( P E E K C F I L E
0014700 - - - ) \t [ F u n c t i o n
0014720 ] \r R e t u r n s t h e n e
0014740 x t c h a r a c t e r , b u
0014760 t d o e s n o t a c t u a
0015000 l l y r e a d i t a n d
0015020 r e m o v e i t f r o m t
0015040 h e b u f f e r . I f r
0015060 e a d i n g f r o m t h e
0015100 t e r m i n a l , t h e c h
0015120 a r a c t e r i s e c h o e
0015140 d a s s o o n a s P E E
0015160 K C r e a d s i t , e v e
0015200 n t h o u g h i t i s t
0015220 h e n " p u t b a c k " i
0015240 n t o t h e s y s t e m b
0015260 u f f e r , w h e r e a s
0015300 u b s e q u e n t d e l b e
0015320 f o r e t h e c h a r a c t
0015340 e r i s r e a d c a n c
0015360 l e a r i t , a n d w h e
0015400 r e s u b s e q u e n t l i
0015420 n e b u f f e r b a c k s p
0015440 a c i n g c o u l d c h a n
0015460 g e i t . T h u s i t
0015500 i s p o s s i b l e f o r
0015520 t h e v a l u e r e t u r n
0015540 e d b y P E E K C t o "
0015560 d i s a g r e e " i n t h e
0015600 f i r s t c h a r a c t e r
0015620 w i t h a s u b s e q u e
0015640 n t R E A D . \r \r ( L A S T C
0015660 F I L E ) \t [ F u n c t i
0015700 o n ] \r R e t u r n s t h e
0015720 l a s t c h a r a c t e r r
0015740 e a d f r o m F I L E . \r \r
0015760 R E A D , R A T O M , R A T
0016000 O M S , P E E K C , R E A D
0016020 C a l l w a i t f o r i
0016040 n p u t i f t h e r e i s
0016060 n o n e . T h e o n l y
0016100 w a y t o t e s t w h e t
0016120 h e r o r n o t t h e r e
0016140 i s i n p u t i s t o
0016160 u s e R E A D P : \r ( R E A D
0016200 P F I L E F L G ) \t [ F
0016220 u n c t i o n ] \r R e t u r n s
0016240 T i f t h e r e i s a
0016260 n y t h i n g i n t h e i
0016300 n p u t b u f f e r o f F
0016320 I L E , N I L o t h e r w i
0016340 s e . N o t e t h a t b
0016360 e c a u s e o f l i n e - b
0016400 u f f e r i n g , R E A D P
0016420 m a y r e t u r n T , i n
0016440 d i c a t i n g t h e r e i
0016460 s i n p u t i n t h e b
0016500 u f f e r , b u t R E A D
0016520 m a y s t i l l h a v e t
0016540 o w a i t . \r F r e q u e n t
0016560 l y , t h e t e r m i n a l
0016600 ' s i n p u t b u f f e r
0016620 c o n t a i n s a s i n g l
0016640 e E O L c h a r a c t e r
0016660 l e f t o v e r f r o m a
0016700 p r e v i o u s i n p u t .
0016720 F o r m o s t a p p l i
0016740 c a t i o n s , t h i s s i
0016760 t u a t i o n w a n t s t o
0017000 b e t r e a t e d a s t
0017020 h o u g h t h e b u f f e r
0017040 w e r e e m p t y , a n d
0017060 s o R E A D P r e t u r n
0017100 s N I L i n t h i s c a
0017120 s e . H o w e v e r , i f
0017140 F L G = T , R E A D P r e
0017160 t u r n s T i f t h e r e
0017200 i s a n y c h a r a c t e
0017220 r i n t h e i n p u t b
0017240 u f f e r , i n c l u d i n g
0017260 a s i n g l e E O L . \r \r
0017300 ( W A I T F O R I N P U T F I
0017320 L E ) \t [ F u n c t i o n ]
0017340 \r W a i t s u n t i l i n p
0017360 u t i s a v a i l a b l e
0017400 f r o m F I L E o r f r o
0017420 m t h e t e r m i n a l ,
0017440 i . e . f r o m T . W A
0017460 I T F O R I N P U T i s f u
0017500 n c t i o n a l l y e q u i v
0017520 a l e n t t o ( u n t i l
0017540 ( O R ( R E A D P T ) ( R
0017560 E A D P F I L E ) ) d o N
0017600 I L ) , e x c e p t t h a t
0017620 i t d o e s n o t u s e
0017640 u p m a c h i n e c y c l
0017660 e s w h i l e w a i t i n g
0017700 . R e t u r n s t h e d
0017720 e v i c e f o r w h i c h
0017740 i n p u t i s n o w a v a
0017760 i l a b l e , i . e . F I L
0020000 E o r T . \r F I L E c a n
0020020 a l s o b e a n i n t e
0020040 g e r , i n w h i c h c a
0020060 s e W A I T F O R I N P U T
0020100 w a i t s u n t i l t h e r
0020120 e i s i n p u t a v a i l
0020140 a b l e f r o m t h e t e
0020160 r m i n a l , o r u n t i l
0020200 F I L E m i l l i s e c o n
0020220 d s h a v e e l a p s e d .
0020240 V a l u e i s T i f i
0020260 n p u t i s n o w a v a i
0020300 l a b l e , N I L i n t h
0020320 e c a s e t h a t W A I T
0020340 F O R I N P U T t i m e d o
0020360 u t . \r \r ( S K R E A D F I L
0020400 E R E R E A D S T R I N G R
0020420 D T B L ) \t [ F u n c t i o
0020440 n ] \r " S k i p R e a d " .
0020460 I t m o v e s t h e f i
0020500 l e p o i n t e r f o r F
0020520 I L E a h e a d a s i f
0020540 o n e c a l l t o R E A D
0020560 h a d b e e n p e r f o r
0020600 m e d , w i t h o u t p a y
0020620 i n g t h e s t o r a g e
0020640 a n d c o m p u t e c o s t
0020660 t o r e a l l y r e a d
0020700 i n t h e s t r u c t u r e
0020720 . R E R E A D S T R I N G
0020740 i s f o r t h e c a s e
0020760 w h e r e t h e u s e r h
0021000 a s a l r e a d y p e r f o
0021020 r m e d s o m e R E A D C '
0021040 s a n d R A T O M ' s b e
0021060 f o r e d e c i d i n g t o
0021100 s k i p t h i s e x p r e
0021120 s s i o n . I n t h i s
0021140 c a s e , R E R E A D S T R I
0021160 N G s h o u l d b e t h e
0021200 m a t e r i a l a l r e a d
0021220 y r e a d ( a s a s t r
0021240 i n g ) , a n d S K R E A D
0021260 o p e r a t e s a s t h o
0021300 u g h i t h a d s e e n
0021320 t h a t m a t e r i a l f i
0021340 r s t , t h u s s e t t i n
0021360 g u p i t s p a r e n t h
0021400 e s i s c o u n t , d o u b
0021420 l e - q u o t e c o u n t ,
0021440 e t c . \r T h e r e a d t a
0021460 b l e R D T B L i s u s e
0021500 d f o r r e a d i n g f r
0021520 o m F I L E . S K R E A D
0021540 m a y h a v e d i f f i c
0021560 u l t i e s i f u n u s u a
0021600 l r e a d m a c r o s ( p
0021620 a g e X . X X ) a r e d e
0021640 f i n e d i n R D T B L .
0021660 S K R E A D w i l l n o t
0021700 r e c o g n i z e r e a d
0021720 m a c r o c h a r a c t e r s
0021740 i n R E R E A D S T R I N G
0021760 , n o r S P L I C E o r
0022000 I N F I X r e a d m a c r o
0022020 s . T h i s i s o n l y
0022040 a p r o b l e m i f t h
0022060 e r e a d m a c r o s a r
0022100 e d e f i n e d t o p a r
0022120 s e s u b s e q u e n t i n
0022140 p u t i n t h e f i l e
0022160 w h i c h d o e s n o t f
0022200 o l l o w t h e n o r m a l
0022220 p a r e n t h e s i s a n d
0022240 s t r i n g - q u o t e c o
0022260 n v e n t i o n s . I f R
0022300 D T B L i s N I L , i t
0022320 d e f a u l t s t o t h e
0022340 v a l u e o f F I L E R D T
0022360 B L . \r S K R E A D r e t u r
0022400 n s % ) i f t h e r e a
0022420 d t e r m i n a t e d o n
0022440 a n u n b a l a n c e d c l
0022460 o s i n g p a r e n t h e s i
0022500 s ; % ] i f t h e r e a
0022520 d t e r m i n a t e d o n
0022540 a n u n b a l a n c e d % ]
0022560 , i . e . , o n e w h i c
0022600 h a l s o w o u l d h a v
0022620 e c l o s e d a n y e x t
0022640 a n t o p e n l e f t p a
0022660 r e n t h e s e s ; o t h e r
0022700 w i s e N I L . \r \r ( S K I P
0022720 S E P R S F I L E R D T B L
0022740 ) \t [ F u n c t i o n ] \r A
0022760 d v a n c e s t h e f i l e
0023000 p o i n t e r f o r F I L
0023020 E u n t i l i t e n c o u
0023040 n t e r s a n o n - s e p a
0023060 r a t o r c h a r a c t e r
0023100 ( a s d e f i n e d b y R
0023120 D T B L ) . T h e f i l e
0023140 p o i n t e r i s l e f t
0023160 p o s i t i o n e d r e a d
0023200 y t o r e a d t h e c h
0023220 a r a c t e r , w h i c h i
0023240 s a l s o r e t u r n e d .
0023260 I f n o n o n - s e p a
0023300 r a t o r c h a r a c t e r
0023320 i s f o u n d b e f o r e
0023340 t h e e n d o f f i l e
0023360 i s r e a c h e d , S K I P
0023400 S E P R S r e t u r n s N I
0023420 L a n d l e a v e s t h e
0023440 p o i n t e r p o s i t i o
0023460 n e d a t t h e e n d o
0023500 f t h e f i l e . U s e
0023520 f u l f o r s k i p p i n g
0023540 o v e r " w h i t e s p a
0023560 c e " w h e n s c a n n i n
0023600 g a f i l e c h a r a c t
0023620 e r b y c h a r a c t e r .
0023640 \r \r \r 2 6 . 2 \t O u t p u
0023660 t F u n c t i o n s \r \r M o s
0023700 t o f t h e f u n c t i o
0023720 n s d e s c r i b e d b e l
0023740 o w h a v e a n a r g u m
0023760 e n t F I L E , w h i c h
0024000 s p e c i f i e s t h e n a
0024020 m e o f t h e s t r e a m
0024040 o n w h i c h t h e o p
0024060 e r a t i o n i s t o t a
0024100 k e p l a c e . I f F I
0024120 L E i s N I L , t h e p
0024140 r i m a r y o u t p u t s t
0024160 r e a m i s u s e d . S
0024200 o m e o f t h e f u n c t
0024220 i o n s h a v e a R D T B
0024240 L a r g u m e n t , w h i c
0024260 h s p e c i f i e s t h e
0024300 r e a d t a b l e t o b e
0024320 u s e d f o r o u t p u t
0024340 . I f R D T B L i s N
0024360 I L , t h e p r i m a r y
0024400 r e a d t a b l e i s u s
0024420 e d . \r U n l e s s o t h e r
0024440 w i s e s p e c i f i e d b
0024460 y D E F P R I N T ( p a g e
0024500 X . X X ) , p o i n t e r
0024520 s o t h e r t h a n l i s
0024540 t s , s t r i n g s , a t o
0024560 m s , o r n u m b e r s ,
0024600 a r e p r i n t e d i n t
0024620 h e f o r m { D A T A T Y P
0024640 E } f o l l o w e d b y t
0024660 h e o c t a l r e p r e s e
0024700 n t a t i o n o f t h e a
0024720 d d r e s s o f t h e p o
0024740 i n t e r ( r e g a r d l e s
0024760 s o f r a d i x ) . F o
0025000 r e x a m p l e , a n a r
0025020 r a y p o i n t e r m i g h
0025040 t p r i n t a s { A R R A
0025060 Y P } # 4 3 , 2 7 6 0 . T h
0025100 i s p r i n t e d r e p r e
0025120 s e n t a t i o n i s f o r
0025140 c o m p a c t n e s s o f
0025160 d i s p l a y o n t h e u
0025200 s e r ' s t e r m i n a l ,
0025220 a n d w i l l n o t r e a
0025240 d b a c k i n c o r r e c
0025260 t l y ; i f t h e f o r m
0025300 a b o v e i s r e a d ,
0025320 i t w i l l p r o d u c e
0025340 t h e l i t a t o m { A R R
0025360 A Y P } # 4 3 , 2 7 6 0 . \r N o
0025400 t e : t h e t e r m " e n
0025420 d - o f - l i n e " a p p e a
0025440 r i n g i n t h e d e s c
0025460 r i p t i o n o f a n o u
0025500 t p u t f u n c t i o n m e
0025520 a n s t h e c h a r a c t e
0025540 r o r c h a r a c t e r s
0025560 u s e d t o t e r m i n a t
0025600 e a l i n e i n t h e
0025620 f i l e s y s t e m b e i n
0025640 g u s e d b y t h e g i
0025660 v e n i m p l e m e n t a t i
0025700 o n o f I n t e r l i s p .
0025720 F o r e x a m p l e , i
0025740 n I n t e r l i s p - D e n
0025760 d - o f - l i n e i s i n d
0026000 i c a t e d b y t h e c h
0026020 a r a c t e r c a r r i a g e
0026040 - r e t u r n . \r ( P R I N 1
0026060 X F I L E ) \t [ F u n c t
0026100 i o n ] \r P r i n t s X o n
0026120 F I L E . \r \r ( P R I N 2 X
0026140 F I L E R D T B L ) \t [
0026160 F u n c t i o n ] \r P r i n t s
0026200 X o n F I L E w i t h
0026220 % ' s a n d " ' s i n s e
0026240 r t e d w h e r e r e q u i
0026260 r e d f o r i t t o r e
0026300 a d b a c k i n p r o p e
0026320 r l y b y R E A D , u s i
0026340 n g R D T B L . \r \r B o t h
0026360 P R I N 1 a n d P R I N 2
0026400 p r i n t l i s t s a s w
0026420 e l l a s a t o m s a n d
0026440 s t r i n g s ; P R I N 1
0026460 i s u s u a l l y u s e d
0026500 o n l y f o r e x p l i c i
0026520 t l y p r i n t i n g f o r
0026540 m a t t i n g c h a r a c t e
0026560 r s , e . g . , ( P R I N 1
0026600 ( Q U O T E % [ ) ) m i g
0026620 h t b e u s e d t o p r
0026640 i n t a l e f t s q u a r
0026660 e b r a c k e t ( t h e %
0026700 w o u l d n o t b e p r
0026720 i n t e d b y P R I N 1 ) .
0026740 P R I N 2 i s u s e d
0026760 f o r p r i n t i n g I n t
0027000 e r l i s p e x p r e s s i o
0027020 n s w h i c h c a n t h e
0027040 n b e r e a d b a c k i
0027060 n t o I n t e r l i s p w i
0027100 t h R E A D ; i . e . , b
0027120 r e a k a n d s e p a r a t
0027140 o r c h a r a c t e r s i
0027160 n a t o m s w i l l b e
0027200 p r e c e d e d b y % ' s .
0027220 F o r e x a m p l e , t
0027240 h e a t o m " ( ) " i s
0027260 p r i n t e d a s % ( % )
0027300 b y P R I N 2 . I f R A
0027320 D I X = 8 ( p a g e X . X X
0027340 ) , P R I N 2 p r i n t s
0027360 a Q a f t e r i n t e g e
0027400 r s b u t P R I N 1 d o e
0027420 s n o t ( b u t b o t h
0027440 p r i n t t h e i n t e g e
0027460 r i n o c t a l ) . \r ( P R
0027500 I N 3 X F I L E ) \t [ F
0027520 u n c t i o n ] \r ( P R I N 4
0027540 X F I L E R D T B L ) \t
0027560 [ F u n c t i o n ] \r P R I N 3
0027600 a n d P R I N 4 a r e t
0027620 h e s a m e a s P R I N 1
0027640 a n d P R I N 2 r e s p e
0027660 c t i v e l y , e x c e p t
0027700 t h a t t h e y d o n o t
0027720 i n c r e m e n t t h e h
0027740 o r i z o n t a l p o s i t i
0027760 o n c o u n t e r n o r p
0030000 e r f o r m a n y l i n e l
0030020 e n g t h c h e c k s . T
0030040 h e y a r e u s e f u l p
0030060 r i m a r i l y f o r p r i
0030100 n t i n g c o n t r o l c h
0030120 a r a c t e r s . \r \r ( B O U T
0030140 S T R E A M B Y T E ) \t
0030160 [ F u n c t i o n ] \r O u t p u
0030200 t s a s i n g l e 8 - b i
0030220 t b y t e t o S T R E A M
0030240 , i . e . , s i m i l a r
0030260 t o ( P R I N 3 ( C H A R A
0030300 C T E R B Y T E ) ) . \r \r (
0030320 P R I N T X F I L E R D T
0030340 B L ) \t [ F u n c t i o n ]
0030360 \r P r i n t s t h e e x p r
0030400 e s s i o n X u s i n g P
0030420 R I N 2 f o l l o w e d b y
0030440 a n e n d - o f - l i n e .
0030460 R e t u r n s X . \r \r ( S
0030500 P A C E S N F I L E ) \t
0030520 [ F u n c t i o n ] \r P r i n t
0030540 s N s p a c e s . R e t
0030560 u r n s N I L . \r \r ( T E R P
0030600 R I F I L E ) \t [ F u n c
0030620 t i o n ] \r P r i n t s a n
0030640 e n d - o f - l i n e c h a r
0030660 a c t e r . R e t u r n s
0030700 N I L . \r \r ( F R E S H L I N E
0030720 S T R E A M ) \t [ F u n c
0030740 t i o n ] \r E q u i v a l e n t
0030760 t o T E R P R I , e x c e
0031000 p t i t d o e s n o t h i
0031020 n g i f i t i s a l r e
0031040 a d y a t t h e b e g i n
0031060 n i n g o f t h e l i n e
0031100 . R e t u r n s T i f
0031120 i t p r i n t s a n e n d
0031140 - o f - l i n e , N I L o t
0031160 h e r w i s e . \r \r ( T A B P
0031200 O S M I N S P A C E S F I L
0031220 E ) \t [ F u n c t i o n ] \r
0031240 P r i n t s t h e a p p r o
0031260 p r i a t e n u m b e r o f
0031300 s p a c e s t o m o v e
0031320 t o p o s i t i o n P O S .
0031340 M I N S P A C E S i n d i
0031360 c a t e s h o w m a n y s
0031400 p a c e s m u s t b e p r
0031420 i n t e d ( i f N I L , 1
0031440 i s u s e d ) . I f t
0031460 h e c u r r e n t p o s i t
0031500 i o n p l u s M I N S P A C
0031520 E S i s g r e a t e r t h
0031540 a n P O S , T A B d o e s
0031560 a T E R P R I a n d t h
0031600 e n ( S P A C E S P O S ) .
0031620 I f M I N S P A C E S i
0031640 s T , a n d t h e c u r
0031660 r e n t p o s i t i o n i s
0031700 g r e a t e r t h a n P O
0031720 S , t h e n T A B d o e s
0031740 n o t h i n g . \r \r N o t e :
0031760 A s e q u e n c e o f
0032000 P R I N T , P R I N 2 , S P
0032020 A C E S , a n d T E R P R I
0032040 e x p r e s s i o n s c a n
0032060 o f t e n b e m o r e c
0032100 o n v e n i e n t l y c o d e
0032120 d w i t h a s i n g l e
0032140 P R I N T O U T s t a t e m e
0032160 n t ( p a g e X . X X ) . \r
0032200 ( S H O W P R I N 2 X F I L
0032220 E R D T B L ) \t [ F u n c
0032240 t i o n ] \r L i k e P R I N 2
0032260 e x c e p t i f S Y S P R
0032300 E T T Y F L G = T , p r e t t
0032320 y p r i n t s X i n s t e a
0032340 d . R e t u r n s X . \r \r
0032360 ( S H O W P R I N T X F I L
0032400 E R D T B L ) \t [ F u n c
0032420 t i o n ] \r L i k e P R I N T
0032440 e x c e p t i f S Y S P R
0032460 E T T Y F L G = T , p r e t t
0032500 y p r i n t s X i n s t e a
0032520 d , f o l l o w e d b y a
0032540 n e n d - o f - l i n e .
0032560 R e t u r n s X . \r \r S H O W
0032600 P R I N T a n d S H O W P R
0032620 I N 2 a r e u s e d b y
0032640 t h e p r o g r a m m e r ' s
0032660 a s s i s t a n t ( p a g e
0032700 X . X X ) f o r p r i n t
0032720 i n g t h e v a l u e s o
0032740 f e x p r e s s i o n s a n
0032760 d f o r p r i n t i n g t
0033000 h e h i s t o r y l i s t ,
0033020 b y v a r i o u s c o m m
0033040 a n d s o f t h e b r e a
0033060 k p a c k a g e ( p a g e
0033100 X . X X ) , e . g . ? = a
0033120 n d B T c o m m a n d s ,
0033140 a n d v a r i o u s o t h e
0033160 r s y s t e m p a c k a g e
0033200 s . T h e i d e a i s
0033220 t h a t b y s i m p l y s
0033240 e t t t i n g o r b i n d i
0033260 n g S Y S P R E T T Y F L G
0033300 t o T ( i n i t i a l l y
0033320 N I L ) , t h e u s e r i
0033340 n s t r u c t s t h e s y s
0033360 t e m w h e n i n t e r a c
0033400 t i n g w i t h t h e u s
0033420 e r t o P R E T T Y P R I N
0033440 T e x p r e s s i o n s ( p
0033460 a g e X . X X ) i n s t e a
0033500 d o f p r i n t i n g t h
0033520 e m . \r ( P R I N T B E L L S
0033540 - - - ) \t [ F u n c t i o n
0033560 ] \r U s e d b y D W I M (
0033600 p a g e X . X X ) t o p r
0033620 i n t a s e q u e n c e o
0033640 f b e l l s t o a l e r t
0033660 t h e u s e r t o s t o
0033700 p t y p i n g . C a n b
0033720 e a d v i s e d o r r e d
0033740 e f i n e d f o r s p e c i
0033760 a l a p p l i c a t i o n s ,
0034000 e . g . , t o f l a s h
0034020 t h e s c r e e n o n a
0034040 d i s p l a y t e r m i n a l
0034060 . \r \r ( F O R C E O U T P U T
0034100 S T R E A M W A I T F O R F I
0034120 N I S H ) \t [ F u n c t i o
0034140 n ] \r F o r c e s a n y b u
0034160 f f e r e d o u t p u t d a
0034200 t a i n S T R E A M t o
0034220 b e t r a n s m i t t e d . \r
0034240 I f W A I T F O R F I N I S H
0034260 i s n o n - N I L , t h i
0034300 s d o e s n ' t r e t u r n
0034320 u n t i l t h e d a t a
0034340 h a s b e e n f o r c e d
0034360 o u t . \r \r ( P O S I T I O N
0034400 F I L E N ) \t [ F u n c t
0034420 i o n ] \r R e t u r n s t h e
0034440 c o l u m n n u m b e r a
0034460 t w h i c h t h e n e x t
0034500 c h a r a c t e r w i l l
0034520 b e r e a d o r p r i n t
0034540 e d . A f t e r a e n d
0034560 o f l i n e , t h e c o
0034600 l u m n n u m b e r i s 0
0034620 . I f N i s n o n - N
0034640 I L , r e s e t s t h e c
0034660 o l u m n n u m b e r t o
0034700 b e N . \r N o t e t h a t
0034720 ( P O S I T I O N F I L E )
0034740 i s n o t t h e s a m e
0034760 a s ( G E T F I L E P T R F
0035000 I L E ) w h i c h g i v e s
0035020 t h e p o s i t i o n i n
0035040 t h e f i l e , n o t o
0035060 n t h e l i n e . \r \r ( L I
0035100 N E L E N G T H N F I L E )
0035120 \t [ F u n c t i o n ] \r S e
0035140 t s t h e l e n g t h o f
0035160 t h e p r i n t l i n e
0035200 f o r t h e o u t p u t f
0035220 i l e F I L E t o N ; r
0035240 e t u r n s t h e f o r m e
0035260 r s e t t i n g o f t h e
0035300 l i n e l e n g t h . F
0035320 I L E d e f a u l t s t o
0035340 t h e p r i m a r y o u t p
0035360 u t s t r e a m . ( L I N
0035400 E L E N G T H N I L F I L E
0035420 ) r e t u r n s t h e c u
0035440 r r e n t s e t t i n g f o
0035460 r F I L E . W h e n a
0035500 f i l e i s f i r s t o p
0035520 e n e d , i t s l i n e l
0035540 e n g t h i s s e t t o
0035560 t h e v a l u e o f t h e
0035600 v a r i a b l e F I L E L I
0035620 N E L E N G T H . \r W h e n e v
0035640 e r p r i n t i n g a n a
0035660 t o m o r s t r i n g w o
0035700 u l d i n c r e a s e a f
0035720 i l e ' s p o s i t i o n b
0035740 e y o n d t h e l i n e l
0035760 e n g t h o f t h e f i l
0036000 e , a n e n d o f l i n
0036020 e i s a u t o m a t i c a l
0036040 l y i n s e r t e d f i r s
0036060 t . T h i s a c t i o n
0036100 c a n b e d e f e a t e d
0036120 b y u s i n g P R I N 3 a
0036140 n d P R I N 4 ( p a g e X
0036160 . X X ) . \r \r ( S E T L I N E L
0036200 E N G T H N ) \t [ F u n c
0036220 t i o n ] \r S e t s t h e l
0036240 i n e l e n g t h f o r t
0036260 h e t e r m i n a l b y d
0036300 o i n g ( L I N E L E N G T H
0036320 N T ) . \r \r 2 6 . 2 . 1
0036340 \t P R I N T L E V E L \r \r W h e
0036360 n u s i n g I n t e r l i s
0036400 p o n e o f t e n h a s
0036420 t o h a n d l e l a r g e ,
0036440 c o m p l i c a t e d l i s
0036460 t s , w h i c h a r e d i
0036500 f f i c u l t t o u n d e r
0036520 s t a n d w h e n p r i n t
0036540 e d o u t . P R I N T L E
0036560 V E L a l l o w s t h e u
0036600 s e r t o s p e c i f y i
0036620 n h o w m u c h d e t a i
0036640 l l i s t s s h o u l d b
0036660 e p r i n t e d . T h e
0036700 p r i n t f u n c t i o n s
0036720 P R I N T , P R I N 1 , a n
0036740 d P R I N 2 a r e a l l
0036760 a f f e c t e d b y l e v e
0037000 l p a r a m e t e r s s e t
0037020 b y : \r ( P R I N T L E V E L
0037040 C A R V A L C D R V A L )
0037060 \t [ F u n c t i o n ] \r S e t
0037100 s t h e C A R p r i n t
0037120 l e v e l t o C A R V A L ,
0037140 a n d t h e C D R p r i
0037160 n t l e v e l t o C D R V
0037200 A L . R e t u r n s a l
0037220 i s t c e l l w h o s e C
0037240 A R a n d C D R a r e t
0037260 h e o l d s e t t i n g s .
0037300 P R I N T L E V E L i s
0037320 i n i t i a l i z e d w i t h
0037340 t h e v a l u e ( 1 0 0 0
0037360 . - 1 ) . \r I n o r d e r
0037400 t h a t P R I N T L E V E L
0037420 c a n b e u s e d w i t
0037440 h R E S E T F O R M o r R
0037460 E S E T S A V E , i f C A R
0037500 V A L i s a l i s t c e
0037520 l l i t i s e q u i v a l
0037540 e n t t o ( P R I N T L E V
0037560 E L ( C A R C A R V A L )
0037600 ( C D R C A R V A L ) ) . \r (
0037620 P R I N T L E V E L N N I L
0037640 ) c h a n g e s t h e C A
0037660 R p r i n t l e v e l w i t
0037700 h o u t a f f e c t i n g t
0037720 h e C D R p r i n t l e v e
0037740 l . ( P R I N T L E V E L
0037760 N I L N ) c h a n g e s t
0040000 h e C D R p r i n t l e v e
0040020 l w i t h a f f e c t i n g
0040040 t h e C A R p r i n t l e
0040060 v e l . ( P R I N T L E V E
0040100 L ) g i v e s t h e c u r
0040120 r e n t s e t t i n g w i t
0040140 h o u t c h a n g i n g e i
0040160 t h e r . \r N o t e : c o n t
0040200 r o l - P ( p a g e X . X X
0040220 ) c a n b e u s e d t o
0040240 c h a n g e t h e P R I N
0040260 T L E V E L s e t t i n g d
0040300 y n a m i c a l l y , e v e n
0040320 w h i l e I n t e r l i s p
0040340 i s p r i n t i n g . \r \r T
0040360 h e C A R p r i n t l e v e
0040400 l s p e c i f i e s h o w
0040420 " d e e p " t o p r i n t
0040440 a l i s t . S p e c i f i
0040460 c a l l y , i t i s t h e
0040500 n u m b e r o f u n p a i
0040520 r e d l e f t p a r e n t h
0040540 e s e s w h i c h w i l l
0040560 b e p r i n t e d . B e l
0040600 o w t h a t l e v e l , a
0040620 l l l i s t s w i l l b e
0040640 p r i n t e d a s & .
0040660 I f t h e C A R p r i n t
0040700 l e v e l i s n e g a t i v
0040720 e , t h e a c t i o n i s
0040740 s i m i l a r e x c e p t
0040760 t h a t a n e n d - o f - l
0041000 i n e i s i n s e r t e d
0041020 a f t e r e a c h r i g h t
0041040 p a r e n t h e s e s t h a
0041060 t w o u l d b e i m m e d
0041100 i a t e l y f o l l o w e d
0041120 b y a l e f t p a r e n t
0041140 h e s i s . \r T h e C D R p
0041160 r i n t l e v e l s p e c i f
0041200 i e s h o w " l o n g " t
0041220 o p r i n t a l i s t .
0041240 I t i s t h e n u m b e
0041260 r o f t o p l e v e l l
0041300 i s t e l e m e n t s t h a
0041320 t w i l l b e p r i n t e
0041340 d b e f o r e t h e p r i
0041360 n t i n g i s t e r m i n a
0041400 t e d w i t h - - . F o
0041420 r e x a m p l e , i f C D
0041440 R V A L = 2 , ( A B C D
0041460 E ) w i l l p r i n t a
0041500 s ( A B - - ) . F o r
0041520 s u b l i s t s , t h e n
0041540 u m b e r o f l i s t e l
0041560 e m e n t s p r i n t e d i
0041600 s a l s o a f f e c t e d
0041620 b y t h e d e p t h o f
0041640 p r i n t i n g i n t h e
0041660 C A R d i r e c t i o n :
0041700 W h e n e v e r t h e s u m
0041720 o f t h e d e p t h o f
0041740 t h e s u b l i s t ( i .
0041760 e . t h e n u m b e r o f
0042000 u n m a t c h e d l e f t
0042020 p a r e n t h e s e s ) a n d
0042040 t h e n u m b e r o f e
0042060 l e m e n t s i s g r e a t
0042100 e r t h a n t h e C D R
0042120 p r i n t l e v e l , - - i
0042140 s p r i n t e d . T h i s
0042160 g i v e s a " t r i a n g
0042200 u l a r " e f f e c t i n
0042220 t h a t l e s s i s p r i
0042240 n t e d t h e f a r t h e r
0042260 o n e g o e s i n e i t
0042300 h e r C A R o r C D R d
0042320 i r e c t i o n . I f t h
0042340 e C D R p r i n t l e v e l
0042360 i s n e g a t i v e , t h
0042400 e n i t i s t h e s a m
0042420 e a s i f t h e C D R
0042440 p r i n t l e v e l w e r e
0042460 i n f i n i t e . \r E x a m p l
0042500 e s : \r \t A f t e r : \t ( A (
0042520 B C ( D ( E F ) G )
0042540 H ) K L ) p r i n t s a
0042560 s : \r \t ( P R I N T L E V E L
0042600 3 - 1 ) \t ( A ( B C ( D
0042620 & G ) H ) K L ) \r \t (
0042640 P R I N T L E V E L 2 - 1 )
0042660 \t ( A ( B C & H ) K
0042700 L ) \r \t ( P R I N T L E V E L
0042720 1 - 1 ) \t ( A & K L ) \r
0042740 \t ( P R I N T L E V E L 0 -
0042760 1 ) \t & \r \t ( P R I N T L E V E
0043000 L 1 0 0 0 2 ) \t ( A ( B
0043020 - - ) - - ) \r \t ( P R I N T L
0043040 E V E L 1 0 0 0 3 ) \t ( A
0043060 ( B C - - ) K - - ) \r \t
0043100 ( P R I N T L E V E L 1 3 )
0043120 \t ( A & K - - ) \r P L V L
0043140 F I L E F L G \t [ V a r i a
0043160 b l e ] \r N o r m a l l y , P
0043200 R I N T L E V E L o n l y a
0043220 f f e c t s t e r m i n a l
0043240 o u t p u t . O u t p u t
0043260 t o a l l o t h e r f i l
0043300 e s a c t s a s t h o u g
0043320 h t h e p r i n t l e v e
0043340 l i s i n f i n i t e .
0043360 H o w e v e r , i f P L V L
0043400 F I L E F L G i s T ( i n
0043420 i t i a l l y N I L ) , t h
0043440 e n P R I N T L E V E L a f
0043460 f e c t s o u t p u t t o
0043500 f i l e s a s w e l l . \r \r
0043520 2 6 . 2 . 2 \t P r i n t i n
0043540 g n u m b e r s \r \r H o w t
0043560 h e o r d i n a r y p r i n
0043600 t i n g f u n c t i o n s (
0043620 P R I N 1 , P R I N 2 , e t
0043640 c . ) p r i n t n u m b e r
0043660 s c a n b e a f f e c t e
0043700 d i n s e v e r a l w a y
0043720 s . R A D I X i n f l u e
0043740 n c e s t h e p r i n t i n
0043760 g o f i n t e g e r s , a
0044000 n d F L T F M T i n f l u e
0044020 n c e s t h e p r i n t i n
0044040 g o f f l o a t i n g p o
0044060 i n t n u m b e r s . T h
0044100 e s e t t i n g o f t h e
0044120 v a r i a b l e P R X F L G
0044140 d e t e r m i n e s h o w
0044160 t h e s y m b o l - m a n i p
0044200 u l a t i o n f u n c t i o n
0044220 s h a n d l e n u m b e r s
0044240 . T h e P R I N T N U M
0044260 p a c k a g e p e r m i t s
0044300 g r e a t e r c o n t r o l s
0044320 o n t h e p r i n t e d
0044340 a p p e a r a n c e o f n u
0044360 m b e r s , a l l o w i n g
0044400 s u c h t h i n g s a s l
0044420 e f t - j u s t i f i c a t i o
0044440 n , s u p p r e s s i o n o
0044460 f t r a i l i n g d e c i m
0044500 a l s , e t c . \r ( R A D I X
0044520 N ) \t [ F u n c t i o n ]
0044540 \r R e s e t s t h e o u t p
0044560 u t r a d i x f o r i n t
0044600 e g e r s t o t h e a b s
0044620 o l u t e v a l u e o f N
0044640 . T h e v a l u e o f
0044660 R A D I X i s i t s p r e
0044700 v i o u s s e t t i n g .
0044720 ( R A D I X ) g i v e s t h
0044740 e c u r r e n t s e t t i n
0044760 g w i t h o u t c h a n g i
0045000 n g i t . T h e i n i t
0045020 i a l s e t t i n g i s 1
0045040 0 . \r N o t e t h a t R A D
0045060 I X a f f e c t s o u t p u
0045100 t o n l y . T h e r e i
0045120 s n o i n p u t r a d i x
0045140 ; o n i n p u t , n u m b
0045160 e r s a r e i n t e r p r e
0045200 t e d a s d e c i m a l u
0045220 n l e s s t h e y e n d i
0045240 n Q , i n w h i c h c a
0045260 s e t h e y a r e i n t e
0045300 r p r e t e d a s o c t a l
0045320 . T h u s R E A D a n d
0045340 P R I N T a r e i n v e r
0045360 s e s , i n d e p e n d e n t
0045400 o f a n y r a d i x s e
0045420 t t i n g . R A D I X a l
0045440 s o d o e s n o t a f f e
0045460 c t t h e b e h a v i o r
0045500 o f U N P A C K , e t c . ,
0045520 u n l e s s t h e v a l u
0045540 e o f P R X F L G ( b e l
0045560 o w ) i s T ; e . g . ,
0045600 w i t h ( R A D I X 8 ) ,
0045620 t h e v a l u e o f ( U N
0045640 P A C K 9 ) i s ( 9 ) ,
0045660 n o t ( 1 1 ) . \r \r ( F L T
0045700 F M T F O R M A T ) \t [ F
0045720 u n c t i o n ] \r R e s e t s
0045740 t h e o u t p u t f o r m a
0045760 t f o r f l o a t i n g p
0046000 o i n t n u m b e r s t o
0046020 t h e F L O A T f o r m a t
0046040 F O R M A T ( s e e P R I
0046060 N T N U M b e l o w f o r
0046100 a d e s c r i p t i o n o f
0046120 F L O A T f o r m a t s ) .
0046140 F O R M A T = T s p e c i
0046160 f i e s t h e d e f a u l t
0046200 " f r e e " f o r m a t t i
0046220 n g : s o m e n u m b e r
0046240 o f s i g n i f i c a n t d
0046260 i g i t s ( a f u n c t i o
0046300 n o f t h e i m p l e m e
0046320 n t a t i o n ) a r e p r i
0046340 n t e d , w i t h t r a i l
0046360 i n g z e r o s s u p p r e
0046400 s s e d ; n u m b e r s w i
0046420 t h s u f f i c i e n t l y
0046440 l a r g e o r s m a l l e
0046460 x p o n e n t s a r e i n s
0046500 t e a d p r i n t e d i n
0046520 e x p o n e n t n o t a t i o
0046540 n . \r F L T F M T r e t u r n
0046560 s i t s c u r r e n t s e
0046600 t t i n g . ( F L T F M T )
0046620 r e t u r n s t h e c u r
0046640 r e n t s e t t i n g w i t
0046660 h o u t c h a n g i n g i t
0046700 . T h e i n i t i a l s
0046720 e t t i n g i s T . \r N o t
0046740 e : I n I n t e r l i s p
0046760 - D , F L T F M T i g n o
0047000 r e s t h e W I D T H a n
0047020 d P A D f i e l d s o f
0047040 t h e f o r m a t ( t h e y
0047060 a r e i m p l e m e n t e d
0047100 o n l y b y P R I N T N U
0047120 M ) . \r \r W h e t h e r p r i
0047140 n t n a m e m a n i p u l a
0047160 t i o n f u n c t i o n s (
0047200 U N P A C K , N C H A R S ,
0047220 e t c . ) u s e t h e v a
0047240 l u e s o f R A D I X a n
0047260 d F L T F M T i s d e t e
0047300 r m i n e d b y t h e v a
0047320 r i a b l e P R X F L G : \r P
0047340 R X F L G \t [ V a r i a b l
0047360 e ] \r I f P R X F L G = N I L
0047400 ( t h e i n i t i a l s e
0047420 t t i n g ) , t h e n t h e
0047440 " P R I N 1 " n a m e u s
0047460 e d b y P A C K , U N P A
0047500 C K , M K S T R I N G , e t
0047520 c . , i s c o m p u t e d
0047540 u s i n g b a s e 1 0 f o
0047560 r i n t e g e r s a n d t
0047600 h e s y s t e m d e f a u l
0047620 t f l o a t i n g f o r m a
0047640 t f o r f l o a t i n g p
0047660 o i n t n u m b e r s , i n
0047700 d e p e n d e n t o f t h e
0047720 c u r r e n t s e t t i n g
0047740 o f R A D I X o r F L T
0047760 F M T . I f P R X F L G =
0050000 T , t h e n R A D I X a n
0050020 d F L T F M T d o d i c t
0050040 a t e t h e " P R I N 1 "
0050060 n a m e o f n u m b e r s .
0050100 N o t e t h a t i n t
0050120 h i s c a s e , P A C K a
0050140 n d U N P A C K a r e n o
0050160 t i n v e r s e s . \r E x a m
0050200 p l e s w i t h ( R A D I X
0050220 8 ) , ( F L T F M T ' ( F
0050240 L O A T 4 2 ) ) : \r W i t h
0050260 P R X F L G = N I L , \r ( U N
0050300 P A C K 1 3 ) = > ( 1
0050320 3 ) \r ( P A C K ' ( A 9 )
0050340 ) = > A 9 \r ( U N P A C
0050360 K 1 . 2 3 4 5 ) = > (
0050400 1 % . 2 3 4 5 ) \r W i
0050420 t h P R X F L G = T , \r ( U N
0050440 P A C K 1 3 ) = > ( 1
0050460 5 ) \r ( P A C K ' ( A 9 )
0050500 ) = > A 1 1 \r ( U N P A
0050520 C K 1 . 2 3 4 5 ) = >
0050540 ( 1 % . 2 3 ) \r N o t e
0050560 t h a t P R X F L G d o e s
0050600 n o t e f f e c t t h e
0050620 r a d i x o f " P R I N 2 "
0050640 n a m e s , s o w i t h
0050660 ( R A D I X 8 ) , ( N C H A
0050700 R S 9 T ) , w h i c h u
0050720 s e s P R I N 2 n a m e s ,
0050740 w o u l d r e t u r n 3 ,
0050760 ( s i n c e 9 w o u l d
0051000 p r i n t a s 1 1 Q ) f o
0051020 r e i t h e r s e t t i n g
0051040 o f P R X F L G . \r W a r n
0051060 i n g : S o m e s y s t e
0051100 m f u n c t i o n s w i l l
0051120 n o t w o r k c o r r e c
0051140 t l y i f P R X F L G i s
0051160 n o t N I L . T h e r e
0051200 f o r e , r e s e t t i n g
0051220 t h e g l o b a l v a l u e
0051240 o f P R X F L G i s n o
0051260 t r e c o m m e n d e d .
0051300 I t i s m u c h b e t t e
0051320 r t o r e b i n d P R X F
0051340 L G a s a S P E C V A R
0051360 f o r t h a t p a r t o f
0051400 a p r o g r a m w h e r e
0051420 i t n e e d s t o b e
0051440 n o n - N I L . \r \r T h e b a
0051460 s i c f u n c t i o n f o r
0051500 p r i n t i n g n u m b e r
0051520 s u n d e r f o r m a t c
0051540 o n t r o l i s P R I N T N
0051560 U M . I t s u t i l i t y
0051600 i s c o n s i d e r a b l y
0051620 e n h a n c e d w h e n u
0051640 s e d i n c o n j u n c t i
0051660 o n w i t h t h e P R I N
0051700 T O U T p a c k a g e ( p a
0051720 g e X . X X ) , w h i c h
0051740 i m p l e m e n t s a c o m
0051760 p a c t l a n g u a g e f o
0052000 r s p e c i f y i n g c o m
0052020 p l i c a t e d s e q u e n c
0052040 e s o f e l e m e n t a r y
0052060 p r i n t i n g o p e r a t
0052100 i o n s , a n d m a k e s
0052120 f a n c y o u t p u t f o r
0052140 m a t s e a s y t o d e s
0052160 i g n a n d s i m p l e t
0052200 o p r o g r a m . \r ( P R I N
0052220 T N U M F O R M A T N U M B
0052240 E R F I L E ) \t [ F u n c
0052260 t i o n ] \r P r i n t s N U M
0052300 B E R o n F I L E a c c o
0052320 r d i n g t o t h e f o r
0052340 m a t F O R M A T . F O R
0052360 M A T i s a l i s t s t
0052400 r u c t u r e w i t h o n e
0052420 o f t h e f o r m s d e
0052440 s c r i b e d b e l o w . \r \r
0052460 I f F O R M A T i s a l
0052500 i s t o f t h e f o r m
0052520 ( F I X W I D T H R A D I X
0052540 P A D 0 L E F T F L U S H )
0052560 , t h i s s p e c i f i e s
0052600 a F I X f o r m a t .
0052620 N U M B E R i s r o u n d e
0052640 d t o t h e n e a r e s t
0052660 i n t e g e r , a n d t h
0052700 e n p r i n t e d i n a
0052720 f i e l d W I D T H c h a r
0052740 a c t e r s l o n g w i t h
0052760 r a d i x s e t t o R A
0053000 D I X ( o r 1 0 i f R A
0053020 D I X = N I L ; n o t e t h
0053040 a t t h e s e t t i n g o
0053060 f R A D I X i s n o t u
0053100 s e d a s t h e d e f a u
0053120 l t ) . I f P A D 0 a n
0053140 d L E F T F L U S H a r e
0053160 b o t h N I L , t h e n u
0053200 m b e r i s r i g h t - j u
0053220 s t i f i e d i n t h e f
0053240 i e l d , a n d t h e p a
0053260 d d i n g c h a r a c t e r s
0053300 t o t h e l e f t o f
0053320 t h e l e a d i n g d i g i
0053340 t a r e s p a c e s . I
0053360 f P A D 0 i s T , t h e
0053400 c h a r a c t e r " 0 " i
0053420 s u s e d f o r p a d d i
0053440 n g . I f L E F T F L U S
0053460 H i s T , t h e n t h e
0053500 n u m b e r i s l e f t -
0053520 j u s t i f i e d i n t h e
0053540 f i e l d , w i t h t r a
0053560 i l i n g s p a c e s t o
0053600 f i l l o u t W I D T H c
0053620 h a r a c t e r s . \r T h e f
0053640 o l l o w i n g e x a m p l e
0053660 s i l l u s t r a t e t h e
0053700 e f f e c t s o f t h e
0053720 F I X f o r m a t o p t i o
0053740 n s o n t h e n u m b e r
0053760 9 ( t h e v e r t i c a l
0054000 b a r s i n d i c a t e t
0054020 h e f i e l d w i d t h ) :
0054040 \r \t F O R M A T : \t ( P R I N T
0054060 N U M F O R M A T 9 ) p r
0054100 i n t s : \r \t ( F I X 2 ) \t |
0054120 9 | \r \t ( F I X 2 N I L
0054140 T ) \t | 0 9 | \r \t ( F I X 1 2
0054160 8 T ) \t | 0 0 0 0 0 0 0 0 0
0054200 0 1 1 | \r \t ( F I X 5 N I L
0054220 N I L T ) \t | 9 | \r
0054240 I f F O R M A T i s a l
0054260 i s t o f t h e f o r m
0054300 ( F L O A T W I D T H D E C
0054320 P A R T E X P P A R T P A D
0054340 0 R O U N D ) , t h i s s
0054360 p e c i f i e s a F L O A T
0054400 f o r m a t . N U M B E R
0054420 i s p r i n t e d a s a
0054440 d e c i m a l n u m b e r
0054460 i n a f i e l d W I D T H
0054500 c h a r a c t e r s w i d e
0054520 , w i t h D E C P A R T d
0054540 i g i t s t o t h e r i g
0054560 h t o f t h e d e c i m a
0054600 l p o i n t . I f E X P
0054620 P A R T i s n o t 0 ( o
0054640 r N I L ) , t h e n u m b
0054660 e r i s p r i n t e d i n
0054700 e x p o n e n t n o t a t i
0054720 o n , w i t h t h e e x p
0054740 o n e n t o c c u p y i n g
0054760 E X P P A R T c h a r a c t e
0055000 r s i n t h e f i e l d .
0055020 E X P P A R T s h o u l d
0055040 a l l o w f o r t h e c
0055060 h a r a c t e r E a n d a
0055100 n o p t i o n a l s i g n
0055120 t o b e p r i n t e d b e
0055140 f o r e t h e e x p o n e n
0055160 t d i g i t s . A s
0055200 w i t h F I X f o r m a t ,
0055220 p a d d i n g o n t h e
0055240 l e f t i s w i t h s p a
0055260 c e s , u n l e s s P A D 0
0055300 i s T . I f R O U N D
0055320 i s g i v e n , i t i n
0055340 d i c a t e s t h e d i g i
0055360 t p o s i t i o n a t w h
0055400 i c h r o u n d i n g i s
0055420 t o t a k e p l a c e , c
0055440 o u n t i n g f r o m t h e
0055460 l e a d i n g d i g i t o
0055500 f t h e n u m b e r . \r I n
0055520 t e r l i s p - D i n t e r p
0055540 r e t s W I D T H = N I L t
0055560 o m e a n n o p a d d i n
0055600 g , i . e . , t o u s e
0055620 h o w e v e r m u c h s p a
0055640 c e t h e n u m b e r n e
0055660 e d s , a n d i n t e r p r
0055700 e t s D E C P A R T = N I L
0055720 t o m e a n a s m a n y
0055740 d e c i m a l p l a c e s a
0055760 s n e e d e d . \r T h e f o
0056000 l l o w i n g e x a m p l e s
0056020 i l l u s t r a t e t h e
0056040 e f f e c t s o f t h e F
0056060 L O A T f o r m a t o p t i
0056100 o n s o n t h e n u m b e
0056120 r 2 7 . 6 8 9 ( t h e v e
0056140 r t i c a l b a r s i n d i
0056160 c a t e t h e f i e l d w
0056200 i d t h ) : \r \t F O R M A T : \t
0056220 ( P R I N T N U M F O R M A T
0056240 2 7 . 6 8 9 ) p r i n t s :
0056260 \r \t ( F L O A T 7 2 ) \t |
0056300 2 7 . 6 9 | \r \t ( F L O A T
0056320 7 2 N I L T ) \t | 0 0 2 7
0056340 . 6 9 | \r \t ( F L O A T 7 2
0056360 2 ) \t | 2 . 7 7 E 1 | \r \t (
0056400 F L O A T 1 1 2 4 ) \t |
0056420 2 . 7 7 E + 0 1 | \r \t ( F L
0056440 O A T 7 2 N I L N I L
0056460 1 ) \t | 3 0 . 0 0 | \r \t ( F
0056500 L O A T 7 2 N I L N I L
0056520 2 ) \t | 2 8 . 0 0 | \r N I
0056540 L N U M P R I N T F L G \t [
0056560 V a r i a b l e ] \r I f P R I
0056600 N T N U M ' s N U M B E R a
0056620 r g u m e n t i s n o t a
0056640 n u m b e r a n d n o t
0056660 N I L , a N O N - N U M E R
0056700 I C A R G e r r o r i s
0056720 g e n e r a t e d . I f N
0056740 U M B E R i s N I L , t h
0056760 e e f f e c t d e p e n d s
0057000 o n t h e s e t t i n g
0057020 o f t h e v a r i a b l e
0057040 N I L N U M P R I N T F L G .
0057060 I f N I L N U M P R I N T F
0057100 L G i s N I L , t h e n
0057120 t h e e r r o r o c c u r s
0057140 a s u s u a l . I f i
0057160 t i s n o n - N I L , t h
0057200 e n n o e r r o r o c c u
0057220 r s , a n d t h e v a l u
0057240 e o f N I L N U M P R I N T
0057260 F L G i s p r i n t e d r
0057300 i g h t - j u s t i f i e d i
0057320 n t h e f i e l d d e s c
0057340 r i b e d b y F O R M A T .
0057360 T h i s o p t i o n f a
0057400 c i l i t a t e s t h e p r
0057420 i n t i n g o f n u m b e r
0057440 s i n a g g r e g a t e s
0057460 w i t h m i s s i n g v a l
0057500 u e s c o d e d a s N I L
0057520 . \r \r 2 6 . 2 . 3 \t U s e r
0057540 D e f i n e d P r i n t i n
0057560 g \r \r ( D E F P R I N T T Y P
0057600 E F N ) \t [ F u n c t i o
0057620 n ] \r T Y P E i s a t y p
0057640 e n a m e ( s e e p a g e
0057660 X . X X ) . W h e n e v e
0057700 r a p r i n t i n g f u n
0057720 c t i o n ( P R I N T , P R
0057740 I N 1 , P R I N 2 , e t c .
0057760 ) e n c o u n t e r s a n
0060000 o b j e c t o f t h e i n
0060020 d i c a t e d t y p e , F N
0060040 i s c a l l e d w i t h
0060060 t h e i t e m t o b e p
0060100 r i n t e d a s i t s a r
0060120 g u m e n t . I f i t r
0060140 e t u r n s N I L , t h e
0060160 d a t u m i s p r i n t e d
0060200 i n t h e m a n n e r t
0060220 h e s y s t e m d e f a u l
0060240 t s ; f o r u s e r d a
0060260 t a t y p e s , i t i s
0060300 p r i n t e d a s { d a t a
0060320 t y p e } # n n n n n n . I
0060340 f F N w i s h e s t o s
0060360 p e c i f y h o w t h e d
0060400 a t u m s h o u l d b e p
0060420 r i n t e d , i t s h o u l
0060440 d r e t u r n a l i s t
0060460 o f t h e f o r m ( I T E
0060500 M 1 . I T E M 2 ) . I T
0060520 E M 1 i s p r i n t e d u
0060540 s i n g P R I N 1 ( u n l e
0060560 s s i t i s N I L ) , a
0060600 n d t h e n I T E M 2 i s
0060620 p r i n t e d u s i n g P
0060640 R I N 2 ( u n l e s s i t
0060660 i s N I L ) . N o s p a
0060700 c e s a r e p r i n t e d
0060720 b e t w e e n t h e t w o
0060740 i t e m s . T y p i c a l l
0060760 y , I T E M 1 i s a r e
0061000 a d m a c r o c h a r a c t
0061020 e r . \r \r N o t e t h a t D
0061040 E F P R I N T a l s o a f f
0061060 e c t s i n t e r n a l c a
0061100 l l s t o p r i n t f r o
0061120 m P A C K , C O N C A T ,
0061140 e t c . , i . e . a n y o
0061160 p e r a t i o n t h a t i n
0061200 v o l v e s o b t a i n i n g
0061220 a p r i n t n a m e ( s
0061240 e e p a g e X . X X ) .
0061260 A c o n s e q u e n c e o f
0061300 t h i s f a c t i s t h
0061320 a t i n i m p l e m e n t a
0061340 t i o n s t h a t d o n o
0061360 t h a v e r e e n t r a n t
0061400 p r i n t i n g c o d e ,
0061420 t h e u s e r ' s D E F P R
0061440 I N T f u n c t i o n m u s
0061460 t n o t c a l l a n y p
0061500 r i n t n a m e m a n i p u
0061520 l a t i n g f u n c t i o n s
0061540 i t s e l f , o r t h e
0061560 r e s u l t s o f t h e w
0061600 h o l e p r i n t i n g o p
0061620 e r a t i o n a r e u n d e
0061640 f i n e d . \r 2 6 . 2 . 4 \t
0061660 D u m p i n g U n u s u a l
0061700 D a t a S t r u c t u r e s \r
0061720 \r H P R I N T ( f o r " H o
0061740 r r i b l e P r i n t " ) a
0061760 n d H R E A D p r o v i d e
0062000 a m e c h a n i s m f o r
0062020 p r i n t i n g a n d r e
0062040 a d i n g b a c k i n g e
0062060 n e r a l d a t a s t r u c
0062100 t u r e s t h a t c a n n o
0062120 t n o r m a l l y b e d u
0062140 m p e d a n d l o a d e d
0062160 e a s i l y , s u c h a s
0062200 ( p o s s i b l y r e - e n t
0062220 r a n t o r c i r c u l a r
0062240 ) s t r u c t u r e s c o n
0062260 t a i n i n g u s e r d a t
0062300 a t y p e s , a r r a y s ,
0062320 h a s h t a b l e s , a s
0062340 w e l l a s l i s t s t r
0062360 u c t u r e s . H P R I N T
0062400 w i l l c o r r e c t l y
0062420 p r i n t a n d r e a d b
0062440 a c k i n a n y s t r u c
0062460 t u r e c o n t a i n i n g
0062500 a n y o r a l l o f t h
0062520 e a b o v e , c h a s i n g
0062540 a l l p o i n t e r s d o
0062560 w n t o t h e l e v e l
0062600 o f l i t e r a l a t o m s
0062620 , n u m b e r s o r s t r
0062640 i n g s . H P R I N T c u
0062660 r r e n t l y c a n n o t h
0062700 a n d l e c o m p i l e d c
0062720 o d e a r r a y s , s t a c
0062740 k p o s i t i o n s , o r
0062760 a r b i t r a r y u n b o x e
0063000 d n u m b e r s . \r H P R I N
0063020 T o p e r a t e s b y s i
0063040 m u l a t i n g t h e I n t
0063060 e r l i s p P R I N T r o u
0063100 t i n e f o r n o r m a l
0063120 l i s t s t r u c t u r e s .
0063140 W h e n i t e n c o u n
0063160 t e r s a u s e r d a t a
0063200 t y p e ( s e e p a g e X
0063220 . X X ) , o r a n a r r a
0063240 y o r h a s h a r r a y ,
0063260 i t p r i n t s t h e d
0063300 a t a c o n t a i n e d t h
0063320 e r e i n , s u r r o u n d e
0063340 d b y s p e c i a l c h a
0063360 r a c t e r s d e f i n e d
0063400 a s r e a d m a c r o c h
0063420 a r a c t e r s ( s e e p a
0063440 g e X . X X ) . W h i l e
0063460 c h a s i n g t h e p o i
0063500 n t e r s o f a s t r u c
0063520 t u r e , i t a l s o k e
0063540 e p s a h a s h t a b l e
0063560 o f t h o s e i t e m s
0063600 i t e n c o u n t e r s , a
0063620 n d i f a n y i t e m i
0063640 s e n c o u n t e r e d a
0063660 s e c o n d t i m e , a n o
0063700 t h e r r e a d m a c r o
0063720 c h a r a c t e r i s i n s
0063740 e r t e d b e f o r e t h e
0063760 f i r s t o c c u r r e n c
0064000 e ( b y r e s e t t i n g
0064020 t h e f i l e p o i n t e r
0064040 w i t h S E T F I L E P T R
0064060 ) a n d a l l s u b s e q
0064100 u e n t o c c u r r e n c e s
0064120 a r e p r i n t e d a s
0064140 a b a c k r e f e r e n c e
0064160 u s i n g a n a p p r o p
0064200 r i a t e m a c r o c h a r
0064220 a c t e r . T h u s t h e
0064240 i n v e r s e f u n c t i o
0064260 n , H R E A D m e r e l y
0064300 c a l l s t h e I n t e r l
0064320 i s p R E A D r o u t i n e
0064340 w i t h t h e a p p r o p
0064360 r i a t e r e a d t a b l e
0064400 . \r ( H P R I N T E X P R F
0064420 I L E U N C I R C U L A R D
0064440 A T A T Y P E S E E N ) \t [
0064460 F u n c t i o n ] \r P r i n t s
0064500 E X P R o n F I L E .
0064520 I f U N C I R C U L A R i s
0064540 n o n - N I L , H P R I N T
0064560 d o e s n o c h e c k i n
0064600 g f o r a n y c i r c u l
0064620 a r i t i e s i n E X P R
0064640 ( b u t i s s t i l l u s
0064660 e f u l f o r d u m p i n g
0064700 a r b i t r a r y s t r u c
0064720 t u r e s o f a r r a y s ,
0064740 h a s h a r r a y s , l i
0064760 s t s , u s e r d a t a t
0065000 y p e s , e t c . , t h a t
0065020 d o n o t c o n t a i n
0065040 c i r c u l a r i t i e s ) .
0065060 S p e c i f y i n g U N C I
0065100 R C U L A R a s n o n - N I
0065120 L r e s u l t s i n a l
0065140 a r g e s p e e d a n d i
0065160 n t e r n a l - s t o r a g e
0065200 a d v a n t a g e . \r N o r m a
0065220 l l y , w h e n H P R I N T
0065240 e n c o u n t e r s a u s
0065260 e r d a t a t y p e f o r
0065300 t h e f i r s t t i m e ,
0065320 i t o u t p u t s a s u
0065340 m m a r y o f t h e d a t
0065360 a t y p e ' s d e c l a r a
0065400 t i o n . W h e n t h i s
0065420 i s r e a d i n , t h e
0065440 d a t a t y p e i s r e
0065460 d e c l a r e d . I f D A
0065500 T A T Y P E S E E N i s n o
0065520 n - N I L , H P R I N T w i
0065540 l l a s s u m e t h a t t
0065560 h e s a m e d a t a t y p
0065600 e d e c l a r a t i o n s w
0065620 i l l b e i n f o r c e
0065640 a t r e a d t i m e a s
0065660 w e r e a t H P R I N T t
0065700 i m e , a n d n o t o u t
0065720 p u t d e c l a r a t i o n s
0065740 . \r H P R I N T i s i n t e
0065760 n d e d p r i m a r i l y f
0066000 o r o u t p u t t o r a n
0066020 d o m a c c e s s f i l e s
0066040 , s i n c e t h e a l g o
0066060 r i t h m d e p e n d s o n
0066100 b e i n g a b l e t o r
0066120 e s e t t h e f i l e p o
0066140 i n t e r . I f F I L E
0066160 i s n o t a r a n d o m
0066200 a c c e s s f i l e ( a n d
0066220 U N C I R C U L A R = N I
0066240 L ) , a t e m p o r a r y
0066260 f i l e , H P R I N T . S C R
0066300 A T C H , i s o p e n e d ,
0066320 E X P R i s H P R I N T e
0066340 d o n i t , a n d t h e
0066360 n t h a t f i l e i s c
0066400 o p i e d t o t h e f i n
0066420 a l o u t p u t f i l e a
0066440 n d t h e t e m p o r a r y
0066460 f i l e i s d e l e t e d
0066500 . \r \r ( H R E A D F I L E )
0066520 \t [ F u n c t i o n ] \r R e a
0066540 d s a n d r e t u r n s a
0066560 n H P R I N T - e d e x p r
0066600 e s s i o n f r o m F I L E
0066620 . \r \r ( H C O P Y A L L X )
0066640 \t [ F u n c t i o n ] \r C o p
0066660 i e s d a t a s t r u c t u
0066700 r e X . X m a y c o n
0066720 t a i n c i r c u l a r p o
0066740 i n t e r s a s w e l l a
0066760 s a r b i t r a r y s t r u
0067000 c t u r e s . \r \r N o t e : H
0067020 O R R I B L E V A R S a n d
0067040 U G L Y V A R S ( p a g e X
0067060 . X X ) a r e t w o f i l
0067100 e p a c k a g e c o m m a n
0067120 d s f o r d u m p i n g a
0067140 n d r e l o a d i n g c i r
0067160 c u l a r a n d r e - e n t
0067200 r a n t d a t a s t r u c t
0067220 u r e s . T h e y p r o v
0067240 i d e a c o n v e n i e n t
0067260 i n t e r f a c e t o H P
0067300 R I N T a n d H R E A D .
0067320 \r W h e n H P R I N T i s
0067340 d u m p i n g a d a t a s
0067360 t r u c t u r e t h a t c o
0067400 n t a i n s a n i n s t a n
0067420 c e o f a n I n t e r l i
0067440 s p d a t a t y p e , t h e
0067460 d a t a t y p e d e c l a r
0067500 a t i o n i s a l s o p r
0067520 i n t e d o n t o t h e f
0067540 i l e . R e a d i n g s u
0067560 c h a d a t a s t r u c t
0067600 u r e w i t h H R E A D c
0067620 a n c a u s e p r o b l e m
0067640 s i f i t r e d e f i n e
0067660 s a s y s t e m d a t a t
0067700 y p e . R e d e f i n i n g
0067720 a s y s t e m d a t a t y
0067740 p e w i l l a l m o s t d
0067760 e f i n i t e l y c a u s e
0070000 s e r i o u s e r r o r s .
0070020 T h e I n t e r l i s p s
0070040 y s t e m d a t a t y p e s
0070060 d o n o t c h a n g e v e
0070100 r y o f t e n , b u t t h
0070120 e r e i s a l w a y s a
0070140 p o s s i b i l i t y w h e n
0070160 l o a d i n g i n o l d
0070200 f i l e s c r e a t e d u n
0070220 d e r a n o l d I n t e r
0070240 l i s p r e l e a s e . \r T o
0070260 p r e v e n t a c c i d e n
0070300 t a l s y s t e m c r a s h
0070320 e s , H R E A D w i l l N
0070340 O T r e d e f i n e d a t a
0070360 t y p e s . I n s t e a d ,
0070400 i t w i l l c a u s e a
0070420 n e r r o r " a t t e m p t
0070440 t o r e a d D A T A T Y P
0070460 E w i t h d i f f e r e n t
0070500 f i e l d s p e c i f i c a
0070520 t i o n t h a n c u r r e n
0070540 t l y d e f i n e d " . C
0070560 o n t i n u i n g f r o m t
0070600 h i s e r r o r w i l l r
0070620 e d e f i n e t h e d a t a
0070640 t y p e . \r \r 2 6 . 3 \t R a
0070660 n d o m A c c e s s F i l e
0070700 O p e r a t i o n s \r \r F o r
0070720 m o s t a p p l i c a t i o
0070740 n s , f i l e s a r e r e
0070760 a d s t a r t i n g a t t
0071000 h e i r b e g i n n i n g a
0071020 n d p r o c e e d i n g s e
0071040 q u e n t i a l l y , i . e .
0071060 , t h e n e x t c h a r a
0071100 c t e r r e a d i s t h e
0071120 o n e i m m e d i a t e l y
0071140 f o l l o w i n g t h e l
0071160 a s t c h a r a c t e r r e
0071200 a d . S i m i l a r l y ,
0071220 f i l e s a r e w r i t t e
0071240 n s e q u e n t i a l l y .
0071260 H o w e v e r , i t i s
0071300 a l s o p o s s i b l e t o
0071320 r e a d / w r i t e c h a r
0071340 a c t e r s a t a r b i t r
0071360 a r y p o s i t i o n s i n
0071400 a f i l e , e s s e n t i
0071420 a l l y t r e a t i n g t h
0071440 e f i l e a s a l a r g
0071460 e b l o c k o f a u x i l
0071500 i a r y s t o r a g e . F
0071520 o r e x a m p l e , o n e
0071540 a p p l i c a t i o n m i g h
0071560 t i n v o l v e w r i t i n
0071600 g a n e x p r e s s i o n
0071620 a t t h e b e g i n n i n g
0071640 o f t h e f i l e , a n
0071660 d t h e n r e a d i n g a
0071700 n e x p r e s s i o n f r o
0071720 m a s p e c i f i e d p o
0071740 i n t i n i t s m i d d l
0071760 e . T h i s p a r t i c u
0072000 l a r e x a m p l e r e q u
0072020 i r e s t h e f i l e b e
0072040 o p e n f o r b o t h i
0072060 n p u t a n d o u t p u t .
0072100 H o w e v e r , r a n d o
0072120 m f i l e i n p u t o r
0072140 o u t p u t c a n a l s o
0072160 b e p e r f o r m e d o n
0072200 f i l e s t h a t h a v e
0072220 b e e n o p e n e d f o r
0072240 o n l y i n p u t o r o n
0072260 l y o u t p u t . \r A s s o c
0072300 i a t e d w i t h e a c h
0072320 f i l e i s a " f i l e
0072340 p o i n t e r " t h a t p o
0072360 i n t s t o t h e l o c a
0072400 t i o n w h e r e t h e n
0072420 e x t c h a r a c t e r i s
0072440 t o b e r e a d f r o m
0072460 o r w r i t t e n t o .
0072500 T h e f i l e p o i n t e
0072520 r t o a f i l e i s a
0072540 u t o m a t i c a l l y a d v
0072560 a n c e d a f t e r e a c h
0072600 i n p u t o r o u t p u t
0072620 o p e r a t i o n . T h i
0072640 s s e c t i o n d e s c r i
0072660 b e s f u n c t i o n s w h
0072700 i c h c a n b e u s e d
0072720 t o r e p o s i t i o n t h
0072740 e f i l e p o i n t e r o
0072760 n t h o s e f i l e s t h
0073000 a t c a n b e r a n d o m
0073020 l y a c c e s s e d . A
0073040 f i l e u s e d i n t h i
0073060 s f a s h i o n i s m u c
0073100 h l i k e a n a r r a y
0073120 i n t h a t i t h a s a
0073140 c e r t a i n n u m b e r
0073160 o f a d d r e s s a b l e l
0073200 o c a t i o n s t h a t c h
0073220 a r a c t e r s c a n b e
0073240 p u t i n t o o r t a k e
0073260 n f r o m . H o w e v e r
0073300 , u n l i k e a r r a y s ,
0073320 f i l e s c a n b e e n
0073340 l a r g e d . F o r e x a
0073360 m p l e , i f t h e f i l
0073400 e p o i n t e r i s p o s
0073420 i t i o n e d a t t h e e
0073440 n d o f a f i l e a n d
0073460 a n y t h i n g i s w r i
0073500 t t e n , t h e f i l e "
0073520 g r o w s . " I t i s a
0073540 l s o p o s s i b l e t o
0073560 p o s i t i o n t h e f i l
0073600 e p o i n t e r b e y o n d
0073620 t h e e n d o f f i l e
0073640 a n d t h e n t o w r i
0073660 t e . ( I f t h e p r o
0073700 g r a m a t t e m p t s t o
0073720 r e a d b e y o n d t h e
0073740 e n d o f f i l e , a n
0073760 E N D O F F I L E e r r
0074000 o r o c c u r s . ) I n
0074020 t h i s c a s e , t h e f
0074040 i l e i s e n l a r g e d ,
0074060 a n d a " h o l e " i s
0074100 c r e a t e d , w h i c h
0074120 c a n l a t e r b e w r i
0074140 t t e n i n t o . N o t e
0074160 t h a t t h i s e n l a r
0074200 g e m e n t o n l y t a k e
0074220 s p l a c e a t t h e e
0074240 n d o f a f i l e ; i t
0074260 i s n o t p o s s i b l e
0074300 t o m a k e m o r e r o
0074320 o m i n t h e m i d d l e
0074340 o f a f i l e . I n
0074360 o t h e r w o r d s , i f
0074400 e x p r e s s i o n A b e g
0074420 i n s a t p o s i t i o n
0074440 1 0 0 0 , a n d e x p r e s
0074460 s i o n B a t 1 1 0 0 ,
0074500 a n d t h e p r o g r a m
0074520 a t t e m p t s t o o v e r
0074540 w r i t e A w i t h e x p
0074560 r e s s i o n C , w h i c h
0074600 i s 2 0 0 c h a r a c t e
0074620 r s l o n g , p a r t o f
0074640 B w i l l b e a l t e r
0074660 e d . \r T h e a d d r e s s
0074700 o f a c h a r a c t e r (
0074720 b y t e ) i s t h e n u m
0074740 b e r o f c h a r a c t e r
0074760 s ( b y t e s ) t h a t p
0075000 r e c e d e i t i n t h e
0075020 f i l e , i . e . , 0 i
0075040 s t h e a d d r e s s o f
0075060 t h e b e g i n n i n g o
0075100 f t h e f i l e . H o w
0075120 e v e r , t h e u s e r s
0075140 h o u l d b e c a r e f u l
0075160 a b o u t c o m p u t i n g
0075200 t h e s p a c e n e e d e
0075220 d f o r a n e x p r e s s
0075240 i o n , s i n c e e n d - o
0075260 f - l i n e m a y b e r e
0075300 p r e s e n t e d b y a d
0075320 i f f e r e n t n u m b e r
0075340 o f c h a r a c t e r s i n
0075360 d i f f e r e n t i m p l e
0075400 m e n t a t i o n s , e v e n
0075420 t h o u g h N C H A R S o
0075440 n l y c o u n t s i t a s
0075460 o n e . O u t p u t f u
0075500 n c t i o n s m a y a l s o
0075520 i n t r o d u c e e n d - o
0075540 f - l i n e ' s a s a r e
0075560 s u l t o f L I N E L E N G
0075600 T H c o n s i d e r a t i o n
0075620 s . \r ( G E T F I L E P T R F
0075640 I L E ) \t [ F u n c t i o n
0075660 ] \r R e t u r n s t h e c u
0075700 r r e n t p o s i t i o n o
0075720 f t h e f i l e p o i n t
0075740 e r f o r F I L E , i . e
0075760 . , t h e b y t e a d d r
0076000 e s s a t w h i c h t h e
0076020 n e x t i n p u t / o u t p
0076040 u t o p e r a t i o n w i l
0076060 l c o m m e n c e . \r \r ( S E
0076100 T F I L E P T R F I L E A D
0076120 R ) \t [ F u n c t i o n ] \r
0076140 S e t s t h e f i l e p o
0076160 i n t e r f o r F I L E t
0076200 o t h e p o s i t i o n A
0076220 D R ; r e t u r n s A D R .
0076240 T h e s p e c i a l v a
0076260 l u e A D R = - 1 i s i n
0076300 t e r p r e t e d t o m e a
0076320 n t h e a d d r e s s o f
0076340 t h e e n d o f f i l e
0076360 . \r N o t e : I f a f i
0076400 l e i s o p e n e d f o r
0076420 o u t p u t o n l y , t h
0076440 e e n d o f f i l e i s
0076460 i n i t i a l l y z e r o ,
0076500 e v e n i f a n o l d
0076520 f i l e b y t h e s a m e
0076540 n a m e h a d e x i s t e
0076560 d ( s e e O P E N S T R E A
0076600 M , p a g e X . X X ) .
0076620 I f a f i l e i s o p e
0076640 n e d f o r b o t h i n p
0076660 u t a n d o u t p u t , t
0076700 h e i n i t i a l f i l e
0076720 p o i n t e r i s t h e b
0076740 e g i n n i n g o f t h e
0076760 f i l e , b u t ( S E T F I
0077000 L E P T R F I L E - 1 ) w
0077020 i l l s e t i t t o t h
0077040 e e n d o f t h e f i l
0077060 e . I f t h e f i l e
0077100 h a d b e e n o p e n e d
0077120 i n a p p e n d m o d e b
0077140 y ( O P E N S T R E A M F I
0077160 L E ' A P P E N D ) , t h e
0077200 f i l e p o i n t e r r i
0077220 g h t a f t e r o p e n i n
0077240 g w o u l d b e s e t t
0077260 o t h e e n d o f t h e
0077300 e x i s t i n g f i l e ,
0077320 i n w h i c h c a s e a
0077340 S E T F I L E P T R t o p o
0077360 s i t i o n t h e f i l e
0077400 a t t h e e n d w o u l d
0077420 b e u n n e c e s s a r y .
0077440 \r \r ( G E T E O F P T R F I L
0077460 E ) \t [ F u n c t i o n ] \r
0077500 R e t u r n s t h e b y t e
0077520 a d d r e s s o f t h e
0077540 e n d o f f i l e , i . e
0077560 . , t h e n u m b e r o f
0077600 b y t e s i n t h e f i
0077620 l e . E q u i v a l e n t
0077640 t o p e r f o r m i n g ( S
0077660 E T F I L E P T R F I L E -
0077700 1 ) a n d r e t u r n i n g
0077720 ( G E T F I L E P T R F I L
0077740 E ) e x c e p t t h a t i
0077760 t d o e s n o t c h a n g
0100000 e t h e c u r r e n t f i
0100020 l e p o i n t e r . \r \r ( E O
0100040 F P F I L E ) \t [ F u n c
0100060 t i o n ] \r R e t u r n s T
0100100 i f t h e f i l e p o i n
0100120 t e r t o F I L E i s p
0100140 o i n t i n g t o t h e e
0100160 n d o f f i l e ; N I L
0100200 o t h e r w i s e . F I L E
0100220 m u s t b e o p e n f o
0100240 r ( a t l e a s t ) i n p
0100260 u t , o r a n e r r o r
0100300 i s g e n e r a t e d , F I
0100320 L E N O T O P E N . \r \r ( R
0100340 A N D A C C E S S P F I L E )
0100360 \t [ F u n c t i o n ] \r R e
0100400 t u r n s F I L E i f F I
0100420 L E i s r a n d o m l y a
0100440 c c e s s i b l e , N I L o
0100460 t h e r w i s e . T h e f
0100500 i l e T i s n o t r a n
0100520 d o m l y a c c e s s i b l e
0100540 , n o r a r e c e r t a i
0100560 n n e t w o r k f i l e c
0100600 o n n e c t i o n s i n I n
0100620 t e r l i s p - D . F I L E
0100640 m u s t b e o p e n o r
0100660 a n e r r o r i s g e n
0100700 e r a t e d , F I L E N O T
0100720 O P E N . \r \r ( C O P Y B Y T
0100740 E S S R C F I L D S T F I L
0100760 S T A R T E N D ) \t [ F
0101000 u n c t i o n ] \r C o p i e s
0101020 b y t e s ( c h a r a c t e r
0101040 s ) f r o m S R C F I L t
0101060 o D S T F I L , s t a r t i
0101100 n g f r o m p o s i t i o n
0101120 S T A R T a n d u p t o
0101140 b u t n o t i n c l u d i
0101160 n g p o s i t i o n E N D .
0101200 B o t h S R C F I L a n
0101220 d D S T F I L m u s t b e
0101240 o p e n . R e t u r n s
0101260 T . \r I f E N D = N I L , S
0101300 T A R T i s i n t e r p r e
0101320 t e d a s t h e n u m b e
0101340 r o f b y t e s t o c o
0101360 p y ( s t a r t i n g a t
0101400 t h e c u r r e n t p o s i
0101420 t i o n ) . I f S T A R T
0101440 i s a l s o N I L , b y
0101460 t e s a r e c o p i e d u
0101500 n t i l t h e e n d o f
0101520 t h e f i l e i s r e a c
0101540 h e d . \r \r ( C O P Y C H A R S
0101560 S R C F I L D S T F I L S
0101600 T A R T E N D ) \t [ F u n
0101620 c t i o n ] \r L i k e C O P Y
0101640 B Y T E S e x c e p t t h a
0101660 t i t p e r f o r m s t h
0101700 e p r o p e r c o n v e r s
0101720 i o n i f t h e E O L c
0101740 o n v e n t i o n s o f S R
0101760 C F I L a n d D S T F I L
0102000 a r e n o t t h e s a m e
0102020 . S T A R T a n d E N D
0102040 a r e i n t e r p r e t e d
0102060 a s b y t e s p e c i f i
0102100 c a t i o n s i n S R C F I
0102120 L . T h e n u m b e r o
0102140 f b y t e s a c t u a l l y
0102160 o u t p u t t o D S T F I
0102200 L m i g h t b e m o r e
0102220 o r l e s s t h a n t h e
0102240 n u m b e r o f b y t e s
0102260 s p e c i f i e d b y S T
0102300 A R T a n d E N D , d e p
0102320 e n d i n g o n w h a t t
0102340 h e E O L c o n v e n t i o
0102360 n s a r e . I n t h e
0102400 c a s e w h e r e t h e E
0102420 O L c o n v e n t i o n s h
0102440 a p p e n t o b e t h e
0102460 s a m e , C O P Y C H A R S
0102500 s i m p l y c a l l s C O P
0102520 Y B Y T E S . \r \r ( F I L E P O
0102540 S P A T T E R N F I L E S
0102560 T A R T E N D S K I P T A
0102600 I L C A S E A R R A Y ) \t
0102620 [ F u n c t i o n ] \r A n a l o
0102640 g o u s t o S T R P O S (
0102660 p a g e X . X X ) , b u t
0102700 s e a r c h e s a f i l e
0102720 r a t h e r t h a n a s t
0102740 r i n g . F I L E P O S s
0102760 e a r c h e s F I L E f o r
0103000 t h e s t r i n g P A T T
0103020 E R N . S e a r c h b e g i
0103040 n s a t S T A R T ( o r
0103060 t h e c u r r e n t p o s i
0103100 t i o n o f t h e f i l e
0103120 p o i n t e r , i f S T A
0103140 R T = N I L ) , a n d g o e
0103160 s t o E N D ( o r t h e
0103200 e n d o f F I L E , i f
0103220 E N D = N I L ) . R e t u
0103240 r n s t h e a d d r e s s
0103260 o f t h e s t a r t o f
0103300 t h e m a t c h , o r N I
0103320 L i f n o t f o u n d . \r
0103340 S K I P c a n b e u s e d
0103360 t o s p e c i f y a c h
0103400 a r a c t e r w h i c h m a
0103420 t c h e s a n y c h a r a c
0103440 t e r i n t h e f i l e .
0103460 I f T A I L i s T ,
0103500 a n d t h e s e a r c h i
0103520 s s u c c e s s f u l , t h
0103540 e v a l u e i s t h e a
0103560 d d r e s s o f t h e f i
0103600 r s t c h a r a c t e r a f
0103620 t e r t h e s e q u e n c e
0103640 o f c h a r a c t e r s c
0103660 o r r e s p o n d i n g t o
0103700 P A T T E R N , i n s t e a d
0103720 o f t h e s t a r t i n g
0103740 a d d r e s s o f t h e
0103760 s e q u e n c e . I n e i
0104000 t h e r c a s e , t h e f
0104020 i l e i s l e f t s o t
0104040 h a t t h e n e x t i / o
0104060 o p e r a t i o n b e g i n
0104100 s a t t h e a d d r e s s
0104120 r e t u r n e d a s t h e
0104140 v a l u e o f F I L E P O
0104160 S . \r C A S E A R R A Y s h o
0104200 u l d b e a " c a s e a
0104220 r r a y " t h a t s p e c i
0104240 f i e s t h a t c e r t a i
0104260 n c h a r a c t e r s s h o
0104300 u l d b e t r a n s f o r m
0104320 e d t o o t h e r c h a r
0104340 a c t e r s b e f o r e m a
0104360 t c h i n g . C a s e a r
0104400 r a y s a r e r e t u r n e
0104420 d b y C A S E A R R A Y o
0104440 r S E P R C A S E b e l o w
0104460 . C A S E A R R A Y = N I L
0104500 m e a n s n o t r a n s f
0104520 o r m a t i o n w i l l b e
0104540 p e r f o r m e d . \r A c a
0104560 s e a r r a y i s a n i
0104600 m p l e m e n t a t i o n - d e
0104620 p e n d e n t o b j e c t t
0104640 h a t i s l o g i c a l l y
0104660 a n a r r a y o f c h a
0104700 r a c t e r c o d e s w i t
0104720 h o n e e n t r y f o r
0104740 e a c h p o s s i b l e c h
0104760 a r a c t e r . F I L E P O
0105000 S m a p s e a c h c h a r
0105020 a c t e r i n t h e f i l
0105040 e " t h r o u g h " C A S E
0105060 A R R A Y i n t h e s e n
0105100 s e t h a t e a c h c h a
0105120 r a c t e r c o d e i s t
0105140 r a n s f o r m e d i n t o
0105160 t h e c o r r e s p o n d i n
0105200 g c h a r a c t e r c o d e
0105220 f r o m C A S E A R R A Y
0105240 b e f o r e m a t c h i n g .
0105260 T h u s i f t w o c h
0105300 a r a c t e r s m a p i n t
0105320 o t h e s a m e v a l u e
0105340 , t h e y a r e t r e a t
0105360 e d a s e q u i v a l e n t
0105400 b y F I L E P O S . C A
0105420 S E A R R A Y a n d S E T C
0105440 A S E A R R A Y p r o v i d e
0105460 a n i m p l e m e n t a t i
0105500 o n - i n d e p e n d e n t i
0105520 n t e r f a c e t o c a s e
0105540 a r r a y s . \r F o r e
0105560 x a m p l e , t o s e a r c
0105600 h w i t h o u t r e g a r d
0105620 t o u p p e r a n d l o
0105640 w e r c a s e d i f f e r e
0105660 n c e s , C A S E A R R A Y
0105700 w o u l d b e a c a s e
0105720 a r r a y w h e r e a l l
0105740 c h a r a c t e r s m a p t
0105760 o t h e m s e l v e s , e x
0106000 c e p t f o r l o w e r c
0106020 a s e c h a r a c t e r s ,
0106040 w h o s e c o r r e s p o n d
0106060 i n g e l e m e n t s w o u
0106100 l d b e t h e u p p e r
0106120 c a s e c h a r a c t e r s .
0106140 T o s e a r c h f o r
0106160 a d e l i m i t e d a t o m
0106200 , o n e c o u l d u s e
0106220 " A T O M " a s t h e
0106240 p a t t e r n , a n d s p e
0106260 c i f y a c a s e a r r a
0106300 y i n w h i c h a l l o
0106320 f t h e b r e a k a n d
0106340 s e p a r a t o r c h a r a c
0106360 t e r s m a p p e d i n t o
0106400 t h e s a m e c o d e a
0106420 s s p a c e . \r \r F o r a p
0106440 p l i c a t i o n s c a l l i
0106460 n g f o r e x t e n s i v e
0106500 f i l e s e a r c h e s ,
0106520 t h e f u n c t i o n F F I
0106540 L E P O S i s o f t e n f
0106560 a s t e r t h a n F I L E P
0106600 O S . \r ( F F I L E P O S P A
0106620 T T E R N F I L E S T A R T
0106640 E N D S K I P T A I L C
0106660 A S E A R R A Y ) \t [ F u n
0106700 c t i o n ] \r L i k e F I L E
0106720 P O S , e x c e p t m u c h
0106740 f a s t e r i n m o s t
0106760 a p p l i c a t i o n s . F
0107000 F I L E P O S i s a n i m
0107020 p l e m e n t a t i o n o f
0107040 t h e B o y e r - M o o r e
0107060 f a s t s t r i n g s e a r
0107100 c h i n g a l g o r i t h m .
0107120 T h i s a l g o r i t h m
0107140 p r e p r o c e s s e s t h
0107160 e s t r i n g b e i n g s
0107200 e a r c h e d f o r a n d
0107220 t h e n s c a n s t h r o u
0107240 g h t h e f i l e i n s
0107260 t e p s u s u a l l y e q u
0107300 a l t o t h e l e n g t h
0107320 o f t h e s t r i n g .
0107340 T h u s , F F I L E P O S
0107360 s p e e d s u p r o u g h l
0107400 y i n p r o p o r t i o n
0107420 t o t h e l e n g t h o f
0107440 t h e s t r i n g , e . g
0107460 . , a s t r i n g o f l
0107500 e n g t h 1 0 w i l l b e
0107520 f o u n d t w i c e a s
0107540 f a s t a s a s t r i n g
0107560 o f l e n g t h 5 i n
0107600 t h e s a m e p o s i t i o
0107620 n . \r B e c a u s e o f c e
0107640 r t a i n f i x e d o v e r
0107660 h e a d s , i t i s g e n
0107700 e r a l l y b e t t e r t o
0107720 u s e F I L E P O S f o r
0107740 s h o r t s e a r c h e s
0107760 o r s h o r t s t r i n g s
0110000 . \r \r ( C A S E A R R A Y O L
0110020 D A R R A Y ) \t [ F u n c t
0110040 i o n ] \r C r e a t e s a n d
0110060 r e t u r n s a n e w c
0110100 a s e a r r a y , w i t h
0110120 a l l e l e m e n t s s e t
0110140 t o t h e m s e l v e s ,
0110160 t o i n d i c a t e t h e
0110200 i d e n t i t y m a p p i n g
0110220 . I f O L D A R R A Y i
0110240 s g i v e n , i t i s r
0110260 e u s e d . \r \r ( S E T C A S E
0110300 A R R A Y C A S E A R R A Y
0110320 F R O M C O D E T O C O D E )
0110340 \t [ F u n c t i o n ] \r M o
0110360 d i f i e s t h e c a s e
0110400 a r r a y C A S E A R R A Y
0110420 s o t h a t c h a r a c t e
0110440 r c o d e F R O M C O D E
0110460 i s m a p p e d t o c h a
0110500 r a c t e r c o d e T O C O
0110520 D E . \r \r ( G E T C A S E A R R
0110540 A Y C A S E A R R A Y F R O
0110560 M C O D E ) \t [ F u n c t i
0110600 o n ] \r R e t u r n s t h e
0110620 c h a r a c t e r c o d e t
0110640 h a t F R O M C O D E i s
0110660 m a p p e d t o i n C A S
0110700 E A R R A Y . \r \r ( S E P R C A
0110720 S E C L F L G ) \t [ F u n
0110740 c t i o n ] \r R e t u r n s a
0110760 n e w c a s e a r r a y
0111000 s u i t a b l e f o r u s e
0111020 b y F I L E P O S o r F
0111040 F I L E P O S i n w h i c h
0111060 a l l o f t h e b r e a
0111100 k / s e p a r a t o r s o f
0111120 F I L E R D T B L a r e m a
0111140 p p e d i n t o c h a r a c
0111160 t e r c o d e z e r o .
0111200 I f C L F L G i s n o n -
0111220 N I L , t h e n a l l C L
0111240 I S P c h a r a c t e r s w
0111260 i l l b e m a p p e d i n
0111300 t o t h i s c h a r a c t e
0111320 r a s w e l l . T h i s
0111340 i s u s e f u l f o r f
0111360 i n d i n g a d e l i m i t
0111400 e d a t o m i n a f i l
0111420 e . F o r e x a m p l e ,
0111440 i f P A T T E R N i s "
0111460 F O O " , a n d ( S E P
0111500 R C A S E T ) i s u s e d
0111520 f o r C A S E A R R A Y ,
0111540 t h e n F I L E P O S w i l
0111560 l f i n d " ( F O O _ " . \r
0111600 \r U P P E R C A S E A R R A Y
0111620 \t [ V a r i a b l e ] \r V a l
0111640 u e i s a c a s e a r r
0111660 a y i n w h i c h e v e r
0111700 y l o w e r c a s e c h a r
0111720 a c t e r i s m a p p e d
0111740 i n t o t h e c o r r e s p
0111760 o n d i n g u p p e r c a s e
0112000 c h a r a c t e r . U s e
0112020 f u l f o r s e a r c h i n
0112040 g t e x t f i l e s . \r \r \r
0112060 2 6 . 4 \t P R I N T O U T \r
0112100 \r I n t e r l i s p p r o v i
0112120 d e s m a n y f a c i l i t
0112140 i e s f o r c o n t r o l l
0112160 i n g t h e f o r m a t o
0112200 f p r i n t e d o u t p u t
0112220 . B y e x e c u t i n g
0112240 v a r i o u s s e q u e n c e
0112260 s o f P R I N 1 , P R I N
0112300 2 , T A B , T E R P R I ,
0112320 S P A C E S , P R I N T N U M
0112340 , a n d P R I N T D E F ,
0112360 a l m o s t a n y e f f e c
0112400 t c a n b e a c h i e v e
0112420 d . P R I N T O U T i m p
0112440 l e m e n t s a c o m p a c
0112460 t l a n g u a g e f o r s
0112500 p e c i f y i n g c o m p l i
0112520 c a t e d s e q u e n c e s
0112540 o f t h e s e e l e m e n t
0112560 a r y p r i n t i n g f u n
0112600 c t i o n s . I t m a k e
0112620 s f a n c y o u t p u t f
0112640 o r m a t s e a s y t o d
0112660 e s i g n a n d s i m p l e
0112700 t o p r o g r a m . \r P R I
0112720 N T O U T i s a C L I S P
0112740 w o r d ( l i k e F O R
0112760 a n d I F ) f o r i n t e
0113000 r p r e t i n g a s p e c i
0113020 a l p r i n t i n g l a n g
0113040 u a g e i n w h i c h t h
0113060 e u s e r c a n d e s c r
0113100 i b e t h e k i n d s o f
0113120 p r i n t i n g d e s i r e
0113140 d . T h e d e s c r i p t
0113160 i o n i s t r a n s l a t e
0113200 d b y D W I M I F Y t o
0113220 t h e a p p r o p r i a t e
0113240 s e q u e n c e o f P R I N
0113260 1 , T A B , e t c . , b e
0113300 f o r e i t i s e v a l u
0113320 a t e d o r c o m p i l e d
0113340 . P R I N T O U T p r i n
0113360 t i n g d e s c r i p t i o n
0113400 s h a v e t h e f o l l o
0113420 w i n g g e n e r a l f o r
0113440 m : \r ( P R I N T O U T F I L
0113460 E P R I N T C O M 1 . . .
0113500 P R I N T C O M N ) \r F I L E
0113520 i s e v a l u a t e d t o
0113540 o b t a i n t h e n a m e
0113560 o f t h e f i l e t o w
0113600 h i c h t h e o u t p u t
0113620 f r o m t h i s s p e c i f
0113640 i c a t i o n i s d i r e c
0113660 t e d . T h e P R I N T O
0113700 U T c o m m a n d s a r e
0113720 s t r u n g t o g e t h e r ,
0113740 o n e a f t e r t h e o
0113760 t h e r w i t h o u t p u n
0114000 c t u a t i o n , a f t e r
0114020 F I L E . S o m e c o m m
0114040 a n d s o c c u p y a s i
0114060 n g l e p o s i t i o n i n
0114100 t h i s l i s t , b u t
0114120 m a n y c o m m a n d s e x
0114140 p e c t t o f i n d a r g
0114160 u m e n t s f o l l o w i n g
0114200 t h e c o m m a n d n a m
0114220 e i n t h e l i s t .
0114240 T h e c o m m a n d s f a l
0114260 l i n t o s e v e r a l l
0114300 o g i c a l g r o u p s :
0114320 o n e s e t d e a l s w i
0114340 t h h o r i z o n t a l a n
0114360 d v e r t i c a l s p a c i
0114400 n g , a n o t h e r g r o u
0114420 p p r o v i d e s c o n t r
0114440 o l s f o r c e r t a i n
0114460 f o r m a t t i n g c a p a b
0114500 i l i t i e s ( f o n t c h
0114520 a n g e s a n d s u b s c r
0114540 i p t i n g ) , w h i l e a
0114560 t h i r d s e t i s c o
0114600 n c e r n e d w i t h v a r
0114620 i o u s w a y s o f a c t
0114640 u a l l y p r i n t i n g i
0114660 t e m s . F i n a l l y ,
0114700 t h e r e i s a c o m m a
0114720 n d t h a t p e r m i t s
0114740 e s c a p i n g t o a s i
0114760 m p l e L i s p e v a l u a
0115000 t i o n i n t h e m i d d
0115020 l e o f a P R I N T O U T
0115040 f o r m . T h e v a r i
0115060 o u s c o m m a n d s a r e
0115100 d e s c r i b e d b e l o w
0115120 . T h e f o l l o w i n g
0115140 e x a m p l e s g i v e a
0115160 g e n e r a l f l a v o r
0115200 o f h o w P R I N T O U T
0115220 i s u s e d : \r E x a m p l e
0115240 1 : S u p p o s e t h e
0115260 u s e r w a n t e d t o
0115300 p r i n t o u t o n t h e
0115320 t e r m i n a l t h e v a
0115340 l u e s o f t h r e e v a
0115360 r i a b l e s , X , Y , a
0115400 n d Z , s e p a r a t e d
0115420 b y s p a c e s a n d f o
0115440 l l o w e d b y a c a r r
0115460 i a g e r e t u r n . T h
0115500 i s c o u l d b e d o n e
0115520 b y : \r ( P R I N 1 X T )
0115540 \r ( S P A C E S 1 T ) \r ( P
0115560 R I N 1 Y T ) \r ( S P A C E
0115600 S 1 T ) \r ( P R I N 1 Z
0115620 T ) \r ( T E R P R I T ) \r o r
0115640 b y t h e m o r e c o n
0115660 c i s e P R I N T O U T f o
0115700 r m : \r ( P R I N T O U T T
0115720 X , Y , Z T ) \r H e r
0115740 e t h e f i r s t T s p
0115760 e c i f i e s o u t p u t t
0116000 o t h e t e r m i n a l ,
0116020 t h e c o m m a s c a u s e
0116040 s i n g l e s p a c e s t
0116060 o b e p r i n t e d , a n
0116100 d t h e f i n a l T s p
0116120 e c i f i e s a T E R P R I
0116140 . T h e v a r i a b l e
0116160 n a m e s a r e n o t r e
0116200 c o g n i z e d a s s p e c
0116220 i a l P R I N T O U T c o m
0116240 m a n d s , s o t h e y a
0116260 r e p r i n t e d u s i n g
0116300 P R I N 1 b y d e f a u l
0116320 t . \r E x a m p l e 2 : S
0116340 u p p o s e t h e v a l u e
0116360 s o f X a n d Y a r e
0116400 t o b e p r e t t y - p r
0116420 i n t e d l i n e d u p a
0116440 t p o s i t i o n 1 0 , p
0116460 r e c e d e d b y i d e n t
0116500 i f y i n g s t r i n g s .
0116520 I f t h e o u t p u t i
0116540 s t o g o t o t h e p
0116560 r i m a r y o u t p u t s t
0116600 r e a m , t h e u s e r c
0116620 o u l d w r i t e e i t h e
0116640 r : \r ( P R I N 1 " X = " )
0116660 \r ( P R I N T D E F X 1 0
0116700 T ) \r ( T E R P R I ) \r ( P R
0116720 I N 1 " Y = " ) \r ( P R I N
0116740 T D E F Y 1 0 T ) \r ( T E
0116760 R P R I ) \r o r t h e e q u
0117000 i v a l e n t : \r ( P R I N T O
0117020 U T N I L " X = " 1 0
0117040 . P P V X T \r " Y =
0117060 " 1 0 . P P V Y T ) \r S
0117100 i n c e s t r i n g s a r e
0117120 n o t r e c o g n i z e d
0117140 a s s p e c i a l c o m m a
0117160 n d s , " X = " i s a l
0117200 s o p r i n t e d w i t h
0117220 P R I N 1 b y d e f a u l t
0117240 . T h e p o s i t i v e
0117260 i n t e g e r m e a n s T A
0117300 B t o p o s i t i o n 1 0
0117320 , w h e r e t h e . P P V
0117340 c o m m a n d c a u s e s
0117360 t h e v a l u e o f X t
0117400 o b e p r e t t y p r i n t
0117420 e d a s a v a r i a b l e
0117440 . B y c o n v e n t i o n
0117460 , s p e c i a l a t o m s
0117500 u s e d a s P R I N T O U T
0117520 c o m m a n d s a r e p r
0117540 e f i x e d w i t h a p e
0117560 r i o d . T h e T c a u
0117600 s e s a c a r r i a g e r
0117620 e t u r n , s o t h e Y
0117640 i n f o r m a t i o n i s p
0117660 r i n t e d o n t h e n e
0117700 x t l i n e . \r E x a m p l e
0117720 3 . A s a f i n a l
0117740 e x a m p l e , s u p p o s e
0117760 t h a t t h e v a l u e
0120000 o f X i s a n i n t e g
0120020 e r a n d t h e v a l u e
0120040 o f Y i s a f l o a t
0120060 i n g - p o i n t n u m b e r
0120100 . X i s t o b e p r
0120120 i n t e d r i g h t - f l u s
0120140 h e d i n a f i e l d o
0120160 f w i d t h 5 b e g i n n
0120200 i n g a t p o s i t i o n
0120220 1 5 , a n d Y i s t o
0120240 b e p r i n t e d i n a
0120260 f i e l d o f w i d t h 1
0120300 0 a l s o s t a r t i n g
0120320 a t p o s i t i o n 1 5 w
0120340 i t h 2 p l a c e s t o
0120360 t h e r i g h t o f t h e
0120400 d e c i m a l p o i n t .
0120420 F u r t h e r m o r e , s u
0120440 p p o s e t h a t t h e v
0120460 a r i a b l e n a m e s a r
0120500 e t o a p p e a r i n t
0120520 h e f o n t c l a s s n a
0120540 m e d B O L D F O N T a n d
0120560 t h e v a l u e s i n f
0120600 o n t c l a s s S M A L L F
0120620 O N T . T h e p r o g r a
0120640 m i n o r d i n a r y I n
0120660 t e r l i s p t h a t w o u
0120700 l d a c c o m p l i s h t h
0120720 e s e e f f e c t s i s t
0120740 o o c o m p l i c a t e d t
0120760 o i n c l u d e h e r e .
0121000 W i t h P R I N T O U T ,
0121020 o n e c o u l d w r i t e :
0121040 \r ( P R I N T O U T N I L \r
0121060 . F O N T B O L D F O N T
0121100 " X = " 1 5 \r . F O
0121120 N T S M A L L F O N T . I 5
0121140 X T \r . F O N T B O
0121160 L D F O N T " Y = " 1 5 \r
0121200 . F O N T S M A L L F O
0121220 N T . F 1 0 . 2 Y T \r
0121240 . F O N T B O L D F O N T )
0121260 \r T h e . F O N T c o m m a
0121300 n d s d o w h a t e v e r
0121320 i s n e c e s s a r y t o
0121340 c h a n g e t h e f o n t
0121360 o n a m u l t i - f o n t
0121400 o u t p u t d e v i c e .
0121420 T h e . I 5 c o m m a n d
0121440 s e t s u p a F I X f o
0121460 r m a t f o r a c a l l
0121500 t o t h e f u n c t i o n
0121520 P R I N T N U M ( p a g e X
0121540 . X X ) t o p r i n t X
0121560 i n t h e d e s i r e d f
0121600 o r m a t . T h e . F 1 0
0121620 . 2 s p e c i f i e s a F
0121640 L O A T f o r m a t f o r
0121660 P R I N T N U M . \r 2 6 . 4 . 1
0121700 \t H o r i z o n t a l S p
0121720 a c i n g C o m m a n d s \r \r
0121740 T h e h o r i z o n t a l s
0121760 p a c i n g c o m m a n d s
0122000 p r o v i d e c o n v e n i e
0122020 n t w a y s o f c a l l i
0122040 n g T A B a n d S P A C E
0122060 S . I n t h e f o l l o
0122100 w i n g d e s c r i p t i o n
0122120 s , N s t a n d s f o r
0122140 a l i t e r a l p o s i t i
0122160 v e i n t e g e r . \r \t N \t U
0122200 s e d f o r a b s o l u t e
0122220 s p a c i n g . I t r e
0122240 s u l t s i n a T A B t
0122260 o p o s i t i o n N ( l i
0122300 t e r a l l y , a ( T A B
0122320 N ) ) . I f t h e l i n
0122340 e i s c u r r e n t l y a
0122360 t p o s i t i o n N o r
0122400 b e y o n d , t h e f i l e
0122420 w i l l b e p o s i t i o
0122440 n e d a t p o s i t i o n
0122460 N o n t h e n e x t l i
0122500 n e . \r \t . T A B P O S \t S p
0122520 e c i f i e s T A B t o p
0122540 o s i t i o n ( t h e v a l
0122560 u e o f ) P O S . T h i
0122600 s i s o n e o f s e v e
0122620 r a l c o m m a n d s w h o
0122640 s e e f f e c t c o u l d
0122660 b e a c h i e v e d b y s
0122700 i m p l y e s c a p i n g t
0122720 o L i s p , a n d e x e c
0122740 u t i n g t h e c o r r e s
0122760 p o n d i n g f o r m . I
0123000 t i s p r o v i d e d a s
0123020 a s e p a r a t e c o m m
0123040 a n d s o t h a t t h e
0123060 P R I N T O U T f o r m i s
0123100 m o r e c o n c i s e a n
0123120 d i s p r e t t y p r i n t
0123140 e d m o r e c o m p a c t l
0123160 y . N o t e t h a t . T
0123200 A B N a n d N , w h e r
0123220 e N i s a n i n t e g e
0123240 r , a r e e q u i v a l e n
0123260 t . \r \t . T A B 0 P O S \t L i
0123300 k e . T A B e x c e p t t
0123320 h a t i t c a n r e s u l
0123340 t i n z e r o s p a c e s
0123360 ( i . e . t h e c a l l
0123400 t o T A B s p e c i f i e s
0123420 M I N S P A C E S = 0 ) . \r \t
0123440 - N \t N e g a t i v e i n t e
0123460 g e r s i n d i c a t e r e
0123500 l a t i v e ( a s o p p o s
0123520 e d t o a b s o l u t e )
0123540 s p a c i n g . T r a n s l
0123560 a t e s a s ( S P A C E S
0123600 | N | ) . \r \t , , , , , , \t
0123620 P r o v i d e s a s h o r t
0123640 - h a n d w a y o f s p e
0123660 c i f y i n g 1 , 2 o r
0123700 3 s p a c e s , i . e . ,
0123720 t h e s e c o m m a n d s a
0123740 r e e q u i v a l e n t t o
0123760 - 1 , - 2 , a n d - 3 ,
0124000 r e s p e c t i v e l y . \r \t
0124020 . S P D I S T A N C E \t T r a
0124040 n s l a t e s a s ( S P A C
0124060 E S D I S T A N C E ) . N
0124100 o t e t h a t . S P N a
0124120 n d - N , w h e r e N i
0124140 s a n i n t e g e r , a r
0124160 e e q u i v a l e n t . \r \t .
0124200 R E S E T \t R e s e t s t h e
0124220 c u r r e n t l i n e b y
0124240 c a u s i n g a c a r r i
0124260 a g e - r e t u r n t o b e
0124300 p r i n t e d w i t h o u t
0124320 a l i n e - f e e d . U
0124340 s e f u l f o r o v e r p r
0124360 i n t i n g , o r f o r r
0124400 e g a i n i n g c o n t r o l
0124420 o f a l i n e o n w h
0124440 i c h c h a r a c t e r s h
0124460 a v e b e e n p r i n t e d
0124500 i n a v a r i a b l e p
0124520 i t c h e d f o n t . \r 2 6 .
0124540 4 . 2 \t V e r t i c a l S
0124560 p a c i n g C o m m a n d s \r
0124600 \r V e r t i c a l s p a c i n
0124620 g i s o b t a i n e d b y
0124640 c a l l i n g T E R P R I
0124660 o r p r i n t i n g f o r m
0124700 - f e e d s . T h e r e l
0124720 e v a n t c o m m a n d s a
0124740 r e : \r \t T \t T r a n s l a t e
0124760 s a s ( T E R P R I ) .
0125000 T h i s c o m m a n d i s
0125020 f u n c t i o n a l l y e q u
0125040 i v a l e n t t o t h e i
0125060 n t e g e r c o m m a n d 0
0125100 ; t h e y b o t h m o v e
0125120 t o p o s i t i o n 0 (
0125140 = c o l u m n 1 ) o f t
0125160 h e n e x t l i n e . T
0125200 o p r i n t t h e l e t t
0125220 e r T , u s e t h e s t
0125240 r i n g " T " . \r \t . S K I P
0125260 L I N E S \t E q u i v a l e n
0125300 t t o a s e q u e n c e
0125320 o f L I N E S ( T E R P R I
0125340 ) ' s . T h e . S K I P
0125360 c o m m a n d a l l o w s f
0125400 o r s k i p p i n g l a r g
0125420 e c o n s t a n t d i s t a
0125440 n c e s a n d f o r c o m
0125460 p u t i n g t h e d i s t a
0125500 n c e t o b e s k i p p e
0125520 d . \r \t . P A G E \t P u t s a
0125540 f o r m - f e e d ( c o n t
0125560 r o l - L ) o u t o n t h
0125600 e f i l e . C a r e i s
0125620 t a k e n t o m a k e s
0125640 u r e t h a t I n t e r l i
0125660 s p ' s v i e w o f t h e
0125700 c u r r e n t l i n e p o
0125720 s i t i o n i s c o r r e c
0125740 t l y u p d a t e d . \r 2 6 .
0125760 4 . 3 \t S p e c i a l F o
0126000 r m a t t i n g C o n t r o l
0126020 s \r \r T h e r e a r e a s
0126040 m a l l n u m b e r o f c
0126060 o m m a n d s f o r i n v o
0126100 k i n g s o m e o f t h e
0126120 f o r m a t t i n g c a p a
0126140 b i l i t i e s o f m u l t
0126160 i - f o n t o u t p u t d e
0126200 v i c e s . T h e a v a i
0126220 l a b l e c o m m a n d s a
0126240 r e : \r \t . F O N T F O N T S
0126260 P E C \t C h a n g e s p r i n
0126300 t i n g t o t h e f o n t
0126320 F O N T S P E C , w h i c h
0126340 c a n b e a f o n t d
0126360 e s c r i p t o r , a f o n
0126400 t c l a s s ( p a g e X .
0126420 X X ) , a " f o n t l i s
0126440 t " s u c h a s ' ( M O D
0126460 E R N 1 0 ) , a n i m a g
0126500 e s t r e a m ( c o e r c e
0126520 d t o i t s c u r r e n t
0126540 f o n t ) , o r a w i n
0126560 d o w s ( c o e r c e d t o
0126600 t h e c u r r e n t f o n
0126620 t o f i t s d i s p l a y
0126640 s t r e a m ) . S e e f
0126660 o n t s ( p a g e X . X X )
0126700 f o r m o r e i n f o r m
0126720 a t i o n . \r F O N T S P E C
0126740 m a y a l s o b e a p o
0126760 s i t i v e i n t e g e r N
0127000 , w h i c h i s t a k e n
0127020 a s a n a b b r e v i a t
0127040 e d r e f e r e n c e t o
0127060 t h e f o n t c l a s s n
0127100 a m e d F O N T N ( e . g .
0127120 1 = > F O N T 1 ) . \r \t .
0127140 S U P \t S p e c i f i e s s u
0127160 p e r s c r i p t i n g . A
0127200 l l s u b s e q u e n t c h
0127220 a r a c t e r s a r e p r i
0127240 n t e d a b o v e t h e b
0127260 a s e o f t h e c u r r e
0127300 n t l i n e . N o t e t
0127320 h a t t h i s i s a b s o
0127340 l u t e , n o t r e l a t i
0127360 v e : a . S U P f o l l
0127400 o w i n g a . S U P i s
0127420 a n o - o p . \r \t . S U B \t S
0127440 p e c i f i e s s u b s c r i
0127460 p t i n g . S u b s e q u e
0127500 n t p r i n t i n g i s b
0127520 e l o w t h e b a s e o f
0127540 t h e c u r r e n t l i n
0127560 e . A s w i t h s u p e
0127600 r s c r i p t i n g , t h e
0127620 e f f e c t i s a b s o l u
0127640 t e . \r \t . B A S E \t M o v e s
0127660 p r i n t i n g b a c k t
0127700 o t h e b a s e o f t h
0127720 e c u r r e n t l i n e .
0127740 U n - d o e s a p r e v i
0127760 o u s . S U P o r . S U B
0130000 ; a n o - o p , i f p r
0130020 i n t i n g i s c u r r e n
0130040 t l y a t t h e b a s e .
0130060 \r 2 6 . 4 . 4 \t P r i n t i
0130100 n g S p e c i f i c a t i o n
0130120 s \r \r T h e v a l u e o f
0130140 a n y e x p r e s s i o n i
0130160 n a P R I N T O U T f o r
0130200 m t h a t i s n o t r e
0130220 c o g n i z e d a s a c o
0130240 m m a n d i t s e l f o r
0130260 a s a c o m m a n d a r g
0130300 u m e n t i s p r i n t e d
0130320 u s i n g P R I N 1 b y
0130340 d e f a u l t . F o r e x
0130360 a m p l e , t i t l e s t r
0130400 i n g s c a n b e p r i n
0130420 t e d b y s i m p l y i n
0130440 c l u d i n g t h e s t r i
0130460 n g a s a s e p a r a t e
0130500 P R I N T O U T c o m m a n
0130520 d , a n d t h e v a l u e
0130540 s o f v a r i a b l e s a
0130560 n d f o r m s c a n b e
0130600 p r i n t e d i n m u c h
0130620 t h e s a m e w a y . N
0130640 o t e t h a t a l i t e r
0130660 a l i n t e g e r , s a y
0130700 5 1 , c a n n o t b e p r
0130720 i n t e d b y i n c l u d i
0130740 n g i t a s a c o m m a
0130760 n d , s i n c e i t w o u
0131000 l d b e i n t e r p r e t e
0131020 d a s a T A B ; t h e
0131040 d e s i r e d e f f e c t c
0131060 a n b e o b t a i n e d b
0131100 y u s i n g i n s t e a d
0131120 t h e s t r i n g s p e c i
0131140 f i c a t i o n " 5 1 " , o
0131160 r t h e f o r m ( Q U O T
0131200 E 5 1 ) . \r F o r t h o s e
0131220 i n s t a n c e s w h e n
0131240 P R I N 1 i s n o t a p p
0131260 r o p r i a t e , e . g . ,
0131300 P R I N 2 i s r e q u i r e
0131320 d , o r a l i s t s t r
0131340 u c t u r e s m u s t b e
0131360 p r e t t y p r i n t e d , t
0131400 h e f o l l o w i n g c o m
0131420 m a n d s a r e a v a i l a
0131440 b l e : \r \t . P 2 T H I N G
0131460 \t C a u s e s T H I N G t o
0131500 b e p r i n t e d u s i n
0131520 g P R I N 2 ; t r a n s l a
0131540 t e s a s ( P R I N 2 T H
0131560 I N G ) . \r \t . P P F T H I N
0131600 G \t C a u s e s T H I N G t
0131620 o b e p r e t t y p r i n t
0131640 e d a t t h e c u r r e n
0131660 t l i n e p o s i t i o n
0131700 v i a P R I N T D E F ( p a
0131720 g e X . X X ) . T h e c
0131740 a l l t o P R I N T D E F
0131760 s p e c i f i e s t h a t T
0132000 H I N G i s t o b e p r
0132020 i n t e d a s i f i t w
0132040 e r e p a r t o f a f u
0132060 n c t i o n d e f i n i t i o
0132100 n . T h a t i s , S E L
0132120 E C T Q , P R O G , e t c .
0132140 , r e c e i v e s p e c i a
0132160 l t r e a t m e n t . \r \t . P
0132200 P V T H I N G \t P r e t t y p
0132220 r i n t s T H I N G a s a
0132240 v a r i a b l e ; n o s p
0132260 e c i a l i n t e r p r e t a
0132300 t i o n i s g i v e n t o
0132320 S E L E C T Q , P R O G ,
0132340 e t c . \r \t . P P F T L T H I
0132360 N G \t L i k e . P P F , b u
0132400 t p r e t t y p r i n t s T
0132420 H I N G a s a t a i l ,
0132440 t h a t i s , w i t h o u t
0132460 t h e i n i t i a l a n d
0132500 f i n a l p a r e n t h e s
0132520 e s i f i t i s a l i
0132540 s t . U s e f u l f o r
0132560 p r e t t y p r i n t i n g s
0132600 u b - l i s t s o f a l i
0132620 s t w h o s e o t h e r e
0132640 l e m e n t s a r e f o r m
0132660 a t t e d w i t h o t h e r
0132700 c o m m a n d s . \r \t . P P V
0132720 T L T H I N G \t L i k e . P
0132740 P V , b u t p r e t t y p r
0132760 i n t s T H I N G a s a
0133000 t a i l . \r 2 6 . 4 . 4 . 1
0133020 \t P a r a g r a p h F o r m a
0133040 t \r \r I n t e r l i s p ' s p
0133060 r e t t y p r i n t r o u t i
0133100 n e s a r e d e s i g n e d
0133120 t o d i s p l a y t h e
0133140 s t r u c t u r e o f e x p
0133160 r e s s i o n s , b u t t h
0133200 e y a r e n o t r e a l l
0133220 y s u i t a b l e f o r f
0133240 o r m a t t i n g u n s t r u
0133260 c t u r e d t e x t . I f
0133300 a l i s t i s t o b e
0133320 p r i n t e d a s a t e
0133340 x t u a l p a r a g r a p h ,
0133360 i t s i n t e r n a l s t
0133400 r u c t u r e i s l e s s
0133420 i m p o r t a n t t h a n c
0133440 o n t r o l l i n g i t s l
0133460 e f t a n d r i g h t m a
0133500 r g i n s , a n d t h e i
0133520 n d e n t a t i o n o f i t
0133540 s f i r s t l i n e . T
0133560 h e . P A R A a n d . P A
0133600 R A 2 c o m m a n d s a l l
0133620 o w t h e s e p a r a m e t
0133640 e r s t o b e c o n v e n
0133660 i e n t l y s p e c i f i e d
0133700 . \r \t . P A R A L M A R G
0133720 R M A R G L I S T \t P r i n
0133740 t s L I S T i n p a r a g
0133760 r a p h f o r m a t , u s i
0134000 n g P R I N 1 . T r a n s l
0134020 a t e s a s ( P R I N T P A
0134040 R A L M A R G R M A R G L
0134060 I S T ) ( s e e p a g e X
0134100 . X X ) . E x a m p l e :
0134120 ( P R I N T O U T T 1 0 .
0134140 P A R A 5 - 5 L S T ) w
0134160 i l l p r i n t t h e e l
0134200 e m e n t s o f L S T a s
0134220 a p a r a g r a p h w i t
0134240 h l e f t m a r g i n a t
0134260 5 , r i g h t m a r g i n
0134300 a t ( L I N E L E N G T H )
0134320 - 5 , a n d t h e f i r s
0134340 t l i n e i n d e n t e d
0134360 t o 1 0 . \r \t . P A R A 2
0134400 L M A R G R M A R G L I S T
0134420 \t P r i n t a s p a r a g r
0134440 a p h u s i n g P R I N 2
0134460 i n s t e a d o f P R I N 1
0134500 . T r a n s l a t e s a s
0134520 ( P R I N T P A R A L M A R
0134540 G R M A R G L I S T T ) .
0134560 \r 2 6 . 4 . 4 . 2 \t R i g h
0134600 t - F l u s h i n g \r \r T w o
0134620 c o m m a n d s a r e p r o
0134640 v i d e d f o r p r i n t i
0134660 n g s i m p l e e x p r e s
0134700 s i o n s f l u s h e d - r i
0134720 g h t a g a i n s t a s p
0134740 e c i f i e d l i n e p o s
0134760 i t i o n , u s i n g t h e
0135000 f u n c t i o n F L U S H R
0135020 I G H T ( p a g e X . X X )
0135040 . T h e y t a k e i n t
0135060 o a c c o u n t t h e c u
0135100 r r e n t p o s i t i o n ,
0135120 t h e n u m b e r o f c h
0135140 a r a c t e r s i n t h e
0135160 p r i n t - n a m e o f t h
0135200 e e x p r e s s i o n , a n
0135220 d t h e p o s i t i o n t
0135240 h e e x p r e s s i o n i s
0135260 t o b e f l u s h a g a
0135300 i n s t , a n d t h e n p
0135320 r i n t t h e a p p r o p r
0135340 i a t e n u m b e r o f s
0135360 p a c e s t o a c h i e v e
0135400 t h e d e s i r e d e f f
0135420 e c t . N o t e t h a t
0135440 t h i s m i g h t e n t a i
0135460 l g o i n g t o a n e w
0135500 l i n e b e f o r e p r i
0135520 n t i n g . N o t e a l s
0135540 o t h a t r i g h t - f l u
0135560 s h i n g o f e x p r e s s
0135600 i o n s l o n g e r t h a n
0135620 a l i n e ( e . g . a
0135640 l a r g e l i s t ) m a k e
0135660 s l i t t l e s e n s e ,
0135700 a n d t h e a p p e a r a n
0135720 c e o f t h e o u t p u t
0135740 i s n o t g u a r a n t e
0135760 e d . \r \t . F R P O S E X P
0136000 R \t F l u s h - r i g h t u s
0136020 i n g P R I N 1 . T h e
0136040 v a l u e o f P O S d e t
0136060 e r m i n e s t h e p o s i
0136100 t i o n t h a t t h e r i
0136120 g h t e n d o f E X P R
0136140 w i l l l i n e u p a t .
0136160 A s w i t h t h e h o
0136200 r i z o n t a l s p a c i n g
0136220 c o m m a n d s , a n e g
0136240 a t i v e p o s i t i o n n
0136260 u m b e r m e a n s | P O S
0136300 | c o l u m n s f r o m t
0136320 h e c u r r e n t p o s i t
0136340 i o n , a p o s i t i v e
0136360 n u m b e r s p e c i f i e s
0136400 t h e p o s i t i o n a b
0136420 s o l u t e l y . P O S = 0
0136440 s p e c i f i e s t h e r
0136460 i g h t - m a r g i n , i . e
0136500 . i s i n t e r p r e t e
0136520 d a s ( L I N E L E N G T H
0136540 ) . \r \t . F R 2 P O S E X P
0136560 R \t F l u s h - r i g h t u s
0136600 i n g P R I N 2 i n s t e a
0136620 d o f P R I N 1 . \r 2 6 . 4
0136640 . 4 . 3 \t C e n t e r i n g
0136660 \r \r C o m m a n d s f o r c
0136700 e n t e r i n g s i m p l e
0136720 e x p r e s s i o n s b e t w
0136740 e e n t h e c u r r e n t
0136760 l i n e p o s i t i o n a n
0137000 d a n o t h e r s p e c i f
0137020 i e d p o s i t i o n a r e
0137040 a l s o a v a i l a b l e .
0137060 A s w i t h r i g h t
0137100 f l u s h i n g , c e n t e r
0137120 i n g o f l a r g e e x p
0137140 r e s s i o n s i s n o t
0137160 g u a r a n t e e d . \r \t . C E
0137200 N T E R P O S E X P R \t C e
0137220 n t e r s E X P R b e t w e
0137240 e n t h e c u r r e n t l
0137260 i n e p o s i t i o n a n d
0137300 t h e p o s i t i o n s p
0137320 e c i f i e d b y t h e v
0137340 a l u e o f P O S . A
0137360 p o s i t i v e P O S i s
0137400 a n a b s o l u t e p o s i
0137420 t i o n n u m b e r , a n
0137440 e g a t i v e P O S s p e c
0137460 i f i e s a p o s i t i o n
0137500 r e l a t i v e t o t h e
0137520 c u r r e n t p o s i t i o
0137540 n , a n d 0 i n d i c a t
0137560 e s t h e r i g h t - m a r
0137600 g i n . U s e s P R I N 1
0137620 f o r p r i n t i n g . \r \t
0137640 . C E N T E R 2 P O S E X P
0137660 R \t C e n t e r s u s i n g
0137700 P R I N 2 i n s t e a d o f
0137720 P R I N 1 . \r 2 6 . 4 . 4 . 4
0137740 \t N u m b e r i n g \r \r T h
0137760 e f o l l o w i n g c o m m
0140000 a n d s p r o v i d e F O R
0140020 T R A N - l i k e f o r m a t
0140040 t i n g c a p a b i l i t i e
0140060 s f o r i n t e g e r a n
0140100 d f l o a t i n g - p o i n t
0140120 n u m b e r s . E a c h
0140140 c o m m a n d s p e c i f i e
0140160 s a p r i n t i n g f o r
0140200 m a t a n d a n u m b e r
0140220 t o b e p r i n t e d .
0140240 T h e f o r m a t s p e c
0140260 i f i c a t i o n t r a n s l
0140300 a t e s i n t o a f o r m
0140320 a t - l i s t f o r t h e
0140340 f u n c t i o n P R I N T N U
0140360 M ( s e e p a g e X . X X
0140400 ) . \r \t . I F O R M A T N U M
0140420 B E R \t S p e c i f i e s i n
0140440 t e g e r p r i n t i n g .
0140460 T r a n s l a t e s a s a
0140500 c a l l t o t h e f u n
0140520 c t i o n P R I N T N U M w
0140540 i t h a F I X f o r m a t
0140560 - l i s t c o n s t r u c t e
0140600 d f r o m F O R M A T .
0140620 T h e a t o m i c f o r m a
0140640 t i s b r o k e n a p a r
0140660 t a t i n t e r n a l p e
0140700 r i o d s t o f o r m t h
0140720 e f o r m a t - l i s t .
0140740 F o r e x a m p l e , . I 5
0140760 . - 8 . T y i e l d s t h e
0141000 f o r m a t - l i s t ( F I
0141020 X 5 - 8 T ) , a n d t
0141040 h e c o m m a n d s e q u e
0141060 n c e ( P R I N T O U T T
0141100 . I 5 . - 8 . T F O O ) w i
0141120 l l t r a n s l a t e a s
0141140 ( P R I N T N U M ' ( F I X
0141160 5 - 8 T ) F O O ) . I
0141200 t w i l l c a u s e t h e
0141220 v a l u e o f F O O t o
0141240 b e p r i n t e d w i t h
0141260 r a d i x - 8 r i g h t -
0141300 f l u s h e d i n a f i e
0141320 l d o f w i d t h 5 , w
0141340 i t h 0 ' s u s e d f o r
0141360 p a d d i n g o n t h e
0141400 l e f t . I n t e r n a l
0141420 N I L ' s m a y b e o m i
0141440 t t e d , e . g . t h e c
0141460 o m m a n d s . I 5 . . T a
0141500 n d . I 5 . N I L . T a r e
0141520