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