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