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