$ 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