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