$ od -c -N 50000 [phylum]<LISPUSERS>koto>SetStringLength.Tedit!1 0000000 X E R O X \t S E T S T R I N G L 0000020 E N G T H \r 2 \r \r 4 \r \r 1 \r \r S 0000040 E T S T R I N G L E N G T H \r 1 0000060 \r \r 4 \r \r B y : R o n K a 0000100 p l a n ( K a p l a n . p a @ 0000120 X e r o x . c o m ) \r T h i s 0000140 d o c u m e n t l a s t e d 0000160 i t e d o n O c t o b e r 0000200 2 0 , 1 9 8 7 \r I N T R O D U 0000220 C T I O N \r S E T S T R I N G L 0000240 E N G T H i s a c o l l e 0000260 c t i o n o f f u n c t i o 0000300 n s f o r m a n i p u l a t 0000320 i n g s t r i n g s s u c h 0000340 t h a t s t r i n g s c a 0000360 n g r o w l a r g e r t h 0000400 a n t h e i r o r i g i n a 0000420 l s i z e . T h e s e 0000440 f u n c t i o n s a r e p a 0000460 r t i c u l a r l y h e l p f 0000500 u l i n m a n a g i n g t 0000520 h e s c r a t c h - s t r i n 0000540 g b u f f e r s t h a t a 0000560 r e u s e d b y t h e r 0000600 e a d a n d t r a n s l a t 0000620 i o n f u n c t i o n s o f 0000640 t h e W O R D F N S m o d 0000660 u l e . \r U S E \r ( ! R P L 0000700 C H A R C O D E X N C H 0000720 A R ) \t [ F u n c t i o n ] \r T 0000740 h i s f u n c t i o n i s 0000760 s i m i l a r t o R P L C H 0001000 A R C O D E e x c e p t t h 0001020 a t s t r i n g X i s m 0001040 a d e l a r g e r i f N 0001060 s p e c i f i e s a c h a r 0001100 a c t e r b e y o n d t h e 0001120 c u r r e n t e n d o f 0001140 X . T h e N t h c h a r 0001160 a c t e r o f t h e s t r 0001200 i n g X i s r e p l a c e 0001220 d b y t h e c h a r a c t 0001240 e r c o d e C H A R . 0001260 A s w i t h R P L C H A R C 0001300 O D E , N m a y b e p o 0001320 s i t i v e o r n e g a t i 0001340 v e . T h e n e w X i 0001360 s r e t u r n e d . I f 0001400 X m u s t b e e n l a r g 0001420 e d , i t i s e x t e n d 0001440 e d ( b y S E T S T R I N G 0001460 L E N G T H ) t o h o l d 0001500 a t l e a s t 2 0 c h a r 0001520 a c t e r s b e y o n d w h 0001540 a t i s a c t u a l l y r 0001560 e q u i r e d , s o t h a t 0001600 c o p y i n g i s n o t 0001620 n e e d e d e v e r y t i m 0001640 e t h e s t r i n g g r o 0001660 w s b y o n e . \r ( ! R P 0001700 L S T R I N G X N Y ) \t 0001720 [ F u n c t i o n ] \r T h i s 0001740 f u n c t i o n i s s i m i 0001760 l a r t o R P L S T R I N G 0002000 e x c e p t t h a t s t r 0002020 i n g X i s m a d e l a 0002040 r g e r i f n e c e s s a r 0002060 y . T h e c h a r a c t e 0002100 r s o f s t r i n g X b 0002120 e g i n n i n g a t c h a r 0002140 a c t e r p o s i t i o n N 0002160 a r e r e p l a c e d b y 0002200 s t r i n g Y . X a n 0002220 d Y a r e c o n v e r t e 0002240 d t o s t r i n g s i f 0002260 t h e y a r e n ' t a l r e 0002300 a d y . N m a y b e p 0002320 o s i t i v e o r n e g a t 0002340 i v e , a s w i t h S U B 0002360 S T R I N G . T h e n e w 0002400 s t r i n g X i s r e 0002420 t u r n e d . \r ( S E T S T R I 0002440 N G L E N G T H S T R I N G 0002460 N E W L E N ) \t [ F u n c t i 0002500 o n ] \r M o d i f i e s S T R 0002520 I N G s o t h a t i t s 0002540 l e n g t h b e c o m e s N 0002560 E W L E N , p o s s i b l y 0002600 c o p y i n g t h e u n d e 0002620 r l y i n g c h a r a c t e r 0002640 b l o c k t o a l a r g 0002660 e r b l o c k . T h e e 0002700 f f e c t i s s i m i l a r 0002720 t o ( b u t s l i g h t l 0002740 y m o r e e f f i c i e n t 0002760 t h a n ) S U B S T R I N G 0003000 i f N E W L E N i s l e 0003020 s s t h a n t h e p r e v 0003040 i o u s s t r i n g l e n g 0003060 t h . V a l u e i s S T 0003100 R I N G . \r ( M A X I M A L S T 0003120 R I N G S T R I N G ) \t [ F 0003140 u n c t i o n ] \r A d j u s t 0003160 t h e s t r i n g S T R I N 0003200 G , s u c h t h a t i t 0003220 i s t h e m a x i m u m s 0003240 i z e p o s s i b l e . V 0003260 a l u e i s t h e m a x i 0003300 m a l l e n g t h . \r ( M A X 0003320 S T R I N G L E N G T H S T 0003340 R I N G ) \t [ F u n c t i o n ] 0003360 \r M A X S T R I N G L E N G T H 0003400 r e t u r n s t h e n u m 0003420 b e r o f c h a r a c t e r 0003440 s t h a t S T R I N G w o 0003460 u l d h o l d i f ( M A X 0003500 I M A L S T R I N G S T R I N 0003520 G ) w e r e e x e c u t e 0003540 d . \r \r E x a m p l e s \r I n 0003560 t h e f o l l o w i n g e x 0003600 a m p l e , a s t r i n g , 0003620 M y S t r i n g , i s c r 0003640 e a t e d o f l e n g t h 0003660 3 . A f t e r t h e c a 0003700 l l t o ! R P L S T R I N G 0003720 , M y S t r i n g n o w h 0003740 a s t h e f o u r c h a r 0003760 a c t e r s " a b c d " . \r 0004000 ( S E T Q M y S t r i 0004020 n g ( A L L O C S T R I N G 0004040 3 ) ) \r ( ! R P L S T 0004060 R I N G M y S t r i n g 1 0004100 " a b c d " ) \r \r I n t h e 0004120 n e x t e x a m p l e , t h 0004140 e s t r i n g M y S t r i n 0004160 g ( w h i c h p r e v i o u 0004200 s l y c o n t a i n e d " a 0004220 b c d " ) h a s i t s l e 0004240 n g t h i n c r e a s e d t 0004260 o s i x a s a r e s u l 0004300 t o f t h e f u n c t i o 0004320 n ! R P L C H A R C O D E . 0004340 M y S t r i n g t h e n c 0004360 o n t a i n s " a b c d e f " 0004400 . \r ( ! R P L C H A R 0004420 C O D E M y S t r i n g 5 0004440 ( C H A R C O D E " e " ) ) \r 0004460 ( ! R P L C H A R C O 0004500 D E M y S t r i n g 6 ( C 0004520 H A R C O D E " f " ) ) \r \r 0004540 I n t h e f o l l o w i n g 0004560 e x a m p l e , t h e l e 0004600 n g t h o f M y S t r i n g 0004620 i s r e d u c e d b y o 0004640 n e c h a r a c t e r a s 0004660 a r e s u l t o f t h e 0004700 f u n c t i o n S E T S T R I 0004720 N G L E N G T H . M y S t r 0004740 i n g t h e n c o n t a i n 0004760 s " a b c d e " . \r 0005000 ( S E T S T R I N G L E N G T H 0005020 M y S t r i n g 5 ) \r I f 0005040 ( G L C C O D E M y S t r i n 0005060 g ) i s e x e c u t e d , 0005100 t h e l e n g t h o f M y 0005120 S t r i n g i s r e d u c e 0005140 d t o 4 . H o w e v e r 0005160 , ( M A X S T R I N G L E N G 0005200 T H M y S t r i n g ) w i l 0005220 l r e t u r n 8 ( w h i c 0005240 h c o r r e s p o n d s t o 0005260 t h e s m a l l e s t b l 0005300 o c k t h a t t h e I n t 0005320 e r l i s p s t r i n g a l 0005340 l o c a t o r w i l l a s s 0005360 i g n ) a n d ( M A X I M A 0005400 L S T R I N G M y S t r i n g 0005420 ) w i l l i n f a c t m 0005440 o d i f y t h e s t r i n g 0005460 s o t h a t ( N C H A R S 0005500 M y S t r i n g ) r e t u r 0005520 n s 8 . \r \r \0 \0 \0 \0 \0 003 ( L 0005540 I S T ( ( P A G E N I L ( 0005560 F O L I O I N F O ( A R A B I 0005600 C ) S T A R T I N G P A G E # 0005620 1 ) ( 0 0 6 1 2 7 9 2 0005640 ) ( ( F O L I O N I L ( P 0005660 A R A L O O K S ( Q U A D C 0005700 E N T E R E D ) C H A R L O O 0005720 K S ( S U P E R S C R I P T 0005740 0 S I Z E 1 0 F A M I L Y 0005760 M O D E R N O V E R L I N E 0006000 O F F S T R I K E O U T O 0006020 F F U N D E R L I N E O F F 0006040 S L O P E R E G U L A R W 0006060 E I G H T M E D I U M ) F O 0006100 R M A T I N F O ( A R A B I C 0006120 ) ) ( 1 7 4 3 6 2 8 8 3 0006140 6 ) N I L ) ( H E A D I N G 0006160 N I L ( H E A D I N G T Y P 0006200 E R U N N I N G H E A D ) ( 0006220 8 4 7 4 4 4 4 4 3 6 ) N 0006240 I L ) ( T E X T N I L N I 0006260 L ( 8 4 9 6 4 5 6 6 0 0 0006300 ) N I L ) ) ) ( P A G E N 0006320 I L N I L ( 0 0 6 1 2 0006340 7 9 2 ) ( ( F O L I O N I L 0006360 ( P A R A L O O K S ( Q U A 0006400 D C E N T E R E D ) C H A R 0006420 L O O K S ( S U P E R S C R I 0006440 P T 0 S I Z E 1 0 F A M 0006460 I L Y M O D E R N O V E R L 0006500 I N E O F F S T R I K E O U 0006520 T O F F U N D E R L I N E 0006540 O F F S L O P E R E G U L A 0006560 R W E I G H T M E D I U M ) 0006600 ) ( 2 8 2 4 2 7 2 3 6 ) 0006620 N I L ) ( H E A D I N G N 0006640 I L ( H E A D I N G T Y P E 0006660 R U N N I N G H E A D ) ( 8 4 0006700 7 4 4 4 4 4 3 6 ) N I L 0006720 ) ( T E X T N I L N I L 0006740 ( 8 4 9 6 4 5 6 6 0 0 ) 0006760 N I L ) ) ) ( P A G E N I L 0007000 N I L ( 0 0 6 1 2 7 9 0007020 2 ) ( ( F O L I O N I L ( 0007040 P A R A L O O K S ( Q U A D 0007060 C E N T E R E D ) C H A R L O 0007100 O K S ( S U P E R S C R I P T 0007120 0 S I Z E 1 0 F A M I L 0007140 Y M O D E R N O V E R L I N 0007160 E O F F S T R I K E O U T 0007200 O F F U N D E R L I N E O F 0007220 F S L O P E R E G U L A R 0007240 W E I G H T M E D I U M ) ) 0007260 ( 2 8 2 4 2 7 2 3 6 ) N 0007300 I L ) ( H E A D I N G N I L 0007320 ( H E A D I N G T Y P E R U 0007340 N N I N G H E A D ) ( 8 4 7 0007360 4 4 4 4 4 3 6 ) N I L ) 0007400 ( T E X T N I L N I L ( 8 0007420 4 9 6 4 5 6 6 0 0 ) N I 0007440 L ) ) ) ) ) \0 \0 \0 \0 \0 005 \0 006 \0 ( 0007460 \0 \0 \0 \0 001 310 \0 021 \0 \0 \0 004 002 003 \0 \0 0007500 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0007520 \0 \0 \0 \0 \0 \0 \0 1 \0 \0 \0 \0 001 310 \0 \v 0007540 \0 \0 \0 004 003 004 \0 \0 002 \0 \0 001 001 310 001 \0 0007560 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0007600 \0 \0 \0 \0 \0 \0 \0 \0 ( \0 212 \0 212 001 8 \0 0007620 006 \0 \0 \0 004 002 003 \0 \0 \0 \0 \0 \0 \0 \0 \0 0007640 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0007660 ( \0 \0 \0 \0 001 310 \0 \v \0 \0 \0 004 002 004 \0 0007700 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0007720 \0 \0 \0 \0 \0 \0 \0 \0 ( \0 212 \0 212 001 8 \0 0007740 \0 \0 \0 \0 004 002 004 \0 \0 \0 \0 \0 \0 \0 \0 \0 0007760 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0010000 D \0 \0 \0 \0 001 310 \0 \0 \0 \0 \0 \0 003 004 \0 0010020 \0 001 001 310 001 \0 \0 \0 \0 \0 \0 \0 \v P A G 0010040 E H E A D I N G \0 \v R U N N I N 0010060 G H E A D \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0010100 \0 \0 \0 \0 \0 \0 \0 \0 004 \0 \b \0 026 \0 \b T 0010120 E R M I N A L \0 \n \0 \0 \0 \0 \0 \0 \0 0010140 \0 \0 027 \0 \t H E L V E T I C A \0 \n 0010160 \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 006 M O D E 0010200 R N \0 \n \0 \0 \0 \0 \0 \0 002 \0 \0 024 \0 006 0010220 M O D E R N \0 \n \0 \0 \0 \0 \0 \0 \0 \0 0010240 \0 024 \0 006 M O D E R N \0 \f \0 \0 \0 \0 0010260 \0 \0 002 \0 \0 024 \0 006 M O D E R N \0 006 0010300 \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 006 M O D E 0010320 R N \0 \n \0 \0 \0 \0 \0 \0 001 \0 \0 022 \0 004 0010340 L O G O \0 030 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0010360 \0 \0 \0 002 \0 006 \0 \0 \0 005 \0 \0 \0 \0 \b \0 0010400 \0 \0 001 \0 \0 \0 \0 006 \0 \0 \0 020 \0 \0 \0 \0 0010420 004 \0 \0 \0 \0 \0 002 \0 006 \0 \0 \0 002 \0 001 \0 0010440 \v H R U L E . G E T F N 001 \0 024 \0 0010460 006 M O D E R N \0 \n \0 \0 \0 \0 \0 \0 \0 0010500 \0 \0 \0 \0 001 \0 \0 \0 \0 004 \0 \0 \0 \0 \0 002 0010520 \0 005 \0 \0 \0 002 \0 001 \0 \v H R U L E . 0010540 G E T F N 001 \0 024 \0 006 M O D E R N 0010560 \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 0010600 \0 \0 004 \0 \0 \0 \0 \0 002 \0 005 \0 \0 \0 002 \0 0010620 001 \0 \v H R U L E . G E T F N 001 \0 0010640 024 \0 006 M O D E R N \0 \n \0 \0 \0 \0 \0 0010660 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 \0 004 \0 \0 \0 \0 0010700 \0 002 \0 003 \0 \0 \0 020 \0 \0 \0 \0 005 \0 \0 \0 0010720 \0 \0 002 \0 003 \0 \0 \0 002 \0 001 \0 \v H R U 0010740 L E . G E T F N 001 \0 024 \0 006 M O D 0010760 E R N \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 0011000 001 \0 \0 \0 \0 005 \0 \0 \0 \0 \0 002 \0 005 \0 \0 0011020 \0 002 \0 001 \0 \v H R U L E . G E T F 0011040 N 001 \0 024 \0 006 M O D E R N \0 \f \0 \0 0011060 \0 \0 \0 \0 002 \0 \0 \0 \0 001 \0 \0 \0 \0 005 \0 0011100 \0 \0 \0 \0 002 \0 001 \0 \0 \0 & \0 \0 \0 \0 004 0011120 \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 . \0 \0 \0 \0 0011140 004 \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 \f \0 \0 \0 0011160 \0 003 \0 \0 \0 001 \0 \0 \0 \0 004 \0 \0 \0 \0 \0 0011200 002 \0 004 \0 \0 001 ! \0 \0 \0 \0 004 \0 \0 \0 \0 0011220 \0 002 \0 004 \0 \0 \0 004 \0 \0 \0 \0 003 \0 \0 \0 0011240 \0 \0 002 \0 002 \0 \0 \0 017 \0 \0 \0 \0 004 \0 \0 0011260 \0 \b \0 \0 \0 \0 \a \0 \0 \0 001 \0 \0 \0 \0 004 0011300 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \v \0 \0 \0 0011320 \0 004 \0 \0 \0 \0 \0 002 \0 002 \0 \0 001 333 \0 \0 0011340 \0 \0 004 \0 \0 \0 002 \0 \0 \0 \0 003 \0 \0 \0 \0 0011360 \0 002 \0 002 \0 \0 \0 \r \0 \0 \0 \0 004 \0 \0 \0 0011400 005 \0 \0 \0 \0 \a \0 \0 \0 001 \0 \0 \0 \0 004 \0 0011420 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \v \0 \0 \0 \0 0011440 004 \0 \0 \0 \0 \0 002 \0 002 \0 \0 001 = \0 \0 \0 0011460 \0 004 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 022 \0 \0 0011500 \0 \0 004 \0 \0 \0 006 \0 \0 \0 \0 \a \0 \0 \0 001 0011520 \0 \0 \0 \0 004 \0 \0 \0 006 \0 \0 \0 \0 \a \0 \0 0011540 \0 001 \0 \0 \0 \0 004 \0 \0 \0 001 \0 \0 \0 \0 002 0011560 \0 \0 \0 \v \0 \0 \0 \0 004 \0 \0 \0 \0 \0 002 \0 0011600 002 \0 \0 \0 \t \0 \0 \0 \0 004 \0 \0 \0 006 \0 \0 0011620 \0 \0 \a \0 \0 \0 034 \0 \0 \0 \0 004 \0 \0 \0 006 0011640 \0 \0 \0 \0 \a \0 \0 \0 321 \0 \0 \0 \0 004 \0 \0 0011660 \0 \0 \0 002 \0 002 \0 \0 \0 020 \0 \0 \0 \0 004 \0 0011700 \0 \0 006 \0 \0 \0 \0 \a \0 \0 \0 001 \0 \0 \0 \0 0011720 004 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \v \0 \0 0011740 \0 \0 004 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 022 \0 0011760 \0 \0 \0 004 \0 \0 \0 006 \0 \0 \0 \0 \a \0 \0 \0 0012000 K \0 \0 \0 \0 004 \0 \0 \0 \0 \0 002 \0 002 \0 \0 0012020 \0 022 \0 \0 \0 \0 004 \0 \0 \0 006 \0 \0 \0 \0 \a 0012040 \0 \0 \0 001 \0 \0 \0 \0 004 \0 \0 \0 001 \0 \0 \0 0012060 \0 002 \0 \0 \0 \v \0 \0 \0 \0 004 \0 \0 \0 \0 \0 0012100 002 \0 002 \0 \0 \0 r \0 \0 \0 \0 004 \0 \0 \0 \0 0012120 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 004 \0 \0 \0 0012140 \0 \0 002 \0 004 \0 \0 \0 \t \0 \0 \0 \0 003 \0 \0 0012160 \0 \0 \0 002 \0 002 \0 \0 \0 222 \0 \0 \0 \0 004 \0 0012200 \0 \0 \0 \0 002 \0 002 \0 \0 \0 % \0 \0 \0 \0 004 0012220 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 $ \0 \0 \0 \0 0012240 004 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 0012260 \0 004 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 271 \0 \0 0012300 \0 \0 004 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 . \0 0012320 \0 \0 \0 004 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 / 0012340 \0 \0 \0 \0 004 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 0012360 001 \0 \0 \0 \0 004 \0 \0 \0 \0 \0 002 \0 002 \0 \0 0012400 \0 233 \0 \0 \0 \0 004 \0 \0 \0 \0 \0 002 \0 002 \0 0012420 \0 \0 " \0 \0 \0 \0 004 \0 \0 \0 \0 \0 002 \0 002 0012440 \0 \0 001 : \0 \0 \0 \0 004 \0 \0 \0 \0 \0 002 \0 0012460 002 \0 \0 \0 001 \0 \0 \0 \0 001 \0 \0 \0 \0 \0 002 0012500 \0 002 \0 \0 \v X \0 o z 272 0012512