$ od -c -N 50000 [Erinyes]<LispManual>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