cpansearch.perl.org src schumack gds2-3.00 lib gds2.pm

Upload: yongchang-huang

Post on 07-Apr-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    1/46

    p a c k a g e G D S 2 ; { r e q u i r e 5 . 0 0 6 ; $ G D S 2 : : V E R S I O N = ' 3 . 0 0 ' ; # # N o t e : ' @ ( # ) ' u s e d b y t h e w h a t c o m m a n d E . g . w h a t G D S 2 . p m $ G D S 2 : : r e v i s i o n = ' @ ( # ) $ I d : G D S 2 . p m , v $ $ R e v i s i o n : 2 . 1 2 $ $ D a t e : 2 0 0 6 - 0 2 - 2 0 0 0 : 1 2 : 5 5 - 0 6 $ ' ; # = p o d = h e a d 1 C O P Y R I G H T A u t h o r : K e n S c h u m a c k ( c ) 1 9 9 9 - 2 0 1 0 . A l l r i g h t s r e s e r v e d . T h i s m o d u l e i s f r e e s o f t w a r e . I t m a y b e u s e d , r e d i s t r i b u t e d a n d / o r m o d i f i e d u n d e r t h e t e r m s o f t h e P e r l A r t i s t i c L i c e n s e . ( s e e h t t p : / / w w w . p e r l . c o m / p u b / a / l a n g u a g e / m i s c / A r t i s t i c . h t m l ) I d o a s k t h a t y o u p l e a s e l e t m e k n o w i f y o u f i n d b u g s o r h a v e i d e a f o r i m p r o v e m e n t s . Y o u c a n r e a c h m e a t S c h u m a c k @ c p a n . o r g H a v e f u n , K e n = c u t # # C o n t r i b u t o r M o d i f i c a t i o n : T o b y S c h a f f e r 2 0 0 4 - 0 1 - 2 1 # r e t u r n U n i t s A s A r r a y ( ) a d d e d w h i c h r e t u r n s u s e r u n i t s a n d d a t a b a s e # u n i t s a s a 2 e l e m e n t a r r a y . # # C o n t r i b u t o r M o d i f i c a t i o n : P e t e r B a u m b a c h 2 0 0 2 - 0 1 - 1 1

    # r e t u r n R e c o r d A s P e r l ( ) w a s c r e a t e d t o f a c i l i t a t e t h e c r e a t i o n o f # p a r a m e t e r i z e d g d s 2 d a t a w i t h p e r l . # # P O D d o c u m e n t a t i o n i s s p r i n k l e d t h r o u g h o u t t h e f i l e i n a n # a t t e m p t a t L i t e r a t e P r o g r a m m i n g s t y l e ( w h i c h P e r l p a r t l y s u p p o r t s . . . # s e e h t t p : / / w w w . l i t e r a t e p r o g r a m m i n g . c o m / ) # S e a r c h f o r t h e s t r i n g s ' = h e a d ' o r r u n p e r l d o c o n t h i s f i l e . # Y o u c a n r u n t h i s f i l e t h r o u g h e i t h e r p o d 2 m a n o r p o d 2 h t m l t o p r o d u c e # d o c u m e n t a t i o n i n m a n u a l o r h t m l f i l e f o r m a t u s e s t r i c t ; u s e w a r n i n g s ; # u s e d i a g n o s t i c s ; m y $ G _ t i m e r ; B E G I N { u s e c o n s t a n t T R U E = > 1 ; u s e c o n s t a n t F A L S E = > 0 ; u s e c o n s t a n t U N K N O W N = > - 1 ; u s e c o n s t a n t H A V E _ F L O C K = > T R U E ; # # s o m e s y s t e m s s t i l l m a y n o t h a v e t h i s . . . m a n u a l l y c h a n g e u s e c o n s t a n t T I M E R _ O N = > F A L S E ; # # D E B U G O N L Y u s e C o n f i g ; u s e I O : : F i l e ; } i f ( H A V E _ F L O C K ) { u s e F c n t l q ( : f l o c k ) ; # i m p o r t L O C K _ * c o n s t a n t s } i f ( T I M E R _ O N ) { # u s e B e n c h m a r k : : T i m e r ; # # w i l l a l s o h a v e t o u n c o m m e n t # : P r o f i l e d s t a t e m e n t s . . . . $ G _ t i m e r = n e w B e n c h m a r k : : T i m e r ; } n o s t r i c t q w ( r e f s ) ; m y $ i s L i t t l e E n d i a n = F A L S E ; # d e f a u l t $ i s L i t t l e E n d i a n = T R U E i f ( $ C o n f i g { ' b y t e o r d e r ' } = ~ m / ^ 1 / ) ; # # L i n u x m s w i n 3 2 c y g w i n v m s # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # G D S 2 S T R E A M R E C O R D D A T A T Y P E S u s e c o n s t a n t N O _ R E C _ D A T A = > 0 ; u s e c o n s t a n t B I T _ A R R A Y = > 1 ; u s e c o n s t a n t I N T E G E R _ 2 = > 2 ; u s e c o n s t a n t I N T E G E R _ 4 = > 3 ; u s e c o n s t a n t R E A L _ 4 = > 4 ; # # N O T s u p p o r t e d , s h o u l d n o t b e f o u n d i n a n y G D S 2 u s e c o n s t a n t R E A L _ 8 = > 5 ; u s e c o n s t a n t A C S I I _ S T R I N G = > 6 ; # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # G D S 2 S T R E A M R E C O R D T Y P E S u s e c o n s t a n t H E A D E R = > 0 ; # # 2 - b y t e S i g n e d I n t e g e r u s e c o n s t a n t B G N L I B = > 1 ; # # 2 - b y t e S i g n e d I n t e g e r u s e c o n s t a n t L I B N A M E = > 2 ; # # A S C I I S t r i n g u s e c o n s t a n t U N I T S = > 3 ; # # 8 - b y t e R e a l u s e c o n s t a n t E N D L I B = > 4 ; # # n o d a t a p r e s e n t u s e c o n s t a n t B G N S T R = > 5 ; # # 2 - b y t e S i g n e d I n t e g e r u s e c o n s t a n t S T R N A M E = > 6 ; # # A S C I I S t r i n g u s e c o n s t a n t E N D S T R = > 7 ; # # n o d a t a p r e s e n t u s e c o n s t a n t B O U N D A R Y = > 8 ; # # n o d a t a p r e s e n t u s e c o n s t a n t P A T H = > 9 ; # # n o d a t a p r e s e n t u s e c o n s t a n t S R E F = > 1 0 ; # # n o d a t a p r e s e n t u s e c o n s t a n t A R E F = > 1 1 ; # # n o d a t a p r e s e n t u s e c o n s t a n t T E X T = > 1 2 ; # # n o d a t a p r e s e n t u s e c o n s t a n t L A Y E R = > 1 3 ; # # 2 - b y t e S i g n e d I n t e g e r u s e c o n s t a n t D A T A T Y P E = > 1 4 ; # # 2 - b y t e S i g n e d I n t e g e r u s e c o n s t a n t W I D T H = > 1 5 ; # # 4 - b y t e S i g n e d I n t e g e r u s e c o n s t a n t X Y = > 1 6 ; # # 2 - b y t e S i g n e d I n t e g e r u s e c o n s t a n t E N D E L = > 1 7 ; # # n o d a t a p r e s e n t

    u s e c o n s t a n t S N A M E = > 1 8 ; # # A S C I I S t r i n g u s e c o n s t a n t C O L R O W = > 1 9 ; # # 2 2 - b y t e S i g n e d I n t e g e r u s e c o n s t a n t T E X T N O D E = > 2 0 ; # # n o d a t a p r e s e n t

    Page 1 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

    A-PDF HTML TO PDF DEMO: Purchase from www.A-PDF.com to remove the watermark

    http://www.a-pdf.com/?hp-demohttp://www.a-pdf.com/?hp-demo
  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    2/46

    u s e c o n s t a n t N O D E = > 2 1 ; # # n o d a t a p r e s e n t u s e c o n s t a n t T E X T T Y P E = > 2 2 ; # # 2 - b y t e S i g n e d I n t e g e r u s e c o n s t a n t P R E S E N T A T I O N = > 2 3 ; # # B i t A r r a y u s e c o n s t a n t S P A C I N G = > 2 4 ; # # d i s c o n t i n u e d u s e c o n s t a n t S T R I N G = > 2 5 ; # # A S C I I S t r i n g u s e c o n s t a n t S T R A N S = > 2 6 ; # # B i t A r r a y u s e c o n s t a n t M A G = > 2 7 ; # # 8 - b y t e R e a l u s e c o n s t a n t A N G L E = > 2 8 ; # # 8 - b y t e R e a l u s e c o n s t a n t U I N T E G E R = > 2 9 ; # # U N K N O W N U s e r i n t , u s e d o n l y i n C a l m a V 2 . 0 u s e c o n s t a n t U S T R I N G = > 3 0 ; # # U N K N O W N U s e r s t r i n g , u s e d o n l y i n C a l m a V 2 . 0 u s e c o n s t a n t R E F L I B S = > 3 1 ; # # A S C I I S t r i n g u s e c o n s t a n t F O N T S = > 3 2 ; # # A S C I I S t r i n g u s e c o n s t a n t P A T H T Y P E = > 3 3 ; # # 2 - b y t e S i g n e d I n t e g e r u s e c o n s t a n t G E N E R A T I O N S = > 3 4 ; # # 2 - b y t e S i g n e d I n t e g e r u s e c o n s t a n t A T T R T A B L E = > 3 5 ; # # A S C I I S t r i n g u s e c o n s t a n t S T Y P T A B L E = > 3 6 ; # # A S C I I S t r i n g " U n r e l e a s e d f e a t u r e " u s e c o n s t a n t S T R T Y P E = > 3 7 ; # # 2 - b y t e S i g n e d I n t e g e r " U n r e l e a s e d f e a t u r e " u s e c o n s t a n t E F L A G S = > 3 8 ; # # B I T _ A R R A Y F l a g s f o r t e m p l a t e a n d e x t e r i o r d a t a . b i t s 1 5 t o 0 , l t o r 0 = t e m p l a t e , # # 1 = e x t e r n a l d a t a , o t h e r s u n u s e d u s e c o n s t a n t E L K E Y = > 3 9 ; # # I N T E G E R _ 4 " U n r e l e a s e d f e a t u r e " u s e c o n s t a n t L I N K T Y P E = > 4 0 ; # # U N K N O W N " U n r e l e a s e d f e a t u r e " u s e c o n s t a n t L I N K K E Y S = > 4 1 ; # # U N K N O W N " U n r e l e a s e d f e a t u r e " u s e c o n s t a n t N O D E T Y P E = > 4 2 ; # # I N T E G E R _ 2 N o d e t y p e s p e c i f i c a t i o n . O n C a l m a t h i s c o u l d b e 0 t o 6 3 , G D S I I a l l o w s 0 t o 2 5 5 . # # O f c o u r s e a 2 b y t e i n t e g e r a l l o w s u p t o 6 5 5 3 5 . . . u s e c o n s t a n t P R O P A T T R = > 4 3 ; # # I N T E G E R _ 2 P r o p e r t y n u m b e r . u s e c o n s t a n t P R O P V A L U E = > 4 4 ; # # S T R I N G P r o p e r t y v a l u e . O n G D S I I , 1 2 8 c h a r a c t e r s m a x , u n l e s s a n S R E F , A R E F , o r N O D E , # # w h i c h m a y h a v e 5 1 2 c h a r a c t e r s . u s e c o n s t a n t B O X = > 4 5 ; # # N O _ D A T A T h e b e g i n n i n g o f a B O X e l e m e n t . u s e c o n s t a n t B O X T Y P E = > 4 6 ; # # I N T E G E R _ 2 B o x t y p e s p e c i f i c a t i o n . u s e c o n s t a n t P L E X = > 4 7 ; # # I N T E G E R _ 4 P l e x n u m b e r a n d p l e x h e a d f l a g . T h e l e a s t s i g n i f i c a n t b i t o f t h e m o s t s i g n i f i c a n t # # b y t e i s t h e p l e x h e a d f l a g . u s e c o n s t a n t B G N E X T N = > 4 8 ; # # I N T E G E R _ 4 P a t h e x t e n s i o n b e g i n n i n g f o r p a t h t y p e 4 i n C a l m a C u s t o m P l u s . I n d a t a b a s e u n i t s , # # m a y b e n e g a t i v e . u s e c o n s t a n t E N D E X T N = > 4 9 ; # # I N T E G E R _ 4 P a t h e x t e n s i o n e n d f o r p a t h t y p e 4 i n C a l m a C u s t o m P l u s . I n d a t a b a s e u n i t s , m a y b e n e g a t i v e . u s e c o n s t a n t T A P E N U M = > 5 0 ; # # I N T E G E R _ 2 T a p e n u m b e r f o r m u l t i - r e e l s t r e a m f i l e . u s e c o n s t a n t T A P E C O D E = > 5 1 ; # # I N T E G E R _ 2 T a p e c o d e t o v e r i f y t h a t t h e r e e l i s f r o m t h e p r o p e r s e t . 1 2 b y t e s t h a t a r e # # s u p p o s e d t o f o r m a u n i q u e t a p e c o d e . u s e c o n s t a n t S T R C L A S S = > 5 2 ; # # B I T _ A R R A Y C a l m a u s e o n l y . u s e c o n s t a n t R E S E R V E D = > 5 3 ; # # I N T E G E R _ 4 U s e d t o b e N U M T Y P E S p e r C a l m a G D S I I S t r e a m F o r m a t M a n u a l , v 6 . 0 . u s e c o n s t a n t F O R M A T = > 5 4 ; # # I N T E G E R _ 2 A r c h i v e o r F i l t e r e d f l a g . 0 : A r c h i v e 1 : f i l t e r e d u s e c o n s t a n t M A S K = > 5 5 ; # # S T R I N G O n l y i n f i l t e r e d s t r e a m s . L a y e r s a n d d a t a t y p e s u s e d f o r m a s k i n a f i l t e r e d # # s t r e a m f i l e . A s t r i n g g i v i n g r a n g e s o f l a y e r s a n d d a t a t y p e s s e p a r a t e d b y a s e m i c o l o n . # # T h e r e m a y b e m o r e t h a n o n e m a s k i n a s t r e a m f i l e . u s e c o n s t a n t E N D M A S K S = > 5 6 ; # # N O _ D A T A T h e e n d o f m a s k d e s c r i p t i o n s . u s e c o n s t a n t L I B D I R S I Z E = > 5 7 ; # # I N T E G E R _ 2 N u m b e r o f p a g e s i n l i b r a r y d i r e c t o r , a G D S I I t h i n g , i t s e e m s t o h a v e o n l y b e e n # # u s e d w h e n C a l m a I N F O R M w a s c r e a t i n g a n e w l i b r a r y . u s e c o n s t a n t S R F N A M E = > 5 8 ; # # S T R I N G C a l m a " S t i c k s " ( c ) r u l e f i l e n a m e . u s e c o n s t a n t L I B S E C U R = > 5 9 ; # # I N T E G E R _ 2 A c c e s s c o n t r o l l i s t s t u f f f o r C a l m a D O S , a n c i e n t . I N F O R M u s e d t h i s w h e n c r e a t i n g # # a n e w l i b r a r y . H a d 1 t o 3 2 e n t r i e s w i t h g r o u p n u m b e r s , u s e r n u m b e r s a n d a c c e s s r i g h t s . # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # u s e v a r s ' $ S t r S p a c e ' ; u s e v a r s ' $ E l m S p a c e ' ; $ S t r S p a c e = ' ' ; $ E l m S p a c e = ' ' ; m y % R e c o r d T y p e N u m b e r s = ( ' H E A D E R ' = > H E A D E R , ' B G N L I B ' = > B G N L I B , ' L I B N A M E ' = > L I B N A M E , ' U N I T S ' = > U N I T S , ' E N D L I B ' = > E N D L I B , ' B G N S T R ' = > B G N S T R , ' S T R N A M E ' = > S T R N A M E , ' E N D S T R ' = > E N D S T R , ' B O U N D A R Y ' = > B O U N D A R Y , ' P A T H ' = > P A T H , ' S R E F ' = > S R E F , ' A R E F ' = > A R E F , ' T E X T ' = > T E X T , ' L A Y E R ' = > L A Y E R , ' D A T A T Y P E ' = > D A T A T Y P E , ' W I D T H ' = > W I D T H , ' X Y ' = > X Y , ' E N D E L ' = > E N D E L , ' S N A M E ' = > S N A M E , ' C O L R O W ' = > C O L R O W , ' T E X T N O D E ' = > T E X T N O D E , ' N O D E ' = > N O D E , ' T E X T T Y P E ' = > T E X T T Y P E , ' P R E S E N T A T I O N ' = > P R E S E N T A T I O N , ' S P A C I N G ' = > S P A C I N G , ' S T R I N G ' = > S T R I N G , ' S T R A N S ' = > S T R A N S , ' M A G ' = > M A G , ' A N G L E ' = > A N G L E , ' U I N T E G E R ' = > U I N T E G E R , ' U S T R I N G ' = > U S T R I N G , ' R E F L I B S ' = > R E F L I B S , ' F O N T S ' = > F O N T S , ' P A T H T Y P E ' = > P A T H T Y P E , ' G E N E R A T I O N S ' = > G E N E R A T I O N S , ' A T T R T A B L E ' = > A T T R T A B L E , ' S T Y P T A B L E ' = > S T Y P T A B L E , ' S T R T Y P E ' = > S T R T Y P E , ' E F L A G S ' = > E F L A G S , ' E L K E Y ' = > E L K E Y , ' L I N K T Y P E ' = > L I N K T Y P E , ' L I N K K E Y S ' = > L I N K K E Y S , ' N O D E T Y P E ' = > N O D E T Y P E , ' P R O P A T T R ' = > P R O P A T T R , ' P R O P V A L U E ' = > P R O P V A L U E , ' B O X ' = > B O X , ' B O X T Y P E ' = > B O X T Y P E , ' P L E X ' = > P L E X , ' B G N E X T N ' = > B G N E X T N ,

    Page 2 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    3/46

    ' E N D E X T N ' = > E N D E X T N , ' T A P E N U M ' = > T A P E N U M , ' T A P E C O D E ' = > T A P E C O D E , ' S T R C L A S S ' = > S T R C L A S S , ' R E S E R V E D ' = > R E S E R V E D , ' F O R M A T ' = > F O R M A T , ' M A S K ' = > M A S K , ' E N D M A S K S ' = > E N D M A S K S , ' L I B D I R S I Z E ' = > L I B D I R S I Z E , ' S R F N A M E ' = > S R F N A M E , ' L I B S E C U R ' = > L I B S E C U R , ) ; m y @ R e c o r d T y p e S t r i n g s = ( # # f o r a s c i i p r i n t o f G D S ' H E A D E R ' , ' B G N L I B ' , ' L I B N A M E ' , ' U N I T S ' , ' E N D L I B ' , ' B G N S T R ' , ' S T R N A M E ' , ' E N D S T R ' , ' B O U N D A R Y ' , ' P A T H ' , ' S R E F ' , ' A R E F ' , ' T E X T ' , ' L A Y E R ' , ' D A T A T Y P E ' , ' W I D T H ' , ' X Y ' , ' E N D E L ' , ' S N A M E ' , ' C O L R O W ' , ' T E X T N O D E ' , ' N O D E ' , ' T E X T T Y P E ' , ' P R E S E N T A T I O N ' , ' S P A C I N G ' , ' S T R I N G ' , ' S T R A N S ' , ' M A G ' , ' A N G L E ' , ' U I N T E G E R ' , ' U S T R I N G ' , ' R E F L I B S ' , ' F O N T S ' , ' P A T H T Y P E ' , ' G E N E R A T I O N S ' , ' A T T R T A B L E ' , ' S T Y P T A B L E ' , ' S T R T Y P E ' , ' E F L A G S ' , ' E L K E Y ' , ' L I N K T Y P E ' , ' L I N K K E Y S ' , ' N O D E T Y P E ' , ' P R O P A T T R ' , ' P R O P V A L U E ' , ' B O X ' , ' B O X T Y P E ' , ' P L E X ' , ' B G N E X T N ' , ' E N D E X T N ' , ' T A P E N U M ' , ' T A P E C O D E ' , ' S T R C L A S S ' , ' R E S E R V E D ' , ' F O R M A T ' , ' M A S K ' , ' E N D M A S K S ' , ' L I B D I R S I Z E ' , ' S R F N A M E ' , ' L I B S E C U R ' , ) ; m y @ C o m p a c t R e c o r d T y p e S t r i n g s = ( # # f o r c o m p a c t a s c i i p r i n t o f G D S ( G D T f o r m a t ) ' g d s 2 { ' , # H E A D E R ' ' , # B G N L I B ' l i b ' , # L I B N A M E ' ' , # U N I T S ' } ' , # E N D L I B ' c e l l { ' , # B G N S T R ' ' , # S T R N A M E ' } ' , # E N D S T R ' b { ' , # B O U N D A R Y ' p { ' , # P A T H ' s { ' , # S R E F ' a { ' , # A R E F ' t { ' , # T E X T ' ' , # L A Y E R ' d t ' , # D A T A T Y P E ' w ' , # W I D T H ' x y ( ' , # X Y # ) ' } ' , # E N D E L ' ' , # S N A M E ' c r ' , # C O L R O W ' t n ' , # T E X T N O D E ' n o ' , # N O D E ' t t ' , # T E X T T Y P E ' ' , # P R E S E N T A T I O N ' ' s p ' , # S P A C I N G ' ' , # S T R I N G ' ' , # S T R A N S ' m ' , # M A G ' a ' , # A N G L E

    Page 3 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    4/46

    ' u i ' , # U I N T E G E R ' u s ' , # U S T R I N G ' r l ' , # R E F L I B S ' f ' , # F O N T S ' p t ' , # P A T H T Y P E ' g e n ' , # G E N E R A T I O N S ' a t ' , # A T T R T A B L E ' s t ' , # S T Y P T A B L E ' s t r t ' , # S T R T Y P E ' e f ' , # E F L A G S ' e k ' , # E L K E Y ' l t ' , # L I N K T Y P E ' l k ' , # L I N K K E Y S ' n t ' , # N O D E T Y P E ' p t r ' , # P R O P A T T R ' p v ' , # P R O P V A L U E ' b x ' , # B O X ' b t ' , # B O X T Y P E ' p x ' , # P L E X ' b x ' , # B G N E X T N ' e x ' , # E N D E X T N ' t n u m ' , # T A P E N U M ' t c o d e ' , # T A P E C O D E ' s t r c ' , # S T R C L A S S ' r e s v ' , # R E S E R V E D ' f m t ' , # F O R M A T ' m s k ' , # M A S K ' e m s k ' , # E N D M A S K S ' l d s ' , # L I B D I R S I Z E ' s r f n ' , # S R F N A M E ' l i b s ' , # L I B S E C U R ) ; # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # m y % R e c o r d T y p e D a t a = ( ' H E A D E R ' = > I N T E G E R _ 2 , ' B G N L I B ' = > I N T E G E R _ 2 , ' L I B N A M E ' = > A C S I I _ S T R I N G , ' U N I T S ' = > R E A L _ 8 , ' E N D L I B ' = > N O _ R E C _ D A T A , ' B G N S T R ' = > I N T E G E R _ 2 , ' S T R N A M E ' = > A C S I I _ S T R I N G , ' E N D S T R ' = > N O _ R E C _ D A T A , ' B O U N D A R Y ' = > N O _ R E C _ D A T A , ' P A T H ' = > N O _ R E C _ D A T A , ' S R E F ' = > N O _ R E C _ D A T A , ' A R E F ' = > N O _ R E C _ D A T A , ' T E X T ' = > N O _ R E C _ D A T A , ' L A Y E R ' = > I N T E G E R _ 2 , ' D A T A T Y P E ' = > I N T E G E R _ 2 , ' W I D T H ' = > I N T E G E R _ 4 , ' X Y ' = > I N T E G E R _ 4 , ' E N D E L ' = > N O _ R E C _ D A T A , ' S N A M E ' = > A C S I I _ S T R I N G , ' C O L R O W ' = > I N T E G E R _ 2 , ' T E X T N O D E ' = > N O _ R E C _ D A T A , ' N O D E ' = > N O _ R E C _ D A T A , ' T E X T T Y P E ' = > I N T E G E R _ 2 , ' P R E S E N T A T I O N ' = > B I T _ A R R A Y , ' S P A C I N G ' = > U N K N O W N , # I N T E G E R _ 4 , d i s c o n t i n u e d ' S T R I N G ' = > A C S I I _ S T R I N G , ' S T R A N S ' = > B I T _ A R R A Y , ' M A G ' = > R E A L _ 8 , ' A N G L E ' = > R E A L _ 8 , ' U I N T E G E R ' = > U N K N O W N , # I N T E G E R _ 4 , n o l o n g e r u s e d ' U S T R I N G ' = > U N K N O W N , # A C S I I _ S T R I N G , n o l o n g e r u s e d ' R E F L I B S ' = > A C S I I _ S T R I N G , ' F O N T S ' = > A C S I I _ S T R I N G , ' P A T H T Y P E ' = > I N T E G E R _ 2 , ' G E N E R A T I O N S ' = > I N T E G E R _ 2 , ' A T T R T A B L E ' = > A C S I I _ S T R I N G , ' S T Y P T A B L E ' = > A C S I I _ S T R I N G , # u n r e l e a s e d f e a t u r e ' S T R T Y P E ' = > I N T E G E R _ 2 , # I N T E G E R _ 2 , u n r e l e a s e d f e a t u r e ' E F L A G S ' = > B I T _ A R R A Y , ' E L K E Y ' = > I N T E G E R _ 4 , # I N T E G E R _ 4 , u n r e l e a s e d f e a t u r e ' L I N K T Y P E ' = > I N T E G E R _ 2 , # u n r e l e a s e d f e a t u r e ' L I N K K E Y S ' = > I N T E G E R _ 4 , # u n r e l e a s e d f e a t u r e ' N O D E T Y P E ' = > I N T E G E R _ 2 , ' P R O P A T T R ' = > I N T E G E R _ 2 , ' P R O P V A L U E ' = > A C S I I _ S T R I N G , ' B O X ' = > N O _ R E C _ D A T A , ' B O X T Y P E ' = > I N T E G E R _ 2 , ' P L E X ' = > I N T E G E R _ 4 , ' B G N E X T N ' = > I N T E G E R _ 4 , ' E N D E X T N ' = > I N T E G E R _ 4 , ' T A P E N U M ' = > I N T E G E R _ 2 , ' T A P E C O D E ' = > I N T E G E R _ 2 , ' S T R C L A S S ' = > U N K N O W N , ' R E S E R V E D ' = > I N T E G E R _ 4 , ' F O R M A T ' = > I N T E G E R _ 2 , ' M A S K ' = > A C S I I _ S T R I N G , ' E N D M A S K S ' = > N O _ R E C _ D A T A , ' L I B D I R S I Z E ' = > U N K N O W N , # I N T E G E R _ 2 ' S R F N A M E ' = > A C S I I _ S T R I N G , ' L I B S E C U R ' = > U N K N O W N , # I N T E G E R _ 2 , ) ; # T h i s i s t h e d e f a u l t c l a s s f o r t h e G D S 2 o b j e c t t o u s e w h e n a l l e l s e f a i l s . $ G D S 2 : : D e f a u l t C l a s s = ' G D S 2 ' u n l e s s d e f i n e d $ G D S 2 : : D e f a u l t C l a s s ; m y $ G _ e p s i l o n = 0 . 0 0 0 0 0 1 ; # # t o t a k e c a r e o f f l o a t i n g p o i n t r e p r e s e n t a t i o n p r o b l e m s = h e a d 1 N A M E G D S 2 - G D S 2 s t r e a m m o d u l e

    Page 4 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    5/46

    = h e a d 1 D e s c r i p t i o n T h i s i s G D S 2 , a m o d u l e f o r q u i c k l y c r e a t i n g p r o g r a m s t o r e a d a n d / o r w r i t e G D S 2 f i l e s . S e n d f e e d b a c k / s u g g e s t i o n s t o s c h u m a c k @ c p a n . o r g

    = h e a d 1 C r e a t e M e t h o d = c u t # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 2 n e w - o p e n g d s 2 f i l e u s a g e : m y $ g d s 2 F i l e = n e w G D S 2 ( - f i l e N a m e = > " f i l e n a m e . g d s 2 " ) ; # # t o r e a d m y $ g d s 2 F i l e 2 = n e w G D S 2 ( - f i l e N a m e = > " > f i l e n a m e . g d s 2 " ) ; # # t o w r i t e

    = c u t s u b n e w # : P r o f i l e d { m y ( $ c l a s s , % a r g ) = @ _ ; m y $ s e l f = { } ; b l e s s $ s e l f , $ c l a s s | | r e f $ c l a s s | | $ G D S 2 : : D e f a u l t C l a s s ; m y $ f i l e N a m e = $ a r g { ' - f i l e N a m e ' } ; i f ( ! d e f i n e d $ f i l e N a m e ) { d i e " n e w e x p e c t s a g d s 2 f i l e n a m e . M i s s i n g - f i l e N a m e = > ' n a m e ' $ ! " ; } m y $ r e s o l u t i o n = $ a r g { ' - r e s o l u t i o n ' } ; i f ( ! d e f i n e d $ r e s o l u t i o n ) { $ r e s o l u t i o n = 1 0 0 0 ; } d i e " n e w e x p e c t s a p o s i t i v e i n t e g e r r e s o l u t i o n . ( $ r e s o l u t i o n ) $ ! " i f ( ( $ r e s o l u t i o n < = 0 ) | | ( $ r e s o l u t i o n ! ~ m | ^ \ d + $ | ) ) ; m y $ l o c k M o d e = L O C K _ S H ; # # d e f a u l t m y $ o p e n M o d S t r = s u b s t r ( $ f i l e N a m e , 0 , 2 ) ; # # # l o o k i n g f o r > o r > > $ o p e n M o d S t r = ~ s | ^ \ s + | | ; $ o p e n M o d S t r = ~ s | [ ^ \ + > ] + | | g ; m y $ o p e n M o d e N u m = O _ R D O N L Y ; i f ( $ o p e n M o d S t r = ~ m | ^ \ + | ) { w a r n ( " I g n o r i n g ' + ' i n o p e n m o d e " ) ; # # n o t h a n d l i n g t h i s y e t . . . $ o p e n M o d S t r = ~ s | \ + + | | ; } i f ( $ o p e n M o d S t r e q ' > ' ) { $ o p e n M o d e N u m = O _ W R O N L Y | O _ C R E A T ; $ l o c k M o d e = L O C K _ E X ; $ f i l e N a m e = ~ s | ^ $ o p e n M o d S t r | | ; } e l s i f ( $ o p e n M o d S t r e q ' > > ' ) { $ o p e n M o d e N u m = O _ W R O N L Y | O _ A P P E N D ; $ l o c k M o d e = L O C K _ E X ; $ f i l e N a m e = ~ s | ^ $ o p e n M o d S t r | | ; } m y $ f i l e H a n d l e = n e w I O : : F i l e ; $ f i l e H a n d l e - > o p e n ( " $ f i l e N a m e " , $ o p e n M o d e N u m ) o r d i e " U n a b l e t o o p e n $ f i l e N a m e b e c a u s e $ ! " ; i f ( H A V E _ F L O C K ) { f l o c k ( $ f i l e H a n d l e , $ l o c k M o d e ) o r d i e " F i l e l o c k o n $ f i l e N a m e f a i l e d b e c a u s e $ ! " ; } b i n m o d e $ f i l e H a n d l e , ' : r a w ' ; # # m a y n e e d P e r l 5 . 6 f o r d i s c i p l i n e $ s e l f - > { ' F d ' } = $ f i l e H a n d l e - > f i l e n o ; $ s e l f - > { ' F i l e H a n d l e ' } = $ f i l e H a n d l e ; $ s e l f - > { ' F i l e N a m e ' } = $ f i l e N a m e ; # # t h e g d s 2 f i l e n a m e $ s e l f - > { ' B y t e s D o n e ' } = 0 ; # # t o t a l f i l e s i z e s o f a r $ s e l f - > { ' E O L I B ' } = F A L S E ; # # e n d o f l i b r a r y f l a g $ s e l f - > { ' I N H E A D E R ' } = U N K N O W N ; # # i n h e a d e r ? f l a g T R U E | F A L S E | U N K N O W N $ s e l f - > { ' I N D A T A ' } = F A L S E ; # # i n d a t a ? f l a g T R U E | F A L S E $ s e l f - > { ' L e n g t h ' } = 0 ; # # l e n g t h o f d a t a $ s e l f - > { ' D a t a T y p e ' } = U N K N O W N ; # # o n e o f 7 g d s d a t a t y p e s $ s e l f - > { ' U U n i t s ' } = - 1 . 0 ; # # f o r g d s 2 f i l e $ s e l f - > { ' D B U n i t s ' } = - 1 . 0 ; # # f o r g d s 2 f i l e $ s e l f - > { ' R e c o r d ' } = ' ' ; # # t h e w h o l e r e c o r d a s f o u n d i n g d s 2 f i l e $ s e l f - > { ' R e c o r d T y p e ' } = U N K N O W N ; $ s e l f - > { ' D a t a I n d e x ' } = 0 ; $ s e l f - > { ' R e c o r d D a t a ' } = ( ) ; $ s e l f - > { ' C u r r e n t D a t a L i s t ' } = ' ' ; $ s e l f - > { ' I n B o u n d a r y ' } = F A L S E ; # # $ s e l f - > { ' I n T x t ' } = F A L S E ; # # $ s e l f - > { ' D a t e F l d ' } = 0 ; # # $ s e l f - > { ' R e s o l u t i o n ' } = $ r e s o l u t i o n ; $ s e l f - > { ' U s i n g P r e t t y P r i n t ' } = F A L S E ; # # p r i n t a s s t r i n g . . . $ s e l f ; } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 2 f i l e N u m - f i l e n u m b e r . . . u s a g e : = c u t s u b f i l e N u m # : P r o f i l e d { m y ( $ s e l f , % a r g ) = @ _ ; i n t ( $ s e l f - > { ' F d ' } ) ;

    Page 5 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    6/46

    } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 2 c l o s e - c l o s e g d s 2 f i l e u s a g e : $ g d s 2 F i l e - > c l o s e ; - o r - $ g d s 2 F i l e - > c l o s e ( - m a r k E n d = > 1 ) ; # # - - s o m e s y s t e m s h a v e t r o u b l e c l o s i n g f i l e s $ g d s 2 F i l e - > c l o s e ( - p a d = > 2 0 4 8 ) ; # # - - p a d e n d w i t h \ 0 ' s t i l l f i l e s i z e i s a # # m u l t i p l e o f n u m b e r . N o t e : o l d r e e l t o r e e l t a p e s o n C a l m a # # s y s t e m s u s e d 2 0 4 8 b y t e b l o c k s = c u t s u b c l o s e # : P r o f i l e d { m y ( $ s e l f , % a r g ) = @ _ ; m y $ m a r k E n d = $ a r g { ' - m a r k E n d ' } ; m y $ p a d = $ a r g { ' - p a d ' } ; i f ( ( d e f i n e d $ m a r k E n d ) & & ( $ m a r k E n d ) ) { m y $ f h = $ s e l f - > { ' F i l e H a n d l e ' } ; p r i n t $ f h " \ x 1 a \ x 0 4 " ; # a ^ Z a n d a ^ D $ s e l f - > { ' B y t e s D o n e ' } + = 2 ; } i f ( ( d e f i n e d $ p a d ) & & ( $ p a d > 0 ) ) { m y $ f h = $ s e l f - > { ' F i l e H a n d l e ' } ; $ f h - > f l u s h ; s e e k ( $ f h , 0 , S E E K _ E N D ) ; m y $ f i l e S i z e = t e l l ( $ f h ) ; m y $ p a d S i z e = $ p a d - ( $ f i l e S i z e % $ p a d ) ; $ p a d S i z e = 0 i f ( $ p a d S i z e = = $ p a d ) ; f o r ( m y $ i = 0 ; $ i < $ p a d S i z e ; $ i + + ) { p r i n t $ f h " \ 0 " ; # # a n u l l } } $ s e l f - > { ' F i l e H a n d l e ' } - > c l o s e ; } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 1 H i g h L e v e l W r i t e M e t h o d s = c u t # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 2 p r i n t I n i t L i b ( ) - D o e s a l l t h e t h i n g s n e e d e d t o s t a r t a l i b r a r y , w r i t e s H E A D E R , B G N L I B , L I B N A M E , a n d U N I T S r e c o r d s T h e d e f a u l t i s t o c r e a t e a l i b r a r y w i t h a d e f a u l t u n i t o f 1 m i c r o n t h a t h a s a r e s o l u t i o n o f 1 0 0 0 . T o g e t t h i s s e t u U n i t t o 0 . 0 0 1 ( 1 / 1 0 0 0 ) a n d t h e d b U n i t t o 1 / 1 0 0 0 t h o f a m i c r o n ( 1 e

    u s a g e : $ g d s 2 F i l e - > p r i n t I n i t L i b ( - n a m e = > " t e s t l i b " , # # r e q u i r e d - i s o D a t e = > 0 | 1 # # ( o p t i o n a l ) u s e I S O 4 d i g i t d a t e 2 0 0 1 v s 1 0 1 - u U n i t = > r e a l n u m b e r # # ( o p t i o n a l ) d e f a u l t i s 0 . 0 0 1 - d b U n i t = > r e a l n u m b e r # # ( o p t i o n a l ) d e f a u l t i s 1 e - 9 ) ; # # d e f a u l t s t o c u r r e n t d a t e f o r l i b r a r y d a t e n o t e : r e m e m b e r t o c l o s e l i b r a r y w i t h p r i n t E n d l i b ( ) = c u t s u b p r i n t I n i t L i b # : P r o f i l e d { m y ( $ s e l f , % a r g ) = @ _ ; m y $ l i b N a m e = $ a r g { ' - n a m e ' } ; i f ( ! d e f i n e d $ l i b N a m e ) { d i e " p r i n t I n i t L i b e x p e c t s a l i b r a r y n a m e . M i s s i n g - n a m e = > ' n a m e ' $ ! " ; } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # m y $ i s o D a t e = $ a r g { ' - i s o D a t e ' } ; i f ( ! d e f i n e d $ i s o D a t e ) { $ i s o D a t e = F A L S E ; } e l s i f ( $ i s o D a t e ! = 0 ) { $ i s o D a t e = T R U E ; } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # m y $ u U n i t = $ a r g { ' - u U n i t ' } ; i f ( ! d e f i n e d $ u U n i t ) { $ u U n i t = 0 . 0 0 1 ; } e l s e { $ s e l f - > { ' R e s o l u t i o n ' } = ( 1 / $ u U n i t ) ; # # d e f a u l t i s 1 0 0 0 - a l r e a d y s e t i n n e w ( ) } $ s e l f - > { ' U U n i t s ' } = $ u U n i t ; # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # m y $ d b U n i t = $ a r g { ' - d b U n i t ' } ; i f ( ! d e f i n e d $ d b U n i t ) { $ d b U n i t = 1 e - 9 ; } $ s e l f - > { ' D B U n i t s ' } = $ d b U n i t ;

    Page 6 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    7/46

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # m y ( $ s e c , $ m i n , $ h o u r , $ m d a y , $ m o n , $ y e a r , $ w d a y , $ y d a y , $ i s d s t ) = l o c a l t i m e ( t i m e ) ; $ m o n + + ; $ y e a r + = 1 9 0 0 i f ( $ i s o D a t e ) ; # # C a d e n c e l i k e s y e a r l e f t " a s i s " . G D S f o r m a t s u p p o r t s y e a r n u m b e r u p t o 6 5 5 3 5 - - 1 0 1 v s 2 0 0 1 $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' H E A D E R ' , - d a t a = > 3 ) ; # # G D S 2 H E A D E R $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' B G N L I B ' , - d a t a = > [ $ y e a r , $ m o n , $ m d a y , $ h o u r , $ m i n , $ s e c , $ y e a r , $ m o n , $ m d a y , $ h o u r , $ m i n , $ s e c ] ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' L I B N A M E ' , - d a t a = > $ l i b N a m e ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' U N I T S ' , - d a t a = > [ $ u U n i t , $ d b U n i t ] ) ; } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 2 p r i n t B g n s t r - D o e s a l l t h e t h i n g s n e e d e d t o s t a r t a s t r u c t u r e d e f i n i t i o n u s a g e : $ g d s 2 F i l e - > p r i n t B g n s t r ( - n a m e = > " n a n d 3 " # # w r i t e s B G N S T R a n d S T R N A M E r e c o r d s - i s o D a t e = > 1 | 0 # # ( o p t i o n a l ) u s e I S O 4 d i g i t d a t e 2 0 0 1 v s 1 0 1 ) ; n o t e : r e m e m b e r t o c l o s e w i t h p r i n t E n d s t r ( ) = c u t s u b p r i n t B g n s t r # : P r o f i l e d { m y ( $ s e l f , % a r g ) = @ _ ; m y $ s t r N a m e = $ a r g { ' - n a m e ' } ; i f ( ! d e f i n e d $ s t r N a m e ) { d i e " b g n S t r e x p e c t s a s t r u c t u r e n a m e . M i s s i n g - n a m e = > ' n a m e ' $ ! " ; } m y $ c r e a t e T i m e = $ a r g { ' - c r e a t e T i m e ' } ; m y $ i s o D a t e = $ a r g { ' - i s o D a t e ' } ; i f ( ! d e f i n e d $ i s o D a t e ) { $ i s o D a t e = F A L S E ; } e l s i f ( $ i s o D a t e ! = 0 ) {

    $ i s o D a t e = T R U E ; } m y ( $ c s e c , $ c m i n , $ c h o u r , $ c m d a y , $ c m o n , $ c y e a r , $ c w d a y , $ c y d a y , $ c i s d s t ) ; i f ( d e f i n e d $ c r e a t e T i m e ) { ( $ c s e c , $ c m i n , $ c h o u r , $ c m d a y , $ c m o n , $ c y e a r , $ c w d a y , $ c y d a y , $ c i s d s t ) = l o c a l t i m e ( $ c r e a t e T i m e ) ; } e l s e { ( $ c s e c , $ c m i n , $ c h o u r , $ c m d a y , $ c m o n , $ c y e a r , $ c w d a y , $ c y d a y , $ c i s d s t ) = l o c a l t i m e ( t i m e ) ; } $ c m o n + + ; m y $ m o d T i m e = $ a r g { ' - m o d T i m e ' } ; m y ( $ m s e c , $ m m i n , $ m h o u r , $ m m d a y , $ m m o n , $ m y e a r , $ m w d a y , $ m y d a y , $ m i s d s t ) ; i f ( d e f i n e d $ m o d T i m e ) { ( $ m s e c , $ m m i n , $ m h o u r , $ m m d a y , $ m m o n , $ m y e a r , $ m w d a y , $ m y d a y , $ m i s d s t ) = l o c a l t i m e ( $ m o d T i m e ) ; } e l s e { ( $ m s e c , $ m m i n , $ m h o u r , $ m m d a y , $ m m o n , $ m y e a r , $ m w d a y , $ m y d a y , $ m i s d s t ) = l o c a l t i m e ( t i m e ) ; } $ m m o n + + ; i f ( $ i s o D a t e ) { $ c y e a r + = 1 9 0 0 ; # # 2 0 0 1 v s 1 0 1 $ m y e a r + = 1 9 0 0 ; } $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' B G N S T R ' , - d a t a = > [ $ c y e a r , $ c m o n , $ c m d a y , $ c h o u r , $ c m i n , $ c s e c , $ m y e a r , $ m m o n , $ m m d a y , $ m h o u r , $ m m i n , $ m s e c ] ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' S T R N A M E ' , - d a t a = > $ s t r N a m e ) ; } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 2 p r i n t P a t h - p r i n t s a g d s 2 p a t h u s a g e : $ g d s 2 F i l e - > p r i n t P a t h ( - l a y e r = > # , - d a t a T y p e = > # , # # o p t i o n a l - p a t h T y p e = > # , - w i d t h = > # . # , - u n i t W i d t h = > # , # # ( o p t i o n a l ) d i r e c t l y s p e c i f y w i d t h i n d a t a b a s e u n i t s ( v s - w i d t h w h i c h i s m u l t i p l e d b y r e s o l u t i o n ) - x y = > \ @ a r r a y , # # a r r a y o f r e a l s - x y I n t = > \ @ a r r a y , # # a r r a y o f i n t e r n a l i n t s ( o p t i o n a l - w k s b e t t e r i f y o u a r e m o d i f y i n g a n e x i s t i n g G D S 2 f i l e ) ) ; n o t e : l a y e r d e f a u l t s t o 0 i f - l a y e r n o t u s e d p a t h T y p e d e f a u l t s t o 0 i f - p a t h T y p e n o t u s e d p a t h T y p e 0 = s q u a r e e n d 1 = r o u n d e n d 2 = s q u a r e - e x t e n d e d 1 / 2 w i d t h 4 = c u s t o m p l u s v a r i a b l e p a t h e x t e n s i o n . . . w i d t h d e f a u l t s t o 0 . 0 i f - w i d t h n o t u s e d = c u t # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # < p a t h > : : = P A T H [ E L F L A G S ] [ P L E X ] L A Y E R D A T A T Y P E [ P A T H T Y P E ] [ W I D T H ] X Y

    s u b p r i n t P a t h # : P r o f i l e d { m y ( $ s e l f , % a r g ) = @ _ ;

    Page 7 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    8/46

    m y $ r e s o l u t i o n = $ s e l f - > { ' R e s o l u t i o n ' } ; m y $ l a y e r = $ a r g { ' - l a y e r ' } ; $ l a y e r = 0 i f ( ! d e f i n e d $ l a y e r ) ; m y $ d a t a T y p e = $ a r g { ' - d a t a T y p e ' } ; $ d a t a T y p e = 0 i f ( ! d e f i n e d $ d a t a T y p e ) ; m y $ p a t h T y p e = $ a r g { ' - p a t h T y p e ' } ; $ p a t h T y p e = 0 i f ( ! d e f i n e d $ p a t h T y p e ) ; m y $ b g n E x t n = $ a r g { ' - b g n E x t n ' } ; $ b g n E x t n = 0 i f ( ! d e f i n e d $ b g n E x t n ) ; m y $ e n d E x t n = $ a r g { ' - e n d E x t n ' } ; $ e n d E x t n = 0 i f ( ! d e f i n e d $ e n d E x t n ) ; m y $ u n i t W i d t h = $ a r g { ' - u n i t W i d t h ' } ; m y $ w i d t h R e a l = $ a r g { ' - w i d t h ' } ; m y $ w i d t h = 0 ; i f ( ( d e f i n e d $ u n i t W i d t h ) & & ( $ u n i t W i d t h > = 0 ) ) { $ w i d t h = i n t ( $ u n i t W i d t h ) ; } i f ( ( d e f i n e d $ w i d t h R e a l ) & & ( $ w i d t h R e a l > = 0 . 0 ) ) { $ w i d t h = i n t ( ( $ w i d t h R e a l * $ r e s o l u t i o n ) + $ G _ e p s i l o n ) ; } # # # # - x y I n t m o s t u s e f u l i f r e a d i n g a n d m o d i f y i n g . . . - x y i f c r e a t i n g f r o m s c r a t c h m y $ x y I n t = $ a r g { ' - x y I n t ' } ; # # $ x y I n t s h o u l d b e a r e f e r e n c e t o a n a r r a y o f i n t e r n a l G D S 2 f o r m a t i n t e g e r s m y $ x y = $ a r g { ' - x y ' } ; # # $ x y s h o u l d b e a r e f e r e n c e t o a n a r r a y o f r e a l s m y @ x y T m p = ( ) ; # # d o n ' t p o l l u t e a r r a y p a s s e d i n i f ( ! ( ( d e f i n e d $ x y ) | | ( d e f i n e d $ x y I n t ) ) ) { d i e " p r i n t P a t h e x p e c t s a n x y a r r a y r e f e r e n c e . M i s s i n g - x y = > \ \ \ @ a r r a y $ ! " ; } i f ( d e f i n e d $ x y I n t ) { $ x y = $ x y I n t ; $ r e s o l u t i o n = 1 ; } $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' P A T H ' ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' L A Y E R ' , - d a t a = > $ l a y e r ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' D A T A T Y P E ' , - d a t a = > $ d a t a T y p e ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' P A T H T Y P E ' , - d a t a = > $ p a t h T y p e ) i f ( $ p a t h T y p e ) ;

    $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' W I D T H ' , - d a t a = > $ w i d t h ) i f ( $ w i d t h ) ; i f ( $ p a t h T y p e = = 4 ) { $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' B G N E X T N ' , - d a t a = > $ b g n E x t n ) ; # # i n t u s e d w i t h r e s o l u t i o n $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' E N D E X T N ' , - d a t a = > $ e n d E x t n ) ; # # i n t u s e d w i t h r e s o l u t i o n } f o r ( m y $ i = 0 ; $ i < = $ # $ x y ; $ i + + ) # # e . g . 3 . 4 i n - > 3 4 0 0 o u t { i f ( $ x y - > [ $ i ] > = 0 ) { p u s h @ x y T m p , i n t ( ( ( $ x y - > [ $ i ] ) * $ r e s o l u t i o n ) + $ G _ e p s i l o n ) ; } e l s e { p u s h @ x y T m p , i n t ( ( ( $ x y - > [ $ i ] ) * $ r e s o l u t i o n ) - $ G _ e p s i l o n ) ; } } i f ( $ b g n E x t n | | $ e n d E x t n ) # # w e h a v e t o c o n v e r t { m y $ b g n X 1 = $ x y T m p [ 0 ] ; m y $ b g n Y 1 = $ x y T m p [ 1 ] ; m y $ b g n X 2 = $ x y T m p [ 2 ] ; m y $ b g n Y 2 = $ x y T m p [ 3 ] ; m y $ e n d X 1 = $ x y T m p [ $ # x y T m p - 1 ] ; m y $ e n d Y 1 = $ x y T m p [ $ # x y T m p ] ; m y $ e n d X 2 = $ x y T m p [ $ # x y T m p - 3 ] ; m y $ e n d Y 2 = $ x y T m p [ $ # x y T m p - 2 ] ; i f ( $ b g n E x t n ) { i f ( $ b g n X 1 = = $ b g n X 2 ) # v e r t i c a l . . . m o d i f y 1 s t Y { i f ( $ b g n Y 1 < $ b g n Y 2 ) # # p o i n t s d o w n { $ x y T m p [ 1 ] - = $ b g n E x t n ; $ x y T m p [ 1 ] + = i n t ( $ w i d t h / 2 ) i f ( $ p a t h T y p e ! = 0 ) ; } e l s e # # p o i n t s u p { $ x y T m p [ 1 ] + = $ b g n E x t n ; $ x y T m p [ 1 ] - = i n t ( $ w i d t h / 2 ) i f ( $ p a t h T y p e ! = 0 ) ; } } e l s i f ( $ b g n Y 1 = = $ b g n Y 2 ) # h o r i z o n t a l . . . m o d i f y 1 s t X { i f ( $ b g n X 1 < $ b g n X 2 ) # # p o i n t s l e f t { $ x y T m p [ 0 ] - = $ b g n E x t n ; $ x y T m p [ 0 ] + = i n t ( $ w i d t h / 2 ) i f ( $ p a t h T y p e ! = 0 ) ; } e l s e # # p o i n t s u p { $ x y T m p [ 0 ] + = $ b g n E x t n ; $ x y T m p [ 0 ] - = i n t ( $ w i d t h / 2 ) i f ( $ p a t h T y p e ! = 0 ) ; } } } i f ( $ e n d E x t n ) { i f ( $ e n d X 1 = = $ e n d X 2 ) # v e r t i c a l . . . m o d i f y l a s t Y { i f ( $ e n d Y 1 < $ e n d Y 2 ) # # p o i n t s d o w n { $ x y T m p [ $ # x y T m p ] - = $ e n d E x t n ;

    $ x y T m p [ $ # x y T m p ] + = i n t ( $ w i d t h / 2 ) i f ( $ p a t h T y p e ! = 0 ) ; } e l s e # # p o i n t s u p

    Page 8 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    9/46

    { $ x y T m p [ $ # x y T m p ] + = $ e n d E x t n ; $ x y T m p [ $ # x y T m p ] - = i n t ( $ w i d t h / 2 ) i f ( $ p a t h T y p e ! = 0 ) ; } } e l s i f ( $ e n d Y 1 = = $ e n d Y 2 ) # h o r i z o n t a l . . . m o d i f y l a s t X { i f ( $ e n d X 1 < $ e n d X 2 ) # # p o i n t s l e f t { $ x y T m p [ $ # x y T m p - 1 ] - = $ e n d E x t n ; $ x y T m p [ $ # x y T m p - 1 ] + = i n t ( $ w i d t h / 2 ) i f ( $ p a t h T y p e ! = 0 ) ; } e l s e # # p o i n t s u p { $ x y T m p [ $ # x y T m p - 1 ] + = $ e n d E x t n ; $ x y T m p [ $ # x y T m p - 1 ] - = i n t ( $ w i d t h / 2 ) i f ( $ p a t h T y p e ! = 0 ) ; } } } } $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' X Y ' , - d a t a = > \ @ x y T m p ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' E N D E L ' ) ; } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 2 p r i n t B o u n d a r y - p r i n t s a g d s 2 b o u n d a r y u s a g e : $ g d s 2 F i l e - > p r i n t B o u n d a r y ( - l a y e r = > # , - d a t a T y p e = > # , - x y = > \ @ a r r a y , # # a r r a y o f r e a l s - x y I n t = > \ @ a r r a y , # # a r r a y o f i n t e r n a l i n t s ( o p t i o n a l - w k s b e t t e r i f y o u a r e m o d i f y i n g a n e x i s t i n g G D S 2 f i l e ) ) ; n o t e : l a y e r d e f a u l t s t o 0 i f - l a y e r n o t u s e d d a t a T y p e d e f a u l t s t o 0 i f - d a t a T y p e n o t u s e d = c u t # < b o u n d a r y > : : = B O U N D A R Y [ E L F L A G S ] [ P L E X ] L A Y E R D A T A T Y P E X Y # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # s u b p r i n t B o u n d a r y # : P r o f i l e d { m y ( $ s e l f , % a r g ) = @ _ ; m y $ r e s o l u t i o n = $ s e l f - > { ' R e s o l u t i o n ' } ; m y $ l a y e r = $ a r g { ' - l a y e r ' } ; i f ( ! d e f i n e d $ l a y e r ) { $ l a y e r = 0 ; } m y $ d a t a T y p e = $ a r g { ' - d a t a T y p e ' } ; i f ( ! d e f i n e d $ d a t a T y p e ) { $ d a t a T y p e = 0 ; } # # # # - x y I n t m o s t u s e f u l i f r e a d i n g a n d m o d i f y i n g . . . - x y i f c r e a t i n g f r o m s c r a t c h m y $ x y I n t = $ a r g { ' - x y I n t ' } ; # # $ x y I n t s h o u l d b e a r e f e r e n c e t o a n a r r a y o f i n t e r n a l G D S 2 f o r m a t i n t e g e r s m y $ x y = $ a r g { ' - x y ' } ; # # $ x y s h o u l d b e a r e f e r e n c e t o a n a r r a y o f r e a l s m y @ x y T m p = ( ) ; # # d o n ' t p o l l u t e a r r a y p a s s e d i n i f ( ! ( ( d e f i n e d $ x y ) | | ( d e f i n e d $ x y I n t ) ) ) { d i e " p r i n t B o u n d a r y e x p e c t s a n x y a r r a y r e f e r e n c e . M i s s i n g - x y = > \ \ \ @ a r r a y $ ! " ; } i f ( d e f i n e d $ x y I n t ) { $ x y = $ x y I n t ; $ r e s o l u t i o n = 1 ; } $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' B O U N D A R Y ' ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' L A Y E R ' , - d a t a = > $ l a y e r ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' D A T A T Y P E ' , - d a t a = > $ d a t a T y p e ) ; i f ( m y $ n u m P o i n t s = $ # $ x y + 1 < 6 ) { d i e " p r i n t B o u n d a r y e x p e c t s a n x y a r r a y o f a t l e a s t s 3 c o o r d i n a t e s $ ! " ; } f o r ( m y $ i = 0 ; $ i < = $ # $ x y ; $ i + + ) # # e . g . 3 . 4 i n - > 3 4 0 0 o u t { i f ( $ x y - > [ $ i ] > = 0 ) { p u s h @ x y T m p , i n t ( ( ( $ x y - > [ $ i ] ) * $ r e s o l u t i o n ) + $ G _ e p s i l o n ) ; } e l s e { p u s h @ x y T m p , i n t ( ( ( $ x y - > [ $ i ] ) * $ r e s o l u t i o n ) - $ G _ e p s i l o n ) ; } } # # g d s e x p e c t s s q u a r e t o h a v e 5 c o o r d s ( c l o s u r e ) i f ( ( $ x y - > [ 0 ] ! = ( $ x y - > [ ( $ # $ x y - 1 ) ] ) ) | | ( $ x y - > [ 1 ] ! = ( $ x y - > [ $ # $ x y ] ) ) ) { i f ( $ x y - > [ 0 ] > = 0 ) { p u s h @ x y T m p , i n t ( ( ( $ x y - > [ 0 ] ) * $ r e s o l u t i o n ) + $ G _ e p s i l o n ) ; } e l s e { p u s h @ x y T m p , i n t ( ( ( $ x y - > [ 0 ] ) * $ r e s o l u t i o n ) - $ G _ e p s i l o n ) ; } i f ( $ x y - > [ 1 ] > = 0 ) { p u s h @ x y T m p , i n t ( ( ( $ x y - > [ 1 ] ) * $ r e s o l u t i o n ) + $ G _ e p s i l o n ) ; } e l s e { p u s h @ x y T m p , i n t ( ( ( $ x y - > [ 1 ] ) * $ r e s o l u t i o n ) - $ G _ e p s i l o n ) ; } } $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' X Y ' , - d a t a = > \ @ x y T m p ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' E N D E L ' ) ; } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 2 p r i n t S r e f - p r i n t s a g d s 2 S t r u c t u r e R E F e r e n c e u s a g e : $ g d s 2 F i l e - > p r i n t S r e f ( - n a m e = > s t r i n g , # # N a m e o f s t r u c t u r e - x y = > \ @ a r r a y , # # a r r a y o f r e a l s - x y I n t = > \ @ a r r a y , # # a r r a y o f i n t e r n a l i n t s ( o p t i o n a l - w k s b e t t e r t h a n - x y i f y o u a r e m o d i f y i n g a n e x i s t i n g G D S 2 f i l e ) - a n g l e = > # . # , # # ( o p t i o n a l ) D e f a u l t i s 0 . 0 - m a g = > # . # , # # ( o p t i o n a l ) D e f a u l t i s 1 . 0 - r e f l e c t = > 0 | 1 # # ( o p t i o n a l )

    Page 9 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    10/46

    ) ; n o t e : b e s t n o t t o s p e c i f y a n g l e o r m a g i f n o t n e e d e d = c u t # < S R E F > : : = S R E F [ E L F L A G S ] [ P L E X ] S N A M E [ < s t r a n s > ] X Y # < s t r a n s > : : = S T R A N S [ M A G ] [ A N G L E ] # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # s u b p r i n t S r e f # : P r o f i l e d { m y ( $ s e l f , % a r g ) = @ _ ; m y $ u s e S T R A N S = F A L S E ; m y $ r e s o l u t i o n = $ s e l f - > { ' R e s o l u t i o n ' } ; m y $ s n a m e = $ a r g { ' - n a m e ' } ; i f ( ! d e f i n e d $ s n a m e ) { d i e " p r i n t S r e f e x p e c t s a n a m e s t r i n g . M i s s i n g - n a m e = > ' t e x t ' $ ! " ; } # # # # - x y I n t m o s t u s e f u l i f r e a d i n g a n d m o d i f y i n g . . . - x y i f c r e a t i n g f r o m s c r a t c h m y $ x y I n t = $ a r g { ' - x y I n t ' } ; # # $ x y I n t s h o u l d b e a r e f e r e n c e t o a n a r r a y o f i n t e r n a l G D S 2 f o r m a t i n t e g e r s m y $ x y = $ a r g { ' - x y ' } ; # # $ x y s h o u l d b e a r e f e r e n c e t o a n a r r a y o f r e a l s i f ( ! ( ( d e f i n e d $ x y ) | | ( d e f i n e d $ x y I n t ) ) ) { d i e " p r i n t S r e f e x p e c t s a n x y a r r a y r e f e r e n c e . M i s s i n g - x y = > \ \ \ @ a r r a y $ ! " ; } i f ( d e f i n e d $ x y I n t ) { $ x y = $ x y I n t ; $ r e s o l u t i o n = 1 ; } $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' S R E F ' ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' S N A M E ' , - d a t a = > $ s n a m e ) ; m y $ r e f l e c t = $ a r g { ' - r e f l e c t ' } ; i f ( ( ! d e f i n e d $ r e f l e c t ) | | ( $ r e f l e c t < = 0 ) ) { $ r e f l e c t = 0 ; } e l s e { $ r e f l e c t = 1 ; $ u s e S T R A N S = T R U E ; } m y $ m a g = $ a r g { ' - m a g ' } ; i f ( ( ! d e f i n e d $ m a g ) | | ( $ m a g < = 0 ) ) { $ m a g = 0 ; } e l s e { $ u s e S T R A N S = T R U E ; } m y $ a n g l e = $ a r g { ' - a n g l e ' } ; i f ( ! d e f i n e d $ a n g l e ) { $ a n g l e = 0 ; } e l s e {

    $ a n g l e = p o s A n g l e ( $ a n g l e ) ; $ u s e S T R A N S = T R U E ; } i f ( $ u s e S T R A N S ) { m y $ d a t a = $ r e f l e c t . ' 0 ' x 1 5 ; # # 1 6 ' b i t ' s t r i n g $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' S T R A N S ' , - d a t a = > $ d a t a ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' M A G ' , - d a t a = > $ m a g ) i f ( $ m a g ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' A N G L E ' , - d a t a = > $ a n g l e ) i f ( $ a n g l e ) ; } m y @ x y T m p = ( ) ; # # d o n ' t p o l l u t e a r r a y p a s s e d i n f o r ( m y $ i = 0 ; $ i < = $ # $ x y ; $ i + + ) # # e . g . 3 . 4 i n - > 3 4 0 0 o u t { i f ( $ x y - > [ $ i ] > = 0 ) { p u s h @ x y T m p , i n t ( ( ( $ x y - > [ $ i ] ) * $ r e s o l u t i o n ) + $ G _ e p s i l o n ) ; } e l s e { p u s h @ x y T m p , i n t ( ( ( $ x y - > [ $ i ] ) * $ r e s o l u t i o n ) - $ G _ e p s i l o n ) ; } } $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' X Y ' , - d a t a = > \ @ x y T m p ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' E N D E L ' ) ; } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 2 p r i n t A r e f - p r i n t s a g d s 2 A r r a y R E F e r e n c e u s a g e : $ g d s 2 F i l e - > p r i n t A r e f ( - n a m e = > s t r i n g , # # N a m e o f s t r u c t u r e - c o l u m n s = > # , # # D e f a u l t i s 1 - r o w s = > # , # # D e f a u l t i s 1 - x y = > \ @ a r r a y , # # a r r a y o f r e a l s - x y I n t = > \ @ a r r a y , # # a r r a y o f i n t e r n a l i n t s ( o p t i o n a l - w k s b e t t e r i f y o u a r e m o d i f y i n g a n e x i s t i n g G D S 2 f i l e ) - a n g l e = > # . # , # # ( o p t i o n a l ) D e f a u l t i s 0 . 0 - m a g = > # . # , # # ( o p t i o n a l ) D e f a u l t i s 1 . 0 - r e f l e c t = > 0 | 1 # # ( o p t i o n a l ) ) ; n o t e : b e s t n o t t o s p e c i f y a n g l e o r m a g i f n o t n e e d e d = c u t # < A R E F > : : = A R E F [ E L F L A G S ] [ P L E X ] S N A M E [ < s t r a n s > ] C O L R O W X Y # < s t r a n s > : : = S T R A N S [ M A G ] [ A N G L E ] # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # s u b p r i n t A r e f # : P r o f i l e d {

    Page 10 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    11/46

    m y ( $ s e l f , % a r g ) = @ _ ; m y $ u s e S T R A N S = F A L S E ; m y $ r e s o l u t i o n = $ s e l f - > { ' R e s o l u t i o n ' } ; m y $ s n a m e = $ a r g { ' - n a m e ' } ; i f ( ! d e f i n e d $ s n a m e ) { d i e " p r i n t A r e f e x p e c t s a s n a m e s t r i n g . M i s s i n g - n a m e = > ' t e x t ' $ ! " ; } # # # # - x y I n t m o s t u s e f u l i f r e a d i n g a n d m o d i f y i n g . . . - x y i f c r e a t i n g f r o m s c r a t c h m y $ x y I n t = $ a r g { ' - x y I n t ' } ; # # $ x y I n t s h o u l d b e a r e f e r e n c e t o a n a r r a y o f i n t e r n a l G D S 2 f o r m a t i n t e g e r s m y $ x y = $ a r g { ' - x y ' } ; # # $ x y s h o u l d b e a r e f e r e n c e t o a n a r r a y o f r e a l s i f ( ! ( ( d e f i n e d $ x y ) | | ( d e f i n e d $ x y I n t ) ) ) { d i e " p r i n t A r e f e x p e c t s a n x y a r r a y r e f e r e n c e . M i s s i n g - x y = > \ \ \ @ a r r a y $ ! " ; } i f ( d e f i n e d $ x y I n t ) { $ x y = $ x y I n t ; $ r e s o l u t i o n = 1 ; } $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' A R E F ' ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' S N A M E ' , - d a t a = > $ s n a m e ) ; m y $ r e f l e c t = $ a r g { ' - r e f l e c t ' } ; i f ( ( ! d e f i n e d $ r e f l e c t ) | | ( $ r e f l e c t < = 0 ) ) { $ r e f l e c t = 0 ; } e l s e { $ r e f l e c t = 1 ; $ u s e S T R A N S = T R U E ; } m y $ m a g = $ a r g { ' - m a g ' } ; i f ( ( ! d e f i n e d $ m a g ) | | ( $ m a g < = 0 ) ) { $ m a g = 0 ; } e l s e { $ u s e S T R A N S = T R U E ; } m y $ a n g l e = $ a r g { ' - a n g l e ' } ; i f ( ! d e f i n e d $ a n g l e ) { $ a n g l e = 0 ; } e l s e { $ a n g l e = p o s A n g l e ( $ a n g l e ) ; $ u s e S T R A N S = T R U E ; } i f ( $ u s e S T R A N S ) { m y $ d a t a = $ r e f l e c t . ' 0 ' x 1 5 ; # # 1 6 ' b i t ' s t r i n g $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' S T R A N S ' , - d a t a = > $ d a t a ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' M A G ' , - d a t a = > $ m a g ) i f ( $ m a g ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' A N G L E ' , - d a t a = > $ a n g l e ) i f ( $ a n g l e ) ; } m y $ c o l u m n s = $ a r g { ' - c o l u m n s ' } ; i f ( ( ! d e f i n e d $ c o l u m n s ) | | ( $ c o l u m n s < = 0 ) ) { $ c o l u m n s = 1 ; } e l s e { $ c o l u m n s = i n t ( $ c o l u m n s ) ; } m y $ r o w s = $ a r g { ' - r o w s ' } ; i f ( ( ! d e f i n e d $ r o w s ) | | ( $ r o w s < = 0 ) ) { $ r o w s = 1 ; } e l s e { $ r o w s = i n t ( $ r o w s ) ; } $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' C O L R O W ' , - d a t a = > [ $ c o l u m n s , $ r o w s ] ) ; m y @ x y T m p = ( ) ; # # d o n ' t p o l l u t e a r r a y p a s s e d i n f o r ( m y $ i = 0 ; $ i < = $ # $ x y ; $ i + + ) # # e . g . 3 . 4 i n - > 3 4 0 0 o u t { i f ( $ x y - > [ $ i ] > = 0 ) { p u s h @ x y T m p , i n t ( ( ( $ x y - > [ $ i ] ) * $ r e s o l u t i o n ) + $ G _ e p s i l o n ) ; } e l s e { p u s h @ x y T m p , i n t ( ( ( $ x y - > [ $ i ] ) * $ r e s o l u t i o n ) - $ G _ e p s i l o n ) ; } } $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' X Y ' , - d a t a = > \ @ x y T m p ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' E N D E L ' ) ; } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 2 p r i n t T e x t - p r i n t s a g d s 2 T e x t u s a g e : $ g d s 2 F i l e - > p r i n t T e x t ( - s t r i n g = > s t r i n g , - l a y e r = > # , # # D e f a u l t i s 0 - t e x t T y p e = > # , # # D e f a u l t i s 0 - f o n t = > # , # # 0 - 3 - t o p , o r - m i d d l e , - b o t t o m , # # o p t i o n a l v e r t i c a l p r e s e n t a t i o n - l e f t , o r - c e n t e r , o r - r i g h t , # # o p t i o n a l h o r i z o n t a l p r e s e n t a t i o n - x y = > \ @ a r r a y , # # a r r a y o f r e a l s - x y I n t = > \ @ a r r a y , # # a r r a y o f i n t e r n a l i n t s ( o p t i o n a l - w k s b e t t e r i f y o u a r e m o d i f y i n g a n e x i s t i n g G D S 2 f i l e ) - x = > # . # , # # o p t i o n a l w a y o f p a s s i n g i n x v a l u e - y = > # . # , # # o p t i o n a l w a y o f p a s s i n g i n y v a l u e - a n g l e = > # . # , # # ( o p t i o n a l ) D e f a u l t i s 0 . 0 - m a g = > # . # , # # ( o p t i o n a l ) D e f a u l t i s 1 . 0 - r e f l e c t = > # , # # ( o p t i o n a l ) D e f a u l t i s 0

    Page 11 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    12/46

    ) ; n o t e : b e s t n o t t o s p e c i f y r e f l e c t , a n g l e o r m a g i f n o t n e e d e d = c u t # < t e x t > : : = T E X T [ E L F L A G S ] [ P L E X ] L A Y E R < t e x t b o d y > # < t e x t b o d y > : : = T E X T T Y P E [ P R E S E N T A T I O N ] [ P A T H T Y P E ] [ W I D T H ] [ < s t r a n s > ] X Y S T R I N G # < s t r a n s > : : = S T R A N S [ M A G ] [ A N G L E ] # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # s u b p r i n t T e x t # : P r o f i l e d { m y ( $ s e l f , % a r g ) = @ _ ; m y $ u s e S T R A N S = F A L S E ; m y $ s t r i n g = $ a r g { ' - s t r i n g ' } ; i f ( ! d e f i n e d $ s t r i n g ) { d i e " p r i n t T e x t e x p e c t s a s t r i n g . M i s s i n g - s t r i n g = > ' t e x t ' $ ! " ; } m y $ r e s o l u t i o n = $ s e l f - > { ' R e s o l u t i o n ' } ; m y $ x = $ a r g { ' - x ' } ; m y $ y = $ a r g { ' - y ' } ; # # # # - x y I n t m o s t u s e f u l i f r e a d i n g a n d m o d i f y i n g . . . - x y i f c r e a t i n g f r o m s c r a t c h m y $ x y I n t = $ a r g { ' - x y I n t ' } ; # # $ x y I n t s h o u l d b e a r e f e r e n c e t o a n a r r a y o f i n t e r n a l G D S 2 f o r m a t i n t e g e r s m y $ x y = $ a r g { ' - x y ' } ; # # $ x y s h o u l d b e a r e f e r e n c e t o a n a r r a y o f r e a l s i f ( d e f i n e d $ x y I n t ) { $ x y = $ x y I n t ; $ r e s o l u t i o n = 1 ; } i f ( d e f i n e d $ x y ) { $ x = $ x y - > [ 0 ] ; $ y = $ x y - > [ 1 ] ; } m y $ x 2 = $ a r g { ' - x ' } ; i f ( d e f i n e d $ x 2 ) { $ x = $ x 2 ; } i f ( ! d e f i n e d $ x ) {

    d i e " p r i n t T e x t e x p e c t s a x c o o r d . M i s s i n g - x y = > \ @ a r r a y o r - x = > ' n u m ' $ ! " ; } i f ( $ x > = 0 ) { $ x = i n t ( ( $ x * $ r e s o l u t i o n ) + $ G _ e p s i l o n ) ; } e l s e { $ x = i n t ( ( $ x * $ r e s o l u t i o n ) - $ G _ e p s i l o n ) ; } m y $ y 2 = $ a r g { ' - y ' } ; i f ( d e f i n e d $ y 2 ) { $ y = $ y 2 ; } i f ( ! d e f i n e d $ y ) { d i e " p r i n t T e x t e x p e c t s a y c o o r d . M i s s i n g - x y = > \ @ a r r a y o r - y = > ' n u m ' $ ! " ; } i f ( $ y > = 0 ) { $ y = i n t ( ( $ y * $ r e s o l u t i o n ) + $ G _ e p s i l o n ) ; } e l s e { $ y = i n t ( ( $ y * $ r e s o l u t i o n ) - $ G _ e p s i l o n ) ; } m y $ l a y e r = $ a r g { ' - l a y e r ' } ; i f ( ! d e f i n e d $ l a y e r ) { $ l a y e r = 0 ; } m y $ t e x t T y p e = $ a r g { ' - t e x t T y p e ' } ; i f ( ! d e f i n e d $ t e x t T y p e ) { $ t e x t T y p e = 0 ; } m y $ r e f l e c t = $ a r g { ' - r e f l e c t ' } ; i f ( ( ! d e f i n e d $ r e f l e c t ) | | ( $ r e f l e c t < = 0 ) ) { $ r e f l e c t = 0 ; } e l s e { $ r e f l e c t = 1 ; $ u s e S T R A N S = T R U E ; } m y $ f o n t = $ a r g { ' - f o n t ' } ; i f ( ( ! d e f i n e d $ f o n t ) | | ( $ f o n t < 0 ) | | ( $ f o n t > 3 ) ) { $ f o n t = 0 ; } $ f o n t = s p r i n t f ( " % 0 2 d " , $ f o n t ) ; m y $ v e r t i c a l ; m y $ t o p = $ a r g { ' - t o p ' } ; m y $ m i d d l e = $ a r g { ' - m i d d l e ' } ; m y $ b o t t o m = $ a r g { ' - b o t t o m ' } ; i f ( d e f i n e d $ t o p ) { $ v e r t i c a l = ' 0 0 ' ; } e l s i f ( d e f i n e d $ b o t t o m ) { $ v e r t i c a l = ' 1 0 ' ; } e l s e { $ v e r t i c a l = ' 0 1 ' ; } # # m i d d l e m y $ h o r i z o n t a l ; m y $ l e f t = $ a r g { ' - l e f t ' } ; m y $ c e n t e r = $ a r g { ' - c e n t e r ' } ; m y $ r i g h t = $ a r g { ' - r i g h t ' } ; i f ( d e f i n e d $ l e f t ) { $ h o r i z o n t a l = ' 0 0 ' ; } e l s i f ( d e f i n e d $ r i g h t ) { $ h o r i z o n t a l = ' 1 0 ' ; } e l s e { $ h o r i z o n t a l = ' 0 1 ' ; } # # c e n t e r m y $ p r e s S t r i n g = ' 0 ' x 1 0 ; $ p r e s S t r i n g . = " $ f o n t $ v e r t i c a l $ h o r i z o n t a l " ;

    Page 12 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    13/46

    m y $ m a g = $ a r g { ' - m a g ' } ; i f ( ( ! d e f i n e d $ m a g ) | | ( $ m a g < = 0 ) ) { $ m a g = 0 ; } m y $ a n g l e = $ a r g { ' - a n g l e ' } ; i f ( ! d e f i n e d $ a n g l e ) { $ a n g l e = 0 ; } e l s e { $ a n g l e = p o s A n g l e ( $ a n g l e ) ; } $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' T E X T ' ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' L A Y E R ' , - d a t a = > $ l a y e r ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' T E X T T Y P E ' , - d a t a = > $ t e x t T y p e ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' P R E S E N T A T I O N ' , - d a t a = > $ p r e s S t r i n g ) i f ( d e f i n e d $ f o n t | | d e f i n e d $ t o p | | d e f i n e d $ m i d d l e | | d e f i n e d $ b o t t o m | | d e f i n e d $ b o t t o m | | d e f i n e d $ l e f

    i f ( $ u s e S T R A N S ) { m y $ d a t a = $ r e f l e c t . ' 0 ' x 1 5 ; # # 1 6 ' b i t ' s t r i n g $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' S T R A N S ' , - d a t a = > $ d a t a ) ; } $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' M A G ' , - d a t a = > $ m a g ) i f ( $ m a g ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' A N G L E ' , - d a t a = > $ a n g l e ) i f ( $ a n g l e ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' X Y ' , - d a t a = > [ $ x , $ y ] ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' S T R I N G ' , - d a t a = > $ s t r i n g ) ; $ s e l f - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' E N D E L ' ) ; } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 1 L o w L e v e l G e n e r i c W r i t e M e t h o d s = c u t # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 2 s a v e G d s 2 R e c o r d ( ) - l o w l e v e l m e t h o d t o c r e a t e a g d s 2 r e c o r d g i v e n r e c o r d t y p e a n d d a t a ( i f r e q u i r e d ) . D a t a o f m o r e t h a n o n e i t e m s h o u l d b e g i v e n a s a l i s t . N O T E : T H I S O N L Y U S E S G D S 2 O B J E C T T O G E T R E S O L U T I O N u s a g e : s a v e G d s 2 R e c o r d ( - t y p e = > s t r i n g , - d a t a = > d a t a _ I f _ N e e d e d , # # o p t i o n a l f o r s o m e t y p e s - s c a l e = > # . # , # # o p t i o n a l n u m b e r t o s c a l e d a t a t o . I . E - s c a l e = > 0 . 5 # d e f a u l t i s N O T t o s c a l e - s n a p = > # . # , # # o p t i o n a l n u m b e r t o s n a p d a t a t o I . E . - s n a p = > 0 . 0 0 5 # d e f a u l t i s 1 r e s o l u t i o n u n i t , t y p i c a l l y 0 . 0 0 1 ) ; e x a m p l e s : m y $ g d s 2 F i l e = n e w G D S 2 ( - f i l e N a m e = > " > $ f i l e N a m e " ) ; m y $ r e c o r d = $ g d s 2 F i l e - > s a v e G d s 2 R e c o r d ( - t y p e = > ' h e a d e r ' , - d a t a = > 3 ) ; $ g d s 2 F i l e O u t - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' r e c o r d ' , - d a t a = > $ r e c o r d ) ; = c u t s u b s a v e G d s 2 R e c o r d # : P r o f i l e d { m y ( $ s e l f , % a r g ) = @ _ ; m y $ r e c o r d = ' ' ; m y $ t y p e = $ a r g { ' - t y p e ' } ; i f ( ! d e f i n e d $ t y p e ) { d i e " s a v e G d s 2 R e c o r d e x p e c t s a t y p e n a m e . M i s s i n g - t y p e = > ' n a m e ' $ ! " ; } e l s e { $ t y p e = u c $ t y p e ; } m y $ s a v e E n d = $ \ ; $ \ = ' ' ; m y @ d a t a = $ a r g { ' - d a t a ' } ; m y $ d a t a S t r i n g = $ a r g { ' - a s c i i D a t a ' } ; d i e " s a v e G d s 2 R e c o r d c a n n o t h a n d l e b o t h - d a t a a n d - a s c i i D a t a o p t i o n s $ ! " i f ( ( d e f i n e d $ d a t a S t r i n g ) & & ( ( d e f i n e d $ d a t a [ 0 ] ) & & ( $ d a t a [ 0 ] n e ' ' ) ) ) ; m y $ d a t a = ' ' ; i f ( $ t y p e e q ' R E C O R D ' ) # # s p e c i a l c a s e . . . { r e t u r n $ d a t a [ 0 ] ; } e l s e { m y $ n u m D a t a E l e m e n t s = 0 ; m y $ r e s o l u t i o n = $ s e l f - > { ' R e s o l u t i o n ' } ; m y $ s c a l e = $ a r g { ' - s c a l e ' } ; i f ( ! d e f i n e d $ s c a l e ) { $ s c a l e = 1 ; } i f ( $ s c a l e < = 0 ) { d i e " s a v e G d s 2 R e c o r d e x p e c t s a p o s i t i v e s c a l e - s c a l e = > $ s c a l e $ ! " ; } m y $ s n a p = $ a r g { ' - s n a p ' } ; i f ( ! d e f i n e d $ s n a p ) # # d e f a u l t i s o n e r e s o l u t i o n u n i t { $ s n a p = 1 ;

    Page 13 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    14/46

    } e l s e { $ s n a p = $ s n a p * $ r e s o l u t i o n ; # # i . e . 0 . 0 0 1 - > 1 } i f ( $ s n a p < 1 ) { d i e " s a v e G d s 2 R e c o r d e x p e c t s a s n a p > = 1 / r e s o l u t i o n - s n a p = > $ s n a p $ ! " ; } i f ( ( d e f i n e d $ d a t a [ 0 ] ) & & ( $ d a t a [ 0 ] n e ' ' ) ) { $ d a t a = $ d a t a [ 0 ] ; $ n u m D a t a E l e m e n t s = @ $ d a t a ; i f ( $ n u m D a t a E l e m e n t s ) # # p a s s e d i n a n o n y m o u s a r r a y { @ d a t a = @ $ d a t a ; # # d e r e f } e l s e { $ n u m D a t a E l e m e n t s = @ d a t a ; } } m y $ r e c o r d D a t a T y p e = $ R e c o r d T y p e D a t a { $ t y p e } ; i f ( d e f i n e d $ d a t a S t r i n g ) { $ d a t a S t r i n g = ~ s | ^ \ s + | | ; # # c l e a n - u p $ d a t a S t r i n g = ~ s | \ s + $ | | ; $ d a t a S t r i n g = ~ s | \ s + | | g i f ( $ d a t a S t r i n g ! ~ m | ' | ) ; # # d o n ' t c o m p r e s s s p a c e s i n s t r i n g s . . . $ d a t a S t r i n g = ~ s | ' $ | | ; # ' f o r s t r i n g s $ d a t a S t r i n g = ~ s | ^ ' | | ; # ' f o r s t r i n g s i f ( ( $ r e c o r d D a t a T y p e = = B I T _ A R R A Y ) | | ( $ r e c o r d D a t a T y p e = = A C S I I _ S T R I N G ) ) { $ d a t a = $ d a t a S t r i n g ; } e l s e { $ d a t a S t r i n g = ~ s | \ s * [ \ s , ; : / \ \ ] + \ s * | | g ; # # i n c a s e c o m m a s e t c . . . ( n o n - s t d ) w e r e a d d e d b y h a n d @ d a t a = s p l i t ( ' ' , $ d a t a S t r i n g ) ; $ n u m D a t a E l e m e n t s = @ d a t a ; i f ( $ r e c o r d D a t a T y p e = = I N T E G E R _ 4 ) { m y @ x y T m p = ( ) ; f o r ( m y $ i = 0 ; $ i < $ n u m D a t a E l e m e n t s ; $ i + + ) # # e . g . 3 . 4 i n - > 3 4 0 0 o u t { i f ( $ d a t a [ $ i ] > = 0 ) { p u s h @ x y T m p , i n t ( ( ( $ d a t a [ $ i ] ) * $ r e s o l u t i o n ) + $ G _ e p s i l o n ) ; } e l s e { p u s h @ x y T m p , i n t ( ( ( $ d a t a [ $ i ] ) * $ r e s o l u t i o n ) - $ G _ e p s i l o n ) ; } } @ d a t a = @ x y T m p ; } } } m y $ b y t e ; m y $ l e n g t h = 0 ; i f ( $ r e c o r d D a t a T y p e = = B I T _ A R R A Y ) { $ l e n g t h = 2 ; } e l s i f ( $ r e c o r d D a t a T y p e = = I N T E G E R _ 2 ) { $ l e n g t h = 2 * $ n u m D a t a E l e m e n t s ; } e l s i f ( $ r e c o r d D a t a T y p e = = I N T E G E R _ 4 ) { $ l e n g t h = 4 * $ n u m D a t a E l e m e n t s ; } e l s i f ( $ r e c o r d D a t a T y p e = = R E A L _ 8 ) { $ l e n g t h = 8 * $ n u m D a t a E l e m e n t s ; } e l s i f ( $ r e c o r d D a t a T y p e = = A C S I I _ S T R I N G ) { m y $ s l e n = l e n g t h $ d a t a ; $ l e n g t h = $ s l e n + ( $ s l e n % 2 ) ; # # n e e d s t o b e a n e v e n n u m b e r }

    m y $ r e c o r d L e n g t h = p a c k ' S ' , ( $ l e n g t h + 4 ) ; # 1 2 b y t e s f o r l e n g t h 3 r d f o r r e c o r d T y p e 4 t h f o r d a t a T y p e $ r e c o r d . = $ r e c o r d L e n g t h ; m y $ r e c o r d T y p e = p a c k ' C ' , $ R e c o r d T y p e N u m b e r s { $ t y p e } ; $ r e c o r d . = $ r e c o r d T y p e ; m y $ d a t a T y p e = p a c k ' C ' , $ R e c o r d T y p e D a t a { $ t y p e } ; $ r e c o r d . = $ d a t a T y p e ; i f ( $ r e c o r d D a t a T y p e = = B I T _ A R R A Y ) # # b i t a r r a y { m y $ b i t L e n g t h = $ l e n g t h * 8 ; $ r e c o r d . = p a c k ( " B $ b i t L e n g t h " , $ d a t a ) ; } e l s i f ( $ r e c o r d D a t a T y p e = = I N T E G E R _ 2 ) # # 2 b y t e s i g n e d i n t e g e r { f o r e a c h m y $ n u m ( @ d a t a ) { $ r e c o r d . = p a c k ( ' s ' , $ n u m ) ; } } e l s i f ( $ r e c o r d D a t a T y p e = = I N T E G E R _ 4 ) # # 4 b y t e s i g n e d i n t e g e r { f o r e a c h m y $ n u m ( @ d a t a ) { $ n u m = s c a l e N u m ( $ n u m , $ s c a l e ) i f ( $ s c a l e ! = 1 ) ;

    $ n u m = s n a p N u m ( $ n u m , $ s n a p ) i f ( $ s n a p ! = 1 ) ; $ r e c o r d . = p a c k ( ' i ' , $ n u m ) ; }

    Page 14 of 46

    6/21/2011http://cpansearch.perl.org/src/SCHUMACK/GDS2-3.00/lib/GDS2.pm

  • 8/6/2019 Cpansearch.perl.Org Src SCHUMACK GDS2-3.00 Lib GDS2.Pm

    15/46

    } e l s i f ( $ r e c o r d D a t a T y p e = = R E A L _ 8 ) # # 8 b y t e r e a l { f o r e a c h m y $ n u m ( @ d a t a ) { m y $ r e a l = $ n u m ; m y $ n e g a t i v e = F A L S E ; i f ( $ n u m < 0 . 0 ) { $ n e g a t i v e = T R U E ; $ r e a l = 0 - $ n u m ; } m y $ e x p o n e n t = 0 ; w h i l e ( $ r e a l > = 1 . 0 ) { $ e x p o n e n t + + ; $ r e a l = ( $ r e a l / 1 6 . 0 ) ; } i f ( $ r e a l ! = 0 ) { w h i l e ( $ r e a l < 0 . 0 6 2 5 ) { - - $ e x p o n e n t ; $ r e a l = ( $ r e a l * 1 6 . 0 ) ; } } i f ( $ n e g a t i v e ) { $ e x p o n e n t + = 1 9 2 ; } e l s e { $ e x p o n e n t + = 6 4 ; } $ r e c o r d . = p a c k ( ' C ' , $ e x p o n e n t ) ; f o r ( m y $ i = 1 ; $ i < = 7 ; $ i + + ) { i f ( $ r e a l > = 0 ) { $ b y t e = i n t ( ( $ r e a l * 2 5 6 . 0 ) + $ G _ e p s i l o n ) ; } e l s e { $ b y t e = i n t ( ( $ r e a l * 2 5 6 . 0 ) - $ G _ e p s i l o n ) ; } $ r e c o r d . = p a c k ( ' C ' , $ b y t e ) ; $ r e a l = $ r e a l * 2 5 6 . 0 - ( $ b y t e + 0 . 0 ) ; } } } e l s i f ( $ r e c o r d D a t a T y p e = = A C S I I _ S T R I N G ) # # a s c i i s t r i n g ( n u l l p a d d e d ) {

    $ r e c o r d . = p a c k ( " a $ l e n g t h " , $ d a t a ) ; } } $ \ = $ s a v e E n d ; $ r e c o r d ; } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # = h e a d 2 p r i n t G d s 2 R e c o r d ( ) - l o w l e v e l m e t h o d t o p r i n t a g d s 2 r e c o r d g i v e n r e c o r d t y p e a n d d a t a ( i f r e q u i r e d ) . D a t a o f m o r e t h a n o n e i t e m s h o u l d b e g i v e n a s a l i s t . u s a g e : p r i n t G d s 2 R e c o r d ( - t y p e = > s t r i n g , - d a t a = > d a t a _ I f _ N e e d e d , # # o p t i o n a l f o r s o m e t y p e s - s c a l e = > # . # , # # o p t i o n a l n u m b e r t o s c a l e d a t a t o . I . E - s c a l e = > 0 . 5 # d e f a u l t i s N O T t o s c a l e - s n a p = > # . # , # # o p t i o n a l n u m b e r t o s n a p d a t a t o I . E . - s n a p = > 0 . 0 0 5 # d e f a u l t i s 1 r e s o l u t i o n u n i t , t y p i c a l l y 0 . 0 0 1 ) ; e x a m p l e s : m y $ g d s 2 F i l e = n e w G D S 2 ( - f i l e N a m e = > " > $ f i l e N a m e " ) ; $ g d s 2 F i l e - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' h e a d e r ' , - d a t a = > 3 ) ; $ g d s 2 F i l e - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' b g n l i b ' , - d a t a = > [ 9 9 , 1 2 , 1 , 2 2 , 3 3 , 0 , 9 9 , 1 2 , 1 , 2 2 , 3 3 , 9 ] ) ; $ g d s 2 F i l e - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' l i b n a m e ' , - d a t a = > " t e s t l i b " ) ; $ g d s 2 F i l e - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' u n i t s ' , - d a t a = > [ 0 . 0 0 1 , 1 e - 9 ] ) ; $ g d s 2 F i l e - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' b g n s t r ' , - d a t a = > [ 9 9 , 1 2 , 1 , 2 2 , 3 3 , 0 , 9 9 , 1 2 , 1 , 2 2 , 3 3 , 9 ] ) ; . . . $ g d s 2 F i l e - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' e n d s t r ' ) ; $ g d s 2 F i l e - > p r i n t G d s 2 R e c o r d ( - t y p e = > ' e n d l i b ' ) ; N o t e : t h e s p e c i a l r e c o r d t y p e o f ' r e c o r d ' c a n b e