diff options
author | Joe Hunkeler <jhunkeler@gmail.com> | 2015-08-11 16:51:37 -0400 |
---|---|---|
committer | Joe Hunkeler <jhunkeler@gmail.com> | 2015-08-11 16:51:37 -0400 |
commit | 40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch) | |
tree | 4464880c571602d54f6ae114729bf62a89518057 /pkg/tbtables/cfitsio/fitsio.ps | |
download | iraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz |
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'pkg/tbtables/cfitsio/fitsio.ps')
-rw-r--r-- | pkg/tbtables/cfitsio/fitsio.ps | 9852 |
1 files changed, 9852 insertions, 0 deletions
diff --git a/pkg/tbtables/cfitsio/fitsio.ps b/pkg/tbtables/cfitsio/fitsio.ps new file mode 100644 index 00000000..ec62e304 --- /dev/null +++ b/pkg/tbtables/cfitsio/fitsio.ps @@ -0,0 +1,9852 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software +%%Title: fitsio.dvi +%%Pages: 132 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -N0 fitsio +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 2004.12.03:1404 +%%BeginProcSet: texc.pro +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +TeXDict begin 40258431 52099146 1000 600 600 (fitsio.dvi) +@start +%DVIPSBitmapFont: Fa cmmi10 10.95 1 +/Fa 1 63 df<126012F8B4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01 +FF9038007FC0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1F +F0EE07FCEE01FF9338007FC0EF1FF0EF07F8EF01FCA2EF07F8EF1FF0EF7FC0933801FF00 +EE07FCEE1FF0EE7FC04B48C7FCED07FCED1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC049 +48C9FCEB07FCEB1FF0EB7FC04848CAFCEA07FCEA1FF0EA7FC048CBFC12FC1270363678B1 +47>62 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fb cmbx12 12 58 +/Fb 58 122 df<ED0FFF4AB512C0020F14F0027F80903A01FFF803FC499038C000FE010F +EB00034948497E49485B5C495A4C138001FF6E13005CA3705AEE01F893C8FCA74BB51280 +B9FCA5C69038E00003B3B0007FD9FFC1B6FCA538467EC53E>12 D<B612F8A91D097F9A25 +>45 D<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F0F788E1F +>I<EE01C0EE03E01607A2160F17C0161F1780A2163F17005E167EA216FE5E15015EA215 +035EA215075E150F5EA2151F5E153F93C7FCA25D157E15FE5DA214015D14035DA214075D +140F5DA2141F5D143F92C8FCA25C147EA214FE5C13015CA213035C13075CA2130F5C131F +5CA2133F91C9FC5B137EA213FE5B12015BA212035BA212075B120F5BA2121F5B123F90CA +FCA25A127E12FE5AA25A12782B647ACA38>I<EC03C01407141F147FEB03FF133FB6FCA4 +13C3EA0003B3B3ADB712FCA5264177C038>49 D<ECFFE0010F13FE013F6D7E90B612E000 +0315F82607FC0313FE3A0FE0007FFFD81F806D138048C7000F13C0488001C015E001F07F +00FF6E13F07F17F881A46C5A6C5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1F +FC4B5A5E4B5A4B5A4A90C7FC4A5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8 +D907E014F0495A495A49C8FC017C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D +417BC038>I<ECFFF0010713FF011F14C0017F14F049C66C7ED803F8EB3FFED807E06D7E +81D80FF86D138013FE001F16C07FA66C5A6C4815806C485BC814005D5E4B5A4B5A4B5A4A +5B020F1380902607FFFEC7FC15F815FF16C090C713F0ED3FFCED0FFEEEFF80816F13C017 +E0A26F13F0A217F8A3EA0FC0EA3FF0487EA2487EA217F0A25D17E06C5A494913C05BD83F +80491380D81FF0491300D80FFEEBFFFE6CB612F800015D6C6C14C0011F49C7FC010113E0 +2D427BC038>I<163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F +87EC1F07143E147E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A48 +5A485A120F5B48C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038 +>I<0007150301E0143F01FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0 +C9FCAAEC3FF001C1B5FC01C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D +13804915C0497F6C4815E0C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D +6C4815E05B007EC74813C0123E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6C +B612F0C65D013F1480010F01FCC7FC010113C02D427BC038>I<4AB47E021F13F0027F13 +FC49B6FC01079038807F8090390FFC001FD93FF014C04948137F4948EBFFE048495A5A14 +00485A120FA248486D13C0EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000 +FF017F13E091B512F89039F9F01FFC9039FBC007FE9039FF8003FF17804A6C13C05B6F13 +E0A24915F0A317F85BA4127FA5123FA217F07F121FA2000F4A13E0A26C6C15C06D491380 +6C018014006C6D485A6C9038E01FFC6DB55A011F5C010714C0010191C7FC9038003FF02D +427BC038>I<121E121F13FC90B712FEA45A17FC17F817F017E017C0A2481680007EC8EA +3F00007C157E5E00785D15014B5A00F84A5A484A5A5E151FC848C7FC157E5DA24A5A1403 +5D14074A5AA2141F5D143FA2147F5D14FFA25BA35B92C8FCA35BA55BAA6D5A6D5A6D5A2F +447AC238>I<EC7FF00103B5FC010F14C0013F14F090397F801FFC3A01FC0003FE48486D +7E497F4848EC7F80163F484815C0A2001F151FA27FA27F7F01FE143F6D158002C0137F02 +F014006C01FC5B6E485A6C9038FF83FCEDE7F86CECFFE06C5D6C92C7FC6D14C06D80010F +14F882013F8090B7FC48013F14802607FC0F14C0260FF80314E04848C6FC496D13F0003F +141F48481307496D13F8150000FF157F90C8123F161F160FA21607A36D15F0127F160F6D +15E06C6C141F6DEC3FC06C6CEC7F80D80FFE903801FF003A07FFC00FFE6C90B55AC615F0 +013F14C0010F91C7FC010013F02D427BC038>I<EC7FF0903807FFFE011F6D7E017F14E0 +9039FFE03FF0489038800FF848496C7E48488048486D7E001F80003F1680A2484815C081 +17E0A212FF17F0A617F8A45D127FA3003F5CA26C7E5D6C6C5B12076C6C133E6CEBC07C6C +EBFFF8013F5B010F01C013F00101130090C8FCA217E05DA2EA03C0D80FF015C0487E486C +491380A217004B5A150F5E49495A6C48495A01C0EBFFE0260FF0035B6CB65A6C4AC7FC6C +14F86C6C13E0D907FEC8FC2D427BC038>I<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7F +FCEA3FF8EA1FF0EA07C0C7FCAEEA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA +1FF0EA07C00F2C78AB1F>I<EE1F80A24C7EA24C7EA34C7EA24B7FA34B7FA24B7FA34B7F +169F031F80161F82033F80ED3E07037E80157C8203FC804B7E02018115F0820203814B13 +7F0207815D173F020F814B7F021F8292C77EA24A82023E80027E82027FB7FCA291B87EA2 +498302F0C8FCA20103834A157F0107834A153FA249488284011F8491C97E4984133E017E +82B6020FB612F0A54C457CC455>65 D<B9FC18F018FE727E19E026003FFCC700077F0501 +7F716C7E727E727EA2721380A37213C0A74E1380A24E1300A24E5A4E5A4E5A4D5B05075B +94B5128091B700FCC7FC18F018FF19E002FCC7000113F8716C7EF01FFE727E7213801AC0 +7213E0A27213F0A31AF8A71AF0A2601AE0604E13C0604E138095B5120005075BBA12F861 +19C04EC7FC18E045447CC350>I<DCFFF01470031F01FF14F04AB6EAE0010207EDF80302 +3FEDFE0791B539E001FF0F4949C7EA3F9F010701F0EC0FFF4901C0804990C87E49488149 +48814948167F4849163F4849161F5A4A160F485B19074890CAFC19035A5BA2007F1801A3 +4994C7FC12FFAE127F7F1AF0A2123FA27F6C18011AE06C7F19036C6D17C06E16077E6C6D +EE0F806C6DEE1F006D6C5E6D6C167E6D6C6C5D6D6D4A5A6D01F0EC07F0010101FEEC1FE0 +6D903AFFF001FF80023F90B6C7FC020715FC020115F0DA001F1480030001F8C8FC44467A +C451>I<B9FC18F018FE727E19E026003FFEC7001F13F805017F9438003FFF060F7F727F +727F727F84737E737EA2737EA2737EA21B80A2851BC0A51BE0AD1BC0A51B8061A21B0061 +62193F624F5A19FF624E5B06075B4E5B063F90C7FC4DB45A050F13F8BA5A19C04EC8FC18 +F095C9FC4B447CC356>I<BA12F8A485D8001F90C71201EF003F180F180318011800A219 +7E193EA3191EA21778A285A405F890C7FCA316011603161F92B5FCA5ED001F1603160116 +00A2F101E01778A2F103C0A494C7FC1907A21A80A2190FA2191FA2193FF17F0061601807 +181F4DB5FCBBFC61A443447DC34A>I<BA1280A419C026003FFEC7121F1701EF007F183F +181F180F180719E01803A31801A3EE01E0F000F0A419001603A31607160F167F91B6FCA5 +9138FE007F160F16071603A31601A693C9FCAFB712F0A53C447CC346>I<DCFFF0147003 +1F01FF14F04AB6EAE0010207EDF803023FEDFE0791B539E001FF0F4949C7EA3F9F010701 +F0EC0FFF4901C0804990C87E4948814948814948167F4849163F4849161F5A4A160F485B +19074890CAFC19035A5BA2007F1801A34994C8FC12FFAD057FB612F0127F7FA3003FDC00 +01EBF000A27F7EA26C7FA26C7F807E6C7F6C7F6D7E6D6C5D6D6C7E6D6D5C6D01F05C0101 +01FE143F6D903AFFF001FF9F023F90B6120F0207EDFC030201EDF000DA001F02C0133003 +0001FCC9FC4C467AC458>I<B7D88003B612FEA526003FFEC9EBF800B3A791B9FCA54AC9 +FCB3AAB7D88003B612FEA54F447CC358>I<B712E0A5D8001F90C7FCB3B3B3A4B712E0A5 +23447DC32A>I<B76C0103B512F8A526003FFEC93807E0004F5A4F5A077EC7FC614E5A4E +5A4E5AF01F804EC8FC187E604D5AEF07F0EF0FC04D5A4DC9FC177E4C5AEE03F04C5A4C5A +4C7EEE7FF04C7E5D4B7F4B7F4B7FED3F3FDB7E1F7F03FC806E486C7F4B7E4B6C7F038080 +4B6C7F4A7F717E84717F83717F85717F83717F85717F187F727E86727F84727F86727F84 +B76C90B612FCA54E447CC358>75 D<B712F0A526003FFECAFCB3B1F00780A4180F1900A4 +60A360A2187EA218FE170117031707171F177FEE03FFB95AA539447CC343>I<B500FE06 +7FB512806E95B6FCA26F5EA2D8003F50C7FC013D6DEE03DFA2013C6DEE079FA26E6CEE0F +1FA26E6C161EA26E6C163CA36E6C1678A26E6C16F0A26E6DEC01E0A26E6DEC03C0A36E6D +EC0780A26F6CEC0F00A26F6C141EA26F6C5CA36F6C5CA26F6C5CA26F6D485AA26F6D485A +A26F6D485AA3706C48C7FCA293383FF81EA2706C5AA2706C5AA3706C5AA2705BA2705BA2 +705BA2B6057FB6128071C7FCA2173E171C61447CC36A>I<B64BB512FE8181A281D8003F +6D91C7EA780081013D7F81133C6E7E6E7F6E7F6E7F6E7F82806E7F6E7F6F7E6F7F83816F +7F6F7F6F7F6F7F6F7F8382707F707F707F707F8482707F707F717E7113807113C019E083 +7113F07113F87113FC7113FE19FF847213F884848484A28484197F193F191FA2190F1907 +B61603190119001A78A24F447CC358>I<923807FFC092B512FE0207ECFFC0021F15F091 +267FFE0013FC902601FFF0EB1FFF01070180010313C04990C76C7FD91FFC6E6C7E49486F +7E49486F7E01FF8348496F7E48496F1380A248496F13C0A24890C96C13E0A24819F04982 +003F19F8A3007F19FC49177FA400FF19FEAD007F19FC6D17FFA3003F19F8A26D5E6C19F0 +A26E5D6C19E0A26C6D4B13C06C19806E5D6C6D4B13006C6D4B5A6D6C4B5A6D6C4B5A6D6C +4A5B6D01C001075B6D01F0011F5B010101FE90B5C7FC6D90B65A023F15F8020715C00200 +4AC8FC030713C047467AC454>I<B9FC18F018FE727E19E0D8001F90C7000F7F05017F71 +6C7E727E727E721380A21AC084A21AE0A91AC0A24E1380A21A00604E5A4E5A4D485A050F +5B92B712C096C7FC18FC18C092CBFCB3A7B712E0A543447DC34D>I<B812F8EFFFC018F8 +18FE727ED8001F90C7003F13E005037F05007F727E727E727EA28684A286A762A24E90C7 +FCA24E5A61187F943801FFF005075B053F138092B7C8FC18F818E018F892C77FEF3FFF05 +0F7F717F717FA2717FA2717FA785A61B0F85A2187F73131F72141EB700E06DEB803E72EB +E0FC72EBFFF8060114F0726C13E0CC0007138050457DC354>82 D<DAFFE0131C010701FE +133C013F9038FF807C90B6EAE0FC4815F9489038801FFF3907FC00014848EB007F484814 +3F4848140F491407007F15035B1601160012FF177CA27FA26D153C7F7F6D92C7FC6C7EEB +FFE014FE6CEBFFF015FF6C15E016FC6C816C6F7E6C826C826C6C81011F81010781130002 +0F80140003077FED007F82040F1380828212F082A282A27EA218007EA26C5D6C5E6D1403 +6D5D6D140701F84A5A01FFEC3FF002F8EBFFE0486CB65AD8FC1F92C7FCD8F80714FC48C6 +14F0480107138031467AC43E>I<003FBA12E0A59026FE000FEB8003D87FE09338003FF0 +49171F90C71607A2007E1803007C1801A300781800A400F819F8481978A5C81700B3B3A2 +0107B8FCA545437CC24E>I<B76C010FB512F8A526003FFEC93803E000B3B3A9011F1707 +6280190F6D606F151F6D95C7FC6D6D5D197E6D6D5D6D6D1403DA7FFC4A5A6EB4EC3FF002 +0F9039F003FFE06E90B61280020193C8FC6E6C14FC030F14E09226007FFEC9FC4D457CC3 +56>I<B792B6FCA526003FFECAEAFC00806D606F15016D608119036D606F15076D606F15 +0F6D6081191F6D6D93C7FC61027F163E6F157E023F167C8119FC6E6D5C18016E5E701303 +6E5E8218076E6D5C180F6E5E70131F6E93C8FC705B037F143E82187E033F147C7013FC6F +5C17816F5C17C117C36F5C17E76F5C17FF6F5CA36F91C9FCA2705AA2705AA3705AA2705A +A2705AA250457EC355>I<B600FE017FB691B512FEA526007FFCC8D83FFEC9EA7C006E82 +013F701778807415F86D705F6F7014016D705FA26F7014036D64814E6D14076D646F7014 +0F6D041E94C7FCA26F023E6D5C6DDC3C7F151E81027F037C6D5CF0783F6F70147C023F4B +6C1578A26F01016F13F86E4B6C5D16806E02036F485A4E7E04C0EEE0036E4A486C5DA2DC +E00FEDF0076E4B6C5D16F06E4A6F48C8FC051E7F04F8705A6E4A027F131EA2DCFC7CEDFE +3E037F0178023F133C04FE16FF033F01F85E4D8004FF17F86F496E5BA36F496E5BA26F60 +4D80A26F90C86C5BA36F486F90C9FCA26F48167EA30478163C6F457EC374>I<903801FF +E0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F +7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC01000313E0000F +1380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1F +FF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 +D<EB7FC0B5FCA512037EB1ED0FF892B57E02C314E002CF14F89139DFC03FFC9139FF000F +FE02FCEB03FF4A6D13804A15C04A6D13E05CEF7FF0A218F8173FA318FCAC18F8A2177F18 +F0A3EFFFE06E15C06E5B6E491380027C491300496C495A903AFC1FC07FFC496CB512F0D9 +F00314C049C691C7FCC8EA1FF036467DC43E>I<EC3FFC49B512C0010F14F0013F14FC90 +397FF003FE9039FFC001FF0003495A48494813805B120F485AA2485A6F1300007F6E5AED +00784991C7FCA212FFAC6C7EA3123F6DEC03C0A26C6C1407000F16806D140F6C6DEB1F00 +6C6D133E6C01F05B3A007FFC03F86DB55A010F14C0010391C7FC9038003FF82A2F7CAD32 +>I<EE03FEED07FFA5ED001F160FB1EC3FE0903803FFFC010FEBFF8F013F14CF9039FFF8 +07FF48EBC00148903880007F4890C7123F4848141F49140F121F485AA3127F5BA212FFAC +127FA37F123FA26C6C141FA26C6C143F0007157F6C6C91B5FC6CD9C00314FC6C9038F01F +EF6DB5128F011FEBFE0F010713F89026007FC0EBF80036467CC43E>I<EC3FF80103B57E +010F14E0013F8090397FF83FF89039FFC007FC48496C7E48496C7E48486D1380485A001F +ED7FC05B003FED3FE0A2127F5B17F0161F12FFA290B7FCA401F0C9FCA5127FA27FA2123F +17F06C7E16016C6C15E06C6C14036C6DEB07C06C6DEB0F806C01F0EB3F0090397FFE01FE +011FB55A010714F0010114C09026001FFEC7FC2C2F7DAD33>I<EDFF80020F13E0027F13 +F049B512F849EB8FFC90390FFE0FFE90381FFC1F14F8133FEB7FF0A2ED0FFCEBFFE0ED03 +F0ED00C01600ABB612F8A5C601E0C7FCB3B0007FEBFFE0A527467DC522>I<DAFFE0137E +010F9039FE03FF80013FEBFF8F90B812C048D9C07F133F489038001FF84848EB0FFC4848 +903907FE1F80001F9238FF0F00496D90C7FCA2003F82A8001F93C7FCA26D5B000F5D6C6C +495A6C6C495A6C9038C07FF04890B55A1680D8078F49C8FC018013E0000F90CAFCA47F7F +7F90B612C016FC6CEDFF8017E06C826C16FC7E000382000F82D81FF0C77ED83FC0140748 +48020113808248C9FC177FA46D15FF007F17006D5C6C6C4A5A6C6C4A5AD80FFEEC3FF83B +07FFC001FFF0000190B612C06C6C92C7FC010F14F8D9007F90C8FC32427DAC38>I<EB7F +C0B5FCA512037EB1ED07FE92383FFF8092B512E002C114F89139C7F03FFC9138CF801F91 +39DF000FFE14DE14FC4A6D7E5CA25CA35CB3A7B60083B512FEA537457CC43E>I<137C48 +B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFF +A512037EB3AFB6FCA518467CC520>I<EB7FC0B5FCA512037EB293387FFFE0A593380FE0 +004C5A4CC7FC167E5EED03F8ED07E04B5A4B5A037FC8FC15FEECC1FCECC3FE14C7ECDFFF +91B57E82A202F97F02E17F02C07FEC807F6F7E826F7E816F7F836F7F816F7F83707E163F +B60003B512F8A535457DC43B>107 D<EB7FC0B5FCA512037EB3B3B3A3B61280A519457C +C420>I<90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E002816E48 +80913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D +013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7C +AC5E>I<90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F801F00 +0390399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E> +I<EC1FFC49B512C0010714F0011F14FC90397FF80FFF9026FFC0017F48496C7F4848C7EA +3FE000078248486E7E49140F001F82A2003F82491407007F82A400FF1780AA007F1700A4 +6C6C4A5AA2001F5E6D141F000F5E6C6C4A5AA26C6C6CEBFFE06C6D485B27007FF80F90C7 +FC6DB55A010F14F8010114C09026001FFCC8FC312F7DAD38>I<90397FC00FF8B590B57E +02C314E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D13804A15C04A +6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913 +806E4913006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092C9FCADB6 +7EA536407DAC3E>I<90387F807FB53881FFE0028313F0028F13F8ED8FFC91389F1FFE00 +0313BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0A5272D7D +AC2E>114 D<90391FFC038090B51287000314FF120F381FF003383FC00049133F48C712 +1F127E00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14FC6C80 +0003806C15806C7E010F14C0EB003F020313E0140000F0143FA26C141F150FA27EA26C15 +C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007FEC7FC +232F7CAD2C>I<EB01E0A51303A41307A2130FA2131FA2133F137F13FF1203000F90B512 +80B7FCA4C601E0C7FCB3A3ED01E0A9150302F013C0137F150790393FF80F8090391FFC1F +006DB5FC6D13FC01015B9038003FE023407EBE2C>I<D97FC049B4FCB50103B5FCA50003 +EC000F6C81B3A85EA25EA25E7E6E491380017FD901F713FE9138F807E76DB512C7010F14 +07010313FE9026007FF0EBFC00372E7CAC3E>I<B6903803FFFCA5000101E09038003E00 +6C163C80017F5D8017F8013F5D6E1301011F5D6E1303010F5D6E13076D5DED800F6D92C7 +FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8F8023F5B15FD021F5B15FF6E5BA3 +6E5BA26E90C8FCA26E5AA26E5AA21578362C7EAB3B>I<B5D8FE1FB539801FFFF0A50001 +9027C0003FE0C7EA7C007114786E17F86C6F6C5C6E1601017F6E6C5CA26E011F1403013F +6F5C6E013F1407011F6F5CA26E0179140F010F048090C7FC6E01F95C6D02F0EBC01E1580 +6D902681E07F5B18E003C3157C6D9139C03FF07815E76DDA801F5B18F803FF14F96E9039 +000FFDE018FF6E486D5BA36E486D5BA26E486D90C8FCA24B7F02075DA26E48147C4B143C +4C2C7EAB51>I<B500FE90383FFFF0A5C601F0903803E0006D6C495A013F4A5A6D6C49C7 +FC6E5B6D6C137E6DEB807C6D6D5A6DEBC1F0EDE3E06DEBF7C06EB45A806E90C8FC5D6E7E +6E7F6E7FA24A7F4A7F8291381F3FFCEC3E1F027C7F4A6C7E49486C7F01036D7F49487E02 +C08049486C7F49C76C7E013E6E7E017E141FB500E090B512FCA5362C7EAB3B>I<B69038 +03FFFCA5000101E09038003E006C163C80017F5D8017F8013F5D6E1301011F5D6E130301 +0F5D6E13076D5DED800F6D92C7FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8F8 +023F5B15FD021F5B15FF6E5BA36E5BA26E90C8FCA26E5AA26E5AA21578A215F85D14015D +001F1303D83F805B387FC007D8FFE05B140F92C9FC5C143E495A387FC1F8EB07F06CB45A +6C5B000790CAFCEA01FC36407EAB3B>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fc cmsy10 10.95 4 +/Fc 4 107 df<EB0FFCEB3FFF90B512C0000314F04880488048804880A2481580A3B712 +C0AA6C1580A36C1500A26C5C6C5C6C5C6C5CC614C0013F90C7FCEB0FFC22227BA72D>15 +D<153FEC03FFEC0FE0EC3F80EC7E00495A5C495AA2495AB3AA130F5C131F495A91C7FC13 +FEEA03F8EA7FE048C8FCEA7FE0EA03F8EA00FE133F806D7E130F801307B3AA6D7EA26D7E +80EB007EEC3F80EC0FE0EC03FFEC003F205B7AC32D>102 D<12FCEAFFC0EA07F0EA01FC +EA007E6D7E131F6D7EA26D7EB3AA801303806D7E1300147FEC1FC0EC07FEEC00FFEC07FE +EC1FC0EC7F0014FC1301495A5C13075CB3AA495AA2495A133F017EC7FC485AEA07F0EAFF +C000FCC8FC205B7AC32D>I<126012F0B3B3B3B3B11260045B76C319>106 +D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fd cmbx12 14.4 63 +/Fd 63 123 df<922601FFFC903801FFE0033F9026FF801F13F84AB6D8E07F13FE020F03 +F9B6FC023FD9C00FB500C0138091277FFC0003D9FE0113C0902601FFE049495A49494949 +4813E04990C714F049484A13E0495A19C0495A7413C0017F17804A6E6E1380719138007E +007192C7FCAEBCFCA526007FF8C7000301C0C8FCB3B3A7007FB5D8F803B612F0A553547D +D34E>11 D<EEFFFC031FEBFF804AB612E0020781021F9038C00FF8913A7FFE0003FCDAFF +F0EB00FE4949EB03FF4901805B4990C7487F49485CA2495A4D7F013F6F5B5CA37190C7FC +715AEF01F894C9FCA90403B512C0BAFCA526003FFCC7120783B3B3A6003FB5D8FC03B612 +C0A542547DD34B>I<151E153E157E15FCEC01F8EC07F0EC0FE0EC1FC01580143FEC7F00 +14FE1301495A5C1307495AA2495A133F5C137FA2495AA24890C7FCA25A5BA21207A2485A +A3121F5BA3123FA25BA3127FA55B12FFB3A3127F7FA5123FA37FA2121FA37F120FA36C7E +A21203A27F7EA26C7FA26D7EA2133F80131F6D7EA26D7E1303806D7E1300147FEC3F8014 +1F15C0EC0FE0EC07F0EC01F8EC00FC157E153E151E1F7973D934>40 +D<127012F8127C127E7EEA1FC06C7E6C7E12037F6C7E6C7E7F6D7E133F806D7EA26D7E80 +130780A26D7EA26D7EA215807FA215C0A2EC7FE0A315F0143FA315F8A2141FA315FCA514 +0F15FEB3A315FC141FA515F8A3143FA215F0A3147F15E0A3ECFFC0A21580A25B1500A249 +5AA2495AA25C130F5C495AA2495A5C137F49C7FC5B485A485A5B1207485A485A48C8FC12 +7E127C5A12701F7979D934>I<B712F0AB240B7F9F2D>45 D<EA07F0487E487E487E487E +B51280A76C13006C5A6C5A6C5A6C5A1111769025>I<EF01E01703EF07F0A2170FA2EF1F +E0A218C0173FA2EF7F80A218005FA24C5AA25F1603A24C5AA25F160FA24C5AA25F163FA2 +4C5AA294C7FC5EA24B5AA25E1503A24B5AA25E150FA24B5AA25E153FA24B5AA293C8FC5D +A24A5AA25D1403A25D1407A24A5AA25D141FA24A5AA25D147FA24AC9FCA25C1301A2495A +A25C1307A2495AA25C131FA2495AA25C137FA249CAFCA25B1201A2485AA25B1207A2485A +A25B121FA2485AA25B127FA248CBFCA25AA2127CA2347879D943>I<913803FFC0023F13 +FC91B6FC010315C0010F018113F0903A1FFC003FF849486D7E49486D7E49486D7E48496D +138048496D13C0A24817E04890C813F0A34817F8A24817FC49157FA3007F17FEA600FF17 +FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A36C17F0A26C6D4913E0A26C6D4913C0 +6C17806E5B6C6D4913006D6C495AD91FFCEB3FF8903A0FFF81FFF06D90B55A01011580D9 +003F01FCC7FC020313C0384F7BCD43>I<157815FC14031407141F14FF130F0007B5FCB6 +FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>I<EC3FFE0103B512E0 +010F14FC013F14FF90B712C048D9C07F7F2703FE000F13F8D807F801037FD80FE06D7F48 +486D7F48488001F01680486C6E13C07F486C6E13E07FA27013F0A56C5AA26C5AEA0FF0EA +03C0C914E05EA218C05E1880A24C13005F4C5A4B5B5F4B5B5F4B5B4B90C7FC4B5A5E4B5A +ED7FE04B5A4A5B4A48C8FC4A5A5D4A48EB01F04A5AEC3F804AC7FC02FEEC03E0495A495A +495A495AD91F80140749C8FC013E150F017FB7FC90B812C05A5A5A5A5A5A5AB9FC1880A4 +344E79CD43>I<91380FFFC091B512FC0107ECFF80011F15E090263FF8077F9026FF8001 +13FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15E0A4805CA36C17C06C +5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512 +F816E016FCEEFF80DA000713E0030113F89238007FFE707E7013807013C018E07013F0A2 +18F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FCA25E18F891C7FC6C17 +F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A6CD9F0075BC690B612 +F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<177C17FEA2160116031607 +160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C15FCEC01F815F0EC03 +E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A131F49C7FC133E5B13FC +485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A +4F7CCE43>I<D80380150ED807E0157E01FEEC03FED9FFF0137F91B65A5F5F5F5F5F94C7 +FC5E5E16F016C093C8FC15F801E190C9FC01E0CAFCABEC0FFF027F13F001E3B512FE01E7 +6E7E9026FFF8077FDAC0017F49C713F8496E7E49143F4981496E7E6C481680C9FC18C082 +18E0A418F0A3EA0FE0487E487E487E487EA418E0A35B6C484A13C05B491680003EC85A00 +3F17006C6C4A5A6D5D6C6C4A5AD807F8495BD803FE01075B2701FFC03F5B6C90B65A013F +4AC7FC6D14F8010314C09026007FF8C8FC344F79CD43>I<ED0FFF92B512E0020780021F +14FC91397FFE03FE903A01FFF0007F4901C0EB3F804990C7121F4948EC7FC0494814FF49 +484913E049485B01FF5C485BA2485B5AA2486F13C04A6D1380486F1300177E94C7FC5AA2 +91CAFC5AA21508913801FFF8020713FFB54814C04A14F04AC66C7E023C6D7E4A6D7E4A6D +7E7013804A15C0A24A15E07013F05C18F8A491C714FCA37EA67EA46C17F880A27E18F06C +5D18E06C6D15C07E6E4913806C6D15006D6C495A6D6CEB7FFC6DB448485A6D90B55A0103 +15C0010092C7FC023F13FC020713C0364F7ACD43>I<121F7F7FEBFF8091B81280A45A19 +00606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A5F4C5A160F4C5A484B5A +4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FFA24A90C9FCA25C5D14 +07A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC06E5A395279D043>I< +913807FFC0027F13FC0103B67E010F15E090261FFC0113F8903A3FE0003FFCD97F80EB0F +FE49C76C7E48488048486E1380000717C04980120F18E0177FA2121F7FA27F7F6E14FF02 +E015C014F802FE4913806C7FDBC00313009238F007FE6C02F85B9238FE1FF86C9138FFBF +F06CEDFFE017806C4BC7FC6D806D81010F15E06D81010115FC010781011F81491680EBFF +E748018115C048D9007F14E04848011F14F048487F48481303030014F8484880161F4848 +020713FC1601824848157F173FA2171FA2170FA218F8A27F007F17F06D151FA26C6CED3F +E0001F17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE6C01FCEBFFFC6C6CB612 +F06D5D010F1580010102FCC7FCD9000F13C0364F7ACD43>I<91380FFF8091B512F80103 +14FE010F6E7E4901037F90267FF8007F4948EB3FF048496D7E484980486F7E4849808248 +17805A91C714C05A7013E0A218F0B5FCA318F8A618FCA46C5DA37EA25E6C7F6C5DA26C5D +6C7F6C6D137B6C6D13F390387FF803011FB512E36D14C30103028313F89039007FFE03EC +00401500A218F05EA3D801F816E0487E486C16C0487E486D491380A218005E5F4C5A91C7 +FC6C484A5A494A5A49495B6C48495BD803FC010F5B9027FF807FFEC7FC6C90B55A6C6C14 +F06D14C0010F49C8FC010013F0364F7ACD43>I<EA07F0487E487E487E487EB51280A76C +13006C5A6C5A6C5A6C5AC8FCB3EA07F0487E487E487E487EB51280A76C13006C5A6C5A6C +5A6C5A113576B425>I<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C +8083047F80167E8304FE804C7E03018116F8830303814C7E03078116E083030F814C7E03 +1F81168083033F8293C77E4B82157E8403FE824B800201835D840203834B800207835D84 +4AB87EA24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A820103854A +82010785A24A82010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>65 +D<BA12C019FEF1FFC01AF01AFCD8000701F0C7000313FFDE007F7F737F070F7F737F8785 +87858785A287A84F5BA263616361634F5B4F5B077F90C7FC4E485A060713F892B812E097 +C8FC861AF003F0C7000313FE9539003FFF80070F13E0737F07017F87737F747E1C807413 +C0A27413E0A31CF0A386A362A31CE0A2621CC0A250138097B5FC1C004F5B19074F5B073F +13F04EB55ABC128098C7FC1AF81AC007F8C8FC54527CD160>I<932601FFFCEC01C0047F +D9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7 +383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F882494982494982494982 +4949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA2 +98C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D +606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D +6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F +93C8FC030715FCDB007F14E0040101FCC9FC525479D261>I<BA7E19FCF1FF801AF01AFC +D8000701F0C7000F13FF060014C0071F7F070713F807017F737F747E747F747F86747F74 +7F8886888688A2757EA31D8087A21DC0A51DE0A387A963A31DC0A51D80A2631D00A3515A +A2646264505B6264505B505B5090C7FCF2FFFE4F5B07075B071F5B96B512C0060F91C8FC +BB5A1AF01AC007FCC9FC19805B527CD167>I<BC1280A5D8000701F8C7000114C0F0001F +19071901851A7F1A3F1A1FA2F20FE0A21A07A31A03A318F81BF01A01A497C7FC1701A317 +031707170F177F92B6FCA59238F8007F170F170717031701A317001B3EA31B7CA395C8FC +A21BFCA21BF8A21A01A31A031BF01A071A0FA21A1F1A3FF27FE0F101FF1907191F0603B5 +FCBCFCA21BC0A34F517CD058>I<BB12FEA5D8000701F8C700077FF0007F191F19078585 +8586861B80A21A1FA31A0FA41BC006F81307A497C7FCA31701A317031707170F177F92B6 +FCA59238F8007F170F170717031701A31700A795C9FCB3B812F8A54A517CD055>I<9326 +01FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003 +EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F88249 +49824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181F +A3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000A36C7F +A36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF6D6C6D +5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033FEE001F03 +0703FC1307DB007F02E01301040149CAFC5B5479D26A>I<B8D8C003B8FCA5D8000701F8 +C9001FEBE000B3AE92BAFCA503F8C9121FB3B1B8D8C003B8FCA560527CD169>I<B812C0 +A5D8000701F8C7FCB3B3B3B2B812C0A52A527CD132>I<B800C091B612F8A5D8000701F8 +C90003EBF8009738007F8051C7FC505AF203F8F20FF0505A505A505A50C8FCF101FCF107 +F84F5A4F5A4F5A4F5A07FEC9FCF003FC4E5A4E5A4E5A4E5A4E5ADD01FECAFC4D5A4D5A4D +5A4D7E173F4D7E4C487E4C7F5E4C804C804C80EEFF7F9226F9FE3F7FDBFBFC809226FFF8 +1F7F4C7EDCC0077F0480804C7E4B6D804B6D804B8284727F727F8684727F727F87847280 +87737F85737F87737F85737F88857380747F888697B512FCB800C0013FECFFFEA55F527C +D169>75 D<B812F8A5D8000701F8CAFCB3B3A91A7CA41AFC1AF8A51901A31903A219071A +F0190FA2191F193F197F19FF180360183F4DB5FCBB12E0A546527CD151>I<B600FC073F +B512FE6F61A26F96B6FCA2D80007F5C00070EF01EFA202EF6DEF03CFA202E76DEF078FA2 +02E36DEF0F0FA202E16D171EA302E06D173CA26F6C1778A26F6C17F0A26F6DED01E0A26F +6DED03C0A36F6DED0780A26F6DED0F00A26F6D151EA26F6D5DA3706C5DA2706C5DA2706D +495AA2706D495AA2706D495AA3706D49C7FCA2706D131EA2706D5BA2716C5BA3716C5BA2 +71EB81E0A271EBC3C0A271EBE780A27101FFC8FCA3715BA2715BA2725AA2725AA2D93FFC +6F5AB74DB712FEA2725AA2725A77527CD180>I<B600FC93B7FC8181A282D800076E9239 +003FFC0070EE07E08282A28202EF7F02E77F02E380A202E18002E0806F7F6F7F6F7FA26F +7F6F7F6F806F80A26F80707F707F707F707FA2707F7080708070808583717F717F717F71 +7FA27114807114C07114E07213F07213F8A27213FC7213FE7213FF721487A27214C77214 +E77313F77313FF85A285858585A28586868686A286868686A2D93FFC187FB7173F1B1F1B +0F1B07755A60527CD169>I<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF +020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1FFF4949 +6F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A83481B804A8348 +1BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C +1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D +4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F +01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13E0565479D265> +I<BAFC19F819FF1AE086D8000701F0C7001F13FC060113FF726C13807313C0070F13E01B +F0857313F81BFCA27313FEA41BFFA81BFEA31BFC61A21BF84F13F04F13E0614F13C04F13 +004E485A061F5B92B812F01AC04FC7FC19E003F8CBFCB3AEB812C0A550527CD15C>I<B9 +12F0F0FF8019F819FF1AC0D8000701F0C714F0060F7F060113FE727F737F737F85737F87 +A2737FA387A863A2616363A24F5B4F5B4F90C8FC4F5A06035B060F13F095B512C092B8C9 +FC19F819E019F89226F0000313FE9439007FFF80727F727F727F727F727F8684A28684A7 +87A71D1C75133EA38575137E73157C7513FC731401B86C6D9038F803F807039038FE07F0 +7390B512E0736C14C0080F1400CEEA7FFC5F537CD164>82 D<91260FFF80130791B500F8 +5B010702FF5B011FEDC03F49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC48 +48C87E48488149150F001F824981123F4981007F82A28412FF84A27FA26D82A27F7F6D93 +C7FC14C06C13F014FF15F86CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C83 +6D826D82010F821303010082021F16801400030F15C0ED007F040714E01600173F050F13 +F08383A200788200F882A3187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01 +FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48 +C66C14FC48010F14F048D9007F90C8FC3C5479D24B>I<003FBC1280A59126C0003F9038 +C0007F49C71607D87FF8060113C001E08449197F49193F90C8171FA2007E1A0FA3007C1A +07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0A553517BD05E>I<B800C00103B612 +FCA5D8000701F8CAEBF000F31F80B3B3B11B3FA26D97C7FC81637F1B7E6D6D17FE505A6E +7E505A6E6D15076E4D5A6E6D4B5A6E6D4B5A6E01F84B5A6E6DDA03FFC8FC6E6CB46CEB0F +FE6F9039F001FFF8030F90B65A030316C0DB007F92C9FC040F14F8DC007F13805E537CD1 +67>I<B700FE031FB512FEA5D8001F01F0CA383FFE00F307F06D626F170F6D62811B1F6D +6D601B3F6D97C7FC6F5F6D197E821BFE6E6D5E1A016E6D5E1A036E60701507A26E6D5E1A +0F6E6D5E1A1F6E6070153FA26E6D93C8FC626E6E147E1AFE6F5E711301A26F6D5C19036F +6D5C19076F5E71130FA26F6D5C191F6F6D5C193F6F93C9FC715BA26FEC807E19FE706D5A +18C1705C18E3705C18F318F770EBFFE0A2705CA2705CA37091CAFCA2705BA2715AA3715A +A2715AA2715A715A5F537DD166>I<B700FC017FB600FE91B612F0A5D8003F01C0C8001F +01E0C9EBF8006F71EE0FC06D7161876F1C1F6D7196C7FC6F8373606D1E3E6F836D716087 +6F1CFC6D666F4B801F016D66704A806E525A88704A17076E059F5F70021F80080F160F6E +6570023F806EDC3E074CC8FC8870027E5F6EDC7C03163E7002FC804F6C167E6E1C7C7001 +01814F6C16FC6E745B70010317016E4C6D5D060716C00580496D14036F63DDC00F16E04F +6D14076F07F05BDDE01F170F6F92C76C5D1DF8DDF03E6E141F6F98C9FCDDF87E16FC067C +6E5C6FF1FE3EDDFCFC177E6F4A6E147C1DFFDDFFF06E14FC6F62A24E816F62A270496F5B +A24E817061A295C97E7061A270487090CAFCA37048705AA24D1601040360A27048705A84 +537DD18B>I<EC7FFF0107B512F0013F14FE90B77E48D9E00F7F2703FE000113F0486C6D +7F6EEB3FFC48826E131F83707FA36C496D7FA26C90C7FC6C5AC9FCA6037FB5FC020FB6FC +91B7FC01071487013FEBF0074913803901FFFC004813F0485B485B485B4890C7FC5A5BA2 +485AA45EA26D5C007F151D163D6C6C02797F6C6D01F113F86C9026C003E1EBFFE06C9026 +F81FC014F06C90B5487EC6ED001F011F01FC010713E0010101E090C8FC3C387CB641>97 +D<EB3FF0B5FCA51203C6FCB3A4923801FFE0030F13FE033FEBFFC092B612F002F301017F +913AF7F8003FFEDAFFE0EB0FFF03806D7F92C76C7F4A6E7F4A824A6E7FA2727EA285A285 +84A31A80AC1A00A44E5AA36118FF616E4A5BA26E4A5B6E4A5B6F495BDACFC04990C7FCDA +87F0EB7FFC913A03FE03FFF849C6B612E0496D148049011F01FCC8FC90C7000313C04154 +7BD24B>I<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE0001 +FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F1300705A48 +92C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC +3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49C7FC +020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91 +B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F484980 +485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C +6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD9 +003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C04901 +817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C0488191 +C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01 +F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE +903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>I<ED3FFC02 +03B5FC020F14C0023F14E09139FFF81FF0499038C03FF849EB807F49903800FFFC495A49 +5AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0A526007FF8C8FCB3B3A7007FB5 +12FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C0010FDAFC1F13E0013FECFF7F90 +267FFC0F9038FF9FF09026FFE001EBF83F48496C13E0484990387FF01F4890C7D83FF813 +E0489338FC0FC0F0078048486E6CC7FCA2003F82A9001F5EA26C6C4A5AA26C5E6C6D495A +6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01C314F02607C03F90C9FC91CBFC +A2120FA37FA213F813FE90B7FC6C16F817FF18C06C836C836C836D828448B9FC12074848 +C700031480D81FF8EC003F4848150748486F13C083485A83A56D5D007F18806D5D003F18 +006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A6C01FE011F5B6C6CB71280010F +03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3FF0B5FCA51203C6FCB3A4EE1F +FC93B512C0030314F0030F8092391FE07FFC92393F001FFE037C8003F07FDAF1E081ECF3 +C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542537BD24B>I<137F497E +000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3 +A6B612E0A51B547BD325>I<EB3FF0B5FCA51203C6FCB3A54CB512F8A59339003FFE00EF +1FF0EF3FC04D5A4DC7FCEE03FEEE07F84C5A4C5AEE7FC04CC8FC4B5A4B5AED0FF8ED1FE0 +4B7E4B7EECF1FF02F37F02F77F91B6FC83159F030F7F02FE80DAF8077F4A7E6F7F6F7F83 +707E82707F84707F707F82707F84707F177F717E4D13C0B6D8F003B6FCA540537CD247> +107 D<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD225>I<D93FF0D91FFCEDFFE0 +B591B500C0010713FE030302F0011F6D7E030F6E017F8092271FE07FFCD9FF037F922A3F +001FFE01F8007F0003027C9126FF03E080C602F06DD90780137FDAF1E0038FC77FDAF3C0 +159EDAF7806D01BC143F07FC8102FFC75C4A5EA24A5EA44A5EB3ACB6D8F807B6D8C03FB5 +12FEA567367BB570>I<D93FF0EB1FFCB591B512C0030314F0030F8092391FE07FFC9239 +3F001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3AC +B6D8F807B612C0A542367BB54B>I<913801FFE0021F13FE91B612C0010315F0010F9038 +807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890C8 +6C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5FA2 +6C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF80 +7FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<903A3FF001FFE0B5010F +13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9FFE0EB1FFFC602806D7F +92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A0060A36118FFA2615F61 +6E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FBFE075B02F8B612E06F14 +80031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<90397FE003FEB590380F +FF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE78014EF +150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537>114 +D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307D81FE0130148487F4980 +127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15F86C14FF16C06C15F06C +816C816C81C681013F1580010F15C01300020714E0EC003F030713F015010078EC007F00 +F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC7F0001FEEB01FE9039FF +C00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB635>I<143EA6147EA414 +FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FCB3A9EE +07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B0203 +13802A4D7ECB34>I<D93FF8913801FFC0B50207B5FCA50003ED001FC61607B3AE5FA35F +A2017F5D173B177B6D6C14F3DC01E313F06D6CD907C3EBFFC0903A0FFFC03F836D90B512 +03010114FE6D6C13F8020701E091C7FC42377BB54B>I<B600F00107B5FCA5000101F8C8 +EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15FC6D5E6F13016D5E8117036D5E6F +13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E177E023F147C6F13FC6E5C16816E +5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F5AA36F5AA26F5AA26F5AA26F5A +6F5A40367DB447>I<B6D8E07FB5D8C003B512C0A5000101F0C701F0C7381FF8006E027F +ED07E06C715DA26E023F150F017F705DA26E181F013F4B6C92C7FC6E606D70143E94B5FC +6F177E6D4A6E137C03C001F315FC6D715B160303E001E114016D020702E05B03F013C06D +71485A160F03F8D9807F13076D05F85B93381F003F03FC160F027F4902FC5BDBFE3E011F +131F023F04FE90C8FC167EDBFF7C010F5B6E01FCECFF3E4C6D137E6E5FA24C7F6E5F4C7F +6E5FA24C7F6E5F4C147FA26E5F93C8123F6F5EA2033E6FC9FC5A367DB461>I<007FB500 +F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D495A6D4B5A6F495A6D6D +91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06EEBCFC06EEBFF806E91C9 +FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03F87F4A486C7E4A486C7E +020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A49486D7F01076F7E49486E7E +49486E7FEBFFF0B500FE49B612C0A542357EB447>I<B600F00107B5FCA5C601F8C8EA7F +E06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F13016D5E6F13036D5E8117076D6D +5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E023F147C6F13FCA26E6D5A16816EEB +C1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5AA26F5AA26F5AA26F5AA26F5AA35E +150F5E151F93C9FC5DD81FC0133E486C137E486C137C486C13FC5D14015D14034A5A6C48 +485A49485A263FC07FCAFCEB81FE6CB45A6C13F000035BC690CBFC404D7DB447>I<001F +B8FC1880A3912680007F130001FCC7B5FC01F0495B495D49495B495B4B5B48C75C5D4B5B +5F003E4A90C7FC92B5FC4A5B5E4A5B5CC7485B5E4A5B5C4A5B93C8FC91B5FC495B5D4949 +EB0F805B495B5D495B49151F4949140092C7FC495A485E485B5C485E485B4A5C48495B48 +15074849495A91C712FFB8FCA37E31357CB43C>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fe cmtt10 10.95 93 +/Fe 93 127 df<121C127FEAFF80B3EA7F00B2123EC7FCA8121C127FA2EAFF80A3EA7F00 +A2121C09396DB830>33 D<00101304007C131F00FEEB3F80A26C137FA248133FB2007E14 +00007C7F003C131E00101304191C75B830>I<903907C007C0A2496C487EA8011F131FA2 +02C05BA3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F +90B512FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA2 +29387DB730>I<1438147C14FCA4EB03FF011F13E090B512FC4880000780481580261FFE +FD13C09039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15F800FE14035A1507A3 +6CEC03F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14E0000114F86C6C7F01 +1F7F01037F0100148002FD13C09138FC7FE0151FED0FF015070018EC03F8127E1501B4FC +A35AA26CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81FFEB512806CB612006C +5C6C5CC614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE30>I<D803C0EB01E0 +D80FF01303486C497E487E150F487ED87E7E495AEAFE7F5E486C133FA25E157FA24BC7FC +6C5A5D387E7E01EA7FFED83FFC5B1403EA1FF86C48485AEA03C0C75B140FA25D141FA24A +5AA25D147FA292C8FC5CA2495AA25C1303A25C1307A290390FF001E0ED07F84A487E011F +497EA24A487E133F163F90267F807F1380ED7E1F14005BA25B1201A24848EB7F3F033F13 +004914FF12076F5A5B6F5A6C486D5A0001EC01E029477DBE30>I<EB07E0EB1FF8497E13 +7F497E803801FC7F497E810003131F13F0A6143F92C8FC91387F0FFF9026F87E1F138000 +0113FEEBF9FC13FB4A6C1300D9FFF013C06C13E0151F02C05BEB7F809038FF003F4892C7 +FC485C48EB807E5A15FE391FDFC0FC383F8FE014E1397F07F1F8EB03F300FEEBFBF0EB01 +FF5D7FEDC006027F130F91393F801F8015C06C137F6CEBFFE049EBF83F018701FC130026 +3FFFFBB5FC6C01F15B14E06C9038C03FFC00039038001FF8D801FCEB07E0293A7DB830> +I<EA07C0EA0FF0EA1FF8A213FCA213FE120F1207EA007EA513FE13FCA2120113F81203EA +07F0120FEA1FE0127FEAFFC013801300127C12380F1D70B730>I<141E147F14FF5BEB03 +FEEB07FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F +5BA2127F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7E +EB7F80EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>I<127812 +FE7E7F6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB +03F8A214FC1301A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14 +E0EB1FC0133F1480137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A12781847 +78BE30>I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB3FE001C3137F9038F3F9 +FF267FFBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0011F90C7FC017F13C048 +B512F04880000F14FE003FECFF80267FFBFB13C026FFF3F913E09038C3F87F0183133FD8 +7E03EB0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30>I<143EA2147FAF007FB7 +FCA2B81280A36C1600A2C76CC8FCAF143EA229297DAF30>I<EA03E0EA0FF0EA1FF813FC +EA3FFEA213FFA27EA27E1203EA007FA2137E13FEEA01FC1203EA07F8EA3FF0127FEAFFE0 +EA7F801300123C1019708B30>I<007FB612F0A2B712F8A36C15F0A225077B9E30>I<120F +EA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A2 +1507A2ED0FF0A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA2 +4A5AA24A5AA24A5AA24AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249 +C8FCA2485AA25B1203A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA22547 +7BBE30>I<14FE903807FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F48 +48EB3FC04848EB1FE049130F001F15F0491307A24848EB03F8A290C712014815FCA400FE +EC00FEAD6C14016C15FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A2 +6C6CEB3FC06C6CEB7F806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FE +C7FC273A7CB830>I<EB03C0497EA2130FA2131FA2133F137F13FF1203123FB5FCA213EF +138FEA7E0F1200B3B0003FB512F84814FCB612FEA26C14FC6C14F81F3977B830>I<EB07 +FC90383FFFC090B512F00003804814FE4880261FF80F1380263FE00113C09038C0007F48 +48EB3FE090C7121FED0FF04814075A6C15F81503A3127E1218C8FCA2150716F0150F16E0 +151F16C0153FED7F8015FF4A13005DEC07FC4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A +EB0FF0EB3FE0495A495A4890C8FC4848EB01F04848EB03F8485AEA1FE048B6FCB7FCA37E +6C15F025397BB830>I<EB03FF013F13E090B512F84814FE4880481580260FFE0113C090 +38F0007F4848EB1FE0150F16F01507A26C5A6C5AC8FC150F16E0A2151FED3FC0157FEDFF +8002071300903807FFFE495B5D8115FF6D1480D9000113C09138003FE0ED1FF0ED07F815 +0316FC150116FE1500A21218127EB4FCA2150116FC4814036C15F86C6C13076DEB1FF0D8 +3FF0133F3A1FFE01FFE06CB612C06C15806CECFE00C65C013F13F001031380273A7CB830 +>I<EC03FC4A7E140F141FA2143F147F157E14FEA2EB01FCEB03F8A2EB07F0A2EB0FE0EB +1FC0A2EB3F80A2EB7F0013FEA2485A485AA2485AA2485A485AA2485AA248C7FC12FEB8FC +1780A46C1600C8007EC7FCAA91387FFFFE91B6FCA46E5B29397DB830>I<000FB6128048 +15C05AA316800180C8FCAEEB83FF019F13C090B512F015FC8181D9FE0313809039F0007F +C049133F0180EB1FE06CC7120F000E15F0C81207A216F81503A31218127EA2B4FC150716 +F048140F6C15E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C +6C14E06C6C1380D90FFCC7FC25397BB730>I<EC0FF8EC7FFF49B51280010714E0131F49 +14F090387FF80F9039FFC007F84813803803FE005B485A4848EB03F0ED01E0484890C7FC +5B123F5BA2127FEB000C903803FFE0010F13F8D8FF3F13FE48B6FCB7128016C09039FE00 +7FE001F8EB1FF001E0130F49EB07F849EB03FCA290C7120116FE1500A37EA46C7E15016D +14FC121F6D1303000FEC07F86D130F6C6CEB1FF06DEB3FE03A03FF81FFC06C90B512806C +15006D5B011F13F8010713E001011380273A7CB830>I<127CB712FC16FEA416FC48C7EA +0FF816F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA24A5A +A24AC7FCA25C5C13015CA213035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7CB830 +>I<49B4FC011F13F0017F13FC90B57E0003ECFF804815C048010113E03A1FF8003FF049 +131FD83FC0EB07F8A24848EB03FC90C71201A56D1303003F15F86D13076C6CEB0FF06C6C +EB1FE0D807FCEB7FC03A03FF83FF806C90B512006C6C13FC011F13F0497F90B512FE4880 +2607FE0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15FC90C712014815 +FE481400A66C14016C15FC6D1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01FFE0 +6C90B512C06C1580C6ECFE006D5B011F13F0010190C7FC273A7CB830>I<49B4FC010F13 +E0013F13F890B57E4880488048010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0F +F048481307A290C7EA03F85A4815FC1501A416FEA37E7E6D1303A26C6C13076C6C130F6D +133FD80FFC13FF6CB6FC7E6C14FE6C14F9013FEBE1FC010F138190380060011400ED03F8 +A2150716F0150F000F15E0486C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC +90B55A6C5C6C5C6C1480C649C7FCEB3FF0273A7CB830>I<120FEA3FC0EA7FE0A2EAFFF0 +A4EA7FE0A2EA3FC0EA0F00C7FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F +000C276EA630>I<EA03C0EA0FF0EA1FF8A2EA3FFCA4EA1FF8A2EA0FF0EA03C0C7FCAFEA +03C0EA0FF0121F13F8123F13FCA3121FA2120F12031200120113F8120313F01207EA1FE0 +123FEA7FC0EAFF80EA7F00127E12380E3470A630>I<16F01503ED07F8151F157FEDFFF0 +14034A13C0021F138091383FFE00ECFFF8495B010713C0495BD93FFEC7FC495A3801FFF0 +485B000F13804890C8FCEA7FFC5BEAFFE05B7FEA7FF87FEA1FFF6C7F000313E06C7F3800 +7FFC6D7E90380FFF806D7F010113F06D7FEC3FFE91381FFF80020713C06E13F01400ED7F +F8151F1507ED03F01500252F7BB230>I<007FB7FCA2B81280A36C16006C5DCBFCA7003F +B612FE4881B81280A36C1600A229157DA530>I<1278127EB4FC13C07FEA7FF813FEEA1F +FF6C13C000037F6C13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E7E91380FFF80 +6E13C0020113F080ED3FF8151F153FEDFFF05C020713C04A138091383FFE004A5A903801 +FFF0495B010F13804990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7FFE13F8EAFFE0 +5B90C9FC127E1278252F7BB230>I<EB1FFE90B512E0000314F8000F14FE488048158026 +7FF80313C09038C0007F48C7121F16E0150FA3127E151F0018EC7FC0C812FF020313804A +13004A5AEC1FF84A5AEC7FC04A5A92C7FC495AA2495A5CA213075CA86D5A90C9FCA8EB01 +C0EB07F0A2497EA36D5AA2EB01C023397AB830>I<EC1FE0ECFFF8010313FE010F7F4914 +804914C090397FF03FE09038FF800F4890380007F0D803FC13033A07F801FBF89038F007 +FF380FE01F4A13FCEA1FC0495A003FEBFF0F903800FE07903901FC03FE007FEBF801EA7E +03ECF000A2EAFE0700FC49137EAA00FE6D13FED87E0314FCA2ECF801D87F0114F8003FEB +FC03903900FE07F0903880FF0F001F90387FFFE06D6C13C0EA0FE06E13803A07F007FE00 +9038F801F86C6CC7127C6CB414FE6CEB800390387FF01F6DB512FC6D14F86D14E0010314 +C00100EBFE00EC1FF0273A7CB830>I<147F4A7EA2497FA4497F14F7A401077F14E3A301 +0F7FA314C1A2011F7FA490383F80FEA590387F007FA4498049133F90B6FCA34881A39038 +FC001F00038149130FA4000781491307A2D87FFFEB7FFFB56CB51280A46C496C13002939 +7DB830>I<007FB512F0B612FE6F7E82826C813A03F8001FF815076F7E1501A26F7EA615 +015EA24B5A1507ED1FF0ED7FE090B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E +1500167FA3EE3F80A6167F1700A25E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7 +FC29387EB730>I<91387F803C903903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE0 +7F48EB801F3903FE000F484813075B48481303A2484813015B123F491300A2127F90C8FC +167C16005A5AAC7E7EA2167C6D14FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13 +076C6CEB0FF03901FF801F6C9038E07FE06DB512C06D14806D1400010713FC6D13F09038 +007FC0273A7CB830>I<003FB512E04814FCB67E6F7E6C816C813A03F8007FF0ED1FF815 +0F6F7E6F7E15016F7EA2EE7F80A2163F17C0161FA4EE0FE0AC161F17C0A3163F1780A216 +7F17005E4B5A15034B5A150F4B5AED7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B38 +7FB730>I<007FB7FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FC +A6EBF800A4157C92C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<00 +3FB712804816C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FCA690 +38FC007FA4153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I<02FF13F00103 +EBC0F8010F13F1013F13FD4913FF90B6FC4813C1EC007F4848133F4848131F49130F485A +491307121F5B123F491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C +6D1400ED03F8A27F003F1407A27F121F6D130F120F7F6C6C131FA2D803FE133F6C6C137F +ECC1FF6C90B5FC7F6D13FB010F13F30103EBC1F0010090C8FC293A7DB830>I<3B3FFF80 +0FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E0D803F8C7EAFE00B290B6FCA6 +01F8C7FCB3A23B3FFF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E02D38 +7FB730>I<007FB6FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C1500 +213879B730>I<49B512F04914F85BA27F6D14F090C7EAFE00B3B3123C127EB4FCA24A5A +1403EB8007397FF01FF86CB55A5D6C5C00075C000149C7FC38003FF025397AB730>I<D8 +3FFF90380FFF80486D4813C0B56C5AA26C497E6C496C1380D803F0903803F8004B5A4B5A +151F4B5A5E4BC7FC15FE14014A5A5D4A5A4A5A141F5D4A5A4AC8FC5C13F18101F37F13F7 +90B57E14EFECC7F01483EC03F8140101FE7F496C7E5B157F497F82151F82150F826F7EA2 +6F7E1501821500D83FFF903803FFC0486D4813E0B56C5AA26C497E6C496C13C02B387FB7 +30>I<383FFFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8 +FCA27E6C16802A387EB730>I<D83FF8ECFFE0486C4913F0486C4913F8A2007F16F06C6C +4913E00007160001EF14BFEC800FA39039E7C01F3FA4ECE03F01E3133EA2ECF07EA201E1 +137CA2ECF8FCA201E013F8A214FDEC7DF0A3147FEC3FE0A3EC1FC0A2EC070091C7FCADD8 +3FFC903801FFE0486C4913F0B54913F8A26C486D13F06C486D13E02D387FB730>I<D83F +FC90381FFF80486C4913C0B54913E0A26C6D6C13C06C6E13800003913801F800EBF7C0A3 +EBF3E0A314F013F1A214F8A213F014FCA2147C147EA2143E143FA2141FA21581A2140F15 +C1A2140715E1A2140315F1A21401A215F91400A3157DA3153FEA3FFF481380B5EAC01FA2 +6CEB800F6C496C5A2B387EB730>I<90383FFFE048B512FC000714FF4815804815C04815 +E0EBF80001E0133FD87F80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A3 +6D130FA26D131F6C6CEB3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13 +E0253A7BB830>I<007FB512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE1501 +6F7EA2821780163FA6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15 +F001F8C9FCB0387FFFC0B57EA46C5B29387EB730>I<90383FFFE048B512FC000714FF48 +15804815C04815E0EBF80001E0133F4848EB1FF049130F90C71207A44815F8481403B3A8 +147E14FE6CEBFF076C15F0EC7F87A2EC3FC7018013CF9038C01FFFD83FE014E0EBF80F90 +B6FC6C15C06C15806C1500000114FCD8003F7FEB00016E7EA21680157F16C0153F16E015 +1F16F0150FED07E025467BB830>I<003FB57E4814F0B612FC15FF6C816C812603F8017F +9138003FF0151F6F7E15071503821501A515035E1507150F4B5A153F4AB45A90B65A5E93 +C7FC5D8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EB +FFF8B56C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>I<90390FF803C0D97F +FF13E048B512C74814F74814FF5A381FF80F383FE001497E4848137F90C7123F5A48141F +A2150FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C8001 +1F13FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07F8A2007C140312FEA5 +6C140716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8 +D8F81F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA43AFE003F800FA8007C +ED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I<3B7FFFC007FFFCB56C +4813FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C6C14FE6D13016D5CEC +800390393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038007FFCEC1FF02F3980 +B730>I<D87FFE90380FFFC0B54913E06E5AA24A7E6C486D13C0D807F0903801FC00A26D +130300035DA46C6C495AA46C6C495AA46D131F6D5CA3EC803F013F5CA46D6C48C7FCA490 +380FE0FEA401075B14F1A301035BA314FB01015BA314FFA26D5BA46E5A6E5A2B397EB730 +>I<D83FFC903801FFE0486C4913F000FF16F8A2007F16F06C486D13E0D81FC09038001F +C0000F1680A76D143F00071600A7000390380F803E9039F01FC07EEC3FE0A3EC7FF0A214 +7D0001157CA29039F8FDF8FCA314F8A300005D01F913FCA2ECF07CA201FD137DA2017D5C +ECE03DA3017F133FA2ECC01FA2013F5CA2EC800F6D486C5A2D397FB730>I<3A3FFF01FF +F84801837F02C77FA202835B6C01015B3A01FC007F806D91C7FC00005C6D5BEB7F01EC81 +FCEB3F8314C3011F5B14E7010F5B14FF6D5BA26D5BA26D5BA26D90C8FCA4497FA2497FA2 +815B81EB0FE781EB1FC381EB3F8181EB7F0081497F49800001143F49800003141F498000 +07140FD87FFEEB7FFFB590B5128080A25C6C486D130029387DB730>I<D87FFF90381FFF +C0B56C4813E0A46C496C13C0D803F8903803F8006D1307A26C6C495AA26C6C5C151F6D5C +EC803F013F5CECC07F011F91C7FCA290380FE0FEA214F101075BA2903803FBF8A201015B +14FF6D5BA26E5AA36E5AB1903803FFF8497F497FA26D5B6D5B2B387EB730>I<001FB612 +FC4815FE5AA490C7EA03FCED07F816F0150FED1FE016C0153FED7F80003E1500C85A4A5A +5D14034A5A5D140F4A5A5D143F4A5A92C7FC5C495A5C1303495A5C130F495A5C133F495A +91C8FC5B4848147C4914FE1203485A5B120F485A5B123F485A90B6FCB7FCA46C15FC2738 +7CB730>I<007FB5FCB61280A4150048C8FCB3B3B3A5B6FC1580A46C140019476DBE30>I< +127CA212FEA27EA26C7EA26C7EA26C7EA26C7EA26C7EA26C7EA212017FA26C7EA26D7EA2 +6D7EA26D7EA26D7EA26D7EA26D7EA2130180A26D7EA26E7EA26E7EA26E7EA26E7EA26E7E +A26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07F8A21503A2ED01 +F0150025477BBE30>I<007FB5FCB61280A47EC7123FB3B3B3A5007FB5FCB6FCA46C1400 +19477DBE30>I<1307EB1FC0EB7FF0497E000313FE000FEBFF80003F14E0D87FFD13F039 +FFF07FF8EBC01FEB800F38FE0003007CEB01F00010EB00401D0E77B730>I<007FB612F0 +A2B712F8A36C15F0A225077B7D30>I<EB7FF80003B5FC4814C04880488048809038E01F +FC9038C003FE14016E7E6C487F6CC77FC8123FA491B5FC130F137F48B6FC12075A48EB80 +3F383FF800EA7FE0138048C7FC5AA4157F7E6C6C13FFEBC003263FF01FEBFF8090B712C0 +7E6C14EF000314876CD9FE01138026003FE0C8FC2A2A7BA830>97 +D<EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF80027F13E091B57E90B612FC82 +ECFE079138F001FF4A6C13804A137F4AEB3FC091C7121F17E049140FA217F01607A8160F +A217E07F161F6EEB3FC0A26EEB7F806E13FFDAF00313009138FC0FFE91B55A5E495CD97E +7F13C0D93C1F90C7FC90380003FC2C3980B730>I<ECFFE0010713FC011F7F017F7F90B6 +12804815C048EB807F3907FC003F485A485A49EB1F804848EB0F004990C7FC127F90C9FC +A25A5AA87E7EA27F003FEC07C06DEB0FE06C7E6D131F6C6C14C0D807FE133F9039FFC0FF +806C90B5FCC615006D5B011F13F801075B01011380232A7AA830>I<913801FFE04A7F5C +A28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0133F49 +131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E6D137F +390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0D907FC +C8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E488048018113803A07FC +007FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7FCA516 +F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE0 +6C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>I<EDFF80020713 +E0021F13F05C4A13F891B5FC491387903803FE079138FC03F0903907F800C04A1300A800 +3FB612C04815E0B7FCA36C15C0260007F0C7FCB3A9003FB512FE4880B71280A26C15006C +5C25397DB830>I<D903FC13FF90261FFF8713C04913DF90B712E05A5A2607FE07138F90 +3AF801FE07C048486C6CC7FCA2497F001F8149133FA56D137F000F92C7FC6D5BA26C6C48 +5AEBFE0790B55A5D485C15C001DF5BD9C3FCC8FC01C0C9FCA37F7F6CB512F015FF6C15C0 +4815F0488148813A3FE0001FFE0180130148C8127F007E8100FE168048151FA56C153F00 +7FED7F006D5C6C6C495A01F013076CB4EB7FFC6C90B55A6C5D000115C06C6C91C7FC011F +13FC010113C02B3E7DA730>I<EA3FFC487E12FFA2127F123F1200AAEC01FE91380FFF80 +023F13E091B57E90B67EA29138FE07FCECF8039138E001FE14C0EC8000A291C7FCA25BB3 +A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F3880B730>I< +14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003F +B612C04815E0B7FCA27E6C15C023397AB830>I<EC01C0EC07F0A2EC0FF8A3EC07F0A2EC +01C091C7FCA990B512F04814F8A47EEB0003B3B3A5EC07F0A2123C007EEB0FE0B4131FEC +3FC0147F90B512806C14005C6C5B000F13F0000313C01D4E7CB830>I<EA7FF8487EA412 +7F1200AB0203B512804A14C017E0A217C06E14809139001FE0004B5A4B5A4BC7FC4A5A4A +5AEC0FF84A5A4A5A4A5A4A5A01FD7F90B57E8114F7ECE3F8ECC1FCEC81FEEC00FF497F49 +6D7E6F7E826F7E15076F7E6F7E3B7FFFF81FFFE0B56C4813F017F8A217F06C496C13E02D +387FB730>I<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB7 +30>I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F138726 +07FE07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80 +B548018F13C0A46C486C01071380322881A730>I<EC01FE3A3FFC0FFF80267FFE3F13E0 +00FF90B57E90B67E7E6C9038FE07FCC6EBF8039138E001FE14C0EC8000A291C7FCA25BB3 +A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F2880A730>I< +49B4FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3FE0D81F +E0EB0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15FCA26D +1303003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B51280 +6C15006C6C13FC6D5B010F13E0010190C7FC272A7CA830>I<EC03FE3A3FFC1FFF80267F +FE7F13E000FF90B57E90B612FC6C816CEBFE07C69038F001FF4A6C13804A137F4AEB3FC0 +91C7121F17E049140FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB7F806E13FFDA +F00313009138FC0FFE91B55A5E495C6E13C0021F90C7FCEC03FC91C9FCAD383FFFF8487F +B57EA26C5B6C5B2C3C80A730>I<49B413F8010FEBC1FC013F13F14913FD48B6FC5A4813 +81390FFC007F49131F4848130F491307485A491303127F90C7FC15015A5AA77E7E15037F +A26C6C1307150F6C6C131F6C6C133F01FC137F3907FF01FF6C90B5FC6C14FD6C14F9013F +13F1010F13C1903803FE0190C7FCAD92B512F84A14FCA46E14F82E3C7DA730>I<ED07F8 +3A3FFF803FFF486DB51280B512C302CF14C06C13DF6C9038FFFC3FD8001F13E09238801F +809238000F004A90C7FC5C5C5CA25CA45CAF003FB512FC4880B7FCA26C5C6C5C2A287EA7 +30>I<90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880A46C143E +007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F9038000FFF02 +001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF0090B6FC +5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>I<EB0780497E131FA9003FB612 +E04815F0B7FCA36C15E026001FC0C7FCB216F8ED01FCA5ECE003010FEB07F814F09138FC +1FF06DB512E06D14C016806D14009038007FFCEC1FF026337EB130>I<D83FFCEB3FFC48 +6C497E00FF14FFA2007F147F003F143F00001400B3A41501A2150315076D130F903A7FC0 +7FFFF891B612FC6D15FE7F6D4913FC6D9038F87FF8010001C0C7FC2F2880A630>I<3B3F +FFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D130700005D +A26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2ECE0FE0107 +5BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3FFFC01FFF +E0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157EA56D14FE +00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A3017E13FB +A290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3A3FFF81FFFC4801 +C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE90383F81FC90381FC3F8EB0FE3EC +E7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7E0EB07E790380FE3F0ECC1 +F890381F81FC90383F80FE90387F007E017E137F01FE6D7E48486D7E267FFF80B5FCB500 +C1148014E3A214C16C0180140029277DA630>I<3B3FFFC07FFF80486DB512C0B515E0A2 +6C16C06C496C13803B01FC0003F000A2000014076D5C137E150F017F5C7F151FD91F805B +A214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F85DA2EB00F9ECFDF0147D +147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE486C5AEA3FC1EBC3F81387 +EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<001FB612FC4815FE5AA316 +FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A4A5A4A5A +4A5A4990C7FC495A495A495A495A495A495A4948133E4890C7127F485A485A485A485A48 +5A48B7FCB8FCA46C15FE28277DA630>I<ED3FF0913803FFF8140F5C147F16F09138FFF0 +0092C7FC495A5CB3A21303495A133F383FFFF0B55A5C91C8FC14C080003F7F38003FF813 +076D7E1301B3A2806D7E15F091387FFFF016F8141F8014039138003FF025477BBE30>I< +127CA212FEB3B3B3AD127CA207476CBE30>I<EA7FE0EAFFFE6D7E8014F07EC66C7E1307 +6D7E1301B3A2806D7E15E091387FFFE06E13F8801407141F5C4A13E09138FFE00092C7FC +495A5CB3A21303495A137F387FFFF0B5FC14C05C49C8FCEA7FE025477BBE30>I<017C13 +3848B4137C48EB80FE4813C14813C348EBEFFC397FEFFFF0D8FF8713E0010713C0486C13 +80D87C0113003838007C1F0C78B730>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Ff cmbx12 20.74 17 +/Ff 17 117 df<EE3FFF0307B512F8033F14FF4AB712E0020716F8021F16FE4AD9F8077F +91B5D8C00014C04991C7003F7F4901FC020F7F49496E7F49496E7F49496E7F49496E7F4B +81498590B5C96C7FA24849707FA24886A248864A824886A34886A448864A82A4481B80A8 +B51AC0B3AA6C1B80A86C1B006E5EA46C62A36C62A36C6D4C5BA36C62A26C6D4C5BA26C6E +4B5B6D616F92B5FC6D96C7FC6D6D4A5B6D6D4A5B6D6D4A5B6D6D4A5B6D01FF023F5B6D02 +C090B55A6ED9F8075C021F90B648C8FC020716F8020116E06E6C1580030702F8C9FCDB00 +3F90CAFC527379F061>48 D<EE01F0EE07F8160F163F167FED01FF150F153F4AB5FC143F +010FB6FCB8FCA54A7E14C0EBF000C8FCB3B3B3B3AE007FBA12F0A8447171F061>I<9238 +0FFFE04AB67E020F15F0027F15FE49B87E4917E0010F17F8013F8349D9C01F14FF9027FF +FC0001814801E06D6C80480180021F804890C86C8048486F8048486F8001FF6F804801C0 +6E8002F081486D18806E816E18C0B5821BE06E81A37214F0A56C5BA36C5B6C5B6C5B0003 +13C0C690C9FC90CA15E060A34E14C0A21B80601B0060626295B55A5F624D5C624D5C4D91 +C7FC614D5B4D13F04D5B6194B55A4C49C8FC4C5B4C5B4C13E04C5B604C90C9FCEE7FFC4C +5A4B5B4B5B4B0180EC0FF04B90C8FC4B5A4B5A4B48ED1FE0EDFFE04A5B4A5B4A90C9FC4A +48163F4A5ADA3FF017C05D4A48167F4A5A4990CA12FFD903FC160749BAFC5B4919805B5B +90BBFC5A5A5A5A481A005A5ABCFCA462A44C7176F061>I<923801FFFE033FEBFFF84AB7 +FC020F16E0023F16F84A16FE49B97E49DA003F80010F01F0010714F04901800101804948 +C880D97FF86F7F02E081496C834801FC6F148014FF486E6E14C08181481AE081A96C5C1B +C06C4A5C6C5C6D90C815806D5AD90FF85D90CA150062606295B55A4D5C624D5C4D5C4D91 +C7FC4D13FC4D5B4CB512E0047F1480037FB548C8FC92B612F818C018F8F0FF806F15F092 +C7003F13FC050713FF050114C071807213F8727F727F867214801BC07214E01BF0A27214 +F81BFCA37214FEA31BFFEBFF80000313E0487F001F13FC487FA2487FA2B67EA31BFEA360 +1BFCA292C8FC6C1AF84A5D4A18F06C494B14E05C6C01C04B14C06C90C915804E14006C6D +4B5B6C01F092B55A6C01FC4A5C27007FFFC001075C6D01FE013F14C0010F90B85A6D4DC7 +FC010117F8D9003F16E0020F93C8FC020015F0030749C9FC507378F061>I<F10FF04F7E +193FA2197F19FF60A260606060A2606095B5FCA25F5F5FA25F5F5F5F18BFEFFF3F5EEE03 +FE17FCEE07F8160FEE1FF0EE3FE017C0167FEEFF804B13005E4B5A15074B5A4B5A5E153F +4B5A4B5A93C7FC4A5A14034A5A5D4A5A141F4A5A4A5A5D4AC8FC5B495A5C495A130F495A +495A5C137F495A4890C9FC5B485A1207485A485A5B123F485A485A90BC12FCA8CB02F8C7 +FCB3A20307B912FCA856727BF161>I<0170187001FEEF01F86D6C160F02F8167FDAFF80 +EC07FF03FE49B5FC92B85A6262A26297C7FC61616119E061614EC8FC18F86018C095C9FC +17F817C0020701F8CAFC91CDFCB0923801FFFC031FEBFFE092B612FC020315FF020F16C0 +4A16F0027FD9003F7FDAFFF0010F13FE038001037F4AC76C8002F86E804A6F7F4A6F7F4A +834A6F7F91C980137E017C707F90CAFC1B80A21BC0A2841BE0A51BF0A313FE3803FF8000 +0F7F4813F0487F5A80B5FCA41BE0A44E14C05C7E4A18805C4A5D6C90C9150001E0606C6C +5E6D606C6C4C5B7F000794B55A6C6C6C4A5C6C6D4A5C6E4A5C26007FF8021F49C7FC6DB4 +027F5B6DD9F007B55A6D90B712E0010317806D4CC8FC6D6C15F8021F15C002034AC9FCDA +003F13804C7376F061>I<94381FFF800403B512F8043F14FE4BB77E030782031F16F003 +7F8292B5D8FC017F02039139C0001FFE4A49C7EA07FF021F01F8804A496E13804A01C014 +0F91B548023F13C04991C85A494992B5FC49494A14E0495B495E5D5B495BA290B55A5A5D +487114C0A24891C91480731300735A48F00FF896C8FC485BA45AA44849903803FFE0041F +13FE047FEBFFC04BB612F84B81030F15FFB590261FF8038092273FE0007F13E00480011F +7F4BC76C7F03FE6E7F4B6E7FDAFDF86E7FDAFFF017804B6E14C01BE05D7313F05D1BF8A2 +92C914FC85A21BFE5CA31BFFA26C5BA87EA4807EA21BFE7EA37E1BFC6E5E6C1AF8A27E6F +17F06C95B512E06D7F1BC06D6D4A14806D4C1400816D6D4A5B6D6D4A5B6D01FF4A13F001 +006E017F5B6ED9F007B55A6E90B7C7FC020F5E020316F86E16E0DA003F1580030702FCC8 +FCDB007F1380507378F061>I<EA03FCA2487E7F14C0ECFFF092BA12C0A45AA31C801C00 +63A2486263636363A26398C7FC48616249CAEA0FF801F0171F494D5A4F5A49604F5A007F +4D90C8FC60494C5A4E5A614E5A4E5A48CA127F4E5A4D5B96C9FCCA485A4D5A170F4D5A60 +173F4D5A6017FF4C5BA25E4C90CAFCA24C5A161FA24C5AA2167FA24C5AA25DA24B5BA25D +A25DA25F5DA25DA35DA392B5FCA25FA25CA45CA75CAD6E5CA26E91CBFCA26E5BED3FF8ED +0FE0527775F461>I<93B57E031F14FC92B77E020316F0020F16FC023F16FF4A8349B5D8 +800314E04901F8C7003F7F4901C0020F7F4990C800037FD91FFC6F7F49486F6C7E137F4A +7013804948827313C05A4A821BE05AA285487FA38080806E5E8003C017C08103F85D03FE +17806F6C5C6C6F160004F05C04FC4A5A6C6F5D706C13FFDDE0015B6CDCF8035BDDFC0F13 +C06DDBFF1F5B6D93B5C7FC19FC6D17F06D5F6D17806D17E06D836D6C16FC6E16FF020F83 +6E17E06E83020F83023F8391B97E4984010701F0178049D9C07F16C0013FD9801F16E049 +EB00074948010116F048497F4849023F15F84849140F4A6E15FC48160148496E6C14FE4A +151F488391C9120348050014FF193F49838500FF84854983A28586A3861BFEA27FA2007F +1AFC7F1A7F1BF86C7FF2FFF06C7F6E4C13E06C6D4C13C06C6D5E6E4C13806C6D4C13006C +6D6CED7FFE6C02E04A485A013F01FC020F13F06D9026FFC001B55A010791B712806D95C7 +FC010017FC021F16F002071680DA007F02FCC8FC030191C9FC507378F061>I<93B5FC03 +1F14F092B612FE02076F7E021F16E04A16F891B87E49DAF00713FF0107DA0001804901FC +6D6C7F49496E7F49496E7F49496E7F90B5486E7F484A8048854891C86C7FA2487114805C +481AC0A2487213E0A2484918F0A31BF8A2B5FCA27313FCA51BFEA71BFF61A27EA396B6FC +7EA2806C5FA27E606C7F607E6C6E5C6CEF1FBF6D6DEC3F3F6D6D147F6D6D14FE6D6DEB01 +FC6D01FE130701019039FFC01FF86D91B500F014FE023F15C06E15800203ECFE00DA007F +13F8030713C092C9FC4F13FCA41BF8A31BF0D91FF093B5FCEB7FFC496C18E0487F486E17 +C06048801B804E1400A26260624E5B4B5C626C91C8485B4A4B5B4A92B55A6C01F04A91C7 +FC02804A5B6C01E0020F5B6D6C023F13F002FE91B55A90273FFFE00F5C6D90B7C8FC0107 +16FC6D16F0010016C0023F92C9FC020714F09126007FFECAFC507378F061>I<96267FFF +E01670063FB6ED01F80503B700F01403053F04FC14074CB96C130F040706E0131F043F72 +133F93BA00FC137F0303DC00076D13FF030F03C09039003FFF814B02FCC8000713C3037F +02E0030113F792B600806F6CB5FC02034ACA121F4A02F8834A02E0834A4A1701027F4A83 +91B548CC7E494A85495C4C854988494A85494A85495C8A4991CDFC90B54886A2484A1B7F +A2481E3F5D481E1F5D5A1F0FA2485CA3481E075DA2F703F0489BC7FCA45DA2B6FCB27EA2 +81A47EA2F703F06FF307F87EA36C80A21F0F7E6F1CF07E6F1B1F7E20E06C6E1B3F816DF5 +7FC06D80F7FF806D806D6E4F13006D6E616D525A826D6E4F5A6D6E4F5A6E6D6C4E5A021F +6EF0FFE06E6E4D5B6E02F84D5B6E02FE050F90C7FC02006E6CEE3FFE6F02F0EEFFFC031F +02FE03035B6FDAFFC0021F13E0030303FF0103B55A030093B7C8FC043F18FC040718F004 +0118C0DC003F94C9FC050316F8DD003F1580DE007F01F0CAFC757A75F78C>67 +D<92383FFFF80207B612E0027F15FC49B87E010717E0011F83499026F0007F13FC4948C7 +000F7F90B502036D7E486E6D806F6D80727F486E6E7F8486727FA28684A26C5C72806C5C +6D90C8FC6D5AEB0FF8EB03E090CAFCA70507B6FC041FB7FC0303B8FC157F0203B9FC021F +ECFE0391B612800103ECF800010F14C04991C7FC017F13FC90B512F04814C0485C4891C8 +FC485B5A485B5C5A5CA2B5FC5CA360A36E5DA26C5F6E5D187E6C6D846E4A48806C6D4A48 +14FC6C6ED90FF0ECFFFC6C02E090263FE07F14FE00019139FC03FFC06C91B6487E013F4B +487E010F4B1307010303F01301D9003F0280D9003F13FC020101F8CBFC57507ACE5E>97 +D<93387FFF80030FB512FC037FECFF804AB712E0020716F8021F16FE027FD9F8077F49B5 +D8C000804991C7003F13E04901FC020F7F49496E7F49498049496E7F49496E7F90B55A48 +727E92C914804884485B1BC048841BE0485BA27313F05AA25C5AA21BF885A2B5FCA391BA +FCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F86C7F1A0F6C6E17F06C191F6F17 +E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13006D6D6CEC0FFE6D02E0EC3FFC +6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002034CC7FC020016F8031F15E003 +0392C8FCDB000F13E04D507BCE58>101 D<903801FFFCB6FCA8C67E131F7FB3AD95380F +FFE095B512FE05036E7E050F15E0053F15F84D81932701FFF01F7F4CD900077FDC07FC6D +80DC0FF06D80DC1FC07F4C48824CC8FC047E6F7F5EEDFDF85E03FF707F5EA25EA25EA293 +C9FCA45DB3B3A6B8D8E003B81280A8617879F76C>104 D<902601FFFCEC7FFEB6020FB5 +12F0057F14FE4CB712C0040716F0041F82047F16FE93B5C66C7F92B500F0010F14C0C66C +0380010380011F4AC76C806D4A6E8004F06F7F4C6F7F4C6F7F4C8193C915804B7014C086 +1DE0A27414F0A27414F8A47513FCA57513FEAF5113FCA598B512F8A31DF0621DE0621DC0 +621D806F5E701800704B5B505B704B5B7092B55A04FC4A5C704A5C706C010F5C05E0013F +49C7FC9227FE7FFC01B55A70B712F0040F16C0040393C8FC040015F8053F14C0050301F0 +C9FC94CCFCB3A6B812E0A85F6F7ACD6C>112 D<902601FFF8EB07FEB691383FFFC094B5 +12F00403804C14FE4C8093261FFC3F138093263FE07F13C0DC7F80B5FCC66C5D011FDAFE +0114E06DEBF9FC16F815FB16F016E015FF16C07114C05E72138095381FFE0093C76C5AF0 +01E095C8FCA25DA65DB3B3A2B812F8A8434E7ACD4F>114 D<15FFA75CA55CA45CA25CA2 +5CA25CA25C91B5FCA25B5B5B131F5B90B9FC120FBAFCA6D8000791C9FCB3B3A3F01FE0AE +183F7014C07F187F7014806D16FF826D4B13006E6D485AEEFE0F6E90B55A020F5D6E5D02 +0115C06E6C5C031F49C7FC030113F03B6E7CEC4B>116 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fg cmsl10 10.95 38 +/Fg 38 91 df<007FB5FCA2B512FEA418067C961E>45 D<121EEA3F80EA7FC012FFA413 +80EA7F00123C0A0A788919>I<1703EF0780170FA2EF1F00A2173EA25FA25FA24C5AA24C +5AA24C5AA24C5AA24CC7FCA2163E167E167C5EA24B5AA24B5AA24B5AA24B5AA24BC8FCA2 +153EA25DA25DA24A5AA24A5AA24A5AA24A5AA24AC9FCA2143EA25CA25CA2495AA2495AA2 +495AA2495A131F91CAFC133EA25BA25BA2485AA2485AA2485AA2485AA248CBFCA2123EA2 +5AA25AA21270315B7FC32D>I<EC07F8EC3FFF9138FC0FC0903903F003E0903907C001F0 +D90F8013F849C7FC013E14FC017E147C017C147E13FC485AA20003157F5B1207A2120F5B +A2121F16FF5BA2123FA44848EB01FEA648C7EA03FCA5ED07F8A25A16F0A2150F16E0A3ED +1FC0A21680007E143F1600157E123E003F5C4A5AD81F805B000FEB07E06C6C485A2603F0 +3FC7FC3800FFFCEB1FE0283F79BC2D>I<157015F014011407143F903803FFE0137FEBFF +CFEBF80F1300141F15C0A5143F1580A5147F1500A55C5CA513015CA513035CA513075CA5 +130F5CA3131F497EB612F8A31D3D78BC2D>I<EC01FE91380FFFE0023F13F89138FC07FC +903901E001FE903907C000FF49C7EA7F80011E15C0163F4915E05B0170141F13FF80A35A +163FA26C90C7FC137E0118EC7FC090C8FCEEFF80A24B1300A24B5A5E4B5A4B5A4B5A5E4B +5A4BC7FC15FEEC01F84A5A4A5A4A5A4AC8FC143E5C5CEB01E04948130E49485B49C7FC13 +1E495C13705B48485C484814F0000FB6FC5A485D5AB7FC5EA22B3D7CBC2D>I<EC07FC91 +383FFF809138F80FE0903903C007F09039078003FC90380F0001011C14FE013C14FF137F +1480EBFFC0A31480A291380003FE137E90C7FCED07FC16F8150F16F0ED1FE016C0ED3F80 +ED7E005DEC07F0903803FF8015F090380001FC6E7EED7F80ED3FC0A2ED1FE016F0A316F8 +A4120EEA3F80486C133F16F012FFA216E0157F5B48C7EAFFC000F0158000704913001278 +6C495A003EEB07F86C495A390FE03FE00003B51280C649C7FCEB1FE0283F7ABC2D>I<16 +1C163C167CA216FCED01F815031507150FA2151DED3BF0157315E315C31401EC03839138 +0707E0140E141CA2143814709138E00FC0EB01C014801303EB0700130E49EB1F805B1330 +13705B485A4848EB3F0090C7FC5A120E5A5A48147E1260B8FCA3C73801FE00A25DA41403 +A25DA314074A7E0107B512F8A3283E7BBD2D>I<01061403D90780131F90390FF801FE91 +B512FC16F816F016E0168049EBFE0015F890381C7FC091C8FCA3133C1338A513781370A2 +EC1FE0ECFFF8903873E03E9038FF001F01FCEB0F804914C049EB07E04914F049130390C7 +FC16F8A61507A21206EA3F80487EA2150F00FF15F0A24914E090C7121F00FC15C000F014 +3F00701580ED7F0012786C14FE4A5A6C495A390F800FE03907E03FC06CB5C7FCC613FCEB +1FE0283F7ABC2D>I<ED7F80913803FFE091380FC0F091383E003802FC131C495A494813 +FE903807E003EB0FC090381F8007133FD97F0013FC01FE1303ED01F0484890C7FC1203A2 +485AA2120F5BA2001FEB3F809038E0FFE0393FE3C0F89038E7007C01EE7F01FC133F4848 +EB1F80A24914C05B16E0A2485AA216F05BA2ED3FE0A290C7FCA4157F16C0A316804814FF +007E1500007F5C14016C5C4A5A6C6C485A4A5A6C6C485A2607E07FC7FC3803FFFEC613F8 +EB3FC0273F78BC2D>I<EA0380120713E090B712805AA217005E485D5E001EC85A484A5A +00385D150300784A5A00704AC7FC151E5D485CC8127015F04A5A4A5A4A5A4AC8FC140E14 +1E5C147C14785C1301495AA213075C130F495AA2133F91C9FC5BA25B5B1201A312035BA2 +1207A3485AA5121F5BA26C5AEA0780294074BD2D>I<EC03FC91381FFF8091387C07E090 +3901F001F0903903C000F84948137C49C7123E131E013E141F133C137C137813F8A3163F +486C143E167E6D147C6C6C14FC6E13F89138C001F09138F003E090397FF807C09138FC0F +0090383FFF3E6D13F86D13E06D7F01017F8101077F90391F1FFF80D93E0F13C0EBF80726 +01F00113E048486C13F04848137F4848131F001FEC0FF890C71207003E1403A2481401A3 +00FC15F05AA3ED03E0A26CEC07C0007C1580007E140F003EEC1F00003F143E6C6C5B6C6C +485A3907F00FE00001B512806C6C48C7FCEB0FF0283F7ABC2D>I<EC07F8EC3FFE9138FC +0F80903901F007C0903907E003E0D90FC013F090381F8001013F14F8EB7F004914FC4848 +1300A24848EB01FEA21207A3485AA41503121F5BA31507A2000F15FC150FA2151F120715 +3F000315F86C6C137F000014EF90387C01CF90393E078FF090380FFE1FEB03F890C713E0 +A2ED3FC0A3ED7F8016005D003F5C487E4A5A00FF495A5D4A5A49485A48495A007049C7FC +0078137E383E03FC381FFFF06C13C0D801FEC8FC273F79BC2D>I<13F0EA01FC1203EA07 +FEA313FCA2EA03F8EA01E0C7FCB3121EEA3F80EA7FC012FFA41380EA7F00123C0F2778A6 +19>I<17E016011603831607A2160FA2161F83163FA2167F167716F7EEE7FCED01E316C3 +150316831507EE03FEED0F01150E151E151C153C03387FED7800157015F05D4A4880177F +4A5AA24AC7FCA2020E81173F5C021FB6FC5CA20270C7EA3FE0171F5CA2495AA249488117 +0F49C8FCA2130EA24982013C1507A2137CD801FE4B7E2607FF80EC3FFEB500F00107B512 +FC19F85E3E417DC044>65 D<013FB7FC18E018FC903B007FE00007FE6E48903801FF8094 +38007FC05DF03FE0F01FF0A3027F16F892C8FCA54A16F04A153F19E0187F19C0F0FF8001 +014B13004A4A5A4D5AEF1FF04D5ADC03FFC7FC49B612F8EFFF8002F8C7EA3FE0EF0FF0EF +07FC717E010715014A81711380A319C0130F5CA5011F4B13805C19005F601707013F4B5A +4A4A5A4D5A4D5A017F913801FF8001FF020F90C7FCB812FC17F094C8FC3D3E7DBD40>I< +DCFFC01338030F01F01378037F01FC13F0913A01FF803F01913A07FC000781DA1FE0EB03 +C3DA7FC0EB01E74AC812FF4948ED7FE0D907FC153F495A4948151F495A4948150F494816 +C018074890C9FC485AA2485A000F1880491603121FA248481607A295C7FC485AA412FF5B +A75BA2181C183C1838A27F007F1778187018F0003F5F6D150160001F16036C6C4B5A95C7 +FC6C6C5D6C6C151E6C6C5D6C6C15F86D6C495A6D6CEB07C0D91FF0EB1F80D907FE01FEC8 +FC0101B512F86D6C13E0DA07FEC9FC3D4276BF42>I<013FB7FC18E018F8903B007FF000 +0FFE6E48EB01FF9438007FC04B6E7E180F85727E727E147F4B6E7EA2727EA302FF178092 +C9FCA54918C05CA41A8013034A5DA41A0013074A5DA261A24E5A130F4A5E180F61181F61 +011F4C5A5C4E5A4EC7FC4D5A4D5A013F4B5A4A4A5AEF3FE0EF7F80017F4A48C8FC01FFEC +1FFCB812F0178004FCC9FC423E7DBD45>I<013FB812F8A39026007FF0C7127F6E48140F +18034B14011800A31978147F4B1570A502FF147092C7FCA3190017F0495D4A1301A21607 +161F91B6FC495DA29138FC003F160F1607160301075D5CA219E0180119C0010FEC07004A +90C712031980A218071900011F5E5C181EA2183E183C013F167C4A15FC4D5A1707017F15 +1F01FF4AB45AB9FCA2603D3E7DBD3E>I<013FB812E0A3903A007FF000016E48EB003F18 +0F4B14071803A31801147F4B15C0A514FF92C71270A395C7FC17F0495D5C160116031607 +161F49B65AA39138FC003F160F160701075D4A1303A5010F4AC8FC5C93C9FCA4131F5CA5 +133F5CA3137FEBFFF0B612F8A33B3E7DBD3B>I<4BB46C1370031F01F013F0037F9038FC +01E0913A03FF807E03913A0FF8000F83DA1FE0EB07C7DA7F80EB01EF4AC812FFD903FE16 +C04948157F4948153F495A4948151F495A4948168091C9120F5A485AA2485A000F180049 +82121FA248485EA295C7FC485AA412FF5BA6043FB512E05BA29339001FFC00715AA2607F +127FA2171F123F6D5EA2121F7F000F163F6C7E6C6C4B5A7F6C6C15FF6C6DEB01EFD93FC0 +EB07C7D91FF0EB1F87D907FE9038FE03800101B5EAF8016D6C01E0C8FCDA07FEC9FC3C42 +76BF47>I<013FB5D8F807B6FC04F015FEA29026007FF0C7380FFE006E486E5AA24B5DA4 +180F147F4B5DA4181F14FF92C85BA4183F5B4A5EA491B8FC5B6102FCC8127FA318FF1307 +4A93C7FCA45F130F4A5DA41703131F4A5DA41707133F4A5DA3017F150F496C4A7EB6D8E0 +1FB512FC6115C0483E7DBD44>I<011FB512FC5BA29039003FF8006E5AA25DA5143F5DA5 +147F5DA514FF92C7FCA55B5CA513035CA513075CA5130F5CA5131F5CA3133F497E007FB5 +12F0A2B6FC263E7EBD21>I<013FB500F8010FB5FC4C5BA29026007FF0C7000313E06E48 +6E130019FC4B15F04E5A4E5A4E5A061EC7FC027F5D4B5C4D5A4D5AEF07804DC8FC02FF14 +1E92C7127C5FEE01E04C5A4C5A49021FC9FC4A5B5E4C7E5D03077F01035B9139FC1F3FE0 +153C4B6C7E15F09139FFE00FF84913C092380007FC5C4A6D7E5C707E130F4A6D7F84177F +717EA2011F6F7E5C717EA2717EA2013F6F7E5C84A2017F83496C4A13E0B600E0017F13FF +A24B90B6FC483E7DBD47>75 D<013FB512FEA25E9026007FF8C8FCEC3FE0A25DA5147F5D +A514FF92C9FCA55B5CA513035CA513075CA21838A21870130F5CA218E0A3011F15014A15 +C01703A21707EF0F80013F151F4A143F177FEFFF00017F140301FF143FB9FC5FA2353E7D +BD39>I<90263FFFF093381FFFF85013F0629026007FF8EFF000023F4D5AA2023B933801 +DFC0A2DA39FCED039FA2F1073F14790271040E5BEC70FE191C19381A7F02F01670DAE07F +94C7FC19E0A2F001C06201016D6C495A02C05FF00700A2180E6F6C14010103161C028003 +385BA218706F7EF0E00313070200DA01C05BA2923907F00380A294380700075B010E9026 +03F80E5C5FA25F190F011E6D6C5A011C605FA2EEFDC0DB00FF141F013C5D013860013C92 +C7FC017C5C01FE027E143F2607FF80017C4A7EB500FC037FB512E004785E4A1338553E7C +BD53>I<90263FFFE0023FB5FC6F16FEA29026003FF8020313C0021F030013004A6C157C +023B163C6F15381439810238167802787FDA707F157082153F82031F15F002F07FDAE00F +5D8215078203031401010180DAC0015D82811780047F1303010315C04A013F5C17E0161F +17F0040F1307010715F891C7000791C7FC17FC160317FE04015B4915FF010E6E130E188E +177F18CEEF3FDE011E16FE011C6F5AA2170FA21707133C01386F5A133C017C150113FE26 +07FF801400B512FC18705C483E7DBD44>I<923803FF80031F13F09238FE01FE913903F0 +003FDA0FC0EB1FC0DA3F80EB07E0027EC76C7E49486E7E49488149486E7E4948157F495A +013F17804948ED3FC049C9FCA24848EE1FE012035B000718F05B120FA2485A19F8123F5B +A2127FA219F04848163FA5F07FE0A35BF0FFC0A219805F19007F4D5A127F4D5A60003F16 +0F6D5E001F4C5A4D5A6C6C4B5A95C7FC6C6C15FE00034B5A6C6C4A5A6C6C4A5A017FEC1F +C06D6C495AD90FE001FEC8FC903903F807F80100B512C0DA0FFCC9FC3D4276BF47>I<01 +3FB612FEEFFFE018F8903B007FF0000FFC6E48EB01FF7113804BEC7FC0183F19E0F01FF0 +A2147F5D19F8A402FFED3FF092C8FCA219E0A2F07FC05B4AEDFF8019004D5A4D5AEF0FF8 +0103ED3FE04A903801FF8091B648C7FC17F002FCCAFCA213075CA5130F5CA5131F5CA513 +3F5CA3137F497EB612E0A25D3D3E7DBD3E>I<013FB612F017FF18E0903B007FF0003FF8 +6E48EB07FCEF01FE4B6D7EF07F8019C0183F19E0147F4B15F0A502FFED7FE092C8FCA219 +C0F0FF80A2494B13004A5D4D5AEF0FF04D5AEF7F800103DA07FEC7FC91B612F017809139 +FC0007E0EE03F8EE00FC0107814A147F717EA284A2130F5CA484011F157F5CA41902013F +17075CA2F0F00F017F170E496C143FB600E0011F131C94380FF83C4B01071378CA3801FF +E09438003F8040407DBD43>82 D<9238FF80070207EBE00F021FEBF81E91387F00FE02FC +EB1F3ED903F0EB0FFE49481307494813034AEB01FC49C7FC491400133E137E177C491578 +A57F1770A26D1500808080EB7FFEECFFE06D13FEEDFFC06D14F06D14FC01038001008014 +3F02031480DA003F13C015031500EE7FE0163F161FA2160F121CA31607160F003C16C0A3 +1780003E151F1700007E5D007F153E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF8 +7F803F8027F01FFFFEC7FCD8E00713F839C0007FC030427BBF33>I<0007B912F0A33C0F +FE000FF8003F01F0160F01C04A13034848160190C7FC121EF000E048141F5E1238A21278 +1270153F5E5AA3C81600157F5EA515FF93C9FCA55C5DA514035DA514075DA5140F5DA314 +1FEC7FFC0003B7FCA33C3D76BC42>I<B600E090B512FC4B15F8A2000101C0C7000F1300 +6C49EC03FCEF01F091C9FC60A317015A495EA417031203495EA4170712074993C7FCA45F +120F49150EA4171E121F49151CA4173C123F491538A31778177017F05F001F15015F1603 +6D4A5A000F93C8FC5E6C6C141E6C6C5C000115F86C6C495A017FEB07C090393FC03F8090 +260FFFFEC9FC010313F89038007FC03E4073BD44>I<B6020FB5FC19FEA2000301E00201 +13E06C01809138007F8091C9EA7E006C173C18386E15781870017F16F0604D5A804D5A13 +3F4DC7FCA26E140E171E011F151C173C17386E1478010F15705FA24C5A8001074A5AA24C +C8FC5E6E130E0103141E161C163C16386E5B13015EA24B5A14FF6D495AA24BC9FC5D158E +EC7F9E159C15B8A215F0143F5DA25DA26E5AA292CAFCA2140E404074BD44>I<B6017FB5 +D88007B512804A1A00A2000701C0010101E0C713F06C90C80180EC3FC06C48735A99C7FC +057F150E1B1E6D191C6C1A3C1B3805FF15787214705E636EEB03BF017F4E5AEE073F505A +040E7F051F4AC8FC161C6E170E013F143862167804706D5BEEF00F04E05D90381FE00104 +C015F003035E0480140106F85B9226070007130302F05F010F010E150797C9FC5D190E4B +EB03FC616E5A01075F5D61DAF9C014FE05015BECFB8002FF6F5A7F92C75CA24A93CAFC83 +5C606D5A605C604A15781870594074BD5D>I<010FB500F090B512F85B5FD9003F902680 +003F1300DA0FFEC7EA1FF84BEC0FE00207168096C7FC6E6C141E181C6E6C143C606E6D5B +4D5ADB7FC05B4D5A92383FE0074DC8FC92381FF01E171C6F6C5A5F923807FCF0EEFDE06F +B45A5F6F90C9FCA26F7FA2707EA216FF4B7FED03DF9238079FF0ED0F1F92380E0FF8151C +92383C07FC15784B6C7EEC01E04B6C7EEC038002076D7F4AC7FC021E6E7E5C02386E7E5C +02F06E7E495A49486E7E130749486E7E497E017F4B7E2603FFF091383FFF80007F01FC49 +B512FEB55CA2453E7EBD44>I<B66C0103B51280A3000101F0C8EBF0006C49ED7FC06D48 +6FC7FC6E153E013F163C606D6C5D606D6C4A5A17036D6C4A5A95C8FC6E140E0103151E5F +6D6C14385F6D6D13F04C5ADA7FC05B4C5AEDE007023F49C9FC161E91381FF01C5E91380F +F8785E6E6C5AEDFDC015FF6E5B93CAFC6E5AA35DA21403A45DA21407A45DA2140FA4141F +4A7E013FB512F0A3413E75BD44>I<010FB712FEA39239C00007FCD91FFCC7EA0FF814F0 +4AEC1FF00280EC3FE091C8EA7FC0013EEDFF80A2013C4A13004C5A494A5A4C5A13704C5A +4C5A494A5A4C5AA290C74890C7FC4B5A4B5A4B5AA24B5A4B5A4B5A4B5AA24A90C8FC4A5A +4A5A4A5AA24A5A4A5A4A48EB01C04A5AEF03804990C7FC495A495A494814071800495A49 +485C495A495A171E4890C8123E485A4848157E484815FE4C5A484814074848141F4848EB +01FFB8FC5FA2373E7BBD38>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fh cmbx10 10.95 49 +/Fh 49 122 df<EDFFF8020F13FF027F8049B612E001079038C01FF090390FFE0007D91F +F8497ED93FE0131F4948497E13FF5C5A91C7FCA2705A705AEE03C093C8FCA6EE03FCB8FC +A50001903880001F160FB3AB007FD9FE03B512F0A534407EBF3A>12 +D<B612E0A91B097F9823>45 D<161C163E167EA216FE16FC150116F8A2150316F0A21507 +16E0150F16C0A2151F1680153F1600A25D157E15FE5DA214015DA214035D14075DA2140F +5D141F5DA2143F92C7FC5C147EA214FE5CA213015C13035CA213075C130F5CA2131F5C13 +3F91C8FCA25B137EA213FE5B12015BA212035B12075BA2120F5B121F5BA2123F90C9FCA2 +5A127E12FE5AA25A1278275B7AC334>47 D<ECFFE0010713FC011F13FF017F14C0D9FFE0 +7F489038803FF03A03FE000FF848486D7EA248486D7E001F81A348486D1380A3007F16C0 +A500FF16E0B3A2007F16C0A5003F16806D5BA2001F1600A2000F5D6D13076C6C495A6C6C +495A6C6D485A6C9038E0FFE06DB55A011F91C7FC010713FC010013E02B3D7CBB34>I<14 +0F143F5C495A130F48B5FCB6FCA313F7EAFE071200B3B3A8007FB612F0A5243C78BB34> +I<903803FF80013F13F890B512FE00036E7E4881260FF80F7F261FC0037F4848C67F486C +6D7E6D6D7E487E6D6D7EA26F1380A46C5A6C5A6C5A0007C7FCC8FC4B1300A25E153F5E4B +5AA24B5A5E4A5B4A5B4A48C7FC5D4A5AEC1FE04A5A4A5A9139FF000F80EB01FC495A4948 +EB1F00495AEB1F8049C7FC017E5C5B48B7FC485D5A5A5A5A5AB7FC5EA4293C7BBB34>I< +903801FFE0010F13FE013F6D7E90B612E04801817F3A03FC007FF8D807F06D7E82D80FFC +131F6D80121F7FA56C5A5E6C48133FD801F05CC8FC4B5A5E4B5A4A5B020F5B902607FFFE +C7FC15F815FEEDFFC0D9000113F06E6C7E6F7E6F7E6F7E1780A26F13C0A217E0EA0FC048 +7E487E487E487EA317C0A25D491580127F49491300D83FC0495A6C6C495A3A0FFE01FFF8 +6CB65A6C5DC61580013F49C7FC010313E02B3D7CBB34>I<ED01F815031507A2150F151F +153FA2157F15FF5C5CA25C5CEC1FBFEC3F3F143E147C14FCEB01F814F0EB03E01307EB0F +C0EB1F801400133E137E5B485A5B485A1207485A5B48C7FC5A127E5AB812F8A5C8387FF8 +00AA49B612F8A52D3C7DBB34>I<00071538D80FE0EB01F801FE133F90B6FC5E5E5E5E93 +C7FC5D15F85D15C04AC8FC0180C9FCA9ECFFC0018713FC019F13FF90B67E020113E09039 +F8007FF0496D7E01C06D7E5B6CC77FC8120F82A31780A21207EA1FC0487E487E12FF7FA2 +1700A25B4B5A6C5A01805C6CC7123F6D495AD81FE0495A260FFC075B6CB65A6C92C7FCC6 +14FC013F13F0010790C8FC293D7BBB34>I<EC07FF023F13C049B512F001078049EB03FC +90383FF80090397FE001FE9038FFC0034849487E48495AA2485A120FA2485A6F5A003F6E +5A6F5A92C8FC485AA21402EC3FFE00FF496C7E01F9B512E001FB809138E03FF89039FF80 +0FFC4A6C7E825B6F13804915C0A317E05BA4127FA5123FA26D15C0121FA2000F4A13806D +150012076C6C495A6C6D485A6C9038E07FF86DB55A6D5C6D1480010749C7FC010013F02B +3D7CBB34>I<121F7F13F890B712F0A45A17E017C0178017005E5E5A007EC7EA01F84B5A +007C4A5A4B5A4B5A93C7FC485C157E5DC7485A4A5AA24A5A140F5D141F143F5D147FA214 +FF92C8FC5BA25BA3495AA3130FA5131FAA6D5A6D5A6D5A2C3F7ABD34>I<ECFFF0010713 +FE011F6D7E017F14E09039FFC07FF03A01FE001FF848486D7E48486D7E1503485A828112 +1FA27F7F7F6D5B02C05B14F06C6D485A9138FE0FF89138FF9FF06CECFFE06C5D5E6C92C7 +FC6C816D14E0011F80498090B67E48812607FE3F7F48486C1480381FF807D9F00114C048 +486C7E007F8049010F13E0150348487F81167FA2163FA36D15C0127FEE7F807F6C6CECFF +006C6C5B01FEEB07FE3A0FFFC03FFC6C90B55A000115E06C6C5C011F49C7FC010113F02B +3D7CBB34>I<903801FFE0010F13FC013F13FF90B612C04801E07F489038003FF048486D +7E000F6E7E485A6F7E123F48488081178012FFA217C0A517E0A4007F5CA4003F5C6C7E5D +6C7E00075C3903FF80FB6C13FF6C6C13F36D13C3010F018313C090380008031400A24B13 +80EA03F0487E486C1500487E4B5AA25E151F4B5A495C6C48EBFFE049485B2607FC0F5B6C +B6C7FC6C14FC6C14F06D13C0D90FFEC8FC2B3D7CBB34>I<16FCA24B7EA24B7EA34B7FA2 +4B7FA34B7FA24B7FA34B7F157C03FC7FEDF87FA2020180EDF03F0203804B7E02078115C0 +82020F814B7E021F811500824A81023E7F027E81027C7FA202FC814A147F49B77EA34982 +A2D907E0C7001F7F4A80010F835C83011F8391C87E4983133E83017E83017C81B500FC91 +B612FCA5463F7CBE4F>65 D<B812F8EFFF8018F018FC8426003FFCC7EA3FFF050F138071 +13C07113E08319F0A27113F8A719F05FA24D13E019C04D13804D1300EF3FFE933801FFF8 +91B712E0188018F818FE02FCC7380FFF80050313C07113E07113F019F8F07FFCA2F03FFE +A219FFA38460A419FE187FA2F0FFFC4D13F85F4D13F0053F13E0BA12C0190018FC18F095 +C7FC403E7DBD4A>I<922607FFC0130E92B500FC131E020702FF133E023FEDC07E91B7EA +E1FE01039138803FFB499039F80003FF4901C01300013F90C8127F4948151FD9FFF8150F +48491507485B4A1503481701485B18004890CAFC197E5A5B193E127FA349170012FFAC12 +7F7F193EA2123FA27F6C187E197C6C7F19FC6C6D16F86C6D150119F06C6D15036C6DED07 +E0D97FFEED0FC06D6CED3F80010F01C0ECFF006D01F8EB03FE6D9039FF801FFC010091B5 +5A023F15E002071580020002FCC7FC030713C03F407ABE4C>I<B812F8EFFF8018F018FC +18FF26003FFCC76C13C005077F05017F716C7E727E727E727E721380A27213C0A27213E0 +A21AF084A21AF8A41AFCA5197FA319FFA51AF8A41AF0A2601AE0A24E13C0A24E13804E13 +00604E5A4E5A4D485A050713E0057F5BBA5A4EC7FC18F818C005F8C8FC463E7DBD50>I< +BAFCA4198026003FFEC7123F1707170183183FA2181FF00FC0A31807EE07C0A3F003E0A3 +160F95C7FC161F163F16FF91B6FCA54AC6FC163F161F040F147CA2160719F8A593C71201 +A219F01803A21807A2180FF01FE0183F18FF1703173FBAFCA219C0A33E3D7DBC45>I<B9 +12FEA48426003FFEC77E170F1703170084A284F01F80A3180FA2EE07C0A2F007C0A4040F +90C7FCA2161F163F16FF91B6FCA54AC6FC163F161F160FA21607A693C9FCACB712E0A53A +3D7DBC42>I<922607FFC0130E92B500FC131E020702FF133E023FEDC07E91B7EAE1FE01 +039138803FFB499039F80003FF4901C01300013F90C8127F4948151FD9FFF8150F484915 +07485B4A1503481701485B18004890CAFC197E5A5B193E127FA34994C7FC12FFAB0407B6 +12FC127F7FA3003F92C7383FFE00A27F7EA26C7FA26C7F6C7FA26C7F6C7FD97FFE157F6D +6C7E010F01E014FF6D01F813036D9038FF801F010091B512F3023F15C00207ED803E0200 +9138FE000E030701E090C7FC46407ABE52>I<B71280A526003FFEC7FCB3B3B0B71280A5 +213E7DBD28>73 D<B6037FB512E0A2818181D8003F6D9139001F800081A281816E7E6E7F +6E7F80826E7F6E7F6E7F6E7F157F826F7F6F7F6F7F6F7F81836F7F6F7F707E701380A270 +13C07013E07013F07013F87013FCA27013FEEF7FFF71139F7113DF8319FF8383838384A2 +8484848484A284B600C080197F193F191FA24B3E7DBD52>78 D<ED3FFF0203B512F0021F +14FE027F6E7E902701FFF80713E00107D9C00013F84990C7EA3FFCD93FFCEC0FFF49486E +7F49486E7F48496E7F4A80488448496F7EA24890C96C7E4884A249161F003F84A3484870 +1380A400FF19C0AD007F19806D5EA3003F1900A26D5E6C60A26C6D4B5AA26C6D4B5A6C6D +4A5BA26C6D4A5B6C6D4A5B6D6C4A5B6DB4023F90C7FC6D01C0EBFFFE0107D9F80713F801 +0190B612E06D5E021F4AC8FC020314F0DA003F90C9FC42407ABE4F>I<B812F017FF18C0 +18F018FC26003FFCC77FEF1FFF7113807113C07113E0A27113F0A319F8A819F0A34D13E0 +19C05F4D1380053F1300EFFFFE91B712F860188005FCC7FC4ACAFCB3A4B77EA53D3E7DBD +47>I<B87E17FCEFFF8018F08428003FFC000113FE9338003FFF050F7F717F717FA28583 +85A761A25F61614D5B4D90C8FCEF3FFE4CB45A91B712F018C04DC9FC717E9126FC000F7F +040113F0707F717EA2717EA2717EA685A6F207C019C0A271140F07E01380B76DEBF01F71 +9038FC3F007190B5FC716C5B061F13F8CB000113E04A3F7DBD4E>82 +D<903A03FFC001C0011FEBF803017FEBFE0748B6128F4815DF48010013FFD80FF8130F48 +481303497F4848EB007F127F49143F161F12FF160FA27F1607A27F7F01FC91C7FCEBFF80 +6C13F8ECFFC06C14FCEDFF806C15E016F86C816C816C816C16806C6C15C07F010715E0EB +007F020714F0EC003F1503030013F8167F163F127800F8151FA2160FA27EA217F07E161F +6C16E06D143F01E015C001F8EC7F8001FEEB01FF9026FFE00713004890B55A486C14F8D8 +F81F5CD8F00314C027E0003FFEC7FC2D407ABE3A>I<003FB912FCA5903BFE003FFE003F +D87FF0EE0FFE01C0160349160190C71500197E127EA2007C183EA400FC183F48181FA5C8 +1600B3AF010FB712F8A5403D7CBC49>I<B76C90B61280A526003FFEC9003EC7FCB3B3A4 +197E011F177C80A26D17FC616D6D14014E5A6D6D4A5A6D6D140F6D01F8EC3FC0DA7FFEEC +FF8091273FFFC00F90C8FC020F90B512FC02035D020015E0031F1480030101F8C9FC493F +7DBD50>I<903807FFC0013F13F848B6FC48812607FE037F260FF8007F6DEB3FF0486C80 +6F7EA36F7EA26C5A6C5AEA01E0C8FC153F91B5FC130F137F3901FFFE0F4813E0000F1380 +381FFE00485A5B485A12FF5BA4151F7F007F143F6D90387BFF806C6C01FB13FE391FFF07 +F36CEBFFE100031480C6EC003FD91FF890C7FC2F2B7DA933>97 D<13FFB5FCA512077EAF +EDFFE0020713FC021FEBFF80027F80DAFF8113F09139FC003FF802F06D7E4A6D7E4A1307 +4A80701380A218C082A318E0AA18C0A25E1880A218005E6E5C6E495A6E495A02FCEB7FF0 +903AFCFF01FFE0496CB55AD9F01F91C7FCD9E00713FCC7000113C033407DBE3A>I<EC7F +F00107B5FC011F14C0017F14E09039FFF01FF0489038800FF848EB001F4848EB3FFC120F +485AA2485AA2007FEC1FF849EB0FF0ED03C000FF91C7FCAB127F7FA3003F153E7F001F15 +7E6C6C147C6C6C14FC91388001F86C9038C003F0C69038F81FE06DB512C0011F14800107 +EBFE009038007FF0272B7DA92E>I<EE07F8ED07FFA5ED003F161FAFEC7FF0903807FFFE +011FEBFF9F017F14DF9039FFF01FFF48EBC00348EB00014848EB007F485A001F153F5B12 +3FA2127F5BA212FFAA127FA37F123FA26C6C147F120F6D14FF6C6C01037F6C6D48EBFFE0 +6CEBF03F6C6CB512BF6D143F010713FC010001E0EBE00033407DBE3A>I<ECFFF0010713 +FE011F6D7E017F809039FFE07FE0489038801FF048496C7E48486D7E48486D7E121F4913 +01003F81A2485A6F1380A212FFA290B7FCA401F0C9FCA5127FA27F123FEE0F806C7E161F +6C6C15006C6C5C6C6D137E6C9038E001FC6C9038F80FF8013FB55A6D14C0010391C7FC90 +38007FF8292B7DA930>I<EC07FE91387FFF8049B512C0010714E090390FFE3FF0EB1FF0 +90393FE07FF8EB7FC013FF1480A2489038003FF0ED1FE0ED0FC092C7FCAAB612E0A50001 +0180C7FCB3AC007FEBFF80A525407DBF20>I<903A03FF8007F0013F9038F83FF8499038 +FCFFFC48B712FE48018313F93A07FC007FC34848EB3FE1001FEDF1FC4990381FF0F81700 +003F81A7001F5DA26D133F000F5D6C6C495A3A03FF83FF8091B5C7FC4814FC01BF5BD80F +03138090CAFCA2487EA27F13F06CB6FC16F016FC6C15FF17806C16C06C16E01207001F16 +F0393FE000034848EB003F49EC1FF800FF150F90C81207A56C6CEC0FF06D141F003F16E0 +01F0147FD81FFC903801FFC02707FF800F13006C90B55AC615F8013F14E0010101FCC7FC +2F3D7DA834>I<13FFB5FCA512077EAFED1FF8EDFFFE02036D7E4A80DA0FE07F91381F00 +7F023C805C4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5333F7CBE3A>I<EA01F8487E48 +7E487E481380A66C13006C5A6C5A6C5AC8FCA913FFB5FCA512077EB3ABB512F8A515407C +BF1D>I<13FFB5FCA512077EB3B3AFB512FCA5163F7CBE1D>108 D<01FFD91FF8ECFFC0B5 +90B5010713F80203DAC01F13FE4A6E487FDA0FE09026F07F077F91261F003FEBF8010007 +013EDAF9F0806C0178ECFBC04A6DB4486C7FA24A92C7FC4A5CA34A5CB3A4B5D8FE07B5D8 +F03FEBFF80A551297CA858>I<01FFEB1FF8B5EBFFFE02036D7E4A80DA0FE07F91381F00 +7F0007013C806C5B4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A533297CA83A>I<EC7FF0 +903803FFFE011FEBFFC0017F14F09039FFE03FF8489038800FFC3A03FE0003FE48486D7E +000F168048486D13C0A2003F16E049147F007F16F0A400FF16F8AA007F16F0A46C6CECFF +E0A2001F16C06C6C491380A26C6C4913003A03FF800FFE6C9038E03FFC6C6CB512F0011F +14C0010791C7FC9038007FF02D2B7DA934>I<01FFEBFFE0B5000713FC021FEBFF80027F +80DAFF8113F09139FC007FF8000701F06D7E6C496D7E4A130F4A6D7E1880A27013C0A382 +18E0AA4C13C0A318805E18005E6E5C6E495A6E495A02FCEBFFF0DAFF035B92B55A029F91 +C7FC028713FC028113C00280C9FCACB512FEA5333B7DA83A>I<3901FE01FE00FF903807 +FF804A13E04A13F0EC3F1F91387C3FF8000713F8000313F0EBFFE0A29138C01FF0ED0FE0 +91388007C092C7FCA391C8FCB3A2B6FCA525297DA82B>114 D<90383FFC1E48B512BE00 +0714FE5A381FF00F383F800148C7FC007E147EA200FE143EA27E7F6D90C7FC13F8EBFFE0 +6C13FF15C06C14F06C806C806C806C80C61580131F1300020713C014000078147F00F814 +3F151F7EA27E16806C143F6D140001E013FF9038F803FE90B55A15F0D8F87F13C026E00F +FEC7FC222B7DA929>I<EB07C0A5130FA4131FA3133F137FA213FF5A1207001FEBFFFEB6 +FCA40001EBC000B3151FA96CEBE03EA2017F137EECF8FC90383FFFF86D13F0010713E001 +001380203B7EB929>I<D9FF80EB0FF8B5EB0FFFA50007EC007F6C153FB3A5167FA316FF +6C5C4B7F6C903AC007DFFFE09138F01F9F6DB5121F6D13FE010F13F8010101E0EBE00033 +2A7CA83A>I<B500FC90383FFFC0A5000101C0903803E0006E1307A26C5E6E130F017F5D +6E131F013F92C7FC6E5B011F143E6E137E010F147C6E13FCA26D5C15816D5C15C36D5C15 +E76D5C15FF6E5BA36E90C8FCA26E5AA26E5AA26E5AA26E5AA232287EA737>I<B5D8FC03 +B51280A5C69026E0007FC7FC6E13FE6D6C5B6D6C485A6D6C485A010F13076D6C485AED9F +C06DEBFF806D91C8FC6D5B6E5AA2143F6E7E140F814A7F4A7F4A7F02FE7F903801FC7F49 +486C7E02F07F49486C7E49486C7E011F7F49486C7FD97F008001FE6D7FB5D8C007EBFFC0 +A532287EA737>120 D<B500FC90383FFFC0A5000101C0903803E0006E1307A26C5E6E13 +0F017F5D6E131F013F92C7FC6E5B011F143E6E137E010F147C6E13FCA26D5C15816D5C15 +C36D5C15E76D5C15FF6E5BA36E90C8FCA26E5AA26E5AA26E5AA26E5AA35D14075D000E13 +0FD83F805B387FC01FD8FFE090C9FC5C143E147E5CEBC1F8387FC3F0387E0FE06CB45A6C +5B6C48CAFCEA03F8323B7EA737>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fi cmr10 10.95 93 +/Fi 93 124 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907 +F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7 +FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11 +D<EC03FE91383FFF809138FE03E0903903F800F0D90FE013384948137C90393F8001FE90 +387F00035B5BA2485A6F5AED007093C7FCAA16FEB7FCA33901FC000315011500B3AC486C +497EB5D8F87F13FCA32E407EBF33>I<EC03FF023F13EE9138FE01FEEB03F090380FE003 +EB1FC0EB3F80EB7F005B5B150148481300AEB7FCA3D801FCC7FCB3AE486C497EB5D8F87F +13FCA32E407EBF33>I<DA03FE49B4FC91273FFF801F13C0913BFE03E07F01F0903C03F0 +00F1FC0078D90FE0D97FF0131C49484948133E4948484913FF494848495A5B491500A248 +485C03016E5A0300153896C7FCAA197FBBFCA3D801FCC738FE00018485B3AC486C496CEC +FF80B5D8F87FD9FC3F13FEA347407EBF4C>I<121EEA7F80EAFFC0A9EA7F80ACEA3F00AC +121EAB120CC7FCA8121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A4179C019>33 +D<001E130F397F803FC000FF137F01C013E0A201E013F0A3007F133F391E600F30000013 +00A401E01370491360A3000114E04913C00003130101001380481303000EEB070048130E +0018130C0038131C003013181C1C7DBE2D>I<4B6C130C4B6C131EA20307143EA24C133C +A2030F147CA293C71278A24B14F8A2031E5CA2033E1301A2033C5CA3037C1303A203785C +A203F81307A24B5CA20201140F007FBAFCBB1280A26C1900C72707C0003EC8FC4B133CA3 +020F147CA292C71278A24A14F8A2021E5CA3023E1301007FBAFCBB1280A26C1900C727F8 +0007C0C8FC4A5CA20101140FA24A91C9FCA301035CA24A131EA20107143EA24A133CA201 +0F147CA291C71278A34914F8A2011E5CA2013E1301A2013C5CA201186D5A41517BBE4C> +I<14E0A4EB07FC90383FFF8090B512E03901F8E3F03903E0E0FCD807C0133CD80F807FD8 +1F007F003E80003C1580007C140316C00078141F00F8143F157FA47EED3F806CEC0E0092 +C7FC127F138013C0EA3FF013FEEA1FFF6C13FC6C13FF6C14C06C806C6C13F8011F7F1303 +01007FECE7FF14E102E01380157F153FED1FC0A2003E140F127FD8FF801307A5130000FC +158000F0140F1270007815005D6C141E153E6C5C6C5C3907C0E1F03903F8EFE0C6B51280 +D93FFEC7FCEB0FF8EB00E0A422497BC32D>I<013F1603D9FFC04B7E2601E0E0150F2607 +C070151F48486C4BC7FC023E157E48486C15FE48D90FC0EB03FC003ED90EF0EB0FF8DA0F +3F13FD007E903A070FFFF1F0007C0200EB03E0160000FC6D6C495A170F604DC8FC5F173E +5F17FC5F4C5A1603007CD907005B4C5A007E150F003E495C020E49C9FC003F5D6C49133E +260F803C5B023813FC6C6C485B3A01E0E001F03800FFC090273F0003E0133F90C70007EC +FFC09339C001E0E0923A0F8007C070031F49487E0400143C033E90381F001C037E497F03 +7C133E4B150F0201027E7F4B137C4A5A020702FCEB03805D4A5A141F92C7FC143E147E14 +7C5CA2495A0103037CEB07005C4948147E010F033E5B4A160E49C8123F496F5B013E9238 +0F803C49173801FC6F6C5A49923801E0E0496FB45A0160043FC7FC41497BC34C>I<EC0F +80EC7FE0ECF870903803E0380107133CECC01CEB0F80011F131E150EA2EB3F00A55D1480 +A25D157815705D6D6C5A14C1ECC38002C7CAFC02EE91387FFFFCEB0FEC14FC4A020713C0 +6D48913801FE006E5DEF00F06D7E01074B5A496C5D011D1503D939FF4A5A017093C7FC49 +6D5B0001017F140E496C6C131E00036E131C2607801F143C000F6E5B001F6D6C1370263F +000714F0486E485ADA03FE5B913801FF03486D495A0487C8FCED7FCFED3FFE6F4814386D +5C150F007F6E6C14786D6D6C1470003F4A6C14F06D496C6C13E0001F91393E3FC0016C6C +903AFC1FF003C03D07FC07F007FC1F800001B5D8C001B512006C6C90C7EA7FFCD90FF8EC +0FF03E437CC047>I<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312 +011380120313005A120E5A1218123812300B1C79BE19>I<1430147014E0EB01C0EB0380 +1307EB0F00131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25AA3 +123E127EA6127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA212017F +12007F13787F133E131E7FEB07801303EB01C0EB00E014701430145A77C323>I<12C07E +12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA21480130FA214C0 +A3130714E0A6130314F0B214E01307A614C0130FA31480A2131F1400A25B133EA25BA213 +7813F85B12015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I<EB03C0A2805C +A600F0140F00FC143F00FE147F00FF14FF393FC3C3FC390FE187F03903F18FC03900FDBF +00EB3FFCEB0FF0EB03C0EB0FF0EB3FFCEBFDBF3903F18FC0390FE187F0393FC3C3FC39FF +03C0FF00FE147F00FC143F00F0140F00001400A6805CA220277AC32D>I<1506150FB3A9 +007FB912E0BA12F0A26C18E0C8000FC9FCB3A915063C3C7BB447>I<121EEA7F8012FF13 +C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A120E5A121812381230 +0B1C798919>I<B512FEA617067F961E>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A +798919>I<ED0180ED03C01507A21680150FA216005DA2151E153EA2153C157CA2157815 +F8A25D1401A25D1403A25D1407A25D140FA24AC7FCA2141E143EA2143C147CA2147814F8 +A25C1301A25C1303A25C1307A25C130FA291C8FC5BA2131E133EA25BA2137813F8A25B12 +01A25B1203A25B1207A25B120FA290C9FC5AA2121E123EA2123C127CA2127812F8A25A12 +60225B7BC32D>I<EB01FE90380FFFC090383F03F090387C00F849137C48487F48487F48 +48EB0F80A2000F15C04848EB07E0A3003F15F0A290C712034815F8A64815FCB3A26C15F8 +A56C6CEB07F0A3001F15E0A36C6CEB0FC0A26C6CEB1F80000315006C6C133E6C6C5B017C +5B90383F03F090380FFFC0D901FEC7FC263F7DBC2D>I<EB01C013031307131F137FEA07 +FFB5FC139FEAF81F1200B3B3ACEB7FF0B612F8A31D3D78BC2D>I<EB07FC90383FFF8090 +B512E03903F01FF83907C007FC390F0001FE001E6D7E001C1580003CEC7FC05AED3FE012 +70B4FC6DEB1FF07FA56C5A6CC7FC120CC813E0153FA216C0157F168015FF16004A5A5D4A +5A4A5A5D4A5A4A5A4AC7FC147E147C5C495A495A495A495A49C71270133E133C5B4914E0 +485A485A485A48C7120148B6FCA25A4815C0B7FCA3243D7CBC2D>I<EB07FC90383FFF80 +9038F80FE03901E003F839078001FCD80F007F000E6D7E001E1580D81F80137F486C14C0 +7FA27F5BA2121F6C5AC8138015FF1600A24A5AA24A5A5DEC07E04A5A023FC7FCEB1FFCEC +FF809038000FE0EC07F86E7E6E7E6E7E1680ED7FC0A216E0153FA216F0A2120C123F487E +487EA316E0A249137F6CC713C01278EDFF807E6C4913006C495A3907C007FC3903F80FF0 +C6B55A013F1380D907F8C7FC243F7CBC2D>I<150E151E153EA2157EA215FE1401A21403 +EC077E1406140E141CA214381470A214E0EB01C0A2EB0380EB0700A2130E5BA25B5BA25B +5B1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC4A7E49B6FCA3283E7E +BD2D>I<00061403D80780131F01F813FE90B5FC5D5D5D15C092C7FC14FCEB3FE090C9FC +ACEB01FE90380FFF8090383E03E090387001F8496C7E49137E497F90C713800006141FC8 +13C0A216E0150FA316F0A3120C127F7F12FFA416E090C7121F12FC007015C012780038EC +3F80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6B55A013F90C7FCEB07F8 +243F7CBC2D>I<EC1FE0ECFFF8903803F03E90380FC00F90391F000780133E017EEB1FC0 +49133F4848137F12035B12074848EB3F80ED1F00001F91C7FC5BA2123FA3485AA214FE90 +3887FF8039FF8F07E090389C01F09038B800FC01B0137E13F0497F16804914C0A2ED1FE0 +A34914F0A5127FA6123F6D14E0A2121FED3FC0A26C6C1480A20007EC7F006C6C137E6C6C +5B6C6C485A90387E07F06DB45A010F1380D903FCC7FC243F7CBC2D>I<1238123C123F90 +B612FCA316F85A16F016E00078C712010070EC03C0ED078016005D48141E151C153C5DC8 +127015F04A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8A213015C1303A31307A3 +130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>I<EB03FC90381FFF8090387C07E0 +9038F001F83901E0007C48487F48487F48C7FCED0F80121E16C0003E1407A4123FA26DEB +0F807F6C6C131F6D140001FC133E6C6C5B9038FF80786C6D5A6CEBF3E06CEBFF806C91C7 +FC133F6D13C06D7F013F13F801787F48486C7E3903E01FFF48486C1380260F800313C048 +487E489038007FE0003E143F007E141F007CEC0FF01507481403A31501A46C15E0007C14 +03A2007E15C06C14076CEC0F806DEB1F006C6C133ED807F05B3901FC03F86CB512E0011F +1380D903FCC7FC243F7CBC2D>I<EB03FCEB1FFF90387E07C09038FC03F048486C7E4848 +6C7E4848137C000F147E4848137F81003F15805B007F15C0A2151F12FF16E0A516F0A512 +7F153FA36C7EA2001F147F120F6C6C13FF6D13DF000313013900F8039F90387E0F1FD91F +FE13E0EB07F090C7FCA2ED3FC0A41680157FD80F801400487E486C13FEA24A5A5D49485A +EB8007391E000FE0001F495A260FC07FC7FC3803FFFE6C13F838003FC0243F7CBC2D>I< +121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EAFFC0A4EA7F80A2EA1E +000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121E127FEAFF80A2 +13C0A4127F121E1200A412011380A3120313005A1206120E120C121C5A1230A20A3979A6 +19>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCA8120C121EAB123FACEA7F80ACEA +FFC0A9EA7F80EA1E000A4179AC19>I<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0 +BA12F0A26C18E03C167BA147>I<EB0780EB1FE0A2497EA46D5AA2EB078090C8FCA81303 +80A4130791C7FCA65BA3131EA2133E133C137CA25B1201485A485A120F485A485A127FA2 +48C7127C15FEEC01FFA480157F6C141EA26C6C133C1578390FC001E03907F00FC03901FF +FE0038003FF020407BAC2B>I<EB1FF890B5FC3903E01FC0390F0007F0001EEB03F848EB +01FC4814FE140000FE14FF7E7FA46CC7FC123EC7EA01FEA2EC03FCEC07F815F0EC0FC0EC +1F80EC3F00143E5C147814F85C13015CA2495AA25CAB91C7FC90C8FCA8EB0780EB1FE0A2 +497EA46D5AA2EB078020407BBF2B>I<ED7FE0913807FFFE91391F801F809139780001E0 +D901E0EB0078D90780141E49C87E011E6F7E0138ED01C0496F7E49167000011778484882 +49D93F80131C28070001FFF07F48902607E07C130F000E90260FC01E7F001E90263F0007 +1480001C499038038003003C01FED901C013C0003849ECFE010101EC00FF267803F8027F +13E000701700495AA200F018F000E01870495AA96D7E12F01270A26D7E007818E0263801 +FC5C01005C003C7F001C017F49EB01C0001E6DEB077F000E903B0FC01E3F8380000F903B +07E07C1F87006C903A01FFF007FE3C0380003F8001F86D90CAFC6C7E120013707F011EEE +03F06D160F6D6CED3FC0D901E0913801FE00D90078EC1FF0913A1F8003FF800207B500F8 +C7FC9126007FFEC8FC3C417BBF47>I<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A291 +3801C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D +7EA349486D7E91B6FCA249819138800001A249C87EA24982010E157FA2011E82011C153F +A2013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D41 +7DC044>I<B712FCEEFF8017F00001903980000FF86C6CC7EA03FE707E701380EF7FC0EF +3FE0A2EF1FF0A218F8A3170F171FA318F0A2EF3FE0177F18C0EFFF804C1300EE03FCEE0F +F8EE7FE091B6C7FC17E091C7EA07FCEE01FE933800FF80EF7FC0EF3FE0EF1FF018F8170F +18FC1707A218FEA718FC170FA2EF1FF818F0173FEF7FE0EFFFC00403138048486C90380F +FE00B85A17E094C7FC373E7DBD40>I<DB3FF01306912603FFFE130E020F9038FF801E91 +3A3FF007E03E9139FF8000F8D903FEC7EA7C7ED907F8EC1EFE4948140FD93FE014074948 +1403495A91C812014848150012034848167E5B000F173EA24848161EA2123F5B180E127F +A349160012FFAC127F7F180EA2123FA27F001F171E181C6C7EA20007173C6D16386C6C16 +78000117706C6C16F06EEC01E06D6C15C06D6C1403D90FF0EC07806D6CEC1F00D903FE14 +3E902600FF8013F891393FF007F0020FB512C0020391C7FC9138003FF037427BBF42>I< +B712FCEEFF8017E000019039C0001FF86C6C48EB03FEEE00FF717E717EEF0FE084717E71 +7E170184717EA21980187F19C0A3F03FE0A519F0AB19E0A5F07FC0A21980A218FF19004D +5AA24D5A6017074D5A4D5AEF7FC04DC7FCEE03FE48486CEB1FF8B85A178004FCC8FC3C3E +7DBD45>I<B912E0A300019038C000016C6C48EB001FEF0FF01703A217011700A31870A4 +18381638A41800A21678A216F81501150791B5FCA3EC8007150115001678A21638A2180E +A3181C93C7FCA4183C1838A21878A318F8EF01F0A21707170F173F48486CEB03FFB912E0 +A3373E7DBD3E>I<B91280A300019038C000036C6C48EB007FEF1FC0170F1707A21703A3 +1701A4EF00E0A21638A31800A31678A216F81501150791B5FCA3EC8007150115001678A2 +1638A693C8FCAF3801FFE0B612F0A3333E7DBD3B>I<DB3FE0130C912603FFFE131C021F +9038FF803C913A7FF00FC07C9139FF0001F0D903FC90380078FC4948143DD91FE0141F49 +48140F4948140701FF15034890C8FC491501485A000716005B000F177C5B001F173CA248 +5AA2181C127FA25B95C7FC12FFAB041FB512F0127FA26D9139000FFE00EF03FC123FA27F +121FA26C7EA212077F12036C7E7F6C7F6D6C14076D7E6D6C140FD907F8141ED903FEEC3C +7C902600FF80EBF83C913A7FF007F01C021FB5EAC00C020391C8FC9138003FF03C427BBF +47>I<B6D8C01FB512F8A3000101E0C7383FFC0026007F80EC0FF0B3A691B7FCA30280C7 +120FB3A92601FFE0EC3FFCB6D8C01FB512F8A33D3E7DBD44>I<B612F0A3C6EBF000EB3F +C0B3B3B2EBFFF0B612F0A31C3E7EBD21>I<011FB512FCA3D9000713006E5A1401B3B3A6 +123FEA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A6C495A6C495A2603 +E07EC7FC3800FFF8EB3FC026407CBD2F>I<B600C090387FFFFCA3000101E0C7000F1380 +26007F80913807FE0018F818E0604D5A4DC7FC173E5F5F4C5A4C5A4C5A4C5A4CC8FC163E +5E5E4B5A4B5AED07804B7E151F4B7E4B7E15FF913881EFF8913883C7FCEC878791388F03 +FE91389E01FF14BCDAF8007F4A6D7E5C4A6D7E4A6D7EA2707E707EA2707E707EA2707F71 +7E84173F717E717EA2717E848419802601FFE04A13C0B600C090B6FCA3403E7DBD47>I< +B612F8A3000101E0C9FC38007F80B3B0EF0380A517071800A45FA35FA25F5F5F4C5A1607 +48486C133FB8FCA3313E7DBD39>I<B500C093B512C0A300016D4BEBE000D8007F1880D9 +77F0ED03BFA3D973F8ED073FA3D971FC150EA2D970FE151CA3027F1538A36E6C1470A36E +6C14E0A26E6CEB01C0A36E6CEB0380A36E6CEB0700A26E6C130EA36E6C5BA3037F5BA26F +6C5AA36F6C5AA392380FE1C0A3923807F380A26FB4C7FCA36F5AA213F8486C6D5AD807FF +EFFFE0B500F80178017FEBFFC0A34A3E7CBD53>I<B56C91B512F88080D8007F03071300 +6EEC01FC6E6E5A1870EB77FCEB73FEA2EB71FF01707FA26E7E6E7EA26E7E6E7EA26E7E6E +7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7EA26F7E6F1380A2EE7FC0EE3FE0A2EE +1FF0EE0FF8A2EE07FCEE03FEA2EE01FF7013F0A2177F173FA2171F170FA2170701F81503 +487ED807FF1501B500F81400A218703D3E7DBD44>I<ED7FE0913807FFFE91391FC03F80 +91397E0007E04948EB03F8D907F0EB00FE4948147F49486E7E49486E7E49C86C7E01FE6F +7E00018349150300038348486F7EA248486F7EA2001F188049167F003F18C0A3007F18E0 +49163FA300FF18F0AC007F18E06D167FA4003F18C0A26C6CEEFF80A36C6C4B1300A26C6C +4B5A00035F6D150700015F6C6C4B5A6D5E6D6C4A5A6D6C4A5A6D6C4AC7FC6D6C14FED901 +FCEB03F8D9007FEB0FE091391FC03F80912607FFFEC8FC9138007FE03C427BBF47>I<B7 +12F8EEFF8017E000019039C0003FF86C6C48EB07FCEE01FE707EEF7F80EF3FC018E0A2EF +1FF0A218F8A818F0A2EF3FE0A218C0EF7F80EFFF004C5AEE07FCEE3FF091B612C04CC7FC +0280C9FCB3A73801FFE0B612C0A3353E7DBD3E>I<ED7FE0913807FFFE91391FC03F8091 +397F000FE0D901FCEB03F8D907F0EB00FE4948147F49486E7E49486E7E49C86C7E498248 +486F7E49150300038348486F7EA2000F834981001F1880A24848EE7FC0A3007F18E0A249 +163FA200FF18F0AC007F18E0A26D167FA3003F18C0A26C6CEEFF80A3000F18006D5D0007 +DA0F805B6C6C90393FE003FCED70706C6C496C485A6C6C48486C485A017FD9800E5BD93F +819038061FC0D91FC19038073F80D90FE14AC7FCD907F1EB03FE902601FDC013F8903A00 +7EE007E091271FF03FC013180207B5FC9139007FE1E0DB0001143883711378A2706C13F0 +EFFF0318FFA27113E0A37113C0711380711300715AEF01F83D527BBF47>I<B712C016FC +EEFF800001D9C00013E06C6C48EB1FF0EE07FCEE01FE707E84717EA2717EA284A760177F +606017FF95C7FCEE01FCEE07F8EE1FE0EEFF8091B500FCC8FC16F091388001FCED003FEE +1FC0707E707E83160383160183A383A484A4F0C004190EA28218E0057F131E2601FFE016 +1CB600C0EB3FF094381FF83805071370CA3801FFE09438003F803F407DBD43>I<D907FC +131890391FFF8038017FEBE0783901FC03F83A03F0007CF8D807C0133F4848130F001F14 +0748C7FC003E1403007E1401A2007C140012FC1678A46C1538A27EA26C6C14007F7FEA3F +F8EBFF806C13F86CEBFF806C14F06C14FC6C14FF6C15C0013F14E0010714F0EB007F0207 +13F89138007FFC150FED07FE15031501ED00FFA200E0157FA3163FA27EA3163E7E167E6C +157C6C15FC6C15F86D13016DEB03F06DEB07E0D8F9FCEB0FC03AF07F803F8090391FFFFE +00D8E00713F839C0007FC028427BBF33>I<003FB91280A3903AF0007FE001018090393F +C0003F48C7ED1FC0007E1707127C00781703A300701701A548EF00E0A5C81600B3B14B7E +4B7E0107B612FEA33B3D7DBC42>I<B600C090B512F8A3000101E0C70007130026007F80 +EC01FC715A1870B3B3A4013F16F06E5DA21701011F5E80010F15036E4A5A010793C7FC6D +6C5C6D6C141E6D6C5C027F14F86E6C485A91390FF00FE00203B51280020049C8FCED1FF0 +3D407DBD44>I<B691380FFFFEA3000301E0020113E06C01809138007F806CEF3F00017F +163E181C6E153C013F1638A26E1578011F1670A26D6C5DA26E140101075EA26E14030103 +5EA26D6C4AC7FCA2806D150EA26F131E027F141CA26F133C023F1438A26E6C5BA26F13F0 +020F5CA2EDF80102075CA26E6C485AA2EDFE07020191C8FCA26F5A6E130EA2ED7F9CA216 +DCED3FF8A36F5AA36F5AA26F5AA36F5A3F407EBD44>I<B500FE017FB5D88007B5FCA300 +0301C0010101E0C713F86C90C849EC3FE07148EC0F807E7215006E143F017F190E84A26D +6C60A24D7E6D6C60A2EFE7F86D6C60A2933801C3FC6E18F001076104037F6E0281140101 +036104077F17006D6C4D5AA2040EEB7F806D6C4DC7FCA24CEB3FC0DA7F80160EA24CEB1F +E003C0161E023F171C047814F0DBE070010F133C021F173804F014F84C1307DA0FF05EA2 +DBF1C0EB03FCDA07F95EA2DBFB80EB01FEDA03FF6F5AA293C8FCA26E5FA24B157F020094 +C8FCA24B81037C153EA20378151E0338151C58407EBD5D>I<007FB5D8C003B512E0A3C6 +49C7EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C1470 +6D6D13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C +6E6C5A913801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFEED71FF15F103E07F91 +3801C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D +7F130149486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC01 +03B512FEA33F3E7EBD44>I<B66C0103B51280A3000101F0C8EBF8006C6C48ED3FC0725A +013F041EC7FC6D7E606D6C15386D6C1578606D6C5D6E14016D5E6D6D1303606E6C49C8FC +6E6C5B170E6E6C131E171C6E6C5B6E6C137817706E6C13F06F5B6E13016EEB83C05FED7F +C7DB3FE7C9FC16EFED1FFE5E150F6F5AB3A4ED1FFC020FB512FCA3413E7FBD44>I<003F +B712F8A391C7EA1FF013F801E0EC3FE00180EC7FC090C8FC003EEDFF80A2003C4A130000 +7C4A5A12784B5A4B5AA200704A5AA24B5A4B5AA2C8485A4A90C7FCA24A5A4A5AA24A5AA2 +4A5A4A5AA24A5A4A5AA24990C8FCA2495A4948141CA2495A495AA2495A495A173C495AA2 +4890C8FC485A1778485A484815F8A24848140116034848140F4848143FED01FFB8FCA32E +3E7BBD38>I<EAFFFCA4EAF000B3B3B3B3ABEAFFFCA40E5B77C319>I<486C13C000031301 +01001380481303000EEB070048130E0018130C0038131C003013180070133800601330A3 +00E01370481360A400CFEB678039FFC07FE001E013F0A3007F133FA2003F131F01C013E0 +390F0007801C1C73BE2D>I<EAFFFCA4EA003CB3B3B3B3ABEAFFFCA40E5B7FC319>I<EA01 +80120313005A120E5A12181238123012701260A312E05AA412CFEAFFC013E0A3127FA212 +3F13C0EA0F000B1C7ABE19>96 D<EB0FF8EBFFFE3903F01F8039078007E0000F6D7E9038 +E001F8D81FF07F6E7EA3157F6C5AEA0380C8FCA4EC1FFF0103B5FC90381FF87FEB7F8038 +01FC00EA07F8EA0FE0485A485AA248C7FCEE038012FEA315FFA3007F5BEC03BF3B3F8007 +1F8700261FC00E13CF3A07F03C0FFE3A01FFF807FC3A003FC001F0292A7DA82D>I<EA01 +FC12FFA3120712031201B1EC03FC91381FFF8091387C07E09039FDE001F09039FFC000FC +4A137E91C77E49158049141F17C0EE0FE0A217F0A2160717F8AA17F0A2160FA217E0161F +17C06D1580EE3F006D5C6E13FE9039F3C001F89039F1E003F09039E0780FC09026C03FFF +C7FCC7EA07F82D407EBE33>I<49B4FC010F13E090383F00F8017C131E4848131F484813 +7F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC +01C07F001F140316806C6C13076C6C14000003140E6C6C131E6C6C137890383F01F09038 +0FFFC0D901FEC7FC222A7DA828>I<ED01FC15FFA3150715031501B114FF010713E19038 +1F80F990387E003D49131FD803F81307485A49130348481301121F123F5B127FA290C7FC +A25AAA7E7FA2123FA26C7E000F14037F000714076C6C497E6C6C497ED8007C017913F890 +383F01F190380FFFC1903A01FE01FC002D407DBE33>I<EB01FE90380FFFC090383F03F0 +9038FC01F848486C7E4848137E48487F000F158049131F001F15C04848130FA2127F16E0 +90C7FCA25AA290B6FCA290C9FCA67EA27F123F16E06C7E1501000F15C06C6C13036DEB07 +806C6C1400C66C131E017E5B90381F80F8903807FFE0010090C7FC232A7EA828>I<EC1F +C0EC7FF8903801F83C903807E07E90380FC0FFEB1FC1EB3F811401137FEC00FE01FE137C +1500AEB6FCA3C648C7FCB3AE487E007F13FFA320407EBF1C>I<167C903903F801FF903A +1FFF078F8090397E0FDE1F9038F803F83803F001A23B07E000FC0600000F6EC7FC49137E +001F147FA8000F147E6D13FE00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FC +EB03F80006CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC000 +1FFC48C7EA01FE003E140048157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C +495AD803F0EB0FC0D800FE017FC7FC90383FFFFC010313C0293D7EA82D>I<EA01FC12FF +A3120712031201B1EC01FE913807FFC091381E07E091387803F09138E001F8D9FDC07F14 +8001FF6D7E91C7FCA25BA25BB3A6486C497EB5D8F87F13FCA32E3F7DBE33>I<EA01E0EA +07F8A2487EA46C5AA2EA01E0C8FCACEA01FC127FA3120712031201B3AC487EB512F0A314 +3E7DBD1A>I<1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F14 +7FB3B3A5123E127F38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF8038 +01FC00185185BD1C>I<EA01FC12FFA3120712031201B292B51280A392383FFC0016E016 +8093C7FC153C5D5D4A5AEC07C04A5A4AC8FC143E147F4A7E13FD9038FFDFC0EC9FE0140F +496C7E01FC7F496C7E1401816E7E81826F7E151F826F7EA282486C14FEB539F07FFFE0A3 +2B3F7EBE30>I<EA01FC12FFA3120712031201B3B3B1487EB512F8A3153F7DBE1A>I<2701 +F801FE14FF00FF902707FFC00313E0913B1E07E00F03F0913B7803F03C01F80007903BE0 +01F87000FC2603F9C06D487F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495C +B3A6486C496CECFF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807 +FFC091381E07E091387803F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13 +FF5BA25BB3A6486C497EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890 +387E007E01F8131F4848EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15 +FCA248C812FEA44815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E0 +6C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D +>I<3901FC03FC00FF90381FFF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C +90C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D15 +80EE7F007F6E13FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FC +AD487EB512F8A32D3A7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C01FC +131CD803F8130E4848EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA36C7E +A2001F14036C7E15076C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC19038 +01FE0190C7FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1 +FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F28 +7EA724>I<90383FC0603901FFF8E03807C03F381F000F003E1307003C1303127C007813 +0112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F +13E0010313F0EB001FEC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB03C0 +903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FC +A2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03 +013F138090381F8700EB07FEEB01F81B397EB723>I<D801FC14FE00FF147FA300071403 +0003140100011400B3A51501A31503120015076DEB06FF017E010E13806D4913FC90381F +C078903807FFE00100903880FE002E297DA733>I<B539E00FFFE0A32707FE000313006C +48EB00FC5E00015D7F00005DA26D13016D5CA26D6C485AA2ECC007011F91C7FCA290380F +E00EA2ECF01E0107131CA26D6C5AA2ECFC7801011370A2ECFEF001005BA2EC7FC0A36E5A +A26EC8FCA3140E2B287EA630>I<B53BC3FFFE03FFF8A3290FFE003FE00013C06C486D48 +EB3F806C4817006D010F141E00016F131C15076D163C00004A6C1338A2017F5E4B7E151D +D93F805DED3DFC1538D91FC04A5AED78FE9238707E03D90FE0017F5BEDE03F02F0140701 +070387C7FC9138F1C01F02F9148F010315CE9138FB800F02FF14DE6D15FCED00076D5DA2 +4A1303027E5CA2027C1301023C5C023813003D287EA642>I<B539F01FFFE0A30003D9C0 +0F1300C690388007F8D97F0013E002805BD93FC05B011F49C7FC90380FE00EECF01E6D6C +5A01035B6D6C5A6E5AEB00FF6E5A6E5A81141F814A7E81147BECF1FC903801E1FEECC0FF +01037F49486C7ED90F007F011E6D7E013E130F496D7E01FC80486C80000F4A7EB539803F +FFF8A32D277FA630>I<B539E00FFFE0A32707FE000313006C48EB01FC6F5A00015D7F00 +005DA2017F495AA2EC8003013F5CA26D6C48C7FCA26E5A010F130EA26D6C5AA2ECF83C01 +031338A26D6C5AA2ECFEF001005BA2EC7FC0A36E5AA36EC8FCA2140EA2141E141C143C14 +38A2147800181370127EB45BA2495AA248485AD87E07C9FCEA780EEA3C3CEA1FF8EA07E0 +2B3A7EA630>I<001FB61280A2EBE0000180140049485A001E495A121C4A5A003C495A14 +1F00385C4A5A147F5D4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F80EB +FF005A5B484813071207491400485A48485BA248485B4848137F00FF495A90B6FCA22127 +7EA628>I<B812F0A22C0280982D>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fj cmr12 14.4 16 +/Fj 16 122 df<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F000C0C768B21>46 +D<EC1FF891B5FC010314C090390FF81FF090391FC003F849486C7E017EC7127E49800001 +168049141F4848EC0FC0000716E0491407000F16F0A34848EC03F8A2003F16FCA44848EC +01FEA700FF16FFB3A5007F16FEA56D1403A2003F16FCA4001F16F8A26D1407000F16F0A2 +6C6CEC0FE0A26C6CEC1FC0A26C6CEC3F806C6CEC7F00017F14FE6D6C485A6D6C485A9039 +0FF81FF00103B512C0010091C7FCEC1FF830517BCE3B>48 D<EC7FE0903803FFFE010F6D +7E013F14E0D9FF0013F8D801F8EB1FFCD803E06D7E4848EB03FF48486D138090C813C000 +1E16E0001C157F003CED3FF012380078ED1FF81270A2B4ED0FFC13C07FA66C5A6C5A000E +C8FCC9EA1FF8A317F0163FA2EE7FE017C016FF17804B1300A24B5A4B5A5E4B5A4B5A4B5A +5E4BC7FC15FE4A5A4A5A4A5A4A5A5D4A5A4AC8FC147E5C4948141CEB03E0495A49481438 +91C8FC131E5B5B491578485A48481570484815F048B7FCA25A5A5AB812E0A42E4F7ACE3B +>50 D<160F5EA25E5EA25E5DA25D5DA25D151E151C153C5D157015F04A5A5D14035D4A5A +5C140E5C143C14385C14F05C495A13035C130749C7FC130E131E5B133813785B5B120148 +5A5B120748C8FC120E121E5A123812785AB912F0A4C8000190C7FCAF4B7F4B7F020FB612 +E0A434507DCF3B>52 D<000316C001C0140301F8141F903AFFC003FF8091B612005E5E5E +16E016804BC7FC019F13F8018113800180C9FCB0EC0FF0ECFFFE01836D7E903987F01FE0 +90399F0007F801BE6D7E01F86D7E496D7E49EC7F805BEE3FC04915E0C9121F17F0A317F8 +160FA317FCA5120EEA3F80487E12FF7FA217F85B161F5B48C813F012700078ED3FE0A26C +16C0167F6CEDFF80001F16006C6C495A6C6C13036C6CEB07F8D801F8EB1FF06CB4EB7FE0 +6DB51280011F49C7FC010713F8010013C02E517ACE3B>I<49B612FEA490C7003F138092 +380FFE001507B3B3B3A21206EA3FC0487E487EA44B5AA25B007F5D0180131F0078C75B6C +143F003E4A5A6C5D6C6C495A2707E003FEC7FC3901FC07FC6CB512F0013F13C0D907FCC8 +FC2F547BD13C>74 D<B600FC030FB512E0A4C691CAEBFC00D97FFCEF3FF06D48EF1FC001 +1F616E71C7FC130F1A0E6E171E0107181CA26E173C6D1838816D60A26F16F06D6081027F +4C5AA281023F4C5AA26F1507021F94C8FC81020F160EA26F151E0207161CA26F153C6E16 +38826E5EA27014F06E5E821801037F5D82033F4A5AA2701307031F92C9FC82030F140EA2 +70131E0307141CA270133C6F143817806F5CA2EFC0F06F5C17E017E1047F5B17F193383F +F380A217FF7090CAFCA2705AA3705AA3705AA2705AA3705A53547ED158>86 +D<EC0FF891B5FC010314C090390FF80FF090391FC003FC90397F8001FE49C77E4848EC7F +804848143F49EC1FC0485A000FED0FE05B001F16F01607485AA2007F16F8A25B160312FF +90B7FCA30180C9FCA8127F7FA2123FA26D1538121F17786C6C1570000716F06D15E06C6C +14016C6CEC03C06C6C15806D6C130F6D6CEB1F00D90FF0133C903907FE01F80101B512E0 +6D6C1380DA07FCC7FC2D367DB434>101 D<1378EA01FE487E487FA66C90C7FC6C5AEA00 +7890C8FCB0EB7F80B5FCA41203C6FC137FB3B3A43801FFE0B61280A419507CCF21>105 +D<EB7F80B5FCA41203C6FC137FB3B3B3B13801FFE0B612C0A41A537CD221>108 +D<01FFEB07FCB590383FFF8092B512E0913901F00FF8913903C007FC000349C66C7EC601 +0E13016D486D7E5C143002706E7E146014E05CA35CB3AD2601FFE0903801FFE0B600C0B6 +12C0A43A347CB341>110 D<EC0FFC91387FFF8049B512E0903907F807F890391FE001FE +90393F80007F017EC7EA1F80496E7E48486E7E00038248486E7EA248486E7EA248486E7E +A2003F82A24848ED7F80A400FF17C0AB007F1780A26D15FFA2003F1700A2001F5E6D1401 +000F5E6D140300075E6C6C4A5A6C6C4A5AA2D8007FEC3F806D6C49C7FC90391FE001FE90 +3907F807F86DB55AD9007F1380DA0FFCC8FC32367CB43B>I<01FFEB1F80B5EB7FF09138 +01FFF8913803E1FC91380783FE0003EB0F07C6131EEB7F1C1438143091387003FC913860 +00F0160014E05CA45CB3AA8048487EB612F0A427347DB32E>114 +D<D907FE13C090387FFF8148B512E33907F803FF390FC0007F4848133F48C7121F003E14 +0F007E1407127C00FC1403A315017EA27E7F6C6C90C7FC13F013FF6C13F86CEBFF806C14 +E06C14F86C14FEC680013F1480010714C0D9003F13E014039138007FF0151F00E0140FED +07F8A26C1403A215017EA36C15F0A26C14036C15E015076DEB0FC06DEB1F80D8FDF0EB3F +0039F8FC01FE39F07FFFF8D8E01F13E0D8C00390C7FC25367CB42E>I<D97F80EC7F80B5 +91B5FCA400031503C61500017F157FB3AC17FFA35EA3013F5C6EEB077FA2011F020E7F6D +6C011C13F06E0178EBFFC0903903FC01F06DB512E06D6C1380912607FC00EB80003A357C +B341>117 D<B60103B51280A4000301F09039007FF800C601C0EC3FE0017FED1F8095C7 +FC133F6E141E131F171C6E143C010F15388001075DA26E14F001035D8001014A5AA26E13 +036D5D1580027F49C8FCA26F5A023F130E15E0021F5BA2EDF03C020F133815F802075BA2 +EDFCF002035B15FE6E6C5AA36E5BA26FC9FCA3153EA2151CA2153C153815781570A215F0 +5D14015DA2003E495A127F486C48CAFCA2140E141E495A6C5B007C5B383F03E06CB45A00 +075BD801FCCBFC394B7EB23E>121 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fk cmbx12 17.28 21 +/Fk 21 118 df<F00FE04E7EA24E7EA34E7EA24E7EA34D7FA24D80A24D80A34D80A24D80 +A34D80A2DD7FBF7FA2181F05FF8017FE04016D7FA24D7E04038217F804076D80A24D7E04 +0F8217E0041F6D80A24D7F043F825F047F6E7FA294C77E4C825E03016F7FA24C80030384 +5E03076F80A24C80030F845E031F6F80A24C81033F845E037F707F93B9FCA292BA7EA24A +85A203FCC912070203865D020771805D86020F864B82021F865D87023F864B83027F8692 +CBFC874A864A840101875C496C728090381FFFC0B700E092B812FEA66F647BE37A>65 +D<BD12E0A41CF0A2D8000102C0C71207F1003F1A0F1A031A001B7F1B3FF31FF81B0FA21B +07A21B03A21B011CFCA31B00A419FCA21C7EA41C00A21801A31803A21807180F183FEF01 +FF93B6FCA6EEC001EF003F180F18071803A21801A31800A896C9FCB3A5B912F8A657617A +E065>70 D<B912E0A6C702E0C7FCB3B3B3B3AEB912E0A633627CE13C>73 +D<BB7E1AFCF2FFC01BF81BFE757ED800010280C7001F80070114F0736C7F081F7F747F74 +7F7414807414C0A27414E0A21DF0A27513F8A41DFCA91DF8A498B512F0A21DE0A25014C0 +1D8062501400505B505B087F5B4FB512E0071F5C93B9C7FC1BFC1BF01B8008F0C8FC04C0 +CCFCB3B3A2B97EA65E627AE16E>80 D<DBFFFCEC01E0020FD9FFE01303027F02FC130749 +B7130F0107EEC01F011F16F049D9C007EBF83F4948C7383FFE7FD9FFF8020FB5FC4801E0 +14014849804849153F91C97E484882001F834982003F83845B007F187FA2193FA200FF18 +1FA27F190FA27FA26D17078080806C01F893C7FC80ECFF8015F86CECFFC016FC6CEDFFE0 +17FE6CEEFFE018F86C17FE6C717E6C846C846D17F86D836D836D8313036D18806D6C17C0 +020F17E01401DA000F16F01500040715F8EE007F1703050014FC183F84060713FE84A200 +7C8300FC83A2197FA3193F7EA31AFC7EA27F1AF86D177F7F1AF06D17FF6D18E06D5E01FF +18C06E4B138002E04B130002F84B5A02FFED3FFC01CF01E0ECFFF8018301FF010F5B0101 +91B65A6D6C5E48011F93C7FC48010315FC48D9003F14E048020149C8FC476677E35A>83 +D<001FBEFCA64849C79126E0000F148002E0180091C8171F498601F81A0349864986A249 +1B7FA2491B3F007F1DC090C9181FA4007E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3 +021FBAFCA663617AE070>I<913803FFFE027FEBFFF00103B612FE010F6F7E4916E09027 +3FFE001F7FD97FE001077FD9FFF801017F486D6D7F717E486D6E7F85717FA2717FA36C49 +6E7FA26C5B6D5AEB1FC090C9FCA74BB6FC157F0207B7FC147F49B61207010F14C0013FEB +FE004913F048B512C04891C7FC485B4813F85A5C485B5A5CA2B55AA45FA25F806C5E806C +047D7F6EEB01F96C6DD903F1EBFF806C01FED90FE114FF6C9027FFC07FC01580000191B5 +487E6C6C4B7E011F02FC130F010302F001011400D9001F90CBFC49437CC14E>97 +D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF80047F14F00381B612FC038715FF +038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02007F03F8824B6F7E4B6F1380 +4B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA44F13F8A31BF0A24F13E0A24F +13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C495B9126F83FE0013F13C09127 +F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C7001F91C8FC90C8000313E04F65 +7BE35A>I<92380FFFF04AB67E020F15F0023F15FC91B77E01039039FE001FFF4901F801 +0113804901E0010713C04901804913E0017F90C7FC49484A13F0A2485B485B5A5C5A7113 +E0485B7113C048701380943800FE0095C7FC485BA4B5FCAE7EA280A27EA2806C18FCA26C +6D150119F87E6C6D15036EED07F06C18E06C6D150F6D6DEC1FC06D01E0EC7F806D6DECFF +00010701FCEB03FE6D9039FFC03FFC010091B512F0023F5D020F1580020102FCC7FCDA00 +0F13C03E437BC148>I<92380FFFC04AB512FC020FECFF80023F15E091B712F80103D9FE +037F499039F0007FFF011F01C0011F7F49496D7F4990C76C7F49486E7F48498048844A80 +4884485B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA41A0002C0CBFCA67EA380A2 +7EA27E6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17016D6C4B5A6D6D4A5A6D01 +E04A5A6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D6C90B55A021F15F8020715 +E0020092C8FC030713F041437CC14A>101 D<EE3FFC0307B51280033F14C04AB612F002 +0715F84A9038F03FFC4AEB807F913A7FFE00FFFE4A5A4B4813FF4913F05B4913E0A24913 +C0A27013FE4949EB7FFCEF3FF8EF1FF0EF07C094C7FCB0B812C0A6D8001F01C0C8FCB3B3 +B0007FB612FCA638657CE431>I<F107F8DB7FFEEC3FFE020FB5D8F001B5FC027FDAFE03 +148049B7128F49DCDFFD13C0010FD9F00FEBFFC149D9800114014990C7EBFC0349486E6C +7E4948EC3FFF48496E018113800780130048F0C03E97C7FC48496E7FA34884A96C60A36C +6D4A5BA26C60A26C6D4A90C8FC6D6C4A5A6D6C4A5A6D6D485BDBF00F5B4990B612C060D9 +7C7F4AC9FCD9FC0F14F09126007FFECAFC92CCFC1201A47FA27F8014F091B77E18FE6CEF +FFC019F06D17FC19FF6D846D846D846D84013F8490BAFC0003854801E0C712014890C900 +0F7F484816014848EE007F4848717E8512FF5B85A56D5F007F616D173F003F616D177F6C +6C4D5A6C01C003035B6C6D4B5B6C01F8031F5BC601FF92B5C7FC6D01F8011F5B011F90B7 +12F8010717E0010094C8FC020F15F0DA003F01FCC9FC4A607CC151>I<EB0FE0EB3FF849 +7E48B5FCA24880A24880A76C5CA26C91C7FCA238007FFC6D5AEB0FE090C9FCAF903807FF +80007FB5FCA6C6FC7F7FB3B3AEB712C0A622657BE42C>105 D<903807FF80B6FCA6C6FC +7F7FB3B3B3B3ADB712E0A623647BE32C>108 D<902607FF80D91FFFEEFFF8B691B500F0 +0207EBFF80040702FC023F14E0041F02FF91B612F84C6F488193267FE07F6D4801037F92 +2781FE001F9027E00FF0007FC6DA83F86D9026F01FC06D7F6DD987F06D4A487F6DD98FC0 +DBF87EC7804C6D027C80039FC76E488203BEEEFDF003BC6E4A8003FC04FF834B5FA24B5F +A24B94C8FCA44B5EB3B2B7D8F007B7D8803FB612FCA67E417BC087>I<902607FF80EB1F +FFB691B512F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FC6DA83F86D7F6D +D987F07F6DD98FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F007 +B71280A651417BC05A>I<923807FFE092B6FC020715E0021F15F8027F15FE494848C66C +6C7E010701F0010F13E04901C001037F49496D7F4990C87F49486F7E49486F7E48496F13 +804819C04A814819E048496F13F0A24819F8A348496F13FCA34819FEA4B518FFAD6C19FE +A46C6D4B13FCA36C19F8A26C6D4B13F0A26C19E06C6D4B13C0A26C6D4B13806C6D4B1300 +6D6C4B5A6D6D495B6D6D495B010701F0010F13E06D01FE017F5B010090B7C7FC023F15FC +020715E0020092C8FC030713E048437CC151>I<D90FFFEB0FFCB690383FFF8093B512E0 +4B14F04B14F8923907FC7FFC92390FE0FFFEC6EC1F806DD93F0113FF6D133E157E157C15 +F8A215F07013FEA24BEB7FFCEF3FF8EF0FE04B90C7FCA55DB3B0B712F8A638417BC042> +114 D<913A3FFF8007800107B5EAF81F011FECFE7F017F91B5FC48B8FC48EBE0014890C7 +121FD80FFC1407D81FF0801600485A007F167F49153FA212FF171FA27F7F7F6D92C7FC13 +FF14E014FF6C14F8EDFFC06C15FC16FF6C16C06C16F06C826C826C826C82013F1680010F +16C01303D9007F15E0020315F0EC001F1500041F13F81607007C150100FC81177F6C163F +A2171F7EA26D16F0A27F173F6D16E06D157F6D16C001FEEDFF806D0203130002C0EB0FFE +02FCEB7FFC01DFB65A010F5DD8FE0315C026F8007F49C7FC48010F13E035437BC140>I< +EC07E0A6140FA5141FA3143FA2147FA214FF5BA25B5B5B5B137F48B5FC000F91B512FEB8 +FCA5D8001F01E0C8FCB3AFEF0FC0AC171F6D6D1480A2173F6D16006F5B6D6D137E6D6D5B +6DEBFF836EEBFFF86E5C020F14C002035C9126003FFCC7FC325C7DDA3F>I<902607FFC0 +ED3FFEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60183E6D6D147E4E7F6D +6D4948806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F5C020314F8DA003F01 +8002F0C7FC51427BC05A>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fl cmbx12 24.88 40 +/Fl 40 122 df[<96380FFFFE060FB612E04DB712FC051F16FF94B912C0040784041F18 +F8047F9126FC001F7F4BB6008001017F030702F8C8EA3FFF4B02E0030F7F033F02804B7F +4B49C9127F92B54893B57E4A02F05D4A4A4B804A4A5D4A4A84634A91C9FC4A5BA24A5B51 +80755C91B5FC5EA3755CA2755C755C755CE23FFEC8FCF40FF899CAFCAF083FB612FCBFFC +A9C702FCC912038787B3B3B3B2003FB800F0013FB812F0A9>116 +144 123 271 129 12 D[<EB1FE0EBFFFC00037F486D7E488048804880A24880A281B6FC +81A281A416807EA37EA27E7E6C14BF6C143FC613FCEB1FE090C7FC157F1600A55D5DA214 +015DA214035D1407A24A5AA24A5AA24A5A147F5D4AC7FC5B495A5C1307495A495A495AEB +FFC0485B4890C8FC485A5B6C5A6C5A6C5A>33 70 111 270 65 39 +D<BA12F0B33C137DB74D>45 D[<1CFC517E517E1D8063A263A3511300A2515AA3515AA2 +515AA3505BA2505BA3505BA2505BA35090C7FCA2505AA3505AA2505AA34F5BA24F5BA34F +5BA26361A24F90C8FCA34F5AA24F5AA34F5AA24E5BA34E5BA24E5BA34E5BA24E90C9FCA3 +4E5AA24E5AA34E5AA24D5BA34D5BA2615FA24D5BA34D90CAFCA24D5AA34D5AA24D5AA34C +5BA24C5BA34C5BA24C5BA34C90CBFCA24C5AA34C5AA24C5AA34B5BA25F5DA24B5BA34B5B +A24B90CCFCA34B5AA24B5AA34B5AA24A5BA34A5BA24A5BA34A5BA24A90CDFCA34A5AA24A +5AA34A5AA25D5BA2495BA3495BA2495BA34990CEFCA2495AA3495AA2495AA3485BA2485B +A3485BA2485BA34890CFFCA2485AA3485AA2485AA35BA25B127F6C5A6C5A>89 +207 115 282 116 47 D[<F31FE0F37FF8A2517EA2507FA3507FA25080A35080A25080A3 +5080A25080A397B67EA24F81A34F81A24F82A34F82A24F82A21AFBDF3FF981A2DF7FF181 +1AF06207FF6D80A24E01C081871A804E6E80A24E0100828761060F6E81A24E4883876106 +3F6E81A24E4883876106FF6F80A24D498388614D7080A24D90C8FC768160050F7081A260 +051F708160053F7081A260057F70816005FF7180A2604C7280604C7280A295CAFC4C7281 +5F040F7281A294BDFC4C88A24C88A34C88A293BE7E05E0CB7E5F4B7480A24B497280A294 +CCFC4B7481A24B487381A25E031F7481A24B487381A25E037F7481A24B487480A25E4A76 +80A24A497480A293CEFC4A7681A24A4875814A7E0107B512FCB96C043FBA12FCA9>158 +145 120 272 175 65 D[<BFFC1EFEF6FFE01FFCF7FF8020F020FC20FF8DC7000392CA00 +1F15E00B0181776C800C1F807814FF0C03818A78818E79808B8E8B8E8B8EA27980A47915 +80AB551500A4555CA26A676A676A555C9CB65AA2545D5492C7FC545C5414F80C3F5C545C +53B612800B0F4AC8FC0B7F14F80A1FB612E095BBC9FC1FF81F801FF8F7FF8020F820FE95 +CBECFFC00C1F14F00C07807814FE0C006E7E7980798079807980798079808E79158023C0 +8B23E08C23F0A223F88CA223FCA38C23FEAB5614FCA55614F8A39DB612F0A25515E06723 +C055158067551500555C555C9CB6FC545D0C075D0C1F15C09BB75A0B0F93C7FCC212FC69 +21E021800EFCC8FC20F020800DF0C9FC0CFCCAFC>143 142 120 +269 165 I[<0803B500C0EE01F00703B600FEEE03F8077FDBFFE015070607B800FC150F +063F05FF151F4DBA00E0143F050F07F8147F053F07FE14FF94BC5B04039326F8000FECC0 +03040F4BC86CEBF007043F03C0030F6D5A93B648C900036D5A4B03F09339007FFF3F0307 +03C0051F90B5FC4B92CB7E033F02FC18034B02F08492B648844A0380193F4A92CD7E4A4A +864A4A864A02F0864A4A864A8991B65A494B874992CF7E4C885B494A885E498B494A88A2 +495C8D90B65A8D5A5E48217FA24892D1FC223FA25A5DA248211FA3485CFA0FF09FC7FCA2 +5AA45DA3B6FCB27EA381A47EA46C80FA07F0FA0FF87EA2817EA36C6F1D1F23F07E827E22 +3F6D6E1EE0A26D6E1D7F23C06D6E1DFF7F705213806D806D55130070646D6F646D6F515A +6E6E1B1F6E6E515A6E6E515A6E6E1BFF6E6E505B6E6E505B6E6F4F5B6E03E04F90C7FC6F +6EF13FFE6F02FC4F5A030F02FF4E485A6F03C005075B030103F0051F5B6F03FE057F1380 +043FDAFFE00303B5C8FC040F03FE033F13FC0403DBFFF80107B55A040093B812E0053F1A +80050F4FC9FC050119F8DD003F18C0060795CAFCDE007F16F0070393CBFCDF000314C0> +141 146 115 271 168 I[<BE12FEF5FFFCF6FFC01FFCF7FF8020E020FC20FF21C0C700 +030380C8000116F0E2000F810B0015FE0C1F800C0315C00C00810D3F8079800D0714FE79 +807981796C808C7A807A808F7A807A808C8F7A818DA17E8DA17E8DA17EA27B80A2A17E8D +A17EA28DA17EA3A113808DA3A113C0A57B15E0A6A113F0B3A2A113E0A569A113C0A5A113 +80A269A2A11300A3575CA2A15AA269A15A69A15AA2575CA15A69A15A9EB6FC5692C7FC6B +565C68565C565C565C565C9DB65A5592C8FC0D075C555C0D3F5C9CB65A0C0315C00C0F5D +0C7F92C9FC0B07B612FC52B712F0C212C09ECAFC20FC20F020800DFCCBFC1FE00CFCCCFC +53CDFC>156 142 120 269 178 I[<C212F8A48DA5C7000303C0C9123FF5007F1E0F0C01 +80787E1F1F8B8B1F018BA27A7E8C8CA28CA28CA28C8EA28CA38CA38EA2E21FF0157FA67B +7EA40A3F93C8FCA41C7FA21CFFA26363631B1F1B7F0807B5FC95B8FCA99538C00007F200 +7F1B1F1B07878787A21C7FA21C3FA3FA7FC01C1FA2FAFF80A6571300A299CAFCA369A26A +A22107A3210F6AA2211FA2213FA2575AA221FFA26868565BA26868207F9DB5FC555C1F07 +1F1F1F7F0C03B6FC1E3F0B1FB7FCC35AA66AA3>138 141 120 268 +153 I[<C21280A421C0A5C7000303C0C81201F40007F5007F0C1F14E01E071E01787E8B +8B8B8B7913F0A28B8BA2207FA3203F21F8201FA4200FA321FC2007A4F47FC0A3F803FEA4 +9DC7FCA31CFFA463A263A26363631B7F50B5FC1A1F95B8FCA99538C0001F1A01747E1B1F +878787A287A287A41C7FAA99CBFCB3AFBC12F8A9>127 141 120 +268 146 I[<0803B500C0EE01F00703B600FE4C7E077FDBFFE015070607B800FC150F06 +3F05FF151F4DBA00E0143F050F07F8147F053F07FE14FF94BC5B04039326F8000FECC003 +040F4BC86CEBF007043F03C0030F6D5A93B648C900036D5A4B03F09339007FFF3F030703 +C0051F90B5FC4B92CB7E033F02FC18034B02F08492B648844A0380193F4A92CD7E4A4A86 +4A4A864A02F0864A4A864A8991B65A494B874992CF7E4C885B494A885E498B494A88A249 +5C8D90B65A8D5A5E48217FA24892D1FC223FA25A5DA248211FA3485C7C5A9FC9FCA25AA4 +5DA3B6FCB27EA381A20A0FBB12F8A27EA46C80A36C98C96C02F8C7FCA2817EA36C81A27E +827E827FA26D80A26D806D80A26D806D80A26D816D816E806E806E806E6E97B6FC6E806E +806E03C0606E816F02F8606F02FE60030F6E606F03E0173F030103F85F6F03FF933801FF +FC043F03E00307497E040F03FF033F497E040304FC0107B5EAE00F040093B8487E053FF2 +0001050F07FCEB007F050107F0141FDD003F06C01407060795C81201DE007F04F8ED0070 +0703048093C8FCDF000302E0CDFC>157 146 115 271 183 I[<BC12C0A9C7000103E0C8 +FCB3B3B3B3B3B3B0BC12C0A9>74 142 122 269 87 73 D[<B900E04EB912F884848484 +A2848585C700037094C7000302FCC7FC73DF000F90C8FC7C5A85858585A2708170817081 +7081868270817081708187837181718171817181A2718171817181728188847281728172 +817281A272817281738173818985738173817381898573817481748174818A8674817481 +74818A8675817581758175818B877581758175818C887681768176817681A27681768176 +8177158021C0897715E07715F07715F87715FCA27715FE7715FF7815877815C722E78A78 +15F77815FF8AA28A8A8B8B8BA28B8B8B8BA28B8C8C8C8CA28C8C8C8CA28D8D8D8D8DA24A +6D8849B500FE88B900FC86227FA2223F221F220F2207A27C5A>165 +142 120 269 182 78 D[<97B512F0077FECFFE00607B712FE067FEEFFE00503B912FC05 +1FF0FF80057F19E00403BB12FC040F9226E0007F14FF043F02FCC7000315C04C02E0DA00 +7F804BB60080031F14F8030702FCC9000314FE4B4A70804B02E0706C80037F0280051F14 +E092B6CB6C804A4A72804A4A72804A02F00600804A4A737F4A4A73804A8B4A4A738091B6 +CD6C80494A7480A2494A7480494A7480498C4C86498D4C87498D494A7580A290B68B4C87 +488EA24892CF6C80A3488E4B88A2488EA3484A761580A34823C0A5484A7615E0A7B621F0 +B36C23E0A26F64A56C23C0A46F646C2380A36C23006F64A26C6AA270636C6AA26C6A7063 +6C6A70636D69A26D6E98B65AA26D6E505DA26D6E5092C7FC6D6870626D6E505C6D686D6F +4F5C6E6E4F5C6E6E4F5CA26E6E96B65A6E6E4E92C8FC6E6E4E5C020102FF060F14F86E6F +4D5C6F6E4D5C6F02F094B65A030F6E4C92C9FC6F02FE04075C03016E6C031F14F86F03F0 +92B65A043F02FE020715C0040FDAFFF090B7CAFC040392B812FC04001AF0051F19800507 +4ECBFCDD007F17E0060F94CCFCDE007F15E0070002F0CDFC>148 +146 115 271 175 I[<BE12F8F5FFF01EFF1FE01FFCF7FF8020E020F820FEC700030380 +C8000781E2003F15C00B03810B00810C3F8078800C07807880788178818E8B8E8B8E8B8E +A28EA28B8EA42380AC2300A46A67A26AA26A676A676A9CB65A6A665492C7FC545C0C1F5C +545C9BB612E00B075D0B3F5D0A07B648C8FC95BB12F820E0208055C9FC1FF09CCAFC1EF0 +0BF8CBFC06C0D0FCB3B3B2BCFCA9>137 142 120 269 159 I[<BD12FCF4FFFCF5FFE01E +FCF6FFC01FF01FFE797E20E0C700030380C86C15F80A0181E2003F14FF0B07810B0115E0 +776C8078807880788078808A78818E7881A28E8B8EA37980A48EAA6AA3676AA26AA29CB6 +5AA26A545D9FCAFC66545C545C545C545C9BB612C0535D0B074ACBFC0B3F5C52B612F00A +7F15C095BBCCFC1FF81FC054CDFC66F6FF801FE00680C7000315F8E1003F14FE0A0F800A +0315C07681766C807780778077808C7781898D898D898DA38A8DAD8DACA1EB1FC0A1EB3F +E08D8AA37880A1137FA114C078817818FF7C1580785F786F1500BB00FE6F6F5B796E495A +7902FEEB1FFC799139FFC07FF80D0792B55A0D015F796C5E0E1F5E0E034BC7FCD4001F14 +F8E7003F13C0>163 144 120 269 173 82 D[<93260FFFF8163E4BB600E0153F031F03 +FE5D037FDBFFC05C0203B800F05B020F05FC5B4A05FF5B027FF0C00F91B526FE000FECF0 +1F010302C0D9007F6D5A4991C800076D5A4901FC030090B6FC4901F0163F4949160F4901 +808290B5170192CBFC4849844849181F87484984A2484984874886A248498588A24887A3 +88A2B58680A36E85A280A26E8580A2818103F0725A6C6E96C7FC15FE8116E06C15FEEEFF +E017FF6C17F0F0FF806C18F8F1FFC06C19FCF2FF806C1AE01BF86C1AFE6C747E6D1AE088 +6D866D866D1AFF6D876D87010087806E86020F86020386020086153F030F851501DB001F +19801601DC000F18C0EF007F060717E0F0003F070316F0F1003F1A0F080315F81A00871B +1F877514FCA287007F86486C85A288A388A36D86A31EF87FA37F1EF0A26D626D1CE0A27F +6D5013C0A26E1B806E96B5FC6E1B0002F8606E4E5B6E626E6C5F03E04D5B03F84D5B03FE +057F5BDBFFC093B55A04F803035C496CD9FF80021F91C7FCD9FC1F02FF49B55AD9F80792 +B75A496C19F049C66149011F18804901074DC8FC90C817F848031F16C048030003FCC9FC +007C04011480>102 146 115 271 129 I[<000FC312F8A6488EA304C0C7001F4AC71201 +03F8C8F0000F03C01C0192C9737E02FC1E1F4A1E0702E08A4A8A4A8A4890CA757EA24920 +3F49201FA349200FA2492007A4492003007F8EA4498CA848487A1380A6CC99C7FCB3B3B3 +B3AA030FBD12FCA9>145 140 120 267 162 I[<BC040FB912C0A9C7000303C0CD001F02 +E0C7FC9E26007FF8C8FC7C5AB3B3B3B3B36E555AA3848022FF6BA26F65726481696F9CC9 +FC72626F66210F6F6E505AA26F6E505A6F535A6F6E1AFF734E5B706E4E5B70637002F04E +5B706E063F90CAFC706E4E5A7002FF4D485A04006F04075B7102E0043F5B7102FC4BB55A +050FDAFF80020F14807103FC0103B6CBFC050192B812FC716C61061F19E0060319800600 +06FCCCFC071F17F007011780DF001F03F8CDFCE0001F49CEFC>162 +144 120 269 179 I<93B512FC037FECFFF00207B8FC023F17E091B912F84918FE010772 +7E499126C0007F14E04901E0C7000F80496D020380496D020014FE6F6F7F90B570806F6F +8085486E6F807380A27380A28885886C5CA26D4982886D5B6D5B010713C0010190CAFC90 +CCFCA90603B7FC050FB8FC0403B9FC167F0307BAFC153F4AB7EA807F020FEDE000023F02 +FCC7FC91B612E0010392C8FC4914FC011F14F04914C0495C90B548C9FC485C485C485C48 +5C5A5D485CA24891CAFCA3B6FC5CA397B6FCA461806C60F107EF6C6E150F6F16CF6C183F +6FDB7F8F806C6EDBFF0F14E06C02FCDA03FE15FE6C6E91260FFC0791B5FC6C6E6CD93FF8 +17806C923AF803FFF003013F91B6487E010FEF8000010394C77E010004FC141F021F03F0 +140702010380DA007F1400DA000701F8CDFC695F79DD71>97 D[<ED1FF0017FB5FCB7FC +A9EA003F1307A27FB3B296383FFFC00607B512FE063FECFFE04DB712F8050716FF051F17 +C0057F17F094B5D8C00F8004F301FCC714FE04F701E0023F7F93B50080020F804DC86C14 +E005F80301804D6F804D707F05808294CA804C717F4C7180A24C71808BA27680A28B88A2 +8BA28BA3888BA52080B02000A56764A267A3676467A2525CA267647062704D91C7FC704D +5BA2714C5B7193B55A05F04B5CDCBFF84B5CDC1FFC030F5C4B6CB44B91C8FC7001C0027F +5B4B6C01F00103B55A4BC601FF013F14F04B6D90B712C04B011F94C9FC4B6D16FC4B0103 +16F092C86C15804A030F02F8CAFC90CB49CBFC>113 144 121 270 +129 I<94387FFFF0041FB612E093B712FE0307707E031F17F092B97E4A18FE020784021F +9126F8000F14804A0280010014C04A49C74814E049B500F85C494A17F0494A5C495C494A +4A14F84991C8FC5D495B90B5FC5D5A485C7314F05A4B6F14E05A7314C0487214804B9338 +3FFE00F20FF84896C8FCA4485CA5B6FCB07EA281A37EA36C80A37E6F18FE6CF201FFA26C +6E5F1CFE6C801B076C6EEF0FFC6D7F70EE1FF86DF13FF06D6E167F6D6EEEFFE06D02F84B +13C06D6E5D6D02FF030F13806D03C0023F1300023F02F0903801FFFC6E9126FF801F5B02 +0792B65A6E18C0020060033F4CC7FC030716F8030016C0041F4AC8FCDC007F13C0585F78 +DD67>I[<F53FE098B6FC4FB7FCA996C77E1B0FA287B3B294383FFF80040FB512FC93B712 +80030716E0031F16F8037F16FE4AB9128702074AC66C13C7021F02E0010713F74A91C890 +B6FC4A01FC153F49B548150F4902E081494A81494A814991CA7E495B8749498390B54883 +5A5D5AA2485CA25A5D5AA35AA25D5AA5B6FCB07EA57E81A37EA27EA2817EA26C80A26C62 +6C6E5F636D7F6D6D94B6FC6D606D6D1607705D6D6E4B81010102F0157F6D6E92B712FE6E +01FE020301EF91B512806E6D6C011F13CF020FDAF801B5120F020391B612FE6E17F86E6C +16E0030F16800301EDFC00DB003F14E0040049C74AC8FC>113 144 +120 270 129 I<94387FFFC0040FB6FC93B712E0030716FC031F16FF037F17C04AB912F0 +0207DAF80380021F912680003F13FE4A49C7000F7F4A01F802038049B5486E804902C06E +6C7F494A6F7F4991C9FC49727F4949707F4B84498490B548707F5A4B198048855D481CC0 +86481CE05D5A871DF05AA25D5AA21DF887A2B6FCA392BBFCA51DF00380CDFCA77EA4817E +A37EA2817EA26CF307F06FF00FF87E816C1B1F6F19F06C1B3F6D6DF07FE06D7FF4FFC06D +6E4C13806D6E5E6D02F04C13006D6EEE1FFE6D6E4C5A6D6C01FFEEFFF86E02E002035B6E +02FC021F5B02079126FFC003B55A6E92B7C7FC020060033F17F8030F17E003011780DB00 +3F03FCC8FC040315C0DC000F01F8C9FC5D5F7ADD6A>I[<95383FFF80050FB512F094B612 +FE040781041F16C0047F824BB87E0307DAF8077F031FDAC00F7F4B49C6487F4B495B92B5 +00F0814A4A5B4A5C4A93B612805F4A91C7FC5C5E5C5E5C731400A24C6E5B91B56F5BA273 +5B070313E00700138097C8FCB3A4BA12F8A9C702FCCBFCB3B3B3B3A2003FB9FCA9>81 +144 121 271 71 I<F5FFC093260FFFFC030F13F04BB600E0027F7F031F03FE49B512FE +037F9226FF8007800203B8EAF01F020FDDFC3F15804A7148133F027FDA003F90B500F014 +C091B500F80107ED807F4902E00101ECFC00010702806D6C5B93C87E49496F7F49496F7F +49496F6D6D1380491A8077130090B5486F6E6C5AF503F84875C8FCA2484A6F80A44887AB +6C63A46C6E4B5CA26C63A26D6D4B5CA26D97C9FC6D6D4B5B6D6D4B5B6D6D4B5B705C0101 +02E049B512E06D02F801075C4902FF013F5C4992B648CAFC496002F317F090260FE07F16 +80031F4BCBFC90261FC00115E0DB000F01FCCCFC013F91CFFCA3137FA280A380A2808080 +6E7E15F092B812F06DF0FFE01BFEF3FFC06D1AF81CFE767E6D1BE06D87896D1BFE6D877F +6E878A0103BD7E130F013F8890BEFC4802E0C9003F814891CBFC4801FC180F4849060180 +4849727E484985884849737F88A2B55A88A66E616C65A26E616C6D4F5B6C656E616C6D4F +5B6C6D96B55A6C6D6C05035C6F5FC602F0051F49C7FC6D01FC057F5B6DD9FF800303B55A +010F02F8033F14E06DDAFFE0010FB65A010192B9C8FCD9003F19F8020F19E0020196C9FC +DA001F17F0030194CAFCDB000192CBFC6A887ADD74>I[<ED1FF0017FB5FCB7FCA9EA003F +1307A27FB3B2963803FFFC073FEBFFE096B612F8060715FE061F6F7E4E16E095B87E4DD9 +FC03804DD9C000804D48C76C7FDD0FF880DD1FE0824D486E804D5A05FEC881DCF1FC815F +04F385EEF7F04D81EEFFC0A24D84A294C9FCA25EA35EA45EB3B3AFB9D8E001B912C0A9> +114 143 119 270 129 I[<EC3FC0ECFFF0010313FC497F497F498049804980A290B67E +A24881A86C5DA26D5CA26D5C6D5C6D91C8FC6D5B6D5B010013F0EC3FC091CAFCB3A3ED1F +F0017FB5FCB7FCA9EA003F1307A27FB3B3B3B0B91280A9>49 144 +119 271 65 I[<ED1FF0017FB5FCB7FCA9EA003F1307A27FB3B3B3B3B3B3ACB912C0A9> +50 143 119 270 65 108 D<DB3FE0912601FFFC943801FFFC017FB5031FD9FFE0041FEB +FFE0B792B600FC93B612FC060303FF030315FF060F04C0020F16C0063F04F0023F16F095 +B86C91B87E4DD9FC036E49D9FC03804DD9C0006E49D9C000804D48C7003F6D4948C7003F +7FDD0FF86EDB0FF880D8003F4B48714848830107DB3FC06E9126C03FC06E804D484E5A6D +4BC86F48C881DCE1FE6FDAE1FE814D61DCE3F8DEF3F884DCE7F0F0F7F04D6F4B81DCEFC0 +F0FFC0A2DCFF804F84A294C993C9FCA24C61A34C61A44C61B3B3AFB900E090B900E090B9 +12E0A9B35D77DCC2>I<DB3FE0913803FFFC017FB5033FEBFFE0B792B612F8060715FE06 +1F6F7E4E16E095B87E4DD9FC03804DD9C000804D48C76C7FDD0FF880D8003FDB1FE08201 +074B486E804D5A6D03FEC881DCE1FC815F04E385EEE7F04D81EEEFC0A2DCFF8084A294C9 +FCA25EA35EA45EB3B3AFB9D8E001B912C0A9725D77DC81>I<94381FFFF00407B612C004 +7F15FC0303B87E030F17E0037F17FC4ABAFC4A9126FC007F80020F02C0010714E04A49C8 +80027F01F8033F13FC91B5486F7F4902C003077F494A6F804991C96C8049497080494971 +7F49874949717FA290B548717F48884B83481D80A2481DC04B83481DE0A2481DF0A3484A +7114F8A4481DFCA5B61BFEAF6C1DFCA56C6E4D14F8A36C1DF0A36C1DE06F5F6C1DC0A26C +6E4D1480A26C1D006F5F6C646D6D4D5B6F94B5FC6D636D6D4C5C6D6E4B5C6D6E4B5C6D02 +F0031F5C6D6E4B91C7FC6D6C01FE92B512FC6ED9FFC001075C6E02FC017F5C020791B812 +C0020196C8FC6E6C17FC031F17F003031780DB007F03FCC9FC040715C0DC001F01F0CAFC +675F7ADD74>I<DB1FF091381FFFC0017FB50203B6FCB7021F15E095B712FC050316FF05 +0F17C0053F17F094B912FC04F1DAC01F8004F79026FC00018093B500E06D6C14C0D8003F +93C86C8001074B030F8005F86F806D03E06F804D6F804D8194CA6C7F4C864C71805E7680 +A27680A27680A28B88A28BA288A28BA4882080B0200064A467A26467A3525CA267646764 +67647062704D91C7FC7094B55AA2714B5C714B5C714B5C05F84B5C71033F5C05FF4B91C8 +FC06C049B55A04FB01F001075C04F801FF017F14F07190B712C0051F94C9FC7116FC0503 +16F0DD007F1580060F02F8CAFC060049CBFC96CDFCB3ACB912E0A9718579DC81>I<DB7F +C049B47E90B6021F13F8B7027F13FE4DB67E4D15E04D814D814D01077F94263FF00F7F94 +387FC01F4D48487FD8003F16000107DAC1FE491480EEC3FC6D5DEEC7F05F16CF5F16DF4D +6D1400A204FFC76C5BA2735B4C6E5B735B070013C04C92C8FCA45EA65EB3B3AAB912FCA9 +515D79DC5F>114 D<92261FFFF814F80203B638C001FC023FEDFC0791B8121F010317FF +130F013F9038F8001F4990C8FCD9FFF8153F4801E0150F484915034849814890CAFC197F +4848173F191F485AA2007F180FA31907487EA27FA28002E0705A6E93C8FC14FC14FF15F0 +6CECFF8016FCEEFFF06CEEFF8018F06C17FE727E6C18E0856C18FC6C846C727E6C856D84 +011F846D841303010084023F83140F020183EC001FDB007F16801603DC000F15C0170018 +3F060F14E0007F1703486C82727E857F85857FA2857F1BC07FA27F1B806D5F7F1B006E5E +6E5F6E163F6E4C5A02FC4C5A6E03035B6E6C4A5B03F0023F5B03FF0107B55A01F991B7C7 +FCD9F07F16FCD9E01F16F0D9800716C0D9000193C8FC48D9003F14F8007C020349C9FC4B +5F78DD5C>I[<ED03FEA81507A5150FA4151FA3153FA2157FA215FFA25CA25C5CA25C5C5C +5C91B5FC13035B131F017F91B712F00007BAFCBBFCA7C74AC9FCB3B3AAF101FFB1616E17 +FE82A219076E17FC836EEE0FF871131F6E6EEB3FF071137F6E6EEBFFE06EDAFF0313C06E +92B512806E1700033F5D6F5D03075D030015E0041F1480040001FCC7FC>72 +132 124 258 90 I<DB0FF8F01FF0017FB594B6FCB74BB7FCA9D8003F94C77E0107190F +A26D85B3B3B063A463A263A27F6398B6FCA26DF001FB7015036EEF07F3E00FE3806E6D15 +1FE07FC314FF6E6D6CDAFF83EDFFC06E6E010313036E02FCEB3FFE6E91B612FC020017F8 +6F16E0031F16800303EDFE00DB007F14F8040102C093C8FC725E77DC81>I<B90303B7FC +A9D8000702F8CA000FEBFE006D6E050013E0666D6E6164826D5090C7FC836E4F5AA26E6E +4C5AA26E6E4C5AA26E6E5F1C3F836E4F5A836E4F5AA26E6E4B5BA26E6E4B90C8FCA26F6E +5D1B07846F4D5A846F4D5AA26F6E4A5AA26F6E4A5AA26F6E5D1BFF846F4C5B846F4C90C9 +FCA2706E485AA27002C05B1A0F7002E05B1A1F19F0704B5A19F8704B5AA2706E485AA270 +6E5B96B5FC7093CAFCA3715CA2715CA2715CA2715CA3715CA2715CA2715CA27191CBFCA2 +725AA3725A725A725A705D7BDB7B>I<007FB86C49B712FEA9C792C9000F02C0C7FC6E6E +030101F0C8FC715F6E6E4B5B6E6E4B5B6E4E90C9FC6E6E5E71151F6E6E4B5A6E6E4B5A6E +4E5A6F6E495B72495B6F6E495B6F806F6E4990CAFC6F4C5A72495A6F6E495A6F6E495A6F +03815B705E7014C307E75B7091B5CBFC705D705D705D6282705D715C8386718071807180 +837180864D814D815F4D81874D814D81DDFFF3804C13E14C01C1804C0180814E6C804C6E +804C487F4C48824C486D804C486D804B496D804B497F73804B49834B90C86C804B486F80 +4B48814B486F804B48844C6F804A71804A496F804A49814A90CA814A487180023F728001 +0FB500E07080B8031FB812E0A9735C7CDB7B>120 D<007FB800C04AB71280A9D800034A +CA000791C7FC6D080013F0775A6D6E4E5AA26E6E6064836E4F90C8FC836E4F5A836E4F5A +A26E6E4C5AA26E6E5F1C3F6E6E5F1C7F836E4F5A846F4D5B846F4D90C9FCA26F6E4A5AA2 +6F6E5D1B0F846F4D5A846F4D5A846F4D5AA26F6E4A5AA2706E5C627002C091CAFC6219E0 +704B5A19F0704B5AA2706E485AA2706E485AA27002FE5B1A7F19FF704B5AA2715DA27192 +CBFCA2715CA2715CA3715CA2715CA2715CA2715CA2725BA27290CCFCA3725AA2725AA24E +5AA24E5AA261187FA24E5AA24D5B13FE2603FF804A90CDFC000F13E0486D4A5A487F486D +4A5AA260B56C141F4D5AA24D5A17FF604C5B4A4990CEFC6C5D4C5A6C49EB3FFC4A495A6C +4948485A9026FE80075B270FFFC03F5B6C90B6CFFC6C5D6C15F86C6C5C011F14C0010749 +D0FC9038007FE071857CDB7B>I E +%EndDVIPSBitmapFont +end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin + +%%EndSetup +%%Page: 1 1 +1 0 bop 861 1940 a Fl(FITSIO)76 b(User's)g(Guide)356 +2399 y Fk(A)54 b(Subroutine)e(In)l(terface)h(to)g(FITS)h(F)-13 +b(ormat)53 b(Files)1055 2659 y(for)h(F)-13 b(ortran)53 +b(Programmers)1667 3155 y Fj(V)-10 b(ersion)38 b(2.5)1727 +4058 y Fi(HEASAR)m(C)1764 4170 y(Co)s(de)30 b(662)1363 +4283 y(Go)s(ddard)f(Space)i(Fligh)m(t)f(Cen)m(ter)1522 +4396 y(Green)m(b)s(elt,)g(MD)i(20771)1857 4509 y(USA)1704 +5298 y Fj(July)38 b(2004)p eop +%%Page: 2 2 +2 1 bop 0 299 a Fi(ii)p eop +%%Page: 3 3 +3 2 bop 0 1267 a Fl(Con)-6 b(ten)g(ts)0 1858 y Fh(1)84 +b(In)m(tro)s(duction)3136 b(1)0 2118 y(2)119 b(Creating)34 +b(FITSIO/CFITSIO)2405 b(3)136 2280 y Fi(2.1)94 b(Building)28 +b(the)i(Library)57 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)f(.)131 b(3)136 2442 y(2.2)94 b(T)-8 +b(esting)31 b(the)f(Library)i(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(6)136 2604 +y(2.3)94 b(Linking)29 b(Programs)h(with)f(FITSIO)40 b(.)46 +b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(7)136 +2766 y(2.4)94 b(Getting)31 b(Started)g(with)e(FITSIO)55 +b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 +b(8)136 2928 y(2.5)94 b(Example)30 b(Program)86 b(.)46 +b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +f(.)131 b(8)136 3090 y(2.6)94 b(Legal)31 b(Stu\013)92 +b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136 3252 y(2.7)94 +b(Ac)m(kno)m(wledgemen)m(ts)60 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(10)0 3511 +y Fh(3)119 b(A)35 b(FITS)f(Primer)2917 b(13)0 3771 y(4)119 +b(Extended)35 b(File)f(Name)g(Syn)m(tax)2330 b(15)136 +3933 y Fi(4.1)94 b(Ov)m(erview)83 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(15)136 4095 y(4.2)94 b(Filet)m(yp)s(e)60 b(.)45 b(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)85 b(18)345 4257 y(4.2.1)106 b(Notes)32 b(ab)s(out)e(HTTP)g(pro) +m(xy)g(serv)m(ers)k(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(18)345 4419 y(4.2.2)106 b(Notes)32 b(ab)s(out)e(the)h(ro)s(ot)f +(\014let)m(yp)s(e)67 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(18)345 4581 y(4.2.3)106 b(Notes)32 b(ab)s(out)e(the)h(shmem)e +(\014let)m(yp)s(e:)69 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(20)136 4742 y(4.3)94 b(Base)32 b(Filename)88 b(.)45 +b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)f(.)85 b(21)136 4904 y(4.4)94 b(Output)30 b(File)f(Name)i(when) +f(Op)s(ening)e(an)i(Existing)f(File)79 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(23)136 +5066 y(4.5)94 b(T)-8 b(emplate)31 b(File)f(Name)h(when)e(Creating)h(a)h +(New)f(File)55 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(24)136 5228 y(4.6)94 +b(HDU)32 b(Lo)s(cation)e(Sp)s(eci\014cation)45 b(.)g(.)h(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(24)136 5390 y(4.7)94 +b(Image)32 b(Section)38 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(25)136 +5552 y(4.8)94 b(Column)29 b(and)h(Keyw)m(ord)g(Filtering)e(Sp)s +(eci\014cation)89 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(26)136 5714 +y(4.9)94 b(Ro)m(w)31 b(Filtering)e(Sp)s(eci\014cation)80 +b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(28)1912 5942 y(iii)p eop +%%Page: 4 4 +4 3 bop 0 299 a Fi(iv)3310 b Fg(CONTENTS)345 555 y Fi(4.9.1)106 +b(General)31 b(Syn)m(tax)44 b(.)i(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(28)345 716 y(4.9.2)106 +b(Bit)31 b(Masks)43 b(.)j(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(30)345 876 y(4.9.3)106 +b(V)-8 b(ector)32 b(Columns)91 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(31)345 1037 y(4.9.4)106 +b(Go)s(o)s(d)30 b(Time)g(In)m(terv)-5 b(al)30 b(Filtering)59 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(33)345 1197 +y(4.9.5)106 b(Spatial)29 b(Region)i(Filtering)56 b(.)46 +b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(33)345 +1358 y(4.9.6)106 b(Example)30 b(Ro)m(w)h(Filters)f(.)45 +b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(36)136 1518 y(4.10)80 b(Binning)28 b(or)i(Histogramming)g(Sp)s +(eci\014cation)f(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(37)0 +1771 y Fh(5)f(T)-9 b(emplate)34 b(Files)2985 b(41)136 +1931 y Fi(5.1)94 b(Detailed)31 b(T)-8 b(emplate)30 b(Line)g(F)-8 +b(ormat)48 b(.)e(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(41)136 2092 y(5.2)94 b(Auto-indexing)29 b(of)i(Keyw)m(ords)73 +b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(42)136 2252 y(5.3)94 b(T)-8 b(emplate)31 b(P)m(arser)g(Directiv)m(es) +85 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(43)136 2412 y(5.4)94 b(F)-8 b(ormal)31 b(T)-8 b(emplate)31 +b(Syn)m(tax)j(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)f(.)85 b(43)136 2573 y(5.5)94 b(Errors)63 b(.)46 +b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(44)136 2733 y(5.6)94 +b(Examples)71 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(44)0 +2986 y Fh(6)f(FITSIO)34 b(Con)m(v)m(en)m(tions)h(and)g(Guidelines)1993 +b(47)136 3146 y Fi(6.1)94 b(CFITSIO)29 b(Size)h(Limitations)39 +b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(47)136 3307 y(6.2)94 b(Multiple)29 b(Access)i(to)g(the)g(Same)f(FITS) +g(File)f(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(48)136 +3467 y(6.3)94 b(Curren)m(t)30 b(Header)h(Data)h(Unit)d(\(CHDU\))87 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(48)136 3628 +y(6.4)94 b(Subroutine)28 b(Names)79 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(48)136 +3788 y(6.5)94 b(Subroutine)28 b(F)-8 b(amilies)30 b(and)f(Datat)m(yp)s +(es)44 b(.)i(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(49)136 +3949 y(6.6)94 b(Implicit)28 b(Data)k(T)m(yp)s(e)e(Con)m(v)m(ersion)64 +b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(50)136 4109 y(6.7)94 b(Data)32 b(Scaling)87 b(.)46 +b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)f(.)85 b(50)136 4270 y(6.8)94 b(Error)30 +b(Status)g(V)-8 b(alues)31 b(and)e(the)i(Error)e(Message)j(Stac)m(k)44 +b(.)i(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)f(.)85 b(51)136 4430 y(6.9)94 b(V)-8 b(ariable-Length)31 +b(Arra)m(y)f(F)-8 b(acilit)m(y)31 b(in)e(Binary)g(T)-8 +b(ables)25 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(51)136 4591 y(6.10)49 +b(Supp)s(ort)29 b(for)h(IEEE)g(Sp)s(ecial)e(V)-8 b(alues)67 +b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(52)136 +4751 y(6.11)49 b(When)31 b(the)f(Final)f(Size)h(of)h(the)f(FITS)g(HDU)h +(is)e(Unkno)m(wn)34 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(53)136 4912 y(6.12)49 +b(Lo)s(cal)31 b(FITS)e(Con)m(v)m(en)m(tions)i(supp)s(orted)d(b)m(y)j +(FITSIO)72 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(53)345 5072 y(6.12.1)61 +b(Supp)s(ort)29 b(for)h(Long)g(String)f(Keyw)m(ord)h(V)-8 +b(alues.)61 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)f(.)85 b(54)345 5232 y(6.12.2)61 +b(Arra)m(ys)31 b(of)f(Fixed-Length)g(Strings)f(in)g(Binary)h(T)-8 +b(ables)69 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)85 b(54)345 5393 y(6.12.3)61 b(Keyw)m(ord)30 b(Units)g(Strings)i +(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(55)345 5553 y(6.12.4)61 b(HIERAR)m(CH)31 b(Con)m(v)m(en)m(tion)g(for) +f(Extended)g(Keyw)m(ord)g(Names)83 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)f(.)85 b(55)136 5714 y(6.13)49 b(Optimizing)28 +b(Co)s(de)i(for)g(Maxim)m(um)g(Pro)s(cessing)g(Sp)s(eed)44 +b(.)i(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)f(.)85 b(56)p eop +%%Page: 5 5 +5 4 bop 0 299 a Fg(CONTENTS)3334 b Fi(v)345 555 y(6.13.1)61 +b(Bac)m(kground)31 b(Information:)40 b(Ho)m(w)31 b(CFITSIO)e(Manages)j +(Data)g(I/O)91 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(57)0 816 y Fh(7)119 b(The)35 b(CFITSIO)e(Iterator)g(F)-9 +b(unction)2154 b(61)0 1077 y(8)119 b(Basic)36 b(In)m(terface)e +(Routines)2504 b(63)136 1239 y Fi(8.1)94 b(FITSIO)30 +b(Error)f(Status)h(Routines)83 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)f(.)85 b(63)136 1401 y(8.2)94 b(File)30 b(I/O)g(Routines)d(.)46 +b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)f(.)85 b(64)136 1563 y(8.3)94 b(Keyw)m(ord)31 b(I/O)f(Routines)35 +b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)85 b(66)136 1725 y(8.4)94 b(Data)32 b(I/O)f(Routines)52 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)f(.)85 b(66)0 1986 y Fh(9)119 b(Adv)-6 b(anced)36 +b(In)m(terface)e(Subroutines)2159 b(69)136 2148 y Fi(9.1)94 +b(FITS)30 b(File)g(Op)s(en)f(and)g(Close)h(Subroutines:)75 +b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(69)136 2310 y(9.2)94 +b(HDU-Lev)m(el)32 b(Op)s(erations)107 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(72)136 2472 +y(9.3)94 b(De\014ne)31 b(or)f(Rede\014ne)g(the)h(structure)f(of)g(the)h +(CHDU)99 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(75)136 2634 y(9.4)94 +b(FITS)30 b(Header)h(I/O)f(Subroutines)h(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)f(.)85 b(76)345 2796 y(9.4.1)106 +b(Header)31 b(Space)g(and)f(P)m(osition)f(Routines)59 +b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)f(.)85 b(76)345 2958 y(9.4.2)106 +b(Read)31 b(or)f(W)-8 b(rite)31 b(Standard)e(Header)i(Routines)66 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)f(.)85 b(77)345 3120 y(9.4.3)106 b(W)-8 b(rite)31 +b(Keyw)m(ord)f(Subroutines)115 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) +85 b(78)345 3283 y(9.4.4)106 b(Insert)30 b(Keyw)m(ord)g(Subroutines)107 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(80)345 3445 +y(9.4.5)106 b(Read)31 b(Keyw)m(ord)f(Subroutines)63 b(.)46 +b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h +(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(81)345 3607 +y(9.4.6)106 b(Mo)s(dify)29 b(Keyw)m(ord)i(Subroutines)54 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(82)345 3769 +y(9.4.7)106 b(Up)s(date)31 b(Keyw)m(ord)f(Subroutines)115 +b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(83)345 3931 +y(9.4.8)106 b(Delete)32 b(Keyw)m(ord)e(Subroutines)86 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(84)136 4093 +y(9.5)94 b(Data)32 b(Scaling)e(and)f(Unde\014ned)g(Pixel)g(P)m +(arameters)113 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(84)136 4255 y(9.6)94 +b(FITS)30 b(Primary)f(Arra)m(y)i(or)f(IMA)m(GE)h(Extension)f(I/O)g +(Subroutines)116 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)85 b(85)136 4417 y(9.7)94 b(FITS)30 b(ASCI)s(I)f(and)h(Binary)f(T)-8 +b(able)30 b(Data)i(I/O)e(Subroutines)c(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(88)345 +4579 y(9.7.1)106 b(Column)29 b(Information)g(Subroutines)120 +b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(88)345 4741 y(9.7.2)106 +b(Lo)m(w-Lev)m(el)32 b(T)-8 b(able)30 b(Access)h(Subroutines)59 +b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) +h(.)g(.)f(.)h(.)g(.)f(.)85 b(91)345 4903 y(9.7.3)106 +b(Edit)30 b(Ro)m(ws)g(or)h(Columns)105 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g +(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) +g(.)f(.)h(.)g(.)f(.)85 b(92)345 5066 y(9.7.4)106 b(Read)31 +b(and)f(W)-8 b(rite)30 b(Column)f(Data)j(Routines)65 +b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)f(.)85 b(93)136 5228 y(9.8)94 b(Ro)m(w)31 +b(Selection)f(and)g(Calculator)g(Routines)94 b(.)46 b(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) +g(.)f(.)85 b(96)136 5390 y(9.9)94 b(Celestial)30 b(Co)s(ordinate)f +(System)h(Subroutines)97 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(98)136 5552 y(9.10)49 b(File)30 b(Chec)m(ksum)g(Subroutines)74 +b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 +b(99)136 5714 y(9.11)80 b(Date)32 b(and)d(Time)h(Utilit)m(y)f(Routines) +68 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h +(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 +b(101)p eop +%%Page: 6 6 +6 5 bop 0 299 a Fi(vi)3310 b Fg(CONTENTS)136 555 y Fi(9.12)49 +b(General)31 b(Utilit)m(y)e(Subroutines)60 b(.)45 b(.)h(.)g(.)f(.)h(.)g +(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) +g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(102)0 806 y Fh(10)67 +b(Summary)34 b(of)h(all)f(FITSIO)g(User-In)m(terface)h(Subroutines)1215 +b(109)0 1057 y(11)67 b(P)m(arameter)34 b(De\014nitions)2563 +b(117)0 1308 y(12)67 b(FITSIO)33 b(Error)i(Status)g(Co)s(des)2295 +b(123)p eop +%%Page: 1 7 +1 6 bop 0 1225 a Ff(Chapter)65 b(1)0 1687 y Fl(In)-6 +b(tro)6 b(duction)0 2180 y Fi(This)32 b(do)s(cumen)m(t)j(describ)s(es)d +(the)i(F)-8 b(ortran-callable)35 b(subroutine)d(in)m(terface)j(that)g +(is)e(pro)m(vided)g(as)h(part)g(of)h(the)0 2293 y(CFITSIO)f(library)f +(\(whic)m(h)i(is)g(written)g(in)f(ANSI)h(C\).)h(This)e(is)h(a)h +(companion)f(do)s(cumen)m(t)g(to)i(the)e(CFITSIO)0 2406 +y(User's)k(Guide)e(whic)m(h)h(should)e(b)s(e)i(consulted)g(for)g +(further)g(information)f(ab)s(out)h(the)h(underlying)c(CFITSIO)0 +2518 y(library)-8 b(.)48 b(In)32 b(the)i(remainder)e(of)h(this)g(do)s +(cumen)m(t,)h(the)g(terms)f(FITSIO)f(and)h(CFITSIO)f(are)i(in)m(terc)m +(hangeable)0 2631 y(and)c(refer)g(to)h(the)g(same)f(library)-8 +b(.)0 2791 y(FITSIO/CFITSIO)31 b(is)i(a)g(mac)m(hine-indep)s(enden)m(t) +e(library)g(of)j(routines)e(for)h(reading)g(and)g(writing)e(data)j +(\014les)0 2904 y(in)29 b(the)h(FITS)g(\(Flexible)f(Image)i(T)-8 +b(ransp)s(ort)29 b(System\))h(data)h(format.)41 b(It)31 +b(can)f(also)g(read)h(IRAF)f(format)h(image)0 3017 y(\014les)39 +b(and)f(ra)m(w)i(binary)e(data)i(arra)m(ys)g(b)m(y)g(con)m(v)m(erting)g +(them)f(on)h(the)g(\015y)f(in)m(to)g(a)h(virtual)e(FITS)h(format)h +(\014le.)0 3130 y(This)31 b(library)g(w)m(as)i(written)f(to)i(pro)m +(vide)e(a)i(p)s(o)m(w)m(erful)e(y)m(et)i(simple)d(in)m(terface)i(for)g +(accessing)h(FITS)e(\014les)g(whic)m(h)0 3243 y(will)h(run)h(on)h(most) +h(commonly)f(used)f(computers)h(and)g(w)m(orkstations.)56 +b(FITSIO)34 b(supp)s(orts)g(all)g(the)i(features)0 3356 +y(describ)s(ed)20 b(in)i(the)g(o\016cial)g(NOST)g(de\014nition)e(of)j +(the)f(FITS)g(format)h(and)f(can)h(read)f(and)g(write)g(all)f(the)i +(curren)m(tly)0 3469 y(de\014ned)40 b(t)m(yp)s(es)h(of)g(extensions,)i +(including)38 b(ASCI)s(I)h(tables)i(\(T)-8 b(ABLE\),)42 +b(Binary)e(tables)h(\(BINT)-8 b(ABLE\))43 b(and)0 3582 +y(IMA)m(GE)36 b(extensions.)55 b(The)34 b(FITSIO)g(subroutines)f +(insulate)h(the)h(programmer)g(from)g(ha)m(ving)g(to)h(deal)e(with)0 +3695 y(the)25 b(complicated)f(formatting)h(details)e(in)g(the)i(FITS)f +(\014le,)h(ho)m(w)m(ev)m(er,)j(it)c(is)f(assumed)h(that)h(users)f(ha)m +(v)m(e)i(a)f(general)0 3808 y(kno)m(wledge)30 b(ab)s(out)g(the)h +(structure)f(and)g(usage)h(of)f(FITS)g(\014les.)0 3968 +y(The)20 b(CFITSIO)f(pac)m(k)-5 b(age)23 b(w)m(as)e(initially)d(dev)m +(elop)s(ed)i(b)m(y)g(the)h(HEASAR)m(C)g(\(High)g(Energy)f(Astroph)m +(ysics)g(Science)0 4081 y(Arc)m(hiv)m(e)34 b(Researc)m(h)h(Cen)m(ter\)) +f(at)h(the)f(NASA)g(Go)s(ddard)e(Space)j(Fligh)m(t)e(Cen)m(ter)h(to)h +(con)m(v)m(ert)g(v)-5 b(arious)33 b(existing)0 4194 y(and)25 +b(newly)g(acquired)g(astronomical)h(data)g(sets)h(in)m(to)f(FITS)f +(format)h(and)f(to)i(further)e(analyze)h(data)h(already)e(in)0 +4307 y(FITS)i(format.)41 b(New)28 b(features)g(con)m(tin)m(ue)g(to)h(b) +s(e)e(added)h(to)g(CFITSIO)f(in)f(large)i(part)g(due)g(to)g(con)m +(tributions)f(of)0 4419 y(ideas)32 b(or)h(actual)g(co)s(de)g(from)f +(users)g(of)h(the)g(pac)m(k)-5 b(age.)49 b(The)33 b(In)m(tegral)g +(Science)f(Data)i(Cen)m(ter)f(in)f(Switzerland,)0 4532 +y(and)h(the)g(XMM/ESTEC)h(pro)5 b(ject)34 b(in)e(The)h(Netherlands)f +(made)h(esp)s(ecially)f(signi\014can)m(t)g(con)m(tributions)g(that)0 +4645 y(resulted)d(in)g(man)m(y)i(of)f(the)h(new)f(features)g(that)h +(app)s(eared)f(in)f(v2.0)j(of)e(CFITSIO.)0 4805 y(The)22 +b(latest)h(v)m(ersion)f(of)h(the)f(CFITSIO)f(source)i(co)s(de,)h(do)s +(cumen)m(tation,)h(and)c(example)i(programs)f(are)h(a)m(v)-5 +b(ailable)0 4918 y(on)30 b(the)h(W)-8 b(orld-Wide)30 +b(W)-8 b(eb)31 b(or)f(via)g(anon)m(ymous)g(ftp)g(from:)382 +5178 y Fe(http://heasarc.gsfc.nasa)o(.go)o(v/fi)o(tsio)382 +5291 y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o(/fi)o(tsio)o(/c) +1927 5942 y Fi(1)p eop +%%Page: 2 8 +2 7 bop 0 299 a Fi(2)2452 b Fg(CHAPTER)30 b(1.)71 b(INTR)m(ODUCTION)0 +555 y Fi(An)m(y)28 b(questions,)f(bug)g(rep)s(orts,)h(or)f(suggested)i +(enhancemen)m(ts)f(related)f(to)i(the)e(CFITSIO)f(pac)m(k)-5 +b(age)30 b(should)c(b)s(e)0 668 y(sen)m(t)31 b(to)g(the)g(primary)d +(author:)382 928 y Fe(Dr.)47 b(William)f(Pence)810 b(Telephone:)92 +b(\(301\))47 b(286-4599)382 1041 y(HEASARC,)e(Code)i(662)811 +b(E-mail:)45 b(pence@tetra.gsfc.nasa.gov)382 1154 y(NASA/Goddard)f +(Space)j(Flight)f(Center)382 1267 y(Greenbelt,)f(MD)i(20771,)f(USA)0 +1526 y Fi(This)39 b(User's)j(Guide)e(assumes)h(that)h(readers)f +(already)f(ha)m(v)m(e)j(a)f(general)f(understanding)d(of)k(the)f +(de\014nition)0 1639 y(and)31 b(structure)g(of)h(FITS)e(format)i +(\014les.)43 b(F)-8 b(urther)32 b(information)d(ab)s(out)j(FITS)f +(formats)g(is)g(a)m(v)-5 b(ailable)31 b(from)g(the)0 +1752 y(FITS)h(Supp)s(ort)f(O\016ce)i(at)g Fe(http://fits.gsfc.nasa.gov) +o Fi(.)42 b(In)32 b(particular,)g(the)h('NOST)f(FITS)g(Standard')0 +1865 y(giv)m(es)i(the)h(authoritativ)m(e)f(de\014nition)e(of)i(the)g +(FITS)g(data)h(format,)g(and)f(the)g(`FITS)g(User's)g(Guide')f(pro)m +(vides)0 1978 y(additional)28 b(historical)h(bac)m(kground)h(and)g +(practical)g(advice)g(on)g(using)f(FITS)h(\014les.)0 +2138 y(CFITSIO)j(users)g(ma)m(y)h(also)g(b)s(e)g(in)m(terested)g(in)f +(the)h(FTOOLS)f(pac)m(k)-5 b(age)36 b(of)e(programs)g(that)g(can)h(b)s +(e)e(used)g(to)0 2251 y(manipulate)i(and)g(analyze)i(FITS)f(format)g +(\014les.)58 b(Information)35 b(ab)s(out)h(FTOOLS)f(can)i(b)s(e)f +(obtained)f(on)i(the)0 2364 y(W)-8 b(eb)31 b(or)f(via)g(anon)m(ymous)h +(ftp)f(at:)382 2624 y Fe(http://heasarc.gsfc.nasa)o(.go)o(v/ft)o(ools) +382 2737 y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o(/ft)o(ools)o +(/rel)o(eas)o(e)p eop +%%Page: 3 9 +3 8 bop 0 1225 a Ff(Chapter)65 b(2)0 1687 y Fl(Creating)77 +b(FITSIO/CFITSIO)0 2216 y Fd(2.1)135 b(Building)45 b(the)h(Library)0 +2467 y Fi(T)-8 b(o)43 b(use)g(the)g(FITSIO)f(subroutines)e(one)k(m)m +(ust)e(\014rst)g(build)e(the)j(CFITSIO)f(library)-8 b(,)44 +b(whic)m(h)e(requires)f(a)i(C)0 2580 y(compiler.)71 b(gcc)43 +b(is)d(ideal,)i(or)f(most)h(other)f(ANSI-C)g(compilers)e(will)g(also)i +(w)m(ork.)73 b(The)40 b(CFITSIO)g(co)s(de)h(is)0 2692 +y(con)m(tained)24 b(in)f(ab)s(out)g(40)i(C)f(source)g(\014les)e +(\(*.c\))k(and)d(header)h(\014les)f(\(*.h\).)39 b(On)23 +b(V)-10 b(AX/VMS)25 b(systems)f(2)g(assem)m(bly-)0 2805 +y(co)s(de)31 b(\014les)e(\(vmsieeed.mar)h(and)g(vmsieeer.mar\))g(are)h +(also)f(needed.)0 2965 y(The)45 b(F)-8 b(ortran)46 b(in)m(terface)f +(subroutines)e(to)j(the)f(C)g(CFITSIO)f(routines)g(are)h(lo)s(cated)h +(in)e(the)h(f77)p 3538 2965 28 4 v 33 w(wrap1.c,)0 3078 +y(through)22 b(f77)p 459 3078 V 33 w(wrap4.c)h(\014les.)37 +b(These)22 b(are)h(relativ)m(ely)f(simple)e('wrapp)s(ers')h(that)i +(translate)g(the)g(argumen)m(ts)g(in)e(the)0 3191 y(F)-8 +b(ortran)26 b(subroutine)d(in)m(to)j(the)f(appropriate)g(format)h(for)f +(the)g(corresp)s(onding)f(C)h(routine.)38 b(This)23 b(translation)i(is) +0 3304 y(p)s(erformed)19 b(transparen)m(tly)h(to)h(the)g(user)f(b)m(y)g +(a)h(set)h(of)e(C)h(macros)g(lo)s(cated)g(in)e(the)i(cfortran.h)f +(\014le.)37 b(Unfortunately)0 3417 y(cfortran.h)28 b(do)s(es)g(not)g +(supp)s(ort)f(ev)m(ery)h(com)m(bination)g(of)g(C)g(and)f(F)-8 +b(ortran)29 b(compilers)e(so)h(the)h(F)-8 b(ortran)28 +b(in)m(terface)0 3530 y(is)h(not)i(supp)s(orted)e(on)h(all)f +(platforms.)40 b(\(see)31 b(further)e(notes)i(b)s(elo)m(w\).)0 +3690 y(A)f(standard)f(com)m(bination)h(of)g(C)f(and)h(F)-8 +b(ortran)30 b(compilers)f(will)e(b)s(e)i(assumed)h(b)m(y)f(default,)h +(but)f(one)h(ma)m(y)h(also)0 3803 y(sp)s(ecify)e(a)i(particular)d(F)-8 +b(ortran)32 b(compiler)c(b)m(y)j(doing:)48 4064 y Fe(>)95 +b(setenv)46 b(CFLAGS)g(-DcompilerName=1)0 4324 y Fi(\(where)33 +b('compilerName')f(is)g(the)h(name)f(of)h(the)g(compiler\))f(b)s(efore) +g(running)e(the)j(con\014gure)f(command.)47 b(The)0 4437 +y(curren)m(tly)29 b(recognized)i(compiler)e(names)h(are:)48 +4698 y Fe(g77Fortran)48 4811 y(IBMR2Fortran)48 4924 y(CLIPPERFortran)48 +5036 y(pgiFortran)48 5149 y(NAGf90Fortran)48 5262 y(f2cFortran)48 +5375 y(hpuxFortran)48 5488 y(apolloFortran)48 5601 y(sunFortran)48 +5714 y(CRAYFortran)1927 5942 y Fi(3)p eop +%%Page: 4 10 +4 9 bop 0 299 a Fi(4)1896 b Fg(CHAPTER)30 b(2.)111 b(CREA)-8 +b(TING)31 b(FITSIO/CFITSIO)48 555 y Fe(mipsFortran)48 +668 y(DECFortran)48 781 y(vmsFortran)48 894 y(CONVEXFortran)48 +1007 y(PowerStationFortran)48 1120 y(AbsoftUNIXFortran)48 +1233 y(AbsoftProFortran)48 1346 y(SXFortran)0 1580 y +Fi(Alternativ)m(ely)-8 b(,)39 b(one)f(ma)m(y)g(edit)f(the)g(CFLA)m(GS)h +(line)d(in)i(the)g(Mak)m(e\014le)h(to)g(add)f(the)h('-DcompilerName')g +(\015ag)0 1692 y(after)31 b(running)d(the)i('./con\014gure')h(command.) +0 1853 y(The)f(CFITSIO)f(library)f(is)h(built)f(on)j(Unix)e(systems)h +(b)m(y)g(t)m(yping:)48 2087 y Fe(>)95 b(./configure)45 +b([--prefix=/target/insta)o(llat)o(ion)o(/pat)o(h])48 +2199 y(>)95 b(make)476 b(\(or)95 b('make)46 b(shared'\))48 +2312 y(>)95 b(make)47 b(install)93 b(\(this)46 b(step)h(is)g +(optional\))0 2546 y Fi(at)24 b(the)g(op)s(erating)f(system)h(prompt.) +38 b(The)23 b(con\014gure)g(command)g(customizes)h(the)g(Mak)m(e\014le) +g(for)g(the)g(particular)0 2659 y(system,)g(then)d(the)g(`mak)m(e')i +(command)e(compiles)f(the)h(source)h(\014les)e(and)h(builds)d(the)j +(library)-8 b(.)36 b(T)m(yp)s(e)21 b(`./con\014gure')0 +2772 y(and)34 b(not)h(simply)d(`con\014gure')j(to)h(ensure)e(that)h +(the)g(con\014gure)g(script)e(in)h(the)h(curren)m(t)f(directory)g(is)g +(run)g(and)0 2885 y(not)29 b(some)g(other)g(system-wide)f(con\014gure)g +(script.)39 b(The)29 b(optional)f('pre\014x')g(argumen)m(t)h(to)g +(con\014gure)g(giv)m(es)g(the)0 2998 y(path)f(to)i(the)f(directory)f +(where)g(the)h(CFITSIO)f(library)e(and)i(include)f(\014les)g(should)g +(b)s(e)h(installed)f(via)h(the)h(later)0 3111 y('mak)m(e)j(install')c +(command.)41 b(F)-8 b(or)31 b(example,)143 3345 y Fe(>)48 +b(./configure)c(--prefix=/usr1/local)0 3579 y Fi(will)22 +b(cause)k(the)f('mak)m(e)h(install')d(command)i(to)h(cop)m(y)g(the)f +(CFITSIO)e(lib)s(c\014tsio)f(\014le)j(to)g(/usr1/lo)s(cal/lib)e(and)i +(the)0 3692 y(necessary)36 b(include)c(\014le)j(to)h(/usr1/lo)s +(cal/include)d(\(assuming)h(of)h(course)g(that)h(the)f(pro)s(cess)g +(has)g(p)s(ermission)0 3805 y(to)c(write)f(to)h(these)g(directories\).) +0 3965 y(By)d(default)g(this)f(also)h(builds)c(the)29 +b(set)f(of)h(F)-8 b(ortran-callable)28 b(wrapp)s(er)e(routines)h(whose) +h(calling)e(sequences)j(are)0 4078 y(describ)s(ed)f(later)j(in)e(this)g +(do)s(cumen)m(t.)0 4238 y(The)f('mak)m(e)h(shared')f(option)g(builds)d +(a)k(shared)e(or)i(dynamic)e(v)m(ersion)h(of)g(the)h(CFITSIO)d(library) +-8 b(.)38 b(When)28 b(using)0 4351 y(the)f(shared)f(library)f(the)i +(executable)g(co)s(de)g(is)f(not)h(copied)f(in)m(to)h(y)m(our)g +(program)g(at)g(link)e(time)h(and)h(instead)f(the)0 4464 +y(program)h(lo)s(cates)h(the)g(necessary)g(library)d(co)s(de)j(at)g +(run)e(time,)i(normally)e(through)g(LD)p 3065 4464 28 +4 v 33 w(LIBRAR)-8 b(Y)p 3514 4464 V 34 w(P)g(A)g(TH)28 +b(or)0 4577 y(some)j(other)f(metho)s(d.)41 b(The)29 b(adv)-5 +b(an)m(tages)33 b(of)d(using)f(a)i(shared)e(library)f(are:)143 +4811 y Fe(1.)95 b(Less)47 b(disk)f(space)h(if)g(you)g(build)f(more)h +(than)f(1)i(program)143 4924 y(2.)95 b(Less)47 b(memory)f(if)h(more)g +(than)f(one)h(copy)g(of)g(a)g(program)f(using)h(the)g(shared)334 +5036 y(library)f(is)h(running)f(at)h(the)g(same)g(time)f(since)h(the)g +(system)f(is)h(smart)334 5149 y(enough)f(to)h(share)g(copies)f(of)h +(the)g(shared)f(library)g(at)h(run)g(time.)143 5262 y(3.)95 +b(Possibly)46 b(easier)g(maintenance)e(since)j(a)g(new)g(version)f(of)h +(the)g(shared)334 5375 y(library)f(can)h(be)g(installed)e(without)h +(relinking)f(all)i(the)g(software)334 5488 y(that)g(uses)f(it)i(\(as)e +(long)h(as)g(the)g(subroutine)e(names)i(and)f(calling)334 +5601 y(sequences)f(remain)h(unchanged\).)143 5714 y(4.)95 +b(No)47 b(run-time)f(penalty.)p eop +%%Page: 5 11 +5 10 bop 0 299 a Fg(2.1.)72 b(BUILDING)31 b(THE)f(LIBRAR)-8 +b(Y)2507 b Fi(5)0 555 y(The)30 b(disadv)-5 b(an)m(tages)31 +b(are:)143 819 y Fe(1.)47 b(More)g(hassle)f(at)h(runtime.)94 +b(You)46 b(have)h(to)g(either)f(build)h(the)g(programs)286 +932 y(specially)f(or)h(have)f(LD_LIBRARY_PATH)e(set)j(right.)143 +1045 y(2.)g(There)g(may)g(be)g(a)g(slight)f(start)h(up)g(penalty,)e +(depending)h(on)h(where)f(you)h(are)286 1158 y(reading)f(the)h(shared)f +(library)g(and)h(the)g(program)f(from)g(and)h(if)g(your)g(CPU)g(is)286 +1271 y(either)f(really)h(slow)f(or)h(really)f(heavily)g(loaded.)0 +1535 y Fi(On)30 b(HP/UX)i(systems,)g(the)f(en)m(vironmen)m(t)g(v)-5 +b(ariable)30 b(CFLA)m(GS)h(should)e(b)s(e)i(set)g(to)h(-Ae)g(b)s(efore) +f(running)d(con-)0 1648 y(\014gure)i(to)h(enable)f("extended)h(ANSI")f +(features.)0 1808 y(It)f(ma)m(y)h(not)f(b)s(e)f(p)s(ossible)f(to)i +(staticly)g(link)e(programs)i(that)g(use)g(CFITSIO)e(on)i(some)h +(platforms)d(\(namely)-8 b(,)30 b(on)0 1921 y(Solaris)k(2.6\))j(due)e +(to)i(the)e(net)m(w)m(ork)i(driv)m(ers)d(\(whic)m(h)h(pro)m(vide)g(FTP) +g(and)g(HTTP)g(access)i(to)g(FITS)e(\014les\).)56 b(It)0 +2034 y(is)32 b(p)s(ossible)e(to)k(mak)m(e)f(b)s(oth)g(a)g(dynamic)e +(and)h(a)i(static)f(v)m(ersion)f(of)h(the)g(CFITSIO)e(library)-8 +b(,)32 b(but)g(net)m(w)m(ork)i(\014le)0 2147 y(access)e(will)27 +b(not)k(b)s(e)f(p)s(ossible)e(using)h(the)h(static)h(v)m(ersion.)0 +2307 y(On)d(V)-10 b(AX/VMS)31 b(and)d(ALPHA/VMS)i(systems)f(the)h(mak)m +(e)p 2100 2307 28 4 v 34 w(g\015oat.com)h(command)e(\014le)f(ma)m(y)i +(b)s(e)f(executed)h(to)0 2420 y(build)j(the)k(c\014tsio.olb)e(ob)5 +b(ject)37 b(library)d(using)h(the)h(default)g(G-\015oating)g(p)s(oin)m +(t)g(option)f(for)h(double)f(v)-5 b(ariables.)0 2533 +y(The)37 b(mak)m(e)p 405 2533 V 33 w(d\015oat.com)i(and)d(mak)m(e)p +1279 2533 V 34 w(ieee.com)i(\014les)f(ma)m(y)g(b)s(e)g(used)f(instead)h +(to)h(build)c(the)j(library)e(with)h(the)0 2646 y(other)26 +b(\015oating)h(p)s(oin)m(t)e(options.)38 b(Note)28 b(that)f(the)f +(getcwd)h(function)e(that)i(is)e(used)g(in)g(the)i(group.c)f(mo)s(dule) +e(ma)m(y)0 2758 y(require)43 b(that)j(programs)e(using)f(CFITSIO)g(b)s +(e)h(link)m(ed)g(with)f(the)i(ALPHA$LIBRAR)-8 b(Y:V)e(AX)m(CR)i(TL.OLB) +0 2871 y(library)g(.)39 b(See)30 b(the)h(example)f(link)e(line)h(in)g +(the)i(next)f(section)h(of)f(this)g(do)s(cumen)m(t.)0 +3032 y(On)25 b(Windo)m(ws)g(IBM-PC)h(t)m(yp)s(e)g(platforms)e(the)i +(situation)f(is)f(more)i(complicated)g(b)s(ecause)f(of)h(the)g(wide)f +(v)-5 b(ariet)m(y)0 3144 y(of)43 b(F)-8 b(ortran)43 b(compilers)f(that) +h(are)g(a)m(v)-5 b(ailable)42 b(and)g(b)s(ecause)h(of)g(the)g(inheren)m +(t)f(complexities)g(of)g(calling)g(the)0 3257 y(CFITSIO)25 +b(C)g(routines)g(from)h(F)-8 b(ortran.)40 b(Tw)m(o)26 +b(di\013eren)m(t)g(v)m(ersions)f(of)h(the)h(CFITSIO)d(dll)g(library)g +(are)i(a)m(v)-5 b(ailable,)0 3370 y(compiled)26 b(with)f(the)j(Borland) +e(C++)g(compiler)g(and)g(the)i(Microsoft)f(Visual)f(C++)g(compiler,)g +(resp)s(ectiv)m(ely)-8 b(,)28 b(in)0 3483 y(the)i(\014les)f(c\014tsio)s +(dll)p 682 3483 V 30 w(2xxx)p 901 3483 V 34 w(b)s(orland.zip)e(and)i +(c\014tsio)s(dll)p 1927 3483 V 30 w(2xxx)p 2146 3483 +V 33 w(v)m(cc.zip,)i(where)f('2xxx')h(represen)m(ts)f(the)g(curren)m(t) +0 3596 y(release)43 b(n)m(um)m(b)s(er.)76 b(Both)43 b(these)g(dll)e +(libraries)f(con)m(tain)j(a)g(set)g(of)f(F)-8 b(ortran)44 +b(wrapp)s(er)d(routines)g(whic)m(h)g(ma)m(y)0 3709 y(b)s(e)c +(compatible)g(with)f(some,)k(but)d(probably)f(not)h(all,)i(a)m(v)-5 +b(ailable)37 b(F)-8 b(ortran)38 b(compilers.)61 b(T)-8 +b(o)38 b(test)g(if)f(they)h(are)0 3822 y(compatible,)27 +b(compile)f(the)h(program)g(testf77.f)h(and)f(try)f(linking)f(to)i +(these)h(dll)c(libraries.)37 b(If)27 b(these)g(libraries)d(do)0 +3935 y(not)29 b(w)m(ork)g(with)e(a)i(particular)e(F)-8 +b(ortran)30 b(compiler,)e(then)g(there)h(are)g(2)g(p)s(ossible)e +(solutions.)38 b(The)28 b(\014rst)g(solution)0 4048 y(w)m(ould)g(b)s(e) +i(to)g(mo)s(dify)e(the)i(\014le)e(cfortran.h)i(for)f(that)i(particular) +d(com)m(bination)h(of)h(C)f(and)g(F)-8 b(ortran)30 b(compilers,)0 +4161 y(and)k(then)g(rebuild)d(the)k(CFITSIO)d(dll)h(library)-8 +b(.)50 b(This)33 b(will)f(require,)i(ho)m(w)m(ev)m(er,)j(a)e(some)f +(exp)s(ertise)g(in)f(mixed)0 4274 y(language)e(programming.)39 +b(The)30 b(other)h(solution)d(is)i(to)h(use)f(the)g(older)g(v5.03)i(F) +-8 b(ortran-77)32 b(implemen)m(tation)d(of)0 4386 y(FITSIO)c(that)h(is) +f(still)f(a)m(v)-5 b(ailable)25 b(from)g(the)h(FITSIO)f(w)m(eb-site.)39 +b(This)24 b(v)m(ersion)h(is)g(no)h(longer)f(supp)s(orted,)g(but)g(it)0 +4499 y(do)s(es)k(pro)m(vide)g(the)h(basic)g(functions)e(for)h(reading)g +(and)g(writing)f(FITS)h(\014les)g(and)g(should)f(b)s(e)h(compatible)g +(with)0 4612 y(most)i(F)-8 b(ortran)31 b(compilers.)0 +4772 y(CFITSIO)e(has)h(curren)m(tly)f(b)s(een)h(tested)h(on)f(the)h +(follo)m(wing)e(platforms:)95 5036 y Fe(OPERATING)46 +b(SYSTEM)523 b(COMPILER)143 5149 y(Sun)47 b(OS)1002 b(gcc)47 +b(and)g(cc)g(\(3.0.1\))143 5262 y(Sun)g(Solaris)762 b(gcc)47 +b(and)g(cc)143 5375 y(Silicon)f(Graphics)g(IRIX)285 b(gcc)47 +b(and)g(cc)143 5488 y(Silicon)f(Graphics)g(IRIX64)189 +b(MIPS)143 5601 y(Dec)47 b(Alpha)f(OSF/1)572 b(gcc)47 +b(and)g(cc)143 5714 y(DECstation)93 b(Ultrix)428 b(gcc)p +eop +%%Page: 6 12 +6 11 bop 0 299 a Fi(6)1896 b Fg(CHAPTER)30 b(2.)111 b(CREA)-8 +b(TING)31 b(FITSIO/CFITSIO)143 555 y Fe(Dec)47 b(Alpha)f(OpenVMS)476 +b(cc)143 668 y(DEC)47 b(VAX/VMS)762 b(gcc)47 b(and)g(cc)143 +781 y(HP-UX)1049 b(gcc)143 894 y(IBM)47 b(AIX)954 b(gcc)143 +1007 y(Linux)1049 b(gcc)143 1120 y(MkLinux)953 b(DR3)143 +1233 y(Windows)46 b(95/98/NT)523 b(Borland)46 b(C++)h(V4.5)143 +1346 y(Windows)f(95/98/NT/ME/XP)235 b(Microsoft/Compaq)43 +b(Visual)j(C++)h(v5.0,)g(v6.0)143 1458 y(Windows)f(95/98/NT)523 +b(Cygwin)46 b(gcc)143 1571 y(OS/2)1097 b(gcc)47 b(+)g(EMX)143 +1684 y(MacOS)g(7.1)f(or)i(greater)332 b(Metrowerks)45 +b(10.+)0 1949 y Fi(CFITSIO)26 b(will)g(probably)g(run)g(on)i(most)g +(other)h(Unix)d(platforms.)39 b(Cra)m(y)28 b(sup)s(ercomputers)e(are)j +(curren)m(tly)e(not)0 2061 y(supp)s(orted.)0 2400 y Fd(2.2)135 +b(T)-11 b(esting)46 b(the)f(Library)0 2652 y Fi(The)40 +b(CFITSIO)e(library)g(should)g(b)s(e)h(tested)i(b)m(y)f(building)c(and) +j(running)f(the)i(testprog.c)h(program)f(that)h(is)0 +2765 y(included)28 b(with)h(the)h(release.)41 b(On)30 +b(Unix)f(systems)h(t)m(yp)s(e:)191 3029 y Fe(\045)47 +b(make)g(testprog)191 3142 y(\045)g(testprog)f(>)h(testprog.lis)191 +3255 y(\045)g(diff)g(testprog.lis)d(testprog.out)191 +3368 y(\045)j(cmp)g(testprog.fit)e(testprog.std)0 3632 +y Fi(On)30 b(VMS)g(systems,)g(\(assuming)g(cc)h(is)e(the)i(name)f(of)h +(the)f(C)g(compiler)f(command\),)i(t)m(yp)s(e:)191 3896 +y Fe($)47 b(cc)h(testprog.c)191 4009 y($)f(link)g(testprog,)e +(cfitsio/lib,)g(alpha$library:vaxcrtl/l)o(ib)191 4122 +y($)i(run)g(testprog)0 4386 y Fi(The)30 b(testprog)h(program)g(should)d +(pro)s(duce)h(a)i(FITS)f(\014le)f(called)h(`testprog.\014t')i(that)f +(is)e(iden)m(tical)h(to)h(the)f(`test-)0 4499 y(prog.std')25 +b(FITS)f(\014le)f(included)f(with)h(this)h(release.)39 +b(The)24 b(diagnostic)g(messages)i(\(whic)m(h)d(w)m(ere)i(pip)s(ed)e +(to)i(the)g(\014le)0 4612 y(testprog.lis)f(in)f(the)i(Unix)e(example\)) +i(should)d(b)s(e)i(iden)m(tical)g(to)h(the)g(listing)d(con)m(tained)j +(in)e(the)i(\014le)e(testprog.out.)0 4725 y(The)30 b('di\013)7 +b(')30 b(and)f('cmp')i(commands)f(sho)m(wn)g(ab)s(o)m(v)m(e)h(should)e +(not)h(rep)s(ort)g(an)m(y)h(di\013erences)f(in)f(the)h(\014les.)40 +b(\(There)0 4838 y(ma)m(y)35 b(b)s(e)e(some)h(minor)f(formatting)g +(di\013erences,)i(suc)m(h)e(as)i(the)f(presence)g(or)g(absence)g(of)g +(leading)f(zeros,)j(or)e(3)0 4951 y(digit)29 b(exp)s(onen)m(ts)h(in)f +(n)m(um)m(b)s(ers,)h(whic)m(h)f(can)h(b)s(e)g(ignored\).)0 +5111 y(The)f(F)-8 b(ortran)31 b(wrapp)s(ers)d(in)g(CFITSIO)g(ma)m(y)j +(b)s(e)e(tested)h(with)f(the)h(testf77)h(program.)40 +b(On)29 b(Unix)g(systems)h(the)0 5224 y(fortran)g(compilation)f(and)h +(link)e(command)i(ma)m(y)h(b)s(e)f(called)f('f77')j(or)e('g77',)j(dep)s +(ending)28 b(on)i(the)g(system.)143 5488 y Fe(\045)48 +b(f77)f(-o)g(testf77)f(testf77.f)f(-L.)i(-lcfitsio)e(-lnsl)h(-lsocket) +48 5601 y(or)143 5714 y(\045)i(f77)f(-f)g(-o)g(testf77)f(testf77.f)f +(-L.)i(-lcfitsio)188 b(\(under)46 b(SUN)h(O/S\))p eop +%%Page: 7 13 +7 12 bop 0 299 a Fg(2.3.)72 b(LINKING)30 b(PR)m(OGRAMS)h(WITH)f(FITSIO) +2041 b Fi(7)48 555 y Fe(or)143 668 y(\045)48 b(f77)f(-o)g(testf77)f +(testf77.f)f(-Wl,-L.)h(-lcfitsio)f(-lm)i(-lnsl)f(-lsocket)g(\(HP/UX\)) +48 781 y(or)143 894 y(\045)i(g77)f(-o)g(testf77)f(-s)h(testf77.f)e +(-lcfitsio)g(-lcc_dynamic)g(-lncurses)g(\(Mac)i(OS-X\))143 +1120 y(\045)h(testf77)d(>)j(testf77.lis)143 1233 y(\045)g(diff)e +(testf77.lis)f(testf77.out)143 1346 y(\045)j(cmp)f(testf77.fit)d +(testf77.std)0 1591 y Fi(On)31 b(mac)m(hines)g(running)f(SUN)h(O/S,)h +(F)-8 b(ortran)33 b(programs)e(m)m(ust)h(b)s(e)f(compiled)f(with)h(the) +h('-f)7 b(')32 b(option)g(to)g(force)0 1704 y(double)24 +b(precision)g(v)-5 b(ariables)24 b(to)i(b)s(e)f(aligned)f(on)i(8-b)m +(yte)h(b)s(oundarys)c(to)j(mak)m(e)h(the)e(fortran-declared)g(v)-5 +b(ariables)0 1817 y(compatible)32 b(with)f(C.)h(A)h(similar)d(compiler) +h(option)h(ma)m(y)h(b)s(e)f(required)f(on)h(other)h(platforms.)47 +b(F)-8 b(ailing)31 b(to)i(use)0 1930 y(this)25 b(option)g(ma)m(y)h +(cause)h(the)f(program)f(to)i(crash)e(on)h(FITSIO)f(routines)f(that)j +(read)f(or)f(write)g(double)g(precision)0 2043 y(v)-5 +b(ariables.)0 2203 y(Also)30 b(note)h(that)f(on)g(some)h(systems,)f +(the)h(output)e(listing)f(of)j(the)f(testf77)i(program)d(ma)m(y)i +(di\013er)e(sligh)m(tly)f(from)0 2316 y(the)j(testf77.std)h(template,)f +(if)f(leading)f(zeros)i(are)g(not)g(prin)m(ted)e(b)m(y)i(default)f(b)s +(efore)g(the)h(decimal)e(p)s(oin)m(t)h(when)0 2429 y(using)f(F)i +(format.)0 2589 y(A)f(few)h(other)f(utilit)m(y)f(programs)h(are)h +(included)c(with)i(CFITSIO:)191 2835 y Fe(speed)46 b(-)i(measures)d +(the)i(maximum)f(throughput)f(\(in)i(MB)g(per)g(second\))668 +2947 y(for)g(writing)f(and)h(reading)f(FITS)g(files)h(with)f(CFITSIO) +191 3173 y(listhead)f(-)j(lists)e(all)h(the)g(header)f(keywords)g(in)h +(any)g(FITS)f(file)191 3399 y(fitscopy)f(-)j(copies)e(any)h(FITS)g +(file)f(\(especially)f(useful)h(in)h(conjunction)811 +3512 y(with)g(the)g(CFITSIO's)e(extended)h(input)g(filename)g(syntax\)) +191 3738 y(cookbook)f(-)j(a)f(sample)f(program)g(that)h(peforms)f +(common)g(read)g(and)811 3851 y(write)h(operations)e(on)i(a)g(FITS)g +(file.)191 4077 y(iter_a,)f(iter_b,)g(iter_c)g(-)h(examples)f(of)h(the) +g(CFITSIO)f(iterator)f(routine)0 4322 y Fi(The)30 b(\014rst)f(4)i(of)g +(these)g(utilit)m(y)d(programs)i(can)h(b)s(e)f(compiled)f(and)g(link)m +(ed)g(b)m(y)h(t)m(yping)143 4568 y Fe(\045)95 b(make)47 +b(program_name)0 4899 y Fd(2.3)135 b(Linking)45 b(Programs)h(with)f +(FITSIO)0 5149 y Fi(When)31 b(linking)d(applications)i(soft)m(w)m(are)i +(with)e(the)h(FITSIO)f(library)-8 b(,)30 b(sev)m(eral)i(system)f +(libraries)d(usually)h(need)0 5262 y(to)d(b)s(e)f(sp)s(eci\014ed)f(on)h +(the)h(link)e(comman)h(Unix)g(systems,)i(the)e(most)h(reliable)e(w)m(a) +m(y)i(to)h(determine)d(what)i(libraries)0 5375 y(are)32 +b(required)e(is)g(to)j(t)m(yp)s(e)e('mak)m(e)i(testprog')g(and)e(see)h +(what)f(libraries)e(the)j(con\014gure)f(script)g(has)g(added.)43 +b(The)0 5488 y(t)m(ypical)23 b(libraries)e(that)j(ma)m(y)g(need)f(to)h +(b)s(e)f(added)g(are)g(-lm)g(\(the)h(math)f(library\))f(and)h(-lnsl)e +(and)i(-lso)s(c)m(k)m(et)i(\(needed)0 5601 y(only)h(for)g(FTP)g(and)g +(HTTP)g(\014le)g(access\).)41 b(These)26 b(latter)h(2)g(libraries)d +(are)j(not)g(needed)f(on)g(VMS)h(and)f(Windo)m(ws)0 5714 +y(platforms,)k(b)s(ecause)g(FTP)g(\014le)g(access)h(is)f(not)g(curren)m +(tly)g(supp)s(orted)e(on)i(those)h(platforms.)p eop +%%Page: 8 14 +8 13 bop 0 299 a Fi(8)1896 b Fg(CHAPTER)30 b(2.)111 b(CREA)-8 +b(TING)31 b(FITSIO/CFITSIO)0 555 y Fi(Note)36 b(that)f(when)e +(upgrading)f(to)j(a)g(new)m(er)f(v)m(ersion)g(of)h(CFITSIO)d(it)i(is)g +(usually)e(necessa)m(y)j(to)g(recompile,)g(as)0 668 y(w)m(ell)29 +b(as)i(relink,)e(the)h(programs)g(that)h(use)f(CFITSIO,)f(b)s(ecause)i +(the)f(de\014nitions)e(in)h(\014tsio.h)h(often)g(c)m(hange.)0 +1001 y Fd(2.4)135 b(Getting)46 b(Started)g(with)f(FITSIO)0 +1251 y Fi(In)32 b(order)h(to)h(e\013ectiv)m(ely)g(use)f(the)g(FITSIO)f +(library)f(as)j(quic)m(kly)e(as)h(p)s(ossible,)f(it)h(is)f(recommended) +h(that)g(new)0 1364 y(users)d(follo)m(w)f(these)i(steps:)0 +1524 y(1.)62 b(Read)38 b(the)f(follo)m(wing)f(`FITS)h(Primer')f(c)m +(hapter)i(for)g(a)f(brief)f(o)m(v)m(erview)i(of)g(the)g(structure)e(of) +i(FITS)f(\014les.)0 1637 y(This)24 b(is)h(esp)s(ecially)f(imp)s(ortan)m +(t)i(for)f(users)h(who)f(ha)m(v)m(e)i(not)g(previously)c(dealt)j(with)f +(the)h(FITS)f(table)h(and)g(image)0 1750 y(extensions.)0 +1910 y(2.)41 b(W)-8 b(rite)31 b(a)g(simple)d(program)i(to)h(read)g(or)f +(write)f(a)i(FITS)f(\014le)f(using)g(the)i(Basic)f(In)m(terface)i +(routines.)0 2071 y(3.)41 b(Refer)28 b(to)i(the)f(co)s(okb)s(o)s(ok.f)g +(program)f(that)i(is)e(included)e(with)h(this)h(release)h(for)f +(examples)h(of)g(routines)e(that)0 2183 y(p)s(erform)i(v)-5 +b(arious)29 b(common)i(FITS)f(\014le)f(op)s(erations.)0 +2344 y(4.)52 b(Read)34 b(Chapters)g(4)g(and)f(5)i(to)g(b)s(ecome)f +(familiar)e(with)g(the)j(con)m(v)m(en)m(tions)g(and)e(adv)-5 +b(anced)34 b(features)h(of)f(the)0 2457 y(FITSIO)29 b(in)m(terface.)0 +2617 y(5.)47 b(Scan)32 b(through)f(the)h(more)h(extensiv)m(e)f(set)h +(of)g(routines)e(that)h(are)h(pro)m(vided)e(in)g(the)h(`Adv)-5 +b(anced)32 b(In)m(terface'.)0 2730 y(These)22 b(routines)e(p)s(erform)h +(more)h(sp)s(ecialized)e(functions)g(than)h(are)i(pro)m(vided)d(b)m(y)i +(the)g(Basic)g(In)m(terface)h(routines.)0 3063 y Fd(2.5)135 +b(Example)46 b(Program)0 3313 y Fi(The)32 b(follo)m(wing)f(listing)f +(sho)m(ws)i(an)g(example)h(of)f(ho)m(w)h(to)g(use)f(the)g(FITSIO)g +(routines)f(in)g(a)i(F)-8 b(ortran)33 b(program.)0 3426 +y(Refer)38 b(to)h(the)g(co)s(okb)s(o)s(ok.f)f(program)g(that)h(is)e +(included)e(with)i(the)i(FITSIO)e(distribution)d(for)k(examples)g(of)0 +3539 y(other)31 b(FITS)e(programs.)286 3794 y Fe(program)46 +b(writeimage)0 4020 y(C)238 b(Create)46 b(a)i(FITS)f(primary)e(array)i +(containing)e(a)i(2-D)g(image)286 4246 y(integer)f +(status,unit,blocksize,bit)o(pix,)o(nax)o(is,n)o(axes)o(\(2\))286 +4359 y(integer)g(i,j,group,fpixel,nelement)o(s,ar)o(ray)o(\(300)o(,200) +o(\))286 4472 y(character)g(filename*80)286 4585 y(logical)g +(simple,extend)286 4811 y(status=0)0 4924 y(C)238 b(Name)47 +b(of)g(the)g(FITS)g(file)f(to)i(be)f(created:)286 5036 +y(filename='ATESTFILE.FITS')0 5262 y(C)238 b(Get)47 b(an)g(unused)g +(Logical)e(Unit)i(Number)f(to)h(use)g(to)g(create)f(the)h(FITS)g(file) +286 5375 y(call)g(ftgiou\(unit,status\))0 5601 y(C)238 +b(create)46 b(the)h(new)g(empty)g(FITS)f(file)286 5714 +y(blocksize=1)p eop +%%Page: 9 15 +9 14 bop 0 299 a Fg(2.6.)72 b(LEGAL)30 b(STUFF)2995 b +Fi(9)286 555 y Fe(call)47 b(ftinit\(unit,filename,blo)o(cksi)o(ze,s)o +(tat)o(us\))0 781 y(C)238 b(initialize)45 b(parameters)g(about)i(the)g +(FITS)f(image)h(\(300)f(x)i(200)f(16-bit)f(integers\))286 +894 y(simple=.true.)286 1007 y(bitpix=16)286 1120 y(naxis=2)286 +1233 y(naxes\(1\)=300)286 1346 y(naxes\(2\)=200)286 1458 +y(extend=.true.)0 1684 y(C)238 b(write)47 b(the)g(required)e(header)h +(keywords)286 1797 y(call)h(ftphpr\(unit,simple,bitpi)o(x,na)o(xis,)o +(nax)o(es,0)o(,1,e)o(xte)o(nd,s)o(tatu)o(s\))0 2023 y(C)238 +b(initialize)45 b(the)i(values)f(in)i(the)e(image)h(with)f(a)i(linear)e +(ramp)h(function)286 2136 y(do)h(j=1,naxes\(2\))477 2249 +y(do)f(i=1,naxes\(1\))668 2362 y(array\(i,j\)=i+j)477 +2475 y(end)g(do)286 2588 y(end)g(do)0 2813 y(C)238 b(write)47 +b(the)g(array)f(to)h(the)g(FITS)g(file)286 2926 y(group=1)286 +3039 y(fpixel=1)286 3152 y(nelements=naxes\(1\)*naxes\(2)o(\))286 +3265 y(call)g(ftpprj\(unit,group,fpixel)o(,nel)o(emen)o(ts,)o(arra)o +(y,st)o(atu)o(s\))0 3491 y(C)238 b(write)47 b(another)f(optional)f +(keyword)h(to)h(the)g(header)286 3604 y(call)g +(ftpkyj\(unit,'EXPOSURE',1)o(500,)o('Tot)o(al)41 b(Exposure)46 +b(Time',status\))0 3830 y(C)238 b(close)47 b(the)g(file)f(and)h(free)g +(the)g(unit)f(number)286 3942 y(call)h(ftclos\(unit,)d(status\))286 +4055 y(call)j(ftfiou\(unit,)d(status\))286 4168 y(end)0 +4527 y Fd(2.6)135 b(Legal)46 b(Stu\013)0 4782 y Fi(Cop)m(yrigh)m(t)36 +b(\(Unpublished{all)d(righ)m(ts)j(reserv)m(ed)h(under)e(the)i(cop)m +(yrigh)m(t)g(la)m(ws)f(of)h(the)g(United)f(States\),)k(U.S.)0 +4895 y(Go)m(v)m(ernmen)m(t)30 b(as)g(represen)m(ted)e(b)m(y)h(the)g +(Administrator)e(of)i(the)g(National)f(Aeronautics)h(and)f(Space)h +(Adminis-)0 5008 y(tration.)41 b(No)31 b(cop)m(yrigh)m(t)f(is)g +(claimed)f(in)g(the)i(United)e(States)i(under)e(Title)h(17,)h(U.S.)f +(Co)s(de.)0 5168 y(P)m(ermission)e(to)i(freely)e(use,)i(cop)m(y)-8 +b(,)31 b(mo)s(dify)-8 b(,)28 b(and)h(distribute)e(this)h(soft)m(w)m +(are)j(and)e(its)g(do)s(cumen)m(tation)g(without)0 5281 +y(fee)g(is)e(hereb)m(y)h(gran)m(ted,)i(pro)m(vided)d(that)i(this)e(cop) +m(yrigh)m(t)i(notice)f(and)g(disclaimer)e(of)i(w)m(arran)m(t)m(y)i(app) +s(ears)d(in)g(all)0 5394 y(copies.)41 b(\(Ho)m(w)m(ev)m(er,)33 +b(see)e(the)f(restriction)f(on)i(the)f(use)g(of)h(the)f(gzip)g +(compression)g(co)s(de,)h(b)s(elo)m(w\).)0 5554 y(DISCLAIMER:)0 +5714 y(THE)i(SOFTW)-10 b(ARE)32 b(IS)g(PR)m(O)m(VIDED)i('AS)f(IS')g +(WITHOUT)f(ANY)i(W)-10 b(ARRANTY)33 b(OF)g(ANY)h(KIND,)f(EI-)p +eop +%%Page: 10 16 +10 15 bop 0 299 a Fi(10)1851 b Fg(CHAPTER)30 b(2.)111 +b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)0 555 y Fi(THER)42 +b(EXPRESSED,)f(IMPLIED,)i(OR)e(ST)-8 b(A)g(TUTOR)g(Y,)43 +b(INCLUDING,)f(BUT)h(NOT)e(LIMITED)h(TO,)0 668 y(ANY)33 +b(W)-10 b(ARRANTY)33 b(THA)-8 b(T)32 b(THE)g(SOFTW)-10 +b(ARE)32 b(WILL)g(CONF)m(ORM)g(TO)g(SPECIFICA)-8 b(TIONS,)30 +b(ANY)0 781 y(IMPLIED)38 b(W)-10 b(ARRANTIES)37 b(OF)h(MER)m(CHANT)-8 +b(ABILITY,)38 b(FITNESS)f(F)m(OR)h(A)g(P)-8 b(AR)g(TICULAR)38 +b(PUR-)0 894 y(POSE,)24 b(AND)i(FREEDOM)f(FR)m(OM)h(INFRINGEMENT,)g +(AND)f(ANY)h(W)-10 b(ARRANTY)25 b(THA)-8 b(T)25 b(THE)g(DOC-)0 +1007 y(UMENT)-8 b(A)g(TION)31 b(WILL)f(CONF)m(ORM)h(TO)e(THE)h(SOFTW) +-10 b(ARE,)30 b(OR)g(ANY)h(W)-10 b(ARRANTY)31 b(THA)-8 +b(T)30 b(THE)0 1120 y(SOFTW)-10 b(ARE)31 b(WILL)h(BE)g(ERR)m(OR)g +(FREE.)g(IN)g(NO)f(EVENT)h(SHALL)f(NASA)h(BE)g(LIABLE)g(F)m(OR)g(ANY)0 +1233 y(D)m(AMA)m(GES,)26 b(INCLUDING,)e(BUT)f(NOT)g(LIMITED)h(TO,)f +(DIRECT,)g(INDIRECT,)g(SPECIAL)f(OR)h(CON-)0 1346 y(SEQUENTIAL)28 +b(D)m(AMA)m(GES,)k(ARISING)d(OUT)g(OF,)h(RESUL)-8 b(TING)29 +b(FR)m(OM,)h(OR)f(IN)h(ANY)g(W)-10 b(A)i(Y)30 b(CON-)0 +1458 y(NECTED)25 b(WITH)g(THIS)f(SOFTW)-10 b(ARE,)25 +b(WHETHER)g(OR)g(NOT)g(BASED)g(UPON)g(W)-10 b(ARRANTY,)26 +b(CON-)0 1571 y(TRA)m(CT,)d(TOR)-8 b(T)23 b(,)g(OR)g(OTHER)-10 +b(WISE,)22 b(WHETHER)i(OR)f(NOT)f(INJUR)-8 b(Y)24 b(W)-10 +b(AS)23 b(SUST)-8 b(AINED)23 b(BY)h(PER-)0 1684 y(SONS)h(OR)i(PR)m +(OPER)-8 b(TY)26 b(OR)g(OTHER)-10 b(WISE,)26 b(AND)h(WHETHER)g(OR)f +(NOT)g(LOSS)f(W)-10 b(AS)26 b(SUST)-8 b(AINED)0 1797 +y(FR)m(OM,)37 b(OR)e(AR)m(OSE)h(OUT)f(OF)h(THE)g(RESUL)-8 +b(TS)35 b(OF,)h(OR)f(USE)h(OF,)g(THE)g(SOFTW)-10 b(ARE)35 +b(OR)g(SER-)0 1910 y(VICES)29 b(PR)m(O)m(VIDED)j(HEREUNDER.")0 +2070 y(The)i(\014le)h(compress.c)g(con)m(tains)g(\(sligh)m(tly)f(mo)s +(di\014ed\))f(source)i(co)s(de)g(that)h(originally)c(came)k(from)f +(gzip-1.2.4,)0 2183 y(cop)m(yrigh)m(t)26 b(\(C\))g(1992-1993)k(b)m(y)c +(Jean-loup)f(Gailly)-8 b(.)38 b(This)24 b(gzip)h(co)s(de)h(is)f +(distributed)e(under)i(the)h(GNU)g(General)0 2296 y(Public)k(License)i +(and)f(th)m(us)h(requires)f(that)i(an)m(y)f(soft)m(w)m(are)i(that)f +(uses)f(the)g(CFITSIO)f(library)f(\(whic)m(h)h(in)g(turn)0 +2409 y(uses)e(the)g(gzip)g(co)s(de\))h(m)m(ust)f(conform)g(to)h(the)f +(pro)m(visions)e(in)h(the)i(GNU)g(General)f(Public)e(License.)40 +b(A)29 b(cop)m(y)h(of)0 2522 y(the)h(GNU)g(license)e(is)g(included)f +(at)j(the)g(b)s(eginning)c(of)k(compress.c)g(\014le.)0 +2682 y(An)h(alternate)i(v)m(ersion)e(of)h(the)g(compress.c)g(\014le)f +(\(called)g(compress)p 2381 2682 28 4 v 33 w(alternate.c\))i(is)e(pro)m +(vided)f(for)i(users)e(who)0 2795 y(w)m(an)m(t)24 b(to)g(use)e(the)i +(CFITSIO)d(library)g(but)h(are)h(un)m(willing)d(or)j(unable)e(to)j +(publicly)c(release)j(their)f(soft)m(w)m(are)i(under)0 +2908 y(the)i(terms)g(of)g(the)g(GNU)h(General)e(Public)f(License.)39 +b(This)24 b(alternate)i(v)m(ersion)g(con)m(tains)g(non-functional)e +(stubs)0 3021 y(for)g(the)h(\014le)e(compression)h(and)f(uncompression) +g(routines)g(used)h(b)m(y)g(CFITSIO.)f(Replace)i(the)f(\014le)g +(`compress.c')0 3134 y(with)32 b(`compress)p 600 3134 +V 33 w(alternate.c')j(b)s(efore)e(compiling)e(the)i(CFITSIO)f(library) +-8 b(.)48 b(This)31 b(will)g(pro)s(duce)h(a)i(v)m(ersion)f(of)0 +3247 y(CFITSIO)20 b(whic)m(h)h(do)s(es)g(not)h(supp)s(ort)e(reading)h +(or)h(writing)e(compressed)h(FITS)g(\014les)g(but)g(is)g(otherwise)g +(iden)m(tical)0 3360 y(to)31 b(the)g(standard)e(v)m(ersion.)0 +3733 y Fd(2.7)135 b(Ac)l(kno)l(wledgemen)l(ts)0 3991 +y Fi(The)29 b(dev)m(elopmen)m(t)g(of)h(man)m(y)f(of)h(the)f(p)s(o)m(w)m +(erful)f(features)h(in)f(CFITSIO)g(w)m(as)i(made)f(p)s(ossible)e +(through)h(collab-)0 4104 y(orations)34 b(with)f(man)m(y)i(p)s(eople)e +(or)i(organizations)f(from)g(around)f(the)i(w)m(orld.)51 +b(The)34 b(follo)m(wing,)g(in)f(particular,)0 4217 y(ha)m(v)m(e)f(made) +e(esp)s(ecially)f(signi\014can)m(t)g(con)m(tributions:)0 +4377 y(Programmers)c(from)h(the)f(In)m(tegral)h(Science)g(Data)h(Cen)m +(ter,)g(Switzerland)d(\(namely)-8 b(,)27 b(Jurek)d(Bork)m(o)m(wski,)k +(Bruce)0 4490 y(O'Neel,)33 b(and)f(Don)h(Jennings\),)e(designed)g(the)i +(concept)g(for)f(the)h(plug-in)d(I/O)i(driv)m(ers)f(that)i(w)m(as)g(in) +m(tro)s(duced)0 4603 y(with)h(CFITSIO)f(2.0.)56 b(The)34 +b(use)h(of)g(`driv)m(ers')f(greatly)h(simpli\014ed)d(the)j(lo)m(w-lev)m +(el)g(I/O,)g(whic)m(h)e(in)h(turn)g(made)0 4716 y(other)40 +b(new)f(features)i(in)d(CFITSIO)g(\(e.g.,)45 b(supp)s(ort)38 +b(for)h(compressed)h(FITS)f(\014les)g(and)g(supp)s(ort)f(for)i(IRAF)0 +4829 y(format)32 b(image)f(\014les\))g(m)m(uc)m(h)g(easier)h(to)g +(implemen)m(t.)42 b(Jurek)31 b(Bork)m(o)m(wski)g(wrote)h(the)g(Shared)e +(Memory)i(driv)m(er,)0 4942 y(and)23 b(Bruce)i(O'Neel)f(wrote)g(the)g +(driv)m(ers)f(for)g(accessing)i(FITS)e(\014les)g(o)m(v)m(er)i(the)f +(net)m(w)m(ork)h(using)d(the)j(FTP)-8 b(,)24 b(HTTP)-8 +b(,)0 5055 y(and)30 b(R)m(OOT)g(proto)s(cols.)0 5215 +y(The)45 b(ISDC)g(also)g(pro)m(vided)f(the)i(template)g(parsing)e +(routines)g(\(written)h(b)m(y)g(Jurek)g(Bork)m(o)m(wski\))h(and)f(the)0 +5328 y(hierarc)m(hical)36 b(grouping)f(routines)h(\(written)h(b)m(y)g +(Don)h(Jennings\).)59 b(The)37 b(ISDC)f(D)m(AL)i(\(Data)h(Access)f(La)m +(y)m(er\))0 5441 y(routines)29 b(are)i(la)m(y)m(ered)g(on)f(top)h(of)f +(CFITSIO)f(and)h(mak)m(e)h(extensiv)m(e)g(use)f(of)h(these)g(features.) +0 5601 y(Uw)m(e)25 b(Lammers)e(\(XMM/ESA/ESTEC,)h(The)g(Netherlands\))f +(designed)g(the)h(high-p)s(erformance)e(lexical)h(pars-)0 +5714 y(ing)41 b(algorithm)g(that)h(is)f(used)g(to)i(do)e(on-the-\015y)h +(\014ltering)e(of)i(FITS)f(tables.)75 b(This)40 b(algorithm)h(essen)m +(tially)p eop +%%Page: 11 17 +11 16 bop 0 299 a Fg(2.7.)72 b(A)m(CKNO)m(WLEDGEMENTS)2515 +b Fi(11)0 555 y(pre-compiles)34 b(the)i(user-supplied)c(selection)k +(expression)e(in)m(to)i(a)g(form)g(that)g(can)g(b)s(e)f(rapidly)e(ev)-5 +b(aluated)36 b(for)0 668 y(eac)m(h)31 b(ro)m(w.)40 b(P)m(eter)31 +b(Wilson)d(\(RSTX,)h(NASA/GSF)m(C\))i(then)e(wrote)h(the)g(parsing)e +(routines)g(used)h(b)m(y)g(CFITSIO)0 781 y(based)i(on)f(Lammers')h +(design,)f(com)m(bined)g(with)g(other)h(tec)m(hniques)f(suc)m(h)h(as)g +(the)g(CFITSIO)f(iterator)h(routine)0 894 y(to)h(further)e(enhance)h +(the)h(data)g(pro)s(cessing)e(throughput.)42 b(This)30 +b(e\013ort)i(also)f(b)s(ene\014ted)f(from)h(a)h(m)m(uc)m(h)f(earlier)0 +1007 y(lexical)22 b(parsing)h(routine)f(that)i(w)m(as)g(dev)m(elop)s +(ed)f(b)m(y)h(Ken)m(t)g(Blac)m(kburn)e(\(NASA/GSF)m(C\).)j(More)g +(recen)m(tly)-8 b(,)26 b(Craig)0 1120 y(Markw)m(ardt)j(\(NASA/GSF)m +(C\))g(implemen)m(ted)e(additional)f(functions)h(\(median,)h(a)m(v)m +(erage,)k(stddev\))c(and)g(other)0 1233 y(enhancemen)m(ts)j(to)g(the)g +(lexical)e(parser.)0 1393 y(The)40 b(CFITSIO)g(iterator)h(function)e +(is)h(lo)s(osely)g(based)h(on)f(similar)f(ideas)h(dev)m(elop)s(ed)g +(for)h(the)g(XMM)g(Data)0 1506 y(Access)31 b(La)m(y)m(er.)0 +1666 y(P)m(eter)25 b(Wilson)e(\(RSTX,)h(NASA/GSF)m(C\))h(wrote)g(the)f +(complete)h(set)f(of)h(F)-8 b(ortran-callable)24 b(wrapp)s(ers)e(for)i +(all)f(the)0 1779 y(CFITSIO)29 b(routines,)g(whic)m(h)g(in)g(turn)h +(rely)f(on)i(the)f(CF)m(OR)-8 b(TRAN)31 b(macro)g(dev)m(elop)s(ed)f(b)m +(y)g(Burkhard)f(Buro)m(w.)0 1939 y(The)h(syn)m(tax)i(used)e(b)m(y)h +(CFITSIO)f(for)g(\014ltering)g(or)h(binning)c(input)i(FITS)i(\014les)f +(is)g(based)g(on)h(ideas)g(dev)m(elop)s(ed)0 2052 y(for)41 +b(the)g(AXAF)h(Science)f(Cen)m(ter)h(Data)h(Mo)s(del)d(b)m(y)h +(Jonathan)g(McDo)m(w)m(ell,)k(An)m(tonella)c(F)-8 b(ruscione,)44 +b(Aneta)0 2165 y(Siemigino)m(wsk)-5 b(a)24 b(and)h(Bill)f(Jo)m(y)m(e.) +41 b(See)26 b(h)m(ttp://heasarc.gsfc.nasa.go)m(v/do)s +(cs/journal/axaf7.h)m(t)q(ml)31 b(for)25 b(further)0 +2278 y(description)j(of)j(the)g(AXAF)g(Data)h(Mo)s(del.)0 +2438 y(The)j(\014le)f(decompression)g(co)s(de)h(w)m(ere)h(tak)m(en)g +(directly)e(from)g(the)i(gzip)e(\(GNU)i(zip\))f(program)g(dev)m(elop)s +(ed)f(b)m(y)0 2551 y(Jean-loup)29 b(Gailly)g(and)h(others.)0 +2711 y(Doug)h(Mink,)f(SA)m(O,)g(pro)m(vided)f(the)i(routines)e(for)h +(con)m(v)m(erting)h(IRAF)g(format)g(images)f(in)m(to)g(FITS)g(format.)0 +2871 y(In)d(addition,)g(man)m(y)h(other)g(p)s(eople)f(ha)m(v)m(e)i +(made)f(v)-5 b(aluable)27 b(con)m(tributions)f(to)j(the)f(dev)m +(elopmen)m(t)g(of)g(CFITSIO.)0 2984 y(These)i(include)e(\(with)i(ap)s +(ologies)g(to)h(others)f(that)h(ma)m(y)g(ha)m(v)m(e)h(inadv)m(erten)m +(tly)e(b)s(een)f(omitted\):)0 3144 y(Stev)m(e)g(Allen,)e(Carl)g(Ak)m +(erlof,)h(Keith)f(Arnaud,)h(Morten)g(Krabb)s(e)e(Barfo)s(ed,)j(Ken)m(t) +f(Blac)m(kburn,)g(G)g(Bo)s(dammer,)0 3257 y(Romk)m(e)h(Bon)m(tek)m(o)s +(e,)i(Lucio)c(Chiapp)s(etti,)f(Keith)h(Costorf,)h(Robin)f(Corb)s(et,)h +(John)e(Da)m(vis,)j(Ric)m(hard)e(Fink,)h(Ning)0 3370 +y(Gan,)h(Emily)c(Greene,)k(Jo)s(e)f(Harrington,)g(Cheng)f(Ho,)i(Phil)c +(Ho)s(dge,)k(Jim)e(Ingham,)h(Y)-8 b(oshitak)j(a)28 b(Ishisaki,)e(Diab)0 +3483 y(Jerius,)k(Mark)i(Levine,)f(T)-8 b(o)s(dd)30 b(Karak)-5 +b(askian,)31 b(Edw)m(ard)g(King,)f(Scott)j(Ko)s(c)m(h,)e(Claire)f +(Larkin,)g(Rob)i(Managan,)0 3596 y(Eric)37 b(Mandel,)i(John)e(Matto)m +(x,)43 b(Carsten)37 b(Mey)m(er,)42 b(Emi)36 b(Miy)m(ata,)42 +b(Stefan)c(Mo)s(c)m(hnac)m(ki,)i(Mik)m(e)f(Noble,)g(Oliv)m(er)0 +3709 y(Ob)s(erdorf,)d(Cliv)m(e)g(P)m(age,)k(Arvind)34 +b(P)m(armar,)k(Je\013)f(P)m(edelt)m(y)-8 b(,)39 b(Tim)c(P)m(earson,)k +(Maren)e(Purv)m(es,)h(Scott)f(Randall,)0 3822 y(Chris)c(Rogers,)k +(Arnold)d(Rots,)j(Barry)f(Sc)m(hlesinger,)f(Robin)f(Stebbins,)g(Andrew) +g(Szymk)m(o)m(wiak,)j(Allyn)d(T)-8 b(en-)0 3934 y(nan)m(t,)31 +b(P)m(eter)g(T)-8 b(eub)s(en,)30 b(James)g(Theiler,)f(Doug)i(T)-8 +b(o)s(dy)g(,)31 b(Shiro)d(Ueno,)k(Stev)m(e)f(W)-8 b(alton,)32 +b(Arc)m(hie)e(W)-8 b(arno)s(c)m(k,)32 b(Alan)0 4047 y(W)-8 +b(atson,)32 b(Dan)f(Whipple,)d(Wim)i(Wimmers,)g(P)m(eter)h(Y)-8 +b(oung,)31 b(Jianjun)d(Xu,)i(and)g(Nelson)g(Zarate.)p +eop +%%Page: 12 18 +12 17 bop 0 299 a Fi(12)1851 b Fg(CHAPTER)30 b(2.)111 +b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)p eop +%%Page: 13 19 +13 18 bop 0 1225 a Ff(Chapter)65 b(3)0 1687 y Fl(A)78 +b(FITS)f(Primer)0 2180 y Fi(This)22 b(section)j(giv)m(es)f(a)h(brief)d +(o)m(v)m(erview)j(of)f(the)h(structure)e(of)i(FITS)e(\014les.)37 +b(Users)24 b(should)f(refer)g(to)i(the)g(do)s(cumen-)0 +2293 y(tation)i(a)m(v)-5 b(ailable)27 b(from)g(the)g(NOST,)f(as)i +(describ)s(ed)d(in)h(the)h(in)m(tro)s(duction,)f(for)h(more)g(detailed) +g(information)e(on)0 2406 y(FITS)30 b(formats.)0 2566 +y(FITS)37 b(w)m(as)g(\014rst)g(dev)m(elop)s(ed)g(in)f(the)h(late)h +(1970's)h(as)f(a)f(standard)g(data)h(in)m(terc)m(hange)g(format)g(b)s +(et)m(w)m(een)g(v)-5 b(ar-)0 2679 y(ious)37 b(astronomical)g(observ)-5 +b(atories.)63 b(Since)36 b(then)h(FITS)g(has)h(b)s(ecome)g(the)g +(defacto)g(standard)f(data)i(format)0 2791 y(supp)s(orted)29 +b(b)m(y)h(most)h(astronomical)f(data)h(analysis)e(soft)m(w)m(are)i(pac) +m(k)-5 b(ages.)0 2952 y(A)34 b(FITS)f(\014le)f(consists)h(of)h(one)g +(or)g(more)g(Header)g(+)f(Data)i(Units)e(\(HDUs\),)j(where)d(the)h +(\014rst)f(HDU)h(is)f(called)0 3065 y(the)k(`Primary)e(HDU',)j(or)f +(`Primary)e(Arra)m(y'.)60 b(The)36 b(primary)f(arra)m(y)i(con)m(tains)g +(an)f(N-dimensional)f(arra)m(y)i(of)0 3177 y(pixels,)28 +b(suc)m(h)g(as)h(a)h(1-D)g(sp)s(ectrum,)e(a)h(2-D)h(image,)g(or)f(a)g +(3-D)h(data)g(cub)s(e.)39 b(Fiv)m(e)30 b(di\013eren)m(t)e(primary)f +(datat)m(yp)s(es)0 3290 y(are)f(supp)s(orted:)37 b(Unsigned)24 +b(8-bit)i(b)m(ytes,)h(16)g(and)e(32-bit)h(signed)e(in)m(tegers,)j(and)f +(32)g(and)f(64-bit)h(\015oating)g(p)s(oin)m(t)0 3403 +y(reals.)40 b(FITS)29 b(also)h(has)g(a)g(con)m(v)m(en)m(tion)i(for)d +(storing)h(16)h(and)e(32-bit)h(unsigned)e(in)m(tegers)j(\(see)g(the)f +(later)g(section)0 3516 y(en)m(titled)d(`Unsigned)g(In)m(tegers')i(for) +e(more)h(details\).)39 b(The)27 b(primary)f(HDU)j(ma)m(y)f(also)g +(consist)f(of)h(only)f(a)h(header)0 3629 y(with)h(a)i(n)m(ull)d(arra)m +(y)j(con)m(taining)f(no)g(data)h(pixels.)0 3789 y(An)m(y)i(n)m(um)m(b)s +(er)e(of)h(additional)f(HDUs)i(ma)m(y)g(follo)m(w)f(the)g(primary)f +(arra)m(y;)j(these)f(additional)e(HDUs)i(are)g(called)0 +3902 y(FITS)d(`extensions'.)40 b(There)30 b(are)h(curren)m(tly)e(3)i(t) +m(yp)s(es)g(of)f(extensions)g(de\014ned)f(b)m(y)h(the)h(FITS)f +(standard:)136 4171 y Fc(\017)46 b Fi(Image)31 b(Extension)f(-)h(a)f +(N-dimensional)e(arra)m(y)j(of)g(pixels,)e(lik)m(e)g(in)g(a)i(primary)d +(arra)m(y)136 4368 y Fc(\017)46 b Fi(ASCI)s(I)29 b(T)-8 +b(able)30 b(Extension)g(-)g(ro)m(ws)h(and)e(columns)g(of)i(data)g(in)e +(ASCI)s(I)g(c)m(haracter)j(format)136 4564 y Fc(\017)46 +b Fi(Binary)30 b(T)-8 b(able)30 b(Extension)f(-)i(ro)m(ws)f(and)g +(columns)f(of)i(data)g(in)e(binary)f(represen)m(tation)0 +4833 y(In)33 b(eac)m(h)i(case)g(the)f(HDU)h(consists)f(of)g(an)g(ASCI)s +(I)e(Header)i(Unit)g(follo)m(w)m(ed)f(b)m(y)h(an)g(optional)f(Data)i +(Unit.)51 b(F)-8 b(or)0 4946 y(historical)34 b(reasons,)j(eac)m(h)f +(Header)g(or)g(Data)h(unit)d(m)m(ust)h(b)s(e)g(an)g(exact)i(m)m +(ultiple)c(of)j(2880)h(8-bit)e(b)m(ytes)h(long.)0 5059 +y(An)m(y)30 b(un)m(used)g(space)g(is)g(padded)f(with)g(\014ll)f(c)m +(haracters)k(\(ASCI)s(I)d(blanks)g(or)i(zeros\).)0 5219 +y(Eac)m(h)i(Header)f(Unit)g(consists)g(of)g(an)m(y)g(n)m(um)m(b)s(er)f +(of)i(80-c)m(haracter)i(k)m(eyw)m(ord)d(records)g(or)g(`card)h(images') +f(whic)m(h)0 5332 y(ha)m(v)m(e)g(the)e(general)h(form:)95 +5601 y Fe(KEYNAME)46 b(=)i(value)e(/)i(comment)d(string)95 +5714 y(NULLKEY)h(=)334 b(/)48 b(comment:)d(This)i(keyword)f(has)g(no)i +(value)1905 5942 y Fi(13)p eop +%%Page: 14 20 +14 19 bop 0 299 a Fi(14)2398 b Fg(CHAPTER)30 b(3.)112 +b(A)30 b(FITS)g(PRIMER)0 555 y Fi(The)35 b(k)m(eyw)m(ord)i(names)f(ma)m +(y)g(b)s(e)g(up)f(to)h(8)h(c)m(haracters)g(long)f(and)f(can)h(only)g +(con)m(tain)g(upp)s(ercase)f(letters,)j(the)0 668 y(digits)23 +b(0-9,)k(the)e(h)m(yphen,)g(and)f(the)h(underscore)e(c)m(haracter.)41 +b(The)24 b(k)m(eyw)m(ord)h(name)g(is)e(\(usually\))g(follo)m(w)m(ed)i +(b)m(y)f(an)0 781 y(equals)k(sign)g(and)g(a)g(space)i(c)m(haracter)g +(\(=)e(\))h(in)e(columns)h(9)h(-)f(10)i(of)f(the)f(record,)h(follo)m(w) +m(ed)g(b)m(y)f(the)h(v)-5 b(alue)28 b(of)h(the)0 894 +y(k)m(eyw)m(ord)34 b(whic)m(h)f(ma)m(y)h(b)s(e)f(either)g(an)h(in)m +(teger,)h(a)f(\015oating)f(p)s(oin)m(t)g(n)m(um)m(b)s(er,)h(a)g(c)m +(haracter)h(string)d(\(enclosed)i(in)0 1007 y(single)26 +b(quotes\),)k(or)e(a)g(b)s(o)s(olean)f(v)-5 b(alue)27 +b(\(the)h(letter)g(T)g(or)f(F\).)i(A)f(k)m(eyw)m(ord)g(ma)m(y)h(also)e +(ha)m(v)m(e)i(a)g(n)m(ull)c(or)j(unde\014ned)0 1120 y(v)-5 +b(alue)30 b(if)f(there)i(is)e(no)h(sp)s(eci\014ed)f(v)-5 +b(alue)30 b(string,)g(as)g(in)f(the)i(second)f(example.)0 +1280 y(The)42 b(last)g(k)m(eyw)m(ord)h(in)e(the)i(header)f(is)f(alw)m +(a)m(ys)i(the)g(`END')g(k)m(eyw)m(ord)g(whic)m(h)e(has)h(no)h(v)-5 +b(alue)41 b(or)i(commen)m(t)0 1393 y(\014elds.)c(There)30 +b(are)h(man)m(y)f(rules)f(go)m(v)m(erning)i(the)f(exact)i(format)f(of)f +(a)h(k)m(eyw)m(ord)f(record)h(\(see)g(the)f(NOST)g(FITS)0 +1506 y(Standard\))h(so)h(it)f(is)f(b)s(etter)i(to)g(rely)f(on)g +(standard)g(in)m(terface)h(soft)m(w)m(are)h(lik)m(e)e(FITSIO)f(to)j +(correctly)f(construct)0 1619 y(or)e(to)h(parse)g(the)f(k)m(eyw)m(ord)h +(records)f(rather)g(than)h(try)f(to)h(deal)f(directly)f(with)g(the)h +(ra)m(w)h(FITS)f(formats.)0 1779 y(Eac)m(h)37 b(Header)g(Unit)e(b)s +(egins)g(with)g(a)h(series)g(of)g(required)f(k)m(eyw)m(ords)h(whic)m(h) +f(dep)s(end)g(on)h(the)g(t)m(yp)s(e)h(of)f(HDU.)0 1892 +y(These)31 b(required)f(k)m(eyw)m(ords)i(sp)s(ecify)f(the)g(size)h(and) +f(format)h(of)g(the)g(follo)m(wing)e(Data)j(Unit.)44 +b(The)31 b(header)g(ma)m(y)0 2005 y(con)m(tain)g(other)g(optional)e(k)m +(eyw)m(ords)i(to)h(describ)s(e)d(other)h(asp)s(ects)h(of)g(the)g(data,) +g(suc)m(h)g(as)g(the)f(units)f(or)i(scaling)0 2118 y(v)-5 +b(alues.)43 b(Other)31 b(COMMENT)g(or)g(HISTOR)-8 b(Y)30 +b(k)m(eyw)m(ords)i(are)g(also)f(frequen)m(tly)g(added)f(to)i(further)e +(do)s(cumen)m(t)0 2230 y(the)h(data)g(\014le.)0 2391 +y(The)36 b(optional)f(Data)j(Unit)e(immediately)e(follo)m(ws)i(the)g +(last)g(2880-b)m(yte)j(blo)s(c)m(k)d(in)f(the)h(Header)h(Unit.)58 +b(Some)0 2503 y(HDUs)31 b(do)f(not)h(ha)m(v)m(e)g(a)g(Data)h(Unit)e +(and)g(only)f(consist)h(of)h(the)f(Header)h(Unit.)0 2664 +y(If)24 b(there)i(is)e(more)h(than)f(one)h(HDU)h(in)e(the)h(FITS)f +(\014le,)h(then)g(the)g(Header)h(Unit)e(of)h(the)g(next)g(HDU)h +(immediately)0 2777 y(follo)m(ws)e(the)g(last)h(2880-b)m(yte)i(blo)s(c) +m(k)d(of)h(the)f(previous)f(Data)k(Unit)c(\(or)i(Header)g(Unit)f(if)f +(there)i(is)f(no)g(Data)i(Unit\).)0 2937 y(The)k(main)f(required)g(k)m +(eyw)m(ords)h(in)f(FITS)h(primary)f(arra)m(ys)h(or)h(image)f +(extensions)g(are:)136 3172 y Fc(\017)46 b Fi(BITPIX)25 +b({)h(de\014nes)f(the)g(datat)m(yp)s(e)i(of)e(the)h(arra)m(y:)39 +b(8,)27 b(16,)g(32,)h(-32,)g(-64)e(for)f(unsigned)f(8{bit)h(b)m(yte,)j +(16{bit)227 3284 y(signed)38 b(in)m(teger,)j(32{bit)e(signed)e(in)m +(teger,)k(32{bit)e(IEEE)f(\015oating)g(p)s(oin)m(t,)i(and)e(64{bit)h +(IEEE)e(double)227 3397 y(precision)29 b(\015oating)h(p)s(oin)m(t,)g +(resp)s(ectiv)m(ely)-8 b(.)136 3585 y Fc(\017)46 b Fi(NAXIS)30 +b({)h(the)g(n)m(um)m(b)s(er)e(of)h(dimensions)e(in)h(the)i(arra)m(y)-8 +b(,)31 b(usually)d(0,)j(1,)g(2,)g(3,)g(or)g(4.)136 3773 +y Fc(\017)46 b Fi(NAXISn)30 b({)h(\(n)f(ranges)g(from)g(1)h(to)g +(NAXIS\))g(de\014nes)e(the)i(size)f(of)h(eac)m(h)g(dimension.)0 +4008 y(FITS)e(tables)h(start)h(with)e(the)h(k)m(eyw)m(ord)g(XTENSION)g +(=)f(`T)-8 b(ABLE')31 b(\(for)f(ASCI)s(I)f(tables\))h(or)g(XTENSION)f +(=)0 4120 y(`BINT)-8 b(ABLE')32 b(\(for)e(binary)f(tables\))h(and)g(ha) +m(v)m(e)i(the)e(follo)m(wing)f(main)g(k)m(eyw)m(ords:)136 +4355 y Fc(\017)46 b Fi(TFIELDS)30 b({)h(n)m(um)m(b)s(er)e(of)h +(\014elds)f(or)i(columns)e(in)g(the)h(table)136 4543 +y Fc(\017)46 b Fi(NAXIS2)31 b({)g(n)m(um)m(b)s(er)e(of)h(ro)m(ws)h(in)e +(the)h(table)136 4731 y Fc(\017)46 b Fi(TTYPEn)29 b({)i(for)f(eac)m(h)i +(column)d(\(n)h(ranges)h(from)f(1)g(to)h(TFIELDS\))g(giv)m(es)f(the)h +(name)f(of)h(the)f(column)136 4918 y Fc(\017)46 b Fi(TF)m(ORMn)31 +b({)f(the)h(datat)m(yp)s(e)g(of)g(the)f(column)136 5106 +y Fc(\017)46 b Fi(TUNITn)30 b({)g(the)h(ph)m(ysical)e(units)g(of)h(the) +h(column)e(\(optional\))0 5341 y(Users)e(should)e(refer)i(to)g(the)h +(FITS)e(Supp)s(ort)f(O\016ce)i(at)h Fe(http://fits.gsfc.nasa.go)o(v)21 +b Fi(for)27 b(futher)f(informa-)0 5454 y(tion)k(ab)s(out)g(the)h(FITS)e +(format)i(and)f(related)g(soft)m(w)m(are)i(pac)m(k)-5 +b(ages.)p eop +%%Page: 15 21 +15 20 bop 0 1225 a Ff(Chapter)65 b(4)0 1687 y Fl(Extended)77 +b(File)g(Name)g(Syn)-6 b(tax)0 2216 y Fd(4.1)135 b(Ov)l(erview)0 +2466 y Fi(CFITSIO)30 b(supp)s(orts)f(an)j(extended)f(syn)m(tax)h(when)f +(sp)s(ecifying)e(the)j(name)f(of)h(the)g(data)g(\014le)e(to)i(b)s(e)f +(op)s(ened)g(or)0 2579 y(created)g(that)g(includes)d(the)j(follo)m +(wing)e(features:)136 2813 y Fc(\017)46 b Fi(CFITSIO)40 +b(can)i(read)f(IRAF)h(format)g(images)f(whic)m(h)f(ha)m(v)m(e)j(header) +e(\014le)g(names)g(that)h(end)f(with)f(the)227 2926 y('.imh')d +(extension,)i(as)f(w)m(ell)e(as)i(reading)e(and)h(writing)e(FITS)i +(\014les,)h(This)e(feature)i(is)e(implemen)m(ted)g(in)227 +3039 y(CFITSIO)29 b(b)m(y)i(\014rst)e(con)m(v)m(erting)j(the)e(IRAF)h +(image)g(in)m(to)f(a)h(temp)s(orary)f(FITS)g(format)h(\014le)e(in)g +(memory)-8 b(,)227 3152 y(then)35 b(op)s(ening)e(the)i(FITS)f(\014le.) +53 b(An)m(y)35 b(of)g(the)g(usual)e(CFITSIO)h(routines)f(then)i(ma)m(y) +g(b)s(e)f(used)g(to)i(read)227 3265 y(the)31 b(image)f(header)g(or)h +(data.)41 b(Similarly)-8 b(,)27 b(ra)m(w)j(binary)f(data)i(arra)m(ys)f +(can)h(b)s(e)f(read)g(b)m(y)g(con)m(v)m(erting)h(them)227 +3378 y(on)g(the)f(\015y)g(in)m(to)g(virtual)f(FITS)h(images.)136 +3557 y Fc(\017)46 b Fi(FITS)37 b(\014les)g(on)g(the)h(in)m(ternet)g +(can)g(b)s(e)f(read)g(\(and)g(sometimes)h(written\))f(using)f(the)i +(FTP)-8 b(,)38 b(HTTP)-8 b(,)38 b(or)227 3670 y(R)m(OOT)30 +b(proto)s(cols.)136 3849 y Fc(\017)46 b Fi(FITS)30 b(\014les)f(can)i(b) +s(e)f(pip)s(ed)e(b)s(et)m(w)m(een)j(tasks)f(on)h(the)f(stdin)f(and)h +(stdout)g(streams.)136 4028 y Fc(\017)46 b Fi(FITS)20 +b(\014les)g(can)h(b)s(e)f(read)g(and)g(written)g(in)f(shared)h(memory) +-8 b(.)38 b(This)19 b(can)i(p)s(oten)m(tially)e(ac)m(hiev)m(e)j(m)m(uc) +m(h)f(b)s(etter)227 4141 y(data)26 b(I/O)e(p)s(erformance)g(compared)h +(to)h(reading)e(and)g(writing)e(the)j(same)h(FITS)e(\014les)f(on)i +(magnetic)g(disk.)136 4320 y Fc(\017)46 b Fi(Compressed)30 +b(FITS)f(\014les)h(in)f(gzip)h(or)g(Unix)f(COMPRESS)g(format)h(can)h(b) +s(e)f(directly)f(read.)136 4499 y Fc(\017)46 b Fi(Output)28 +b(FITS)h(\014les)f(can)h(b)s(e)g(written)f(directly)g(in)f(compressed)i +(gzip)g(format,)h(th)m(us)e(sa)m(ving)h(disk)f(space.)136 +4678 y Fc(\017)46 b Fi(FITS)26 b(table)g(columns)f(can)i(b)s(e)f +(created,)i(mo)s(di\014ed,)e(or)g(deleted)g('on-the-\015y')h(as)g(the)g +(table)f(is)f(op)s(ened)h(b)m(y)227 4791 y(CFITSIO.)32 +b(This)g(creates)j(a)e(virtual)f(FITS)h(\014le)f(con)m(taining)h(the)h +(mo)s(di\014cations)d(that)j(is)f(then)g(op)s(ened)227 +4904 y(b)m(y)e(the)f(application)f(program.)136 5083 +y Fc(\017)46 b Fi(T)-8 b(able)28 b(ro)m(ws)f(ma)m(y)i(b)s(e)e +(selected,)i(or)f(\014ltered)f(out,)h(on)g(the)g(\015y)f(when)g(the)h +(table)g(is)f(op)s(ened)g(b)m(y)g(CFITSIO,)227 5196 y(based)f(on)h(an)f +(arbitrary)g(user-sp)s(eci\014ed)e(expression.)38 b(Only)25 +b(ro)m(ws)i(for)f(whic)m(h)f(the)i(expression)e(ev)-5 +b(aluates)227 5309 y(to)31 b('TR)m(UE')g(are)g(retained)f(in)f(the)h +(cop)m(y)i(of)e(the)h(table)f(that)h(is)e(op)s(ened)h(b)m(y)g(the)h +(application)d(program.)136 5488 y Fc(\017)46 b Fi(Histogram)27 +b(images)g(ma)m(y)g(b)s(e)f(created)h(on)f(the)h(\015y)f(b)m(y)g +(binning)e(the)i(v)-5 b(alues)26 b(in)f(table)i(columns,)f(resulting) +227 5601 y(in)35 b(a)h(virtual)f(N-dimensional)e(FITS)j(image.)58 +b(The)35 b(application)f(program)i(then)g(only)f(sees)h(the)h(FITS)227 +5714 y(image)31 b(\(in)e(the)i(primary)d(arra)m(y\))k(instead)d(of)i +(the)f(original)f(FITS)g(table.)1905 5942 y(15)p eop +%%Page: 16 22 +16 21 bop 0 299 a Fi(16)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(The)43 +b(latter)h(3)g(features)g(in)e(particular)g(add)h(v)m(ery)h(p)s(o)m(w)m +(erful)e(data)i(pro)s(cessing)e(capabilities)g(directly)g(in)m(to)0 +668 y(CFITSIO,)29 b(and)g(hence)h(in)m(to)g(ev)m(ery)g(task)h(that)f +(uses)g(CFITSIO)e(to)j(read)f(or)g(write)f(FITS)g(\014les.)39 +b(F)-8 b(or)31 b(example,)0 781 y(these)d(features)f(transform)f(a)i(v) +m(ery)f(simple)e(program)i(that)h(just)f(copies)g(an)g(input)e(FITS)h +(\014le)g(to)i(a)g(new)e(output)0 894 y(\014le)35 b(\(lik)m(e)g(the)h +(`\014tscop)m(y')h(program)f(that)g(is)f(distributed)e(with)h +(CFITSIO\))h(in)m(to)h(a)g(m)m(ultipurp)s(ose)d(FITS)i(\014le)0 +1007 y(pro)s(cessing)23 b(to)s(ol.)39 b(By)25 b(app)s(ending)e(fairly)f +(simple)h(quali\014ers)g(on)m(to)i(the)g(name)g(of)g(the)g(input)e +(FITS)h(\014le,)h(the)g(user)0 1120 y(can)37 b(p)s(erform)f(quite)h +(complex)g(table)g(editing)f(op)s(erations)g(\(e.g.,)41 +b(create)e(new)d(columns,)i(or)f(\014lter)g(out)g(ro)m(ws)0 +1233 y(in)f(a)h(table\))g(or)g(create)h(FITS)f(images)g(b)m(y)g +(binning)c(or)k(histogramming)f(the)h(v)-5 b(alues)36 +b(in)g(table)h(columns.)59 b(In)0 1346 y(addition,)31 +b(these)i(functions)d(ha)m(v)m(e)k(b)s(een)d(co)s(ded)h(using)e(new)i +(state-of-the)i(art)f(algorithms)e(that)i(are,)g(in)e(some)0 +1458 y(cases,)h(10)f(-)f(100)i(times)e(faster)h(than)f(previous)f +(widely)f(used)i(implemen)m(tations.)0 1619 y(Before)k(describing)d +(the)j(complete)g(syn)m(tax)g(for)f(the)h(extended)f(FITS)g(\014le)f +(names)h(in)f(the)i(next)g(section,)g(here)0 1732 y(are)d(a)g(few)f +(examples)g(of)g(FITS)g(\014le)f(names)i(that)f(giv)m(e)h(a)g(quic)m(k) +f(o)m(v)m(erview)h(of)g(the)f(allo)m(w)m(ed)g(syn)m(tax:)136 +1960 y Fc(\017)46 b Fe('myfile.fits')p Fi(:)37 b(the)31 +b(simplest)d(case)k(of)e(a)h(FITS)f(\014le)f(on)i(disk)d(in)i(the)g +(curren)m(t)g(directory)-8 b(.)136 2137 y Fc(\017)46 +b Fe('myfile.imh')p Fi(:)37 b(op)s(ens)28 b(an)h(IRAF)g(format)g(image) +h(\014le)e(and)g(con)m(v)m(erts)i(it)f(on)g(the)g(\015y)f(in)m(to)h(a)g +(temp)s(orary)227 2250 y(FITS)h(format)h(image)f(in)f(memory)i(whic)m +(h)e(can)h(then)g(b)s(e)g(read)g(with)f(an)m(y)i(other)g(CFITSIO)e +(routine.)136 2427 y Fc(\017)46 b Fe(rawfile.dat[i512,512])p +Fi(:)35 b(op)s(ens)30 b(a)g(ra)m(w)h(binary)d(data)j(arra)m(y)g(\(a)g +(512)g(x)f(512)i(short)e(in)m(teger)g(arra)m(y)h(in)227 +2540 y(this)h(case\))j(and)d(con)m(v)m(erts)j(it)d(on)h(the)g(\015y)g +(in)m(to)g(a)g(temp)s(orary)g(FITS)f(format)h(image)h(in)d(memory)i +(whic)m(h)227 2652 y(can)e(then)f(b)s(e)g(read)g(with)f(an)m(y)i(other) +f(CFITSIO)f(routine.)136 2830 y Fc(\017)46 b Fe(myfile.fits.gz)p +Fi(:)d(if)32 b(this)g(is)g(the)h(name)g(of)h(a)f(new)g(output)g +(\014le,)g(the)g('.gz')i(su\016x)d(will)e(cause)k(it)f(to)h(b)s(e)227 +2942 y(compressed)c(in)f(gzip)h(format)h(when)e(it)h(is)g(written)f(to) +i(disk.)136 3120 y Fc(\017)46 b Fe('myfile.fits.gz[events,)c(2]')p +Fi(:)59 b(op)s(ens)40 b(and)f(uncompresses)g(the)i(gzipp)s(ed)d(\014le) +i(m)m(y\014le.\014ts)f(then)227 3232 y(mo)m(v)m(es)34 +b(to)f(the)f(extension)g(whic)m(h)f(has)g(the)i(k)m(eyw)m(ords)f +(EXTNAME)g(=)g('EVENTS')g(and)g(EXTVER)f(=)227 3345 y(2.)136 +3522 y Fc(\017)46 b Fe('-')p Fi(:)40 b(a)31 b(dash)f(\(min)m(us)f +(sign\))h(signi\014es)e(that)j(the)g(input)e(\014le)g(is)h(to)h(b)s(e)f +(read)g(from)g(the)h(stdin)e(\014le)g(stream,)227 3635 +y(or)i(that)g(the)f(output)g(\014le)g(is)f(to)i(b)s(e)f(written)f(to)i +(the)g(stdout)f(stream.)136 3812 y Fc(\017)46 b Fe +('ftp://legacy.gsfc.nasa.g)o(ov/t)o(est/)o(vel)o(a.fi)o(ts')p +Fi(:)33 b(FITS)28 b(\014les)f(in)g(an)m(y)h(ftp)g(arc)m(hiv)m(e)h(site) +f(on)g(the)227 3925 y(in)m(ternet)i(ma)m(y)h(b)s(e)f(directly)f(op)s +(ened)h(with)f(read-only)h(access.)136 4102 y Fc(\017)46 +b Fe('http://legacy.gsfc.nasa.)o(gov/)o(soft)o(war)o(e/te)o(st.f)o(its) +o(')p Fi(:)d(an)m(y)34 b(v)-5 b(alid)33 b(URL)h(to)h(a)f(FITS)g(\014le) +f(on)227 4215 y(the)e(W)-8 b(eb)31 b(ma)m(y)g(b)s(e)f(op)s(ened)f(with) +g(read-only)h(access.)136 4392 y Fc(\017)46 b Fe +('root://legacy.gsfc.nasa.)o(gov/)o(test)o(/ve)o(la.f)o(its')o +Fi(:)32 b(similar)21 b(to)j(ftp)f(access)i(except)g(that)f(it)f(pro-) +227 4505 y(vides)29 b(write)h(as)g(w)m(ell)f(as)i(read)f(access)h(to)g +(the)f(\014les)g(across)g(the)h(net)m(w)m(ork.)41 b(This)28 +b(uses)i(the)h(ro)s(ot)f(proto)s(col)227 4618 y(dev)m(elop)s(ed)g(at)h +(CERN.)136 4795 y Fc(\017)46 b Fe('shmem://h2[events]')p +Fi(:)35 b(op)s(ens)30 b(the)g(FITS)f(\014le)h(in)f(a)h(shared)f(memory) +i(segmen)m(t)g(and)e(mo)m(v)m(es)j(to)f(the)227 4908 +y(EVENTS)f(extension.)136 5085 y Fc(\017)46 b Fe('mem://')p +Fi(:)52 b(creates)39 b(a)e(scratc)m(h)i(output)d(\014le)h(in)e(core)j +(computer)f(memory)-8 b(.)62 b(The)37 b(resulting)e('\014le')i(will)227 +5198 y(disapp)s(ear)24 b(when)g(the)i(program)f(exits,)h(so)g(this)e +(is)h(mainly)e(useful)h(for)h(testing)h(purp)s(oses)d(when)i(one)g(do)s +(es)227 5311 y(not)31 b(w)m(an)m(t)g(a)g(p)s(ermanen)m(t)f(cop)m(y)h +(of)f(the)h(output)f(\014le.)136 5488 y Fc(\017)46 b +Fe('myfile.fits[3;)e(Images\(10\)]')p Fi(:)49 b(op)s(ens)35 +b(a)i(cop)m(y)g(of)f(the)g(image)h(con)m(tained)f(in)f(the)i(10th)f(ro) +m(w)h(of)227 5601 y(the)26 b('Images')i(column)c(in)h(the)h(binary)f +(table)g(in)g(the)h(3th)h(extension)e(of)h(the)h(FITS)e(\014le.)38 +b(The)26 b(application)227 5714 y(just)k(sees)h(this)e(single)g(image)i +(as)f(the)h(primary)d(arra)m(y)-8 b(.)p eop +%%Page: 17 23 +17 22 bop 0 299 a Fg(4.1.)72 b(O)m(VER)-10 b(VIEW)3086 +b Fi(17)136 555 y Fc(\017)46 b Fe('myfile.fits[1:512:2,)c(1:512:2]')p +Fi(:)49 b(op)s(ens)35 b(a)h(section)g(of)f(the)h(input)e(image)i +(ranging)f(from)g(the)227 668 y(1st)26 b(to)g(the)f(512th)h(pixel)e(in) +f(X)j(and)e(Y,)i(and)e(selects)i(ev)m(ery)f(second)h(pixel)d(in)h(b)s +(oth)g(dimensions,)g(resulting)227 781 y(in)29 b(a)i(256)h(x)e(256)i +(pixel)c(image)j(in)e(this)g(case.)136 981 y Fc(\017)46 +b Fe('myfile.fits[EVENTS][col)41 b(Rad)47 b(=)h(sqrt\(X**2)d(+)j +(Y**2\)]')p Fi(:)38 b(creates)30 b(and)f(op)s(ens)f(a)h(temp)s(orary) +227 1094 y(\014le)e(on)g(the)g(\015y)g(\(in)f(memory)h(or)g(on)h +(disk\))e(that)h(is)g(iden)m(tical)f(to)i(m)m(y\014le.\014ts)e(except)i +(that)g(it)f(will)e(con)m(tain)227 1207 y(a)41 b(new)f(column)f(in)h +(the)g(EVENTS)g(extension)g(called)g('Rad')h(whose)f(v)-5 +b(alue)40 b(is)f(computed)i(using)e(the)227 1320 y(indicated)29 +b(expresson)h(whic)m(h)f(is)h(a)g(function)f(of)i(the)g(v)-5 +b(alues)29 b(in)g(the)i(X)f(and)g(Y)h(columns.)136 1520 +y Fc(\017)46 b Fe('myfile.fits[EVENTS][PHA)41 b(>)48 +b(5]')p Fi(:)37 b(creates)27 b(and)e(op)s(ens)g(a)h(temp)s(orary)f +(FITS)g(\014les)f(that)i(is)f(iden)m(ti-)227 1633 y(cal)k(to)h('m)m +(y\014le.\014ts')e(except)i(that)f(the)g(EVENTS)f(table)h(will)d(only)i +(con)m(tain)h(the)g(ro)m(ws)g(that)h(ha)m(v)m(e)g(v)-5 +b(alues)227 1746 y(of)28 b(the)g(PHA)f(column)f(greater)j(than)e(5.)40 +b(In)27 b(general,)h(an)m(y)g(arbitrary)e(b)s(o)s(olean)h(expression)f +(using)g(a)i(C)f(or)227 1859 y(F)-8 b(ortran-lik)m(e)29 +b(syn)m(tax,)g(whic)m(h)e(ma)m(y)i(com)m(bine)f(AND)h(and)f(OR)f(op)s +(erators,)i(ma)m(y)g(b)s(e)f(used)f(to)i(select)g(ro)m(ws)227 +1972 y(from)h(a)h(table.)136 2172 y Fc(\017)46 b Fe +('myfile.fits[EVENTS][bin)41 b(\(X,Y\)=1,2048,4]')p Fi(:)46 +b(creates)37 b(a)e(temp)s(orary)g(FITS)f(primary)f(arra)m(y)227 +2285 y(image)c(whic)m(h)f(is)g(computed)g(on)h(the)g(\015y)f(b)m(y)g +(binning)e(\(i.e,)k(computing)d(the)i(2-dimensional)e(histogram\))227 +2398 y(of)34 b(the)f(v)-5 b(alues)33 b(in)f(the)i(X)g(and)e(Y)i +(columns)e(of)i(the)f(EVENTS)g(extension.)49 b(In)33 +b(this)f(case)j(the)e(X)h(and)f(Y)227 2511 y(co)s(ordinates)g(range)h +(from)f(1)h(to)g(2048)h(and)e(the)h(image)f(pixel)f(size)h(is)g(4)g +(units)f(in)g(b)s(oth)h(dimensions,)f(so)227 2624 y(the)f(resulting)d +(image)j(is)e(512)j(x)e(512)i(pixels)d(in)g(size.)136 +2824 y Fc(\017)46 b Fi(The)31 b(\014nal)f(example)i(com)m(bines)f(man)m +(y)g(of)h(these)g(feature)g(in)m(to)f(one)h(complex)f(expression)f +(\(it)i(is)e(brok)m(en)227 2937 y(in)m(to)h(sev)m(eral)f(lines)f(for)h +(clarit)m(y\):)323 3206 y Fe('ftp://legacy.gsfc.nasa)o(.gov)o(/dat)o +(a/s)o(ampl)o(e.fi)o(ts.)o(gz[E)o(VENT)o(S])370 3319 +y([col)47 b(phacorr)f(=)h(pha)g(*)h(1.1)f(-)g(0.3][phacorr)e(>=)i(5.0)g +(&&)g(phacorr)f(<=)h(14.0])370 3432 y([bin)g(\(X,Y\)=32]')227 +3701 y Fi(In)37 b(this)g(case,)k(CFITSIO)36 b(\(1\))j(copies)f(and)f +(uncompresses)g(the)h(FITS)f(\014le)g(from)g(the)h(ftp)f(site)h(on)g +(the)227 3814 y(legacy)f(mac)m(hine,)h(\(2\))f(mo)m(v)m(es)g(to)g(the)g +('EVENTS')f(extension,)h(\(3\))g(calculates)g(a)f(new)g(column)f +(called)227 3927 y('phacorr',)30 b(\(4\))f(selects)g(the)g(ro)m(ws)g +(in)e(the)i(table)g(that)g(ha)m(v)m(e)h(phacorr)e(in)f(the)i(range)g(5) +g(to)h(14,)g(and)e(\014nally)227 4040 y(\(5\))35 b(bins)c(the)i +(remaining)e(ro)m(ws)i(on)h(the)f(X)g(and)g(Y)g(column)f(co)s +(ordinates,)i(using)d(a)j(pixel)d(size)i(=)g(32)h(to)227 +4153 y(create)d(a)f(2D)g(image.)41 b(All)28 b(this)g(pro)s(cessing)g +(is)h(completely)g(transparen)m(t)g(to)i(the)e(application)f(program,) +227 4266 y(whic)m(h)h(simply)f(sees)j(the)g(\014nal)e(2-D)i(image)g(in) +e(the)h(primary)f(arra)m(y)i(of)f(the)h(op)s(ened)f(\014le.)0 +4538 y(The)c(full)f(extended)i(CFITSIO)e(FITS)h(\014le)g(name)h(can)g +(con)m(tain)g(sev)m(eral)g(di\013eren)m(t)g(comp)s(onen)m(ts)g(dep)s +(ending)d(on)0 4651 y(the)31 b(con)m(text.)42 b(These)30 +b(comp)s(onen)m(ts)h(are)g(describ)s(ed)d(in)h(the)h(follo)m(wing)f +(sections:)0 4924 y Fe(When)47 b(creating)e(a)j(new)f(file:)143 +5036 y(filetype://BaseFilename\(t)o(empl)o(ate)o(Name)o(\))0 +5262 y(When)g(opening)e(an)j(existing)d(primary)h(array)g(or)i(image)e +(HDU:)143 5375 y(filetype://BaseFilename\(o)o(utNa)o(me\))o([HDU)o +(loca)o(tio)o(n][I)o(mage)o(Sec)o(tion)o(])0 5601 y(When)h(opening)e +(an)j(existing)d(table)i(HDU:)143 5714 y(filetype://BaseFilename\(o)o +(utNa)o(me\))o([HDU)o(loca)o(tio)o(n][c)o(olFi)o(lte)o(r][r)o(owFi)o +(lte)o(r][b)o(inSp)o(ec])p eop +%%Page: 18 24 +18 23 bop 0 299 a Fi(18)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(The)41 +b(\014let)m(yp)s(e,)j(BaseFilename,)h(outName,)g(HDUlo)s(cation,)g(and) +c(ImageSection)h(comp)s(onen)m(ts,)j(if)c(presen)m(t,)0 +668 y(m)m(ust)30 b(b)s(e)g(giv)m(en)h(in)e(that)i(order,)g(but)f(the)g +(colFilter,)g(ro)m(wFilter,)h(and)e(binSp)s(ec)g(sp)s(eci\014ers)f(ma)m +(y)k(follo)m(w)d(in)h(an)m(y)0 781 y(order.)39 b(Regardless)28 +b(of)h(the)f(order,)g(ho)m(w)m(ev)m(er,)i(the)f(colFilter)e(sp)s +(eci\014er,)g(if)g(presen)m(t,)i(will)d(b)s(e)h(pro)s(cessed)h(\014rst) +f(b)m(y)0 894 y(CFITSIO,)i(follo)m(w)m(ed)h(b)m(y)g(the)h(ro)m(wFilter) +f(sp)s(eci\014er,)f(and)g(\014nally)g(b)m(y)h(the)g(binSp)s(ec)e(sp)s +(eci\014er.)0 1221 y Fd(4.2)135 b(Filet)l(yp)t(e)0 1471 +y Fi(The)37 b(t)m(yp)s(e)g(of)g(\014le)f(determines)g(the)h(medium)e +(on)i(whic)m(h)f(the)h(\014le)f(is)h(lo)s(cated)g(\(e.g.,)j(disk)c(or)h +(net)m(w)m(ork\))h(and,)0 1584 y(hence,)f(whic)m(h)d(in)m(ternal)g +(device)h(driv)m(er)f(is)g(used)g(b)m(y)h(CFITSIO)f(to)i(read)f(and/or) +g(write)f(the)h(\014le.)55 b(Curren)m(tly)0 1697 y(supp)s(orted)29 +b(t)m(yp)s(es)h(are)382 1913 y Fe(file://)93 b(-)48 b(file)e(on)i +(local)e(magnetic)g(disk)g(\(default\))382 2026 y(ftp://)141 +b(-)48 b(a)f(readonly)f(file)g(accessed)g(with)h(the)g(anonymous)e(FTP) +i(protocol.)907 2139 y(It)g(also)g(supports)93 b +(ftp://username:password@)o(host)o(nam)o(e/..)o(.)907 +2252 y(for)47 b(accessing)e(password-protected)e(ftp)k(sites.)382 +2365 y(http://)93 b(-)48 b(a)f(readonly)f(file)g(accessed)g(with)h(the) +g(HTTP)f(protocol.)93 b(It)907 2478 y(does)46 b(not)95 +b(support)46 b(username:password)d(like)k(the)g(ftp)f(driver.)907 +2591 y(Proxy)g(HTTP)h(servers)f(are)h(supported)e(using)h(the)h +(http_proxy)907 2704 y(environment)e(variable.)382 2817 +y(root://)93 b(-)48 b(uses)e(the)h(CERN)g(root)g(protocol)e(for)i +(writing)f(as)h(well)g(as)907 2930 y(reading)f(files)g(over)h(the)g +(network.)382 3042 y(shmem://)e(-)j(opens)e(or)h(creates)f(a)i(file)e +(which)h(persists)e(in)i(the)g(computer's)907 3155 y(shared)f(memory.) +382 3268 y(mem://)141 b(-)48 b(opens)e(a)i(temporary)d(file)i(in)g +(core)f(memory.)94 b(The)47 b(file)907 3381 y(disappears)e(when)h(the)h +(program)f(exits)h(so)g(this)f(is)i(mainly)907 3494 y(useful)e(for)h +(test)f(purposes)g(when)h(a)g(permanent)e(output)h(file)907 +3607 y(is)h(not)g(desired.)0 3824 y Fi(If)35 b(the)h(\014let)m(yp)s(e)f +(is)f(not)i(sp)s(eci\014ed,)g(then)f(t)m(yp)s(e)h(\014le://)g(is)e +(assumed.)56 b(The)35 b(double)f(slashes)h('//')i(are)f(optional)0 +3937 y(and)30 b(ma)m(y)h(b)s(e)e(omitted)i(in)e(most)i(cases.)0 +4220 y Fb(4.2.1)112 b(Notes)37 b(ab)s(out)i(HTTP)d(pro)m(xy)i(serv)m +(ers)0 4439 y Fi(A)32 b(pro)m(xy)g(HTTP)f(serv)m(er)h(ma)m(y)h(b)s(e)e +(used)g(b)m(y)h(de\014ning)e(the)i(address)f(\(URL\))i(and)e(p)s(ort)g +(n)m(um)m(b)s(er)g(of)h(the)g(pro)m(xy)0 4552 y(serv)m(er)f(with)e(the) +h(h)m(ttp)p 801 4552 28 4 v 33 w(pro)m(xy)g(en)m(vironmen)m(t)g(v)-5 +b(ariable.)40 b(F)-8 b(or)31 b(example)191 4769 y Fe(setenv)46 +b(http_proxy)f(http://heasarc.gsfc.nasa)o(.gov)o(:312)o(8)0 +4985 y Fi(will)35 b(cause)j(CFITSIO)f(to)h(use)g(p)s(ort)f(3128)i(on)f +(the)g(heasarc)g(pro)m(xy)g(serv)m(er)g(whenev)m(er)g(reading)f(a)h +(FITS)f(\014le)0 5098 y(with)29 b(HTTP)-8 b(.)0 5382 +y Fb(4.2.2)112 b(Notes)37 b(ab)s(out)i(the)e(ro)s(ot)g(\014let)m(yp)s +(e)0 5601 y Fi(The)20 b(original)g(ro)s(otd)g(serv)m(er)h(can)h(b)s(e)e +(obtained)g(from:)36 b Fe(ftp://root.cern.ch/root)o(/roo)o(td.t)o(ar.)o +(gz)15 b Fi(but,)22 b(for)0 5714 y(it)32 b(to)i(w)m(ork)f(correctly)g +(with)e(CFITSIO)h(one)h(has)f(to)i(use)e(a)i(mo)s(di\014ed)c(v)m +(ersion)j(whic)m(h)e(supp)s(orts)g(a)i(command)p eop +%%Page: 19 25 +19 24 bop 0 299 a Fg(4.2.)72 b(FILETYPE)3128 b Fi(19)0 +555 y(to)41 b(return)d(the)j(length)e(of)h(the)g(\014le.)69 +b(This)38 b(mo)s(di\014ed)f(v)m(ersion)j(is)f(a)m(v)-5 +b(ailable)39 b(in)g(ro)s(otd)g(sub)s(directory)f(in)h(the)0 +668 y(CFITSIO)29 b(ftp)h(area)h(at)286 928 y Fe +(ftp://legacy.gsfc.nasa.gov)o(/so)o(ftwa)o(re/f)o(its)o(io/c)o(/roo)o +(t/r)o(ootd)o(.tar)o(.gz)o(.)0 1187 y Fi(This)i(small)f(serv)m(er)j(is) +f(started)g(either)g(b)m(y)h(inetd)e(when)g(a)i(clien)m(t)f(requests)g +(a)h(connection)g(to)g(a)f(ro)s(otd)h(serv)m(er)0 1300 +y(or)30 b(b)m(y)g(hand)f(\(i.e.)41 b(from)30 b(the)g(command)g(line\).) +40 b(The)29 b(ro)s(otd)h(serv)m(er)h(w)m(orks)f(with)f(the)h(R)m(OOT)g +(TNetFile)g(class.)0 1413 y(It)g(allo)m(ws)e(remote)j(access)f(to)h(R)m +(OOT)e(database)h(\014les)e(in)g(either)h(read)h(or)f(write)g(mo)s(de.) +40 b(By)30 b(default)e(TNetFile)0 1526 y(assumes)38 b(p)s(ort)g(432)h +(\(whic)m(h)e(requires)g(ro)s(otd)h(to)h(b)s(e)f(started)h(as)f(ro)s +(ot\).)65 b(T)-8 b(o)39 b(run)e(ro)s(otd)h(via)g(inetd)f(add)h(the)0 +1639 y(follo)m(wing)29 b(line)g(to)i(/etc/services:)95 +1898 y Fe(rootd)238 b(432/tcp)0 2158 y Fi(and)30 b(to)h +(/etc/inetd.conf,)h(add)e(the)g(follo)m(wing)f(line:)95 +2417 y Fe(rootd)47 b(stream)f(tcp)h(nowait)f(root)h +(/user/rdm/root/bin/root)o(d)42 b(rootd)k(-i)0 2677 y +Fi(F)-8 b(orce)34 b(inetd)d(to)j(reread)e(its)g(conf)g(\014le)g(with)f +("kill)f(-HUP)j(<pid)e(inetd>".)46 b(Y)-8 b(ou)33 b(can)g(also)f(start) +h(ro)s(otd)g(b)m(y)f(hand)0 2790 y(running)i(directly)h(under)f(y)m +(our)j(priv)-5 b(ate)36 b(accoun)m(t)h(\(no)g(ro)s(ot)g(system)f +(privileges)e(needed\).)59 b(F)-8 b(or)37 b(example)f(to)0 +2903 y(start)f(ro)s(otd)e(listening)f(on)i(p)s(ort)f(5151)j(just)d(t)m +(yp)s(e:)49 b Fe(rootd)d(-p)h(5151)33 b Fi(Notice:)49 +b(no)34 b(&)f(is)g(needed.)51 b(Ro)s(otd)35 b(will)0 +3016 y(go)c(in)m(to)g(bac)m(kground)f(b)m(y)g(itself.)95 +3275 y Fe(Rootd)47 b(arguments:)191 3388 y(-i)763 b(says)47 +b(we)g(were)f(started)g(by)h(inetd)191 3501 y(-p)g(port#)476 +b(specifies)45 b(a)j(different)d(port)i(to)g(listen)f(on)191 +3614 y(-d)h(level)476 b(level)46 b(of)i(debug)e(info)h(written)e(to)j +(syslog)1050 3727 y(0)f(=)h(no)f(debug)f(\(default\))1050 +3840 y(1)h(=)h(minimum)1050 3953 y(2)f(=)h(medium)1050 +4066 y(3)f(=)h(maximum)0 4325 y Fi(Ro)s(otd)29 b(can)f(also)g(b)s(e)g +(con\014gured)g(for)g(anon)m(ymous)g(usage)h(\(lik)m(e)f(anon)m(ymous)g +(ftp\).)40 b(T)-8 b(o)29 b(setup)f(ro)s(otd)g(to)h(accept)0 +4438 y(anon)m(ymous)h(logins)f(do)i(the)f(follo)m(wing)f(\(while)g(b)s +(eing)g(logged)i(in)e(as)h(ro)s(ot\):)143 4698 y Fe(-)48 +b(Add)f(the)f(following)g(line)g(to)i(/etc/passwd:)239 +4924 y(rootd:*:71:72:Anonymous)41 b(rootd:/var/spool/rootd:/b)o(in/)o +(fals)o(e)239 5149 y(where)46 b(you)h(may)g(modify)f(the)h(uid,)f(gid)h +(\(71,)g(72\))g(and)g(the)g(home)f(directory)239 5262 +y(to)h(suite)f(your)h(system.)143 5488 y(-)h(Add)f(the)f(following)g +(line)g(to)i(/etc/group:)239 5714 y(rootd:*:72:rootd)p +eop +%%Page: 20 26 +20 25 bop 0 299 a Fi(20)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)239 668 y +Fe(where)46 b(the)h(gid)g(must)f(match)h(the)g(gid)g(in)g(/etc/passwd.) +143 894 y(-)h(Create)e(the)h(directories:)239 1120 y(mkdir)f +(/var/spool/rootd)239 1233 y(mkdir)g(/var/spool/rootd/tmp)239 +1346 y(chmod)g(777)h(/var/spool/rootd/tmp)239 1571 y(Where)f +(/var/spool/rootd)d(must)k(match)f(the)h(rootd)g(home)f(directory)g(as) +239 1684 y(specified)f(in)i(the)g(rootd)f(/etc/passwd)f(entry.)143 +1910 y(-)j(To)f(make)f(writeable)g(directories)e(for)j(anonymous)f(do,) +h(for)f(example:)239 2136 y(mkdir)g(/var/spool/rootd/pub)239 +2249 y(chown)g(rootd:rootd)f(/var/spool/rootd/pub)0 2492 +y Fi(That's)d(all.)74 b(Sev)m(eral)42 b(additional)e(remarks:)64 +b(y)m(ou)42 b(can)g(login)f(to)i(an)f(anon)m(ymous)f(serv)m(er)i +(either)e(with)g(the)0 2605 y(names)31 b("anon)m(ymous")h(or)f("ro)s +(otd".)43 b(The)31 b(passw)m(ord)f(should)f(b)s(e)i(of)g(t)m(yp)s(e)g +(user@host.do.main.)42 b(Only)29 b(the)i(@)0 2718 y(is)d(enforced)g +(for)h(the)f(time)h(b)s(eing.)38 b(In)28 b(anon)m(ymous)h(mo)s(de)f +(the)g(top)h(of)g(the)g(\014le)e(tree)j(is)d(set)i(to)h(the)e(ro)s(otd) +h(home)0 2831 y(directory)-8 b(,)38 b(therefore)f(only)e(\014les)h(b)s +(elo)m(w)f(the)i(home)f(directory)g(can)g(b)s(e)g(accessed.)60 +b(Anon)m(ymous)36 b(mo)s(de)g(only)0 2944 y(w)m(orks)30 +b(when)g(the)g(serv)m(er)h(is)e(started)i(via)f(inetd.)0 +3232 y Fb(4.2.3)112 b(Notes)37 b(ab)s(out)i(the)e(shmem)g(\014let)m(yp) +s(e:)0 3451 y Fi(Shared)d(memory)h(\014les)f(are)h(curren)m(tly)f(supp) +s(orted)f(on)i(most)h(Unix)e(platforms,)h(where)g(the)g(shared)f +(memory)0 3564 y(segmen)m(ts)d(are)g(managed)g(b)m(y)f(the)g(op)s +(erating)g(system)h(k)m(ernel)e(and)h(`liv)m(e')g(indep)s(enden)m(tly)d +(of)k(pro)s(cesses.)40 b(They)0 3677 y(are)34 b(not)g(deleted)g(\(b)m +(y)g(default\))f(when)g(the)h(pro)s(cess)f(whic)m(h)g(created)i(them)f +(terminates,)g(although)g(they)g(will)0 3790 y(disapp)s(ear)d(if)h(the) +i(system)f(is)f(reb)s(o)s(oted.)49 b(Applications)31 +b(can)j(create)h(shared)d(memory)h(\014les)f(in)g(CFITSIO)g(b)m(y)0 +3903 y(calling:)143 4146 y Fe(fit_create_file\(&fitsfile)o(ptr,)41 +b("shmem://h2",)j(&status\);)0 4389 y Fi(where)22 b(the)g(ro)s(ot)h +(`\014le')f(names)g(are)g(curren)m(tly)g(restricted)g(to)h(b)s(e)e +('h0',)k('h1',)f('h2',)h('h3',)f(etc.,)i(up)21 b(to)i(a)g(maxim)m(umn)0 +4502 y(n)m(um)m(b)s(er)d(de\014ned)f(b)m(y)i(the)g(the)g(v)-5 +b(alue)21 b(of)g(SHARED)p 1746 4502 28 4 v 33 w(MAXSEG)g(\(equal)g(to)g +(16)h(b)m(y)f(default\).)37 b(This)19 b(is)h(a)h(protot)m(yp)s(e)0 +4615 y(implemen)m(tation)27 b(of)i(the)g(shared)f(memory)g(in)m +(terface)h(and)f(a)h(more)g(robust)f(in)m(terface,)i(whic)m(h)d(will)f +(ha)m(v)m(e)k(few)m(er)0 4728 y(restrictions)f(on)h(the)h(n)m(um)m(b)s +(er)e(of)i(\014les)e(and)h(on)g(their)f(names,)i(ma)m(y)g(b)s(e)f(dev)m +(elop)s(ed)f(in)g(the)i(future.)0 4888 y(When)23 b(op)s(ening)g(an)g +(already)g(existing)g(FITS)g(\014le)g(in)f(shared)h(memory)h(one)g +(calls)e(the)i(usual)f(CFITSIO)f(routine:)143 5132 y +Fe(fits_open_file\(&fitsfilep)o(tr,)41 b("shmem://h7",)j(mode,)j +(&status\))0 5375 y Fi(The)26 b(\014le)g(mo)s(de)h(can)g(b)s(e)f(READ)m +(WRITE)h(or)g(READONL)-8 b(Y)28 b(just)e(as)h(with)e(disk)h(\014les.)38 +b(More)28 b(than)e(one)h(pro)s(cess)0 5488 y(can)35 b(op)s(erate)g(on)f +(READONL)-8 b(Y)35 b(mo)s(de)f(\014les)g(at)h(the)f(same)h(time.)53 +b(CFITSIO)33 b(supp)s(orts)f(prop)s(er)h(\014le)h(lo)s(c)m(king)0 +5601 y(\(b)s(oth)27 b(in)g(READONL)-8 b(Y)29 b(and)e(READ)m(WRITE)h(mo) +s(des\),)h(so)f(calls)f(to)h(\014ts)p 2572 5601 V 33 +w(op)s(en)p 2795 5601 V 32 w(\014le)f(ma)m(y)h(b)s(e)f(lo)s(c)m(k)m(ed) +i(out)f(un)m(til)0 5714 y(another)j(other)f(pro)s(cess)g(closes)h(the)f +(\014le.)p eop +%%Page: 21 27 +21 26 bop 0 299 a Fg(4.3.)72 b(BASE)30 b(FILENAME)2830 +b Fi(21)0 555 y(When)30 b(an)g(application)f(is)g(\014nished)f +(accessing)j(a)f(FITS)g(\014le)f(in)g(a)i(shared)e(memory)h(segmen)m +(t,)i(it)e(ma)m(y)h(close)f(it)0 668 y(\(and)k(the)g(\014le)f(will)e +(remain)h(in)h(the)h(system\))g(with)f(\014ts)p 1955 +668 28 4 v 32 w(close)p 2174 668 V 33 w(\014le,)h(or)g(delete)g(it)g +(with)e(\014ts)p 3191 668 V 33 w(delete)p 3456 668 V +33 w(\014le.)50 b(Ph)m(ys-)0 781 y(ical)34 b(deletion)g(is)g(p)s(ostp)s +(oned)f(un)m(til)h(the)h(last)f(pro)s(cess)h(calls)f +(\013clos/\013delt.)54 b(\014ts)p 2801 781 V 32 w(delete)p +3065 781 V 33 w(\014le)34 b(tries)h(to)g(obtain)g(a)0 +894 y(READ)m(WRITE)f(lo)s(c)m(k)f(on)g(the)g(\014le)g(to)h(b)s(e)e +(deleted,)i(th)m(us)f(it)g(can)g(b)s(e)g(blo)s(c)m(k)m(ed)g(if)f(the)i +(ob)5 b(ject)34 b(w)m(as)f(not)h(op)s(ened)0 1007 y(in)29 +b(READ)m(WRITE)i(mo)s(de.)0 1167 y(A)i(shared)f(memory)h(managemen)m(t) +h(utilit)m(y)d(program)i(called)f(`smem',)h(is)f(included)e(with)i(the) +h(CFITSIO)e(dis-)0 1280 y(tribution.)37 b(It)27 b(can)g(b)s(e)f(built)f +(b)m(y)i(t)m(yping)f(`mak)m(e)i(smem';)g(then)f(t)m(yp)s(e)g(`smem)f +(-h')h(to)h(get)g(a)f(list)e(of)i(v)-5 b(alid)25 b(options.)0 +1393 y(Executing)36 b(smem)g(without)f(an)m(y)i(options)f(causes)g(it)g +(to)h(list)e(all)g(the)i(shared)e(memory)i(segmen)m(ts)g(curren)m(tly)0 +1506 y(residing)31 b(in)h(the)h(system)h(and)e(managed)i(b)m(y)f(the)h +(shared)e(memory)h(driv)m(er.)48 b(T)-8 b(o)34 b(get)g(a)g(list)e(of)h +(all)f(the)i(shared)0 1619 y(memory)c(ob)5 b(jects,)32 +b(run)d(the)h(system)h(utilit)m(y)d(program)i(`ip)s(cs)g([-a]'.)0 +1978 y Fd(4.3)135 b(Base)46 b(Filename)0 2233 y Fi(The)31 +b(base)g(\014lename)g(is)f(the)i(name)f(of)h(the)f(\014le)g(optionally) +e(including)f(the)k(director/sub)s(directory)d(path,)j(and)0 +2346 y(in)d(the)i(case)g(of)g(`ftp',)f(`h)m(ttp',)i(and)d(`ro)s(ot')j +(\014let)m(yp)s(es,)d(the)i(mac)m(hine)f(iden)m(ti\014er.)39 +b(Examples:)191 2628 y Fe(myfile.fits)191 2741 y(!data.fits)191 +2854 y(/data/myfile.fits)191 2967 y(fits.gsfc.nasa.gov/ftp/s)o(ampl)o +(eda)o(ta/m)o(yfil)o(e.f)o(its.)o(gz)0 3248 y Fi(When)29 +b(creating)g(a)g(new)f(output)h(\014le)f(on)h(magnetic)g(disk)e(\(of)j +(t)m(yp)s(e)f(\014le://\))g(if)f(the)h(base)g(\014lename)f(b)s(egins)f +(with)0 3361 y(an)34 b(exclamation)h(p)s(oin)m(t)e(\(!\))54 +b(then)34 b(an)m(y)g(existing)g(\014le)f(with)g(that)i(same)g(basename) +g(will)d(b)s(e)h(deleted)h(prior)f(to)0 3474 y(creating)h(the)g(new)g +(FITS)f(\014le.)50 b(Otherwise)33 b(if)g(the)h(\014le)f(to)h(b)s(e)g +(created)h(already)e(exists,)i(then)e(CFITSIO)g(will)0 +3587 y(return)g(an)h(error)f(and)g(will)f(not)i(o)m(v)m(erwrite)g(the)g +(existing)f(\014le.)51 b(Note)35 b(that)g(the)f(exclamation)g(p)s(oin)m +(t,)g(')10 b(!',)36 b(is)d(a)0 3700 y(sp)s(ecial)26 b(UNIX)i(c)m +(haracter,)j(so)d(if)e(it)i(is)f(used)g(on)g(the)h(command)g(line)e +(rather)i(than)f(en)m(tered)h(at)h(a)f(task)h(prompt,)0 +3813 y(it)i(m)m(ust)g(b)s(e)g(preceded)g(b)m(y)h(a)g(bac)m(kslash)f(to) +h(force)g(the)g(UNIX)g(shell)d(to)j(pass)f(it)h(v)m(erbatim)f(to)h(the) +g(application)0 3926 y(program.)0 4086 y(If)24 b(the)i(output)e(disk)g +(\014le)g(name)h(ends)f(with)f(the)i(su\016x)f('.gz',)k(then)d(CFITSIO) +e(will)f(compress)j(the)g(\014le)f(using)g(the)0 4199 +y(gzip)g(compression)f(algorithm)g(b)s(efore)h(writing)e(it)i(to)h +(disk.)37 b(This)22 b(can)j(reduce)f(the)g(amoun)m(t)h(of)f(disk)f +(space)i(used)0 4312 y(b)m(y)34 b(the)h(\014le.)52 b(Note)36 +b(that)f(this)f(feature)h(requires)e(that)i(the)f(uncompressed)g +(\014le)f(b)s(e)h(constructed)h(in)e(memory)0 4425 y(b)s(efore)d(it)g +(is)f(compressed)h(and)g(written)g(to)h(disk,)e(so)h(it)g(can)h(fail)e +(if)g(there)i(is)e(insu\016cien)m(t)g(a)m(v)-5 b(ailable)30 +b(memory)-8 b(.)0 4585 y(An)45 b(input)f(FITS)g(\014le)h(ma)m(y)h(b)s +(e)f(compressed)g(with)g(the)g(gzip)g(or)h(Unix)e(compress)i +(algorithms,)i(in)c(whic)m(h)0 4698 y(case)38 b(CFITSIO)e(will)f +(uncompress)h(the)i(\014le)f(on)g(the)h(\015y)e(in)m(to)i(a)g(temp)s +(orary)f(\014le)f(\(in)h(memory)g(or)g(on)h(disk\).)0 +4811 y(Compressed)32 b(\014les)h(ma)m(y)h(only)e(b)s(e)h(op)s(ened)f +(with)g(read-only)h(p)s(ermission.)47 b(When)33 b(sp)s(ecifying)e(the)j +(name)f(of)h(a)0 4924 y(compressed)h(FITS)g(\014le)g(it)g(is)g(not)h +(necessary)g(to)g(app)s(end)e(the)i(\014le)f(su\016x)f(\(e.g.,)39 +b(`.gz')e(or)f(`.Z'\).)g(If)f(CFITSIO)0 5036 y(cannot)24 +b(\014nd)e(the)h(input)e(\014le)i(name)g(without)f(the)h(su\016x,)h +(then)f(it)g(will)e(automatically)i(searc)m(h)h(for)f(a)g(compressed)0 +5149 y(\014le)35 b(with)f(the)i(same)g(ro)s(ot)g(name.)57 +b(In)35 b(the)h(case)h(of)f(reading)f(ftp)g(and)g(h)m(ttp)h(t)m(yp)s(e) +g(\014les,)g(CFITSIO)f(generally)0 5262 y(lo)s(oks)i(for)h(a)g +(compressed)g(v)m(ersion)f(of)h(the)g(\014le)f(\014rst,)i(b)s(efore)e +(trying)g(to)i(op)s(en)e(the)h(uncompressed)e(\014le.)63 +b(By)0 5375 y(default,)36 b(CFITSIO)f(copies)g(\(and)h(uncompressed)e +(if)h(necessary\))h(the)g(ftp)f(or)h(h)m(ttp)g(FITS)f(\014le)f(in)m(to) +i(memory)0 5488 y(on)g(the)g(lo)s(cal)f(mac)m(hine)g(b)s(efore)h(op)s +(ening)e(it.)57 b(This)34 b(will)f(fail)h(if)h(the)h(lo)s(cal)f(mac)m +(hine)h(do)s(es)f(not)h(ha)m(v)m(e)h(enough)0 5601 y(memory)g(to)h +(hold)e(the)h(whole)g(FITS)f(\014le,)j(so)e(in)f(this)g(case,)41 +b(the)c(output)g(\014lename)f(sp)s(eci\014er)g(\(see)i(the)g(next)0 +5714 y(section\))31 b(can)g(b)s(e)e(used)h(to)h(further)e(con)m(trol)i +(ho)m(w)f(CFITSIO)f(reads)h(ftp)g(and)g(h)m(ttp)g(\014les.)p +eop +%%Page: 22 28 +22 27 bop 0 299 a Fi(22)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(If)32 +b(the)h(input)e(\014le)h(is)g(an)h(IRAF)g(image)g(\014le)f(\(*.imh)g +(\014le\))h(then)f(CFITSIO)f(will)g(automatically)h(con)m(v)m(ert)j(it) +d(on)0 668 y(the)27 b(\015y)g(in)m(to)g(a)h(virtual)d(FITS)h(image)i(b) +s(efore)f(it)f(is)g(op)s(ened)h(b)m(y)g(the)g(application)f(program.)39 +b(IRAF)27 b(images)h(can)0 781 y(only)h(b)s(e)h(op)s(ened)g(with)f +(READONL)-8 b(Y)31 b(\014le)e(access.)0 941 y(Similarly)-8 +b(,)28 b(if)i(the)h(input)e(\014le)i(is)f(a)h(ra)m(w)g(binary)e(data)j +(arra)m(y)-8 b(,)33 b(then)d(CFITSIO)g(will)e(con)m(v)m(ert)33 +b(it)d(on)h(the)h(\015y)e(in)m(to)0 1054 y(a)38 b(virtual)e(FITS)i +(image)g(with)e(the)i(basic)g(set)g(of)g(required)e(header)i(k)m(eyw)m +(ords)g(b)s(efore)g(it)f(is)g(op)s(ened)g(b)m(y)h(the)0 +1167 y(application)29 b(program)i(\(with)f(READONL)-8 +b(Y)31 b(access\).)44 b(In)30 b(this)g(case)i(the)f(data)g(t)m(yp)s(e)g +(and)g(dimensions)d(of)j(the)0 1280 y(image)c(m)m(ust)g(b)s(e)f(sp)s +(eci\014ed)f(in)h(square)h(brac)m(k)m(ets)h(follo)m(wing)d(the)i +(\014lename)f(\(e.g.)41 b(ra)m(w\014le.dat[ib512,512]\).)h(The)0 +1393 y(\014rst)30 b(c)m(haracter)i(\(case)f(insensitiv)m(e\))e +(de\014nes)h(the)g(datat)m(yp)s(e)h(of)g(the)g(arra)m(y:)239 +1671 y Fe(b)429 b(8-bit)46 b(unsigned)g(byte)239 1784 +y(i)381 b(16-bit)46 b(signed)g(integer)239 1897 y(u)381 +b(16-bit)46 b(unsigned)g(integer)239 2010 y(j)381 b(32-bit)46 +b(signed)g(integer)239 2123 y(r)h(or)g(f)143 b(32-bit)46 +b(floating)g(point)239 2235 y(d)381 b(64-bit)46 b(floating)g(point)0 +2514 y Fi(An)40 b(optional)f(second)h(c)m(haracter)i(sp)s(eci\014es)d +(the)i(b)m(yte)f(order)g(of)g(the)h(arra)m(y)g(v)-5 b(alues:)59 +b(b)40 b(or)g(B)h(indicates)e(big)0 2626 y(endian)g(\(as)i(in)e(FITS)g +(\014les)h(and)g(the)g(nativ)m(e)h(format)f(of)h(SUN)f(UNIX)h(w)m +(orkstations)f(and)g(Mac)i(PCs\))e(and)0 2739 y(l)g(or)h(L)g(indicates) +e(little)h(endian)g(\(nativ)m(e)h(format)h(of)f(DEC)f(OSF)h(w)m +(orkstations)g(and)f(IBM)i(PCs\).)72 b(If)40 b(this)0 +2852 y(c)m(haracter)32 b(is)d(omitted)i(then)f(the)g(arra)m(y)h(is)f +(assumed)f(to)i(ha)m(v)m(e)h(the)f(nativ)m(e)f(b)m(yte)h(order)f(of)h +(the)f(lo)s(cal)g(mac)m(hine.)0 2965 y(These)f(datat)m(yp)s(e)h(c)m +(haracters)h(are)e(then)g(follo)m(w)m(ed)g(b)m(y)g(a)h(series)e(of)h +(one)h(or)f(more)g(in)m(teger)h(v)-5 b(alues)28 b(separated)i(b)m(y)0 +3078 y(commas)h(whic)m(h)f(de\014ne)f(the)i(size)g(of)f(eac)m(h)i +(dimension)c(of)j(the)g(ra)m(w)f(arra)m(y)-8 b(.)43 b(Arra)m(ys)30 +b(with)g(up)f(to)j(5)f(dimensions)0 3191 y(are)f(curren)m(tly)f(supp)s +(orted.)38 b(Finally)-8 b(,)29 b(a)h(b)m(yte)g(o\013set)g(to)h(the)e(p) +s(osition)f(of)i(the)g(\014rst)e(pixel)g(in)h(the)g(data)i(\014le)d(ma) +m(y)0 3304 y(b)s(e)e(sp)s(eci\014ed)f(b)m(y)i(separating)g(it)f(with)g +(a)h(':')39 b(from)27 b(the)g(last)f(dimension)f(v)-5 +b(alue.)39 b(If)26 b(omitted,)i(it)e(is)g(assumed)g(that)0 +3417 y(the)35 b(o\013set)h(=)f(0.)54 b(This)34 b(parameter)h(ma)m(y)h +(b)s(e)e(used)g(to)i(skip)d(o)m(v)m(er)j(an)m(y)g(header)e(information) +g(in)f(the)i(\014le)f(that)0 3530 y(precedes)c(the)h(binary)e(data.)41 +b(F)-8 b(urther)30 b(examples:)95 3808 y Fe(raw.dat[b10000])521 +b(1-dimensional)45 b(10000)h(pixel)g(byte)h(array)95 +3921 y(raw.dat[rb400,400,12])233 b(3-dimensional)45 b(floating)g(point) +h(big-endian)f(array)95 4034 y(img.fits[ib512,512:2880])89 +b(reads)47 b(the)g(512)g(x)g(512)g(short)f(integer)g(array)g(in)1336 +4147 y(a)i(FITS)e(file,)h(skipping)e(over)i(the)g(2880)g(byte)f(header) +0 4425 y Fi(One)25 b(sp)s(ecial)e(case)j(of)f(input)e(\014le)h(is)g +(where)h(the)g(\014lename)f(=)h(`-')h(\(a)f(dash)g(or)g(min)m(us)e +(sign\))h(or)h('stdin')f(or)h('stdout',)0 4538 y(whic)m(h)c +(signi\014es)g(that)j(the)f(input)d(\014le)i(is)g(to)i(b)s(e)e(read)g +(from)h(the)g(stdin)e(stream,)k(or)e(written)e(to)j(the)f(stdout)g +(stream)0 4650 y(if)33 b(a)h(new)g(output)f(\014le)g(is)g(b)s(eing)g +(created.)52 b(In)33 b(the)h(case)h(of)f(reading)g(from)f(stdin,)g +(CFITSIO)g(\014rst)g(copies)h(the)0 4763 y(whole)g(stream)i(in)m(to)f +(a)g(temp)s(orary)g(FITS)f(\014le)h(\(in)f(memory)h(or)g(on)g(disk\),)g +(and)g(subsequen)m(t)f(reading)g(of)i(the)0 4876 y(FITS)c(\014le)g(o)s +(ccurs)h(in)e(this)h(cop)m(y)-8 b(.)49 b(When)33 b(writing)e(to)i +(stdout,)h(CFITSIO)d(\014rst)h(constructs)h(the)g(whole)f(\014le)g(in)0 +4989 y(memory)i(\(since)h(random)e(access)j(is)d(required\),)i(then)f +(\015ushes)f(it)h(out)h(to)g(the)f(stdout)h(stream)g(when)e(the)i +(\014le)0 5102 y(is)29 b(closed.)41 b(In)29 b(addition,)g(if)g(the)h +(output)g(\014lename)f(=)h('-.gz')i(or)e('stdout.gz')h(then)f(it)g +(will)d(b)s(e)j(gzip)f(compressed)0 5215 y(b)s(efore)h(b)s(eing)f +(written)g(to)i(stdout.)0 5375 y(This)24 b(abilit)m(y)h(to)h(read)g +(and)f(write)g(on)h(the)g(stdin)f(and)g(stdout)h(steams)g(allo)m(ws)g +(FITS)f(\014les)g(to)h(b)s(e)g(pip)s(ed)d(b)s(et)m(w)m(een)0 +5488 y(tasks)42 b(in)e(memory)h(rather)g(than)h(ha)m(ving)f(to)h +(create)h(temp)s(orary)e(in)m(termediate)g(FITS)f(\014les)h(on)g(disk.) +72 b(F)-8 b(or)0 5601 y(example)27 b(if)e(task1)j(creates)h(an)e +(output)f(FITS)g(\014le,)h(and)g(task2)g(reads)g(an)g(input)e(FITS)h +(\014le,)h(the)g(FITS)f(\014le)g(ma)m(y)0 5714 y(b)s(e)k(pip)s(ed)e(b)s +(et)m(w)m(een)j(the)f(2)h(tasks)g(b)m(y)f(sp)s(ecifying)p +eop +%%Page: 23 29 +23 28 bop 0 299 a Fg(4.4.)72 b(OUTPUT)30 b(FILE)g(NAME)h(WHEN)g +(OPENING)f(AN)h(EXISTING)e(FILE)967 b Fi(23)143 555 y +Fe(task1)47 b(-)g(|)g(task2)g(-)0 793 y Fi(where)30 b(the)h(v)m +(ertical)g(bar)g(is)e(the)i(Unix)f(piping)e(sym)m(b)s(ol.)41 +b(This)29 b(assumes)h(that)i(the)f(2)g(tasks)g(read)g(the)g(name)g(of)0 +906 y(the)g(FITS)e(\014le)h(o\013)g(of)h(the)g(command)f(line.)0 +1236 y Fd(4.4)135 b(Output)45 b(File)g(Name)h(when)f(Op)t(ening)g(an)g +(Existing)h(File)0 1486 y Fi(An)36 b(optional)g(output)g(\014lename)g +(ma)m(y)i(b)s(e)e(sp)s(eci\014ed)f(in)g(paren)m(theses)i(immediately)e +(follo)m(wing)g(the)i(base)g(\014le)0 1599 y(name)28 +b(to)h(b)s(e)f(op)s(ened.)39 b(This)27 b(is)g(mainly)f(useful)h(in)g +(those)h(cases)i(where)d(CFITSIO)g(creates)j(a)e(temp)s(orary)g(cop)m +(y)0 1712 y(of)i(the)f(input)f(FITS)g(\014le)h(b)s(efore)g(it)g(is)f +(op)s(ened)h(and)f(passed)h(to)h(the)g(application)e(program.)40 +b(This)27 b(happ)s(ens)h(b)m(y)0 1825 y(default)h(when)h(op)s(ening)f +(a)h(net)m(w)m(ork)h(FTP)g(or)f(HTTP-t)m(yp)s(e)g(\014le,)g(when)f +(reading)g(a)i(compressed)f(FITS)g(\014le)f(on)0 1938 +y(a)36 b(lo)s(cal)f(disk,)h(when)f(reading)g(from)h(the)g(stdin)e +(stream,)k(or)d(when)g(a)i(column)d(\014lter,)j(ro)m(w)f(\014lter,)g +(or)g(binning)0 2051 y(sp)s(eci\014er)28 b(is)g(included)f(as)j(part)f +(of)g(the)h(input)e(\014le)g(sp)s(eci\014cation.)39 b(By)30 +b(default)f(this)f(temp)s(orary)h(\014le)f(is)h(created)0 +2164 y(in)g(memory)-8 b(.)41 b(If)29 b(there)h(is)f(not)h(enough)g +(memory)g(to)h(create)g(the)g(\014le)e(cop)m(y)-8 b(,)31 +b(then)f(CFITSIO)e(will)f(exit)j(with)f(an)0 2277 y(error.)45 +b(In)32 b(these)g(cases)h(one)g(can)f(force)h(a)f(p)s(ermanen)m(t)g +(\014le)f(to)i(b)s(e)e(created)i(on)f(disk,)f(instead)h(of)g(a)g(temp)s +(orary)0 2390 y(\014le)37 b(in)f(memory)-8 b(,)40 b(b)m(y)d(supplying)d +(the)k(name)g(in)e(paren)m(theses)i(immediately)e(follo)m(wing)g(the)h +(base)h(\014le)f(name.)0 2503 y(The)30 b(output)g(\014lename)f(can)i +(include)d(the)j(')10 b(!')41 b(clobb)s(er)29 b(\015ag.)0 +2663 y(Th)m(us,)48 b(if)c(the)h(input)e(\014lename)h(to)h(CFITSIO)f +(is:)69 b Fe(file1.fits.gz\(file2.fit)o(s\))39 b Fi(then)44 +b(CFITSIO)g(will)0 2776 y(uncompress)39 b(`\014le1.\014ts.gz')i(in)m +(to)f(the)g(lo)s(cal)f(disk)f(\014le)h(`\014le2.\014ts')h(b)s(efore)g +(op)s(ening)e(it.)69 b(CFITSIO)38 b(do)s(es)i(not)0 2889 +y(automatically)30 b(delete)h(the)f(output)g(\014le,)g(so)h(it)f(will)d +(still)i(exist)h(after)h(the)f(application)f(program)h(exits.)0 +3049 y(In)35 b(some)i(cases,)h(sev)m(eral)e(di\013eren)m(t)g(temp)s +(orary)f(FITS)h(\014les)f(will)e(b)s(e)i(created)i(in)e(sequence,)j +(for)e(instance,)h(if)0 3162 y(one)g(op)s(ens)g(a)g(remote)h(\014le)e +(using)g(FTP)-8 b(,)37 b(then)g(\014lters)f(ro)m(ws)h(in)f(a)i(binary)d +(table)i(extension,)i(then)d(create)j(an)0 3275 y(image)e(b)m(y)g +(binning)d(a)j(pair)f(of)h(columns.)59 b(In)36 b(this)g(case,)k(the)d +(remote)h(\014le)e(will)e(b)s(e)i(copied)g(to)i(a)f(temp)s(orary)0 +3388 y(lo)s(cal)h(\014le,)i(then)e(a)h(second)f(temp)s(orary)h(\014le)e +(will)f(b)s(e)i(created)i(con)m(taining)e(the)g(\014ltered)g(ro)m(ws)g +(of)h(the)g(table,)0 3500 y(and)c(\014nally)e(a)j(third)d(temp)s(orary) +i(\014le)g(con)m(taining)f(the)i(binned)d(image)i(will)e(b)s(e)i +(created.)57 b(In)34 b(cases)i(lik)m(e)f(this)0 3613 +y(where)28 b(m)m(ultiple)e(\014les)h(are)i(created,)h(the)e(out\014le)g +(sp)s(eci\014er)f(will)e(b)s(e)j(in)m(terpreted)g(the)g(name)g(of)h +(the)f(\014nal)f(\014le)h(as)0 3726 y(describ)s(ed)g(b)s(elo)m(w,)i(in) +f(descending)g(priorit)m(y:)136 3964 y Fc(\017)46 b Fi(as)29 +b(the)g(name)g(of)g(the)g(\014nal)e(image)i(\014le)f(if)f(an)i(image)g +(within)d(a)j(single)e(binary)g(table)i(cell)f(is)f(op)s(ened)h(or)h +(if)227 4077 y(an)i(image)f(is)g(created)h(b)m(y)f(binning)e(a)i(table) +h(column.)136 4257 y Fc(\017)46 b Fi(as)33 b(the)f(name)h(of)f(the)h +(\014le)e(con)m(taining)h(the)g(\014ltered)f(table)i(if)e(a)i(column)e +(\014lter)g(and/or)h(a)h(ro)m(w)f(\014lter)g(are)227 +4370 y(sp)s(eci\014ed.)136 4551 y Fc(\017)46 b Fi(as)31 +b(the)f(name)h(of)f(the)h(lo)s(cal)f(cop)m(y)h(of)f(the)h(remote)g(FTP) +f(or)h(HTTP)e(\014le.)136 4731 y Fc(\017)46 b Fi(as)31 +b(the)g(name)g(of)g(the)f(uncompressed)g(v)m(ersion)g(of)h(the)f(FITS)g +(\014le,)g(if)g(a)h(compressed)f(FITS)g(\014le)g(on)h(lo)s(cal)227 +4844 y(disk)e(has)h(b)s(een)g(op)s(ened.)136 5024 y Fc(\017)46 +b Fi(otherwise,)30 b(the)h(output)f(\014lename)f(is)h(ignored.)0 +5262 y(The)f(output)f(\014le)g(sp)s(eci\014er)g(is)g(useful)f(when)h +(reading)g(FTP)h(or)g(HTTP-t)m(yp)s(e)g(FITS)f(\014les)g(since)g(it)h +(can)g(b)s(e)g(used)0 5375 y(to)34 b(create)i(a)e(lo)s(cal)f(disk)f +(cop)m(y)j(of)f(the)g(\014le)e(that)j(can)f(b)s(e)f(reused)g(in)f(the)i +(future.)50 b(If)33 b(the)h(output)g(\014le)e(name)i(=)0 +5488 y(`*')i(then)f(a)g(lo)s(cal)f(\014le)g(with)g(the)h(same)g(name)g +(as)g(the)h(net)m(w)m(ork)f(\014le)f(will)f(b)s(e)h(created.)56 +b(Note)36 b(that)f(CFITSIO)0 5601 y(will)27 b(b)s(eha)m(v)m(e)j +(di\013eren)m(tly)f(dep)s(ending)e(on)j(whether)f(the)h(remote)g +(\014le)f(is)g(compressed)g(or)h(not)g(as)g(sho)m(wn)f(b)m(y)h(the)0 +5714 y(follo)m(wing)f(examples:)p eop +%%Page: 24 30 +24 29 bop 0 299 a Fi(24)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)136 555 y +Fc(\017)46 b Fi(`ftp://remote.mac)m(hine/tmp/m)m +(y\014le.\014ts.gz\(*\)')i(-)43 b(the)g(remote)h(compressed)f(\014le)f +(is)g(copied)h(to)h(the)227 668 y(lo)s(cal)24 b(compressed)g(\014le)f +(`m)m(y\014le.\014ts.gz',)k(whic)m(h)c(is)g(then)i(uncompressed)e(in)g +(lo)s(cal)g(memory)h(b)s(efore)g(b)s(eing)227 781 y(op)s(ened)30 +b(and)g(passed)g(to)h(the)f(application)f(program.)136 +979 y Fc(\017)46 b Fi(`ftp://remote.mac)m(hine/tmp/m)m +(y\014le.\014ts.gz\(m)m(y\014le.\014ts\)')40 b(-)d(the)g(remote)g +(compressed)f(\014le)g(is)f(copied)227 1092 y(and)i(uncompressed)g(in)m +(to)g(the)h(lo)s(cal)f(\014le)g(`m)m(y\014le.\014ts'.)63 +b(This)35 b(example)j(requires)e(less)h(lo)s(cal)g(memory)227 +1205 y(than)30 b(the)h(previous)e(example)h(since)g(the)g(\014le)g(is)f +(uncompressed)g(on)h(disk)f(instead)h(of)g(in)g(memory)-8 +b(.)136 1403 y Fc(\017)46 b Fi(`ftp://remote.mac)m(hine/tmp/m)m +(y\014le.\014ts\(m)m(y\014le.\014ts.gz\)')25 b(-)c(this)f(will)f +(usually)g(pro)s(duce)h(an)h(error)g(since)227 1516 y(CFITSIO)29 +b(itself)g(cannot)i(compress)f(\014les.)0 1759 y(The)36 +b(exact)i(b)s(eha)m(vior)d(of)i(CFITSIO)e(in)g(the)i(latter)f(case)i +(dep)s(ends)c(on)j(the)f(t)m(yp)s(e)h(of)g(ftp)f(serv)m(er)g(running)e +(on)0 1872 y(the)d(remote)g(mac)m(hine)f(and)g(ho)m(w)g(it)g(is)f +(con\014gured.)40 b(In)30 b(some)h(cases,)g(if)e(the)i(\014le)e(`m)m +(y\014le.\014ts.gz')j(exists)e(on)g(the)0 1985 y(remote)38 +b(mac)m(hine,)g(then)f(the)g(serv)m(er)g(will)e(cop)m(y)i(it)g(to)g +(the)h(lo)s(cal)e(mac)m(hine.)60 b(In)36 b(other)h(cases)h(the)f(ftp)g +(serv)m(er)0 2098 y(will)c(automatically)j(create)h(and)f(transmit)f(a) +h(compressed)g(v)m(ersion)f(of)h(the)g(\014le)f(if)g(only)g(the)h +(uncompressed)0 2211 y(v)m(ersion)26 b(exists.)40 b(This)25 +b(can)i(get)h(rather)f(confusing,)g(so)g(users)f(should)f(use)i(a)g +(certain)g(amoun)m(t)h(of)f(caution)g(when)0 2324 y(using)33 +b(the)i(output)f(\014le)g(sp)s(eci\014er)f(with)h(FTP)g(or)h(HTTP)f +(\014le)g(t)m(yp)s(es,)i(to)f(mak)m(e)h(sure)e(they)h(get)h(the)f(b)s +(eha)m(vior)0 2437 y(that)c(they)g(exp)s(ect.)0 2783 +y Fd(4.5)135 b(T)-11 b(emplate)46 b(File)g(Name)f(when)g(Creating)h(a)g +(New)f(File)0 3035 y Fi(When)38 b(a)h(new)f(FITS)g(\014le)g(is)g +(created)h(with)f(a)g(call)g(to)i(\014ts)p 2101 3035 +28 4 v 32 w(create)p 2369 3035 V 35 w(\014le,)f(the)g(name)g(of)g(a)g +(template)g(\014le)e(ma)m(y)0 3148 y(b)s(e)i(supplied)e(in)i(paren)m +(theses)h(immediately)e(follo)m(wing)g(the)j(name)f(of)g(the)g(new)f +(\014le)g(to)i(b)s(e)e(created.)71 b(This)0 3261 y(template)26 +b(is)e(used)h(to)h(de\014ne)f(the)h(structure)f(of)h(one)f(or)h(more)g +(HDUs)g(in)e(the)i(new)f(\014le.)38 b(The)25 b(template)h(\014le)e(ma)m +(y)0 3374 y(b)s(e)32 b(another)h(FITS)f(\014le,)h(in)f(whic)m(h)f(case) +j(the)f(newly)f(created)i(\014le)e(will)e(ha)m(v)m(e)k(exactly)g(the)f +(same)g(k)m(eyw)m(ords)g(in)0 3487 y(eac)m(h)25 b(HDU)g(as)g(in)e(the)h +(template)h(FITS)e(\014le,)i(but)e(all)h(the)g(data)h(units)d(will)g(b) +s(e)i(\014lled)e(with)g(zeros.)40 b(The)24 b(template)0 +3600 y(\014le)h(ma)m(y)i(also)f(b)s(e)f(an)h(ASCI)s(I)e(text)j(\014le,) +f(where)g(eac)m(h)h(line)d(\(in)h(general\))i(describ)s(es)d(one)i +(FITS)f(k)m(eyw)m(ord)i(record.)0 3713 y(The)j(format)h(of)f(the)h +(ASCI)s(I)e(template)h(\014le)g(is)f(describ)s(ed)f(b)s(elo)m(w.)0 +4059 y Fd(4.6)135 b(HDU)46 b(Lo)t(cation)f(Sp)t(eci\014cation)0 +4312 y Fi(The)c(optional)f(HDU)j(lo)s(cation)e(sp)s(eci\014er)e +(de\014nes)i(whic)m(h)f(HDU)i(\(Header-Data)i(Unit,)g(also)d(kno)m(wn)g +(as)h(an)0 4425 y(`extension'\))35 b(within)c(the)k(FITS)e(\014le)g(to) +i(initially)c(op)s(en.)51 b(It)34 b(m)m(ust)g(immediately)f(follo)m(w)g +(the)h(base)h(\014le)e(name)0 4538 y(\(or)h(the)g(output)g(\014le)f +(name)g(if)g(presen)m(t\).)52 b(If)33 b(it)g(is)g(not)h(sp)s(eci\014ed) +f(then)g(the)h(\014rst)f(HDU)i(\(the)f(primary)e(arra)m(y\))0 +4650 y(is)g(op)s(ened.)46 b(The)32 b(HDU)h(lo)s(cation)f(sp)s +(eci\014er)f(is)h(required)f(if)g(the)i(colFilter,)f(ro)m(wFilter,)h +(or)g(binSp)s(ec)d(sp)s(eci\014ers)0 4763 y(are)g(presen)m(t,)f(b)s +(ecause)h(the)f(primary)e(arra)m(y)j(is)e(not)i(a)f(v)-5 +b(alid)28 b(HDU)i(for)f(these)g(op)s(erations.)40 b(The)29 +b(HDU)h(ma)m(y)g(b)s(e)0 4876 y(sp)s(eci\014ed)d(either)i(b)m(y)f +(absolute)h(p)s(osition)e(n)m(um)m(b)s(er,)h(starting)h(with)e(0)j(for) +e(the)h(primary)e(arra)m(y)-8 b(,)31 b(or)e(b)m(y)f(reference)0 +4989 y(to)h(the)g(HDU)g(name,)g(and)f(optionally)-8 b(,)28 +b(the)h(v)m(ersion)f(n)m(um)m(b)s(er)f(and)h(the)h(HDU)g(t)m(yp)s(e)g +(of)f(the)h(desired)e(extension.)0 5102 y(The)32 b(lo)s(cation)f(of)h +(an)g(image)h(within)c(a)k(single)d(cell)i(of)g(a)g(binary)f(table)h +(ma)m(y)g(also)g(b)s(e)g(sp)s(eci\014ed,)f(as)h(describ)s(ed)0 +5215 y(b)s(elo)m(w.)0 5375 y(The)26 b(absolute)g(p)s(osition)e(of)i +(the)h(extension)f(is)f(sp)s(eci\014ed)f(either)i(b)m(y)g(enclosed)g +(the)h(n)m(um)m(b)s(er)e(in)g(square)g(brac)m(k)m(ets)0 +5488 y(\(e.g.,)k(`[1]')g(=)d(the)h(\014rst)f(extension)g(follo)m(wing)g +(the)h(primary)d(arra)m(y\))k(or)f(b)m(y)f(preceded)h(the)g(n)m(um)m(b) +s(er)e(with)h(a)h(plus)0 5601 y(sign)36 b(\(`+1'\).)63 +b(T)-8 b(o)38 b(sp)s(ecify)e(the)h(HDU)h(b)m(y)g(name,)h(giv)m(e)f(the) +f(name)h(of)f(the)h(desired)e(HDU)i(\(the)f(v)-5 b(alue)37 +b(of)h(the)0 5714 y(EXTNAME)e(or)g(HDUNAME)h(k)m(eyw)m(ord\))g(and)f +(optionally)e(the)i(extension)g(v)m(ersion)f(n)m(um)m(b)s(er)g(\(v)-5 +b(alue)36 b(of)g(the)p eop +%%Page: 25 31 +25 30 bop 0 299 a Fg(4.7.)72 b(IMA)m(GE)31 b(SECTION)2835 +b Fi(25)0 555 y(EXTVER)27 b(k)m(eyw)m(ord\))i(and)e(the)h(extension)g +(t)m(yp)s(e)f(\(v)-5 b(alue)28 b(of)g(the)g(XTENSION)f(k)m(eyw)m(ord:) +40 b(IMA)m(GE,)29 b(ASCI)s(I)d(or)0 668 y(T)-8 b(ABLE,)36 +b(or)f(BINT)-8 b(ABLE\),)36 b(separated)f(b)m(y)g(commas)h(and)e(all)g +(enclosed)h(in)f(square)h(brac)m(k)m(ets.)56 b(If)34 +b(the)h(v)-5 b(alue)0 781 y(of)34 b(EXTVER)f(and)f(XTENSION)h(are)h +(not)f(sp)s(eci\014ed,)g(then)g(the)h(\014rst)e(extension)i(with)e(the) +h(correct)i(v)-5 b(alue)33 b(of)0 894 y(EXTNAME)39 b(is)f(op)s(ened.)67 +b(The)38 b(extension)h(name)g(and)f(t)m(yp)s(e)i(are)f(not)h(case)g +(sensitiv)m(e,)h(and)d(the)h(extension)0 1007 y(t)m(yp)s(e)29 +b(ma)m(y)g(b)s(e)f(abbreviated)g(to)h(a)g(single)e(letter)i(\(e.g.,)i +(I)d(=)g(IMA)m(GE)i(extension)e(or)g(primary)f(arra)m(y)-8 +b(,)30 b(A)f(or)f(T)g(=)0 1120 y(ASCI)s(I)d(table)h(extension,)h(and)f +(B)h(=)f(binary)f(table)h(BINT)-8 b(ABLE)27 b(extension\).)40 +b(If)26 b(the)g(HDU)h(lo)s(cation)g(sp)s(eci\014er)0 +1233 y(is)i(equal)h(to)h(`[PRIMAR)-8 b(Y]')32 b(or)f(`[P]',)g(then)f +(the)h(primary)d(arra)m(y)j(\(the)g(\014rst)f(HDU\))h(will)d(b)s(e)i +(op)s(ened.)0 1393 y(FITS)k(images)h(are)g(most)h(commonly)e(stored)h +(in)f(the)h(primary)e(arra)m(y)i(or)g(an)g(image)g(extension,)h(but)e +(images)0 1506 y(can)d(also)g(b)s(e)f(stored)h(as)h(a)f(v)m(ector)h(in) +e(a)h(single)f(cell)g(of)h(a)h(binary)d(table)i(\(i.e.)42 +b(eac)m(h)32 b(ro)m(w)f(of)g(the)h(v)m(ector)g(column)0 +1619 y(con)m(tains)c(a)h(di\013eren)m(t)e(image\).)41 +b(Suc)m(h)27 b(an)h(image)h(can)f(b)s(e)g(op)s(ened)f(with)g(CFITSIO)f +(b)m(y)i(sp)s(ecifying)e(the)i(desired)0 1732 y(column)j(name)h(and)f +(the)h(ro)m(w)g(n)m(um)m(b)s(er)f(after)h(the)g(binary)e(table)i(HDU)h +(sp)s(eci\014er)d(as)i(sho)m(wn)g(in)e(the)i(follo)m(wing)0 +1844 y(examples.)70 b(The)40 b(column)f(name)i(is)e(separated)i(from)f +(the)h(HDU)g(sp)s(eci\014er)e(b)m(y)h(a)h(semicolon)e(and)h(the)h(ro)m +(w)0 1957 y(n)m(um)m(b)s(er)29 b(is)g(enclosed)h(in)e(paren)m(theses.) +41 b(In)30 b(this)f(case)i(CFITSIO)d(copies)i(the)g(image)h(from)e(the) +i(table)f(cell)f(in)m(to)0 2070 y(a)j(temp)s(orary)e(primary)g(arra)m +(y)h(b)s(efore)g(it)g(is)f(op)s(ened.)43 b(The)30 b(application)g +(program)h(then)g(just)g(sees)g(the)h(image)0 2183 y(in)h(the)i +(primary)d(arra)m(y)-8 b(,)37 b(without)c(an)m(y)i(extensions.)52 +b(The)34 b(particular)e(ro)m(w)j(to)g(b)s(e)e(op)s(ened)h(ma)m(y)h(b)s +(e)f(sp)s(eci\014ed)0 2296 y(either)27 b(b)m(y)g(giving)f(an)h +(absolute)g(in)m(teger)h(ro)m(w)g(n)m(um)m(b)s(er)e(\(starting)h(with)f +(1)i(for)f(the)g(\014rst)g(ro)m(w\),)i(or)e(b)m(y)g(sp)s(ecifying)0 +2409 y(a)33 b(b)s(o)s(olean)e(expression)g(that)i(ev)-5 +b(aluates)33 b(to)g(TR)m(UE)g(for)f(the)g(desired)f(ro)m(w.)47 +b(The)32 b(\014rst)f(ro)m(w)i(that)g(satis\014es)f(the)0 +2522 y(expression)27 b(will)e(b)s(e)j(used.)39 b(The)28 +b(ro)m(w)g(selection)g(expression)f(has)h(the)g(same)g(syn)m(tax)h(as)f +(describ)s(ed)e(in)h(the)h(Ro)m(w)0 2635 y(Filter)i(Sp)s(eci\014er)e +(section,)j(b)s(elo)m(w.)0 2795 y(Examples:)143 3051 +y Fe(myfile.fits[3])44 b(-)k(open)e(the)h(3rd)g(HDU)g(following)e(the)i +(primary)f(array)143 3164 y(myfile.fits+3)92 b(-)48 b(same)e(as)h +(above,)f(but)h(using)g(the)g(FTOOLS-style)d(notation)143 +3277 y(myfile.fits[EVENTS])f(-)k(open)g(the)g(extension)e(that)i(has)g +(EXTNAME)e(=)j('EVENTS')143 3390 y(myfile.fits[EVENTS,)43 +b(2])95 b(-)47 b(same)g(as)g(above,)f(but)h(also)g(requires)e(EXTVER)h +(=)i(2)143 3503 y(myfile.fits[events,2,b])42 b(-)47 b(same,)f(but)h +(also)g(requires)f(XTENSION)f(=)j('BINTABLE')143 3616 +y(myfile.fits[3;)c(images\(17\)])h(-)i(opens)g(the)g(image)f(in)h(row)g +(17)g(of)g(the)g('images')1527 3728 y(column)f(in)i(the)e(3rd)h +(extension)f(of)h(the)g(file.)143 3841 y(myfile.fits[3;)d +(images\(exposure)g(>)j(100\)])g(-)g(as)g(above,)f(but)h(opens)g(the)f +(image)907 3954 y(in)h(the)g(first)f(row)h(that)g(has)g(an)g +('exposure')e(column)h(value)907 4067 y(greater)g(than)g(100.)0 +4400 y Fd(4.7)135 b(Image)46 b(Section)0 4650 y Fi(A)41 +b(virtual)e(\014le)g(con)m(taining)h(a)h(rectangular)g(subsection)e(of) +i(an)g(image)f(can)h(b)s(e)f(extracted)i(and)e(op)s(ened)g(b)m(y)0 +4763 y(sp)s(ecifying)30 b(the)j(range)g(of)g(pixels)e(\(start:end\))i +(along)g(eac)m(h)h(axis)e(to)h(b)s(e)f(extracted)i(from)e(the)h +(original)d(image.)0 4876 y(One)g(can)h(also)g(sp)s(ecify)e(an)i +(optional)f(pixel)f(incremen)m(t)h(\(start:end:step\))i(for)f(eac)m(h)h +(axis)e(of)h(the)g(input)d(image.)0 4989 y(A)g(pixel)d(step)j(=)f(1)h +(will)d(b)s(e)i(assumed)f(if)h(it)g(is)f(not)i(sp)s(eci\014ed.)38 +b(If)27 b(the)h(start)g(pixel)e(is)g(larger)i(then)f(the)h(end)e +(pixel,)0 5102 y(then)32 b(the)g(image)g(will)d(b)s(e)i(\015ipp)s(ed)e +(\(pro)s(ducing)h(a)i(mirror)f(image\))h(along)g(that)g(dimension.)43 +b(An)32 b(asterisk,)g('*',)0 5215 y(ma)m(y)39 b(b)s(e)e(used)h(to)h(sp) +s(ecify)e(the)h(en)m(tire)g(range)h(of)f(an)h(axis,)h(and)d('-*')j +(will)35 b(\015ip)i(the)h(en)m(tire)g(axis.)64 b(The)38 +b(input)0 5328 y(image)30 b(can)g(b)s(e)f(in)f(the)i(primary)e(arra)m +(y)-8 b(,)31 b(in)d(an)h(image)h(extension,)g(or)g(con)m(tained)f(in)g +(a)h(v)m(ector)h(cell)e(of)h(a)g(binary)0 5441 y(table.)39 +b(In)25 b(the)h(later)g(2)g(cases)h(the)f(extension)g(name)g(or)f(n)m +(um)m(b)s(er)g(m)m(ust)h(b)s(e)f(sp)s(eci\014ed)f(b)s(efore)i(the)g +(image)g(section)0 5554 y(sp)s(eci\014er.)0 5714 y(Examples:)p +eop +%%Page: 26 32 +26 31 bop 0 299 a Fi(26)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)95 555 y Fe +(myfile.fits[1:512:2,)43 b(2:512:2])i(-)95 b(open)47 +b(a)h(256x256)d(pixel)i(image)668 668 y(consisting)e(of)i(the)g(odd)g +(numbered)f(columns)g(\(1st)g(axis\))h(and)668 781 y(the)g(even)g +(numbered)e(rows)i(\(2nd)g(axis\))f(of)h(the)g(image)f(in)i(the)668 +894 y(primary)e(array)g(of)i(the)e(file.)95 1120 y(myfile.fits[*,)e +(512:256])i(-)h(open)g(an)g(image)g(consisting)e(of)i(all)g(the)g +(columns)668 1233 y(in)g(the)g(input)g(image,)f(but)h(only)f(rows)h +(256)g(through)f(512.)668 1346 y(The)h(image)f(will)h(be)g(flipped)f +(along)g(the)h(2nd)g(axis)g(since)668 1458 y(the)g(starting)f(pixel)g +(is)h(greater)f(than)h(the)g(ending)f(pixel.)95 1684 +y(myfile.fits[*:2,)e(512:256:2])h(-)i(same)g(as)g(above)f(but)h +(keeping)f(only)668 1797 y(every)h(other)f(row)h(and)g(column)f(in)h +(the)g(input)f(image.)95 2023 y(myfile.fits[-*,)e(*])j(-)h(copy)e(the)h +(entire)f(image,)g(flipping)g(it)h(along)668 2136 y(the)g(first)f +(axis.)95 2362 y(myfile.fits[3][1:256,1:256)o(])c(-)47 +b(opens)g(a)g(subsection)e(of)i(the)g(image)g(that)668 +2475 y(is)g(in)h(the)e(3rd)h(extension)f(of)h(the)g(file.)95 +2700 y(myfile.fits[4;)d(images\(12\)][1:10,1:10])e(-)48 +b(open)e(an)h(image)g(consisting)286 2813 y(of)h(the)e(first)h(10)g +(pixels)f(in)h(both)g(dimensions.)e(The)i(original)286 +2926 y(image)g(resides)f(in)h(the)g(12th)f(row)h(of)g(the)g('images')f +(vector)286 3039 y(column)g(in)i(the)f(table)f(in)h(the)g(4th)g +(extension)e(of)i(the)g(file.)0 3336 y Fi(When)23 b(CFITSIO)f(op)s(ens) +h(an)g(image)g(section)h(it)f(\014rst)g(creates)h(a)g(temp)s(orary)f +(\014le)g(con)m(taining)g(the)g(image)h(section)0 3449 +y(plus)31 b(a)j(cop)m(y)g(of)g(an)m(y)g(other)f(HDUs)h(in)e(the)i +(\014le.)49 b(This)31 b(temp)s(orary)i(\014le)g(is)f(then)h(op)s(ened)g +(b)m(y)g(the)h(application)0 3562 y(program,)28 b(so)g(it)f(is)f(not)i +(p)s(ossible)d(to)j(write)f(to)h(or)g(mo)s(dify)e(the)h(input)f(\014le) +g(when)h(sp)s(ecifying)e(an)j(image)g(section.)0 3675 +y(Note)39 b(that)f(CFITSIO)e(automatically)h(up)s(dates)g(the)g(w)m +(orld)g(co)s(ordinate)g(system)h(k)m(eyw)m(ords)f(in)f(the)i(header)0 +3788 y(of)33 b(the)h(image)f(section,)h(if)e(they)i(exist,)g(so)f(that) +h(the)f(co)s(ordinate)g(asso)s(ciated)h(with)e(eac)m(h)i(pixel)d(in)h +(the)i(image)0 3901 y(section)d(will)c(b)s(e)j(computed)g(correctly)-8 +b(.)0 4279 y Fd(4.8)135 b(Column)45 b(and)g(Keyw)l(ord)h(Filtering)g +(Sp)t(eci\014cation)0 4538 y Fi(The)27 b(optional)g(column/k)m(eyw)m +(ord)h(\014ltering)e(sp)s(eci\014er)g(is)h(used)g(to)i(mo)s(dify)d(the) +i(column)f(structure)g(and/or)h(the)0 4650 y(header)38 +b(k)m(eyw)m(ords)h(in)e(the)i(HDU)g(that)h(w)m(as)f(selected)g(with)e +(the)i(previous)e(HDU)i(lo)s(cation)f(sp)s(eci\014er.)64 +b(This)0 4763 y(\014ltering)40 b(sp)s(eci\014er)g(m)m(ust)i(b)s(e)f +(enclosed)h(in)e(square)i(brac)m(k)m(ets)h(and)e(can)h(b)s(e)f +(distinguished)d(from)k(a)g(general)0 4876 y(ro)m(w)d(\014lter)f(sp)s +(eci\014er)f(\(describ)s(ed)g(b)s(elo)m(w\))h(b)m(y)h(the)g(fact)h +(that)f(it)f(b)s(egins)f(with)h(the)h(string)f('col)h(')g(and)f(is)g +(not)0 4989 y(immediately)27 b(follo)m(w)m(ed)h(b)m(y)g(an)g(equals)g +(sign.)39 b(The)28 b(original)e(\014le)h(is)h(not)g(c)m(hanged)h(b)m(y) +f(this)g(\014ltering)e(op)s(eration,)0 5102 y(and)40 +b(instead)g(the)h(mo)s(di\014cations)e(are)i(made)f(on)h(a)g(cop)m(y)g +(of)g(the)g(input)e(FITS)h(\014le)f(\(usually)g(in)g(memory\),)0 +5215 y(whic)m(h)32 b(also)h(con)m(tains)g(a)g(cop)m(y)h(of)f(all)f(the) +i(other)f(HDUs)h(in)d(the)i(\014le.)48 b(This)32 b(temp)s(orary)g +(\014le)g(is)g(passed)h(to)h(the)0 5328 y(application)c(program)i(and)f +(will)e(p)s(ersist)h(only)h(un)m(til)f(the)i(\014le)f(is)g(closed)h(or) +g(un)m(til)e(the)i(program)f(exits,)i(unless)0 5441 y(the)e(out\014le)e +(sp)s(eci\014er)g(\(see)i(ab)s(o)m(v)m(e\))h(is)e(also)g(supplied.)0 +5601 y(The)h(column/k)m(eyw)m(ord)g(\014lter)f(can)h(b)s(e)g(used)f(to) +i(p)s(erform)e(the)i(follo)m(wing)d(op)s(erations.)43 +b(More)32 b(than)f(one)g(op)s(er-)0 5714 y(ation)f(ma)m(y)h(b)s(e)f(sp) +s(eci\014ed)f(b)m(y)h(separating)g(them)g(with)g(semi-colons.)p +eop +%%Page: 27 33 +27 32 bop 0 299 a Fg(4.8.)72 b(COLUMN)30 b(AND)h(KEYW)m(ORD)g(FIL)-8 +b(TERING)31 b(SPECIFICA)-8 b(TION)1120 b Fi(27)136 555 +y Fc(\017)46 b Fi(Cop)m(y)36 b(only)f(a)h(sp)s(eci\014ed)f(list)f(of)i +(columns)f(columns)f(to)j(the)f(\014ltered)f(input)f(\014le.)56 +b(The)36 b(list)e(of)i(column)227 668 y(name)c(should)e(b)s(e)i +(separated)g(b)m(y)g(semi-colons.)46 b(Wild)30 b(card)i(c)m(haracters)i +(ma)m(y)e(b)s(e)g(used)f(in)g(the)h(column)227 781 y(names)37 +b(to)h(matc)m(h)g(m)m(ultiple)d(columns.)60 b(If)37 b(the)g(expression) +f(con)m(tains)i(b)s(oth)e(a)i(list)d(of)j(columns)e(to)i(b)s(e)227 +894 y(included)f(and)h(columns)g(to)h(b)s(e)g(deleted,)i(then)d(all)g +(the)h(columns)f(in)g(the)h(original)e(table)i(except)h(the)227 +1007 y(explicitly)28 b(deleted)i(columns)f(will)e(app)s(ear)j(in)f(the) +h(\014ltered)f(table)h(\(i.e.,)h(there)f(is)g(no)g(need)f(to)i +(explicitly)227 1120 y(list)e(the)i(columns)e(to)i(b)s(e)f(included)d +(if)j(an)m(y)g(columns)f(are)i(b)s(eing)e(deleted\).)136 +1295 y Fc(\017)46 b Fi(Delete)31 b(a)e(column)f(or)h(k)m(eyw)m(ord)h(b) +m(y)f(listing)e(the)i(name)g(preceded)g(b)m(y)g(a)g(min)m(us)f(sign)g +(or)h(an)g(exclamation)227 1408 y(mark)c(\(!\),)h(e.g.,)i('-TIME')d +(will)d(delete)j(the)f(TIME)h(column)e(if)g(it)i(exists,)g(otherwise)f +(the)h(TIME)f(k)m(eyw)m(ord.)227 1520 y(An)35 b(error)f(is)g(returned)f +(if)h(neither)f(a)j(column)d(nor)h(k)m(eyw)m(ord)h(with)f(this)f(name)i +(exists.)53 b(Note)36 b(that)g(the)227 1633 y(exclamation)25 +b(p)s(oin)m(t,)h(')10 b(!',)27 b(is)d(a)h(sp)s(ecial)f(UNIX)h(c)m +(haracter,)j(so)d(if)f(it)h(is)f(used)g(on)h(the)g(command)g(line)e +(rather)227 1746 y(than)33 b(en)m(tered)h(at)g(a)g(task)g(prompt,)f(it) +g(m)m(ust)g(b)s(e)g(preceded)g(b)m(y)g(a)h(bac)m(kslash)f(to)h(force)g +(the)f(UNIX)h(shell)227 1859 y(to)d(ignore)f(it.)136 +2034 y Fc(\017)46 b Fi(Rename)29 b(an)g(existing)e(column)g(or)i(k)m +(eyw)m(ord)g(with)e(the)i(syn)m(tax)g('NewName)h(==)e(OldName'.)39 +b(An)28 b(error)227 2147 y(is)i(returned)f(if)g(neither)h(a)g(column)f +(nor)h(k)m(eyw)m(ord)h(with)e(this)h(name)g(exists.)136 +2322 y Fc(\017)46 b Fi(App)s(end)37 b(a)j(new)f(column)e(or)j(k)m(eyw)m +(ord)f(to)h(the)f(table.)67 b(T)-8 b(o)40 b(create)g(a)g(column,)g(giv) +m(e)g(the)f(new)g(name,)227 2435 y(optionally)34 b(follo)m(w)m(ed)h(b)m +(y)g(the)g(datat)m(yp)s(e)h(in)e(paren)m(theses,)j(follo)m(w)m(ed)e(b)m +(y)g(a)h(single)e(equals)g(sign)g(and)h(an)227 2548 y(expression)f(to)i +(b)s(e)e(used)g(to)i(compute)f(the)g(v)-5 b(alue)34 b(\(e.g.,)k('new)m +(col\(1J\))e(=)f(0')g(will)e(create)j(a)f(new)g(32-bit)227 +2661 y(in)m(teger)j(column)e(called)h('new)m(col')g(\014lled)f(with)g +(zeros\).)62 b(The)37 b(datat)m(yp)s(e)h(is)f(sp)s(eci\014ed)e(using)h +(the)i(same)227 2774 y(syn)m(tax)28 b(that)h(is)d(allo)m(w)m(ed)i(for)f +(the)h(v)-5 b(alue)27 b(of)h(the)g(FITS)f(TF)m(ORMn)g(k)m(eyw)m(ord)h +(\(e.g.,)i('I',)f('J',)f('E',)g('D',)h(etc.)227 2886 +y(for)37 b(binary)e(tables,)k(and)d('I8',)k(F12.3',)h('E20.12',)g(etc.) +62 b(for)37 b(ASCI)s(I)e(tables\).)61 b(If)37 b(the)g(datat)m(yp)s(e)h +(is)e(not)227 2999 y(sp)s(eci\014ed)23 b(then)g(an)h(appropriate)g +(datat)m(yp)s(e)h(will)c(b)s(e)j(c)m(hosen)g(dep)s(ending)e(on)i(the)g +(form)g(of)g(the)g(expression)227 3112 y(\(ma)m(y)f(b)s(e)d(a)i(c)m +(haracter)h(string,)g(logical,)f(bit,)h(long)e(in)m(teger,)j(or)d +(double)f(column\).)37 b(An)21 b(appropriate)f(v)m(ector)227 +3225 y(coun)m(t)31 b(\(in)f(the)g(case)i(of)e(binary)f(tables\))h(will) +e(also)i(b)s(e)g(added)g(if)f(not)i(explicitly)d(sp)s(eci\014ed.)227 +3369 y(When)e(creating)g(a)g(new)f(k)m(eyw)m(ord,)j(the)e(k)m(eyw)m +(ord)g(name)g(m)m(ust)g(b)s(e)f(preceded)g(b)m(y)h(a)g(p)s(ound)e(sign) +g('#',)k(and)227 3482 y(the)h(expression)e(m)m(ust)h(ev)-5 +b(aluate)29 b(to)g(a)g(scalar)f(\(i.e.,)h(cannot)g(ha)m(v)m(e)h(a)f +(column)e(name)h(in)f(the)i(expression\).)227 3595 y(The)j(commen)m(t)i +(string)e(for)g(the)h(k)m(eyw)m(ord)h(ma)m(y)f(b)s(e)f(sp)s(eci\014ed)f +(in)g(paren)m(theses)i(immediately)e(follo)m(wing)227 +3708 y(the)e(k)m(eyw)m(ord)f(name)g(\(instead)g(of)g(supplying)d(a)j +(datat)m(yp)s(e)h(as)g(in)d(the)j(case)g(of)f(creating)g(a)h(new)f +(column\).)136 3883 y Fc(\017)46 b Fi(Recompute)f(\(o)m(v)m(erwrite\))h +(the)e(v)-5 b(alues)43 b(in)g(an)h(existing)g(column)f(or)h(k)m(eyw)m +(ord)g(b)m(y)g(giving)g(the)g(name)227 3996 y(follo)m(w)m(ed)30 +b(b)m(y)h(an)f(equals)g(sign)f(and)h(an)g(arithmetic)g(expression.)0 +4217 y(The)23 b(expression)f(that)j(is)d(used)h(when)g(app)s(ending)e +(or)i(recomputing)g(columns)f(or)i(k)m(eyw)m(ords)g(can)g(b)s(e)f +(arbitrarily)0 4330 y(complex)35 b(and)h(ma)m(y)g(b)s(e)f(a)h(function) +f(of)h(other)g(header)g(k)m(eyw)m(ord)g(v)-5 b(alues)35 +b(and)g(other)h(columns)f(\(in)g(the)h(same)0 4443 y(ro)m(w\).)63 +b(The)37 b(full)e(syn)m(tax)k(and)e(a)m(v)-5 b(ailable)37 +b(functions)f(for)h(the)h(expression)e(are)i(describ)s(ed)e(b)s(elo)m +(w)h(in)f(the)i(ro)m(w)0 4556 y(\014lter)29 b(sp)s(eci\014cation)h +(section.)0 4716 y(If)d(the)h(expression)f(con)m(tains)g(b)s(oth)g(a)h +(list)f(of)h(columns)e(to)i(b)s(e)g(included)c(and)k(columns)e(to)i(b)s +(e)f(deleted,)i(then)e(all)0 4829 y(the)34 b(columns)f(in)g(the)h +(original)e(table)i(except)h(the)f(explicitly)e(deleted)i(columns)e +(will)g(app)s(ear)h(in)g(the)h(\014ltered)0 4942 y(table.)0 +5102 y(F)-8 b(or)30 b(complex)g(or)f(commonly)g(used)g(op)s(erations,)h +(one)f(can)h(also)g(place)g(the)f(op)s(erations)g(in)m(to)h(an)f +(external)h(text)0 5215 y(\014le)g(and)g(imp)s(ort)f(it)h(in)m(to)h +(the)g(column)f(\014lter)f(using)h(the)h(syn)m(tax)g('[col)g +(@\014lename.txt]'.)42 b(The)31 b(op)s(erations)f(can)0 +5328 y(extend)c(o)m(v)m(er)i(m)m(ultiple)c(lines)h(of)h(the)h(\014le,)g +(but)e(m)m(ultiple)f(op)s(erations)i(m)m(ust)g(still)f(b)s(e)g +(separated)i(b)m(y)g(semicolons.)0 5441 y(An)m(y)h(lines)f(in)g(the)h +(external)h(text)g(\014le)e(that)i(b)s(egin)e(with)g(2)i(slash)e(c)m +(haracters)j(\('//'\))g(will)c(b)s(e)h(ignored)h(and)f(ma)m(y)0 +5554 y(b)s(e)j(used)f(to)i(add)f(commen)m(ts)h(in)m(to)g(the)f(\014le.) +0 5714 y(Examples:)p eop +%%Page: 28 34 +28 33 bop 0 299 a Fi(28)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)143 555 y +Fe([col)47 b(Time;rate])713 b(-)47 b(only)g(the)g(Time)g(and)g(rate)f +(columns)g(will)1670 668 y(appear)h(in)g(the)g(filtered)e(input)i +(file.)143 894 y([col)g(Time;*raw])713 b(-)47 b(include)f(the)h(Time)g +(column)f(and)h(any)g(other)1670 1007 y(columns)f(whose)h(name)f(ends)h +(with)g('raw'.)143 1233 y([col)g(-TIME;)f(Good)h(==)g(STATUS])141 +b(-)47 b(deletes)f(the)h(TIME)g(column)f(and)1670 1346 +y(renames)g(the)h(status)f(column)g(to)i('Good')143 1571 +y([col)f(PI=PHA)f(*)h(1.1)g(+)h(0.2])285 b(-)47 b(creates)f(new)h(PI)g +(column)f(from)h(PHA)g(values)143 1797 y([col)g(rate)f(=)i +(rate/exposure])139 b(-)48 b(recomputes)d(the)i(rate)f(column)g(by)i +(dividing)1670 1910 y(it)g(by)f(the)g(EXPOSURE)e(keyword)h(value.)0 +2252 y Fd(4.9)135 b(Ro)l(w)46 b(Filtering)g(Sp)t(eci\014cation)0 +2503 y Fi(When)29 b(en)m(tering)g(the)g(name)g(of)g(a)g(FITS)f(table)h +(that)h(is)d(to)j(b)s(e)e(op)s(ened)h(b)m(y)f(a)i(program,)f(an)g +(optional)f(ro)m(w)h(\014lter)0 2616 y(ma)m(y)i(b)s(e)g(sp)s(eci\014ed) +e(to)i(select)g(a)h(subset)e(of)h(the)g(ro)m(ws)f(in)g(the)h(table.)42 +b(A)31 b(temp)s(orary)f(new)g(FITS)g(\014le)g(is)g(created)0 +2729 y(on)25 b(the)h(\015y)e(whic)m(h)g(con)m(tains)h(only)g(those)h +(ro)m(ws)f(for)g(whic)m(h)f(the)h(ro)m(w)g(\014lter)g(expression)f(ev) +-5 b(aluates)25 b(to)h(true.)39 b(\(The)0 2842 y(primary)25 +b(arra)m(y)i(and)f(an)m(y)g(other)h(extensions)f(in)f(the)i(input)e +(\014le)g(are)i(also)g(copied)f(to)h(the)f(temp)s(orary)h(\014le\).)38 +b(The)0 2955 y(original)27 b(FITS)i(\014le)f(is)g(closed)h(and)f(the)i +(new)e(virtual)g(\014le)g(is)g(op)s(ened)g(b)m(y)h(the)h(application)d +(program.)40 b(The)29 b(ro)m(w)0 3068 y(\014lter)36 b(expression)g(is)h +(enclosed)g(in)f(square)h(brac)m(k)m(ets)i(follo)m(wing)d(the)h(\014le) +g(name)g(and)g(extension)g(name)g(\(e.g.,)0 3181 y('\014le.\014ts[ev)m +(en)m(ts][GRADE==50]')28 b(selects)d(only)f(those)i(ro)m(ws)f(where)f +(the)h(GRADE)h(column)e(v)-5 b(alue)24 b(equals)g(50\).)0 +3294 y(When)33 b(dealing)f(with)g(tables)g(where)h(eac)m(h)h(ro)m(w)f +(has)g(an)g(asso)s(ciated)h(time)f(and/or)g(2D)g(spatial)g(p)s +(osition,)f(the)0 3407 y(ro)m(w)g(\014lter)g(expression)e(can)j(also)f +(b)s(e)g(used)f(to)i(select)g(ro)m(ws)f(based)g(on)g(the)g(times)g(in)f +(a)h(Go)s(o)s(d)g(Time)f(In)m(terv)-5 b(als)0 3520 y(\(GTI\))31 +b(extension,)f(or)g(on)h(spatial)e(p)s(osition)g(as)h(giv)m(en)h(in)e +(a)h(SA)m(O-st)m(yle)h(region)f(\014le.)0 3818 y Fb(4.9.1)112 +b(General)38 b(Syn)m(tax)0 4039 y Fi(The)32 b(ro)m(w)h(\014ltering)e +(expression)h(can)h(b)s(e)f(an)h(arbitrarily)d(complex)i(series)g(of)h +(op)s(erations)f(p)s(erformed)g(on)g(con-)0 4152 y(stan)m(ts,)39 +b(k)m(eyw)m(ord)e(v)-5 b(alues,)37 b(and)f(column)f(data)j(tak)m(en)f +(from)f(the)h(sp)s(eci\014ed)d(FITS)i(T)-8 b(ABLE)37 +b(extension.)58 b(The)0 4264 y(expression)36 b(m)m(ust)i(ev)-5 +b(aluate)38 b(to)h(a)f(b)s(o)s(olean)f(v)-5 b(alue)37 +b(for)g(eac)m(h)i(ro)m(w)f(of)g(the)f(table,)j(where)d(a)h(v)-5 +b(alue)38 b(of)f(F)-10 b(ALSE)0 4377 y(means)30 b(that)h(the)g(ro)m(w)f +(will)e(b)s(e)i(excluded.)0 4538 y(F)-8 b(or)34 b(complex)f(or)h +(commonly)e(used)h(\014lters,)g(one)h(can)g(place)f(the)h(expression)e +(in)m(to)h(a)h(text)g(\014le)f(and)g(imp)s(ort)e(it)0 +4650 y(in)m(to)37 b(the)f(ro)m(w)h(\014lter)f(using)f(the)i(syn)m(tax)g +('[@\014lename.txt]'.)60 b(The)36 b(expression)g(can)g(b)s(e)g +(arbitrarily)e(complex)0 4763 y(and)27 b(extend)i(o)m(v)m(er)g(m)m +(ultiple)d(lines)g(of)i(the)h(\014le.)39 b(An)m(y)28 +b(lines)e(in)h(the)h(external)g(text)h(\014le)e(that)i(b)s(egin)e(with) +g(2)h(slash)0 4876 y(c)m(haracters)k(\('//'\))g(will)c(b)s(e)i(ignored) +f(and)h(ma)m(y)h(b)s(e)f(used)f(to)i(add)f(commen)m(ts)h(in)m(to)g(the) +f(\014le.)0 5036 y(Keyw)m(ord)37 b(and)f(column)f(data)j(are)f +(referenced)g(b)m(y)g(name.)60 b(An)m(y)37 b(string)e(of)i(c)m +(haracters)i(not)e(surrounded)d(b)m(y)0 5149 y(quotes)41 +b(\(ie,)i(a)e(constan)m(t)h(string\))e(or)g(follo)m(w)m(ed)g(b)m(y)h +(an)f(op)s(en)g(paren)m(theses)h(\(ie,)i(a)e(function)e(name\))i(will)d +(b)s(e)0 5262 y(initially)33 b(in)m(terpreted)i(as)i(a)g(column)e(name) +h(and)g(its)g(con)m(ten)m(ts)i(for)e(the)h(curren)m(t)f(ro)m(w)g +(inserted)f(in)m(to)i(the)f(ex-)0 5375 y(pression.)j(If)28 +b(no)h(suc)m(h)g(column)f(exists,)h(a)h(k)m(eyw)m(ord)f(of)h(that)f +(name)g(will)e(b)s(e)h(searc)m(hed)i(for)f(and)f(its)h(v)-5 +b(alue)28 b(used,)0 5488 y(if)35 b(found.)55 b(T)-8 b(o)36 +b(force)g(the)g(name)g(to)h(b)s(e)e(in)m(terpreted)g(as)h(a)g(k)m(eyw)m +(ord)g(\(in)f(case)h(there)g(is)f(b)s(oth)g(a)h(column)f(and)0 +5601 y(k)m(eyw)m(ord)41 b(with)d(the)j(same)f(name\),)j(precede)d(the)h +(k)m(eyw)m(ord)f(name)g(with)f(a)i(single)d(p)s(ound)g(sign,)k('#',)h +(as)d(in)0 5714 y('#NAXIS2'.)g(Due)27 b(to)g(the)f(generalities)g(of)g +(FITS)g(column)f(and)h(k)m(eyw)m(ord)h(names,)g(if)e(the)i(column)e(or) +h(k)m(eyw)m(ord)p eop +%%Page: 29 35 +29 34 bop 0 299 a Fg(4.9.)72 b(R)m(O)m(W)31 b(FIL)-8 +b(TERING)31 b(SPECIFICA)-8 b(TION)2072 b Fi(29)0 555 +y(name)34 b(con)m(tains)g(a)g(space)h(or)e(a)i(c)m(haracter)g(whic)m(h) +e(migh)m(t)g(app)s(ear)g(as)i(an)e(arithmetic)g(term)h(then)g(inclose)f +(the)0 668 y(name)d(in)f('$')j(c)m(haracters)g(as)e(in)f($MAX)j(PHA$)f +(or)f(#$MAX-PHA$.)43 b(Names)31 b(are)f(case)i(insensitiv)m(e.)0 +828 y(T)-8 b(o)32 b(access)g(a)g(table)f(en)m(try)h(in)e(a)i(ro)m(w)f +(other)h(than)f(the)g(curren)m(t)g(one,)h(follo)m(w)f(the)g(column's)g +(name)g(with)f(a)i(ro)m(w)0 941 y(o\013set)37 b(within)c(curly)h +(braces.)57 b(F)-8 b(or)36 b(example,)h('PHA)p Fc(f)p +Fi(-3)p Fc(g)p Fi(')h(will)33 b(ev)-5 b(aluate)37 b(to)f(the)g(v)-5 +b(alue)35 b(of)h(column)e(PHA,)j(3)0 1054 y(ro)m(ws)28 +b(ab)s(o)m(v)m(e)i(the)e(ro)m(w)h(curren)m(tly)e(b)s(eing)g(pro)s +(cessed.)40 b(One)28 b(cannot)h(sp)s(ecify)e(an)h(absolute)g(ro)m(w)g +(n)m(um)m(b)s(er,)g(only)g(a)0 1167 y(relativ)m(e)i(o\013set.)42 +b(Ro)m(ws)31 b(that)g(fall)e(outside)h(the)g(table)g(will)e(b)s(e)i +(treated)h(as)g(unde\014ned,)d(or)j(NULLs.)0 1327 y(Bo)s(olean)g(op)s +(erators)g(can)g(b)s(e)f(used)f(in)h(the)g(expression)g(in)f(either)h +(their)g(F)-8 b(ortran)31 b(or)f(C)h(forms.)40 b(The)30 +b(follo)m(wing)0 1440 y(b)s(o)s(olean)f(op)s(erators)i(are)g(a)m(v)-5 +b(ailable:)191 1666 y Fe("equal")428 b(.eq.)46 b(.EQ.)h(==)95 +b("not)46 b(equal")476 b(.ne.)94 b(.NE.)h(!=)191 1779 +y("less)46 b(than")238 b(.lt.)46 b(.LT.)h(<)143 b("less)46 +b(than/equal")188 b(.le.)94 b(.LE.)h(<=)47 b(=<)191 1892 +y("greater)e(than")95 b(.gt.)46 b(.GT.)h(>)143 b("greater)45 +b(than/equal")g(.ge.)94 b(.GE.)h(>=)47 b(=>)191 2005 +y("or")572 b(.or.)46 b(.OR.)h(||)95 b("and")762 b(.and.)46 +b(.AND.)h(&&)191 2118 y("negation")236 b(.not.)46 b(.NOT.)h(!)95 +b("approx.)45 b(equal\(1e-7\)")92 b(~)0 2344 y Fi(Note)32 +b(that)g(the)f(exclamation)g(p)s(oin)m(t,)f(')10 b(!',)33 +b(is)d(a)h(sp)s(ecial)e(UNIX)j(c)m(haracter,)h(so)e(if)f(it)g(is)g +(used)g(on)h(the)g(command)0 2457 y(line)g(rather)h(than)h(en)m(tered)g +(at)g(a)g(task)g(prompt,)g(it)f(m)m(ust)g(b)s(e)g(preceded)h(b)m(y)f(a) +h(bac)m(kslash)f(to)i(force)f(the)g(UNIX)0 2570 y(shell)c(to)i(ignore)f +(it.)0 2730 y(The)i(expression)f(ma)m(y)j(also)e(include)e(arithmetic)i +(op)s(erators)h(and)f(functions.)46 b(T)-8 b(rigonometric)32 +b(functions)f(use)0 2843 y(radians,)22 b(not)h(degrees.)38 +b(The)22 b(follo)m(wing)e(arithmetic)h(op)s(erators)i(and)e(functions)f +(can)j(b)s(e)e(used)g(in)g(the)h(expression)0 2956 y(\(function)37 +b(names)g(are)h(case)g(insensitiv)m(e\).)61 b(A)37 b(n)m(ull)f(v)-5 +b(alue)37 b(will)d(b)s(e)j(returned)g(in)f(case)i(of)g(illegal)e(op)s +(erations)0 3069 y(suc)m(h)30 b(as)h(divide)d(b)m(y)i(zero,)i +(sqrt\(negativ)m(e\))g(log\(negativ)m(e\),)g(log10\(negativ)m(e\),)i +(arccos\(.gt.)43 b(1\),)32 b(arcsin\(.gt.)41 b(1\).)191 +3295 y Fe("addition")522 b(+)477 b("subtraction")d(-)191 +3408 y("multiplication")234 b(*)477 b("division")618 +b(/)191 3521 y("negation")522 b(-)477 b("exponentiation")330 +b(**)143 b(^)191 3634 y("absolute)45 b(value")237 b(abs\(x\))g +("cosine")714 b(cos\(x\))191 3747 y("sine")g(sin\(x\))237 +b("tangent")666 b(tan\(x\))191 3860 y("arc)47 b(cosine")427 +b(arccos\(x\))93 b("arc)47 b(sine")619 b(arcsin\(x\))191 +3973 y("arc)47 b(tangent")379 b(arctan\(x\))93 b("arc)47 +b(tangent")475 b(arctan2\(x,y\))191 4085 y("hyperbolic)45 +b(cos")237 b(cosh\(x\))189 b("hyperbolic)45 b(sin")333 +b(sinh\(x\))191 4198 y("hyperbolic)45 b(tan")237 b(tanh\(x\))189 +b("round)46 b(to)h(nearest)f(int")h(round\(x\))191 4311 +y("round)f(down)h(to)g(int")94 b(floor\(x\))141 b("round)46 +b(up)h(to)h(int")285 b(ceil\(x\))191 4424 y("exponential")378 +b(exp\(x\))237 b("square)46 b(root")476 b(sqrt\(x\))191 +4537 y("natural)45 b(log")381 b(log\(x\))237 b("common)46 +b(log")524 b(log10\(x\))191 4650 y("modulus")570 b(i)48 +b(\045)f(j)286 b("random)46 b(#)h([0.0,1.0\)")141 b(random\(\))191 +4763 y("minimum")570 b(min\(x,y\))141 b("maximum")666 +b(max\(x,y\))191 4876 y("cumulative)45 b(sum")189 b(accum\(x\))141 +b("sequential)45 b(difference")g(seqdiff\(x\))191 4989 +y("if-then-else")330 b(b?x:y)0 5215 y Fi(An)31 b(alternate)h(syn)m(tax) +g(for)f(the)g(min)f(and)h(max)g(functions)f(has)h(only)f(a)i(single)e +(argumen)m(t)i(whic)m(h)e(should)f(b)s(e)i(a)0 5328 y(v)m(ector)g(v)-5 +b(alue)29 b(\(see)h(b)s(elo)m(w\).)40 b(The)29 b(result)f(will)f(b)s(e) +h(the)i(minim)m(um/maxim)m(um)c(elemen)m(t)j(con)m(tained)h(within)d +(the)0 5441 y(v)m(ector.)0 5601 y(The)35 b(accum\(x\))i(function)e +(forms)g(the)h(cum)m(ulativ)m(e)g(sum)f(of)h(x,)h(elemen)m(t)g(b)m(y)f +(elemen)m(t.)57 b(V)-8 b(ector)38 b(columns)d(are)0 5714 +y(supp)s(orted)i(simply)f(b)m(y)i(p)s(erforming)e(the)j(summation)f +(pro)s(cess)g(through)f(all)h(the)h(v)-5 b(alues.)64 +b(Null)37 b(v)-5 b(alues)38 b(are)p eop +%%Page: 30 36 +30 35 bop 0 299 a Fi(30)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(treated)30 +b(as)f(0.)41 b(The)29 b(seqdi\013\(x\))g(function)e(forms)i(the)g +(sequen)m(tial)g(di\013erence)f(of)i(x,)f(elemen)m(t)h(b)m(y)f(elemen)m +(t.)40 b(The)0 668 y(\014rst)c(v)-5 b(alue)37 b(of)g(seqdi\013)f(is)g +(the)h(\014rst)g(v)-5 b(alue)36 b(of)h(x.)61 b(A)37 b(single)f(n)m(ull) +f(v)-5 b(alue)37 b(in)e(x)i(causes)h(a)f(pair)f(of)h(n)m(ulls)e(in)h +(the)0 781 y(output.)55 b(The)35 b(seqdi\013)f(and)h(accum)g(functions) +f(are)i(functional)d(in)m(v)m(erses,)k(i.e.,)g(seqdi\013\(accum\(x\)\)) +f(==)f(x)g(as)0 894 y(long)30 b(as)h(no)f(n)m(ull)e(v)-5 +b(alues)30 b(are)h(presen)m(t.)0 1054 y(The)38 b(follo)m(wing)f(t)m(yp) +s(e)i(casting)g(op)s(erators)g(are)g(a)m(v)-5 b(ailable,)41 +b(where)d(the)h(inclosing)e(paren)m(theses)i(are)g(required)0 +1167 y(and)30 b(tak)m(en)h(from)f(the)h(C)f(language)g(usage.)42 +b(Also,)30 b(the)h(in)m(teger)f(to)i(real)e(casts)h(v)-5 +b(alues)29 b(to)j(double)d(precision:)764 1398 y Fe("real)46 +b(to)h(integer")189 b(\(int\))46 b(x)239 b(\(INT\))46 +b(x)764 1510 y("integer)f(to)i(real")190 b(\(float\))46 +b(i)143 b(\(FLOAT\))45 b(i)0 1741 y Fi(In)30 b(addition,)e(sev)m(eral)j +(constan)m(ts)h(are)f(built)d(in)h(for)h(use)g(in)f(n)m(umerical)g +(expressions:)382 1972 y Fe(#pi)667 b(3.1415...)284 b(#e)620 +b(2.7182...)382 2085 y(#deg)f(#pi/180)380 b(#row)524 +b(current)46 b(row)h(number)382 2197 y(#null)428 b(undefined)45 +b(value)142 b(#snull)428 b(undefined)45 b(string)0 2428 +y Fi(A)40 b(string)e(constan)m(t)j(m)m(ust)e(b)s(e)g(enclosed)g(in)g +(quotes)h(as)f(in)g('Crab'.)67 b(The)39 b("n)m(ull")g(constan)m(ts)h +(are)g(useful)e(for)0 2541 y(conditionally)d(setting)j(table)g(v)-5 +b(alues)37 b(to)h(a)g(NULL,)g(or)g(unde\014ned,)f(v)-5 +b(alue)38 b(\(eg.,)j("col1==-99)e(?)62 b(#NULL)38 b(:)0 +2654 y(col1"\).)0 2814 y(There)27 b(is)f(also)i(a)f(function)f(for)i +(testing)f(if)f(t)m(w)m(o)j(v)-5 b(alues)27 b(are)h(close)f(to)i(eac)m +(h)f(other,)h(i.e.,)f(if)e(they)i(are)g("near")g(eac)m(h)0 +2927 y(other)c(to)h(within)c(a)j(user)g(sp)s(eci\014ed)e(tolerance.)39 +b(The)24 b(argumen)m(ts,)h(v)-5 b(alue)p 2503 2927 28 +4 v 33 w(1)24 b(and)f(v)-5 b(alue)p 2980 2927 V 32 w(2)25 +b(can)f(b)s(e)f(in)m(teger)h(or)g(real)0 3040 y(and)32 +b(represen)m(t)h(the)g(t)m(w)m(o)h(v)-5 b(alues)32 b(who's)g(pro)m +(ximit)m(y)g(is)g(b)s(eing)f(tested)i(to)h(b)s(e)e(within)e(the)j(sp)s +(eci\014ed)e(tolerance,)0 3153 y(also)f(an)h(in)m(teger)f(or)h(real:) +955 3383 y Fe(near\(value_1,)44 b(value_2,)h(tolerance\))0 +3614 y Fi(When)24 b(a)i(NULL,)e(or)h(unde\014ned,)f(v)-5 +b(alue)24 b(is)g(encoun)m(tered)h(in)f(the)g(FITS)g(table,)i(the)f +(expression)f(will)e(ev)-5 b(aluate)25 b(to)0 3727 y(NULL)31 +b(unless)e(the)i(unde\014ned)e(v)-5 b(alue)30 b(is)g(not)h(actually)f +(required)f(for)i(ev)-5 b(aluation,)31 b(e.g.)43 b("TR)m(UE)31 +b(.or.)43 b(NULL")0 3840 y(ev)-5 b(aluates)31 b(to)g(TR)m(UE.)g(The)f +(follo)m(wing)e(t)m(w)m(o)k(functions)d(allo)m(w)h(some)h(NULL)f +(detection)h(and)f(handling:)430 4070 y Fe("a)47 b(null)f(value?")667 +b(ISNULL\(x\))430 4183 y("define)45 b(a)j(value)e(for)h(null")190 +b(DEFNULL\(x,y\))0 4414 y Fi(The)36 b(former)h(returns)e(a)i(b)s(o)s +(olean)f(v)-5 b(alue)36 b(of)h(TR)m(UE)g(if)f(the)h(argumen)m(t)g(x)g +(is)f(NULL.)h(The)f(later)h("de\014nes")g(a)0 4527 y(v)-5 +b(alue)34 b(to)h(b)s(e)e(substituted)g(for)h(NULL)g(v)-5 +b(alues;)36 b(it)e(returns)f(the)h(v)-5 b(alue)34 b(of)g(x)g(if)f(x)i +(is)e(not)h(NULL,)h(otherwise)e(it)0 4640 y(returns)c(the)i(v)-5 +b(alue)30 b(of)g(y)-8 b(.)0 4926 y Fb(4.9.2)112 b(Bit)36 +b(Masks)0 5145 y Fi(Bit)f(masks)g(can)h(b)s(e)f(used)f(to)i(select)g +(out)f(ro)m(ws)h(from)e(bit)h(columns)f(\(TF)m(ORMn)h(=)g(#X\))h(in)e +(FITS)g(\014les.)54 b(T)-8 b(o)0 5257 y(represen)m(t)30 +b(the)h(mask,)g(binary)-8 b(,)29 b(o)s(ctal,)i(and)f(hex)g(formats)g +(are)h(allo)m(w)m(ed:)811 5488 y Fe(binary:)142 b +(b0110xx1010000101xxxx00)o(01)811 5601 y(octal:)190 b(o720x1)46 +b(->)h(\(b111010000xxx001\))811 5714 y(hex:)286 b(h0FxD)94 +b(->)47 b(\(b00001111xxxx1101\))p eop +%%Page: 31 37 +31 36 bop 0 299 a Fg(4.9.)72 b(R)m(O)m(W)31 b(FIL)-8 +b(TERING)31 b(SPECIFICA)-8 b(TION)2072 b Fi(31)0 555 +y(In)22 b(all)g(the)h(represen)m(tations,)i(an)d(x)h(or)g(X)g(is)f +(allo)m(w)m(ed)h(in)e(the)i(mask)g(as)g(a)h(wild)c(card.)38 +b(Note)25 b(that)e(the)g(x)g(represen)m(ts)0 668 y(a)k(di\013eren)m(t)g +(n)m(um)m(b)s(er)f(of)h(wild)d(card)j(bits)f(in)g(eac)m(h)i(represen)m +(tation.)40 b(All)25 b(represen)m(tations)i(are)h(case)g(insensitiv)m +(e.)0 828 y(T)-8 b(o)28 b(construct)g(the)g(b)s(o)s(olean)e(expression) +h(using)f(the)i(mask)f(as)h(the)g(b)s(o)s(olean)e(equal)h(op)s(erator)h +(describ)s(ed)e(ab)s(o)m(v)m(e)0 941 y(on)34 b(a)h(bit)f(table)h +(column.)52 b(F)-8 b(or)35 b(example,)h(if)d(y)m(ou)i(had)f(a)h(7)g +(bit)f(column)f(named)h(\015ags)h(in)e(a)i(FITS)f(table)h(and)0 +1054 y(w)m(an)m(ted)c(all)e(ro)m(ws)i(ha)m(ving)f(the)g(bit)g(pattern)g +(0010011,)k(the)c(selection)h(expression)e(w)m(ould)g(b)s(e:)1336 +1301 y Fe(flags)47 b(==)g(b0010011)191 1414 y(or)1336 +1526 y(flags)g(.eq.)f(b10011)0 1773 y Fi(It)35 b(is)f(also)h(p)s +(ossible)d(to)k(test)g(if)e(a)h(range)g(of)g(bits)f(is)g(less)g(than,)i +(less)e(than)h(equal,)h(greater)g(than)e(and)h(greater)0 +1886 y(than)30 b(equal)g(to)h(a)g(particular)e(b)s(o)s(olean)g(v)-5 +b(alue:)1336 2132 y Fe(flags)47 b(<=)g(bxxx010xx)1336 +2245 y(flags)g(.gt.)f(bxxx100xx)1336 2358 y(flags)h(.le.)f(b1xxxxxxx)0 +2605 y Fi(Notice)31 b(the)g(use)f(of)h(the)f(x)g(bit)g(v)-5 +b(alue)30 b(to)h(limit)d(the)i(range)h(of)g(bits)e(b)s(eing)g +(compared.)0 2765 y(It)j(is)g(not)g(necessary)h(to)g(sp)s(ecify)e(the)i +(leading)e(\(most)i(signi\014can)m(t\))f(zero)h(\(0\))g(bits)e(in)g +(the)i(mask,)g(as)g(sho)m(wn)e(in)0 2878 y(the)g(second)f(expression)f +(ab)s(o)m(v)m(e.)0 3038 y(Bit)43 b(wise)f(AND,)i(OR)e(and)g(NOT)h(op)s +(erations)f(are)h(also)g(p)s(ossible)d(on)j(t)m(w)m(o)h(or)f(more)g +(bit)f(\014elds)f(using)h(the)0 3151 y('&'\(AND\),)35 +b(')p Fc(j)p Fi('\(OR\),)g(and)e(the)h(')10 b(!'\(NOT\))34 +b(op)s(erators.)51 b(All)32 b(of)h(these)h(op)s(erators)g(result)e(in)h +(a)h(bit)e(\014eld)g(whic)m(h)0 3264 y(can)f(then)f(b)s(e)f(used)h +(with)f(the)i(equal)f(op)s(erator.)41 b(F)-8 b(or)31 +b(example:)1241 3510 y Fe(\(!flags\))45 b(==)j(b1101100)1241 +3623 y(\(flags)e(&)h(b1000001\))f(==)h(bx000001)0 3870 +y Fi(Bit)34 b(\014elds)f(can)h(b)s(e)f(app)s(ended)g(as)h(w)m(ell)f +(using)g(the)h('+')g(op)s(erator.)53 b(Strings)32 b(can)j(b)s(e)e +(concatenated)j(this)d(w)m(a)m(y)-8 b(,)0 3983 y(to)s(o.)0 +4271 y Fb(4.9.3)112 b(V)-9 b(ector)36 b(Columns)0 4490 +y Fi(V)-8 b(ector)37 b(columns)d(can)i(also)f(b)s(e)g(used)f(in)g +(building)e(the)j(expression.)55 b(No)36 b(sp)s(ecial)e(syn)m(tax)h(is) +g(required)e(if)i(one)0 4603 y(w)m(an)m(ts)46 b(to)f(op)s(erate)h(on)f +(all)f(elemen)m(ts)h(of)g(the)h(v)m(ector.)86 b(Simply)42 +b(use)j(the)g(column)f(name)h(as)g(for)g(a)g(scalar)0 +4716 y(column.)c(V)-8 b(ector)32 b(columns)e(can)h(b)s(e)f(freely)g(in) +m(termixed)g(with)f(scalar)i(columns)e(or)i(constan)m(ts)h(in)e +(virtually)e(all)0 4829 y(expressions.)39 b(The)29 b(result)f(will)e(b) +s(e)j(of)g(the)g(same)h(dimension)c(as)k(the)f(v)m(ector.)42 +b(Tw)m(o)29 b(v)m(ectors)i(in)d(an)h(expression,)0 4942 +y(though,)f(need)e(to)i(ha)m(v)m(e)g(the)f(same)g(n)m(um)m(b)s(er)f(of) +h(elemen)m(ts)g(and)f(ha)m(v)m(e)j(the)e(same)g(dimensions.)37 +b(The)26 b(only)g(places)0 5055 y(a)35 b(v)m(ector)h(column)d(cannot)i +(b)s(e)f(used)f(\(for)i(no)m(w,)g(an)m(yw)m(a)m(y\))h(are)f(the)g(SA)m +(O)f(region)g(functions)f(and)g(the)i(NEAR)0 5168 y(b)s(o)s(olean)29 +b(function.)0 5328 y(Arithmetic)22 b(and)g(logical)h(op)s(erations)f +(are)i(all)e(p)s(erformed)f(on)i(an)g(elemen)m(t)g(b)m(y)g(elemen)m(t)h +(basis.)37 b(Comparing)22 b(t)m(w)m(o)0 5441 y(v)m(ector)32 +b(columns,)d(eg)i("COL1)f(==)g(COL2",)g(th)m(us)g(results)f(in)g +(another)h(v)m(ector)i(of)e(b)s(o)s(olean)g(v)-5 b(alues)29 +b(indicating)0 5554 y(whic)m(h)g(elemen)m(ts)i(of)f(the)h(t)m(w)m(o)h +(v)m(ectors)f(are)g(equal.)0 5714 y(Eigh)m(t)f(functions)f(are)i(a)m(v) +-5 b(ailable)30 b(that)h(op)s(erate)g(on)f(a)h(v)m(ector)h(and)d +(return)h(a)g(scalar)h(result:)p eop +%%Page: 32 38 +32 37 bop 0 299 a Fi(32)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191 555 y +Fe("minimum")284 b(MIN\(V\))475 b("maximum")714 b(MAX\(V\))191 +668 y("average")284 b(AVERAGE\(V\))f("median")762 b(MEDIAN\(V\))191 +781 y("sumation")236 b(SUM\(V\))475 b("standard)46 b(deviation")188 +b(STDDEV\(V\))191 894 y("#)47 b(of)g(values")94 b(NELEM\(V\))379 +b("#)48 b(of)f(non-null)e(values")94 b(NVALID\(V\))0 +1217 y Fi(where)40 b(V)h(represen)m(ts)g(the)g(name)g(of)h(a)f(v)m +(ector)h(column)e(or)h(a)h(man)m(ually)d(constructed)i(v)m(ector)i +(using)c(curly)0 1330 y(brac)m(k)m(ets)27 b(as)f(describ)s(ed)d(b)s +(elo)m(w.)38 b(The)25 b(\014rst)g(6)h(of)g(these)g(functions)e(ignore)h +(an)m(y)h(n)m(ull)d(v)-5 b(alues)25 b(in)f(the)i(v)m(ector)h(when)0 +1443 y(computing)i(the)i(result.)0 1603 y(The)h(SUM)h(function)e +(literally)g(sums)g(all)h(the)h(elemen)m(ts)g(in)f(x,)h(returning)e(a)i +(scalar)g(v)-5 b(alue.)47 b(If)32 b(x)h(is)f(a)h(b)s(o)s(olean)0 +1716 y(v)m(ector,)40 b(SUM)c(returns)f(the)h(n)m(um)m(b)s(er)f(of)i(TR) +m(UE)f(elemen)m(ts.)59 b(The)36 b(NELEM)g(function)f(returns)g(the)h(n) +m(um)m(b)s(er)0 1829 y(of)i(elemen)m(ts)g(in)f(v)m(ector)i(x)f(whereas) +f(NV)-10 b(ALID)39 b(return)d(the)i(n)m(um)m(b)s(er)f(of)h(non-n)m(ull) +d(elemen)m(ts)k(in)d(the)i(v)m(ector.)0 1942 y(\(NELEM)28 +b(also)g(op)s(erates)g(on)g(bit)e(and)h(string)g(columns,)g(returning)f +(their)h(column)f(widths.\))39 b(As)27 b(an)h(example,)0 +2055 y(to)42 b(test)g(whether)f(all)f(elemen)m(ts)i(of)g(t)m(w)m(o)g(v) +m(ectors)h(satisfy)e(a)h(giv)m(en)f(logical)g(comparison,)i(one)f(can)g +(use)f(the)0 2168 y(expression)668 2492 y Fe(SUM\()47 +b(COL1)f(>)i(COL2)f(\))g(==)g(NELEM\()f(COL1)h(\))0 2815 +y Fi(whic)m(h)31 b(will)e(return)i(TR)m(UE)h(if)f(all)g(elemen)m(ts)h +(of)g(COL1)g(are)g(greater)h(than)f(their)f(corresp)s(onding)f(elemen)m +(ts)i(in)0 2928 y(COL2.)0 3088 y(T)-8 b(o)32 b(sp)s(ecify)e(a)j(single) +d(elemen)m(t)i(of)g(a)g(v)m(ector,)i(giv)m(e)e(the)g(column)e(name)i +(follo)m(w)m(ed)f(b)m(y)h(a)g(comma-separated)h(list)0 +3201 y(of)c(co)s(ordinates)f(enclosed)h(in)e(square)i(brac)m(k)m(ets.) +41 b(F)-8 b(or)30 b(example,)f(if)e(a)i(v)m(ector)i(column)c(named)i +(PHAS)f(exists)g(in)0 3314 y(the)f(table)f(as)h(a)g(one)g(dimensional,) +e(256)j(comp)s(onen)m(t)f(list)e(of)i(n)m(um)m(b)s(ers)e(from)h(whic)m +(h)g(y)m(ou)h(w)m(an)m(ted)g(to)g(select)h(the)0 3427 +y(57th)k(comp)s(onen)m(t)g(for)f(use)g(in)f(the)i(expression,)e(then)i +(PHAS[57])g(w)m(ould)e(do)i(the)f(tric)m(k.)44 b(Higher)31 +b(dimensional)0 3540 y(arra)m(ys)41 b(of)h(data)f(ma)m(y)h(app)s(ear)f +(in)e(a)j(column.)72 b(But)41 b(in)f(order)g(to)i(in)m(terpret)e(them,) +k(the)e(TDIMn)e(k)m(eyw)m(ord)0 3653 y(m)m(ust)34 b(app)s(ear)g(in)f +(the)h(header.)52 b(Assuming)33 b(that)i(a)f(\(4,4,4,4\))k(arra)m(y)c +(is)g(pac)m(k)m(ed)h(in)m(to)f(eac)m(h)i(ro)m(w)e(of)g(a)h(column)0 +3766 y(named)26 b(ARRA)-8 b(Y4D,)28 b(the)f(\(1,2,3,4\))i(comp)s(onen)m +(t)e(elemen)m(t)f(of)h(eac)m(h)g(ro)m(w)g(is)e(accessed)j(b)m(y)e(ARRA) +-8 b(Y4D[1,2,3,4].)0 3878 y(Arra)m(ys)33 b(up)e(to)j(dimension)c(5)j +(are)f(curren)m(tly)g(supp)s(orted.)46 b(Eac)m(h)33 b(v)m(ector)h +(index)d(can)i(itself)e(b)s(e)h(an)h(expression,)0 3991 +y(although)38 b(it)g(m)m(ust)h(ev)-5 b(aluate)39 b(to)g(an)g(in)m +(teger)g(v)-5 b(alue)38 b(within)e(the)j(b)s(ounds)d(of)j(the)g(v)m +(ector.)67 b(V)-8 b(ector)40 b(columns)0 4104 y(whic)m(h)30 +b(con)m(tain)h(spaces)h(or)f(arithmetic)f(op)s(erators)i(m)m(ust)f(ha)m +(v)m(e)h(their)e(names)h(enclosed)g(in)f("$")i(c)m(haracters)h(as)0 +4217 y(with)c($ARRA)-8 b(Y-4D$[1,2,3,4].)0 4377 y(A)45 +b(more)f(C-lik)m(e)g(syn)m(tax)i(for)e(sp)s(ecifying)e(v)m(ector)47 +b(indices)42 b(is)i(also)h(a)m(v)-5 b(ailable.)82 b(The)45 +b(elemen)m(t)g(used)e(in)h(the)0 4490 y(preceding)27 +b(example)h(alternativ)m(ely)g(could)f(b)s(e)h(sp)s(eci\014ed)f(with)f +(the)j(syn)m(tax)g(ARRA)-8 b(Y4D[4][3][2][1].)45 b(Note)30 +b(the)0 4603 y(rev)m(erse)40 b(order)f(of)h(indices)d(\(as)j(in)e(C\),) +i(as)f(w)m(ell)g(as)g(the)h(fact)g(that)g(the)g(v)-5 +b(alues)39 b(are)g(still)f(ones-based)h(\(as)h(in)0 4716 +y(F)-8 b(ortran)39 b({)g(adopted)g(to)g(a)m(v)m(oid)g(am)m(biguit)m(y)f +(for)h(1D)g(v)m(ectors\).)67 b(With)38 b(this)g(syn)m(tax,)j(one)e(do)s +(es)f(not)h(need)f(to)0 4829 y(sp)s(ecify)29 b(all)g(of)i(the)f +(indices.)39 b(T)-8 b(o)31 b(extract)h(a)f(3D)g(slice)e(of)i(this)e(4D) +i(arra)m(y)-8 b(,)32 b(use)e(ARRA)-8 b(Y4D[4].)0 4989 +y(V)g(ariable-length)30 b(v)m(ector)i(columns)d(are)h(not)h(supp)s +(orted.)0 5149 y(V)-8 b(ectors)24 b(can)e(b)s(e)f(man)m(ually)f +(constructed)j(within)c(the)j(expression)f(using)f(a)i(comma-separated) +i(list)d(of)h(elemen)m(ts)0 5262 y(surrounded)35 b(b)m(y)j(curly)f +(braces)i(\(')p Fc(fg)p Fi('\).)66 b(F)-8 b(or)38 b(example,)i(')p +Fc(f)p Fi(1,3,6,1)p Fc(g)p Fi(')i(is)c(a)g(4-elemen)m(t)h(v)m(ector)h +(con)m(taining)e(the)0 5375 y(v)-5 b(alues)25 b(1,)i(3,)g(6,)g(and)e +(1.)40 b(The)25 b(v)m(ector)i(can)f(con)m(tain)g(only)f(b)s(o)s(olean,) +g(in)m(teger,)j(and)d(real)g(v)-5 b(alues)25 b(\(or)h(expressions\).)0 +5488 y(The)e(elemen)m(ts)g(will)e(b)s(e)i(promoted)g(to)h(the)g +(highest)e(datat)m(yp)s(e)i(presen)m(t.)39 b(An)m(y)24 +b(elemen)m(ts)h(whic)m(h)e(are)i(themselv)m(es)0 5601 +y(v)m(ectors,)40 b(will)34 b(b)s(e)i(expanded)g(out)h(with)f(eac)m(h)h +(of)g(its)f(elemen)m(ts)i(b)s(ecoming)d(an)i(elemen)m(t)g(in)f(the)h +(constructed)0 5714 y(v)m(ector.)p eop +%%Page: 33 39 +33 38 bop 0 299 a Fg(4.9.)72 b(R)m(O)m(W)31 b(FIL)-8 +b(TERING)31 b(SPECIFICA)-8 b(TION)2072 b Fi(33)0 555 +y Fb(4.9.4)112 b(Go)s(o)s(d)38 b(Time)e(In)m(terv)-6 +b(al)37 b(Filtering)0 774 y Fi(A)44 b(common)g(\014ltering)f(metho)s(d) +g(in)m(v)m(olv)m(es)h(selecting)g(ro)m(ws)g(whic)m(h)e(ha)m(v)m(e)k(a)e +(time)g(v)-5 b(alue)43 b(whic)m(h)g(lies)f(within)0 887 +y(what)37 b(is)f(called)h(a)h(Go)s(o)s(d)f(Time)f(In)m(terv)-5 +b(al)37 b(or)g(GTI.)g(The)g(time)g(in)m(terv)-5 b(als)36 +b(are)i(de\014ned)e(in)g(a)h(separate)i(FITS)0 1000 y(table)h +(extension)g(whic)m(h)e(con)m(tains)i(2)h(columns)e(giving)f(the)j +(start)f(and)g(stop)g(time)f(of)h(eac)m(h)i(go)s(o)s(d)e(in)m(terv)-5 +b(al.)0 1113 y(The)34 b(\014ltering)f(op)s(eration)i(accepts)h(only)d +(those)j(ro)m(ws)e(of)h(the)g(input)e(table)i(whic)m(h)e(ha)m(v)m(e)j +(an)f(asso)s(ciated)g(time)0 1226 y(whic)m(h)f(falls)h(within)e(one)j +(of)g(the)g(time)f(in)m(terv)-5 b(als)35 b(de\014ned)g(in)f(the)i(GTI)g +(extension.)56 b(A)36 b(high)f(lev)m(el)g(function,)0 +1339 y(gti\014lter\(a,b,c,d\),)42 b(is)d(a)m(v)-5 b(ailable)39 +b(whic)m(h)f(ev)-5 b(aluates)40 b(eac)m(h)h(ro)m(w)e(of)h(the)f(input)f +(table)h(and)g(returns)f(TR)m(UE)i(or)0 1452 y(F)-10 +b(ALSE)30 b(dep)s(ending)e(whether)i(the)g(ro)m(w)h(is)e(inside)f(or)i +(outside)g(the)h(go)s(o)s(d)f(time)g(in)m(terv)-5 b(al.)40 +b(The)30 b(syn)m(tax)h(is)286 1696 y Fe(gtifilter\()45 +b([)j("gtifile")d([,)i(expr)g([,)g("STARTCOL",)e("STOPCOL")g(])j(])f(]) +g(\))0 1941 y Fi(where)20 b(eac)m(h)h("[]")h(demarks)e(optional)f +(parameters.)38 b(Note)21 b(that)g(the)g(quotes)f(around)g(the)g +(gti\014le)g(and)f(ST)-8 b(AR)g(T/STOP)0 2054 y(column)32 +b(are)i(required.)49 b(Either)33 b(single)f(or)i(double)e(quotes)i(ma)m +(y)g(b)s(e)f(used.)50 b(In)33 b(cases)h(where)g(this)e(expression)0 +2167 y(is)d(en)m(tered)h(on)g(the)g(Unix)f(command)h(line,)e(enclose)i +(the)g(en)m(tire)g(expression)f(in)f(double)h(quotes,)h(and)g(then)f +(use)0 2280 y(single)23 b(quotes)i(within)c(the)k(expression)e(to)i +(enclose)f(the)h('gti\014le')f(and)f(other)i(terms.)38 +b(It)25 b(is)e(also)h(usually)e(p)s(ossible)0 2393 y(to)38 +b(do)e(the)h(rev)m(erse,)j(and)c(enclose)h(the)g(whole)f(expression)g +(in)f(single)h(quotes)h(and)f(then)h(use)f(double)f(quotes)0 +2506 y(within)c(the)i(expression.)49 b(The)33 b(gti\014le,)g(if)g(sp)s +(eci\014ed,)f(can)i(b)s(e)f(blank)f(\(""\))j(whic)m(h)d(will)e(mean)k +(to)g(use)f(the)h(\014rst)0 2619 y(extension)f(with)g(the)g(name)h +("*GTI*")h(in)e(the)g(curren)m(t)h(\014le,)g(a)g(plain)d(extension)i +(sp)s(eci\014er)f(\(eg,)k("+2",)g("[2]",)0 2731 y(or)30 +b("[STDGTI]"\))i(whic)m(h)d(will)f(b)s(e)i(used)f(to)j(select)f(an)f +(extension)g(in)f(the)i(curren)m(t)f(\014le,)g(or)g(a)h(regular)f +(\014lename)0 2844 y(with)f(or)i(without)e(an)i(extension)f(sp)s +(eci\014er)f(whic)m(h)g(in)g(the)i(latter)g(case)g(will)d(mean)i(to)i +(use)e(the)h(\014rst)e(extension)0 2957 y(with)36 b(an)h(extension)f +(name)i("*GTI*".)62 b(Expr)36 b(can)h(b)s(e)g(an)m(y)g(arithmetic)g +(expression,)g(including)d(simply)h(the)0 3070 y(time)g(column)g(name.) +57 b(A)36 b(v)m(ector)h(time)f(expression)e(will)f(pro)s(duce)i(a)h(v)m +(ector)h(b)s(o)s(olean)e(result.)56 b(ST)-8 b(AR)g(TCOL)0 +3183 y(and)27 b(STOPCOL)f(are)i(the)g(names)g(of)g(the)g(ST)-8 +b(AR)g(T/STOP)26 b(columns)h(in)f(the)i(GTI)g(extension.)40 +b(If)27 b(one)h(of)g(them)0 3296 y(is)h(sp)s(eci\014ed,)g(they)i(b)s +(oth)f(m)m(ust)g(b)s(e.)0 3456 y(In)21 b(its)g(simplest)f(form,)k(no)d +(parameters)h(need)g(to)h(b)s(e)e(pro)m(vided)f({)i(default)f(v)-5 +b(alues)21 b(will)f(b)s(e)h(used.)37 b(The)21 b(expression)0 +3569 y("gti\014lter\(\)")31 b(is)f(equiv)-5 b(alen)m(t)29 +b(to)334 3814 y Fe(gtifilter\()45 b("",)i(TIME,)f("*START*",)f +("*STOP*")h(\))0 4059 y Fi(This)30 b(will)e(searc)m(h)k(the)g(curren)m +(t)f(\014le)f(for)h(a)h(GTI)f(extension,)g(\014lter)g(the)g(TIME)g +(column)f(in)g(the)i(curren)m(t)f(table,)0 4172 y(using)i(ST)-8 +b(AR)g(T/STOP)34 b(times)h(tak)m(en)g(from)g(columns)e(in)h(the)h(GTI)g +(extension)f(with)g(names)g(con)m(taining)h(the)0 4284 +y(strings)c("ST)-8 b(AR)g(T")33 b(and)e("STOP".)46 b(The)32 +b(wildcards)d(\('*'\))34 b(allo)m(w)e(sligh)m(t)f(v)-5 +b(ariations)31 b(in)g(naming)g(con)m(v)m(en)m(tions)0 +4397 y(suc)m(h)38 b(as)g("TST)-8 b(AR)g(T")39 b(or)f("ST)-8 +b(AR)g(TTIME".)65 b(The)37 b(same)i(default)f(v)-5 b(alues)37 +b(apply)g(for)h(unsp)s(eci\014ed)e(parame-)0 4510 y(ters)g(when)f(the)h +(\014rst)f(one)i(or)f(t)m(w)m(o)h(parameters)f(are)h(sp)s(eci\014ed.)55 +b(The)36 b(function)e(automatically)i(searc)m(hes)h(for)0 +4623 y(TIMEZER)m(O/I/F)g(k)m(eyw)m(ords)f(in)f(the)i(curren)m(t)f(and)g +(GTI)g(extensions,)h(applying)e(a)h(relativ)m(e)h(time)f(o\013set,)j +(if)0 4736 y(necessary)-8 b(.)0 5024 y Fb(4.9.5)112 b(Spatial)37 +b(Region)g(Filtering)0 5243 y Fi(Another)h(common)g(\014ltering)e +(metho)s(d)h(selects)h(ro)m(ws)g(based)g(on)f(whether)h(the)g(spatial)f +(p)s(osition)e(asso)s(ciated)0 5356 y(with)c(eac)m(h)j(ro)m(w)e(is)g +(lo)s(cated)h(within)d(a)j(giv)m(en)f(2-dimensional)e(region.)47 +b(The)32 b(syn)m(tax)h(for)f(this)g(high-lev)m(el)f(\014lter)0 +5469 y(is)334 5714 y Fe(regfilter\()45 b("regfilename")f([)k(,)f +(Xexpr,)f(Yexpr)h([)g(,)h("wcs)e(cols")h(])g(])g(\))p +eop +%%Page: 34 40 +34 39 bop 0 299 a Fi(34)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(where)22 +b(eac)m(h)i("[]")g(demarks)e(optional)g(parameters.)38 +b(The)22 b(region)g(\014le)g(name)g(is)g(required)f(and)h(m)m(ust)g(b)s +(e)g(enclosed)0 668 y(in)38 b(quotes.)70 b(The)39 b(remaining)f +(parameters)i(are)g(optional.)68 b(The)39 b(region)g(\014le)g(is)g(an)g +(ASCI)s(I)g(text)h(\014le)f(whic)m(h)0 781 y(con)m(tains)30 +b(a)f(list)f(of)i(one)f(or)h(more)f(geometric)i(shap)s(es)d(\(circle,)i +(ellipse,)d(b)s(o)m(x,)j(etc.\))42 b(whic)m(h)28 b(de\014nes)g(a)i +(region)f(on)0 894 y(the)i(celestial)f(sphere)g(or)h(an)g(area)g +(within)d(a)j(particular)f(2D)h(image.)42 b(The)30 b(region)h(\014le)f +(is)f(t)m(ypically)h(generated)0 1007 y(using)21 b(an)i(image)g(displa) +m(y)e(program)i(suc)m(h)f(as)h(fv/PO)m(W)h(\(distribute)c(b)m(y)j(the)g +(HEASAR)m(C\),)g(or)g(ds9)g(\(distributed)0 1120 y(b)m(y)k(the)g +(Smithsonian)d(Astroph)m(ysical)i(Observ)-5 b(atory\).)39 +b(Users)27 b(should)e(refer)h(to)i(the)f(do)s(cumen)m(tation)f(pro)m +(vided)0 1233 y(with)j(these)i(programs)f(for)g(more)h(details)e(on)h +(the)h(syn)m(tax)g(used)e(in)g(the)i(region)f(\014les.)0 +1393 y(In)44 b(its)g(simpliest)e(form,)47 b(\(e.g.,)j +(reg\014lter\("region.reg"\))c(\))f(the)g(co)s(ordinates)f(in)f(the)i +(default)e('X')i(and)f('Y')0 1506 y(columns)32 b(will)e(b)s(e)i(used)g +(to)i(determine)e(if)f(eac)m(h)j(ro)m(w)f(is)f(inside)f(or)i(outside)f +(the)h(area)h(sp)s(eci\014ed)d(in)g(the)i(region)0 1619 +y(\014le.)40 b(Alternate)31 b(p)s(osition)d(column)h(names,)i(or)f +(expressions,)f(ma)m(y)i(b)s(e)f(en)m(tered)h(if)e(needed,)i(as)f(in) +382 1867 y Fe(regfilter\("region.reg",)41 b(XPOS,)47 +b(YPOS\))0 2116 y Fi(Region)36 b(\014ltering)e(can)i(b)s(e)f(applied)e +(most)j(unam)m(biguously)d(if)i(the)h(p)s(ositions)e(in)g(the)i(region) +f(\014le)g(and)g(in)g(the)0 2229 y(table)g(to)h(b)s(e)e(\014ltered)g +(are)i(b)s(oth)e(giv)m(e)i(in)e(terms)h(of)g(absolute)g(celestial)g(co) +s(ordinate)g(units.)53 b(In)35 b(this)f(case)i(the)0 +2342 y(lo)s(cations)24 b(and)f(sizes)h(of)h(the)f(geometric)h(shap)s +(es)f(in)f(the)h(region)g(\014le)f(are)i(sp)s(eci\014ed)e(in)g(angular) +g(units)g(on)h(the)g(sky)0 2455 y(\(e.g.,)32 b(p)s(ositions)c(giv)m(en) +j(in)e(R.A.)h(and)g(Dec.)42 b(and)30 b(sizes)g(in)f(arcseconds)h(or)h +(arcmin)m(utes\).)40 b(Similarly)-8 b(,)27 b(eac)m(h)32 +b(ro)m(w)0 2568 y(of)h(the)h(\014ltered)e(table)h(will)d(ha)m(v)m(e)35 +b(a)e(celestial)g(co)s(ordinate)g(asso)s(ciated)g(with)f(it.)49 +b(This)31 b(asso)s(ciation)i(is)f(usually)0 2681 y(implemen)m(ted)37 +b(using)f(a)j(set)g(of)f(so-called)g('W)-8 b(orld)38 +b(Co)s(ordinate)g(System')g(\(or)h(W)m(CS\))f(FITS)g(k)m(eyw)m(ords)g +(that)0 2794 y(de\014ne)27 b(the)g(co)s(ordinate)g(transformation)g +(that)h(m)m(ust)f(b)s(e)f(applied)f(to)j(the)g(v)-5 b(alues)26 +b(in)g(the)i('X')g(and)e('Y')i(columns)0 2906 y(to)j(calculate)g(the)f +(co)s(ordinate.)0 3067 y(Alternativ)m(ely)-8 b(,)27 b(one)g(can)g(p)s +(erform)e(spatial)h(\014ltering)e(using)h(unitless)g('pixel')g(co)s +(ordinates)i(for)f(the)h(regions)f(and)0 3180 y(ro)m(w)33 +b(p)s(ositions.)47 b(In)33 b(this)f(case)i(the)f(user)g(m)m(ust)g(b)s +(e)f(careful)g(to)i(ensure)f(that)g(the)h(p)s(ositions)d(in)h(the)h(2)g +(\014les)g(are)0 3292 y(self-consisten)m(t.)52 b(A)34 +b(t)m(ypical)g(problem)e(is)h(that)i(the)f(region)g(\014le)f(ma)m(y)i +(b)s(e)e(generated)j(using)c(a)j(binned)c(image,)0 3405 +y(but)h(the)h(un)m(binned)d(co)s(ordinates)i(are)h(giv)m(en)g(in)e(the) +i(ev)m(en)m(t)i(table.)47 b(The)32 b(R)m(OSA)-8 b(T)33 +b(ev)m(en)m(ts)h(\014les,)f(for)f(example,)0 3518 y(ha)m(v)m(e)f(X)f +(and)f(Y)g(pixel)f(co)s(ordinates)h(that)i(range)f(from)f(1)h(-)g +(15360.)42 b(These)30 b(co)s(ordinates)f(are)h(t)m(ypically)e(binned)0 +3631 y(b)m(y)33 b(a)h(factor)g(of)f(32)h(to)g(pro)s(duce)e(a)i(480x480) +i(pixel)31 b(image.)50 b(If)32 b(one)i(then)f(uses)g(a)g(region)g +(\014le)f(generated)i(from)0 3744 y(this)29 b(image)i(\(in)f(image)g +(pixel)f(units\))h(to)h(\014lter)e(the)i(R)m(OSA)-8 b(T)30 +b(ev)m(en)m(ts)i(\014le,)e(then)g(the)h(X)g(and)f(Y)g(column)g(v)-5 +b(alues)0 3857 y(m)m(ust)30 b(b)s(e)g(con)m(v)m(erted)i(to)f(corresp)s +(onding)d(pixel)h(units)g(as)h(in:)382 4106 y Fe +(regfilter\("rosat.reg",)42 b(X/32.+.5,)j(Y/32.+.5\))0 +4354 y Fi(Note)h(that)f(this)e(binning)e(con)m(v)m(ersion)k(is)e(not)i +(necessary)g(if)e(the)i(region)f(\014le)f(is)h(sp)s(eci\014ed)e(using)h +(celestial)0 4467 y(co)s(ordinate)h(units)f(instead)g(of)h(pixel)f +(units)g(b)s(ecause)h(CFITSIO)e(is)i(then)f(able)h(to)h(directly)e +(compare)i(the)0 4580 y(celestial)27 b(co)s(ordinate)h(of)f(eac)m(h)i +(ro)m(w)f(in)e(the)i(table)f(with)g(the)g(celestial)h(co)s(ordinates)f +(in)f(the)i(region)f(\014le)g(without)0 4693 y(ha)m(ving)j(to)h(kno)m +(w)f(an)m(ything)g(ab)s(out)g(ho)m(w)h(the)f(image)h(ma)m(y)g(ha)m(v)m +(e)g(b)s(een)f(binned.)0 4853 y(The)f(last)g("w)m(cs)h(cols")g +(parameter)g(should)d(rarely)h(b)s(e)h(needed.)40 b(If)29 +b(supplied,)d(this)j(string)f(con)m(tains)i(the)f(names)0 +4966 y(of)37 b(the)g(2)h(columns)e(\(space)i(or)f(comma)g(separated\))h +(whic)m(h)e(ha)m(v)m(e)i(the)g(asso)s(ciated)f(W)m(CS)g(k)m(eyw)m +(ords.)61 b(If)37 b(not)0 5079 y(supplied,)d(the)i(\014lter)f(will)f +(scan)i(the)g(X)g(and)f(Y)h(expressions)f(for)h(column)e(names.)58 +b(If)35 b(only)g(one)i(is)e(found)f(in)0 5192 y(eac)m(h)e(expression,)d +(those)i(columns)e(will)f(b)s(e)h(used,)h(otherwise)g(an)g(error)g +(will)e(b)s(e)i(returned.)0 5352 y(These)g(region)g(shap)s(es)g(are)g +(supp)s(orted)f(\(names)h(are)h(case)h(insensitiv)m(e\):)334 +5601 y Fe(Point)428 b(\()48 b(X1,)f(Y1)g(\))715 b(<-)48 +b(One)f(pixel)f(square)g(region)334 5714 y(Line)476 b(\()48 +b(X1,)f(Y1,)g(X2,)f(Y2)i(\))333 b(<-)48 b(One)f(pixel)f(wide)h(region)p +eop +%%Page: 35 41 +35 40 bop 0 299 a Fg(4.9.)72 b(R)m(O)m(W)31 b(FIL)-8 +b(TERING)31 b(SPECIFICA)-8 b(TION)2072 b Fi(35)334 555 +y Fe(Polygon)332 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(...)g(\))95 +b(<-)48 b(Rest)e(are)h(interiors)e(with)334 668 y(Rectangle)236 +b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(A)h(\))334 b(|)47 b(boundaries)e +(considered)334 781 y(Box)524 b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i +(\))143 b(V)47 b(within)f(the)h(region)334 894 y(Diamond)332 +b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i(\))334 1007 +y(Circle)380 b(\()48 b(Xc,)f(Yc,)g(R)g(\))334 1120 y(Annulus)332 +b(\()48 b(Xc,)f(Yc,)g(Rin,)f(Rout)h(\))334 1233 y(Ellipse)332 +b(\()48 b(Xc,)f(Yc,)g(Rx,)f(Ry,)h(A)h(\))334 1346 y(Elliptannulus)c(\() +k(Xc,)f(Yc,)g(Rinx,)f(Riny,)g(Routx,)g(Routy,)g(Ain,)h(Aout)g(\))334 +1458 y(Sector)380 b(\()48 b(Xc,)f(Yc,)g(Amin,)f(Amax)h(\))0 +1732 y Fi(where)28 b(\(Xc,Yc\))j(is)c(the)i(co)s(ordinate)g(of)f(the)h +(shap)s(e's)f(cen)m(ter;)j(\(X#,Y#\))e(are)g(the)g(co)s(ordinates)f(of) +h(the)g(shap)s(e's)0 1845 y(edges;)39 b(Rxxx)c(are)g(the)h(shap)s(es')f +(v)-5 b(arious)34 b(Radii)g(or)h(semima)5 b(jor/minor)34 +b(axes;)k(and)d(Axxx)g(are)h(the)g(angles)f(of)0 1958 +y(rotation)d(\(or)f(b)s(ounding)e(angles)i(for)g(Sector\))h(in)e +(degrees.)44 b(F)-8 b(or)32 b(rotated)h(shap)s(es,)e(the)g(rotation)h +(angle)f(can)h(b)s(e)0 2071 y(left)f(o\013,)i(indicating)c(no)i +(rotation.)45 b(Common)31 b(alternate)h(names)f(for)h(the)f(regions)g +(can)h(also)g(b)s(e)e(used:)43 b(rotb)s(o)m(x)0 2184 +y(=)29 b(b)s(o)m(x;)g(rotrectangle)h(=)f(rectangle;)h(\(rot\)rhom)m +(bus)f(=)f(\(rot\)diamond;)i(and)e(pie)g(=)g(sector.)42 +b(When)28 b(a)i(shap)s(e's)0 2297 y(name)e(is)f(preceded)g(b)m(y)h(a)g +(min)m(us)f(sign,)g('-',)j(the)e(de\014ned)e(region)i(is)f(instead)g +(the)h(area)h(*outside*)f(its)f(b)s(oundary)0 2410 y(\(ie,)35 +b(the)f(region)g(is)f(in)m(v)m(erted\).)52 b(All)32 b(the)i(shap)s(es)f +(within)f(a)i(single)f(region)g(\014le)h(are)g(OR'd)f(together)j(to)e +(create)0 2523 y(the)29 b(region,)h(and)e(the)i(order)f(is)f +(signi\014can)m(t.)39 b(The)29 b(o)m(v)m(erall)g(w)m(a)m(y)i(of)e(lo)s +(oking)f(at)i(region)f(\014les)f(is)g(that)i(if)e(the)i(\014rst)0 +2636 y(region)e(is)g(an)h(excluded)f(region)g(then)g(a)i(dumm)m(y)d +(included)f(region)j(of)g(the)g(whole)f(detector)i(is)e(inserted)f(in)h +(the)0 2749 y(fron)m(t.)40 b(Then)25 b(eac)m(h)j(region)e(sp)s +(eci\014cation)g(as)h(it)f(is)g(pro)s(cessed)g(o)m(v)m(errides)g(an)m +(y)h(selections)g(inside)d(of)j(that)g(region)0 2861 +y(sp)s(eci\014ed)35 b(b)m(y)h(previous)f(regions.)58 +b(Another)37 b(w)m(a)m(y)g(of)g(thinking)d(ab)s(out)i(this)f(is)h(that) +h(if)e(a)i(previous)e(excluded)0 2974 y(region)30 b(is)f(completely)h +(inside)f(of)h(a)h(subsequen)m(t)e(included)f(region)i(the)h(excluded)e +(region)h(is)f(ignored.)0 3135 y(The)44 b(p)s(ositional)f(co)s +(ordinates)i(ma)m(y)g(b)s(e)g(giv)m(en)g(either)f(in)g(pixel)f(units,)k +(decimal)d(degrees)i(or)f(hh:mm:ss.s,)0 3247 y(dd:mm:ss.s)25 +b(units.)37 b(The)26 b(shap)s(e)f(sizes)h(ma)m(y)g(b)s(e)g(giv)m(en)g +(in)e(pixels,)i(degrees,)h(arcmin)m(utes,)g(or)f(arcseconds.)40 +b(Lo)s(ok)0 3360 y(at)31 b(examples)f(of)g(region)g(\014le)g(pro)s +(duced)e(b)m(y)i(fv/PO)m(W)h(or)g(ds9)f(for)g(further)f(details)g(of)i +(the)f(region)g(\014le)f(format.)0 3521 y(There)37 b(are)g(three)g +(functions)f(that)h(are)h(primarily)c(for)i(use)h(with)f(SA)m(O)h +(region)f(\014les)g(and)h(the)g(FSA)m(OI)g(task,)0 3633 +y(but)e(they)h(can)h(b)s(e)e(used)g(directly)-8 b(.)57 +b(They)36 b(return)f(a)h(b)s(o)s(olean)f(true)h(or)g(false)f(dep)s +(ending)f(on)i(whether)f(a)i(t)m(w)m(o)0 3746 y(dimensional)28 +b(p)s(oin)m(t)h(is)g(in)g(the)i(region)f(or)g(not:)191 +4020 y Fe("point)46 b(in)h(a)h(circular)d(region")477 +4133 y(circle\(xcntr,ycntr,radius)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 +4359 y("point)h(in)h(an)g(elliptical)e(region")430 4472 +y(ellipse\(xcntr,ycntr,xhl)o(f_w)o(dth,)o(yhlf)o(_wd)o(th,r)o(otat)o +(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 4698 y("point)h(in)h(a)h +(rectangular)c(region")620 4811 y(box\(xcntr,ycntr,xfll_wdth,)o(yfll)o +(_wd)o(th,r)o(otat)o(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 +5036 y(where)334 5149 y(\(xcntr,ycntr\))g(are)j(the)g(\(x,y\))f +(position)g(of)h(the)g(center)f(of)h(the)g(region)334 +5262 y(\(xhlf_wdth,yhlf_wdth\))42 b(are)47 b(the)g(\(x,y\))f(half)h +(widths)f(of)h(the)g(region)334 5375 y(\(xfll_wdth,yfll_wdth\))42 +b(are)47 b(the)g(\(x,y\))f(full)h(widths)f(of)h(the)g(region)334 +5488 y(\(radius\))f(is)h(half)f(the)h(diameter)f(of)h(the)g(circle)334 +5601 y(\(rotation\))e(is)i(the)g(angle\(degrees\))d(that)j(the)g +(region)f(is)h(rotated)f(with)620 5714 y(respect)g(to)h +(\(xcntr,ycntr\))p eop +%%Page: 36 42 +36 41 bop 0 299 a Fi(36)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)334 555 y +Fe(\(Xcoord,Ycoord\))44 b(are)j(the)g(\(x,y\))f(coordinates)f(to)i +(test,)f(usually)g(column)620 668 y(names)334 781 y(NOTE:)g(each)h +(parameter)e(can)i(itself)f(be)i(an)f(expression,)d(not)j(merely)f(a) +620 894 y(column)h(name)f(or)h(constant.)0 1201 y Fb(4.9.6)112 +b(Example)37 b(Ro)m(w)g(Filters)191 1423 y Fe([)47 b(binary)f(&&)i(mag) +f(<=)g(5.0])380 b(-)48 b(Extract)e(all)h(binary)f(stars)g(brighter)1766 +1536 y(than)94 b(fifth)47 b(magnitude)e(\(note)h(that)1766 +1649 y(the)h(initial)f(space)g(is)h(necessary)e(to)1766 +1762 y(prevent)h(it)h(from)g(being)f(treated)g(as)h(a)1766 +1875 y(binning)f(specification\))191 2101 y([#row)g(>=)h(125)g(&&)h +(#row)e(<=)h(175])142 b(-)48 b(Extract)e(row)h(numbers)e(125)i(through) +f(175)191 2327 y([IMAGE[4,5])f(.gt.)h(100])476 b(-)48 +b(Extract)e(all)h(rows)f(that)h(have)g(the)1766 2439 +y(\(4,5\))f(component)g(of)h(the)g(IMAGE)f(column)1766 +2552 y(greater)g(than)g(100)191 2778 y([abs\(sin\(theta)e(*)j(#deg\)\)) +f(<)i(0.5])e(-)i(Extract)e(all)h(rows)f(having)g(the)1766 +2891 y(absolute)f(value)i(of)g(the)g(sine)g(of)g(theta)1766 +3004 y(less)94 b(than)47 b(a)g(half)g(where)f(the)h(angles)1766 +3117 y(are)g(tabulated)e(in)i(degrees)191 3343 y([SUM\()f(SPEC)h(>)g +(3*BACKGRND)e(\)>=1])94 b(-)48 b(Extract)e(all)h(rows)f(containing)f(a) +1766 3456 y(spectrum,)g(held)i(in)g(vector)f(column)1766 +3569 y(SPEC,)g(with)h(at)g(least)f(one)h(value)g(3)1766 +3681 y(times)f(greater)g(than)h(the)g(background)1766 +3794 y(level)f(held)h(in)g(a)h(keyword,)d(BACKGRND)191 +4020 y([VCOL=={1,4,2}])759 b(-)48 b(Extract)e(all)h(rows)f(whose)h +(vector)f(column)1766 4133 y(VCOL)h(contains)e(the)i(3-elements)e(1,)i +(4,)g(and)1766 4246 y(2.)191 4472 y([@rowFilter.txt])711 +b(-)48 b(Extract)e(rows)g(using)h(the)g(expression)1766 +4585 y(contained)e(within)h(the)h(text)g(file)1766 4698 +y(rowFilter.txt)191 4924 y([gtifilter\(\)])855 b(-)48 +b(Search)e(the)h(current)f(file)g(for)h(a)h(GTI)239 5036 +y(extension,)92 b(filter)i(the)47 b(TIME)239 5149 y(column)f(in)h(the)g +(current)f(table,)g(using)239 5262 y(START/STOP)f(times)h(taken)g(from) +239 5375 y(columns)f(in)j(the)f(GTI)94 b(extension)191 +5601 y([regfilter\("pow.reg"\)])423 b(-)48 b(Extract)e(rows)g(which)h +(have)f(a)i(coordinate)1766 5714 y(\(as)f(given)f(in)h(the)g(X)h(and)f +(Y)g(columns\))p eop +%%Page: 37 43 +37 42 bop 0 299 a Fg(4.10.)113 b(BINNING)31 b(OR)f(HISTOGRAMMING)h +(SPECIFICA)-8 b(TION)1313 b Fi(37)1766 555 y Fe(within)46 +b(the)h(spatial)f(region)g(specified)1766 668 y(in)h(the)g(pow.reg)f +(region)g(file.)191 894 y([regfilter\("pow.reg",)c(Xs,)47 +b(Ys\)])f(-)i(Same)f(as)g(above,)f(except)g(that)h(the)1766 +1007 y(Xs)g(and)g(Ys)g(columns)f(will)h(be)g(used)f(to)1766 +1120 y(determine)f(the)i(coordinate)e(of)i(each)1766 +1233 y(row)g(in)g(the)g(table.)0 1560 y Fd(4.10)180 b(Binning)45 +b(or)g(Histogramming)i(Sp)t(eci\014cation)0 1810 y Fi(The)22 +b(optional)g(binning)e(sp)s(eci\014er)h(is)h(enclosed)h(in)f(square)g +(brac)m(k)m(ets)j(and)d(can)h(b)s(e)f(distinguished)d(from)k(a)g +(general)0 1923 y(ro)m(w)32 b(\014lter)g(sp)s(eci\014cation)f(b)m(y)h +(the)h(fact)g(that)g(it)f(b)s(egins)f(with)g(the)h(k)m(eyw)m(ord)h +('bin')e(not)i(immediately)d(follo)m(w)m(ed)0 2036 y(b)m(y)41 +b(an)f(equals)h(sign.)71 b(When)41 b(binning)c(is)j(sp)s(eci\014ed,)i +(a)f(temp)s(orary)g(N-dimensional)d(FITS)i(primary)f(arra)m(y)0 +2149 y(is)j(created)i(b)m(y)f(computing)g(the)g(histogram)g(of)g(the)g +(v)-5 b(alues)43 b(in)e(the)j(sp)s(eci\014ed)d(columns)h(of)h(a)h(FITS) +e(table)0 2262 y(extension.)e(After)30 b(the)f(histogram)g(is)g +(computed)g(the)h(input)d(FITS)i(\014le)g(con)m(taining)g(the)g(table)h +(is)e(then)h(closed)0 2375 y(and)34 b(the)h(temp)s(orary)f(FITS)g +(primary)f(arra)m(y)i(is)f(op)s(ened)g(and)g(passed)g(to)h(the)g +(application)e(program.)54 b(Th)m(us,)0 2488 y(the)39 +b(application)e(program)i(nev)m(er)g(sees)g(the)g(original)e(FITS)h +(table)h(and)f(only)g(sees)i(the)f(image)g(in)e(the)i(new)0 +2601 y(temp)s(orary)32 b(\014le)g(\(whic)m(h)g(has)g(no)h(additional)d +(extensions\).)48 b(Ob)m(viously)-8 b(,)32 b(the)h(application)e +(program)h(m)m(ust)h(b)s(e)0 2714 y(exp)s(ecting)d(to)h(op)s(en)f(a)h +(FITS)e(image)i(and)f(not)g(a)h(FITS)f(table)g(in)f(this)g(case.)0 +2874 y(The)h(data)h(t)m(yp)s(e)f(of)h(the)f(FITS)g(histogram)f(image)i +(ma)m(y)g(b)s(e)f(sp)s(eci\014ed)e(b)m(y)i(app)s(ending)e('b')i(\(for)h +(8-bit)f(b)m(yte\),)h('i')0 2987 y(\(for)g(16-bit)f(in)m(tegers\),)h +('j')g(\(for)g(32-bit)f(in)m(teger\),)i('r')e(\(for)h(32-bit)f +(\015oating)h(p)s(oin)m(ts\),)e(or)i('d')f(\(for)h(64-bit)f(double)0 +3100 y(precision)c(\015oating)i(p)s(oin)m(t\))g(to)g(the)h('bin')d(k)m +(eyw)m(ord)j(\(e.g.)41 b('[binr)27 b(X]')h(creates)i(a)e(real)g +(\015oating)g(p)s(oin)m(t)f(image\).)40 b(If)0 3212 y(the)26 +b(datat)m(yp)s(e)h(is)e(not)h(explicitly)e(sp)s(eci\014ed)g(then)i(a)g +(32-bit)g(in)m(teger)h(image)f(will)d(b)s(e)i(created)i(b)m(y)f +(default,)h(unless)0 3325 y(the)i(w)m(eigh)m(ting)f(option)g(is)g(also) +h(sp)s(eci\014ed)e(in)g(whic)m(h)h(case)h(the)g(image)g(will)d(ha)m(v)m +(e)k(a)f(32-bit)g(\015oating)g(p)s(oin)m(t)e(data)0 3438 +y(t)m(yp)s(e)k(b)m(y)f(default.)0 3598 y(The)24 b(histogram)f(image)i +(ma)m(y)g(ha)m(v)m(e)g(from)f(1)g(to)h(4)g(dimensions)c(\(axes\),)27 +b(dep)s(ending)22 b(on)i(the)g(n)m(um)m(b)s(er)f(of)h(columns)0 +3711 y(that)31 b(are)g(sp)s(eci\014ed.)39 b(The)30 b(general)g(form)g +(of)g(the)h(binning)c(sp)s(eci\014cation)i(is:)48 3931 +y Fe([bin{bijrd})92 b(Xcol=min:max:binsize,)42 b(Ycol=)47 +b(...,)f(Zcol=...,)f(Tcol=...;)h(weight])0 4152 y Fi(in)38 +b(whic)m(h)g(up)g(to)i(4)g(columns,)g(eac)m(h)g(corresp)s(onding)d(to)j +(an)g(axis)e(of)i(the)f(image,)j(are)e(listed.)65 b(The)39 +b(column)0 4264 y(names)27 b(are)h(case)h(insensitiv)m(e,)d(and)h(the)h +(column)e(n)m(um)m(b)s(er)g(ma)m(y)i(b)s(e)f(giv)m(en)g(instead)g(of)h +(the)g(name,)g(preceded)f(b)m(y)0 4377 y(a)32 b(p)s(ound)e(sign)h +(\(e.g.,)j([bin)c(#4=1:512]\).)47 b(If)31 b(the)h(column)f(name)h(is)e +(not)i(sp)s(eci\014ed,)f(then)g(CFITSIO)g(will)e(\014rst)0 +4490 y(try)37 b(to)h(use)f(the)g('preferred)f(column')h(as)g(sp)s +(eci\014ed)f(b)m(y)h(the)g(CPREF)g(k)m(eyw)m(ord)h(if)e(it)g(exists)h +(\(e.g.,)k('CPREF)0 4603 y(=)i('DETX,DETY'\),)h(otherwise)f(column)f +(names)h('X',)h('Y',)g('Z',)f(and)f('T')i(will)c(b)s(e)i(assumed)h(for) +g(eac)m(h)h(of)0 4716 y(the)37 b(4)h(axes,)i(resp)s(ectiv)m(ely)-8 +b(.)60 b(In)37 b(cases)h(where)e(the)i(column)e(name)h(could)f(b)s(e)g +(confused)h(with)f(an)h(arithmetic)0 4829 y(expression,)29 +b(enclose)i(the)g(column)e(name)h(in)f(paren)m(theses)i(to)g(force)g +(the)f(name)h(to)g(b)s(e)f(in)m(terpreted)f(literally)-8 +b(.)0 4989 y(Eac)m(h)33 b(column)e(name)h(ma)m(y)h(b)s(e)f(follo)m(w)m +(ed)f(b)m(y)i(an)f(equals)f(sign)h(and)f(then)h(the)g(lo)m(w)m(er)h +(and)f(upp)s(er)e(range)i(of)h(the)0 5102 y(histogram,)e(and)f(the)h +(size)g(of)g(the)g(histogram)g(bins,)e(separated)i(b)m(y)g(colons.)42 +b(Spaces)31 b(are)g(allo)m(w)m(ed)g(b)s(efore)g(and)0 +5215 y(after)e(the)g(equals)f(sign)f(but)h(not)h(within)d(the)j +('min:max:binsize')d(string.)39 b(The)29 b(min,)e(max)i(and)f(binsize)f +(v)-5 b(alues)0 5328 y(ma)m(y)32 b(b)s(e)e(in)m(teger)h(or)g +(\015oating)g(p)s(oin)m(t)f(n)m(um)m(b)s(ers,)g(or)h(they)g(ma)m(y)g(b) +s(e)g(the)g(names)g(of)g(k)m(eyw)m(ords)g(in)f(the)h(header)g(of)0 +5441 y(the)g(table.)40 b(If)30 b(the)h(latter,)g(then)f(the)g(v)-5 +b(alue)30 b(of)h(that)g(k)m(eyw)m(ord)f(is)g(substituted)f(in)m(to)h +(the)h(expression.)0 5601 y(Default)36 b(v)-5 b(alues)35 +b(for)h(the)g(min,)g(max)g(and)g(binsize)e(quan)m(tities)h(will)e(b)s +(e)i(used)h(if)e(not)j(explicitly)c(giv)m(en)j(in)f(the)0 +5714 y(binning)27 b(expression)i(as)i(sho)m(wn)f(in)f(these)i +(examples:)p eop +%%Page: 38 44 +38 43 bop 0 299 a Fi(38)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191 555 y +Fe([bin)47 b(x)g(=)g(:512:2])94 b(-)47 b(use)g(default)f(minimum)g +(value)191 668 y([bin)h(x)g(=)g(1::2])190 b(-)47 b(use)g(default)f +(maximum)g(value)191 781 y([bin)h(x)g(=)g(1:512])142 +b(-)47 b(use)g(default)f(bin)h(size)191 894 y([bin)g(x)g(=)g(1:])286 +b(-)47 b(use)g(default)f(maximum)g(value)g(and)h(bin)g(size)191 +1007 y([bin)g(x)g(=)g(:512])190 b(-)47 b(use)g(default)f(minimum)g +(value)g(and)h(bin)g(size)191 1120 y([bin)g(x)g(=)g(2])334 +b(-)47 b(use)g(default)f(minimum)g(and)h(maximum)f(values)191 +1233 y([bin)h(x])524 b(-)47 b(use)g(default)f(minimum,)g(maximum)g(and) +g(bin)h(size)191 1346 y([bin)g(4])524 b(-)47 b(default)f(2-D)h(image,)f +(bin)h(size)g(=)g(4)h(in)f(both)g(axes)191 1458 y([bin])619 +b(-)47 b(default)f(2-D)h(image)0 1713 y Fi(CFITSIO)31 +b(will)f(use)i(the)h(v)-5 b(alue)32 b(of)h(the)g(TLMINn,)f(TLMAXn,)h +(and)f(TDBINn)h(k)m(eyw)m(ords,)h(if)d(they)i(exist,)g(for)0 +1826 y(the)k(default)e(min,)i(max,)h(and)e(binsize,)g(resp)s(ectiv)m +(ely)-8 b(.)59 b(If)36 b(they)h(do)f(not)h(exist)f(then)g(CFITSIO)f +(will)f(use)i(the)0 1939 y(actual)c(minim)m(um)d(and)j(maxim)m(um)f(v) +-5 b(alues)31 b(in)g(the)h(column)e(for)i(the)g(histogram)g(min)e(and)i +(max)g(v)-5 b(alues.)44 b(The)0 2052 y(default)33 b(binsize)e(will)g(b) +s(e)i(set)h(to)h(1,)g(or)e(\(max)h(-)g(min\))e(/)i(10.,)i(whic)m(hev)m +(er)d(is)g(smaller,)g(so)g(that)i(the)e(histogram)0 2165 +y(will)28 b(ha)m(v)m(e)j(at)g(least)g(10)g(bins)e(along)h(eac)m(h)i +(axis.)0 2325 y(A)41 b(shortcut)g(notation)g(is)f(allo)m(w)m(ed)h(if)f +(all)g(the)h(columns/axes)g(ha)m(v)m(e)h(the)f(same)g(binning)d(sp)s +(eci\014cation.)72 b(In)0 2438 y(this)32 b(case)h(all)f(the)h(column)e +(names)i(ma)m(y)g(b)s(e)f(listed)f(within)f(paren)m(theses,)k(follo)m +(w)m(ed)f(b)m(y)f(the)h(\(single\))f(binning)0 2551 y(sp)s +(eci\014cation,)d(as)i(in:)191 2805 y Fe([bin)47 b(\(X,Y\)=1:512:2])191 +2918 y([bin)g(\(X,Y\))f(=)h(5])0 3172 y Fi(The)31 b(optional)g(w)m +(eigh)m(ting)h(factor)g(is)f(the)h(last)f(item)h(in)e(the)i(binning)d +(sp)s(eci\014er)h(and,)i(if)e(presen)m(t,)j(is)d(separated)0 +3285 y(from)38 b(the)g(list)f(of)h(columns)f(b)m(y)h(a)h(semi-colon.)63 +b(As)39 b(the)f(histogram)g(is)f(accum)m(ulated,)k(this)c(w)m(eigh)m(t) +i(is)e(used)0 3398 y(to)e(incremen)m(ted)e(the)h(v)-5 +b(alue)34 b(of)g(the)g(appropriated)e(bin)h(in)f(the)i(histogram.)51 +b(If)34 b(the)g(w)m(eigh)m(ting)g(factor)h(is)e(not)0 +3511 y(sp)s(eci\014ed,)23 b(then)g(the)g(default)f(w)m(eigh)m(t)i(=)e +(1)i(is)e(assumed.)37 b(The)23 b(w)m(eigh)m(ting)g(factor)h(ma)m(y)f(b) +s(e)g(a)g(constan)m(t)i(in)m(teger)e(or)0 3624 y(\015oating)29 +b(p)s(oin)m(t)f(n)m(um)m(b)s(er,)g(or)h(the)g(name)g(of)g(a)g(k)m(eyw)m +(ord)h(con)m(taining)e(the)i(w)m(eigh)m(ting)e(v)-5 b(alue.)40 +b(Or)28 b(the)h(w)m(eigh)m(ting)0 3737 y(factor)g(ma)m(y)g(b)s(e)e(the) +h(name)g(of)h(a)f(table)g(column)f(in)g(whic)m(h)f(case)k(the)e(v)-5 +b(alue)27 b(in)g(that)i(column,)e(on)h(a)h(ro)m(w)f(b)m(y)g(ro)m(w)0 +3850 y(basis,)h(will)f(b)s(e)i(used.)0 4010 y(In)35 b(some)h(cases,)i +(the)d(column)g(or)g(k)m(eyw)m(ord)h(ma)m(y)g(giv)m(e)g(the)g(recipro)s +(cal)e(of)i(the)g(actual)g(w)m(eigh)m(t)g(v)-5 b(alue)35 +b(that)h(is)0 4123 y(needed.)49 b(In)32 b(this)g(case,)j(precede)e(the) +h(w)m(eigh)m(t)f(k)m(eyw)m(ord)h(or)f(column)f(name)h(b)m(y)g(a)g +(slash)f('/')i(to)g(tell)e(CFITSIO)0 4236 y(to)f(use)f(the)h(recipro)s +(cal)e(of)h(the)h(v)-5 b(alue)30 b(when)f(constructing)h(the)h +(histogram.)0 4396 y(F)-8 b(or)35 b(complex)e(or)h(commonly)f(used)g +(histograms,)i(one)f(can)g(also)g(place)g(its)f(description)f(in)m(to)i +(a)g(text)h(\014le)e(and)0 4509 y(imp)s(ort)43 b(it)g(in)m(to)i(the)f +(binning)d(sp)s(eci\014cation)i(using)g(the)i(syn)m(tax)f('[bin)f +(@\014lename.txt]'.)83 b(The)44 b(\014le's)f(con-)0 4622 +y(ten)m(ts)37 b(can)e(extend)h(o)m(v)m(er)h(m)m(ultiple)c(lines,)j +(although)f(it)g(m)m(ust)g(still)f(conform)i(to)g(the)g(no-spaces)g +(rule)e(for)i(the)0 4735 y(min:max:binsize)e(syn)m(tax)k(and)e(eac)m(h) +i(axis)f(sp)s(eci\014cation)f(m)m(ust)h(still)d(b)s(e)j +(comma-separated.)62 b(An)m(y)37 b(lines)e(in)0 4848 +y(the)d(external)g(text)h(\014le)e(that)i(b)s(egin)d(with)h(2)h(slash)f +(c)m(haracters)i(\('//'\))h(will)29 b(b)s(e)j(ignored)f(and)g(ma)m(y)i +(b)s(e)e(used)g(to)0 4961 y(add)f(commen)m(ts)h(in)m(to)f(the)h +(\014le.)0 5121 y(Examples:)191 5375 y Fe([bini)46 b(detx,)h(dety])762 +b(-)47 b(2-D,)g(16-bit)f(integer)g(histogram)1861 5488 +y(of)i(DETX)e(and)h(DETY)g(columns,)e(using)1861 5601 +y(default)h(values)g(for)h(the)g(histogram)1861 5714 +y(range)g(and)g(binsize)p eop +%%Page: 39 45 +39 44 bop 0 299 a Fg(4.10.)113 b(BINNING)31 b(OR)f(HISTOGRAMMING)h +(SPECIFICA)-8 b(TION)1313 b Fi(39)191 668 y Fe([bin)47 +b(\(detx,)f(dety\)=16;)f(/exposure])g(-)i(2-D,)g(32-bit)f(real)h +(histogram)e(of)i(DETX)1861 781 y(and)g(DETY)g(columns)f(with)g(a)i +(bin)f(size)f(=)i(16)1861 894 y(in)g(both)e(axes.)h(The)f(histogram)g +(values)1861 1007 y(are)h(divided)f(by)h(the)g(EXPOSURE)f(keyword)1861 +1120 y(value.)191 1346 y([bin)h(time=TSTART:TSTOP:0.1])280 +b(-)47 b(1-D)g(lightcurve,)e(range)h(determined)f(by)1861 +1458 y(the)i(TSTART)f(and)h(TSTOP)g(keywords,)1861 1571 +y(with)g(0.1)g(unit)g(size)f(bins.)191 1797 y([bin)h(pha,)f +(time=8000.:8100.:0.1])90 b(-)47 b(2-D)g(image)g(using)f(default)g +(binning)1861 1910 y(of)i(the)e(PHA)h(column)f(for)h(the)g(X)h(axis,) +1861 2023 y(and)f(1000)g(bins)g(in)g(the)g(range)1861 +2136 y(8000.)g(to)g(8100.)f(for)h(the)g(Y)h(axis.)191 +2362 y([bin)f(@binFilter.txt])616 b(-)47 b(Use)g(the)g(contents)f(of)h +(the)g(text)f(file)1861 2475 y(binFilter.txt)f(for)h(the)h(binning)1861 +2588 y(specifications.)p eop +%%Page: 40 46 +40 45 bop 0 299 a Fi(40)1618 b Fg(CHAPTER)30 b(4.)112 +b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)p eop +%%Page: 41 47 +41 46 bop 0 1225 a Ff(Chapter)65 b(5)0 1687 y Fl(T)-19 +b(emplate)76 b(Files)0 2180 y Fi(When)38 b(a)h(new)f(FITS)g(\014le)g +(is)g(created)h(with)f(a)g(call)g(to)i(\014ts)p 2101 +2180 28 4 v 32 w(create)p 2369 2180 V 35 w(\014le,)f(the)g(name)g(of)g +(a)g(template)g(\014le)e(ma)m(y)0 2293 y(b)s(e)i(supplied)e(in)i(paren) +m(theses)h(immediately)e(follo)m(wing)g(the)j(name)f(of)g(the)g(new)f +(\014le)g(to)i(b)s(e)e(created.)71 b(This)0 2406 y(template)26 +b(is)e(used)h(to)h(de\014ne)f(the)h(structure)f(of)h(one)f(or)h(more)g +(HDUs)g(in)e(the)i(new)f(\014le.)38 b(The)25 b(template)h(\014le)e(ma)m +(y)0 2518 y(b)s(e)32 b(another)h(FITS)f(\014le,)h(in)f(whic)m(h)f(case) +j(the)f(newly)f(created)i(\014le)e(will)e(ha)m(v)m(e)k(exactly)g(the)f +(same)g(k)m(eyw)m(ords)g(in)0 2631 y(eac)m(h)25 b(HDU)g(as)g(in)e(the)h +(template)h(FITS)e(\014le,)i(but)e(all)h(the)g(data)h(units)d(will)g(b) +s(e)i(\014lled)e(with)g(zeros.)40 b(The)24 b(template)0 +2744 y(\014le)h(ma)m(y)i(also)f(b)s(e)f(an)h(ASCI)s(I)e(text)j(\014le,) +f(where)g(eac)m(h)h(line)d(\(in)h(general\))i(describ)s(es)d(one)i +(FITS)f(k)m(eyw)m(ord)i(record.)0 2857 y(The)j(format)h(of)f(the)h +(ASCI)s(I)e(template)h(\014le)g(is)f(describ)s(ed)f(in)i(the)g(follo)m +(wing)f(sections.)0 3188 y Fd(5.1)135 b(Detailed)47 b(T)-11 +b(emplate)46 b(Line)f(F)-11 b(ormat)0 3438 y Fi(The)30 +b(format)h(of)f(eac)m(h)i(ASCI)s(I)c(template)j(line)e(closely)h(follo) +m(ws)f(the)i(format)g(of)f(a)h(FITS)f(k)m(eyw)m(ord)g(record:)95 +3682 y Fe(KEYWORD)46 b(=)i(KEYVALUE)d(/)j(COMMENT)0 3926 +y Fi(except)22 b(that)g(free)g(format)f(ma)m(y)h(b)s(e)f(used)f +(\(e.g.,)25 b(the)d(equals)e(sign)h(ma)m(y)g(app)s(ear)g(at)h(an)m(y)g +(p)s(osition)d(in)h(the)i(line\))e(and)0 4039 y(T)-8 +b(AB)34 b(c)m(haracters)g(are)g(allo)m(w)m(ed)f(and)g(are)g(treated)h +(the)g(same)f(as)h(space)f(c)m(haracters.)51 b(The)33 +b(KEYV)-10 b(ALUE)33 b(and)0 4152 y(COMMENT)d(\014elds)f(are)i +(optional.)41 b(The)30 b(equals)g(sign)f(c)m(haracter)k(is)c(also)i +(optional,)f(but)g(it)g(is)f(recommended)0 4264 y(that)42 +b(it)e(b)s(e)h(included)d(for)j(clarit)m(y)-8 b(.)73 +b(An)m(y)41 b(template)h(line)d(that)j(b)s(egins)e(with)f(the)j(p)s +(ound)d('#')i(c)m(haracter)i(is)0 4377 y(ignored)29 b(b)m(y)i(the)f +(template)h(parser)f(and)g(ma)m(y)h(b)s(e)e(use)h(to)h(insert)f(commen) +m(ts)h(in)m(to)f(the)h(template)g(\014le)e(itself.)0 +4538 y(The)d(KEYW)m(ORD)g(name)g(\014eld)f(is)g(limited)f(to)j(8)f(c)m +(haracters)h(in)e(length)h(and)f(only)g(the)h(letters)h(A-Z,)f(digits)f +(0-9,)0 4650 y(and)j(the)g(h)m(yphen)f(and)h(underscore)g(c)m +(haracters)h(ma)m(y)g(b)s(e)f(used,)g(without)g(an)m(y)g(em)m(b)s +(edded)g(spaces.)40 b(Lo)m(w)m(ercase)0 4763 y(letters)21 +b(in)f(the)i(template)f(k)m(eyw)m(ord)h(name)f(will)d(b)s(e)j(con)m(v)m +(erted)i(to)f(upp)s(ercase.)36 b(Leading)21 b(spaces)g(in)f(the)i +(template)0 4876 y(line)i(preceding)h(the)g(k)m(eyw)m(ord)h(name)g(are) +g(generally)f(ignored,)h(except)g(if)f(the)h(\014rst)f(8)h(c)m +(haracters)h(of)f(a)g(template)0 4989 y(line)d(are)j(all)e(blank,)h +(then)g(the)g(en)m(tire)g(line)f(is)g(treated)i(as)f(a)h(FITS)e(commen) +m(t)i(k)m(eyw)m(ord)g(\(with)e(a)i(blank)d(k)m(eyw)m(ord)0 +5102 y(name\))31 b(and)f(is)f(copied)h(v)m(erbatim)g(in)m(to)g(the)h +(FITS)e(header.)0 5262 y(The)37 b(KEYV)-10 b(ALUE)37 +b(\014eld)f(ma)m(y)i(ha)m(v)m(e)g(an)m(y)g(allo)m(w)m(ed)f(FITS)g(data) +h(t)m(yp)s(e:)54 b(c)m(haracter)39 b(string,)g(logical,)f(in)m(teger,)0 +5375 y(real,)33 b(complex)f(in)m(teger,)i(or)e(complex)h(real.)46 +b(The)32 b(c)m(haracter)j(string)c(v)-5 b(alues)32 b(need)g(not)h(b)s +(e)f(enclosed)g(in)f(single)0 5488 y(quote)e(c)m(haracters)h(unless)d +(they)h(are)h(necessary)g(to)g(distinguish)24 b(the)29 +b(string)e(from)h(a)h(di\013eren)m(t)f(data)h(t)m(yp)s(e)f(\(e.g.)0 +5601 y(2.0)h(is)d(a)i(real)g(but)f('2.0')i(is)e(a)h(string\).)39 +b(The)27 b(k)m(eyw)m(ord)h(has)f(an)h(unde\014ned)d(\(n)m(ull\))h(v)-5 +b(alue)28 b(if)e(the)i(template)g(record)0 5714 y(only)h(con)m(tains)i +(blanks)e(follo)m(wing)g(the)h("=")h(or)g(b)s(et)m(w)m(een)g(the)f("=") +h(and)f(the)g("/")i(commen)m(t)g(\014eld)c(delimiter.)1905 +5942 y(41)p eop +%%Page: 42 48 +42 47 bop 0 299 a Fi(42)2340 b Fg(CHAPTER)30 b(5.)71 +b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Fi(String)25 b(k)m(eyw)m(ord)i(v)-5 +b(alues)26 b(longer)g(than)g(68)h(c)m(haracters)h(\(the)f(maxim)m(um)e +(length)h(that)h(will)d(\014t)i(in)f(a)i(single)e(FITS)0 +668 y(k)m(eyw)m(ord)41 b(record\))g(are)g(p)s(ermitted)e(using)g(the)i +(CFITSIO)e(long)h(string)g(con)m(v)m(en)m(tion.)73 b(They)40 +b(can)h(either)f(b)s(e)0 781 y(sp)s(eci\014ed)27 b(as)j(a)f(single)f +(long)g(line)g(in)f(the)j(template,)g(or)f(b)m(y)f(using)g(m)m(ultiple) +f(lines)g(where)h(the)i(con)m(tin)m(uing)e(lines)0 894 +y(con)m(tain)j(the)f('CONTINUE')g(k)m(eyw)m(ord,)h(as)g(in)e(this)g +(example:)95 1139 y Fe(LONGKEY)46 b(=)i('This)e(is)h(a)h(long)e(string) +g(value)h(that)f(is)i(contin&')95 1252 y(CONTINUE)94 +b('ued)46 b(over)h(2)g(records')f(/)h(comment)f(field)h(goes)f(here)0 +1497 y Fi(The)29 b(format)h(of)g(template)g(lines)d(with)i(CONTINUE)f +(k)m(eyw)m(ord)i(is)f(v)m(ery)h(strict:)40 b(3)30 b(spaces)g(m)m(ust)f +(follo)m(w)g(CON-)0 1610 y(TINUE)h(and)g(the)g(rest)h(of)f(the)h(line)e +(is)g(copied)h(v)m(erbatim)g(to)h(the)g(FITS)e(\014le.)0 +1771 y(The)i(start)h(of)g(the)f(optional)g(COMMENT)g(\014eld)f(m)m(ust) +i(b)s(e)e(preceded)i(b)m(y)f("/",)i(whic)m(h)d(is)h(used)g(to)h +(separate)g(it)0 1883 y(from)e(the)g(k)m(eyw)m(ord)h(v)-5 +b(alue)29 b(\014eld.)40 b(Exceptions)29 b(are)i(if)e(the)i(KEYW)m(ORD)g +(name)f(\014eld)f(con)m(tains)h(COMMENT,)0 1996 y(HISTOR)-8 +b(Y,)30 b(CONTINUE,)g(or)g(if)f(the)i(\014rst)f(8)g(c)m(haracters)i(of) +f(the)f(template)h(line)e(are)i(blanks.)0 2157 y(More)c(than)f(one)h +(Header-Data)i(Unit)d(\(HDU\))h(ma)m(y)g(b)s(e)f(de\014ned)f(in)g(the)i +(template)g(\014le.)38 b(The)26 b(start)h(of)g(an)f(HDU)0 +2269 y(de\014nition)i(is)h(denoted)i(with)e(a)i(SIMPLE)e(or)i(XTENSION) +e(template)i(line:)0 2430 y(1\))j(SIMPLE)f(b)s(egins)f(a)i(Primary)f +(HDU)h(de\014nition.)48 b(SIMPLE)33 b(ma)m(y)h(only)f(app)s(ear)g(as)h +(the)g(\014rst)f(k)m(eyw)m(ord)h(in)0 2543 y(the)e(template)h(\014le.) +44 b(If)32 b(the)g(template)h(\014le)e(b)s(egins)f(with)h(XTENSION)g +(instead)g(of)h(SIMPLE,)g(then)f(a)i(default)0 2655 y(empt)m(y)d +(Primary)d(HDU)j(is)f(created,)i(and)d(the)i(template)g(is)e(then)h +(assumed)f(to)i(de\014ne)f(the)h(k)m(eyw)m(ords)f(starting)0 +2768 y(with)g(the)i(\014rst)e(extension)h(follo)m(wing)f(the)i(Primary) +e(HDU.)0 2928 y(2\))35 b(XTENSION)e(marks)g(the)i(b)s(eginning)c(of)j +(a)h(new)e(extension)h(HDU)g(de\014nition.)50 b(The)33 +b(previous)g(HDU)i(will)0 3041 y(b)s(e)30 b(closed)g(at)h(this)e(p)s +(oin)m(t)h(and)f(pro)s(cessing)h(of)g(the)h(next)f(extension)g(b)s +(egins.)0 3373 y Fd(5.2)135 b(Auto-indexing)45 b(of)h(Keyw)l(ords)0 +3623 y Fi(If)31 b(a)h(template)f(k)m(eyw)m(ord)h(name)f(ends)g(with)f +(a)h("#")h(c)m(haracter,)i(it)d(is)f(said)g(to)i(b)s(e)f +('auto-indexed'.)43 b(Eac)m(h)32 b("#")0 3736 y(c)m(haracter)i(will)c +(b)s(e)i(replaced)h(b)m(y)f(the)h(curren)m(t)g(in)m(teger)g(index)e(v) +-5 b(alue,)33 b(whic)m(h)f(gets)h(reset)h(=)e(1)h(at)h(the)e(start)i +(of)0 3849 y(eac)m(h)h(new)f(HDU)g(in)f(the)h(\014le)f(\(or)h(7)h(in)d +(the)i(sp)s(ecial)f(case)i(of)f(a)g(GR)m(OUP)h(de\014nition\).)49 +b(The)33 b(FIRST)g(indexed)0 3962 y(k)m(eyw)m(ord)c(in)e(eac)m(h)i +(template)g(HDU)g(de\014nition)d(is)h(used)g(as)i(the)f('incremen)m +(tor';)i(eac)m(h)f(subsequen)m(t)f(o)s(ccurrence)0 4075 +y(of)k(this)e(SAME)h(k)m(eyw)m(ord)h(will)d(cause)j(the)g(index)e(v)-5 +b(alue)31 b(to)h(b)s(e)f(incremen)m(ted.)43 b(This)30 +b(b)s(eha)m(vior)g(can)i(b)s(e)f(rather)0 4188 y(subtle,)c(as)h +(illustrated)e(in)g(the)i(follo)m(wing)e(examples)h(in)f(whic)m(h)h +(the)h(TTYPE)e(k)m(eyw)m(ord)i(is)f(the)h(incremen)m(tor)f(in)0 +4300 y(b)s(oth)j(cases:)95 4546 y Fe(TTYPE#)47 b(=)g(TIME)95 +4659 y(TFORM#)g(=)g(1D)95 4772 y(TTYPE#)g(=)g(RATE)95 +4884 y(TFORM#)g(=)g(1E)0 5130 y Fi(will)23 b(create)28 +b(TTYPE1,)e(TF)m(ORM1,)i(TTYPE2,)f(and)e(TF)m(ORM2)i(k)m(eyw)m(ords.)40 +b(But)26 b(if)f(the)h(template)g(lo)s(oks)f(lik)m(e,)95 +5375 y Fe(TTYPE#)47 b(=)g(TIME)95 5488 y(TTYPE#)g(=)g(RATE)95 +5601 y(TFORM#)g(=)g(1D)95 5714 y(TFORM#)g(=)g(1E)p eop +%%Page: 43 49 +43 48 bop 0 299 a Fg(5.3.)72 b(TEMPLA)-8 b(TE)30 b(P)-8 +b(ARSER)30 b(DIRECTIVES)2073 b Fi(43)0 555 y(this)30 +b(results)f(in)h(a)h(FITS)f(\014les)g(with)f(TTYPE1,)i(TTYPE2,)g(TF)m +(ORM2,)h(and)e(TF)m(ORM2,)i(whic)m(h)e(is)g(probably)0 +668 y(not)h(what)f(w)m(as)h(in)m(tended!)0 1000 y Fd(5.3)135 +b(T)-11 b(emplate)46 b(P)l(arser)g(Directiv)l(es)0 1251 +y Fi(In)29 b(addition)g(to)h(the)g(template)h(lines)d(whic)m(h)h +(de\014ne)g(individual)d(k)m(eyw)m(ords,)k(the)g(template)h(parser)e +(recognizes)0 1363 y(3)h(sp)s(ecial)f(directiv)m(es)g(whic)m(h)g(are)h +(eac)m(h)h(preceded)f(b)m(y)f(the)h(bac)m(kslash)g(c)m(haracter:)90 +b Fe(\\include,)45 b(\\group)p Fi(,)29 b(and)48 1476 +y Fe(\\end)p Fi(.)0 1637 y(The)37 b('include')f(directiv)m(e)i(m)m(ust) +f(b)s(e)h(follo)m(w)m(ed)f(b)m(y)h(a)g(\014lename.)62 +b(It)38 b(forces)g(the)g(parser)f(to)i(temp)s(orarily)d(stop)0 +1749 y(reading)e(the)h(curren)m(t)g(template)g(\014le)f(and)g(b)s(egin) +g(reading)g(the)h(include)d(\014le.)54 b(Once)35 b(the)g(parser)f(reac) +m(hes)i(the)0 1862 y(end)f(of)h(the)g(include)d(\014le)i(it)g(con)m +(tin)m(ues)g(parsing)g(the)g(curren)m(t)h(template)g(\014le.)55 +b(Include)34 b(\014les)h(can)h(b)s(e)f(nested,)0 1975 +y(and)30 b(HDU)h(de\014nitions)d(can)i(span)g(m)m(ultiple)e(template)j +(\014les.)0 2135 y(The)g(start)h(of)g(a)g(GR)m(OUP)h(de\014nition)c(is) +i(denoted)h(with)e(the)i('group')g(directiv)m(e,)f(and)h(the)f(end)h +(of)f(a)i(GR)m(OUP)0 2248 y(de\014nition)i(is)i(denoted)g(with)f(the)i +('end')f(directiv)m(e.)61 b(Eac)m(h)39 b(GR)m(OUP)e(con)m(tains)h(0)g +(or)f(more)h(mem)m(b)s(er)f(blo)s(c)m(ks)0 2361 y(\(HDUs)44 +b(or)f(GR)m(OUPs\).)79 b(Mem)m(b)s(er)42 b(blo)s(c)m(ks)h(of)g(t)m(yp)s +(e)g(GR)m(OUP)g(can)g(con)m(tain)g(their)f(o)m(wn)h(mem)m(b)s(er)f(blo) +s(c)m(ks.)0 2474 y(The)32 b(GR)m(OUP)g(de\014nition)e(itself)h(o)s +(ccupies)h(one)g(FITS)g(\014le)f(HDU)i(of)f(sp)s(ecial)f(t)m(yp)s(e)h +(\(GR)m(OUP)h(HDU\),)h(so)e(if)g(a)0 2587 y(template)f(sp)s(eci\014es)e +(1)i(group)e(with)g(1)i(mem)m(b)s(er)f(HDU)h(lik)m(e:)0 +2838 y Fe(\\group)0 2951 y(grpdescr)46 b(=)h('demo')0 +3064 y(xtension)f(bintable)0 3177 y(#)h(this)g(bintable)f(has)h(0)g +(cols,)f(0)i(rows)0 3290 y(\\end)0 3541 y Fi(then)30 +b(the)h(parser)e(creates)j(a)f(FITS)f(\014le)f(with)g(3)i(HDUs)g(:)0 +3792 y Fe(1\))47 b(dummy)g(PHDU)0 3905 y(2\))g(GROUP)g(HDU)f(\(has)h(1) +h(member,)d(which)i(is)g(bintable)e(in)j(HDU)f(number)f(3\))0 +4018 y(3\))h(bintable)f(\(member)g(of)h(GROUP)f(in)h(HDU)g(number)f +(2\))0 4269 y Fi(T)-8 b(ec)m(hnically)29 b(sp)s(eaking,)g(the)g(GR)m +(OUP)i(HDU)f(is)f(a)h(BINT)-8 b(ABLE)30 b(with)f(6)h(columns.)39 +b(Applications)28 b(can)i(de\014ne)0 4382 y(additional)20 +b(columns)h(in)f(a)j(GR)m(OUP)f(HDU)h(using)e(TF)m(ORMn)g(and)h(TTYPEn) +f(\(where)g(n)h(is)f(7,)j(8,)h(....\))39 b(k)m(eyw)m(ords)0 +4494 y(or)30 b(their)g(auto-indexing)f(equiv)-5 b(alen)m(ts.)0 +4655 y(F)d(or)26 b(a)f(more)g(complicated)f(example)g(of)h(a)h +(template)f(\014le)f(using)f(the)i(group)f(directiv)m(es,)i(lo)s(ok)e +(at)h(the)g(sample.tpl)0 4767 y(\014le)k(that)i(is)f(included)d(in)j +(the)g(CFITSIO)f(distribution.)0 5100 y Fd(5.4)135 b(F)-11 +b(ormal)46 b(T)-11 b(emplate)45 b(Syn)l(tax)0 5350 y +Fi(The)30 b(template)h(syn)m(tax)g(can)f(formally)f(b)s(e)h(de\014ned)f +(as)i(follo)m(ws:)191 5601 y Fe(TEMPLATE)45 b(=)j(BLOCK)e([)i(BLOCK)e +(...)h(])p eop +%%Page: 44 50 +44 49 bop 0 299 a Fi(44)2340 b Fg(CHAPTER)30 b(5.)71 +b(TEMPLA)-8 b(TE)30 b(FILES)334 555 y Fe(BLOCK)46 b(=)i({)f(HDU)g(|)h +(GROUP)e(})334 781 y(GROUP)g(=)i(\\GROUP)e([)h(BLOCK)g(...)g(])g(\\END) +430 1007 y(HDU)f(=)i(XTENSION)d([)j(LINE)f(...)f(])i({)f(XTENSION)f(|)h +(\\GROUP)f(|)i(\\END)f(|)g(EOF)g(})382 1233 y(LINE)f(=)i([)f(KEYWORD)f +([)i(=)f(])h(])f([)g(VALUE)g(])g([)h(/)f(COMMENT)f(])191 +1458 y(X)h(...)238 b(-)48 b(X)f(can)g(be)g(present)f(1)h(or)h(more)e +(times)191 1571 y({)h(X)h(|)f(Y)h(})f(-)h(X)f(or)g(Y)191 +1684 y([)g(X)h(])238 b(-)48 b(X)f(is)g(optional)0 1937 +y Fi(A)m(t)34 b(the)f(topmost)g(lev)m(el,)g(the)g(template)h(de\014nes) +d(1)j(or)e(more)h(template)g(blo)s(c)m(ks.)48 b(Blo)s(c)m(ks)33 +b(can)g(b)s(e)f(either)g(HDU)0 2050 y(\(Header)27 b(Data)h(Unit\))f(or) +f(a)h(GR)m(OUP)-8 b(.)28 b(F)-8 b(or)27 b(eac)m(h)g(blo)s(c)m(k)f(the)h +(parser)f(creates)i(1)f(\(or)g(more)f(for)h(GR)m(OUPs\))g(FITS)0 +2163 y(\014le)i(HDUs.)0 2495 y Fd(5.5)135 b(Errors)0 +2745 y Fi(In)24 b(general)g(the)g(\014ts)p 692 2745 28 +4 v 33 w(execute)p 1019 2745 V 34 w(template\(\))h(function)e(tries)h +(to)h(b)s(e)f(as)g(atomic)h(as)g(p)s(ossible,)e(so)h(either)g(ev)m +(erything)0 2858 y(is)f(done)h(or)g(nothing)e(is)h(done.)39 +b(If)23 b(an)h(error)f(o)s(ccurs)h(during)e(parsing)g(of)i(the)g +(template,)i(\014ts)p 3125 2858 V 33 w(execute)p 3452 +2858 V 34 w(template\(\))0 2971 y(will)i(\(try)j(to\))h(delete)f(the)g +(top)g(lev)m(el)f(BLOCK)g(\(with)g(all)f(its)i(c)m(hildren)d(if)i(an)m +(y\))h(in)f(whic)m(h)f(the)i(error)f(o)s(ccurred,)0 3084 +y(then)g(it)g(will)e(stop)i(reading)g(the)g(template)h(\014le)e(and)h +(it)g(will)e(return)h(with)g(an)h(error.)0 3417 y Fd(5.6)135 +b(Examples)0 3667 y Fi(1.)54 b(This)33 b(template)i(\014le)f(will)e +(create)k(a)f(200)h(x)e(300)i(pixel)d(image,)k(with)c(4-b)m(yte)j(in)m +(teger)f(pixel)e(v)-5 b(alues,)35 b(in)f(the)0 3780 y(primary)28 +b(HDU:)95 4032 y Fe(SIMPLE)47 b(=)g(T)95 4145 y(BITPIX)g(=)g(32)95 +4258 y(NAXIS)g(=)g(2)239 b(/)47 b(number)f(of)h(dimensions)95 +4371 y(NAXIS1)g(=)g(100)95 b(/)47 b(length)f(of)h(first)g(axis)95 +4484 y(NAXIS2)g(=)g(200)95 b(/)47 b(length)f(of)h(second)f(axis)95 +4597 y(OBJECT)h(=)g(NGC)g(253)g(/)g(name)g(of)g(observed)f(object)0 +4850 y Fi(The)35 b(allo)m(w)m(ed)g(v)-5 b(alues)35 b(of)g(BITPIX)g(are) +h(8,)h(16,)h(32,)g(-32,)g(or)d(-64,)j(represen)m(ting,)e(resp)s(ectiv)m +(ely)-8 b(,)37 b(8-bit)e(in)m(teger,)0 4962 y(16-bit)c(in)m(teger,)g +(32-bit)f(in)m(teger,)h(32-bit)g(\015oating)f(p)s(oin)m(t,)g(or)g(64)h +(bit)f(\015oating)g(p)s(oin)m(t)f(pixels.)0 5123 y(2.)39 +b(T)-8 b(o)23 b(create)h(a)f(FITS)e(table,)k(the)d(template)h(\014rst)f +(needs)g(to)i(include)c(XTENSION)i(=)g(T)-8 b(ABLE)23 +b(or)f(BINT)-8 b(ABLE)0 5235 y(to)31 b(de\014ne)e(whether)g(it)g(is)g +(an)g(ASCI)s(I)g(or)g(binary)f(table,)i(and)g(NAXIS2)g(to)g(de\014ne)f +(the)h(n)m(um)m(b)s(er)f(of)h(ro)m(ws)f(in)g(the)0 5348 +y(table.)49 b(Tw)m(o)34 b(template)f(lines)f(are)i(then)f(needed)f(to)i +(de\014ne)f(the)g(name)h(\(TTYPEn\))e(and)h(FITS)g(data)h(format)0 +5461 y(\(TF)m(ORMn\))d(of)f(the)h(columns,)e(as)i(in)e(this)g(example:) +95 5714 y Fe(xtension)46 b(=)h(bintable)p eop +%%Page: 45 51 +45 50 bop 0 299 a Fg(5.6.)72 b(EXAMPLES)3084 b Fi(45)95 +555 y Fe(naxis2)47 b(=)g(40)95 668 y(ttype#)g(=)g(Name)95 +781 y(tform#)g(=)g(10a)95 894 y(ttype#)g(=)g(Npoints)95 +1007 y(tform#)g(=)g(j)95 1120 y(ttype#)g(=)g(Rate)95 +1233 y(tunit#)g(=)g(counts/s)95 1346 y(tform#)g(=)g(e)0 +1605 y Fi(The)26 b(ab)s(o)m(v)m(e)j(example)d(de\014nes)g(a)i(n)m(ull)d +(primary)g(arra)m(y)i(follo)m(w)m(ed)g(b)m(y)g(a)g(40-ro)m(w)h(binary)d +(table)i(extension)g(with)f(3)0 1718 y(columns)h(called)g('Name',)j +('Np)s(oin)m(ts',)e(and)g('Rate',)i(with)d(data)i(formats)f(of)g('10A') +i(\(ASCI)s(I)d(c)m(haracter)i(string\),)0 1831 y('1J')k(\(in)m(teger\)) +h(and)e('1E')i(\(\015oating)e(p)s(oin)m(t\),)h(resp)s(ectiv)m(ely)-8 +b(.)48 b(Note)34 b(that)f(the)g(other)g(required)e(FITS)h(k)m(eyw)m +(ords)0 1944 y(\(BITPIX,)37 b(NAXIS,)g(NAXIS1,)h(PCOUNT,)e(GCOUNT,)h +(TFIELDS,)f(and)g(END\))h(do)g(not)g(need)f(to)h(b)s(e)f(ex-)0 +2057 y(plicitly)f(de\014ned)h(in)h(the)g(template)h(b)s(ecause)g(their) +f(v)-5 b(alues)37 b(can)h(b)s(e)f(inferred)e(from)j(the)f(other)h(k)m +(eyw)m(ords)g(in)0 2170 y(the)d(template.)54 b(This)33 +b(example)i(also)g(illustrates)d(that)k(the)f(templates)g(are)g +(generally)f(case-insensitiv)m(e)g(\(the)0 2283 y(k)m(eyw)m(ord)29 +b(names)g(and)g(TF)m(ORMn)f(v)-5 b(alues)29 b(are)g(con)m(v)m(erted)i +(to)e(upp)s(er-case)g(in)e(the)i(FITS)g(\014le\))f(and)g(that)i(string) +0 2396 y(k)m(eyw)m(ord)h(v)-5 b(alues)30 b(generally)f(do)h(not)h(need) +f(to)h(b)s(e)f(enclosed)g(in)f(quotes.)p eop +%%Page: 46 52 +46 51 bop 0 299 a Fi(46)2340 b Fg(CHAPTER)30 b(5.)71 +b(TEMPLA)-8 b(TE)30 b(FILES)p eop +%%Page: 47 53 +47 52 bop 0 1225 a Ff(Chapter)65 b(6)0 1687 y Fl(FITSIO)76 +b(Con)-6 b(v)g(en)g(tions)76 b(and)h(Guidelines)0 2216 +y Fd(6.1)135 b(CFITSIO)44 b(Size)h(Limitations)0 2476 +y Fi(CFITSIO)31 b(places)h(few)h(restrictions)e(on)i(the)f(size)h(of)f +(FITS)g(\014les)g(that)h(it)f(reads)g(or)h(writes.)46 +b(There)32 b(are)h(a)g(few)0 2589 y(limits,)28 b(ho)m(w)m(ev)m(er,)k +(whic)m(h)d(ma)m(y)i(a\013ect)h(some)f(extreme)g(cases:)0 +2749 y(1.)43 b(The)31 b(maxim)m(um)f(n)m(um)m(b)s(er)g(of)h(FITS)f +(\014les)g(that)i(ma)m(y)g(b)s(e)e(sim)m(ultaneously)f(op)s(ened)i(b)m +(y)g(CFITSIO)e(is)h(set)i(b)m(y)0 2862 y(NMAXFILES)i(as)g(de\014ned)f +(in)g(\014tsio2.h.)51 b(It)34 b(is)f(curren)m(tly)g(set)i(=)f(300)h(b)m +(y)f(default.)51 b(CFITSIO)32 b(will)f(allo)s(cate)0 +2975 y(ab)s(out)i(80)g(*)h(NMAXFILES)f(b)m(ytes)g(of)g(memory)g(for)g +(in)m(ternal)e(use.)48 b(Note)34 b(that)g(the)f(underlying)d(C)i +(compiler)0 3088 y(or)39 b(op)s(erating)g(system,)k(ma)m(y)d(ha)m(v)m +(e)g(a)g(smaller)e(limit)g(on)h(the)h(n)m(um)m(b)s(er)e(of)i(op)s(ened) +e(\014les.)67 b(The)39 b(C)h(sym)m(b)s(olic)0 3201 y(constan)m(t)31 +b(F)m(OPEN)p 690 3201 28 4 v 34 w(MAX)f(is)f(in)m(tended)g(to)i +(de\014ne)e(the)i(maxim)m(um)e(n)m(um)m(b)s(er)f(of)j(\014les)e(that)h +(ma)m(y)h(op)s(en)e(at)i(once)0 3314 y(\(including)d(an)m(y)j(other)g +(text)h(or)f(binary)e(\014les)h(that)i(ma)m(y)f(b)s(e)g(op)s(en,)f(not) +h(just)g(FITS)f(\014les\).)42 b(On)30 b(some)h(systems)0 +3427 y(it)f(has)g(b)s(een)g(found)f(that)i(gcc)g(supp)s(orts)e(a)h +(maxim)m(um)g(of)g(255)i(op)s(ened)e(\014les.)0 3587 +y(Note)d(that)e(op)s(ening)f(and)h(op)s(erating)g(on)g(man)m(y)g(FITS)g +(\014les)f(sim)m(ultaneously)f(in)h(parallel)f(ma)m(y)j(b)s(e)f(less)f +(e\016cien)m(t)0 3700 y(than)k(op)s(erating)g(on)g(smaller)f(groups)h +(of)h(\014les)e(in)g(series.)40 b(CFITSIO)27 b(only)g(has)h(NIOBUF)h(n) +m(um)m(b)s(er)f(of)g(in)m(ternal)0 3813 y(bu\013ers)j(\(set)j(=)e(40)i +(b)m(y)e(default\))h(that)g(are)g(used)f(for)g(temp)s(orary)g(storage)i +(of)f(the)g(most)g(recen)m(t)h(data)f(records)0 3926 +y(that)40 b(ha)m(v)m(e)g(b)s(een)e(read)h(or)g(written)f(in)f(the)i +(FITS)f(\014les.)66 b(If)38 b(the)h(n)m(um)m(b)s(er)f(of)h(op)s(ened)f +(\014les)g(is)g(greater)i(than)0 4039 y(NIOBUF,)j(then)f(CFITSIO)e(ma)m +(y)j(w)m(aste)h(more)e(time)g(\015ushing)d(and)j(re-reading)g(or)g +(re-writing)e(the)j(same)0 4152 y(records)30 b(in)f(the)i(FITS)e +(\014les.)0 4312 y(2.)54 b(By)35 b(default,)g(CFITSIO)e(can)i(handle)f +(FITS)g(\014les)f(up)h(to)h(2.1)h(GB)g(in)d(size)i(\(2**31)i(b)m +(ytes\).)54 b(This)33 b(\014le)h(size)0 4425 y(limit)k(is)i(often)g +(imp)s(osed)f(b)m(y)h(32-bit)h(op)s(erating)e(systems.)71 +b(More)41 b(recen)m(tly)-8 b(,)44 b(as)d(64-bit)f(op)s(erating)g +(systems)0 4538 y(b)s(ecome)33 b(more)g(common,)g(an)g(industry-wide)c +(standard)j(\(at)i(least)e(on)h(Unix)e(systems\))i(has)g(b)s(een)f(dev) +m(elop)s(ed)0 4650 y(to)39 b(supp)s(ort)d(larger)h(sized)h(\014les)f +(\(see)h(h)m(ttp://ftp.sas.com/standards/large.\014le/\).)66 +b(Starting)38 b(with)e(v)m(ersion)0 4763 y(2.1)45 b(of)e(CFITSIO,)f +(larger)h(FITS)g(\014les)f(up)h(to)h(6)g(terab)m(ytes)h(in)d(size)h(ma) +m(y)h(b)s(e)f(read)g(and)g(written)g(on)g(sup-)0 4876 +y(p)s(orted)f(platforms.)75 b(In)42 b(order)g(to)h(supp)s(ort)e(these)h +(larger)g(\014les,)j(CFITSIO)c(m)m(ust)h(b)s(e)g(compiled)f(with)g(the) +0 4989 y('-D)p 129 4989 V 34 w(LAR)m(GEFILE)p 696 4989 +V 33 w(SOUR)m(CE')h(and)g(`-D)p 1491 4989 V 34 w(FILE)p +1736 4989 V 33 w(OFFSET)p 2137 4989 V 32 w(BITS=64')h(compiler)e +(\015ags.)78 b(Some)43 b(platforms)0 5102 y(ma)m(y)c(also)f(require)f +(the)h(`-D)p 1002 5102 V 34 w(LAR)m(GE)p 1358 5102 V +33 w(FILES')g(compiler)f(\015ag.)64 b(This)37 b(causes)h(the)h +(compiler)e(to)i(allo)s(cate)f(8-)0 5215 y(b)m(ytes)44 +b(instead)f(of)h(4-b)m(ytes)h(for)f(the)g(`o\013)p 1473 +5215 V 33 w(t')g(datat)m(yp)s(e)h(whic)m(h)e(is)f(used)h(to)i(store)f +(\014le)f(o\013set)i(p)s(ositions.)79 b(It)0 5328 y(app)s(ears)31 +b(that)i(in)d(most)j(cases)g(it)e(is)g(not)h(necessary)h(to)f(also)g +(include)e(these)i(compiler)f(\015ags)h(when)f(compiling)0 +5441 y(programs)f(that)h(link)d(to)j(the)g(CFITSIO)e(library)-8 +b(.)0 5601 y(If)21 b(CFITSIO)e(is)h(compiled)g(with)g(the)h(-D)p +1386 5601 V 33 w(LAR)m(GEFILE)p 1952 5601 V 34 w(SOUR)m(CE)f(and)g(-D)p +2654 5601 V 34 w(FILE)p 2899 5601 V 33 w(OFFSET)p 3300 +5601 V 32 w(BITS=64)h(\015ags)0 5714 y(on)36 b(a)g(platform)f(that)h +(supp)s(orts)e(large)i(\014les,)h(then)e(it)h(can)g(read)g(and)f(write) +g(FITS)g(\014les)g(that)h(con)m(tain)g(up)f(to)1905 5942 +y(47)p eop +%%Page: 48 54 +48 53 bop 0 299 a Fi(48)1277 b Fg(CHAPTER)29 b(6.)72 +b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y +Fi(2**31)39 b(2880-b)m(yte)g(FITS)d(records,)j(or)d(appro)m(ximately)g +(6)h(terab)m(ytes)h(in)e(size.)59 b(It)37 b(is)f(still)f(required)f +(that)k(the)0 668 y(v)-5 b(alue)29 b(of)g(the)g(NAXISn)f(and)h(PCOUNT)f +(k)m(eyw)m(ords)h(in)f(eac)m(h)i(extension)f(b)s(e)f(within)f(the)i +(range)h(of)f(a)g(signed)f(4-)0 781 y(b)m(yte)d(in)m(teger)g(\(max)g(v) +-5 b(alue)25 b(=)f(2,147,483,648\).)44 b(Th)m(us,)25 +b(eac)m(h)h(dimension)c(of)j(an)f(image)h(\(giv)m(en)g(b)m(y)g(the)g +(NAXISn)0 894 y(k)m(eyw)m(ords\),)32 b(the)f(total)h(width)d(of)i(a)g +(table)g(\(NAXIS1)h(k)m(eyw)m(ord\),)g(the)f(n)m(um)m(b)s(er)f(of)h(ro) +m(ws)g(in)e(a)i(table)g(\(NAXIS2)0 1007 y(k)m(eyw)m(ord\),)d(and)d(the) +h(total)h(size)f(of)g(the)g(v)-5 b(ariable-length)25 +b(arra)m(y)h(heap)g(in)f(binary)f(tables)i(\(PCOUNT)f(k)m(eyw)m(ord\))0 +1120 y(m)m(ust)30 b(b)s(e)g(less)g(than)g(this)f(limit.)0 +1280 y(Curren)m(tly)-8 b(,)30 b(supp)s(ort)f(for)i(large)g(\014les)f +(within)e(CFITSIO)h(has)i(b)s(een)f(tested)i(on)f(the)g(Lin)m(ux,)f +(Solaris,)f(and)h(IBM)0 1393 y(AIX)g(op)s(erating)g(systems.)0 +1750 y Fd(6.2)135 b(Multiple)46 b(Access)e(to)i(the)f(Same)g(FITS)f +(File)0 2005 y Fi(CFITSIO)35 b(supp)s(orts)g(sim)m(ultaneous)g(read)h +(and)g(write)g(access)h(to)h(m)m(ultiple)c(HDUs)j(in)e(the)i(same)g +(FITS)f(\014le.)0 2118 y(Th)m(us,)43 b(one)e(can)h(op)s(en)e(the)h +(same)h(FITS)e(\014le)g(t)m(wice)i(within)c(a)k(single)d(program)i(and) +g(mo)m(v)m(e)h(to)g(2)f(di\013eren)m(t)0 2231 y(HDUs)30 +b(in)e(the)i(\014le,)f(and)g(then)g(read)h(and)e(write)h(data)h(or)g(k) +m(eyw)m(ords)g(to)g(the)g(2)f(extensions)h(just)e(as)i(if)f(one)g(w)m +(ere)0 2344 y(accessing)e(2)g(completely)f(separate)h(FITS)f(\014les.) +38 b(Since)26 b(in)f(general)h(it)g(is)g(not)h(p)s(ossible)d(to)j(ph)m +(ysically)d(op)s(en)i(the)0 2457 y(same)36 b(\014le)f(t)m(wice)h(and)f +(then)g(exp)s(ect)h(to)g(b)s(e)f(able)g(to)i(sim)m(ultaneously)c(\(or)j +(in)e(alternating)h(succession\))h(write)0 2570 y(to)f(2)f(di\013eren)m +(t)g(lo)s(cations)g(in)e(the)j(\014le,)f(CFITSIO)f(recognizes)i(when)e +(the)h(\014le)f(to)i(b)s(e)f(op)s(ened)f(\(in)g(the)i(call)e(to)0 +2683 y(\014ts)p 127 2683 28 4 v 32 w(op)s(en)p 349 2683 +V 33 w(\014le\))28 b(has)g(already)g(b)s(een)g(op)s(ened)g(and)g +(instead)g(of)h(actually)f(op)s(ening)f(the)i(\014le)f(again,)h(just)f +(logically)0 2796 y(links)g(the)j(new)f(\014le)g(to)h(the)g(old)e +(\014le.)41 b(\(This)29 b(only)h(applies)e(if)i(the)h(\014le)e(is)h(op) +s(ened)g(more)g(than)g(once)i(within)c(the)0 2908 y(same)g(program,)g +(and)f(do)s(es)h(not)f(prev)m(en)m(t)i(the)f(same)g(\014le)e(from)h(b)s +(eing)g(sim)m(ultaneously)e(op)s(ened)i(b)m(y)g(more)h(than)0 +3021 y(one)h(program\).)40 b(Then)28 b(b)s(efore)g(CFITSIO)f(reads)h +(or)h(writes)f(to)h(either)f(\(logical\))h(\014le,)f(it)g(mak)m(es)i +(sure)d(that)j(an)m(y)0 3134 y(mo)s(di\014cations)g(made)h(to)h(the)g +(other)g(\014le)e(ha)m(v)m(e)j(b)s(een)e(completely)g(\015ushed)e(from) +i(the)h(in)m(ternal)e(bu\013ers)h(to)h(the)0 3247 y(\014le.)43 +b(Th)m(us,)30 b(in)g(principle,)f(one)i(could)f(op)s(en)h(a)h(\014le)e +(t)m(wice,)i(in)e(one)i(case)g(p)s(oin)m(ting)e(to)i(the)f(\014rst)g +(extension)g(and)0 3360 y(in)i(the)i(other)g(p)s(oin)m(ting)d(to)k(the) +e(2nd)g(extension)h(and)e(then)i(write)e(data)j(to)f(b)s(oth)f +(extensions,)h(in)e(an)m(y)i(order,)0 3473 y(without)24 +b(danger)i(of)f(corrupting)g(the)g(\014le,)h(There)f(ma)m(y)h(b)s(e)f +(some)h(e\016ciency)f(p)s(enalties)f(in)g(doing)h(this)f(ho)m(w)m(ev)m +(er,)0 3586 y(since)j(CFITSIO)g(has)h(to)h(\015ush)d(all)h(the)h(in)m +(ternal)f(bu\013ers)g(related)h(to)h(one)f(\014le)f(b)s(efore)h(switc)m +(hing)e(to)j(the)f(other,)0 3699 y(so)i(it)g(w)m(ould)f(still)f(b)s(e)i +(pruden)m(t)f(to)i(minimize)d(the)i(n)m(um)m(b)s(er)f(of)i(times)e(one) +i(switc)m(hes)f(bac)m(k)h(and)e(forth)h(b)s(et)m(w)m(een)0 +3812 y(doing)f(I/O)i(to)g(di\013eren)m(t)f(HDUs)h(in)e(the)h(same)h +(\014le.)0 4169 y Fd(6.3)135 b(Curren)l(t)46 b(Header)f(Data)h(Unit)g +(\(CHDU\))0 4424 y Fi(In)32 b(general,)i(a)g(FITS)e(\014le)h(can)g(con) +m(tain)g(m)m(ultiple)e(Header)j(Data)h(Units,)e(also)g(called)f +(extensions.)48 b(CFITSIO)0 4537 y(only)37 b(op)s(erates)i(within)d +(one)i(HDU)h(at)g(an)m(y)g(giv)m(en)f(time,)i(and)e(the)g(curren)m(tly) +f(selected)i(HDU)g(is)e(called)h(the)0 4650 y(Curren)m(t)h(Header)h +(Data)h(Unit)e(\(CHDU\).)i(When)f(a)g(FITS)f(\014le)g(is)f(\014rst)h +(created)i(or)f(op)s(ened)f(the)h(CHDU)g(is)0 4763 y(automatically)25 +b(de\014ned)e(to)j(b)s(e)e(the)h(\014rst)f(HDU)i(\(i.e.,)g(the)f +(primary)e(arra)m(y\).)40 b(CFITSIO)23 b(routines)h(are)h(pro)m(vided)0 +4876 y(to)36 b(mo)m(v)m(e)h(to)g(and)e(op)s(en)g(an)m(y)h(other)g +(existing)e(HDU)j(within)c(the)j(FITS)f(\014le)f(or)i(to)g(app)s(end)e +(or)i(insert)e(a)i(new)0 4989 y(HDU)31 b(in)e(the)i(FITS)e(\014le)h +(whic)m(h)f(then)h(b)s(ecomes)h(the)f(CHDU.)0 5346 y +Fd(6.4)135 b(Subroutine)45 b(Names)0 5601 y Fi(All)24 +b(FITSIO)h(subroutine)f(names)i(b)s(egin)e(with)h(the)h(letters)g('ft') +g(to)h(distinguish)22 b(them)k(from)f(other)h(subroutines)0 +5714 y(and)34 b(are)h(5)g(or)f(6)h(c)m(haracters)h(long.)53 +b(Users)34 b(should)f(not)h(name)h(their)f(o)m(wn)g(subroutines)e(b)s +(eginning)g(with)h('ft')p eop +%%Page: 49 55 +49 54 bop 0 299 a Fg(6.5.)72 b(SUBR)m(OUTINE)30 b(F)-10 +b(AMILIES)30 b(AND)h(D)m(A)-8 b(T)g(A)g(TYPES)1697 b +Fi(49)0 555 y(to)32 b(a)m(v)m(oid)h(con\015icts.)44 b(\(The)32 +b(SPP)f(in)m(terface)h(routines)e(all)h(b)s(egin)f(with)h('fs'\).)45 +b(Subroutines)29 b(whic)m(h)h(read)i(or)g(get)0 668 y(information)c +(from)i(the)h(FITS)e(\014le)g(ha)m(v)m(e)j(names)e(b)s(eginning)d(with) +i('ftg...'.)43 b(Subroutines)27 b(whic)m(h)i(write)g(or)i(put)0 +781 y(information)e(in)m(to)h(the)h(FITS)e(\014le)h(ha)m(v)m(e)h(names) +g(b)s(eginning)c(with)i('ftp...'.)0 1274 y Fd(6.5)135 +b(Subroutine)45 b(F)-11 b(amilies)46 b(and)f(Datat)l(yp)t(es)0 +1556 y Fi(Man)m(y)h(of)g(the)g(subroutines)d(come)k(in)d(families)f +(whic)m(h)i(di\013er)f(only)h(in)f(the)i(datat)m(yp)s(e)g(of)g(the)f +(asso)s(ciated)0 1669 y(parameter\(s\))34 b(.)47 b(The)32 +b(datat)m(yp)s(e)i(of)f(these)g(subroutines)d(is)i(indicated)f(b)m(y)i +(the)g(last)f(letter)h(of)g(the)g(subroutine)0 1781 y(name)d(\(e.g.,)j +('j')d(in)f('ftpkyj'\))i(as)f(follo)m(ws:)382 2176 y +Fe(x)47 b(-)h(bit)382 2289 y(b)f(-)h(character*1)c(\(unsigned)i(byte\)) +382 2402 y(i)h(-)h(short)e(integer)g(\(I*2\))382 2515 +y(j)h(-)h(integer)e(\(I*4\))382 2628 y(e)h(-)h(real)e(exponential)f +(floating)h(point)g(\(R*4\))382 2741 y(f)h(-)h(real)e(fixed-format)f +(floating)g(point)i(\(R*4\))382 2854 y(d)g(-)h(double)e(precision)f +(real)i(floating-point)d(\(R*8\))382 2967 y(g)j(-)h(double)e(precision) +f(fixed-format)g(floating)g(point)h(\(R*8\))382 3079 +y(c)h(-)h(complex)e(reals)g(\(pairs)g(of)h(R*4)g(values\))382 +3192 y(m)g(-)h(double)e(precision)f(complex)h(\(pairs)g(of)h(R*8)g +(values\))382 3305 y(l)g(-)h(logical)e(\(L*4\))382 3418 +y(s)h(-)h(character)d(string)0 3813 y Fi(When)23 b(dealing)f(with)g +(the)h(FITS)g(b)m(yte)g(datat)m(yp)s(e,)j(it)d(is)f(imp)s(ortan)m(t)h +(to)g(remem)m(b)s(er)g(that)h(the)f(ra)m(w)g(v)-5 b(alues)23 +b(\(b)s(efore)0 3926 y(an)m(y)i(scaling)e(b)m(y)h(the)h(BSCALE)e(and)h +(BZER)m(O,)g(or)h(TSCALn)d(and)i(TZER)m(On)f(k)m(eyw)m(ord)i(v)-5 +b(alues\))24 b(in)f(b)m(yte)i(arra)m(ys)0 4039 y(\(BITPIX)37 +b(=)f(8\))h(or)f(b)m(yte)i(columns)d(\(TF)m(ORMn)i(=)f('B'\))h(are)g +(in)m(terpreted)f(as)h(unsigned)d(b)m(ytes)j(with)f(v)-5 +b(alues)0 4152 y(ranging)39 b(from)g(0)i(to)f(255.)71 +b(Some)40 b(F)-8 b(ortran)40 b(compilers)f(supp)s(ort)f(a)i +(non-standard)f(b)m(yte)h(datat)m(yp)s(e)h(suc)m(h)f(as)0 +4264 y(INTEGER*1,)34 b(LOGICAL*1,)g(or)f(BYTE,)g(whic)m(h)e(can)i +(sometimes)g(b)s(e)f(used)g(instead)g(of)h(CHARA)m(CTER*1)0 +4377 y(v)-5 b(ariables.)37 b(Man)m(y)23 b(mac)m(hines)f(p)s(ermit)g +(passing)f(a)i(n)m(umeric)f(datat)m(yp)s(e)h(\(suc)m(h)g(as)g +(INTEGER*1\))h(to)f(the)g(FITSIO)0 4490 y(subroutines)40 +b(whic)m(h)i(are)h(exp)s(ecting)f(a)h(CHARA)m(CTER*1)h(datat)m(yp)s(e,) +j(but)42 b(this)f(tec)m(hnically)h(violates)h(the)0 4603 +y(F)-8 b(ortran-77)29 b(standard)d(and)g(is)g(not)h(supp)s(orted)e(on)i +(all)f(mac)m(hines)g(\(e.g.,)k(on)c(a)i(V)-10 b(AX/VMS)27 +b(mac)m(hine)g(one)g(m)m(ust)0 4716 y(use)j(the)h(V)-10 +b(AX-sp)s(eci\014c)30 b(\045DESCR)f(function\).)0 4876 +y(One)22 b(feature)h(of)g(the)g(CFITSIO)e(routines)h(is)f(that)j(they)f +(can)g(op)s(erate)g(on)f(a)h(`X')h(\(bit\))e(column)g(in)f(a)i(binary)e +(table)0 4989 y(as)35 b(though)e(it)h(w)m(ere)h(a)g(`B')g(\(b)m(yte\))g +(column.)52 b(F)-8 b(or)35 b(example)f(a)g(`11X')i(datat)m(yp)s(e)f +(column)e(can)i(b)s(e)f(in)m(terpreted)0 5102 y(the)28 +b(same)h(as)f(a)g(`2B')i(column)d(\(i.e.,)i(2)f(unsigned)e(8-bit)i(b)m +(ytes\).)41 b(In)27 b(some)i(instances,)f(it)f(can)i(b)s(e)e(more)h +(e\016cien)m(t)0 5215 y(to)j(read)f(and)g(write)g(whole)f(b)m(ytes)i +(at)g(a)g(time,)f(rather)h(than)f(reading)f(or)i(writing)d(eac)m(h)k +(individual)25 b(bit.)0 5375 y(The)41 b(double)g(precision)f(complex)h +(datat)m(yp)s(e)i(is)e(not)h(a)g(standard)f(F)-8 b(ortran-77)43 +b(datat)m(yp)s(e.)76 b(If)41 b(a)i(particular)0 5488 +y(F)-8 b(ortran)35 b(compiler)e(do)s(es)h(not)h(directly)e(supp)s(ort)g +(this)h(datat)m(yp)s(e,)i(then)f(one)f(ma)m(y)h(instead)f(pass)g(an)h +(arra)m(y)g(of)0 5601 y(pairs)c(of)i(double)e(precision)g(v)-5 +b(alues)31 b(to)j(these)f(subroutines.)44 b(The)33 b(\014rst)e(v)-5 +b(alue)32 b(in)f(eac)m(h)j(pair)d(is)h(the)h(real)f(part,)0 +5714 y(and)e(the)g(second)h(is)e(the)i(imaginary)e(part.)p +eop +%%Page: 50 56 +50 55 bop 0 299 a Fi(50)1277 b Fg(CHAPTER)29 b(6.)72 +b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y +Fd(6.6)135 b(Implicit)46 b(Data)g(T)l(yp)t(e)f(Con)l(v)l(ersion)0 +816 y Fi(The)22 b(FITSIO)g(routines)g(that)i(read)e(and)h(write)f(n)m +(umerical)f(data)j(can)f(p)s(erform)f(implicit)e(data)j(t)m(yp)s(e)g +(con)m(v)m(ersion.)0 929 y(This)h(means)h(that)h(the)g(data)g(t)m(yp)s +(e)g(of)g(the)g(v)-5 b(ariable)24 b(or)i(arra)m(y)g(in)e(the)i(program) +f(do)s(es)g(not)h(need)g(to)g(b)s(e)f(the)h(same)0 1042 +y(as)i(the)f(data)h(t)m(yp)s(e)g(of)f(the)h(v)-5 b(alue)27 +b(in)f(the)h(FITS)g(\014le.)39 b(Data)28 b(t)m(yp)s(e)g(con)m(v)m +(ersion)g(is)e(supp)s(orted)g(for)h(n)m(umerical)f(and)0 +1155 y(string)32 b(data)i(t)m(yp)s(es)f(\(if)g(the)h(string)e(con)m +(tains)h(a)h(v)-5 b(alid)31 b(n)m(um)m(b)s(er)h(enclosed)h(in)f +(quotes\))i(when)f(reading)f(a)i(FITS)0 1268 y(header)d(k)m(eyw)m(ord)g +(v)-5 b(alue)30 b(and)h(for)f(n)m(umeric)g(v)-5 b(alues)30 +b(when)g(reading)g(or)h(writing)e(v)-5 b(alues)30 b(in)f(the)i(primary) +e(arra)m(y)0 1381 y(or)40 b(a)h(table)g(column.)69 b(CFITSIO)39 +b(returns)h(status)g(=)h(NUM)p 2185 1381 28 4 v 33 w(O)m(VERFLO)m(W)g +(if)f(the)g(con)m(v)m(erted)i(data)f(v)-5 b(alue)0 1493 +y(exceeds)33 b(the)g(range)g(of)g(the)f(output)g(data)i(t)m(yp)s(e.)47 +b(Implicit)30 b(data)j(t)m(yp)s(e)g(con)m(v)m(ersion)g(is)e(not)i(supp) +s(orted)d(within)0 1606 y(binary)f(tables)h(for)g(string,)f(logical,)i +(complex,)f(or)g(double)f(complex)h(data)h(t)m(yp)s(es.)0 +1767 y(In)g(addition,)f(an)m(y)h(table)g(column)f(ma)m(y)i(b)s(e)f +(read)g(as)h(if)e(it)h(con)m(tained)g(string)f(v)-5 b(alues.)43 +b(In)31 b(the)g(case)i(of)e(n)m(umeric)0 1879 y(columns)e(the)i +(returned)e(string)g(will)f(b)s(e)i(formatted)h(using)d(the)j(TDISPn)e +(displa)m(y)g(format)h(if)g(it)g(exists.)0 2266 y Fd(6.7)135 +b(Data)46 b(Scaling)0 2527 y Fi(When)38 b(reading)e(n)m(umerical)h +(data)h(v)-5 b(alues)37 b(in)f(the)i(primary)e(arra)m(y)i(or)g(a)g +(table)g(column,)h(the)e(v)-5 b(alues)37 b(will)f(b)s(e)0 +2640 y(scaled)h(automatically)h(b)m(y)f(the)h(BSCALE)f(and)g(BZER)m(O)h +(\(or)g(TSCALn)d(and)i(TZER)m(On\))g(header)g(k)m(eyw)m(ord)0 +2753 y(v)-5 b(alues)32 b(if)f(they)h(are)h(presen)m(t)g(in)e(the)h +(header.)47 b(The)31 b(scaled)i(data)g(that)g(is)e(returned)g(to)i(the) +g(reading)e(program)0 2866 y(will)d(ha)m(v)m(e)382 3171 +y Fe(output)46 b(value)g(=)i(\(FITS)e(value\))g(*)i(BSCALE)e(+)h(BZERO) +0 3476 y Fi(\(a)30 b(corresp)s(onding)d(form)m(ula)h(using)g(TSCALn)f +(and)i(TZER)m(On)e(is)h(used)h(when)f(reading)g(from)h(table)g +(columns\).)0 3589 y(In)i(the)i(case)g(of)f(in)m(teger)g(output)g(v)-5 +b(alues)31 b(the)i(\015oating)f(p)s(oin)m(t)f(scaled)g(v)-5 +b(alue)32 b(is)f(truncated)h(to)h(an)f(in)m(teger)g(\(not)0 +3702 y(rounded)38 b(to)i(the)g(nearest)g(in)m(teger\).)69 +b(The)39 b(ftpscl)f(and)h(fttscl)h(subroutines)d(ma)m(y)j(b)s(e)f(used) +g(to)h(o)m(v)m(erride)g(the)0 3815 y(scaling)28 b(parameters)h +(de\014ned)e(in)g(the)i(header)f(\(e.g.,)j(to)e(turn)f(o\013)h(the)f +(scaling)g(so)h(that)g(the)g(program)f(can)h(read)0 3928 +y(the)i(ra)m(w)f(unscaled)f(v)-5 b(alues)30 b(from)g(the)g(FITS)g +(\014le\).)0 4088 y(When)44 b(writing)f(n)m(umerical)g(data)i(to)g(the) +g(primary)e(arra)m(y)i(or)f(to)h(a)g(table)g(column)e(the)i(data)g(v)-5 +b(alues)44 b(will)0 4201 y(generally)27 b(b)s(e)h(automatically)g(in)m +(v)m(ersely)g(scaled)g(b)m(y)g(the)g(v)-5 b(alue)28 b(of)g(the)h +(BSCALE)e(and)h(BZER)m(O)g(\(or)h(TSCALn)0 4314 y(and)h(TZER)m(On\))g +(header)g(k)m(eyw)m(ord)h(v)-5 b(alues)30 b(if)g(they)h(they)g(exist)f +(in)f(the)i(header.)42 b(These)30 b(k)m(eyw)m(ords)h(m)m(ust)g(ha)m(v)m +(e)0 4426 y(b)s(een)f(written)g(to)i(the)g(header)e(b)s(efore)h(an)m(y) +h(data)f(is)f(written)h(for)f(them)i(to)f(ha)m(v)m(e)i(an)m(y)e +(e\013ect.)44 b(Otherwise,)31 b(one)0 4539 y(ma)m(y)j(use)f(the)g +(ftpscl)f(and)h(fttscl)g(subroutines)d(to)k(de\014ne)f(or)g(o)m(v)m +(erride)g(the)g(scaling)g(k)m(eyw)m(ords)g(in)f(the)h(header)0 +4652 y(\(e.g.,)h(to)f(turn)d(o\013)j(the)f(scaling)f(so)h(that)g(the)g +(program)g(can)g(write)f(the)h(ra)m(w)g(unscaled)f(v)-5 +b(alues)31 b(in)m(to)h(the)g(FITS)0 4765 y(\014le\).)42 +b(If)30 b(scaling)g(is)g(p)s(erformed,)f(the)i(in)m(v)m(erse)g(scaled)g +(output)f(v)-5 b(alue)31 b(that)g(is)f(written)g(in)m(to)h(the)g(FITS)f +(\014le)g(will)0 4878 y(ha)m(v)m(e)430 5183 y Fe(FITS)46 +b(value)h(=)g(\(\(input)f(value\))g(-)h(BZERO\))f(/)i(BSCALE)0 +5488 y Fi(\(a)39 b(corresp)s(onding)c(form)m(ula)i(using)g(TSCALn)f +(and)h(TZER)m(On)g(is)g(used)g(when)f(writing)g(to)j(table)f +(columns\).)0 5601 y(Rounding)18 b(to)j(the)g(nearest)g(in)m(teger,)h +(rather)f(than)f(truncation,)i(is)d(p)s(erformed)g(when)g(writing)f(in) +m(teger)j(datat)m(yp)s(es)0 5714 y(to)31 b(the)g(FITS)e(\014le.)p +eop +%%Page: 51 57 +51 56 bop 0 299 a Fg(6.8.)72 b(ERR)m(OR)30 b(ST)-8 b(A)g(TUS)30 +b(V)-10 b(ALUES)30 b(AND)h(THE)f(ERR)m(OR)g(MESSA)m(GE)h(ST)-8 +b(A)m(CK)848 b Fi(51)0 555 y Fd(6.8)135 b(Error)46 b(Status)f(V)-11 +b(alues)45 b(and)g(the)g(Error)g(Message)h(Stac)l(k)0 +809 y Fi(The)33 b(last)h(parameter)g(in)f(nearly)g(ev)m(ery)h(FITSIO)f +(subroutine)f(is)h(the)h(error)f(status)h(v)-5 b(alue)34 +b(whic)m(h)e(is)h(b)s(oth)g(an)0 922 y(input)i(and)g(an)i(output)f +(parameter.)60 b(A)36 b(returned)f(p)s(ositiv)m(e)h(v)-5 +b(alue)36 b(for)g(this)g(parameter)h(indicates)e(an)h(error)0 +1035 y(w)m(as)31 b(detected.)42 b(A)30 b(listing)e(of)j(all)e(the)i +(FITSIO)e(status)i(co)s(de)f(v)-5 b(alues)30 b(is)f(giv)m(en)i(at)g +(the)f(end)g(of)h(this)e(do)s(cumen)m(t.)0 1195 y(The)22 +b(FITSIO)g(library)e(uses)j(an)f(`inherited)f(status')i(con)m(v)m(en)m +(tion)h(for)f(the)g(status)g(parameter)g(whic)m(h)f(means)g(that)0 +1308 y(if)h(a)i(subroutine)e(is)g(called)h(with)f(a)i(p)s(ositiv)m(e)e +(input)g(v)-5 b(alue)24 b(of)h(the)f(status)h(parameter,)h(then)f(the)f +(subroutine)f(will)0 1421 y(exit)i(immediately)d(without)i(c)m(hanging) +h(the)f(v)-5 b(alue)24 b(of)h(the)g(status)g(parameter.)39 +b(Th)m(us,)25 b(if)f(one)g(passes)h(the)g(status)0 1533 +y(v)-5 b(alue)30 b(returned)f(from)h(eac)m(h)i(FITSIO)d(routine)g(as)i +(input)e(to)i(the)f(next)h(FITSIO)e(subroutine,)g(then)h(whenev)m(er)0 +1646 y(an)39 b(error)g(is)g(detected)h(all)f(further)f(FITSIO)g(pro)s +(cessing)g(will)f(cease.)69 b(This)38 b(con)m(v)m(en)m(tion)i(can)g +(simplify)c(the)0 1759 y(error)30 b(c)m(hec)m(king)i(in)d(application)g +(programs)i(b)s(ecause)g(it)f(is)g(not)h(necessary)g(to)g(c)m(hec)m(k)i +(the)e(v)-5 b(alue)30 b(of)h(the)g(status)0 1872 y(parameter)j(after)g +(ev)m(ery)g(single)f(FITSIO)f(subroutine)f(call.)50 b(If)33 +b(a)h(program)f(con)m(tains)h(a)g(sequence)g(of)g(sev)m(eral)0 +1985 y(FITSIO)23 b(calls,)h(one)g(can)g(just)g(c)m(hec)m(k)h(the)f +(status)g(v)-5 b(alue)23 b(after)i(the)f(last)f(call.)38 +b(Since)23 b(the)h(returned)e(status)j(v)-5 b(alues)0 +2098 y(are)36 b(generally)f(distinctiv)m(e,)h(it)f(should)f(b)s(e)h(p)s +(ossible)e(to)j(determine)f(whic)m(h)f(subroutine)g(originally)f +(returned)0 2211 y(the)e(error)f(status.)0 2371 y(FITSIO)i(also)h(main) +m(tains)e(an)i(in)m(ternal)f(stac)m(k)i(of)f(error)g(messages)h(\(80-c) +m(haracter)i(maxim)m(um)c(length\))g(whic)m(h)0 2484 +y(in)j(man)m(y)h(cases)h(pro)m(vide)e(a)h(more)g(detailed)g +(explanation)f(of)h(the)g(cause)h(of)f(the)g(error)g(than)f(is)g(pro)m +(vided)g(b)m(y)0 2597 y(the)40 b(error)e(status)i(n)m(um)m(b)s(er)e +(alone.)68 b(It)39 b(is)g(recommended)g(that)g(the)h(error)f(message)h +(stac)m(k)h(b)s(e)e(prin)m(ted)f(out)0 2710 y(whenev)m(er)31 +b(a)h(program)g(detects)g(a)g(FITSIO)e(error.)44 b(T)-8 +b(o)32 b(do)f(this,)g(call)g(the)h(FTGMSG)g(routine)e(rep)s(eatedly)h +(to)0 2823 y(get)i(the)g(successiv)m(e)f(messages)i(on)e(the)g(stac)m +(k.)48 b(When)32 b(the)h(stac)m(k)g(is)f(empt)m(y)g(FTGMSG)h(will)d +(return)h(a)h(blank)0 2936 y(string.)40 b(Note)31 b(that)g(this)e(is)g +(a)h(`First)g(In)f({)i(First)e(Out')h(stac)m(k,)i(so)e(the)h(oldest)f +(error)f(message)j(is)d(returned)g(\014rst)0 3049 y(b)m(y)h(ftgmsg.)0 +3399 y Fd(6.9)135 b(V)-11 b(ariable-Length)46 b(Arra)l(y)f(F)-11 +b(acilit)l(y)46 b(in)f(Binary)g(T)-11 b(ables)0 3653 +y Fi(FITSIO)38 b(pro)m(vides)h(easy-to-use)i(supp)s(ort)d(for)h +(reading)f(and)h(writing)f(data)i(in)e(v)-5 b(ariable)38 +b(length)h(\014elds)f(of)i(a)0 3766 y(binary)34 b(table.)55 +b(The)35 b(v)-5 b(ariable)34 b(length)g(columns)g(ha)m(v)m(e)j(TF)m +(ORMn)e(k)m(eyw)m(ord)h(v)-5 b(alues)34 b(of)i(the)f(form)g +(`1Pt\(len\)')0 3878 y(where)27 b(`t')g(is)f(the)i(datat)m(yp)s(e)g(co) +s(de)f(\(e.g.,)j(I,)d(J,)g(E,)g(D,)g(etc.\))41 b(and)27 +b(`len')f(is)h(an)f(in)m(teger)i(sp)s(ecifying)d(the)i(maxim)m(um)0 +3991 y(length)f(of)h(the)h(v)m(ector)g(in)e(the)h(table.)39 +b(If)27 b(the)g(v)-5 b(alue)26 b(of)h(`len')g(is)f(not)h(sp)s +(eci\014ed)e(when)h(the)h(table)g(is)f(created)i(\(e.g.,)0 +4104 y(if)e(the)i(TF)m(ORM)f(k)m(eyw)m(ord)h(v)-5 b(alue)27 +b(is)f(simply)f(sp)s(eci\014ed)h(as)h('1PE')h(instead)f(of)g +('1PE\(400\))j(\),)e(then)f(FITSIO)g(will)0 4217 y(automatically)i +(scan)g(the)g(table)g(when)f(it)h(is)f(closed)h(to)h(determine)e(the)h +(maxim)m(um)f(length)g(of)i(the)f(v)m(ector)i(and)0 4330 +y(will)d(app)s(end)g(this)i(v)-5 b(alue)30 b(to)h(the)f(TF)m(ORMn)g(v) +-5 b(alue.)0 4490 y(The)25 b(same)h(routines)f(whic)m(h)f(read)i(and)f +(write)g(data)h(in)e(an)i(ordinary)e(\014xed)h(length)g(binary)f(table) +h(extension)h(are)0 4603 y(also)k(used)f(for)h(v)-5 b(ariable)29 +b(length)h(\014elds,)e(ho)m(w)m(ev)m(er,)k(the)e(subroutine)e +(parameters)j(tak)m(e)h(on)e(a)g(sligh)m(tly)e(di\013eren)m(t)0 +4716 y(in)m(terpretation)i(as)g(describ)s(ed)f(b)s(elo)m(w.)0 +4876 y(All)35 b(the)h(data)h(in)e(a)i(v)-5 b(ariable)35 +b(length)g(\014eld)g(is)g(written)h(in)m(to)g(an)g(area)h(called)f(the) +g(`heap')g(whic)m(h)f(follo)m(ws)h(the)0 4989 y(main)25 +b(\014xed-length)g(FITS)g(binary)g(table.)39 b(The)25 +b(size)h(of)h(the)f(heap,)h(in)e(b)m(ytes,)i(is)e(sp)s(eci\014ed)g +(with)f(the)j(PCOUNT)0 5102 y(k)m(eyw)m(ord)21 b(in)e(the)i(FITS)f +(header.)37 b(When)20 b(creating)h(a)g(new)f(binary)f(table,)j(the)f +(initial)d(v)-5 b(alue)20 b(of)g(PCOUNT)g(should)0 5215 +y(usually)29 b(b)s(e)h(set)i(to)g(zero.)44 b(FITSIO)30 +b(will)e(recompute)k(the)f(size)g(of)h(the)f(heap)g(as)g(the)h(data)g +(is)e(written)g(and)h(will)0 5328 y(automatically)25 +b(up)s(date)f(the)i(PCOUNT)e(k)m(eyw)m(ord)h(v)-5 b(alue)25 +b(when)f(the)h(table)g(is)f(closed.)39 b(When)25 b(writing)e(v)-5 +b(ariable)0 5441 y(length)33 b(data)h(to)g(a)g(table,)h(CFITSIO)d(will) +e(automatically)k(extend)f(the)h(size)f(of)h(the)g(heap)f(area)h(if)f +(necessary)-8 b(,)0 5554 y(so)31 b(that)g(an)m(y)f(follo)m(wing)f(HDUs) +i(do)f(not)h(get)h(o)m(v)m(erwritten.)0 5714 y(By)e(default)e(the)i +(heap)f(data)i(area)f(starts)g(immediately)e(after)i(the)f(last)h(ro)m +(w)f(of)h(the)g(\014xed-length)e(table.)41 b(This)p eop +%%Page: 52 58 +52 57 bop 0 299 a Fi(52)1277 b Fg(CHAPTER)29 b(6.)72 +b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y +Fi(default)26 b(starting)g(lo)s(cation)h(ma)m(y)g(b)s(e)f(o)m(v)m +(erridden)g(b)m(y)h(the)g(THEAP)f(k)m(eyw)m(ord,)i(but)f(this)e(is)h +(not)h(recommended.)0 668 y(If)34 b(additional)e(ro)m(ws)i(of)g(data)h +(are)g(added)e(to)i(the)f(table,)i(CFITSIO)c(will)g(automatically)i +(shift)e(the)j(the)f(heap)0 781 y(do)m(wn)g(to)i(mak)m(e)f(ro)s(om)g +(for)f(the)h(new)f(ro)m(ws,)i(but)e(it)h(is)e(ob)m(viously)h(b)s(e)g +(more)h(e\016cien)m(t)g(to)g(initially)c(create)37 b(the)0 +894 y(table)30 b(with)e(the)i(necessary)g(n)m(um)m(b)s(er)f(of)h(blank) +e(ro)m(ws,)i(so)g(that)g(the)g(heap)g(do)s(es)f(not)h(needed)g(to)g(b)s +(e)f(constan)m(tly)0 1007 y(mo)m(v)m(ed.)0 1167 y(When)40 +b(writing)f(to)i(a)g(v)-5 b(ariable)39 b(length)h(\014eld,)i(the)f(en)m +(tire)g(arra)m(y)g(of)f(v)-5 b(alues)40 b(for)g(a)h(giv)m(en)g(ro)m(w)g +(of)f(the)h(table)0 1280 y(m)m(ust)36 b(b)s(e)g(written)f(with)g(a)h +(single)f(call)h(to)h(FTPCLx.)57 b(The)36 b(total)h(length)f(of)g(the)g +(arra)m(y)h(is)e(calculated)h(from)0 1393 y(\(NELEM+FELEM-1\).)44 +b(One)30 b(cannot)i(app)s(end)d(more)i(elemen)m(ts)g(to)h(an)e +(existing)g(\014eld)g(at)h(a)h(later)f(time;)g(an)m(y)0 +1506 y(attempt)k(to)f(do)g(so)g(will)d(simply)g(o)m(v)m(erwrite)k(all)d +(the)i(data)h(whic)m(h)d(w)m(as)i(previously)e(written.)50 +b(Note)35 b(also)e(that)0 1619 y(the)h(new)g(data)g(will)e(b)s(e)h +(written)g(to)i(a)f(new)g(area)g(of)g(the)h(heap)e(and)h(the)g(heap)g +(space)g(used)f(b)m(y)h(the)g(previous)0 1732 y(write)i(cannot)i(b)s(e) +e(reclaimed.)60 b(F)-8 b(or)38 b(this)e(reason)h(it)g(is)f(advised)g +(that)i(eac)m(h)g(ro)m(w)f(of)h(a)f(v)-5 b(ariable)36 +b(length)g(\014eld)0 1844 y(only)c(b)s(e)h(written)f(once.)50 +b(An)33 b(exception)g(to)h(this)e(general)h(rule)f(o)s(ccurs)h(when)f +(setting)h(elemen)m(ts)h(of)f(an)g(arra)m(y)0 1957 y(as)38 +b(unde\014ned.)63 b(One)37 b(m)m(ust)i(\014rst)e(write)g(a)i(dumm)m(y)e +(v)-5 b(alue)38 b(in)m(to)g(the)h(arra)m(y)f(with)f(FTPCLx,)j(and)e +(then)g(call)0 2070 y(FTPCLU)33 b(to)i(\015ag)f(the)f(desired)g(elemen) +m(ts)h(as)f(unde\014ned.)49 b(\(Do)35 b(not)f(use)f(the)h(FTPCNx)f +(family)f(of)i(routines)0 2183 y(with)27 b(v)-5 b(ariable)28 +b(length)g(\014elds\).)39 b(Note)30 b(that)f(the)g(ro)m(ws)g(of)g(a)g +(table,)g(whether)f(\014xed)g(or)h(v)-5 b(ariable)27 +b(length,)i(do)g(not)0 2296 y(ha)m(v)m(e)j(to)f(b)s(e)e(written)h +(consecutiv)m(ely)g(and)g(ma)m(y)h(b)s(e)f(written)f(in)g(an)m(y)i +(order.)0 2456 y(When)40 b(writing)f(to)i(a)g(v)-5 b(ariable)39 +b(length)h(ASCI)s(I)f(c)m(haracter)j(\014eld)d(\(e.g.,)45 +b(TF)m(ORM)c(=)f('1P)-8 b(A'\))43 b(only)c(a)i(single)0 +2569 y(c)m(haracter)33 b(string)e(written.)43 b(FTPCLS)30 +b(writes)h(the)h(whole)e(length)h(of)h(the)g(input)d(string)i(\(min)m +(us)f(an)m(y)i(trailing)0 2682 y(blank)k(c)m(haracters\),)42 +b(th)m(us)37 b(the)h(NELEM)f(and)g(FELEM)h(parameters)g(are)g(ignored.) +61 b(If)37 b(the)h(input)d(string)i(is)0 2795 y(completely)26 +b(blank)g(then)g(FITSIO)g(will)e(write)i(one)h(blank)e(c)m(haracter)k +(to)e(the)g(FITS)f(\014le.)39 b(Similarly)-8 b(,)24 b(FTGCVS)0 +2908 y(and)35 b(FTGCFS)g(read)g(the)h(en)m(tire)f(string)g(\(truncated) +g(to)i(the)e(width)f(of)h(the)h(c)m(haracter)h(string)d(argumen)m(t)i +(in)0 3021 y(the)31 b(subroutine)d(call\))i(and)g(also)g(ignore)g(the)g +(NELEM)h(and)f(FELEM)g(parameters.)0 3181 y(The)35 b(FTPDES)h +(subroutine)d(is)i(useful)f(in)g(situations)h(where)g(m)m(ultiple)f(ro) +m(ws)h(of)h(a)g(v)-5 b(ariable)35 b(length)g(column)0 +3294 y(ha)m(v)m(e)d(the)e(iden)m(tical)f(arra)m(y)i(of)g(v)-5 +b(alues.)40 b(One)30 b(can)g(simply)e(write)i(the)g(arra)m(y)h(once)g +(for)g(the)f(\014rst)g(ro)m(w,)g(and)g(then)0 3407 y(use)36 +b(FTPDES)g(to)h(write)f(the)g(same)h(descriptor)f(v)-5 +b(alues)35 b(in)m(to)i(the)f(other)h(ro)m(ws)f(\(use)h(the)f(FTGDES)h +(routine)0 3520 y(to)f(read)f(the)h(\014rst)f(descriptor)f(v)-5 +b(alue\);)38 b(all)c(the)i(ro)m(ws)f(will)e(then)i(p)s(oin)m(t)f(to)i +(the)g(same)f(storage)i(lo)s(cation)e(th)m(us)0 3633 +y(sa)m(ving)30 b(disk)f(space.)0 3793 y(When)35 b(reading)f(from)g(a)i +(v)-5 b(ariable)33 b(length)i(arra)m(y)g(\014eld)f(one)h(can)g(only)g +(read)f(as)i(man)m(y)f(elemen)m(ts)g(as)g(actually)0 +3906 y(exist)h(in)e(that)j(ro)m(w)e(of)h(the)g(table;)j(reading)c(do)s +(es)h(not)g(automatically)f(con)m(tin)m(ue)h(with)f(the)h(next)g(ro)m +(w)g(of)g(the)0 4019 y(table)28 b(as)g(o)s(ccurs)g(when)f(reading)g(an) +h(ordinary)f(\014xed)g(length)g(table)h(\014eld.)39 b(A)m(ttempts)29 +b(to)g(read)f(more)g(than)g(this)0 4131 y(will)h(cause)k(an)e(error)h +(status)g(to)g(b)s(e)f(returned.)44 b(One)32 b(can)g(determine)f(the)h +(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)g(in)f(eac)m(h)i(ro)m(w)0 +4244 y(of)e(a)f(v)-5 b(ariable)29 b(column)h(with)f(the)h(FTGDES)h +(subroutine.)0 4657 y Fd(6.10)136 b(Supp)t(ort)44 b(for)h(IEEE)g(Sp)t +(ecial)h(V)-11 b(alues)0 4924 y Fi(The)26 b(ANSI/IEEE-754)h +(\015oating-p)s(oin)m(t)f(n)m(um)m(b)s(er)f(standard)g(de\014nes)h +(certain)g(sp)s(ecial)f(v)-5 b(alues)25 b(that)i(are)g(used)e(to)0 +5036 y(represen)m(t)j(suc)m(h)g(quan)m(tities)f(as)h(Not-a-Num)m(b)s +(er)h(\(NaN\),)h(denormalized,)d(under\015o)m(w,)g(o)m(v)m(er\015o)m +(w,)j(and)d(in\014nit)m(y)-8 b(.)0 5149 y(\(See)29 b(the)f(App)s(endix) +d(in)i(the)h(NOST)g(FITS)f(standard)g(or)h(the)g(NOST)g(FITS)f(User's)h +(Guide)f(for)h(a)g(list)f(of)h(these)0 5262 y(v)-5 b(alues\).)40 +b(The)30 b(FITSIO)f(subroutines)f(that)j(read)f(\015oating)h(p)s(oin)m +(t)e(data)i(in)e(FITS)g(\014les)h(recognize)h(these)g(IEEE)0 +5375 y(sp)s(ecial)38 b(v)-5 b(alues)38 b(and)h(b)m(y)g(default)f(in)m +(terpret)h(the)g(o)m(v)m(er\015o)m(w)i(and)d(in\014nit)m(y)f(v)-5 +b(alues)39 b(as)g(b)s(eing)f(equiv)-5 b(alen)m(t)39 b(to)h(a)0 +5488 y(NaN,)35 b(and)e(con)m(v)m(ert)i(the)f(under\015o)m(w)e(and)h +(denormalized)f(v)-5 b(alues)33 b(in)m(to)h(zeros.)51 +b(In)33 b(some)h(cases)h(programmers)0 5601 y(ma)m(y)d(w)m(an)m(t)g +(access)g(to)g(the)g(ra)m(w)f(IEEE)g(v)-5 b(alues,)31 +b(without)f(an)m(y)i(mo)s(di\014cation)d(b)m(y)i(FITSIO.)g(This)e(can)j +(b)s(e)e(done)0 5714 y(b)m(y)k(calling)g(the)g(FTGPVx)h(or)g(FTGCVx)g +(routines)e(while)g(sp)s(ecifying)f(0.0)k(as)f(the)f(v)-5 +b(alue)34 b(of)h(the)g(NULL)-10 b(V)g(AL)p eop +%%Page: 53 59 +53 58 bop 0 299 a Fg(6.11.)73 b(WHEN)31 b(THE)f(FINAL)g(SIZE)f(OF)i +(THE)f(FITS)f(HDU)i(IS)f(UNKNO)m(WN)978 b Fi(53)0 555 +y(parameter.)72 b(This)38 b(will)g(force)j(FITSIO)e(to)j(simply)c(pass) +i(the)g(IEEE)g(v)-5 b(alues)40 b(through)g(to)h(the)g(application)0 +668 y(program,)30 b(without)f(an)m(y)h(mo)s(di\014cation.)39 +b(This)29 b(do)s(es)g(not)h(w)m(ork)g(for)g(double)f(precision)f(v)-5 +b(alues)29 b(on)h(V)-10 b(AX/VMS)0 781 y(mac)m(hines,)37 +b(ho)m(w)m(ev)m(er,)i(where)d(there)g(is)f(no)h(easy)g(w)m(a)m(y)h(to)g +(b)m(ypass)f(the)g(default)f(in)m(terpretation)g(of)h(the)h(IEEE)0 +894 y(sp)s(ecial)29 b(v)-5 b(alues.)0 1393 y Fd(6.11)136 +b(When)44 b(the)h(Final)h(Size)f(of)g(the)g(FITS)f(HDU)h(is)g(Unkno)l +(wn)0 1676 y Fi(It)27 b(is)g(not)g(required)e(to)j(kno)m(w)f(the)h +(total)g(size)f(of)g(a)h(FITS)e(data)i(arra)m(y)g(or)f(table)g(b)s +(efore)g(b)s(eginning)d(to)k(write)f(the)0 1789 y(data)32 +b(to)f(the)g(FITS)f(\014le.)42 b(In)30 b(the)h(case)h(of)f(the)g +(primary)e(arra)m(y)i(or)g(an)f(image)i(extension,)e(one)i(should)c +(initially)0 1902 y(create)j(the)e(arra)m(y)h(with)d(the)j(size)f(of)g +(the)g(highest)f(dimension)f(\(largest)j(NAXISn)e(k)m(eyw)m(ord\))i +(set)g(to)g(a)f(dumm)m(y)0 2015 y(v)-5 b(alue,)25 b(suc)m(h)f(as)g(1.) +39 b(Then)23 b(after)i(all)e(the)i(data)f(ha)m(v)m(e)i(b)s(een)d +(written)g(and)h(the)g(true)g(dimensions)e(are)i(kno)m(wn,)h(then)0 +2128 y(the)31 b(NAXISn)e(v)-5 b(alue)30 b(should)f(b)s(e)h(up)s(dated)f +(using)g(the)i(\014ts)p 2051 2128 28 4 v 62 w(up)s(date)p +2389 2128 V 32 w(k)m(ey)h(routine)d(b)s(efore)h(mo)m(ving)h(to)g +(another)0 2240 y(extension)f(or)g(closing)g(the)g(FITS)g(\014le.)0 +2401 y(When)f(writing)e(to)i(FITS)g(tables,)g(CFITSIO)e(automatically)i +(k)m(eeps)h(trac)m(k)g(of)f(the)g(highest)g(ro)m(w)g(n)m(um)m(b)s(er)e +(that)0 2514 y(is)k(written)g(to,)i(and)e(will)e(increase)j(the)g(size) +g(of)g(the)g(table)f(if)g(necessary)-8 b(.)46 b(CFITSIO)30 +b(will)f(also)j(automatically)0 2626 y(insert)j(space)i(in)e(the)h +(FITS)f(\014le)h(if)f(necessary)-8 b(,)39 b(to)e(ensure)e(that)i(the)f +(data)h('heap',)h(if)d(it)h(exists,)h(and/or)g(an)m(y)0 +2739 y(additional)26 b(HDUs)j(that)g(follo)m(w)e(the)i(table)f(do)g +(not)h(get)g(o)m(v)m(erwritten)g(as)f(new)g(ro)m(ws)g(are)h(written)e +(to)i(the)g(table.)0 2900 y(As)37 b(a)h(general)f(rule)f(it)h(is)f(b)s +(est)h(to)h(sp)s(ecify)e(the)i(initial)c(n)m(um)m(b)s(er)i(of)i(ro)m +(ws)f(=)g(0)g(when)g(the)g(table)g(is)g(created,)0 3012 +y(then)h(let)g(CFITSIO)f(k)m(eep)i(trac)m(k)g(of)g(the)f(n)m(um)m(b)s +(er)f(of)i(ro)m(ws)f(that)h(are)f(actually)g(written.)64 +b(The)38 b(application)0 3125 y(program)e(should)e(not)j(man)m(ually)e +(up)s(date)g(the)i(n)m(um)m(b)s(er)e(of)h(ro)m(ws)g(in)f(the)i(table)f +(\(as)h(giv)m(en)f(b)m(y)g(the)h(NAXIS2)0 3238 y(k)m(eyw)m(ord\))j +(since)e(CFITSIO)f(do)s(es)i(this)f(automatically)-8 +b(.)66 b(If)38 b(a)i(table)e(is)g(initially)e(created)k(with)d(more)i +(than)0 3351 y(zero)i(ro)m(ws,)j(then)c(this)g(will)d(usually)i(b)s(e)h +(considered)f(as)i(the)g(minim)m(um)d(size)i(of)h(the)g(table,)i(ev)m +(en)e(if)f(few)m(er)0 3464 y(ro)m(ws)30 b(are)g(actually)f(written)g +(to)i(the)f(table.)40 b(Th)m(us,)30 b(if)e(a)j(table)e(is)g(initially)d +(created)31 b(with)e(NAXIS2)h(=)f(20,)j(and)0 3577 y(CFITSIO)f(only)h +(writes)f(10)j(ro)m(ws)e(of)h(data)g(b)s(efore)f(closing)g(the)h +(table,)g(then)f(NAXIS2)h(will)d(remain)h(equal)h(to)0 +3690 y(20.)50 b(If)33 b(ho)m(w)m(ev)m(er,)i(30)g(ro)m(ws)e(of)g(data)h +(are)g(written)e(to)i(this)e(table,)i(then)f(NAXIS2)h(will)c(b)s(e)j +(increased)f(from)h(20)0 3803 y(to)f(30.)44 b(The)31 +b(one)g(exception)h(to)g(this)e(automatic)i(up)s(dating)d(of)i(the)h +(NAXIS2)f(k)m(eyw)m(ord)h(is)e(if)g(the)i(application)0 +3916 y(program)c(directly)e(mo)s(di\014es)g(the)j(v)-5 +b(alue)27 b(of)h(NAXIS2)g(\(up)f(or)h(do)m(wn\))g(itself)f(just)g(b)s +(efore)h(closing)f(the)h(table.)40 b(In)0 4029 y(this)27 +b(case,)j(CFITSIO)d(do)s(es)h(not)h(up)s(date)e(NAXIS2)i(again,)g +(since)f(it)g(assumes)g(that)h(the)f(application)f(program)0 +4142 y(m)m(ust)32 b(ha)m(v)m(e)h(had)f(a)g(go)s(o)s(d)g(reason)h(for)f +(c)m(hanging)g(the)g(v)-5 b(alue)32 b(directly)-8 b(.)45 +b(This)30 b(is)h(not)i(recommended,)f(ho)m(w)m(ev)m(er,)0 +4254 y(and)j(is)g(only)g(pro)m(vided)g(for)g(bac)m(kw)m(ard)h +(compatibilit)m(y)e(with)h(soft)m(w)m(are)i(that)g(initially)32 +b(creates)37 b(a)f(table)g(with)0 4367 y(a)e(large)g(n)m(um)m(b)s(er)f +(of)h(ro)m(ws,)h(than)f(decreases)g(the)h(NAXIS2)f(v)-5 +b(alue)33 b(to)i(the)f(actual)g(smaller)f(v)-5 b(alue)33 +b(just)g(b)s(efore)0 4480 y(closing)c(the)i(table.)0 +4979 y Fd(6.12)136 b(Lo)t(cal)45 b(FITS)e(Con)l(v)l(en)l(tions)k(supp)t +(orted)d(b)l(y)h(FITSIO)0 5262 y Fi(CFITSIO)25 b(supp)s(orts)g(sev)m +(eral)i(lo)s(cal)e(FITS)h(con)m(v)m(en)m(tions)i(whic)m(h)d(are)i(not)g +(de\014ned)e(in)g(the)i(o\016cial)f(NOST)g(FITS)0 5375 +y(standard)k(and)g(whic)m(h)g(are)h(not)g(necessarily)e(recognized)i +(or)g(supp)s(orted)e(b)m(y)i(other)g(FITS)f(soft)m(w)m(are)i(pac)m(k)-5 +b(ages.)0 5488 y(Programmers)36 b(should)e(b)s(e)h(cautious)h(ab)s(out) +f(using)g(these)h(features,)i(esp)s(ecially)c(if)h(the)h(FITS)f +(\014les)g(that)i(are)0 5601 y(pro)s(duced)31 b(are)i(exp)s(ected)g(to) +g(b)s(e)f(pro)s(cessed)g(b)m(y)h(other)f(soft)m(w)m(are)i(systems)f +(whic)m(h)e(do)i(not)f(use)h(the)f(CFITSIO)0 5714 y(in)m(terface.)p +eop +%%Page: 54 60 +54 59 bop 0 299 a Fi(54)1277 b Fg(CHAPTER)29 b(6.)72 +b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y +Fb(6.12.1)113 b(Supp)s(ort)37 b(for)h(Long)g(String)e(Keyw)m(ord)i(V)-9 +b(alues.)0 774 y Fi(The)23 b(length)h(of)g(a)g(standard)f(FITS)g +(string)g(k)m(eyw)m(ord)h(is)f(limited)f(to)i(68)h(c)m(haracters)g(b)s +(ecause)f(it)f(m)m(ust)h(\014t)g(en)m(tirely)0 887 y(within)33 +b(a)j(single)f(FITS)g(header)h(k)m(eyw)m(ord)g(record.)57 +b(In)35 b(some)h(instances)f(it)h(is)e(necessary)j(to)f(enco)s(de)g +(strings)0 1000 y(longer)26 b(than)g(this)f(limit,)g(so)h(FITSIO)f +(supp)s(orts)f(a)j(lo)s(cal)e(con)m(v)m(en)m(tion)i(in)e(whic)m(h)g +(the)h(string)f(v)-5 b(alue)26 b(is)f(con)m(tin)m(ued)0 +1113 y(o)m(v)m(er)34 b(m)m(ultiple)d(k)m(eyw)m(ords.)49 +b(This)31 b(con)m(tin)m(uation)i(con)m(v)m(en)m(tion)i(uses)d(an)h(amp) +s(ersand)f(c)m(haracter)i(at)g(the)f(end)g(of)0 1226 +y(eac)m(h)c(substring)c(to)j(indicate)f(that)h(it)f(is)g(con)m(tin)m +(ued)g(on)g(the)h(next)g(k)m(eyw)m(ord,)h(and)d(the)i(con)m(tin)m +(uation)g(k)m(eyw)m(ords)0 1339 y(all)42 b(ha)m(v)m(e)j(the)f(name)f +(CONTINUE)g(without)f(an)i(equal)f(sign)f(in)g(column)h(9.)80 +b(The)43 b(string)g(v)-5 b(alue)42 b(ma)m(y)j(b)s(e)0 +1452 y(con)m(tin)m(ued)28 b(in)f(this)h(w)m(a)m(y)h(o)m(v)m(er)h(as)e +(man)m(y)h(additional)d(CONTINUE)i(k)m(eyw)m(ords)g(as)h(is)e +(required.)39 b(The)27 b(follo)m(wing)0 1564 y(lines)i(illustrate)f +(this)h(con)m(tin)m(uation)i(con)m(v)m(en)m(tion)g(whic)m(h)e(is)h +(used)f(in)g(the)i(v)-5 b(alue)30 b(of)g(the)h(STRKEY)e(k)m(eyw)m(ord:) +0 1802 y Fe(LONGSTRN=)45 b('OGIP)i(1.0')524 b(/)47 b(The)g(OGIP)g(Long) +f(String)g(Convention)f(may)i(be)g(used.)0 1915 y(STRKEY)94 +b(=)47 b('This)g(is)g(a)g(very)g(long)g(string)f(keyword&')93 +b(/)47 b(Optional)f(Comment)0 2028 y(CONTINUE)93 b(')48 +b(value)e(that)h(is)g(continued)e(over)i(3)g(keywords)f(in)h(the)g(&)95 +b(')0 2141 y(CONTINUE)e('FITS)47 b(header.')e(/)j(This)e(is)h(another)f +(optional)g(comment.)0 2379 y Fi(It)29 b(is)f(recommended)g(that)h(the) +g(LONGSTRN)f(k)m(eyw)m(ord,)i(as)f(sho)m(wn)f(here,)h(alw)m(a)m(ys)h(b) +s(e)e(included)e(in)h(an)m(y)i(HDU)0 2492 y(that)f(uses)e(this)g +(longstring)g(con)m(v)m(en)m(tion.)41 b(A)27 b(subroutine)e(called)h +(FTPLSW)h(has)g(b)s(een)f(pro)m(vided)g(in)f(CFITSIO)0 +2605 y(to)31 b(write)f(this)f(k)m(eyw)m(ord)i(if)e(it)h(do)s(es)g(not)h +(already)f(exist.)0 2765 y(This)22 b(long)i(string)g(con)m(v)m(en)m +(tion)h(is)e(supp)s(orted)g(b)m(y)h(the)g(follo)m(wing)f(FITSIO)g +(subroutines)f(that)j(deal)f(with)f(string-)0 2878 y(v)-5 +b(alued)29 b(k)m(eyw)m(ords:)286 3116 y Fe(ftgkys)46 +b(-)i(read)f(a)g(string)f(keyword)286 3229 y(ftpkls)g(-)i(write)e +(\(append\))g(a)h(string)f(keyword)286 3342 y(ftikls)g(-)i(insert)e(a)h +(string)g(keyword)286 3455 y(ftmkls)f(-)i(modify)e(the)h(value)f(of)h +(an)h(existing)d(string)h(keyword)286 3568 y(ftukls)g(-)i(update)e(an)h +(existing)f(keyword,)f(or)i(write)g(a)g(new)g(keyword)286 +3681 y(ftdkey)f(-)i(delete)e(a)h(keyword)0 3919 y Fi(These)41 +b(routines)e(will)f(transparen)m(tly)i(read,)k(write,)f(or)e(delete)g +(a)g(long)f(string)g(v)-5 b(alue)40 b(in)g(the)h(FITS)f(\014le,)j(so)0 +4031 y(programmers)36 b(in)f(general)h(do)g(not)h(ha)m(v)m(e)g(to)g(b)s +(e)f(concerned)g(ab)s(out)g(the)g(details)g(of)g(the)h(con)m(v)m(en)m +(tion)g(that)g(is)0 4144 y(used)32 b(to)i(enco)s(de)f(the)g(long)f +(string)g(in)g(the)h(FITS)f(header.)48 b(When)33 b(reading)f(a)h(long)g +(string,)g(one)g(m)m(ust)g(ensure)0 4257 y(that)h(the)f(c)m(haracter)i +(string)e(parameter)h(used)e(in)g(these)i(subroutine)d(calls)i(has)g(b) +s(een)f(declared)h(long)g(enough)0 4370 y(to)e(hold)e(the)i(en)m(tire)f +(string,)g(otherwise)f(the)i(returned)e(string)g(v)-5 +b(alue)30 b(will)e(b)s(e)i(truncated.)0 4530 y(Note)d(that)e(the)h +(more)f(commonly)g(used)f(FITSIO)g(subroutine)g(to)i(write)e(string)g +(v)-5 b(alued)24 b(k)m(eyw)m(ords)i(\(FTPKYS\))0 4643 +y(do)s(es)38 b(NOT)g(supp)s(ort)f(this)g(long)h(string)g(con)m(v)m(en)m +(tion)h(and)f(only)g(supp)s(orts)e(strings)h(up)h(to)h(68)g(c)m +(haracters)h(in)0 4756 y(length.)h(This)29 b(has)h(b)s(een)g(done)h +(delib)s(erately)d(to)k(prev)m(en)m(t)f(programs)g(from)f(inadv)m +(erten)m(tly)g(writing)f(k)m(eyw)m(ords)0 4869 y(using)37 +b(this)h(non-standard)f(con)m(v)m(en)m(tion)j(without)e(the)g(explicit) +f(in)m(ten)m(t)i(of)g(the)g(programmer)f(or)h(user.)64 +b(The)0 4982 y(FTPKLS)28 b(subroutine)f(m)m(ust)i(b)s(e)g(called)f +(instead)h(to)h(write)e(long)h(strings.)39 b(This)27 +b(routine)i(can)g(also)g(b)s(e)g(used)f(to)0 5095 y(write)i(ordinary)e +(string)i(v)-5 b(alues)29 b(less)h(than)g(68)h(c)m(haracters)h(in)d +(length.)0 5382 y Fb(6.12.2)113 b(Arra)m(ys)37 b(of)g(Fixed-Length)i +(Strings)e(in)f(Binary)h(T)-9 b(ables)0 5601 y Fi(The)29 +b(de\014nition)e(of)j(the)f(FITS)g(binary)e(table)j(extension)f(format) +g(do)s(es)h(not)f(pro)m(vide)g(a)g(simple)f(w)m(a)m(y)i(to)g(sp)s +(ecify)0 5714 y(that)f(a)f(c)m(haracter)i(column)d(con)m(tains)h(an)g +(arra)m(y)h(of)f(\014xed-length)f(strings.)39 b(T)-8 +b(o)29 b(supp)s(ort)d(this)h(feature,)i(FITSIO)p eop +%%Page: 55 61 +55 60 bop 0 299 a Fg(6.12.)73 b(LOCAL)29 b(FITS)h(CONVENTIONS)f(SUPPOR) +-8 b(TED)29 b(BY)i(FITSIO)1168 b Fi(55)0 555 y(uses)31 +b(a)h(lo)s(cal)f(con)m(v)m(en)m(tion)h(for)f(the)h(format)g(of)g(the)f +(TF)m(ORMn)g(k)m(eyw)m(ord)h(v)-5 b(alue)31 b(of)h(the)g(form)f('rAw')g +(where)g('r')0 668 y(is)c(an)g(in)m(teger)h(sp)s(ecifying)d(the)j +(total)g(width)e(in)g(c)m(haracters)j(of)f(the)g(column,)f(and)g('w')g +(is)g(an)g(in)m(teger)h(sp)s(ecifying)0 781 y(the)c(\(\014xed\))g +(length)g(of)g(an)g(individual)19 b(unit)k(string)g(within)e(the)j(v)m +(ector.)41 b(F)-8 b(or)24 b(example,)i(TF)m(ORM1)e(=)g('120A10')0 +894 y(w)m(ould)k(indicate)g(that)h(the)h(binary)d(table)i(column)f(is)g +(120)i(c)m(haracters)g(wide)e(and)h(consists)f(of)h(12)h(10-c)m +(haracter)0 1007 y(length)e(strings.)39 b(This)27 b(con)m(v)m(en)m +(tion)j(is)d(recognized)i(b)m(y)g(the)f(FITSIO)g(subroutines)e(that)j +(read)g(or)f(write)g(strings)0 1120 y(in)37 b(binary)f(tables.)64 +b(The)37 b(Binary)g(T)-8 b(able)38 b(de\014nition)e(do)s(cumen)m(t)i +(sp)s(eci\014es)e(that)j(other)f(optional)f(c)m(haracters)0 +1233 y(ma)m(y)f(follo)m(w)f(the)g(datat)m(yp)s(e)i(co)s(de)e(in)g(the)g +(TF)m(ORM)h(k)m(eyw)m(ord,)i(so)d(this)g(lo)s(cal)f(con)m(v)m(en)m +(tion)j(is)d(in)h(compliance)0 1346 y(with)23 b(the)i(FITS)f(standard,) +i(although)e(other)h(FITS)f(readers)g(are)h(not)g(required)e(to)i +(recognize)h(this)e(con)m(v)m(en)m(tion.)0 1506 y(The)h(Binary)g(T)-8 +b(able)26 b(de\014nition)d(do)s(cumen)m(t)j(that)h(w)m(as)f(appro)m(v)m +(ed)g(b)m(y)g(the)g(IA)m(U)g(in)f(1994)j(con)m(tains)e(an)f(app)s +(endix)0 1619 y(describing)20 b(an)j(alternate)g(con)m(v)m(en)m(tion)h +(for)f(sp)s(ecifying)d(arra)m(ys)j(of)g(\014xed)f(or)h(v)-5 +b(ariable)22 b(length)g(strings)f(in)h(a)h(binary)0 1732 +y(table)34 b(c)m(haracter)h(column)e(\(with)g(the)i(form)e +('rA:SSTRw/nnn\)'.)50 b(This)32 b(app)s(endix)f(w)m(as)k(not)f +(o\016cially)f(v)m(oted)0 1844 y(on)d(b)m(y)h(the)f(IA)m(U)h(and)f +(hence)g(is)g(still)e(pro)m(visional.)39 b(FITSIO)29 +b(do)s(es)h(not)h(curren)m(tly)e(supp)s(ort)g(this)g(prop)s(osal.)0 +2147 y Fb(6.12.3)113 b(Keyw)m(ord)37 b(Units)g(Strings)0 +2368 y Fi(One)g(de\014ciency)g(of)h(the)g(curren)m(t)g(FITS)f(Standard) +f(is)h(that)i(it)e(do)s(es)g(not)h(de\014ne)f(a)i(sp)s(eci\014c)d(con)m +(v)m(en)m(tion)j(for)0 2481 y(recording)29 b(the)h(ph)m(ysical)f(units) +g(of)h(a)g(k)m(eyw)m(ord)h(v)-5 b(alue.)40 b(The)30 b(TUNITn)f(k)m(eyw) +m(ord)h(can)g(b)s(e)g(used)f(to)i(sp)s(ecify)e(the)0 +2594 y(ph)m(ysical)34 b(units)g(of)h(the)h(v)-5 b(alues)35 +b(in)f(a)h(table)h(column,)f(but)g(there)g(is)g(no)g(analogous)h(con)m +(v)m(en)m(tion)g(for)f(k)m(eyw)m(ord)0 2707 y(v)-5 b(alues.)41 +b(The)30 b(commen)m(t)h(\014eld)f(of)g(the)h(k)m(eyw)m(ord)g(is)f +(often)h(used)f(for)g(this)f(purp)s(ose,)h(but)f(the)i(units)e(are)i +(usually)0 2819 y(not)g(sp)s(eci\014ed)d(in)h(a)i(w)m(ell)e(de\014ned)h +(format)g(that)h(FITS)f(readers)g(can)h(easily)e(recognize)i(and)f +(extract.)0 2980 y(T)-8 b(o)28 b(solv)m(e)g(this)e(de\014ciency)-8 +b(,)29 b(FITSIO)d(uses)h(a)h(lo)s(cal)f(con)m(v)m(en)m(tion)i(in)d +(whic)m(h)g(the)i(k)m(eyw)m(ord)g(units)e(are)i(enclosed)f(in)0 +3093 y(square)20 b(brac)m(k)m(ets)j(as)e(the)f(\014rst)g(tok)m(en)i(in) +e(the)g(k)m(eyw)m(ord)i(commen)m(t)f(\014eld;)i(more)e(sp)s +(eci\014cally)-8 b(,)21 b(the)g(op)s(ening)e(square)0 +3205 y(brac)m(k)m(et)28 b(immediately)d(follo)m(ws)g(the)i(slash)e('/') +i(commen)m(t)h(\014eld)d(delimiter)f(and)i(a)g(single)f(space)i(c)m +(haracter.)41 b(The)0 3318 y(follo)m(wing)29 b(examples)h(illustrate)e +(k)m(eyw)m(ords)j(that)g(use)f(this)f(con)m(v)m(en)m(tion:)0 +3588 y Fe(EXPOSURE=)713 b(1800.0)47 b(/)g([s])g(elapsed)f(exposure)f +(time)0 3701 y(V_HELIO)h(=)763 b(16.23)47 b(/)g([km)g(s**\(-1\)])e +(heliocentric)g(velocity)0 3814 y(LAMBDA)94 b(=)763 b(5400.)47 +b(/)g([angstrom])e(central)h(wavelength)0 3927 y(FLUX)190 +b(=)47 b(4.9033487787637465E-30)42 b(/)47 b([J/cm**2/s])e(average)h +(flux)0 4196 y Fi(In)28 b(general,)g(the)h(units)d(named)i(in)f(the)i +(IA)m(U\(1988\))i(St)m(yle)d(Guide)f(are)i(recommended,)f(with)f(the)i +(main)e(excep-)0 4309 y(tion)j(that)h(the)f(preferred)g(unit)e(for)j +(angle)f(is)f('deg')j(for)e(degrees.)0 4469 y(The)24 +b(FTPUNT)g(and)g(FTGUNT)h(subroutines)e(in)g(FITSIO)g(write)h(and)g +(read,)i(resp)s(ectiv)m(ely)-8 b(,)26 b(the)e(k)m(eyw)m(ord)h(unit)0 +4582 y(strings)k(in)g(an)i(existing)e(k)m(eyw)m(ord.)0 +4884 y Fb(6.12.4)113 b(HIERAR)m(CH)34 b(Con)m(v)m(en)m(tion)j(for)g +(Extended)h(Keyw)m(ord)f(Names)0 5106 y Fi(CFITSIO)k(supp)s(orts)g(the) +i(HIERAR)m(CH)g(k)m(eyw)m(ord)g(con)m(v)m(en)m(tion)h(whic)m(h)e(allo)m +(ws)g(k)m(eyw)m(ord)h(names)g(that)h(are)0 5218 y(longer)33 +b(then)f(8)i(c)m(haracters)g(and)f(ma)m(y)h(con)m(tain)f(the)g(full)e +(range)i(of)h(prin)m(table)d(ASCI)s(I)g(text)j(c)m(haracters.)51 +b(This)0 5331 y(con)m(v)m(en)m(tion)38 b(w)m(as)g(dev)m(elop)s(ed)e(at) +i(the)f(Europ)s(ean)f(Southern)g(Observ)-5 b(atory)37 +b(\(ESO\))f(to)i(supp)s(ort)d(hierarc)m(hical)0 5444 +y(FITS)30 b(k)m(eyw)m(ord)g(suc)m(h)h(as:)0 5714 y Fe(HIERARCH)46 +b(ESO)g(INS)h(FOCU)g(POS)g(=)g(-0.00002500)e(/)j(Focus)e(position)p +eop +%%Page: 56 62 +56 61 bop 0 299 a Fi(56)1277 b Fg(CHAPTER)29 b(6.)72 +b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y +Fi(Basically)-8 b(,)52 b(this)46 b(con)m(v)m(en)m(tion)j(uses)e(the)h +(FITS)f(k)m(eyw)m(ord)h('HIERAR)m(CH')h(to)f(indicate)f(that)h(this)e +(con)m(v)m(en-)0 668 y(tion)e(is)f(b)s(eing)g(used,)k(then)d(the)g +(actual)h(k)m(eyw)m(ord)f(name)h(\()p Fe('ESO)i(INS)f(FOCU)h(POS')c +Fi(in)g(this)g(example\))h(b)s(e-)0 781 y(gins)39 b(in)f(column)g(10)j +(and)e(can)h(con)m(tain)f(an)m(y)h(prin)m(table)e(ASCI)s(I)g(text)j(c)m +(haracters,)i(including)37 b(spaces.)68 b(The)0 894 y(equals)43 +b(sign)h(marks)f(the)h(end)g(of)g(the)g(k)m(eyw)m(ord)h(name)f(and)f +(is)h(follo)m(w)m(ed)f(b)m(y)h(the)g(usual)f(v)-5 b(alue)44 +b(and)f(com-)0 1007 y(men)m(t)31 b(\014elds)e(just)h(as)h(in)e +(standard)h(FITS)g(k)m(eyw)m(ords.)41 b(F)-8 b(urther)30 +b(details)g(of)h(this)e(con)m(v)m(en)m(tion)j(are)f(describ)s(ed)d(at)0 +1120 y(h)m(ttp://arcdev.hq.eso.org/dicb/dicd/dic-1-1.4.h)m(tml)33 +b(\(searc)m(h)f(for)e(HIERAR)m(CH\).)0 1280 y(This)42 +b(con)m(v)m(en)m(tion)k(allo)m(ws)e(a)g(m)m(uc)m(h)h(broader)e(range)i +(of)f(k)m(eyw)m(ord)h(names)f(than)h(is)e(allo)m(w)m(ed)h(b)m(y)g(the)h +(FITS)0 1393 y(Standard.)40 b(Here)30 b(are)h(more)g(examples)f(of)g +(suc)m(h)g(k)m(eyw)m(ords:)0 1655 y Fe(HIERARCH)46 b(LongKeyword)e(=)k +(47.5)e(/)i(Keyword)e(has)h(>)g(8)g(characters,)e(and)i(mixed)f(case)0 +1768 y(HIERARCH)g(XTE$TEMP)f(=)j(98.6)e(/)i(Keyword)d(contains)h(the)h +('$')g(character)0 1881 y(HIERARCH)f(Earth)g(is)h(a)h(star)e(=)i(F)f(/) +h(Keyword)d(contains)h(embedded)f(spaces)0 2143 y Fi(CFITSIO)40 +b(will)f(transparen)m(tly)i(read)h(and)f(write)f(these)j(k)m(eyw)m +(ords,)i(so)d(application)e(programs)h(do)g(not)h(in)0 +2256 y(general)32 b(need)g(to)h(kno)m(w)f(an)m(ything)g(ab)s(out)g(the) +g(sp)s(eci\014c)f(implemen)m(tation)g(details)g(of)i(the)f(HIERAR)m(CH) +g(con-)0 2369 y(v)m(en)m(tion.)49 b(In)32 b(particular,)h(application)e +(programs)h(do)h(not)h(need)e(to)i(sp)s(ecify)e(the)h(`HIERAR)m(CH')h +(part)f(of)g(the)0 2482 y(k)m(eyw)m(ord)g(name)f(when)g(reading)f(or)h +(writing)f(k)m(eyw)m(ords)h(\(although)g(it)g(ma)m(y)h(b)s(e)f +(included)d(if)j(desired\).)45 b(When)0 2595 y(writing)33 +b(a)i(k)m(eyw)m(ord,)h(CFITSIO)d(\014rst)h(c)m(hec)m(ks)i(to)f(see)g +(if)f(the)h(k)m(eyw)m(ord)g(name)f(is)g(legal)g(as)h(a)g(standard)f +(FITS)0 2708 y(k)m(eyw)m(ord)k(\(no)g(more)f(than)h(8)g(c)m(haracters)h +(long)e(and)g(con)m(taining)g(only)f(letters,)k(digits,)e(or)g(a)g(min) +m(us)d(sign)i(or)0 2821 y(underscore\).)68 b(If)39 b(so)h(it)f(writes)g +(it)g(as)g(a)h(standard)f(FITS)g(k)m(eyw)m(ord,)k(otherwise)c(it)g +(uses)g(the)h(hierarc)m(h)e(con-)0 2934 y(v)m(en)m(tion)33 +b(to)g(write)f(the)g(k)m(eyw)m(ord.)48 b(The)32 b(maxim)m(um)f(k)m(eyw) +m(ord)i(name)f(length)g(is)g(67)h(c)m(haracters,)i(whic)m(h)c(lea)m(v)m +(es)0 3047 y(only)c(1)i(space)g(for)f(the)h(v)-5 b(alue)28 +b(\014eld.)38 b(A)29 b(more)f(practical)g(limit)e(is)i(ab)s(out)g(40)h +(c)m(haracters,)i(whic)m(h)c(lea)m(v)m(es)i(enough)0 +3160 y(ro)s(om)f(for)h(most)f(k)m(eyw)m(ord)h(v)-5 b(alues.)40 +b(CFITSIO)27 b(returns)g(an)h(error)h(if)e(there)i(is)e(not)i(enough)f +(ro)s(om)h(for)f(b)s(oth)g(the)0 3273 y(k)m(eyw)m(ord)k(name)f(and)f +(the)i(k)m(eyw)m(ord)f(v)-5 b(alue)31 b(on)g(the)h(80-c)m(haracter)h +(card,)f(except)g(for)f(string-v)-5 b(alued)30 b(k)m(eyw)m(ords)0 +3385 y(whic)m(h)i(are)h(simply)d(truncated)j(so)g(that)h(the)f(closing) +f(quote)i(c)m(haracter)g(falls)d(in)h(column)g(80.)49 +b(In)32 b(the)h(curren)m(t)0 3498 y(implemen)m(tation,)28 +b(CFITSIO)f(preserv)m(es)i(the)g(case)h(of)f(the)g(letters)g(when)f +(writing)f(the)i(k)m(eyw)m(ord)g(name,)g(but)f(it)0 3611 +y(is)c(case-insensitiv)m(e)g(when)g(reading)g(or)h(searc)m(hing)g(for)g +(a)g(k)m(eyw)m(ord.)40 b(The)24 b(curren)m(t)h(implemen)m(tation)e +(allo)m(ws)i(an)m(y)0 3724 y(ASCI)s(I)k(text)j(c)m(haracter)h(\(ASCI)s +(I)c(32)j(to)f(ASCI)s(I)f(126\))i(in)e(the)h(k)m(eyw)m(ord)g(name)g +(except)h(for)e(the)h('=')g(c)m(haracter.)0 3837 y(A)f(space)h(is)f +(also)g(required)f(on)h(either)g(side)f(of)i(the)f(equal)g(sign.)0 +4174 y Fd(6.13)136 b(Optimizing)45 b(Co)t(de)g(for)h(Maxim)l(um)f(Pro)t +(cessing)g(Sp)t(eed)0 4425 y Fi(CFITSIO)22 b(has)h(b)s(een)f(carefully) +g(designed)g(to)i(obtain)f(the)g(highest)g(p)s(ossible)d(sp)s(eed)j +(when)f(reading)g(and)h(writing)0 4538 y(FITS)33 b(\014les.)50 +b(In)33 b(order)h(to)g(ac)m(hiev)m(e)h(the)f(b)s(est)g(p)s(erformance,) +g(ho)m(w)m(ev)m(er,)i(application)d(programmers)g(m)m(ust)h(b)s(e)0 +4650 y(careful)23 b(to)i(call)e(the)h(CFITSIO)f(routines)f +(appropriately)h(and)g(in)g(an)g(e\016cien)m(t)i(sequence;)i +(inappropriate)21 b(usage)0 4763 y(of)31 b(CFITSIO)d(routines)i(can)g +(greatly)h(slo)m(w)f(do)m(wn)g(the)h(execution)f(sp)s(eed)g(of)g(a)h +(program.)0 4924 y(The)f(maxim)m(um)g(p)s(ossible)e(I/O)j(sp)s(eed)f +(of)h(CFITSIO)e(dep)s(ends)g(of)i(course)g(on)f(the)h(t)m(yp)s(e)g(of)g +(computer)g(system)0 5036 y(that)g(it)e(is)g(running)e(on.)41 +b(As)30 b(a)g(rough)g(guide,)f(the)h(curren)m(t)g(generation)g(of)g(w)m +(orkstations)g(can)h(ac)m(hiev)m(e)g(sp)s(eeds)0 5149 +y(of)k(2)g({)g(10)g(MB/s)h(when)e(reading)g(or)g(writing)f(FITS)h +(images)h(and)f(similar,)f(or)i(sligh)m(tly)e(slo)m(w)m(er)i(sp)s(eeds) +e(with)0 5262 y(FITS)c(binary)g(tables.)40 b(Reading)30 +b(of)g(FITS)g(\014les)f(can)i(o)s(ccur)f(at)h(ev)m(en)f(higher)f(rates) +i(\(30MB/s)i(or)d(more\))h(if)e(the)0 5375 y(FITS)d(\014le)g(is)f +(still)g(cac)m(hed)j(in)d(system)i(memory)f(follo)m(wing)g(a)h +(previous)e(read)h(or)h(write)f(op)s(eration)g(on)h(the)g(same)0 +5488 y(\014le.)43 b(T)-8 b(o)32 b(more)g(accurately)g(predict)e(the)i +(b)s(est)f(p)s(erformance)g(that)h(is)e(p)s(ossible)f(on)j(an)m(y)g +(particular)d(system,)k(a)0 5601 y(diagnostic)f(program)h(called)f +(\\sp)s(eed.c")h(is)f(included)e(with)i(the)h(CFITSIO)e(distribution)e +(whic)m(h)j(can)h(b)s(e)f(run)0 5714 y(to)f(appro)m(ximately)f(measure) +g(the)h(maxim)m(um)e(p)s(ossible)f(sp)s(eed)h(of)i(writing)d(and)i +(reading)g(a)g(test)i(FITS)d(\014le.)p eop +%%Page: 57 63 +57 62 bop 0 299 a Fg(6.13.)73 b(OPTIMIZING)29 b(CODE)h(F)m(OR)h +(MAXIMUM)g(PR)m(OCESSING)f(SPEED)971 b Fi(57)0 555 y(The)33 +b(follo)m(wing)e(2)j(sections)f(pro)m(vide)g(some)g(bac)m(kground)g(on) +h(ho)m(w)f(CFITSIO)f(in)m(ternally)f(manages)j(the)f(data)0 +668 y(I/O)g(and)g(describ)s(es)e(some)j(strategies)g(that)g(ma)m(y)g(b) +s(e)e(used)h(to)h(optimize)e(the)i(pro)s(cessing)e(sp)s(eed)g(of)h +(soft)m(w)m(are)0 781 y(that)e(uses)f(CFITSIO.)0 1080 +y Fb(6.13.1)113 b(Bac)m(kground)38 b(Information:)48 +b(Ho)m(w)37 b(CFITSIO)h(Manages)h(Data)f(I/O)0 1300 y +Fi(Man)m(y)22 b(CFITSIO)e(op)s(erations)h(in)m(v)m(olv)m(e)h +(transferring)e(only)h(a)h(small)e(n)m(um)m(b)s(er)h(of)h(b)m(ytes)g +(to)g(or)g(from)f(the)h(FITS)f(\014le)0 1413 y(\(e.g,)31 +b(reading)d(a)h(k)m(eyw)m(ord,)h(or)f(writing)e(a)i(ro)m(w)g(in)e(a)i +(table\);)h(it)f(w)m(ould)e(b)s(e)h(v)m(ery)i(ine\016cien)m(t)e(to)h +(ph)m(ysically)e(read)0 1526 y(or)32 b(write)g(suc)m(h)g(small)e(blo)s +(c)m(ks)i(of)g(data)h(directly)e(in)g(the)h(FITS)g(\014le)f(on)h(disk,) +g(therefore)g(CFITSIO)f(main)m(tains)0 1639 y(a)38 b(set)g(of)g(in)m +(ternal)f(Input{Output)e(\(IO\))j(bu\013ers)f(in)f(RAM)i(memory)g(that) +g(eac)m(h)h(con)m(tain)f(one)g(FITS)f(blo)s(c)m(k)0 1752 +y(\(2880)27 b(b)m(ytes\))f(of)f(data.)40 b(Whenev)m(er)25 +b(CFITSIO)f(needs)g(to)i(access)g(data)g(in)e(the)h(FITS)f(\014le,)i +(it)e(\014rst)g(transfers)h(the)0 1865 y(FITS)30 b(blo)s(c)m(k)g(con)m +(taining)g(those)h(b)m(ytes)g(in)m(to)f(one)h(of)f(the)h(IO)f +(bu\013ers)f(in)g(memory)-8 b(.)42 b(The)30 b(next)g(time)g(CFITSIO)0 +1977 y(needs)36 b(to)g(access)i(b)m(ytes)e(in)f(the)h(same)h(blo)s(c)m +(k)e(it)h(can)g(then)g(go)h(to)f(the)h(fast)f(IO)f(bu\013er)g(rather)h +(than)g(using)f(a)0 2090 y(m)m(uc)m(h)d(slo)m(w)m(er)h(system)f(disk)f +(access)i(routine.)45 b(The)32 b(n)m(um)m(b)s(er)f(of)h(a)m(v)-5 +b(ailable)32 b(IO)g(bu\013ers)f(is)g(determined)g(b)m(y)h(the)0 +2203 y(NIOBUF)f(parameter)g(\(in)e(\014tsio2.h\))h(and)g(is)g(curren)m +(tly)f(set)i(to)g(40.)0 2363 y(Whenev)m(er)24 b(CFITSIO)f(reads)g(or)h +(writes)f(data)h(it)g(\014rst)f(c)m(hec)m(ks)i(to)g(see)f(if)f(that)h +(blo)s(c)m(k)g(of)g(the)g(FITS)f(\014le)f(is)h(already)0 +2476 y(loaded)32 b(in)m(to)g(one)g(of)g(the)g(IO)g(bu\013ers.)44 +b(If)32 b(not,)h(and)e(if)g(there)h(is)f(an)h(empt)m(y)h(IO)e(bu\013er) +g(a)m(v)-5 b(ailable,)32 b(then)g(it)g(will)0 2589 y(load)g(that)i(blo) +s(c)m(k)e(in)m(to)g(the)h(IO)g(bu\013er)e(\(when)h(reading)g(a)h(FITS)f +(\014le\))g(or)h(will)d(initialize)g(a)j(new)f(blo)s(c)m(k)h(\(when)0 +2702 y(writing)i(to)j(a)g(FITS)f(\014le\).)61 b(If)37 +b(all)f(the)i(IO)e(bu\013ers)h(are)g(already)g(full,)g(it)g(m)m(ust)h +(decide)e(whic)m(h)g(one)i(to)g(reuse)0 2815 y(\(generally)32 +b(the)h(one)g(that)g(has)f(b)s(een)g(accessed)i(least)e(recen)m(tly\),) +i(and)e(\015ush)f(the)i(con)m(ten)m(ts)h(bac)m(k)g(to)f(disk)e(if)g(it) +0 2928 y(has)f(b)s(een)g(mo)s(di\014ed)e(b)s(efore)i(loading)f(the)i +(new)f(blo)s(c)m(k.)0 3088 y(The)g(one)g(ma)5 b(jor)30 +b(exception)h(to)g(the)f(ab)s(o)m(v)m(e)h(pro)s(cess)f(o)s(ccurs)g +(whenev)m(er)g(a)g(large)h(con)m(tiguous)f(set)h(of)f(b)m(ytes)h(are)0 +3201 y(accessed,)37 b(as)d(migh)m(t)h(o)s(ccur)f(when)f(reading)h(or)g +(writing)e(a)j(FITS)f(image.)53 b(In)34 b(this)f(case)i(CFITSIO)e(b)m +(ypasses)0 3314 y(the)i(in)m(ternal)f(IO)h(bu\013ers)f(and)g(simply)f +(reads)i(or)g(writes)g(the)g(desired)f(b)m(ytes)h(directly)f(in)g(the)h +(disk)f(\014le)g(with)0 3427 y(a)j(single)e(call)g(to)i(a)g(lo)m(w-lev) +m(el)f(\014le)f(read)h(or)h(write)e(routine.)57 b(The)36 +b(minim)m(um)e(threshold)g(for)i(the)h(n)m(um)m(b)s(er)e(of)0 +3540 y(b)m(ytes)40 b(to)g(read)f(or)g(write)f(this)h(w)m(a)m(y)h(is)e +(set)i(b)m(y)f(the)g(MINDIRECT)g(parameter)h(and)e(is)h(curren)m(tly)f +(set)i(to)g(3)0 3653 y(FITS)28 b(blo)s(c)m(ks)f(=)h(8640)i(b)m(ytes.)41 +b(This)27 b(is)g(the)h(most)h(e\016cien)m(t)g(w)m(a)m(y)g(to)g(read)g +(or)f(write)g(large)g(c)m(h)m(unks)g(of)g(data)i(and)0 +3766 y(can)37 b(ac)m(hiev)m(e)h(IO)e(transfer)g(rates)h(of)g(5)g({)g +(10MB/s)i(or)d(greater.)61 b(Note)38 b(that)f(this)f(fast)h(direct)f +(IO)g(pro)s(cess)g(is)0 3878 y(not)29 b(applicable)d(when)h(accessing)i +(columns)f(of)g(data)h(in)e(a)i(FITS)f(table)g(b)s(ecause)h(the)f(b)m +(ytes)h(are)g(generally)f(not)0 3991 y(con)m(tiguous)h(since)f(they)h +(are)h(in)m(terlea)m(v)m(ed)f(b)m(y)g(the)g(other)g(columns)f(of)h +(data)g(in)f(the)h(table.)40 b(This)27 b(explains)g(wh)m(y)0 +4104 y(the)k(sp)s(eed)e(for)h(accessing)h(FITS)f(tables)g(is)f +(generally)h(slo)m(w)m(er)g(than)h(accessing)f(FITS)g(images.)0 +4264 y(Giv)m(en)h(this)g(bac)m(kground)g(information,)f(the)i(general)f +(strategy)i(for)e(e\016cien)m(tly)g(accessing)h(FITS)f(\014les)f +(should)0 4377 y(no)m(w)36 b(b)s(e)g(apparen)m(t:)52 +b(when)35 b(dealing)g(with)g(FITS)h(images,)i(read)e(or)g(write)f +(large)i(c)m(h)m(unks)f(of)g(data)h(at)g(a)f(time)0 4490 +y(so)30 b(that)h(the)f(direct)g(IO)f(mec)m(hanism)g(will)f(b)s(e)h(in)m +(v)m(ok)m(ed;)i(when)e(accessing)i(FITS)e(headers)h(or)g(FITS)f +(tables,)h(on)0 4603 y(the)35 b(other)g(hand,)g(once)g(a)g(particular)f +(FITS)g(blo)s(c)m(k)g(has)g(b)s(een)g(loading)g(in)m(to)h(one)g(of)g +(the)f(IO)h(bu\013ers,)g(try)f(to)0 4716 y(access)39 +b(all)d(the)h(needed)g(information)f(in)g(that)i(blo)s(c)m(k)f(b)s +(efore)g(it)g(gets)h(\015ushed)d(out)j(of)g(the)f(IO)g(bu\013er.)60 +b(It)38 b(is)0 4829 y(imp)s(ortan)m(t)30 b(to)i(a)m(v)m(oid)f(the)g +(situation)f(where)h(the)g(same)g(FITS)f(blo)s(c)m(k)h(is)f(b)s(eing)f +(read)i(then)g(\015ushed)e(from)h(a)h(IO)0 4942 y(bu\013er)e(m)m +(ultiple)f(times.)0 5102 y(The)i(follo)m(wing)f(section)h(giv)m(es)h +(more)f(sp)s(eci\014c)g(suggestions)g(for)g(optimizing)f(the)h(use)g +(of)h(CFITSIO.)0 5262 y(1.)54 b(When)34 b(dealing)f(with)h(a)h(FITS)e +(primary)g(arra)m(y)i(or)g(IMA)m(GE)g(extension,)h(it)e(is)f(more)i +(e\016cien)m(t)g(to)g(read)g(or)0 5375 y(write)30 b(large)g(c)m(h)m +(unks)g(of)g(the)h(image)f(at)i(a)e(time)g(\(at)i(least)e(3)h(FITS)f +(blo)s(c)m(ks)f(=)h(8640)i(b)m(ytes\))f(so)g(that)g(the)f(direct)0 +5488 y(IO)j(mec)m(hanism)g(will)d(b)s(e)j(used)g(as)g(describ)s(ed)f +(in)g(the)h(previous)f(section.)50 b(Smaller)32 b(c)m(h)m(unks)h(of)g +(data)h(are)g(read)0 5601 y(or)d(written)f(via)h(the)g(IO)f(bu\013ers,) +g(whic)m(h)g(is)g(somewhat)h(less)f(e\016cien)m(t)i(b)s(ecause)f(of)g +(the)g(extra)h(cop)m(y)f(op)s(eration)0 5714 y(and)26 +b(additional)e(b)s(o)s(okk)m(eeping)i(steps)h(that)g(are)g(required.)38 +b(In)26 b(principle)d(it)j(is)g(more)g(e\016cien)m(t)h(to)h(read)e(or)h +(write)p eop +%%Page: 58 64 +58 63 bop 0 299 a Fi(58)1277 b Fg(CHAPTER)29 b(6.)72 +b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y +Fi(as)e(big)f(an)h(arra)m(y)h(of)f(image)g(pixels)e(at)j(one)f(time)f +(as)i(p)s(ossible,)d(ho)m(w)m(ev)m(er,)j(if)e(the)i(arra)m(y)f(b)s +(ecomes)g(so)g(large)g(that)0 668 y(the)j(op)s(erating)f(system)g +(cannot)h(store)g(it)f(all)g(in)f(RAM,)i(then)f(the)h(p)s(erformance)f +(ma)m(y)h(b)s(e)f(degraded)g(b)s(ecause)0 781 y(of)g(the)f(increased)g +(sw)m(apping)f(of)h(virtual)f(memory)h(to)h(disk.)0 941 +y(2.)51 b(When)33 b(dealing)g(with)f(FITS)h(tables,)i(the)f(most)g(imp) +s(ortan)m(t)f(e\016ciency)g(factor)i(in)d(the)i(soft)m(w)m(are)h +(design)e(is)0 1054 y(to)k(read)f(or)g(write)f(the)h(data)h(in)e(the)h +(FITS)g(\014le)f(in)g(a)h(single)f(pass)h(through)f(the)h(\014le.)57 +b(An)36 b(example)g(of)g(p)s(o)s(or)0 1167 y(program)g(design)g(w)m +(ould)f(b)s(e)h(to)h(read)g(a)f(large,)j(3-column)d(table)g(b)m(y)h +(sequen)m(tially)e(reading)h(the)g(en)m(tire)h(\014rst)0 +1280 y(column,)24 b(then)g(going)g(bac)m(k)g(to)h(read)e(the)h(2nd)g +(column,)g(and)f(\014nally)f(the)i(3rd)f(column;)i(this)e(ob)m(viously) +f(requires)0 1393 y(3)j(passes)f(through)f(the)i(\014le)e(whic)m(h)g +(could)h(triple)e(the)j(execution)f(time)g(of)h(an)f(I/O)g(limited)e +(program.)38 b(F)-8 b(or)25 b(small)0 1506 y(tables)30 +b(this)f(is)h(not)g(imp)s(ortan)m(t,)g(but)g(when)f(reading)g(m)m +(ulti-megab)m(yte)i(sized)f(tables)g(these)h(ine\016ciencies)e(can)0 +1619 y(b)s(ecome)g(signi\014can)m(t.)39 b(The)28 b(more)h(e\016cien)m +(t)g(pro)s(cedure)e(in)h(this)f(case)j(is)d(to)j(read)e(or)h(write)f +(only)f(as)i(man)m(y)g(ro)m(ws)0 1732 y(of)g(the)g(table)g(as)g(will)e +(\014t)h(in)m(to)h(the)h(a)m(v)-5 b(ailable)28 b(in)m(ternal)g(I/O)h +(bu\013ers,)f(then)h(access)h(all)e(the)h(necessary)g(columns)0 +1844 y(of)i(data)h(within)c(that)k(range)f(of)g(ro)m(ws.)43 +b(Then)29 b(after)j(the)f(program)g(is)f(completely)g(\014nished)f +(with)g(the)j(data)f(in)0 1957 y(those)i(ro)m(ws)e(it)h(can)g(mo)m(v)m +(e)i(on)e(to)g(the)h(next)f(range)g(of)g(ro)m(ws)g(that)h(will)c(\014t) +j(in)f(the)h(bu\013ers,)f(con)m(tin)m(uing)g(in)g(this)0 +2070 y(w)m(a)m(y)d(un)m(til)d(the)h(en)m(tire)h(\014le)f(has)g(b)s(een) +g(pro)s(cessed.)39 b(By)27 b(using)e(this)h(pro)s(cedure)f(of)i +(accessing)g(all)f(the)g(columns)g(of)0 2183 y(a)k(table)f(in)f +(parallel)f(rather)i(than)g(sequen)m(tially)-8 b(,)29 +b(eac)m(h)h(blo)s(c)m(k)f(of)h(the)f(FITS)g(\014le)f(will)e(only)j(b)s +(e)f(read)i(or)f(written)0 2296 y(once.)0 2456 y(The)g(optimal)f(n)m +(um)m(b)s(er)g(of)i(ro)m(ws)f(to)i(read)e(or)g(write)g(at)h(one)g(time) +f(in)f(a)i(giv)m(en)f(table)h(dep)s(ends)d(on)j(the)f(width)f(of)0 +2569 y(the)k(table)g(ro)m(w,)h(on)f(the)g(n)m(um)m(b)s(er)f(of)h(I/O)g +(bu\013ers)f(that)i(ha)m(v)m(e)g(b)s(een)e(allo)s(cated)h(in)f(FITSIO,) +g(and)h(also)g(on)g(the)0 2682 y(n)m(um)m(b)s(er)27 b(of)i(other)f +(FITS)g(\014les)f(that)i(are)g(op)s(en)f(at)h(the)g(same)g(time)f +(\(since)g(one)h(I/O)f(bu\013er)f(is)h(alw)m(a)m(ys)h(reserv)m(ed)0 +2795 y(for)34 b(eac)m(h)h(op)s(en)f(FITS)f(\014le\).)52 +b(F)-8 b(ortunately)g(,)36 b(a)f(FITSIO)e(routine)g(is)h(a)m(v)-5 +b(ailable)33 b(that)i(will)c(return)j(the)g(optimal)0 +2908 y(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(for)g(a)g(giv)m(en)f(table:)48 +b(call)33 b(ftgrsz\(unit,)h(nro)m(ws,)g(status\).)52 +b(It)34 b(is)f(not)h(critical)e(to)j(use)e(exactly)0 +3021 y(the)f(v)-5 b(alue)31 b(of)g(nro)m(ws)g(returned)g(b)m(y)g(this)f +(routine,)h(as)h(long)f(as)h(one)g(do)s(es)f(not)h(exceed)g(it.)44 +b(Using)31 b(a)h(v)m(ery)f(small)0 3134 y(v)-5 b(alue)31 +b(ho)m(w)m(ev)m(er)j(can)e(also)g(lead)f(to)i(p)s(o)s(or)e(p)s +(erformance)g(b)s(ecause)h(of)g(the)g(o)m(v)m(erhead)h(from)f(the)g +(larger)f(n)m(um)m(b)s(er)0 3247 y(of)g(subroutine)d(calls.)0 +3407 y(The)36 b(optimal)f(n)m(um)m(b)s(er)h(of)g(ro)m(ws)h(returned)e +(b)m(y)h(ftgrsz)h(is)f(v)-5 b(alid)35 b(only)g(as)i(long)f(as)h(the)f +(application)f(program)0 3520 y(is)e(only)h(reading)g(or)g(writing)e +(data)j(in)f(the)g(sp)s(eci\014ed)f(table.)53 b(An)m(y)34 +b(other)h(calls)e(to)i(access)h(data)f(in)e(the)i(table)0 +3633 y(header)e(or)h(in)e(an)m(y)i(other)g(FITS)f(\014le)g(w)m(ould)f +(cause)i(additional)e(blo)s(c)m(ks)h(of)h(data)g(to)g(b)s(e)f(loaded)h +(in)m(to)f(the)h(I/O)0 3745 y(bu\013ers)i(displacing)f(data)j(from)f +(the)g(original)f(table,)j(and)e(should)e(b)s(e)i(a)m(v)m(oided)g +(during)e(the)j(critical)e(p)s(erio)s(d)0 3858 y(while)28 +b(the)j(table)f(is)g(b)s(eing)f(read)h(or)g(written.)0 +4019 y(Occasionally)f(it)g(is)f(necessary)i(to)h(sim)m(ultaneously)c +(access)k(more)f(than)f(one)h(FITS)f(table,)h(for)g(example)f(when)0 +4131 y(transferring)41 b(v)-5 b(alues)42 b(from)g(an)h(input)d(table)j +(to)g(an)g(output)f(table.)78 b(In)42 b(cases)h(lik)m(e)f(this,)j(one)e +(should)e(call)0 4244 y(ftgrsz)28 b(to)h(get)g(the)f(optimal)f(n)m(um)m +(b)s(er)g(of)h(ro)m(ws)g(for)f(eac)m(h)j(table)d(separately)-8 +b(,)30 b(than)d(reduce)h(the)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)0 +4357 y(prop)s(ortionally)-8 b(.)42 b(F)-8 b(or)33 b(example,)f(if)f +(the)h(optimal)f(n)m(um)m(b)s(er)f(of)i(ro)m(ws)g(in)e(the)i(input)e +(table)i(is)f(3600)i(and)e(is)g(1400)0 4470 y(in)h(the)h(output)f +(table,)i(then)f(these)g(v)-5 b(alues)33 b(should)e(b)s(e)h(cut)h(in)f +(half)g(to)i(1800)g(and)f(700,)i(resp)s(ectiv)m(ely)-8 +b(,)34 b(if)e(b)s(oth)0 4583 y(tables)e(are)h(going)f(to)h(b)s(e)f +(accessed)i(at)f(the)f(same)h(time.)0 4743 y(3.)39 b(Use)24 +b(binary)e(table)h(extensions)g(rather)g(than)h(ASCI)s(I)e(table)h +(extensions)g(for)g(b)s(etter)h(e\016ciency)g(when)e(dealing)0 +4856 y(with)36 b(tabular)h(data.)62 b(The)37 b(I/O)g(to)h(ASCI)s(I)e +(tables)h(is)g(slo)m(w)m(er)g(b)s(ecause)h(of)f(the)h(o)m(v)m(erhead)h +(in)d(formatting)h(or)0 4969 y(parsing)29 b(the)i(ASCI)s(I)f(data)h +(\014elds,)f(and)g(b)s(ecause)h(ASCI)s(I)e(tables)h(are)h(ab)s(out)g(t) +m(wice)g(as)g(large)g(as)g(binary)e(tables)0 5082 y(with)g(the)i(same)f +(information)f(con)m(ten)m(t.)0 5242 y(4.)64 b(Design)38 +b(soft)m(w)m(are)h(so)g(that)f(it)g(reads)g(the)g(FITS)f(header)h(k)m +(eyw)m(ords)g(in)f(the)h(same)h(order)e(in)g(whic)m(h)g(they)0 +5355 y(o)s(ccur)c(in)f(the)h(\014le.)48 b(When)32 b(reading)h(k)m(eyw)m +(ords,)h(FITSIO)e(searc)m(hes)i(forw)m(ard)e(starting)h(from)f(the)i(p) +s(osition)d(of)0 5468 y(the)e(last)h(k)m(eyw)m(ord)f(that)h(w)m(as)g +(read.)40 b(If)29 b(it)f(reac)m(hes)j(the)e(end)g(of)g(the)h(header)f +(without)f(\014nding)f(the)i(k)m(eyw)m(ord,)h(it)0 5581 +y(then)j(go)s(es)h(bac)m(k)g(to)h(the)e(start)h(of)g(the)g(header)f +(and)g(con)m(tin)m(ues)g(the)h(searc)m(h)g(do)m(wn)f(to)h(the)g(p)s +(osition)d(where)i(it)0 5694 y(started.)41 b(In)30 b(practice,)h(as)f +(long)g(as)h(the)f(en)m(tire)h(FITS)e(header)h(can)h(\014t)f(at)h(one)g +(time)f(in)f(the)h(a)m(v)-5 b(ailable)30 b(in)m(ternal)p +eop +%%Page: 59 65 +59 64 bop 0 299 a Fg(6.13.)73 b(OPTIMIZING)29 b(CODE)h(F)m(OR)h +(MAXIMUM)g(PR)m(OCESSING)f(SPEED)971 b Fi(59)0 555 y(I/O)33 +b(bu\013ers,)h(then)f(the)h(header)f(k)m(eyw)m(ord)h(access)h(will)30 +b(b)s(e)j(v)m(ery)h(fast)g(and)f(it)g(mak)m(es)h(little)e(di\013erence) +h(whic)m(h)0 668 y(order)d(they)g(are)h(accessed.)0 828 +y(5.)40 b(Av)m(oid)28 b(the)f(use)h(of)f(scaling)g(\(b)m(y)h(using)e +(the)i(BSCALE)e(and)h(BZER)m(O)h(or)f(TSCAL)g(and)g(TZER)m(O)f(k)m(eyw) +m(ords\))0 941 y(in)34 b(FITS)g(\014les)f(since)i(the)g(scaling)f(op)s +(erations)g(add)g(to)i(the)f(pro)s(cessing)e(time)i(needed)f(to)i(read) +f(or)g(write)f(the)0 1054 y(data.)60 b(In)36 b(some)i(cases)f(it)f(ma)m +(y)i(b)s(e)e(more)h(e\016cien)m(t)g(to)g(temp)s(orarily)e(turn)h(o\013) +h(the)g(scaling)f(\(using)f(ftpscl)h(or)0 1167 y(fttscl\))31 +b(and)e(then)h(read)h(or)f(write)g(the)g(ra)m(w)h(unscaled)e(v)-5 +b(alues)30 b(in)f(the)h(FITS)g(\014le.)0 1327 y(6.)40 +b(Av)m(oid)26 b(using)g(the)h('implicit)d(datat)m(yp)s(e)j(con)m(v)m +(ersion')g(capabilit)m(y)f(in)f(FITSIO.)h(F)-8 b(or)28 +b(instance,)f(when)f(reading)0 1440 y(a)f(FITS)e(image)i(with)e(BITPIX) +h(=)g(-32)i(\(32-bit)f(\015oating)f(p)s(oin)m(t)f(pixels\),)i(read)f +(the)h(data)g(in)m(to)f(a)h(single)e(precision)0 1553 +y(\015oating)f(p)s(oin)m(t)e(data)j(arra)m(y)f(in)f(the)h(program.)37 +b(F)-8 b(orcing)22 b(FITSIO)f(to)h(con)m(v)m(ert)i(the)e(data)g(to)h(a) +f(di\013eren)m(t)f(datat)m(yp)s(e)0 1666 y(can)31 b(signi\014can)m(tly) +d(slo)m(w)i(the)h(program.)0 1826 y(7.)57 b(Where)36 +b(feasible,)g(design)f(FITS)g(binary)f(tables)h(using)f(v)m(ector)k +(column)c(elemen)m(ts)i(so)g(that)g(the)g(data)h(are)0 +1939 y(written)29 b(as)h(a)g(con)m(tiguous)g(set)g(of)g(b)m(ytes,)g +(rather)g(than)f(as)h(single)e(elemen)m(ts)i(in)f(m)m(ultiple)e(ro)m +(ws.)41 b(F)-8 b(or)30 b(example,)0 2052 y(it)35 b(is)g(faster)h(to)g +(access)h(the)f(data)h(in)d(a)i(table)g(that)g(con)m(tains)g(a)g +(single)e(ro)m(w)i(and)f(2)h(columns)e(with)h(TF)m(ORM)0 +2165 y(k)m(eyw)m(ords)e(equal)g(to)h('10000E')h(and)e('10000J',)j(than) +d(it)f(is)g(to)i(access)g(the)g(same)f(amoun)m(t)h(of)f(data)h(in)e(a)h +(table)0 2278 y(with)39 b(10000)k(ro)m(ws)d(whic)m(h)g(has)g(columns)f +(with)g(the)i(TF)m(ORM)g(k)m(eyw)m(ords)g(equal)f(to)h('1E')h(and)e +('1J'.)h(In)f(the)0 2391 y(former)27 b(case)i(the)f(10000)i(\015oating) +e(p)s(oin)m(t)f(v)-5 b(alues)27 b(in)g(the)h(\014rst)f(column)g(are)h +(all)f(written)g(in)f(a)i(con)m(tiguous)g(blo)s(c)m(k)0 +2503 y(of)e(the)f(\014le)g(whic)m(h)f(can)i(b)s(e)f(read)g(or)g +(written)g(quic)m(kly)-8 b(,)26 b(whereas)f(in)f(the)i(second)f(case)i +(eac)m(h)g(\015oating)e(p)s(oin)m(t)f(v)-5 b(alue)0 2616 +y(in)33 b(the)h(\014rst)f(column)f(is)h(in)m(terlea)m(v)m(ed)i(with)d +(the)i(in)m(teger)h(v)-5 b(alue)33 b(in)g(the)h(second)g(column)e(of)i +(the)g(same)h(ro)m(w)f(so)0 2729 y(CFITSIO)29 b(has)h(to)h(explicitly)d +(mo)m(v)m(e)k(to)f(the)g(p)s(osition)d(of)j(eac)m(h)g(elemen)m(t)g(to)g +(b)s(e)f(read)g(or)g(written.)0 2889 y(8.)52 b(Av)m(oid)34 +b(the)h(use)e(of)i(v)-5 b(ariable)32 b(length)i(v)m(ector)i(columns)c +(in)h(binary)g(tables,)i(since)e(an)m(y)i(reading)e(or)h(writing)0 +3002 y(of)f(these)g(data)g(requires)e(that)i(CFITSIO)f(\014rst)f(lo)s +(ok)i(up)e(or)i(compute)g(the)f(starting)h(address)f(of)g(eac)m(h)i(ro) +m(w)f(of)0 3115 y(data)e(in)e(the)i(heap.)0 3275 y(9.)40 +b(When)26 b(cop)m(ying)g(data)i(from)e(one)g(FITS)g(table)g(to)h +(another,)h(it)e(is)g(faster)g(to)i(transfer)e(the)g(ra)m(w)h(b)m(ytes) +g(instead)0 3388 y(of)f(reading)f(then)h(writing)e(eac)m(h)j(column)d +(of)j(the)f(table.)39 b(The)25 b(FITSIO)g(subroutines)f(FTGTBS)h(and)h +(FTPTBS)0 3501 y(\(for)i(ASCI)s(I)f(tables\),)i(and)e(FTGTBB)i(and)e +(FTPTBB)i(\(for)f(binary)e(tables\))i(will)e(p)s(erform)g(lo)m(w-lev)m +(el)i(reads)g(or)0 3614 y(writes)33 b(of)i(an)m(y)f(con)m(tiguous)h +(range)g(of)f(b)m(ytes)h(in)e(a)i(table)f(extension.)52 +b(These)34 b(routines)f(can)i(b)s(e)e(used)h(to)h(read)0 +3727 y(or)29 b(write)f(a)h(whole)f(ro)m(w)g(\(or)i(m)m(ultiple)c(ro)m +(ws\))j(of)g(a)g(table)g(with)e(a)i(single)e(subroutine)g(call.)39 +b(These)29 b(routines)f(are)0 3840 y(fast)38 b(b)s(ecause)f(they)h(b)m +(ypass)f(all)f(the)i(usual)e(data)i(scaling,)h(error)e(c)m(hec)m(king)h +(and)f(mac)m(hine)g(dep)s(enden)m(t)f(data)0 3953 y(con)m(v)m(ersion)k +(that)h(is)d(normally)h(done)g(b)m(y)h(FITSIO,)f(and)g(they)h(allo)m(w) +f(the)h(program)g(to)h(write)e(the)h(data)g(to)0 4066 +y(the)34 b(output)g(\014le)f(in)g(exactly)i(the)f(same)h(b)m(yte)g +(order.)51 b(F)-8 b(or)35 b(these)g(same)f(reasons,)i(use)e(of)g(these) +h(routines)e(can)0 4179 y(b)s(e)g(somewhat)h(risky)e(b)s(ecause)h(no)g +(v)-5 b(alidation)32 b(or)i(mac)m(hine)f(dep)s(enden)m(t)f(con)m(v)m +(ersion)i(is)e(p)s(erformed)g(b)m(y)h(these)0 4292 y(routines.)39 +b(In)27 b(general)g(these)i(routines)d(are)i(only)f(recommended)g(for)h +(optimizing)e(critical)g(pieces)i(of)g(co)s(de)g(and)0 +4405 y(should)d(only)i(b)s(e)g(used)f(b)m(y)i(programmers)e(who)h +(thoroughly)g(understand)e(the)j(in)m(ternal)e(b)m(yte)i(structure)f +(of)h(the)0 4517 y(FITS)i(tables)g(they)g(are)h(reading)f(or)g +(writing.)0 4678 y(10.)41 b(Another)30 b(strategy)g(for)g(impro)m(ving) +d(the)j(sp)s(eed)e(of)i(writing)e(a)h(FITS)g(table,)h(similar)d(to)j +(the)f(previous)f(one,)0 4791 y(is)j(to)h(directly)f(construct)h(the)f +(en)m(tire)h(b)m(yte)g(stream)g(for)g(a)g(whole)f(table)g(ro)m(w)h +(\(or)g(m)m(ultiple)e(ro)m(ws\))i(within)d(the)0 4903 +y(application)j(program)i(and)g(then)f(write)h(it)f(to)i(the)f(FITS)f +(\014le)h(with)e(ftptbb.)51 b(This)32 b(a)m(v)m(oids)j(all)e(the)h(o)m +(v)m(erhead)0 5016 y(normally)e(presen)m(t)i(in)e(the)i(column-orien)m +(ted)f(CFITSIO)f(write)h(routines.)50 b(This)32 b(tec)m(hnique)h +(should)f(only)h(b)s(e)0 5129 y(used)26 b(for)h(critical)f +(applications,)g(b)s(ecause)g(it)h(mak)m(es)h(the)f(co)s(de)g(more)g +(di\016cult)e(to)i(understand)e(and)i(main)m(tain,)0 +5242 y(and)d(it)g(mak)m(es)i(the)f(co)s(de)g(more)f(system)h(dep)s +(enden)m(t)f(\(e.g.,)k(do)c(the)h(b)m(ytes)g(need)g(to)g(b)s(e)f(sw)m +(app)s(ed)g(b)s(efore)g(writing)0 5355 y(to)31 b(the)g(FITS)e +(\014le?\).)0 5515 y(11.)53 b(Finally)-8 b(,)34 b(external)g(factors)i +(suc)m(h)e(as)g(the)h(t)m(yp)s(e)f(of)h(magnetic)f(disk)f(con)m +(troller)h(\(SCSI)f(or)i(IDE\),)g(the)f(size)0 5628 y(of)h(the)g(disk)f +(cac)m(he,)k(the)d(a)m(v)m(erage)i(seek)f(sp)s(eed)e(of)h(the)g(disk,)g +(the)g(amoun)m(t)h(of)f(disk)e(fragmen)m(tation,)k(and)e(the)p +eop +%%Page: 60 66 +60 65 bop 0 299 a Fi(60)1277 b Fg(CHAPTER)29 b(6.)72 +b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y +Fi(amoun)m(t)e(of)g(RAM)f(a)m(v)-5 b(ailable)28 b(on)h(the)f(system)h +(can)g(all)e(ha)m(v)m(e)j(a)f(signi\014can)m(t)e(impact)i(on)f(o)m(v)m +(erall)h(I/O)f(e\016ciency)-8 b(.)0 668 y(F)g(or)36 b(critical)e +(applications,)g(a)i(system)f(administrator)e(should)g(review)h(the)i +(prop)s(osed)d(system)j(hardw)m(are)e(to)0 781 y(iden)m(tify)29 +b(an)m(y)i(p)s(oten)m(tial)e(I/O)i(b)s(ottlenec)m(ks.)p +eop +%%Page: 61 67 +61 66 bop 0 1225 a Ff(Chapter)65 b(7)0 1687 y Fl(The)77 +b(CFITSIO)f(Iterator)i(F)-19 b(unction)0 2180 y Fi(The)41 +b(\014ts)p 325 2180 28 4 v 33 w(iterate)p 615 2180 V +33 w(data)i(function)d(in)h(CFITSIO)f(pro)m(vides)h(a)h(unique)d(metho) +s(d)j(of)g(executing)g(an)f(arbitrary)0 2293 y(user-supplied)33 +b(`w)m(ork')k(function)e(that)i(op)s(erates)g(on)g(ro)m(ws)f(of)h(data) +g(in)e(FITS)h(tables)g(or)g(on)h(pixels)d(in)i(FITS)0 +2406 y(images.)i(Rather)24 b(than)e(explicitly)f(reading)h(and)h +(writing)e(the)i(FITS)g(images)g(or)g(columns)f(of)h(data,)i(one)f +(instead)0 2518 y(calls)34 b(the)i(CFITSIO)d(iterator)j(routine,)g +(passing)e(to)i(it)f(the)g(name)g(of)h(the)f(user's)g(w)m(ork)g +(function)f(that)i(is)e(to)0 2631 y(b)s(e)c(executed)h(along)f(with)f +(a)i(list)e(of)h(all)f(the)i(table)f(columns)f(or)h(image)g(arra)m(ys)h +(that)g(are)f(to)h(b)s(e)f(passed)g(to)h(the)0 2744 y(w)m(ork)37 +b(function.)60 b(The)37 b(CFITSIO)e(iterator)j(function)e(then)h(do)s +(es)g(all)f(the)h(w)m(ork)g(of)h(allo)s(cating)e(memory)h(for)0 +2857 y(the)28 b(arra)m(ys,)h(reading)e(the)h(input)d(data)k(from)e(the) +h(FITS)f(\014le,)g(passing)g(them)h(to)g(the)g(w)m(ork)g(function,)f +(and)g(then)0 2970 y(writing)34 b(an)m(y)j(output)f(data)h(bac)m(k)h +(to)f(the)f(FITS)g(\014le)f(after)i(the)g(w)m(ork)g(function)e(exits.) +58 b(Because)38 b(it)e(is)g(often)0 3083 y(more)h(e\016cien)m(t)h(to)g +(pro)s(cess)f(only)f(a)i(subset)f(of)g(the)g(total)h(table)g(ro)m(ws)f +(at)h(one)f(time,)i(the)f(iterator)f(function)0 3196 +y(can)f(determine)f(the)i(optim)m(um)e(amoun)m(t)h(of)g(data)h(to)g +(pass)e(in)g(eac)m(h)i(iteration)f(and)f(rep)s(eatly)g(call)h(the)g(w)m +(ork)0 3309 y(function)29 b(un)m(til)g(the)h(en)m(tire)h(table)f(b)s +(een)f(pro)s(cessed.)0 3469 y(F)-8 b(or)37 b(man)m(y)f(applications)e +(this)g(single)h(CFITSIO)f(iterator)j(function)d(can)i(e\013ectiv)m +(ely)h(replace)f(all)f(the)h(other)0 3582 y(CFITSIO)g(routines)h(for)g +(reading)g(or)g(writing)f(data)i(in)e(FITS)h(images)h(or)f(tables.)63 +b(Using)36 b(the)i(iterator)g(has)0 3695 y(sev)m(eral)31 +b(imp)s(ortan)m(t)e(adv)-5 b(an)m(tages)32 b(o)m(v)m(er)g(the)f +(traditional)d(metho)s(d)i(of)h(reading)e(and)h(writing)e(FITS)i(data)h +(\014les:)136 3961 y Fc(\017)46 b Fi(It)33 b(cleanly)f(separates)i(the) +f(data)h(I/O)f(from)f(the)h(routine)f(that)i(op)s(erates)f(on)g(the)g +(data.)49 b(This)31 b(leads)h(to)227 4074 y(a)f(more)g(mo)s(dular)d +(and)i(`ob)5 b(ject)31 b(orien)m(ted')g(programming)e(st)m(yle.)136 +4268 y Fc(\017)46 b Fi(It)27 b(simpli\014es)c(the)k(application)e +(program)i(b)m(y)f(eliminating)e(the)j(need)g(to)g(allo)s(cate)g +(memory)g(for)f(the)h(data)227 4381 y(arra)m(ys)e(and)f(eliminates)f +(most)h(of)h(the)f(calls)g(to)h(the)g(CFITSIO)d(routines)i(that)h +(explicitly)d(read)i(and)g(write)227 4494 y(the)31 b(data.)136 +4689 y Fc(\017)46 b Fi(It)32 b(ensures)e(that)i(the)g(data)g(are)g(pro) +s(cessed)f(as)h(e\016cien)m(tly)f(as)g(p)s(ossible.)42 +b(This)30 b(is)g(esp)s(ecially)g(imp)s(ortan)m(t)227 +4801 y(when)44 b(pro)s(cessing)f(tabular)h(data)i(since)e(the)h +(iterator)g(function)e(will)f(calculate)j(the)g(most)g(e\016cien)m(t) +227 4914 y(n)m(um)m(b)s(er)36 b(of)i(ro)m(ws)g(in)e(the)i(table)f(to)h +(b)s(e)f(passed)g(at)i(one)e(time)h(to)g(the)g(user's)e(w)m(ork)i +(function)e(on)i(eac)m(h)227 5027 y(iteration.)136 5222 +y Fc(\017)46 b Fi(Mak)m(es)39 b(it)d(p)s(ossible)f(for)i(larger)g(pro)5 +b(jects)37 b(to)h(dev)m(elop)f(a)h(library)c(of)k(w)m(ork)f(functions)f +(that)h(all)f(ha)m(v)m(e)j(a)227 5335 y(uniform)28 b(calling)h +(sequence)i(and)f(are)h(all)e(indep)s(enden)m(t)f(of)j(the)f(details)g +(of)g(the)h(FITS)e(\014le)h(format.)0 5601 y(There)g(are)h(basically)e +(2)j(steps)e(in)g(using)f(the)i(CFITSIO)e(iterator)i(function.)41 +b(The)30 b(\014rst)g(step)h(is)f(to)h(design)f(the)0 +5714 y(w)m(ork)c(function)e(itself)g(whic)m(h)g(m)m(ust)i(ha)m(v)m(e)g +(a)g(prescrib)s(ed)d(set)j(of)g(input)e(parameters.)39 +b(One)25 b(of)h(these)g(parameters)1905 5942 y(61)p eop +%%Page: 62 68 +62 67 bop 0 299 a Fi(62)1455 b Fg(CHAPTER)30 b(7.)112 +b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0 555 +y Fi(is)e(a)h(structure)g(con)m(taining)g(p)s(oin)m(ters)e(to)j(the)f +(arra)m(ys)h(of)f(data;)h(the)f(w)m(ork)h(function)d(can)j(p)s(erform)d +(an)m(y)i(desired)0 668 y(op)s(erations)j(on)i(these)f(arra)m(ys)h(and) +e(do)s(es)h(not)g(need)g(to)h(w)m(orry)f(ab)s(out)g(ho)m(w)g(the)h +(input)d(data)j(w)m(ere)f(read)g(from)0 781 y(the)e(\014le)e(or)h(ho)m +(w)h(the)f(output)g(data)h(get)h(written)d(bac)m(k)i(to)h(the)e +(\014le.)0 941 y(The)24 b(second)h(step)g(is)e(to)j(design)d(the)i +(driv)m(er)f(routine)f(that)j(op)s(ens)e(all)f(the)i(necessary)g(FITS)f +(\014les)g(and)g(initializes)0 1054 y(the)41 b(input)f(parameters)h(to) +h(the)g(iterator)f(function.)72 b(The)41 b(driv)m(er)f(program)h(calls) +f(the)i(CFITSIO)e(iterator)0 1167 y(function)29 b(whic)m(h)g(then)h +(reads)g(the)h(data)g(and)f(passes)g(it)g(to)h(the)g(user's)e(w)m(ork)i +(function.)0 1327 y(F)-8 b(urther)41 b(details)g(on)h(using)e(the)i +(iterator)g(function)f(can)h(b)s(e)f(found)f(in)h(the)h(companion)f +(CFITSIO)f(User's)0 1440 y(Guide,)30 b(and)f(in)g(the)i(iter)p +875 1440 28 4 v 32 w(a.f,)g(iter)p 1198 1440 V 33 w(b.f)f(and)f(iter)p +1678 1440 V 33 w(c.f)h(example)g(programs.)p eop +%%Page: 63 69 +63 68 bop 0 1225 a Ff(Chapter)65 b(8)0 1687 y Fl(Basic)77 +b(In)-6 b(terface)77 b(Routines)0 2180 y Fi(This)26 b(section)h +(de\014nes)g(a)h(basic)f(set)h(of)g(subroutines)d(that)j(can)g(b)s(e)f +(used)g(to)h(p)s(erform)e(the)i(most)g(common)g(t)m(yp)s(es)0 +2293 y(of)d(read)g(and)f(write)g(op)s(erations)g(on)h(FITS)f(\014les.) +38 b(New)25 b(users)f(should)f(start)i(with)f(these)h(subroutines)e +(and)h(then,)0 2406 y(as)33 b(needed,)h(explore)e(the)i(more)f(adv)-5 +b(ance)33 b(routines)f(describ)s(ed)f(in)h(the)h(follo)m(wing)f(c)m +(hapter)h(to)h(p)s(erform)e(more)0 2518 y(complex)e(or)g(sp)s +(ecialized)f(op)s(erations.)0 2679 y(A)h(righ)m(t)f(arro)m(w)h(sym)m(b) +s(ol)e(\()p Fa(>)p Fi(\))i(is)f(used)g(to)h(separate)h(the)e(input)f +(parameters)i(from)f(the)h(output)f(parameters)h(in)0 +2791 y(the)i(de\014nition)d(of)i(eac)m(h)i(routine.)43 +b(This)29 b(sym)m(b)s(ol)i(is)f(not)i(actually)f(part)g(of)h(the)f +(calling)f(sequence.)45 b(Note)32 b(that)0 2904 y(the)f(status)h +(parameter)g(is)e(b)s(oth)h(an)g(input)e(and)i(an)g(output)g(parameter) +h(and)e(m)m(ust)h(b)s(e)g(initialized)d(=)j(0)h(prior)0 +3017 y(to)f(calling)e(the)i(FITSIO)e(subroutines.)0 3177 +y(Refer)h(to)i(Chapter)d(9)i(for)f(the)h(de\014nition)d(of)i(all)g(the) +g(parameters)h(used)e(b)m(y)i(these)g(in)m(terface)f(routines.)0 +3525 y Fd(8.1)135 b(FITSIO)44 b(Error)h(Status)h(Routines)0 +3773 y Fh(1)81 b Fi(Return)24 b(the)i(curren)m(t)f(v)m(ersion)g(n)m(um) +m(b)s(er)f(of)i(the)f(\014tsio)g(library)-8 b(.)37 b(The)25 +b(v)m(ersion)g(n)m(um)m(b)s(er)f(will)f(b)s(e)h(incremen)m(ted)227 +3886 y(with)29 b(eac)m(h)j(new)e(release)g(of)h(CFITSIO.)382 +4157 y Fe(FTVERS\()46 b(>)h(version\))0 4429 y Fh(2)81 +b Fi(Return)45 b(the)i(descriptiv)m(e)e(text)i(string)f(corresp)s +(onding)e(to)j(a)g(FITSIO)e(error)h(status)h(co)s(de.)89 +b(The)46 b(30-)227 4541 y(c)m(haracter)32 b(length)e(string)f(con)m +(tains)i(a)g(brief)e(description)f(of)i(the)h(cause)g(of)f(the)h +(error.)382 4813 y Fe(FTGERR\(status,)44 b(>)j(errtext\))0 +5084 y Fh(3)81 b Fi(Return)40 b(the)h(top)g(\(oldest\))g(80-c)m +(haracter)j(error)c(message)i(from)f(the)g(in)m(ternal)e(FITSIO)h(stac) +m(k)i(of)f(error)227 5197 y(messages)29 b(and)f(shift)f(an)m(y)h +(remaining)e(messages)j(on)f(the)g(stac)m(k)i(up)d(one)h(lev)m(el.)40 +b(An)m(y)28 b(FITSIO)f(error)h(will)227 5310 y(generate)h(one)e(or)g +(more)h(messages)g(on)f(the)g(stac)m(k.)41 b(Call)26 +b(this)g(routine)g(rep)s(eatedly)g(to)i(get)h(eac)m(h)f(message)227 +5422 y(in)h(sequence.)41 b(The)30 b(error)g(stac)m(k)i(is)e(empt)m(y)g +(when)g(a)g(blank)f(string)h(is)f(returned.)382 5694 +y Fe(FTGMSG\()46 b(>)h(errmsg\))1905 5942 y Fi(63)p eop +%%Page: 64 70 +64 69 bop 0 299 a Fi(64)1747 b Fg(CHAPTER)30 b(8.)111 +b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0 555 +y Fh(4)81 b Fi(The)33 b(FTPMRK)h(routine)f(puts)h(an)g(in)m(visible)d +(mark)m(er)j(on)g(the)h(CFITSIO)d(error)i(stac)m(k.)54 +b(The)33 b(FTCMRK)227 668 y(routine)40 b(can)h(then)g(b)s(e)f(used)g +(to)h(delete)g(an)m(y)g(more)g(recen)m(t)h(error)e(messages)i(on)f(the) +g(stac)m(k,)k(bac)m(k)c(to)227 781 y(the)32 b(p)s(osition)d(of)i(the)g +(mark)m(er.)43 b(This)30 b(preserv)m(es)h(an)m(y)g(older)g(error)f +(messages)i(on)f(the)h(stac)m(k.)44 b(FTCMSG)227 894 +y(simply)21 b(clears)h(the)h(en)m(tire)g(error)f(message)i(stac)m(k.)40 +b(These)23 b(routines)e(are)i(called)f(without)g(an)m(y)h(argumen)m +(ts.)382 1152 y Fe(FTPMRK)382 1265 y(FTCMRK)382 1378 +y(FTCMSG)0 1637 y Fh(5)81 b Fi(Prin)m(t)29 b(out)i(the)g(error)f +(message)i(corresp)s(onding)d(to)i(the)g(input)e(status)i(v)-5 +b(alue)30 b(and)g(all)g(the)h(error)f(messages)227 1750 +y(on)g(the)h(FITSIO)e(stac)m(k)i(to)g(the)g(sp)s(eci\014ed)d(\014le)i +(stream)g(\(stream)h(can)g(b)s(e)e(either)h(the)g(string)f('STDOUT')227 +1863 y(or)i('STDERR'\).)f(If)g(the)h(input)d(status)j(v)-5 +b(alue)30 b(=)g(0)h(then)f(this)f(routine)g(do)s(es)h(nothing.)334 +2121 y Fe(FTRPRT)46 b(\(stream,)g(>)h(status\))0 2380 +y Fh(6)81 b Fi(W)-8 b(rite)38 b(an)g(80-c)m(haracter)j(message)e(to)g +(the)f(FITSIO)f(error)h(stac)m(k.)65 b(Application)36 +b(programs)i(should)e(not)227 2493 y(normally)29 b(write)g(to)j(the)e +(stac)m(k,)i(but)e(there)g(ma)m(y)h(b)s(e)f(some)h(situations)e(where)h +(this)f(is)h(desirable.)382 2751 y Fe(FTPMSG\(errmsg\))0 +3085 y Fd(8.2)135 b(File)46 b(I/O)f(Routines)0 3325 y +Fh(1)81 b Fi(Op)s(en)34 b(an)h(existing)g(FITS)f(\014le)h(with)f +(readonly)h(or)g(readwrite)g(access.)58 b(This)33 b(routine)i(alw)m(a)m +(ys)h(op)s(ens)f(the)227 3438 y(primary)29 b(arra)m(y)j(\(the)f +(\014rst)f(HDU\))i(of)f(the)h(\014le,)e(and)g(do)s(es)h(not)g(mo)m(v)m +(e)h(to)g(a)f(follo)m(wing)f(extension,)h(if)f(one)227 +3551 y(w)m(as)d(sp)s(eci\014ed)e(as)h(part)h(of)f(the)h(\014lename.)38 +b(Use)27 b(the)g(FTNOPN)f(routine)f(to)i(automatically)g(mo)m(v)m(e)h +(to)f(the)227 3664 y(extension.)43 b(This)30 b(routine)g(will)f(also)i +(op)s(en)g(IRAF)g(images)h(\(.imh)e(format)i(\014les\))f(and)f(ra)m(w)i +(binary)d(data)227 3776 y(arra)m(ys)f(with)e(READONL)-8 +b(Y)28 b(access)h(b)m(y)e(\014rst)g(con)m(v)m(erting)h(them)f(on)g(the) +h(\015y)f(in)m(to)g(virtual)f(FITS)h(images.)227 3889 +y(See)36 b(the)g(`Extended)f(File)g(Name)i(Syn)m(tax')f(c)m(hapter)g +(for)f(more)h(details.)56 b(The)35 b(second)h(routine)e(simply)227 +4002 y(op)s(ens)e(the)g(sp)s(eci\014ed)f(\014le)h(without)f(trying)h +(to)h(in)m(terpret)f(the)g(\014lename)g(using)f(the)h(extended)h +(\014lename)227 4115 y(syn)m(tax.)382 4374 y Fe +(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(blocksize,status\))382 +4487 y(FTDKOPEN\(unit,filename,r)o(wmo)o(de,)41 b(>)48 +b(blocksize,status\))0 4745 y Fh(2)81 b Fi(Op)s(en)24 +b(an)i(existing)f(FITS)g(\014le)g(with)f(readonly)h(or)h(readwrite)f +(access)i(and)f(mo)m(v)m(e)h(to)f(a)h(follo)m(wing)d(extension,)227 +4858 y(if)37 b(one)h(w)m(as)g(sp)s(eci\014ed)f(as)h(part)f(of)h(the)h +(\014lename.)62 b(\(e.g.,)42 b('\014lename.\014ts+2')37 +b(or)h('\014lename.\014ts[2]')h(will)227 4971 y(mo)m(v)m(e)f(to)g(the)e +(3rd)g(HDU)i(in)d(the)i(\014le\).)59 b(Note)37 b(that)h(this)d(routine) +h(di\013ers)f(from)h(FTOPEN)g(in)f(that)i(it)227 5084 +y(do)s(es)30 b(not)h(ha)m(v)m(e)h(the)e(redundan)m(t)f(blo)s(c)m(ksize) +h(argumen)m(t.)382 5342 y Fe(FTNOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))0 5601 y Fh(3)81 b Fi(Op)s(en)31 b(an)h(existing)f +(FITS)h(\014le)f(with)g(readonly)h(or)g(readwrite)g(access)h(and)f +(then)g(mo)m(v)m(e)i(to)f(the)g(\014rst)e(HDU)227 5714 +y(con)m(taining)25 b(signi\014can)m(t)g(data,)i(if)d(a\))j(an)e(HDU)h +(name)g(or)f(n)m(um)m(b)s(er)f(to)i(op)s(en)f(w)m(as)h(not)g +(explicitly)d(sp)s(eci\014ed)p eop +%%Page: 65 71 +65 70 bop 0 299 a Fg(8.2.)72 b(FILE)30 b(I/O)h(R)m(OUTINES)2693 +b Fi(65)227 555 y(as)31 b(part)g(of)g(the)g(\014lename,)g(and)f(b\))h +(if)f(the)h(FITS)f(\014le)g(con)m(tains)h(a)h(n)m(ull)c(primary)h(arra) +m(y)j(\(i.e.,)g(NAXIS)e(=)227 668 y(0\).)41 b(In)26 b(this)h(case,)i +(it)e(will)e(lo)s(ok)i(for)g(the)h(\014rst)e(IMA)m(GE)j(HDU)f(with)e +(NAXIS)h(>)h(0,)g(or)g(the)f(\014rst)g(table)g(that)227 +781 y(do)s(es)h(not)g(con)m(tain)f(the)h(strings)f(`GTI')h(\(Go)s(o)s +(d)f(Time)g(In)m(terv)-5 b(al\))28 b(or)g(`OBST)-8 b(ABLE')28 +b(in)e(the)i(EXTNAME)227 894 y(k)m(eyw)m(ord)37 b(v)-5 +b(alue.)60 b(FTTOPN)36 b(is)f(similar,)h(except)i(it)e(will)e(mo)m(v)m +(e)39 b(to)e(the)g(\014rst)f(signi\014can)m(t)g(table)g(HDU)227 +1007 y(\(skipping)24 b(o)m(v)m(er)i(an)m(y)g(image)g(HDUs\))h(in)d(the) +i(\014le)f(if)f(a)i(sp)s(eci\014c)f(HDU)h(name)g(or)g(n)m(um)m(b)s(er)e +(is)h(not)g(sp)s(eci\014ed.)227 1120 y(FTIOPN)30 b(will)e(mo)m(v)m(e)k +(to)f(the)f(\014rst)g(non-n)m(ull)e(image)j(HDU,)g(skipping)d(o)m(v)m +(er)j(an)m(y)g(tables.)382 1372 y Fe(FTDOPN\(unit,filename,rwm)o(ode)o +(,)42 b(>)47 b(status\))382 1485 y(FTTOPN\(unit,filename,rwm)o(ode)o(,) +42 b(>)47 b(status\))382 1598 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))0 1851 y Fh(4)81 b Fi(Op)s(en)30 b(and)h(initialize)e +(a)j(new)f(empt)m(y)h(FITS)e(\014le.)44 b(A)31 b(template)h(\014le)f +(ma)m(y)h(also)g(b)s(e)f(sp)s(eci\014ed)f(to)i(de\014ne)f(the)227 +1964 y(structure)h(of)h(the)g(new)f(\014le)f(\(see)j(section)e +(4.2.4\).)50 b(The)32 b(second)g(routine)g(simply)e(creates)k(the)f(sp) +s(eci\014ed)227 2077 y(\014le)d(without)f(trying)h(to)h(in)m(terpret)e +(the)i(\014lename)f(using)e(the)j(extended)f(\014lename)g(syn)m(tax.) +382 2330 y Fe(FTINIT\(unit,filename,blo)o(cks)o(ize,)41 +b(>)48 b(status\))382 2442 y(FTDKINIT\(unit,filename,b)o(loc)o(ksiz)o +(e,)42 b(>)47 b(status\))0 2695 y Fh(5)81 b Fi(Close)30 +b(a)g(FITS)g(\014le)f(previously)f(op)s(ened)i(with)f(ftop)s(en)h(or)g +(ftinit)382 2948 y Fe(FTCLOS\(unit,)44 b(>)k(status\))0 +3201 y Fh(6)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)e +(\(absolute\))h(HDU)h(in)f(the)g(FITS)g(\014le)f(\(nhdu)g(=)h(1)h(for)f +(the)g(FITS)g(primary)e(arra)m(y\))382 3453 y Fe(FTMAHD\(unit,nhdu,)43 +b(>)k(hdutype,status\))0 3706 y Fh(7)81 b Fi(Create)30 +b(a)f(primary)e(arra)m(y)j(\(if)f(none)g(already)f(exists\),)i(or)f +(insert)f(a)i(new)f(IMA)m(GE)h(extension)f(immediately)227 +3819 y(follo)m(wing)22 b(the)h(CHDU,)g(or)g(insert)f(a)h(new)g(Primary) +e(Arra)m(y)i(at)h(the)f(b)s(eginning)d(of)j(the)g(\014le.)37 +b(An)m(y)23 b(follo)m(wing)227 3932 y(extensions)28 b(in)g(the)h +(\014le)e(will)f(b)s(e)i(shifted)g(do)m(wn)g(to)h(mak)m(e)h(ro)s(om)e +(for)h(the)g(new)f(extension.)39 b(If)29 b(the)g(CHDU)227 +4045 y(is)g(the)h(last)f(HDU)h(in)f(the)g(\014le)g(then)g(the)h(new)f +(image)h(extension)f(will)e(simply)g(b)s(e)i(app)s(ended)f(to)i(the)g +(end)227 4158 y(of)k(the)h(\014le.)51 b(One)33 b(can)h(force)h(a)g(new) +e(primary)f(arra)m(y)j(to)g(b)s(e)e(inserted)g(at)i(the)f(b)s(eginning) +d(of)j(the)h(FITS)227 4271 y(\014le)29 b(b)m(y)g(setting)g(status)h(=)f +(-9)h(prior)e(to)i(calling)d(the)j(routine.)39 b(In)29 +b(this)f(case)i(the)g(old)e(primary)g(arra)m(y)i(will)227 +4384 y(b)s(e)c(con)m(v)m(erted)j(to)e(an)g(IMA)m(GE)g(extension.)39 +b(The)27 b(new)f(extension)g(\(or)h(primary)e(arra)m(y\))j(will)c(b)s +(ecome)j(the)227 4496 y(CHDU.)382 4749 y Fe(FTIIMG\(unit,bitpix,naxis)o +(,na)o(xes,)41 b(>)48 b(status\))0 5002 y Fh(8)81 b Fi(Insert)30 +b(a)i(new)f(ASCI)s(I)f(T)-8 b(ABLE)31 b(extension)g(immediately)f +(follo)m(wing)f(the)j(CHDU.)g(An)m(y)f(follo)m(wing)f(exten-)227 +5115 y(sions)25 b(will)e(b)s(e)i(shifted)f(do)m(wn)h(to)h(mak)m(e)h(ro) +s(om)e(for)h(the)f(new)g(extension.)39 b(If)25 b(there)h(are)g(no)g +(other)f(follo)m(wing)227 5228 y(extensions)31 b(then)g(the)h(new)f +(table)g(extension)g(will)e(simply)g(b)s(e)i(app)s(ended)f(to)i(the)f +(end)g(of)h(the)f(\014le.)43 b(The)227 5341 y(new)30 +b(extension)g(will)e(b)s(ecome)j(the)f(CHDU.)382 5593 +y Fe(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o(ol,t) +o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 5706 +y(status\))p eop +%%Page: 66 72 +66 71 bop 0 299 a Fi(66)1747 b Fg(CHAPTER)30 b(8.)111 +b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0 555 +y Fh(9)81 b Fi(Insert)26 b(a)h(new)g(binary)e(table)h(extension)h +(immediately)e(follo)m(wing)h(the)h(CHDU.)g(An)m(y)g(follo)m(wing)e +(extensions)227 668 y(will)36 b(b)s(e)i(shifted)f(do)m(wn)h(to)h(mak)m +(e)g(ro)s(om)g(for)f(the)g(new)g(extension.)65 b(If)38 +b(there)h(are)f(no)h(other)f(follo)m(wing)227 781 y(extensions)e(then)h +(the)f(new)g(bin)m(table)f(extension)i(will)d(simply)g(b)s(e)i(app)s +(ended)e(to)k(the)e(end)g(of)h(the)g(\014le.)227 894 +y(The)30 b(new)g(extension)g(will)e(b)s(ecome)j(the)f(CHDU.)382 +1137 y Fe(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o(rm,)o(tuni)o +(t,ex)o(tna)o(me,v)o(arid)o(at)41 b(>)48 b(status\))0 +1468 y Fd(8.3)135 b(Keyw)l(ord)46 b(I/O)f(Routines)0 +1705 y Fh(1)81 b Fi(Put)30 b(\(app)s(end\))f(an)h(80-c)m(haracter)j +(record)e(in)m(to)f(the)h(CHU.)382 1948 y Fe(FTPREC\(unit,card,)43 +b(>)k(status\))0 2191 y Fh(2)81 b Fi(Put)28 b(\(app)s(end\))g(a)h(new)g +(k)m(eyw)m(ord)g(of)g(the)g(appropriate)f(datat)m(yp)s(e)i(in)m(to)f +(the)g(CHU.)g(The)f(E)h(and)f(D)i(v)m(ersions)227 2304 +y(of)24 b(this)e(routine)g(ha)m(v)m(e)i(the)g(added)e(feature)i(that)g +(if)e(the)h('decimals')g(parameter)h(is)e(negativ)m(e,)k(then)d(the)g +('G')227 2417 y(displa)m(y)28 b(format)i(rather)f(then)g(the)h('E')f +(format)h(will)d(b)s(e)i(used)f(when)h(constructing)g(the)g(k)m(eyw)m +(ord)h(v)-5 b(alue,)227 2530 y(taking)26 b(the)h(absolute)f(v)-5 +b(alue)25 b(of)i('decimals')e(for)h(the)h(precision.)37 +b(This)25 b(will)e(suppress)h(trailing)h(zeros,)j(and)227 +2643 y(will)34 b(use)j(a)g(\014xed)f(format)h(rather)g(than)f(an)h(exp) +s(onen)m(tial)e(format,)k(dep)s(ending)34 b(on)j(the)g(magnitude)f(of) +227 2755 y(the)31 b(v)-5 b(alue.)382 2998 y Fe +(FTPKY[JLS]\(unit,keyword,)o(key)o(val,)o(comm)o(ent)o(,)42 +b(>)47 b(status\))382 3111 y(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o +(,dec)o(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0 +3354 y Fh(3)81 b Fi(Get)37 b(the)f(n)m(th)f(80-c)m(haracter)k(header)d +(record)g(from)f(the)h(CHU.)h(The)e(\014rst)g(k)m(eyw)m(ord)i(in)d(the) +i(header)g(is)f(at)227 3467 y(k)m(ey)p 365 3467 28 4 +v 34 w(no)42 b(=)f(1;)49 b(if)41 b(k)m(ey)p 996 3467 +V 34 w(no)h(=)f(0)i(then)e(this)g(subroutine)f(simple)g(mo)m(v)m(es)k +(the)e(in)m(ternal)f(p)s(oin)m(ter)g(to)i(the)227 3580 +y(b)s(eginning)33 b(of)j(the)g(header)f(so)h(that)g(subsequen)m(t)f(k)m +(eyw)m(ord)h(op)s(erations)f(will)e(start)j(at)g(the)g(top)g(of)g(the) +227 3693 y(header;)31 b(it)f(also)g(returns)f(a)i(blank)e(card)h(v)-5 +b(alue)30 b(in)f(this)g(case.)382 3936 y Fe(FTGREC\(unit,key_no,)42 +b(>)48 b(card,status\))0 4178 y Fh(4)81 b Fi(Get)31 b(a)g(k)m(eyw)m +(ord)g(v)-5 b(alue)29 b(\(with)h(the)g(appropriate)g(datat)m(yp)s(e\))h +(and)f(commen)m(t)i(from)e(the)g(CHU)382 4421 y Fe +(FTGKY[EDJLS]\(unit,keywor)o(d,)41 b(>)48 b(keyval,comment,status\))0 +4664 y Fh(5)81 b Fi(Delete)31 b(an)f(existing)g(k)m(eyw)m(ord)h +(record.)382 4907 y Fe(FTDKEY\(unit,keyword,)42 b(>)48 +b(status\))0 5238 y Fd(8.4)135 b(Data)46 b(I/O)g(Routines)0 +5488 y Fi(The)32 b(follo)m(wing)f(routines)g(read)i(or)f(write)g(data)h +(v)-5 b(alues)32 b(in)f(the)i(curren)m(t)f(HDU)i(of)e(the)h(FITS)f +(\014le.)46 b(Automatic)0 5601 y(datat)m(yp)s(e)28 b(con)m(v)m(ersion)g +(will)c(b)s(e)j(attempted)h(for)g(n)m(umerical)d(datat)m(yp)s(es)k(if)d +(the)h(sp)s(eci\014ed)f(datat)m(yp)s(e)i(is)e(di\013eren)m(t)0 +5714 y(from)k(the)g(actual)h(datat)m(yp)s(e)h(of)e(the)h(FITS)e(arra)m +(y)i(or)f(table)h(column.)p eop +%%Page: 67 73 +67 72 bop 0 299 a Fg(8.4.)72 b(D)m(A)-8 b(T)g(A)32 b(I/O)f(R)m(OUTINES) +2650 b Fi(67)0 555 y Fh(1)81 b Fi(W)-8 b(rite)30 b(elemen)m(ts)h(in)m +(to)f(the)h(primary)d(data)k(arra)m(y)e(or)h(image)f(extension.)382 +771 y Fe(FTPPR[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o(ts,v)o +(alue)o(s,)41 b(>)48 b(status\))0 987 y Fh(2)81 b Fi(Read)30 +b(elemen)m(ts)i(from)e(the)h(primary)d(data)k(arra)m(y)f(or)g(image)g +(extension.)41 b(Unde\014ned)29 b(arra)m(y)j(elemen)m(ts)f(will)227 +1100 y(b)s(e)g(returned)f(with)g(a)i(v)-5 b(alue)30 b(=)h(n)m(ullv)-5 +b(al,)30 b(unless)f(n)m(ullv)-5 b(al)29 b(=)i(0)h(in)e(whic)m(h)g(case) +i(no)f(c)m(hec)m(ks)i(for)e(unde\014ned)227 1213 y(pixels)f(will)e(b)s +(e)i(p)s(erformed.)42 b(The)30 b(an)m(yf)i(parameter)f(is)f(set)i(to)g +(true)f(\(=)g(.true.\))43 b(if)30 b(an)m(y)i(of)f(the)g(returned)227 +1326 y(elemen)m(ts)g(w)m(ere)g(unde\014ned.)382 1542 +y Fe(FTGPV[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o(ts,n)o(ullv) +o(al,)41 b(>)48 b(values,anyf,status\))0 1758 y Fh(3)81 +b Fi(W)-8 b(rite)35 b(elemen)m(ts)h(in)m(to)f(an)g(ASCI)s(I)e(or)i +(binary)f(table)h(column.)53 b(The)35 b(`felem')g(parameter)h(applies)d +(only)h(to)227 1871 y(v)m(ector)e(columns)d(in)g(binary)g(tables)h(and) +g(is)f(ignored)h(when)f(writing)g(to)i(ASCI)s(I)d(tables.)382 +2087 y Fe(FTPCL[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)o(ele)o(m,ne)o +(leme)o(nts)o(,val)o(ues,)41 b(>)47 b(status\))0 2303 +y Fh(4)81 b Fi(Read)22 b(elemen)m(ts)g(from)f(an)g(ASCI)s(I)g(or)g +(binary)f(table)i(column.)37 b(Unde\014ned)20 b(arra)m(y)i(elemen)m(ts) +g(will)d(b)s(e)i(returned)227 2416 y(with)31 b(a)i(v)-5 +b(alue)32 b(=)g(n)m(ullv)-5 b(al,)31 b(unless)g(n)m(ullv)-5 +b(al)29 b(=)k(0)f(\(or)h(=)f(')h(')f(for)g(ftgcvs\))i(in)d(whic)m(h)g +(case)j(no)e(c)m(hec)m(king)h(for)227 2529 y(unde\014ned)23 +b(v)-5 b(alues)24 b(will)e(b)s(e)j(p)s(erformed.)37 b(The)24 +b(ANYF)i(parameter)f(is)f(set)i(to)f(true)g(if)f(an)m(y)h(of)g(the)g +(returned)227 2642 y(elemen)m(ts)31 b(are)g(unde\014ned.)227 +2785 y(An)m(y)d(column,)g(regardless)f(of)h(it's)g(in)m(trinsic)d +(datat)m(yp)s(e,)30 b(ma)m(y)e(b)s(e)f(read)h(as)g(a)h(string.)39 +b(It)28 b(should)d(b)s(e)j(noted)227 2898 y(ho)m(w)m(ev)m(er)k(that)f +(reading)e(a)i(n)m(umeric)e(column)g(as)i(a)g(string)e(is)g(10)j(-)e +(100)i(times)e(slo)m(w)m(er)g(than)g(reading)g(the)227 +3011 y(same)36 b(column)e(as)i(a)g(n)m(um)m(b)s(er)e(due)g(to)j(the)e +(large)h(o)m(v)m(erhead)g(in)e(constructing)h(the)h(formatted)g +(strings.)227 3124 y(The)i(displa)m(y)e(format)i(of)g(the)g(returned)f +(strings)f(will)f(b)s(e)j(determined)e(b)m(y)i(the)g(TDISPn)f(k)m(eyw)m +(ord,)j(if)227 3237 y(it)c(exists,)h(otherwise)f(b)m(y)g(the)g(datat)m +(yp)s(e)h(of)f(the)h(column.)56 b(The)36 b(length)f(of)i(the)f +(returned)f(strings)g(can)227 3350 y(b)s(e)29 b(determined)e(with)h +(the)h(ftgcdw)g(routine.)39 b(The)28 b(follo)m(wing)g(TDISPn)f(displa)m +(y)h(formats)h(are)g(curren)m(tly)227 3463 y(supp)s(orted:)418 +3661 y Fe(Iw.m)142 b(Integer)418 3774 y(Ow.m)g(Octal)47 +b(integer)418 3887 y(Zw.m)142 b(Hexadecimal)45 b(integer)418 +4000 y(Fw.d)142 b(Fixed)47 b(floating)e(point)418 4113 +y(Ew.d)142 b(Exponential)45 b(floating)h(point)418 4226 +y(Dw.d)142 b(Exponential)45 b(floating)h(point)418 4339 +y(Gw.d)142 b(General;)46 b(uses)g(Fw.d)h(if)g(significance)e(not)i +(lost,)f(else)h(Ew.d)227 4538 y Fi(where)24 b(w)h(is)e(the)i(width)e +(in)g(c)m(haracters)j(of)f(the)g(displa)m(y)m(ed)e(v)-5 +b(alues,)26 b(m)e(is)g(the)g(minim)m(um)e(n)m(um)m(b)s(er)i(of)g +(digits)227 4651 y(displa)m(y)m(ed,)29 b(and)g(d)h(is)e(the)j(n)m(um)m +(b)s(er)d(of)i(digits)e(to)j(the)f(righ)m(t)g(of)g(the)g(decimal.)39 +b(The)29 b(.m)h(\014eld)f(is)g(optional.)382 4867 y Fe +(FTGCV[SBIJEDCM]\(unit,col)o(num)o(,fro)o(w,fe)o(lem)o(,nel)o(emen)o +(ts,)o(null)o(val,)41 b(>)1098 4980 y(values,anyf,status\))0 +5196 y Fh(5)81 b Fi(Get)42 b(the)g(table)g(column)e(n)m(um)m(b)s(er)h +(and)g(full)e(name)j(of)g(the)f(column)g(whose)g(name)h(matc)m(hes)h +(the)f(input)227 5309 y(template)34 b(string.)47 b(See)33 +b(the)h(`Adv)-5 b(anced)33 b(In)m(terface)h(Routines')e(c)m(hapter)i +(for)f(a)g(full)e(description)g(of)i(this)227 5422 y(routine.)382 +5638 y Fe(FTGCNN\(unit,casesen,colt)o(emp)o(late)o(,)42 +b(>)47 b(colname,colnum,status\))p eop +%%Page: 68 74 +68 73 bop 0 299 a Fi(68)1747 b Fg(CHAPTER)30 b(8.)111 +b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)p eop +%%Page: 69 75 +69 74 bop 0 1225 a Ff(Chapter)65 b(9)0 1687 y Fl(Adv)-13 +b(anced)78 b(In)-6 b(terface)77 b(Subroutines)0 2180 +y Fi(This)30 b(c)m(hapter)i(de\014nes)f(all)f(the)i(a)m(v)-5 +b(ailable)31 b(subroutines)f(in)g(the)i(FITSIO)e(user)h(in)m(terface.) +45 b(F)-8 b(or)33 b(completeness,)0 2293 y(the)43 b(basic)f +(subroutines)e(describ)s(ed)g(in)i(the)g(previous)g(c)m(hapter)h(are)g +(also)f(rep)s(eated)h(here.)77 b(A)43 b(righ)m(t)f(arro)m(w)0 +2406 y(sym)m(b)s(ol)28 b(is)f(used)h(here)h(to)g(separate)h(the)f +(input)e(parameters)i(from)f(the)h(output)g(parameters)g(in)e(the)i +(de\014nition)0 2518 y(of)k(eac)m(h)h(subroutine.)46 +b(This)31 b(sym)m(b)s(ol)h(is)g(not)h(actually)g(part)f(of)h(the)h +(calling)d(sequence.)49 b(An)32 b(alphab)s(etical)f(list)0 +2631 y(and)f(de\014nition)e(of)i(all)g(the)g(parameters)h(is)e(giv)m +(en)i(at)g(the)f(end)g(of)h(this)e(section.)0 2961 y +Fd(9.1)135 b(FITS)44 b(File)i(Op)t(en)e(and)h(Close)h(Subroutines:)0 +3197 y Fh(1)81 b Fi(Op)s(en)39 b(an)h(existing)f(FITS)h(\014le)f(with)g +(readonly)h(or)g(readwrite)g(access.)72 b(FTDOPN)41 b(also)f(mo)m(v)m +(es)i(to)f(the)227 3310 y(\014rst)30 b(HDU)h(con)m(taining)f +(signi\014can)m(t)f(data,)j(if)d(no)h(sp)s(eci\014c)f(HDU)i(is)f(sp)s +(eci\014ed)f(as)h(part)g(of)h(the)f(\014lename.)227 3423 +y(FTTOPN)39 b(and)h(FTIOPN)f(are)h(similar)d(except)k(that)g(they)f +(will)d(mo)m(v)m(e)k(to)g(the)f(\014rst)f(table)g(HDU)i(or)227 +3536 y(image)31 b(HDU,)g(resp)s(ectiv)m(ely)-8 b(,)31 +b(if)e(a)i(HDU)g(name)f(or)h(n)m(um)m(b)s(er)e(is)g(not)i(sp)s +(eci\014ed)d(as)j(part)f(of)h(the)f(\014lename.)382 3770 +y Fe(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b +(blocksize,status\))382 3883 y(FTDOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))382 3996 y(FTTOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))382 4108 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))0 4343 y Fh(2)81 b Fi(Op)s(en)24 b(an)i(existing)f +(FITS)g(\014le)g(with)f(readonly)h(or)h(readwrite)f(access)i(and)f(mo)m +(v)m(e)h(to)f(a)h(follo)m(wing)d(extension,)227 4455 +y(if)37 b(one)h(w)m(as)g(sp)s(eci\014ed)f(as)h(part)f(of)h(the)h +(\014lename.)62 b(\(e.g.,)42 b('\014lename.\014ts+2')37 +b(or)h('\014lename.\014ts[2]')h(will)227 4568 y(mo)m(v)m(e)f(to)g(the)e +(3rd)g(HDU)i(in)d(the)i(\014le\).)59 b(Note)37 b(that)h(this)d(routine) +h(di\013ers)f(from)h(FTOPEN)g(in)f(that)i(it)227 4681 +y(do)s(es)30 b(not)h(ha)m(v)m(e)h(the)e(redundan)m(t)f(blo)s(c)m(ksize) +h(argumen)m(t.)382 4915 y Fe(FTNOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))0 5149 y Fh(3)81 b Fi(Reop)s(en)38 +b(a)i(FITS)e(\014le)h(that)g(w)m(as)h(previously)d(op)s(ened)h(with)g +(FTOPEN,)h(FTNOPN,)g(or)h(FTINIT.)e(The)227 5262 y(newunit)e(n)m(um)m +(b)s(er)g(ma)m(y)j(then)e(b)s(e)g(treated)i(as)f(a)g(separate)g +(\014le,)h(and)e(one)h(ma)m(y)h(sim)m(ultaneously)c(read)227 +5375 y(or)h(write)f(to)h(2)g(\(or)g(more\))g(di\013eren)m(t)f +(extensions)g(in)f(the)i(same)g(\014le.)55 b(The)35 b(FTOPEN)g(and)g +(FTNOPN)227 5488 y(routines)e(\(ab)s(o)m(v)m(e\))i(automatically)e +(detects)i(cases)g(where)e(a)g(previously)f(op)s(ened)g(\014le)h(is)g +(b)s(eing)f(op)s(ened)227 5601 y(again,)c(and)f(then)g(in)m(ternally)e +(call)h(FTREOPEN,)h(so)h(programs)e(should)g(rarely)g(need)h(to)h +(explicitly)d(call)227 5714 y(this)30 b(routine.)1905 +5942 y(69)p eop +%%Page: 70 76 +70 75 bop 0 299 a Fi(70)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)334 +555 y Fe(FTREOPEN\(unit,)44 b(>)j(newunit,)f(status\))0 +804 y Fh(4)81 b Fi(Op)s(en)29 b(and)g(initialize)f(a)j(new)f(empt)m(y)g +(FITS)g(\014le)334 1054 y Fe(FTINIT\(unit,filename,bloc)o(ksi)o(ze,)41 +b(>)48 b(status\))0 1303 y Fh(5)81 b Fi(Create)24 b(a)g(new)f(FITS)g +(\014le,)h(using)e(a)i(template)g(\014le)e(to)j(de\014ne)d(its)h +(initial)e(size)j(and)f(structure.)37 b(The)24 b(template)227 +1416 y(ma)m(y)39 b(b)s(e)f(another)h(FITS)e(HDU)i(or)g(an)f(ASCI)s(I)f +(template)i(\014le.)63 b(If)38 b(the)h(input)d(template)j(\014le)e +(name)i(is)227 1529 y(blank,)27 b(then)g(this)f(routine)g(b)s(eha)m(v)m +(es)i(the)f(same)h(as)f(FTINIT.)g(The)f(curren)m(tly)h(supp)s(orted)e +(format)i(of)h(the)227 1641 y(ASCI)s(I)c(template)i(\014le)f(is)f +(describ)s(ed)g(under)g(the)i(\014ts)p 2037 1641 28 4 +v 32 w(parse)p 2277 1641 V 33 w(template)f(routine)g(\(in)g(the)g +(general)h(Utilities)227 1754 y(section\),)31 b(but)f(this)f(ma)m(y)i +(c)m(hange)h(sligh)m(tly)d(later)h(releases)g(of)h(CFITSIO.)334 +2004 y Fe(FTTPLT\(unit,)45 b(filename,)g(tplfilename,)f(>)k(status\))0 +2253 y Fh(6)81 b Fi(Flush)32 b(in)m(ternal)g(bu\013ers)h(of)h(data)g +(to)g(the)g(output)g(FITS)f(\014le)g(previously)e(op)s(ened)i(with)f +(ftop)s(en)i(or)f(ftinit.)227 2366 y(The)j(routine)g(usually)e(nev)m +(er)j(needs)f(to)i(b)s(e)e(called,)h(but)f(doing)g(so)h(will)d(ensure)i +(that)h(if)e(the)i(program)227 2479 y(subsequen)m(tly)29 +b(ab)s(orts,)h(then)h(the)f(FITS)g(\014le)f(will)f(ha)m(v)m(e)k(at)f +(least)f(b)s(een)g(closed)g(prop)s(erly)-8 b(.)382 2728 +y Fe(FTFLUS\(unit,)44 b(>)k(status\))0 2977 y Fh(7)81 +b Fi(Close)30 b(a)g(FITS)g(\014le)f(previously)f(op)s(ened)i(with)f +(ftop)s(en)h(or)g(ftinit)382 3226 y Fe(FTCLOS\(unit,)44 +b(>)k(status\))0 3475 y Fh(8)81 b Fi(Close)33 b(and)g(DELETE)g(a)h +(FITS)f(\014le)g(previously)e(op)s(ened)i(with)f(ftop)s(en)h(or)h +(ftinit.)49 b(This)32 b(routine)g(ma)m(y)j(b)s(e)227 +3588 y(useful)28 b(in)h(cases)h(where)g(a)g(FITS)f(\014le)f(is)h +(created,)i(but)e(an)h(error)f(o)s(ccurs)h(whic)m(h)e(prev)m(en)m(ts)j +(the)e(complete)227 3701 y(\014le)h(from)g(b)s(eing)f(written.)382 +3950 y Fe(FTDELT\(unit,)44 b(>)k(status\))0 4199 y Fh(9)81 +b Fi(Get)31 b(the)g(v)-5 b(alue)30 b(of)g(an)g(un)m(used)g(I/O)g(unit)f +(n)m(um)m(b)s(er)g(whic)m(h)g(ma)m(y)i(then)f(b)s(e)g(used)g(as)g +(input)f(to)i(FTOPEN)f(or)227 4312 y(FTINIT.)36 b(This)e(routine)h +(searc)m(hes)i(for)f(the)g(\014rst)f(un)m(used)g(unit)f(n)m(um)m(b)s +(er)h(in)f(the)j(range)f(from)f(with)g(99)227 4425 y(do)m(wn)e(to)h +(50.)50 b(This)31 b(routine)h(just)h(k)m(eeps)h(an)f(in)m(ternal)f +(list)f(of)j(the)f(allo)s(cated)g(unit)f(n)m(um)m(b)s(ers)g(and)g(do)s +(es)227 4538 y(not)26 b(ph)m(ysically)d(c)m(hec)m(k)j(that)g(the)g(F)-8 +b(ortran)25 b(unit)f(is)g(a)m(v)-5 b(ailable)25 b(\(to)h(b)s(e)f +(compatible)f(with)g(the)h(SPP)f(v)m(ersion)227 4651 +y(of)35 b(FITSIO\).)g(Th)m(us)f(users)g(m)m(ust)h(not)g(indep)s(enden)m +(tly)d(allo)s(cate)j(an)m(y)h(unit)d(n)m(um)m(b)s(ers)h(in)g(the)h +(range)g(50)227 4764 y(-)42 b(99)g(if)e(this)g(routine)g(is)g(also)h +(to)h(b)s(e)f(used)f(in)g(the)h(same)h(program.)73 b(This)39 +b(routine)h(is)g(pro)m(vided)g(for)227 4877 y(con)m(v)m(enience)33 +b(only)-8 b(,)31 b(and)f(it)h(is)f(not)i(required)d(that)j(the)f(unit)f +(n)m(um)m(b)s(ers)g(used)g(b)m(y)h(FITSIO)f(b)s(e)h(allo)s(cated)227 +4990 y(b)m(y)g(this)e(routine.)382 5239 y Fe(FTGIOU\()46 +b(>)h(iounit,)f(status\))0 5488 y Fh(10)g Fi(F)-8 b(ree)34 +b(\(deallo)s(cate\))g(an)f(I/O)g(unit)e(n)m(um)m(b)s(er)h(whic)m(h)f(w) +m(as)i(previously)e(allo)s(cated)i(with)f(FTGIOU.)h(All)e(pre-)227 +5601 y(viously)26 b(allo)s(cated)i(unit)e(n)m(um)m(b)s(ers)g(ma)m(y)i +(b)s(e)f(deallo)s(cated)h(at)g(once)h(b)m(y)e(calling)f(FTFIOU)i(with)e +(iounit)g(=)227 5714 y(-1.)p eop +%%Page: 71 77 +71 76 bop 0 299 a Fg(9.1.)72 b(FITS)30 b(FILE)g(OPEN)g(AND)h(CLOSE)e +(SUBR)m(OUTINES:)1561 b Fi(71)382 555 y Fe(FTFIOU\(iounit,)44 +b(>)j(status\))0 788 y Fh(11)f Fi(Return)30 b(the)h(F)-8 +b(ortran)31 b(unit)f(n)m(um)m(b)s(er)f(that)i(corresp)s(onds)f(to)h +(the)g(C)g(\014ts\014le)e(p)s(oin)m(ter)h(v)-5 b(alue,)31 +b(or)f(vice)h(v)m(ersa.)227 901 y(These)37 b(2)h(C)f(routines)f(ma)m(y) +h(b)s(e)g(useful)e(in)h(mixed)g(language)i(programs)f(where)f(b)s(oth)h +(C)g(and)f(F)-8 b(ortran)227 1014 y(subroutines)24 b(need)h(to)i +(access)g(the)f(same)g(\014le.)39 b(F)-8 b(or)26 b(example,)h(if)e(a)h +(FITS)f(\014le)g(is)g(op)s(ened)g(with)f(unit)g(12)j(b)m(y)227 +1127 y(a)k(F)-8 b(ortran)31 b(subroutine,)e(then)h(a)h(C)f(routine)g +(within)e(the)i(same)h(program)g(could)e(get)j(the)e(\014t\014le)g(p)s +(oin)m(ter)227 1240 y(v)-5 b(alue)38 b(to)g(access)h(the)f(same)h +(\014le)e(b)m(y)g(calling)g('fptr)g(=)h(CUnit2FITS\(12\)'.)63 +b(These)38 b(routines)f(return)g(a)227 1353 y(v)-5 b(alue)30 +b(of)h(zero)g(if)e(an)h(error)g(o)s(ccurs.)286 1586 y +Fe(int)334 b(CFITS2Unit\(fitsfile)42 b(*ptr\);)286 1698 +y(fitsfile*)k(CUnit2FITS\(int)e(unit\);)0 1931 y Fh(11)i +Fi(P)m(arse)32 b(the)g(input)d(\014lename)i(and)g(return)f(the)i(HDU)g +(n)m(um)m(b)s(er)e(that)i(w)m(ould)e(b)s(e)h(mo)m(v)m(ed)i(to)f(if)e +(the)i(\014le)e(w)m(ere)227 2044 y(op)s(ened)j(with)f(FTNOPN.)h(The)f +(returned)g(HDU)i(n)m(um)m(b)s(er)e(b)s(egins)g(with)g(1)h(for)g(the)g +(primary)f(arra)m(y)-8 b(,)35 b(so)227 2157 y(for)d(example,)f(if)g +(the)h(input)e(\014lename)g(=)i(`m)m(y\014le.\014ts[2]')g(then)f(hdun)m +(um)e(=)j(3)g(will)d(b)s(e)i(returned.)43 b(FIT-)227 +2270 y(SIO)35 b(do)s(es)h(not)g(op)s(en)g(the)g(\014le)f(to)i(c)m(hec)m +(k)h(if)d(the)h(extension)g(actually)g(exists)f(if)h(an)f(extension)h +(n)m(um)m(b)s(er)227 2383 y(is)42 b(sp)s(eci\014ed.)74 +b(If)42 b(an)g(extension)g(*name*)h(is)e(included)f(in)h(the)h(\014le)f +(name)i(sp)s(eci\014cation)e(\(e.g.)77 b(`m)m(y-)227 +2496 y(\014le.\014ts[EVENTS]')29 b(then)g(this)g(routine)g(will)e(ha)m +(v)m(e)k(to)f(op)s(en)f(the)h(FITS)f(\014le)g(and)g(lo)s(ok)g(for)h +(the)g(p)s(osition)227 2609 y(of)38 b(the)h(named)e(extension,)j(then)e +(close)g(\014le)f(again.)63 b(This)37 b(is)g(not)h(p)s(ossible)d(if)i +(the)h(\014le)f(is)g(b)s(eing)g(read)227 2722 y(from)f(the)g(stdin)e +(stream,)k(and)d(an)h(error)f(will)e(b)s(e)j(returned)e(in)h(this)g +(case.)58 b(If)35 b(the)h(\014lename)f(do)s(es)h(not)227 +2835 y(sp)s(ecify)28 b(an)h(explicit)e(extension)i(\(e.g.)42 +b('m)m(y\014le.\014ts'\))29 b(then)g(hdun)m(um)e(=)h(-99)j(will)26 +b(b)s(e)j(returned,)f(whic)m(h)g(is)227 2948 y(functionally)j(equiv)-5 +b(alen)m(t)33 b(to)i(hdun)m(um)c(=)i(1.)50 b(This)32 +b(routine)g(is)h(mainly)f(used)g(for)i(bac)m(kw)m(ard)g(compati-)227 +3060 y(bilit)m(y)d(in)g(the)h(fto)s(ols)g(soft)m(w)m(are)i(pac)m(k)-5 +b(age)34 b(and)e(is)f(not)h(recommended)g(for)g(general)h(use.)46 +b(It)32 b(is)g(generally)227 3173 y(b)s(etter)j(and)g(more)g(e\016cien) +m(t)g(to)h(\014rst)e(op)s(en)g(the)h(FITS)f(\014le)g(with)g(FTNOPN,)h +(then)g(use)f(FTGHDN)i(to)227 3286 y(determine)29 b(whic)m(h)g(HDU)h +(in)e(the)i(\014le)f(has)h(b)s(een)f(op)s(ened,)g(rather)g(than)h +(calling)e(FTEXTN)i(follo)m(w)m(ed)f(b)m(y)227 3399 y(a)i(call)f(to)h +(FTNOPN.)382 3632 y Fe(FTEXTN\(filename,)43 b(>)48 b(nhdu,)e(status\))0 +3865 y Fh(12)g Fi(Return)30 b(the)g(name)h(of)f(the)h(op)s(ened)e(FITS) +h(\014le.)382 4098 y Fe(FTFLNM\(unit,)44 b(>)k(filename,)d(status\))0 +4331 y Fh(13)h Fi(Return)30 b(the)g(I/O)g(mo)s(de)g(of)h(the)g(op)s(en) +e(FITS)h(\014le)f(\(READONL)-8 b(Y)32 b(=)e(0,)h(READ)m(WRITE)g(=)f +(1\).)382 4564 y Fe(FTFLMD\(unit,)44 b(>)k(iomode,)e(status\))0 +4796 y Fh(14)g Fi(Return)30 b(the)g(\014le)g(t)m(yp)s(e)g(of)h(the)f +(op)s(ened)g(FITS)g(\014le)f(\(e.g.)42 b('\014le://',)31 +b('ftp://',)h(etc.\).)382 5029 y Fe(FTURLT\(unit,)44 +b(>)k(urltype,)d(status\))0 5262 y Fh(15)h Fi(P)m(arse)27 +b(the)f(input)e(\014lename)i(or)g(URL)g(in)m(to)g(its)g(comp)s(onen)m +(t)g(parts:)39 b(the)26 b(\014le)f(t)m(yp)s(e)i(\(\014le://,)g(ftp://,) +h(h)m(ttp://,)227 5375 y(etc\),)34 b(the)e(base)g(input)d(\014le)i +(name,)h(the)g(name)g(of)g(the)g(output)f(\014le)g(that)h(the)g(input)e +(\014le)g(is)h(to)h(b)s(e)f(copied)227 5488 y(to)38 b(prior)d(to)i(op)s +(ening,)g(the)g(HDU)g(or)f(extension)h(sp)s(eci\014cation,)g(the)g +(\014ltering)d(sp)s(eci\014er,)j(the)g(binning)227 5601 +y(sp)s(eci\014er,)d(and)f(the)i(column)e(sp)s(eci\014er.)50 +b(Blank)33 b(strings)g(will)f(b)s(e)h(returned)g(for)h(an)m(y)g(comp)s +(onen)m(ts)g(that)227 5714 y(are)d(not)g(presen)m(t)f(in)f(the)i(input) +d(\014le)i(name.)p eop +%%Page: 72 78 +72 77 bop 0 299 a Fi(72)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)334 +555 y Fe(FTIURL\(filename,)43 b(>)48 b(filetype,)d(infile,)h(outfile,)g +(extspec,)f(filter,)716 668 y(binspec,)g(colspec,)h(status\))0 +913 y Fh(16)g Fi(P)m(arse)e(the)g(input)e(\014le)h(name)g(and)g(return) +g(the)h(ro)s(ot)g(\014le)e(name.)81 b(The)43 b(ro)s(ot)h(name)g +(includes)d(the)j(\014le)227 1025 y(t)m(yp)s(e)35 b(if)f(sp)s +(eci\014ed,)h(\(e.g.)56 b('ftp://')37 b(or)e('h)m(ttp://'\))i(and)d +(the)h(full)e(path)i(name,)h(to)g(the)f(exten)m(t)i(that)e(it)g(is)227 +1138 y(sp)s(eci\014ed)25 b(in)f(the)j(input)d(\014lename.)38 +b(It)26 b(do)s(es)g(not)g(include)e(the)i(HDU)h(name)f(or)g(n)m(um)m(b) +s(er,)g(or)g(an)m(y)h(\014ltering)227 1251 y(sp)s(eci\014cations.)334 +1496 y Fe(FTRTNM\(filename,)43 b(>)48 b(rootname,)d(status\))0 +1740 y Fh(16)h Fi(T)-8 b(est)36 b(if)f(the)h(input)e(\014le)h(or)g(a)i +(compressed)e(v)m(ersion)g(of)h(the)g(\014le)f(\(with)g(a)h(.gz,)i(.Z,) +e(.z,)i(or)e(.zip)f(extension\))227 1853 y(exists)j(on)g(disk.)62 +b(The)37 b(returned)g(v)-5 b(alue)37 b(of)h(the)h('exists')f(parameter) +g(will)d(ha)m(v)m(e)40 b(1)e(of)g(the)g(4)g(follo)m(wing)227 +1966 y(v)-5 b(alues:)370 2198 y Fe(2:)95 b(the)47 b(file)g(does)g(not)f +(exist,)h(but)f(a)i(compressed)d(version)h(does)g(exist)370 +2311 y(1:)95 b(the)47 b(disk)g(file)g(does)f(exist)370 +2424 y(0:)95 b(neither)46 b(the)h(file)g(nor)g(a)g(compressed)e +(version)h(of)h(the)g(file)g(exist)323 2537 y(-1:)94 +b(the)47 b(input)g(file)f(name)h(is)g(not)g(a)g(disk)g(file)g(\(could)f +(be)h(a)g(ftp,)g(http,)561 2650 y(smem,)g(or)g(mem)g(file,)f(or)h(a)h +(file)e(piped)h(in)g(on)g(the)g(STDIN)f(stream\))286 +2894 y(FTEXIST\(filename,)d(>)48 b(exists,)e(status\);)0 +3225 y Fd(9.2)135 b(HDU-Lev)l(el)47 b(Op)t(erations)0 +3475 y Fi(When)30 b(a)h(FITS)f(\014le)f(is)h(\014rst)f(op)s(ened)h(or)g +(created,)i(the)f(in)m(ternal)e(bu\013ers)g(in)g(FITSIO)g +(automatically)i(p)s(oin)m(t)e(to)0 3588 y(the)h(\014rst)g(HDU)h(in)e +(the)h(\014le.)40 b(The)29 b(follo)m(wing)g(routines)g(ma)m(y)i(b)s(e)e +(used)h(to)h(mo)m(v)m(e)g(to)g(another)f(HDU)h(in)e(the)i(\014le.)0 +3701 y(Note)j(that)f(the)g(HDU)g(n)m(um)m(b)s(ering)e(con)m(v)m(en)m +(tion)i(used)f(in)f(FITSIO)h(denotes)h(the)f(primary)f(arra)m(y)i(as)g +(the)g(\014rst)0 3814 y(HDU,)e(the)g(\014rst)f(extension)g(in)f(a)h +(FITS)g(\014le)f(is)h(the)g(second)h(HDU,)g(and)f(so)h(on.)0 +4059 y Fh(1)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)e +(\(absolute\))h(HDU)h(in)f(the)g(FITS)g(\014le)f(\(nhdu)g(=)h(1)h(for)f +(the)g(FITS)g(primary)e(arra)m(y\))382 4303 y Fe(FTMAHD\(unit,nhdu,)43 +b(>)k(hdutype,status\))0 4548 y Fh(2)81 b Fi(Mo)m(v)m(e)32 +b(to)f(a)g(new)f(\(existing\))g(HDU)h(forw)m(ard)f(or)g(bac)m(kw)m +(ards)h(relativ)m(e)f(to)h(the)g(CHDU)382 4792 y Fe +(FTMRHD\(unit,nmove,)43 b(>)k(hdutype,status\))0 5036 +y Fh(3)81 b Fi(Mo)m(v)m(e)22 b(to)f(the)f(\(\014rst\))h(HDU)g(whic)m(h) +e(has)h(the)g(sp)s(eci\014ed)f(extension)h(t)m(yp)s(e)g(and)g(EXTNAME)g +(\(or)h(HDUNAME\))227 5149 y(and)32 b(EXTVER)g(k)m(eyw)m(ord)h(v)-5 +b(alues.)47 b(The)32 b(hdut)m(yp)s(e)f(parameter)i(ma)m(y)h(ha)m(v)m(e) +f(a)g(v)-5 b(alue)32 b(of)h(IMA)m(GE)p 3640 5149 28 4 +v 34 w(HDU,)227 5262 y(ASCI)s(I)p 486 5262 V 32 w(TBL,)f(BINAR)-8 +b(Y)p 1122 5262 V 34 w(TBL,)32 b(or)h(ANY)p 1718 5262 +V 33 w(HDU)g(where)f(ANY)p 2458 5262 V 33 w(HDU)i(means)e(that)h(only)f +(the)g(extname)227 5375 y(and)k(extv)m(er)h(v)-5 b(alues)35 +b(will)e(b)s(e)i(used)g(to)i(lo)s(cate)g(the)f(correct)h(extension.)57 +b(If)35 b(the)h(input)e(v)-5 b(alue)36 b(of)g(extv)m(er)227 +5488 y(is)c(0)h(then)f(the)g(EXTVER)h(k)m(eyw)m(ord)g(is)e(ignored)h +(and)g(the)g(\014rst)g(HDU)h(with)e(a)i(matc)m(hing)g(EXTNAME)227 +5601 y(\(or)j(HDUNAME\))h(k)m(eyw)m(ord)f(will)c(b)s(e)j(found.)55 +b(If)34 b(no)i(matc)m(hing)f(HDU)h(is)f(found)f(in)g(the)h(\014le)g +(then)g(the)227 5714 y(curren)m(t)27 b(HDU)g(will)d(remain)h(unc)m +(hanged)i(and)f(a)h(status)g(=)f(BAD)p 2501 5714 V 34 +w(HDU)p 2740 5714 V 33 w(NUM)h(\(301\))i(will)24 b(b)s(e)i(returned.)p +eop +%%Page: 73 79 +73 78 bop 0 299 a Fg(9.2.)72 b(HDU-LEVEL)31 b(OPERA)-8 +b(TIONS)2414 b Fi(73)382 555 y Fe(FTMNHD\(unit,)44 b(hdutype,)i +(extname,)f(extver,)h(>)i(status\))0 804 y Fh(4)81 b +Fi(Get)31 b(the)g(n)m(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(HDU)h(in)e +(the)i(FITS)e(\014le)h(\(primary)f(arra)m(y)h(=)g(1\))382 +1054 y Fe(FTGHDN\(unit,)44 b(>)k(nhdu\))0 1303 y Fh(5)81 +b Fi(Return)39 b(the)i(t)m(yp)s(e)g(of)g(the)g(curren)m(t)f(HDU)i(in)d +(the)i(FITS)f(\014le.)70 b(The)41 b(p)s(ossible)d(v)-5 +b(alues)40 b(for)g(hdut)m(yp)s(e)g(are)227 1416 y(IMA)m(GE)p +546 1416 28 4 v 34 w(HDU)31 b(\(0\),)h(ASCI)s(I)p 1242 +1416 V 31 w(TBL)e(\(1\),)i(or)e(BINAR)-8 b(Y)p 2133 1416 +V 34 w(TBL)30 b(\(2\).)382 1665 y Fe(FTGHDT\(unit,)44 +b(>)k(hdutype,)d(status\))0 1914 y Fh(6)81 b Fi(Return)29 +b(the)i(total)g(n)m(um)m(b)s(er)e(of)i(HDUs)f(in)g(the)g(FITS)g +(\014le.)40 b(The)29 b(CHDU)i(remains)e(unc)m(hanged.)382 +2163 y Fe(FTTHDU\(unit,)44 b(>)k(hdunum,)e(status\))0 +2412 y Fh(7)81 b Fi(Create)36 b(\(app)s(end\))e(a)h(new)g(empt)m(y)g +(HDU)h(follo)m(wing)e(the)h(last)g(extension)g(that)h(has)f(b)s(een)f +(previously)f(ac-)227 2525 y(cessed)41 b(b)m(y)f(the)g(program.)70 +b(This)39 b(will)e(o)m(v)m(erwrite)k(an)m(y)g(extensions)f(in)e(an)j +(existing)e(FITS)g(\014le)h(if)f(the)227 2638 y(program)31 +b(has)g(not)g(already)g(mo)m(v)m(ed)h(to)f(that)h(\(or)f(a)h(later\))f +(extension)g(using)e(the)i(FTMAHD)h(or)f(FTM-)227 2751 +y(RHD)24 b(routines.)37 b(F)-8 b(or)25 b(example,)f(if)f(an)g(existing) +f(FITS)h(\014le)f(con)m(tains)i(a)g(primary)d(arra)m(y)j(and)f(5)g +(extensions)227 2864 y(and)31 b(a)h(program)f(\(1\))h(op)s(ens)f(the)g +(FITS)g(\014le,)g(\(2\))h(mo)m(v)m(es)h(to)f(extension)f(4,)h(\(3\))g +(mo)m(v)m(es)h(bac)m(k)f(to)g(the)f(pri-)227 2977 y(mary)36 +b(arra)m(y)-8 b(,)38 b(and)e(\(4\))h(then)e(calls)g(FTCRHD,)h(then)g +(the)g(new)g(extension)f(will)e(b)s(e)j(written)e(follo)m(wing)227 +3090 y(the)d(4th)f(extension,)h(o)m(v)m(erwriting)f(the)g(existing)f +(5th)i(extension.)382 3339 y Fe(FTCRHD\(unit,)44 b(>)k(status\))0 +3588 y Fh(8)81 b Fi(Insert)41 b(a)h(new)f(IMA)m(GE)i(extension)f +(immediately)e(follo)m(wing)g(the)i(CHDU.)g(An)m(y)g(follo)m(wing)e +(extensions)227 3701 y(will)c(b)s(e)i(shifted)f(do)m(wn)h(to)h(mak)m(e) +g(ro)s(om)g(for)f(the)g(new)g(extension.)65 b(If)38 b(there)h(are)f(no) +h(other)f(follo)m(wing)227 3814 y(extensions)29 b(then)g(the)h(new)e +(image)i(extension)f(will)e(simply)f(b)s(e)j(app)s(ended)f(to)i(the)f +(end)g(of)g(the)h(\014le.)39 b(The)227 3927 y(new)30 +b(extension)g(will)e(b)s(ecome)j(the)f(CHDU.)382 4176 +y Fe(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 +b(status\))0 4425 y Fh(9)81 b Fi(Insert)30 b(a)i(new)f(ASCI)s(I)f(T)-8 +b(ABLE)31 b(extension)g(immediately)f(follo)m(wing)f(the)j(CHDU.)g(An)m +(y)f(follo)m(wing)f(exten-)227 4538 y(sions)25 b(will)e(b)s(e)i +(shifted)f(do)m(wn)h(to)h(mak)m(e)h(ro)s(om)e(for)h(the)f(new)g +(extension.)39 b(If)25 b(there)h(are)g(no)g(other)f(follo)m(wing)227 +4651 y(extensions)31 b(then)g(the)h(new)f(table)g(extension)g(will)e +(simply)g(b)s(e)i(app)s(ended)f(to)i(the)f(end)g(of)h(the)f(\014le.)43 +b(The)227 4764 y(new)30 b(extension)g(will)e(b)s(ecome)j(the)f(CHDU.) +382 5013 y Fe(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o +(,tbc)o(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 +b(>)716 5126 y(status\))0 5375 y Fh(10)k Fi(Insert)25 +b(a)h(new)f(binary)e(table)j(extension)f(immediately)e(follo)m(wing)h +(the)i(CHDU.)g(An)m(y)g(follo)m(wing)d(extensions)227 +5488 y(will)36 b(b)s(e)i(shifted)f(do)m(wn)h(to)h(mak)m(e)g(ro)s(om)g +(for)f(the)g(new)g(extension.)65 b(If)38 b(there)h(are)f(no)h(other)f +(follo)m(wing)227 5601 y(extensions)e(then)h(the)f(new)g(bin)m(table)f +(extension)i(will)d(simply)g(b)s(e)i(app)s(ended)e(to)k(the)e(end)g(of) +h(the)g(\014le.)227 5714 y(The)30 b(new)g(extension)g(will)e(b)s(ecome) +j(the)f(CHDU.)p eop +%%Page: 74 80 +74 79 bop 0 299 a Fi(74)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 +555 y Fe(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o(rm,)o(tuni)o +(t,ex)o(tna)o(me,v)o(arid)o(at)41 b(>)48 b(status\))0 +777 y Fh(11)e Fi(Resize)25 b(an)f(image)h(b)m(y)f(mo)s(di\014ng)e(the)j +(size,)h(dimensions,)d(and/or)h(datat)m(yp)s(e)h(of)g(the)g(curren)m(t) +f(primary)e(arra)m(y)227 890 y(or)29 b(image)h(extension.)39 +b(If)29 b(the)g(new)g(image,)h(as)f(sp)s(eci\014ed)e(b)m(y)i(the)g +(input)e(argumen)m(ts,)j(is)e(larger)h(than)g(the)227 +1003 y(curren)m(t)34 b(existing)f(image)h(in)f(the)h(FITS)f(\014le)g +(then)g(zero)i(\014ll)d(data)j(will)c(b)s(e)i(inserted)g(at)h(the)g +(end)g(of)g(the)227 1116 y(curren)m(t)25 b(image)g(and)f(an)m(y)i +(follo)m(wing)d(extensions)i(will)d(b)s(e)i(mo)m(v)m(ed)i(further)e +(bac)m(k)h(in)f(the)h(\014le.)38 b(Similarly)-8 b(,)23 +b(if)227 1229 y(the)28 b(new)e(image)i(is)e(smaller)g(than)h(the)g +(curren)m(t)g(image)g(then)g(an)m(y)h(follo)m(wing)e(extensions)g(will) +f(b)s(e)h(shifted)227 1342 y(up)32 b(to)m(w)m(ards)i(the)g(b)s +(eginning)c(of)j(the)h(FITS)e(\014le)g(and)h(the)g(image)g(data)h(will) +d(b)s(e)h(truncated)h(to)h(the)f(new)227 1455 y(size.)40 +b(This)24 b(routine)h(rewrites)h(the)g(BITPIX,)h(NAXIS,)f(and)g(NAXISn) +g(k)m(eyw)m(ords)g(with)f(the)i(appropriate)227 1567 +y(v)-5 b(alues)30 b(for)g(new)g(image.)382 1789 y Fe +(FTRSIM\(unit,bitpix,naxis)o(,na)o(xes,)o(stat)o(us\))0 +2011 y Fh(12)46 b Fi(Delete)33 b(the)g(CHDU)g(in)e(the)h(FITS)f +(\014le.)46 b(An)m(y)32 b(follo)m(wing)f(HDUs)i(will)d(b)s(e)h(shifted) +g(forw)m(ard)h(in)f(the)h(\014le,)g(to)227 2124 y(\014ll)k(in)g(the)h +(gap)h(created)g(b)m(y)g(the)f(deleted)g(HDU.)i(In)d(the)i(case)g(of)g +(deleting)e(the)i(primary)d(arra)m(y)j(\(the)227 2237 +y(\014rst)30 b(HDU)h(in)e(the)i(\014le\))f(then)g(the)h(curren)m(t)f +(primary)e(arra)m(y)j(will)d(b)s(e)i(replace)g(b)m(y)h(a)g(n)m(ull)d +(primary)g(arra)m(y)227 2350 y(con)m(taining)j(the)h(minim)m(um)c(set)k +(of)g(required)d(k)m(eyw)m(ords)j(and)e(no)i(data.)44 +b(If)31 b(there)g(are)h(more)f(extensions)227 2463 y(in)e(the)h(\014le) +f(follo)m(wing)g(the)h(one)g(that)h(is)e(deleted,)h(then)g(the)g(the)g +(CHDU)h(will)c(b)s(e)j(rede\014ned)e(to)j(p)s(oin)m(t)e(to)227 +2576 y(the)e(follo)m(wing)e(extension.)40 b(If)26 b(there)h(are)g(no)g +(follo)m(wing)e(extensions)h(then)h(the)g(CHDU)g(will)d(b)s(e)i +(rede\014ned)227 2689 y(to)35 b(p)s(oin)m(t)e(to)i(the)f(previous)e +(HDU.)j(The)e(output)h(HDUTYPE)g(parameter)h(indicates)d(the)j(t)m(yp)s +(e)f(of)g(the)227 2802 y(new)c(CHDU)h(after)g(the)f(previous)f(CHDU)i +(has)f(b)s(een)g(deleted.)382 3024 y Fe(FTDHDU\(unit,)44 +b(>)k(hdutype,status\))0 3245 y Fh(13)e Fi(Cop)m(y)36 +b(all)f(or)h(part)g(of)g(the)g(input)e(FITS)h(\014le)g(and)h(app)s(end) +e(it)h(to)i(the)f(end)g(of)g(the)g(output)g(FITS)f(\014le.)56 +b(If)227 3358 y('previous')27 b(is)g(true)h(\(not)g(0\),)i(then)d(an)m +(y)h(HDUs)h(preceding)e(the)h(curren)m(t)f(HDU)i(in)d(the)i(input)e +(\014le)h(will)f(b)s(e)227 3471 y(copied)33 b(to)h(the)g(output)f +(\014le.)50 b(Similarly)-8 b(,)31 b('curren)m(t')j(and)e('follo)m +(wing')h(determine)g(whether)f(the)i(curren)m(t)227 3584 +y(HDU,)g(and/or)e(an)m(y)h(follo)m(wing)e(HDUs)i(in)e(the)h(input)f +(\014le)g(will)f(b)s(e)i(copied)g(to)h(the)f(output)g(\014le.)46 +b(If)32 b(all)g(3)227 3697 y(parameters)j(are)h(true,)g(then)e(the)h +(en)m(tire)g(input)e(\014le)h(will)e(b)s(e)i(copied.)54 +b(On)33 b(return,)j(the)f(curren)m(t)f(HDU)227 3810 y(in)29 +b(the)g(input)f(\014le)h(will)e(b)s(e)i(unc)m(hanged,)h(and)f(the)h +(last)f(copied)g(HDU)i(will)c(b)s(e)i(the)h(curren)m(t)f(HDU)h(in)f +(the)227 3923 y(output)h(\014le.)382 4145 y Fe(FTCPFL\(iunit,)44 +b(ounit,)i(previous,)f(current,)h(following,)f(>)i(status\))0 +4367 y Fh(14)f Fi(Cop)m(y)35 b(the)f(en)m(tire)h(CHDU)g(from)f(the)g +(FITS)g(\014le)g(asso)s(ciated)h(with)e(IUNIT)h(to)i(the)e(CHDU)h(of)g +(the)g(FITS)227 4480 y(\014le)f(asso)s(ciated)h(with)e(OUNIT.)h(The)g +(output)g(HDU)h(m)m(ust)f(b)s(e)g(empt)m(y)h(and)e(not)i(already)f(con) +m(tain)h(an)m(y)227 4593 y(k)m(eyw)m(ords.)41 b(Space)29 +b(will)d(b)s(e)j(reserv)m(ed)g(for)g(MOREKEYS)f(additional)e(k)m(eyw)m +(ords)k(in)d(the)j(output)e(header)227 4706 y(if)i(there)g(is)g(not)g +(already)g(enough)g(space.)382 4927 y Fe(FTCOPY\(iunit,ounit,morek)o +(eys)o(,)42 b(>)47 b(status\))0 5149 y Fh(15)f Fi(Cop)m(y)27 +b(the)h(header)f(\(and)g(not)g(the)g(data\))i(from)d(the)i(CHDU)g(asso) +s(ciated)f(with)f(in)m(unit)f(to)j(the)f(CHDU)h(asso-)227 +5262 y(ciated)e(with)e(outunit.)38 b(If)25 b(the)g(curren)m(t)h(output) +f(HDU)h(is)e(not)i(completely)f(empt)m(y)-8 b(,)27 b(then)e(the)h(CHDU) +g(will)227 5375 y(b)s(e)e(closed)h(and)f(a)i(new)e(HDU)h(will)e(b)s(e)h +(app)s(ended)f(to)j(the)f(output)f(\014le.)38 b(This)23 +b(routine)h(will)e(automatically)227 5488 y(transform)31 +b(the)g(necessary)h(k)m(eyw)m(ords)f(when)g(cop)m(ying)g(a)g(primary)f +(arra)m(y)i(to)f(and)g(image)h(extension,)f(or)227 5601 +y(an)c(image)g(extension)f(to)h(a)h(primary)c(arra)m(y)-8 +b(.)41 b(An)26 b(empt)m(y)h(output)f(data)i(unit)d(will)f(b)s(e)i +(created)i(\(all)e(v)-5 b(alues)227 5714 y(=)30 b(0\).)p +eop +%%Page: 75 81 +75 80 bop 0 299 a Fg(9.3.)72 b(DEFINE)31 b(OR)f(REDEFINE)h(THE)f(STR)m +(UCTURE)f(OF)h(THE)g(CHDU)1042 b Fi(75)382 555 y Fe(FTCPHD\(inunit,)44 +b(outunit,)h(>)j(status\))0 819 y Fh(16)e Fi(Cop)m(y)d(just)g(the)g +(data)h(from)f(the)g(CHDU)h(asso)s(ciated)f(with)f(IUNIT)h(to)h(the)f +(CHDU)h(asso)s(ciated)f(with)227 932 y(OUNIT.)26 b(This)e(will)f(o)m(v) +m(erwrite)j(an)m(y)g(data)g(previously)e(in)g(the)i(OUNIT)f(CHDU.)h +(This)e(lo)m(w)i(lev)m(el)f(routine)227 1045 y(is)h(used)f(b)m(y)i +(FTCOPY,)f(but)g(it)f(ma)m(y)j(also)e(b)s(e)g(useful)e(in)i(certain)g +(application)f(programs)h(whic)m(h)f(w)m(an)m(t)i(to)227 +1158 y(cop)m(y)j(the)f(data)h(from)f(one)g(FITS)f(\014le)g(to)i +(another)f(but)g(also)g(w)m(an)m(t)h(to)g(mo)s(dify)d(the)i(header)g(k) +m(eyw)m(ords)g(in)227 1271 y(the)j(pro)s(cess.)44 b(all)31 +b(the)h(required)e(header)h(k)m(eyw)m(ords)h(m)m(ust)g(b)s(e)f(written) +g(to)h(the)g(OUNIT)f(CHDU)h(b)s(efore)227 1383 y(calling)d(this)g +(routine)382 1647 y Fe(FTCPDT\(iunit,ounit,)42 b(>)48 +b(status\))0 1985 y Fd(9.3)135 b(De\014ne)45 b(or)g(Rede\014ne)h(the)f +(structure)g(of)g(the)g(CHDU)0 2237 y Fi(It)32 b(should)e(rarely)h(b)s +(e)h(necessary)g(to)h(call)e(the)h(subroutines)e(in)g(this)h(section.) +46 b(FITSIO)30 b(in)m(ternally)g(calls)h(these)0 2350 +y(routines)i(whenev)m(er)h(necessary)-8 b(,)36 b(so)e(an)m(y)g(calls)f +(to)i(these)f(routines)f(b)m(y)h(application)e(programs)i(will)d(lik)m +(ely)i(b)s(e)0 2462 y(redundan)m(t.)0 2726 y Fh(1)81 +b Fi(This)35 b(routine)h(forces)i(FITSIO)e(to)i(scan)f(the)g(curren)m +(t)g(header)g(k)m(eyw)m(ords)h(that)f(de\014ne)g(the)g(structure)g(of) +227 2839 y(the)31 b(HDU)f(\(suc)m(h)g(as)h(the)f(NAXISn,)g(PCOUNT)f +(and)g(GCOUNT)h(k)m(eyw)m(ords\))h(so)f(that)h(it)e(can)i(initialize) +227 2952 y(the)36 b(in)m(ternal)e(bu\013ers)g(that)i(describ)s(e)e(the) +i(HDU)g(structure.)55 b(This)34 b(routine)h(ma)m(y)h(b)s(e)e(used)h +(instead)g(of)227 3065 y(the)k(more)g(complicated)g(calls)f(to)h(ftp)s +(def,)h(ftadef)f(or)g(ftb)s(def.)65 b(This)37 b(routine)h(is)g(also)h +(v)m(ery)g(useful)e(for)227 3178 y(reinitializing)30 +b(the)k(structure)g(of)g(an)f(HDU,)i(if)e(the)h(n)m(um)m(b)s(er)e(of)i +(ro)m(ws)g(in)f(a)h(table,)h(as)f(sp)s(eci\014ed)e(b)m(y)i(the)227 +3291 y(NAXIS2)d(k)m(eyw)m(ord,)g(has)f(b)s(een)g(mo)s(di\014ed)e(from)i +(its)g(initial)d(v)-5 b(alue.)382 3554 y Fe(FTRDEF\(unit,)44 +b(>)k(status\))141 b(\(DEPRECATED\))0 3818 y Fh(2)81 +b Fi(De\014ne)27 b(the)g(structure)g(of)g(the)g(primary)e(arra)m(y)j +(or)f(IMA)m(GE)h(extension.)39 b(When)27 b(writing)e(GR)m(OUP)m(ed)j +(FITS)227 3931 y(\014les)42 b(that)i(b)m(y)e(con)m(v)m(en)m(tion)j(set) +e(the)g(NAXIS1)g(k)m(eyw)m(ord)h(equal)e(to)i(0,)i(ftp)s(def)c(m)m(ust) +h(b)s(e)f(called)g(with)227 4044 y(naxes\(1\))27 b(=)e(1,)i(NOT)e(0,)i +(otherwise)e(FITSIO)f(will)f(rep)s(ort)i(an)g(error)g(status=308)i +(when)d(trying)h(to)h(write)227 4157 y(data)31 b(to)g(a)g(group.)40 +b(Note:)i(it)30 b(is)g(usually)e(simpler)g(to)j(call)f(FTRDEF)g(rather) +h(than)f(this)f(routine.)382 4421 y Fe(FTPDEF\(unit,bitpix,naxis)o(,na) +o(xes,)o(pcou)o(nt,)o(gcou)o(nt,)41 b(>)48 b(status\))93 +b(\(DEPRECATED\))0 4684 y Fh(3)81 b Fi(De\014ne)32 b(the)h(structure)f +(of)g(an)h(ASCI)s(I)e(table)h(\(T)-8 b(ABLE\))33 b(extension.)47 +b(Note:)f(it)32 b(is)f(usually)f(simpler)g(to)k(call)227 +4797 y(FTRDEF)d(rather)f(than)h(this)e(routine.)382 5061 +y Fe(FTADEF\(unit,rowlen,tfiel)o(ds,)o(tbco)o(l,tf)o(orm)o(,nro)o(ws)42 +b(>)47 b(status\))f(\(DEPRECATED\))0 5325 y Fh(4)81 b +Fi(De\014ne)35 b(the)h(structure)f(of)g(a)h(binary)e(table)h(\(BINT)-8 +b(ABLE\))37 b(extension.)55 b(Note:)e(it)35 b(is)f(usually)f(simpler)g +(to)227 5438 y(call)d(FTRDEF)h(rather)f(than)g(this)f(routine.)382 +5701 y Fe(FTBDEF\(unit,tfields,tfor)o(m,v)o(arid)o(at,n)o(row)o(s)42 +b(>)47 b(status\))f(\(DEPRECATED\))p eop +%%Page: 76 82 +76 81 bop 0 299 a Fi(76)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 +555 y Fh(5)81 b Fi(De\014ne)34 b(the)g(size)g(of)g(the)g(Curren)m(t)f +(Data)i(Unit,)g(o)m(v)m(erriding)d(the)i(length)g(of)g(the)g(data)h +(unit)d(as)i(previously)227 668 y(de\014ned)e(b)m(y)h(ftp)s(def,)g +(ftadef,)i(or)e(ftb)s(def.)48 b(This)32 b(is)g(useful)f(if)i(one)g(do)s +(es)g(not)h(kno)m(w)f(the)g(total)h(size)f(of)h(the)227 +781 y(data)f(unit)e(un)m(til)g(after)h(the)h(data)g(ha)m(v)m(e)g(b)s +(een)f(written.)45 b(The)32 b(size)g(\(in)f(b)m(ytes\))i(of)g(an)f +(ASCI)s(I)f(or)h(Binary)227 894 y(table)26 b(is)f(giv)m(en)g(b)m(y)h +(NAXIS1)g(*)g(NAXIS2.)40 b(\(Note)27 b(that)f(to)h(determine)e(the)g(v) +-5 b(alue)26 b(of)g(NAXIS1)f(it)h(is)f(often)227 1007 +y(more)32 b(con)m(v)m(enien)m(t)g(to)g(read)f(the)g(v)-5 +b(alue)31 b(of)g(the)h(NAXIS1)f(k)m(eyw)m(ord)h(from)e(the)i(output)e +(\014le,)h(rather)g(than)227 1120 y(computing)e(the)h(ro)m(w)g(length)g +(directly)e(from)h(all)g(the)h(TF)m(ORM)h(k)m(eyw)m(ord)f(v)-5 +b(alues\).)40 b(Note:)i(it)29 b(is)g(usually)227 1233 +y(simpler)f(to)j(call)f(FTRDEF)h(rather)f(than)g(this)f(routine.)382 +1454 y Fe(FTDDEF\(unit,bytlen,)42 b(>)48 b(status\))e(\(DEPRECATED\))0 +1676 y Fh(6)81 b Fi(De\014ne)22 b(the)g(zero)i(indexed)c(b)m(yte)j +(o\013set)g(of)g(the)f('heap')h(measured)e(from)h(the)h(start)g(of)f +(the)g(binary)f(table)h(data.)227 1789 y(By)30 b(default)f(the)g(heap)h +(is)e(assumed)h(to)h(start)g(immediately)e(follo)m(wing)g(the)i +(regular)e(table)i(data,)g(i.e.,)g(at)227 1902 y(lo)s(cation)36 +b(NAXIS1)h(x)g(NAXIS2.)59 b(This)35 b(routine)g(is)h(only)f(relev)-5 +b(an)m(t)37 b(for)f(binary)f(tables)h(whic)m(h)g(con)m(tain)227 +2015 y(v)-5 b(ariable)34 b(length)h(arra)m(y)g(columns)f(\(with)h(TF)m +(ORMn)g(=)f('Pt'\).)57 b(This)33 b(subroutine)g(also)i(automatically) +227 2128 y(writes)22 b(the)h(v)-5 b(alue)22 b(of)h(theap)g(to)h(a)f(k)m +(eyw)m(ord)g(in)f(the)h(extension)f(header.)38 b(This)21 +b(subroutine)g(m)m(ust)i(b)s(e)f(called)227 2241 y(after)27 +b(the)f(required)e(k)m(eyw)m(ords)j(ha)m(v)m(e)g(b)s(een)e(written)g +(\(with)g(ftph)m(bn\))g(and)h(after)g(the)h(table)f(structure)f(has)227 +2354 y(b)s(een)30 b(de\014ned)f(\(with)g(ftb)s(def)7 +b(\))30 b(but)g(b)s(efore)g(an)m(y)g(data)h(is)f(written)f(to)i(the)g +(table.)382 2575 y Fe(FTPTHP\(unit,theap,)43 b(>)k(status\))0 +2903 y Fd(9.4)135 b(FITS)44 b(Header)i(I/O)f(Subroutines)0 +3156 y Fb(9.4.1)112 b(Header)38 b(Space)h(and)f(P)m(osition)d(Routines) +0 3359 y Fh(1)81 b Fi(Reserv)m(e)37 b(space)g(in)e(the)i(CHU)f(for)h +(MOREKEYS)e(more)i(header)f(k)m(eyw)m(ords.)59 b(This)35 +b(subroutine)f(ma)m(y)k(b)s(e)227 3472 y(called)c(to)i(reserv)m(e)g +(space)f(for)g(k)m(eyw)m(ords)g(whic)m(h)f(are)h(to)h(b)s(e)e(written)g +(at)h(a)h(later)f(time,)h(after)f(the)g(data)227 3585 +y(unit)g(or)h(subsequen)m(t)f(extensions)g(ha)m(v)m(e)i(b)s(een)e +(written)g(to)i(the)f(FITS)f(\014le.)57 b(If)35 b(this)g(subroutine)f +(is)h(not)227 3698 y(explicitly)25 b(called,)i(then)g(the)g(initial)e +(size)h(of)i(the)f(FITS)f(header)h(will)e(b)s(e)h(limited)f(to)j(the)f +(space)h(a)m(v)-5 b(ailable)227 3811 y(at)24 b(the)g(time)f(that)h(the) +g(\014rst)f(data)h(is)f(written)f(to)i(the)g(asso)s(ciated)g(data)g +(unit.)37 b(FITSIO)22 b(has)i(the)f(abilit)m(y)f(to)227 +3924 y(dynamically)g(add)h(more)h(space)h(to)g(the)f(header)g(if)f +(needed,)i(ho)m(w)m(ev)m(er)g(it)f(is)f(more)h(e\016cien)m(t)g(to)h +(preallo)s(cate)227 4037 y(the)31 b(required)d(space)j(if)f(the)g(size) +g(is)g(kno)m(wn)g(in)f(adv)-5 b(ance.)382 4258 y Fe +(FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))0 4480 y +Fh(2)81 b Fi(Return)23 b(the)i(n)m(um)m(b)s(er)e(of)h(existing)g(k)m +(eyw)m(ords)g(in)g(the)g(CHU)g(\(NOT)h(including)c(the)j(END)h(k)m(eyw) +m(ord)g(whic)m(h)e(is)227 4593 y(not)h(considered)e(a)h(real)g(k)m(eyw) +m(ord\))h(and)f(the)g(remaining)f(space)h(a)m(v)-5 b(ailable)23 +b(to)h(write)e(additional)g(k)m(eyw)m(ords)227 4706 y(in)38 +b(the)i(CHU.)f(\(returns)f(KEYSADD)i(=)f(-1)h(if)e(the)h(header)g(has)g +(not)h(y)m(et)g(b)s(een)e(closed\).)68 b(Note)40 b(that)227 +4819 y(FITSIO)23 b(will)f(attempt)j(to)g(dynamically)d(add)h(space)i +(for)f(more)g(k)m(eyw)m(ords)h(if)e(required)f(when)h(app)s(ending)227 +4932 y(new)30 b(k)m(eyw)m(ords)h(to)g(a)g(header.)382 +5153 y Fe(FTGHSP\(iunit,)44 b(>)j(keysexist,keysadd,status\))0 +5375 y Fh(3)81 b Fi(Return)38 b(the)i(n)m(um)m(b)s(er)e(of)h(k)m(eyw)m +(ords)h(in)e(the)h(header)g(and)g(the)g(curren)m(t)h(p)s(osition)d(in)h +(the)h(header.)68 b(This)227 5488 y(returns)37 b(the)g(n)m(um)m(b)s(er) +f(of)i(the)g(k)m(eyw)m(ord)g(record)f(that)h(will)d(b)s(e)i(read)g +(next)h(\(or)g(one)g(greater)g(than)g(the)227 5601 y(p)s(osition)27 +b(of)h(the)h(last)f(k)m(eyw)m(ord)h(that)g(w)m(as)f(read)g(or)h +(written\).)39 b(A)29 b(v)-5 b(alue)27 b(of)i(1)g(is)e(returned)g(if)g +(the)i(p)s(oin)m(ter)227 5714 y(is)h(p)s(ositioned)e(at)j(the)g(b)s +(eginning)c(of)k(the)g(header.)p eop +%%Page: 77 83 +77 82 bop 0 299 a Fg(9.4.)72 b(FITS)30 b(HEADER)h(I/O)f(SUBR)m(OUTINES) +2086 b Fi(77)382 555 y Fe(FTGHPS\(iunit,)44 b(>)j +(keysexist,key_no,status\))0 845 y Fb(9.4.2)112 b(Read)38 +b(or)f(W)-9 b(rite)36 b(Standard)j(Header)e(Routines)0 +1064 y Fi(These)31 b(subroutines)d(pro)m(vide)i(a)h(simple)e(metho)s(d) +h(of)h(reading)f(or)h(writing)e(most)i(of)g(the)g(k)m(eyw)m(ord)g(v)-5 +b(alues)30 b(that)0 1177 y(are)e(normally)e(required)g(in)h(a)h(FITS)f +(\014les.)39 b(These)27 b(subroutines)f(are)i(pro)m(vided)e(for)i(con)m +(v)m(enience)g(only)f(and)h(are)0 1290 y(not)36 b(required)d(to)j(b)s +(e)f(used.)55 b(If)35 b(preferred,)h(users)e(ma)m(y)i(call)f(the)h(lo)m +(w)m(er-lev)m(el)f(subroutines)e(describ)s(ed)h(in)g(the)0 +1402 y(previous)29 b(section)i(to)h(individually)26 b(read)k(or)h +(write)f(the)h(required)e(k)m(eyw)m(ords.)43 b(Note)32 +b(that)g(in)d(most)j(cases,)g(the)0 1515 y(required)25 +b(k)m(eyw)m(ords)i(suc)m(h)g(as)g(NAXIS,)f(TFIELD,)h(TTYPEn,)g(etc,)i +(whic)m(h)c(de\014ne)h(the)h(structure)f(of)h(the)g(HDU)0 +1628 y(m)m(ust)j(b)s(e)g(written)f(to)j(the)e(header)g(b)s(efore)g(an)m +(y)h(data)g(can)g(b)s(e)e(written)h(to)h(the)g(image)f(or)h(table.)0 +1881 y Fh(1)81 b Fi(Put)37 b(the)i(primary)d(header)i(or)g(IMA)m(GE)h +(extension)e(k)m(eyw)m(ords)i(in)m(to)f(the)g(CHU.)g(There)g(are)g(2)h +(a)m(v)-5 b(ailable)227 1994 y(routines:)38 b(The)27 +b(simpler)d(FTPHPS)j(routine)f(is)g(equiv)-5 b(alen)m(t)27 +b(to)g(calling)f(ftphpr)f(with)h(the)h(default)g(v)-5 +b(alues)227 2107 y(of)35 b(SIMPLE)f(=)g(true,)i(p)s(coun)m(t)e(=)g(0,)i +(gcoun)m(t)g(=)e(1,)i(and)e(EXTEND)h(=)f(true.)53 b(PCOUNT,)34 +b(GCOUNT)227 2220 y(and)23 b(EXTEND)h(k)m(eyw)m(ords)g(are)h(not)f +(required)e(in)g(the)i(primary)e(header)h(and)h(are)g(only)f(written)g +(if)f(p)s(coun)m(t)227 2333 y(is)30 b(not)h(equal)g(to)h(zero,)g(gcoun) +m(t)g(is)e(not)h(equal)f(to)i(zero)g(or)f(one,)g(and)g(if)f(extend)h +(is)f(TR)m(UE,)h(resp)s(ectiv)m(ely)-8 b(.)227 2446 y(When)30 +b(writing)f(to)i(an)f(IMA)m(GE)i(extension,)e(the)g(SIMPLE)g(and)g +(EXTEND)g(parameters)h(are)g(ignored.)382 2699 y Fe +(FTPHPS\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382 +2925 y(FTPHPR\(unit,simple,bitpi)o(x,n)o(axis)o(,nax)o(es,)o(pcou)o +(nt,g)o(cou)o(nt,e)o(xten)o(d,)41 b(>)48 b(status\))0 +3178 y Fh(2)81 b Fi(Get)44 b(primary)d(header)i(or)h(IMA)m(GE)g +(extension)f(k)m(eyw)m(ords)h(from)f(the)g(CHU.)h(When)f(reading)f +(from)h(an)227 3291 y(IMA)m(GE)32 b(extension)e(the)g(SIMPLE)g(and)f +(EXTEND)i(parameters)g(are)f(ignored.)382 3544 y Fe +(FTGHPR\(unit,maxdim,)42 b(>)48 b(simple,bitpix,naxis,naxe)o(s,p)o +(coun)o(t,gc)o(oun)o(t,ex)o(tend)o(,)716 3657 y(status\))0 +3911 y Fh(3)81 b Fi(Put)34 b(the)h(ASCI)s(I)f(table)h(header)g(k)m(eyw) +m(ords)g(in)m(to)g(the)g(CHU.)h(The)e(optional)g(TUNITn)g(and)h +(EXTNAME)227 4024 y(k)m(eyw)m(ords)c(are)g(written)e(only)h(if)f(the)i +(input)d(string)h(v)-5 b(alues)30 b(are)h(not)f(blank.)382 +4277 y Fe(FTPHTB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o +(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 +4390 y(status\))0 4643 y Fh(4)81 b Fi(Get)31 b(the)g(ASCI)s(I)d(table)j +(header)f(k)m(eyw)m(ords)h(from)e(the)i(CHU)382 4896 +y Fe(FTGHTB\(unit,maxdim,)42 b(>)48 b(rowlen,nrows,tfields,tty)o(pe,)o +(tbco)o(l,tf)o(orm)o(,tun)o(it,)716 5009 y(extname,status\))0 +5262 y Fh(5)81 b Fi(Put)34 b(the)h(binary)e(table)i(header)f(k)m(eyw)m +(ords)i(in)m(to)e(the)h(CHU.)g(The)g(optional)f(TUNITn)g(and)g(EXTNAME) +227 5375 y(k)m(eyw)m(ords)i(are)g(written)e(only)g(if)h(the)g(input)e +(string)i(v)-5 b(alues)34 b(are)i(not)f(blank.)54 b(The)35 +b(p)s(coun)m(t)g(parameter,)227 5488 y(whic)m(h)e(sp)s(eci\014es)g(the) +i(size)f(of)h(the)f(v)-5 b(ariable)33 b(length)h(arra)m(y)h(heap,)g +(should)e(initially)d(=)k(0;)j(FITSIO)d(will)227 5601 +y(automatically)24 b(up)s(date)f(the)h(PCOUNT)f(k)m(eyw)m(ord)h(v)-5 +b(alue)23 b(if)g(an)m(y)h(v)-5 b(ariable)23 b(length)g(arra)m(y)i(data) +f(is)f(written)227 5714 y(to)31 b(the)e(heap.)41 b(The)29 +b(TF)m(ORM)g(k)m(eyw)m(ord)h(v)-5 b(alue)29 b(for)h(v)-5 +b(ariable)28 b(length)h(v)m(ector)i(columns)d(should)g(ha)m(v)m(e)j +(the)p eop +%%Page: 78 84 +78 83 bop 0 299 a Fi(78)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)227 +555 y Fi(form)d('Pt\(len\)')i(or)e('1Pt\(len\)')i(where)e(`t')h(is)f +(the)h(data)g(t)m(yp)s(e)g(co)s(de)f(letter)h(\(A,I,J,E,D,)h(etc.\))42 +b(and)27 b(`len')g(is)227 668 y(an)h(in)m(teger)h(sp)s(ecifying)d(the)i +(maxim)m(um)f(length)g(of)i(the)f(v)m(ectors)h(in)e(that)i(column)e +(\(len)g(m)m(ust)h(b)s(e)g(greater)227 781 y(than)j(or)h(equal)e(to)j +(the)e(longest)h(v)m(ector)g(in)e(the)i(column\).)43 +b(If)30 b(`len')h(is)g(not)g(sp)s(eci\014ed)f(when)g(the)i(table)f(is) +227 894 y(created)c(\(e.g.,)i(the)d(input)e(TF)m(ORMn)i(v)-5 +b(alue)25 b(is)g(just)g('1Pt'\))j(then)d(FITSIO)g(will)e(scan)j(the)g +(column)f(when)227 1007 y(the)30 b(table)f(is)f(\014rst)h(closed)g(and) +g(will)d(app)s(end)i(the)h(maxim)m(um)g(length)f(to)i(the)g(TF)m(ORM)f +(k)m(eyw)m(ord)h(v)-5 b(alue.)227 1120 y(Note)28 b(that)e(if)f(the)h +(table)g(is)f(subsequen)m(tly)g(mo)s(di\014ed)f(to)j(increase)e(the)i +(maxim)m(um)e(length)g(of)h(the)g(v)m(ectors)227 1233 +y(then)k(the)h(mo)s(difying)d(program)i(is)f(resp)s(onsible)f(for)i +(also)g(up)s(dating)e(the)j(TF)m(ORM)g(k)m(eyw)m(ord)g(v)-5 +b(alue.)382 1462 y Fe(FTPHBN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o +(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at,)41 b(>)48 +b(status\))0 1691 y Fh(6)81 b Fi(Get)31 b(the)g(binary)d(table)i +(header)h(k)m(eyw)m(ords)f(from)g(the)h(CHU)382 1921 +y Fe(FTGHBN\(unit,maxdim,)42 b(>)48 b(nrows,tfields,ttype,tfor)o(m,t)o +(unit)o(,ext)o(nam)o(e,va)o(rida)o(t,)716 2034 y(status\))0 +2320 y Fb(9.4.3)112 b(W)-9 b(rite)36 b(Keyw)m(ord)h(Subroutines)0 +2524 y Fh(1)81 b Fi(Put)30 b(\(app)s(end\))f(an)h(80-c)m(haracter)j +(record)e(in)m(to)f(the)h(CHU.)382 2753 y Fe(FTPREC\(unit,card,)43 +b(>)k(status\))0 2982 y Fh(2)81 b Fi(Put)36 b(\(app)s(end\))g(a)i +(COMMENT)f(k)m(eyw)m(ord)g(in)m(to)g(the)h(CHU.)f(Multiple)e(COMMENT)i +(k)m(eyw)m(ords)g(will)e(b)s(e)227 3095 y(written)30 +b(if)f(the)i(input)d(commen)m(t)j(string)f(is)f(longer)h(than)g(72)i(c) +m(haracters.)382 3325 y Fe(FTPCOM\(unit,comment,)42 b(>)48 +b(status\))0 3554 y Fh(3)81 b Fi(Put)24 b(\(app)s(end\))g(a)h(HISTOR)-8 +b(Y)25 b(k)m(eyw)m(ord)g(in)m(to)g(the)g(CHU.)g(Multiple)e(HISTOR)-8 +b(Y)24 b(k)m(eyw)m(ords)h(will)e(b)s(e)h(written)227 +3667 y(if)30 b(the)g(input)f(history)g(string)g(is)h(longer)g(than)g +(72)h(c)m(haracters.)382 3897 y Fe(FTPHIS\(unit,history,)42 +b(>)48 b(status\))0 4126 y Fh(4)81 b Fi(Put)36 b(\(app)s(end\))f(the)h +(D)m(A)-8 b(TE)38 b(k)m(eyw)m(ord)f(in)m(to)f(the)g(CHU.)h(The)f(k)m +(eyw)m(ord)g(v)-5 b(alue)36 b(will)e(con)m(tain)j(the)f(curren)m(t)227 +4239 y(system)c(date)g(as)g(a)f(c)m(haracter)i(string)e(in)f +('dd/mm/yy')h(format.)44 b(If)31 b(a)h(D)m(A)-8 b(TE)32 +b(k)m(eyw)m(ord)g(already)f(exists)227 4352 y(in)j(the)h(header,)i +(then)d(this)g(subroutine)f(will)g(simply)f(up)s(date)j(the)g(k)m(eyw)m +(ord)g(v)-5 b(alue)35 b(in-place)f(with)g(the)227 4465 +y(curren)m(t)c(date.)382 4694 y Fe(FTPDAT\(unit,)44 b(>)k(status\))0 +4924 y Fh(5)81 b Fi(Put)22 b(\(app)s(end\))f(a)i(new)f(k)m(eyw)m(ord)h +(of)g(the)f(appropriate)g(datat)m(yp)s(e)h(in)m(to)g(the)f(CHU.)h(Note) +h(that)f(FTPKYS)f(will)227 5036 y(only)32 b(write)g(string)f(v)-5 +b(alues)32 b(up)f(to)j(68)f(c)m(haracters)h(in)d(length;)i(longer)f +(strings)g(will)d(b)s(e)j(truncated.)47 b(The)227 5149 +y(FTPKLS)27 b(routine)g(can)i(b)s(e)f(used)f(to)i(write)e(longer)h +(strings,)g(using)e(a)j(non-standard)e(FITS)h(con)m(v)m(en)m(tion.)227 +5262 y(The)23 b(E)h(and)f(D)h(v)m(ersions)f(of)h(this)e(routine)h(ha)m +(v)m(e)i(the)f(added)f(feature)h(that)g(if)f(the)h('decimals')f +(parameter)h(is)227 5375 y(negativ)m(e,)h(then)20 b(the)i('G')g(displa) +m(y)d(format)i(rather)g(then)g(the)g('E')h(format)f(will)e(b)s(e)h +(used)g(when)g(constructing)227 5488 y(the)25 b(k)m(eyw)m(ord)f(v)-5 +b(alue,)25 b(taking)f(the)h(absolute)f(v)-5 b(alue)23 +b(of)i('decimals')e(for)h(the)g(precision.)37 b(This)22 +b(will)g(suppress)227 5601 y(trailing)32 b(zeros,)k(and)d(will)f(use)h +(a)i(\014xed)e(format)h(rather)g(than)f(an)h(exp)s(onen)m(tial)f +(format,)j(dep)s(ending)31 b(on)227 5714 y(the)g(magnitude)e(of)i(the)f +(v)-5 b(alue.)p eop +%%Page: 79 85 +79 84 bop 0 299 a Fg(9.4.)72 b(FITS)30 b(HEADER)h(I/O)f(SUBR)m(OUTINES) +2086 b Fi(79)382 555 y Fe(FTPKY[JLS]\(unit,keyword,)o(key)o(val,)o +(comm)o(ent)o(,)42 b(>)47 b(status\))382 668 y +(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o +(nt,)41 b(>)48 b(status\))0 915 y Fh(6)81 b Fi(Put)33 +b(\(app)s(end\))h(a)g(string)f(v)-5 b(alued)33 b(k)m(eyw)m(ord)i(in)m +(to)f(the)h(CHU)f(whic)m(h)f(ma)m(y)h(b)s(e)g(longer)g(than)f(68)i(c)m +(haracters)227 1028 y(in)i(length.)63 b(This)36 b(uses)i(the)g(Long)g +(String)f(Keyw)m(ord)h(con)m(v)m(en)m(tion)h(that)f(is)f(describ)s(ed)f +(in)h(the)h("Usage)227 1141 y(Guidelines)30 b(and)h(Suggestions")i +(section)f(of)h(this)e(do)s(cumen)m(t.)46 b(Since)32 +b(this)f(uses)h(a)g(non-standard)g(FITS)227 1254 y(con)m(v)m(en)m(tion) +37 b(to)e(enco)s(de)h(the)f(long)g(k)m(eyw)m(ord)g(string,)h(programs)e +(whic)m(h)g(use)h(this)f(routine)g(should)f(also)227 +1367 y(call)d(the)g(FTPLSW)g(routine)g(to)h(add)e(some)i(COMMENT)f(k)m +(eyw)m(ords)h(to)g(w)m(arn)f(users)f(of)i(the)f(FITS)g(\014le)227 +1480 y(that)36 b(this)e(con)m(v)m(en)m(tion)j(is)d(b)s(eing)g(used.)55 +b(FTPLSW)35 b(also)g(writes)g(a)g(k)m(eyw)m(ord)h(called)f(LONGSTRN)f +(to)227 1593 y(record)c(the)h(v)m(ersion)e(of)i(the)f(longstring)f(con) +m(v)m(en)m(tion)i(that)g(has)f(b)s(een)g(used,)f(in)g(case)i(a)g(new)f +(con)m(v)m(en)m(tion)227 1705 y(is)e(adopted)h(at)g(some)g(p)s(oin)m(t) +e(in)h(the)g(future.)40 b(If)28 b(the)g(LONGSTRN)g(k)m(eyw)m(ord)h(is)f +(already)g(presen)m(t)g(in)g(the)227 1818 y(header,)j(then)f(FTPLSW)g +(will)d(simply)h(return)i(and)f(will)f(not)j(write)e(duplicate)g(k)m +(eyw)m(ords.)382 2065 y Fe(FTPKLS\(unit,keyword,keyv)o(al,)o(comm)o +(ent,)41 b(>)47 b(status\))382 2178 y(FTPLSW\(unit,)d(>)k(status\))0 +2425 y Fh(7)81 b Fi(Put)30 b(\(app)s(end\))g(a)h(new)f(k)m(eyw)m(ord)h +(with)e(an)i(unde\014ned,)e(or)h(n)m(ull,)f(v)-5 b(alue)30 +b(in)m(to)h(the)g(CHU.)g(The)f(v)-5 b(alue)30 b(string)227 +2538 y(of)h(the)f(k)m(eyw)m(ord)h(is)f(left)g(blank)f(in)g(this)g +(case.)382 2785 y Fe(FTPKYU\(unit,keyword,comm)o(ent)o(,)42 +b(>)47 b(status\))0 3032 y Fh(8)81 b Fi(Put)41 b(\(app)s(end\))g(a)i(n) +m(um)m(b)s(ered)d(sequence)j(of)f(k)m(eyw)m(ords)g(in)m(to)g(the)h +(CHU.)f(One)f(ma)m(y)i(app)s(end)d(the)j(same)227 3145 +y(commen)m(t)37 b(to)g(ev)m(ery)g(k)m(eyw)m(ord)g(\(and)f(eliminate)e +(the)j(need)f(to)h(ha)m(v)m(e)g(an)f(arra)m(y)h(of)f(iden)m(tical)f +(commen)m(t)227 3258 y(strings,)i(one)f(for)g(eac)m(h)h(k)m(eyw)m +(ord\))g(b)m(y)f(including)d(the)j(amp)s(ersand)e(c)m(haracter)k(as)e +(the)h(last)f(non-blank)227 3371 y(c)m(haracter)h(in)d(the)i +(\(\014rst\))f(COMMENTS)f(string)g(parameter.)56 b(This)34 +b(same)h(string)g(will)d(then)j(b)s(e)g(used)227 3484 +y(for)30 b(the)g(commen)m(t)h(\014eld)e(in)f(all)h(the)h(k)m(eyw)m +(ords.)41 b(\(Note)32 b(that)e(the)g(SPP)f(v)m(ersion)h(of)g(these)g +(routines)f(only)227 3597 y(supp)s(orts)g(a)i(single)e(commen)m(t)i +(string\).)382 3844 y Fe(FTPKN[JLS]\(unit,keyroot,)o(sta)o(rtno)o(,no_) +o(key)o(s,ke)o(yval)o(s,c)o(omme)o(nts,)41 b(>)47 b(status\))382 +3957 y(FTPKN[EDFG]\(unit,keyroot)o(,st)o(artn)o(o,no)o(_ke)o(ys,k)o +(eyva)o(ls,)o(deci)o(mals)o(,co)o(mmen)o(ts,)41 b(>)907 +4070 y(status\))0 4317 y Fh(9)81 b Fi(Cop)m(y)21 b(an)h(indexed)e(k)m +(eyw)m(ord)j(from)e(one)h(HDU)h(to)f(another,)i(mo)s(difying)c(the)i +(index)e(n)m(um)m(b)s(er)g(of)i(the)g(k)m(eyw)m(ord)227 +4430 y(name)37 b(in)e(the)h(pro)s(cess.)58 b(F)-8 b(or)37 +b(example,)h(this)d(routine)h(could)f(read)h(the)h(TLMIN3)f(k)m(eyw)m +(ord)h(from)f(the)227 4542 y(input)27 b(HDU)i(\(b)m(y)f(giving)f(k)m +(eyro)s(ot)j(=)d("TLMIN")i(and)f(inn)m(um)e(=)i(3\))h(and)f(write)f(it) +h(to)h(the)f(output)g(HDU)227 4655 y(with)35 b(the)h(k)m(eyw)m(ord)h +(name)f(TLMIN4)g(\(b)m(y)g(setting)h(outn)m(um)e(=)h(4\).)58 +b(If)36 b(the)g(input)e(k)m(eyw)m(ord)j(do)s(es)f(not)227 +4768 y(exist,)31 b(then)f(this)f(routine)g(simply)f(returns)h(without)h +(indicating)e(an)i(error.)382 5015 y Fe(FTCPKYinunit,)44 +b(outunit,)i(innum,)g(outnum,)f(keyroot,)h(>)h(status\))0 +5262 y Fh(10)f Fi(Put)33 b(\(app)s(end\))f(a)h('triple)f(precision')g +(k)m(eyw)m(ord)h(in)m(to)g(the)h(CHU)f(in)f(F28.16)j(format.)49 +b(The)33 b(\015oating)g(p)s(oin)m(t)227 5375 y(k)m(eyw)m(ord)d(v)-5 +b(alue)29 b(is)f(constructed)i(b)m(y)f(concatenating)i(the)e(input)f +(in)m(teger)i(v)-5 b(alue)28 b(with)g(the)i(input)d(double)227 +5488 y(precision)20 b(fraction)i(v)-5 b(alue)22 b(\(whic)m(h)f(m)m(ust) +h(ha)m(v)m(e)h(a)f(v)-5 b(alue)22 b(b)s(et)m(w)m(een)h(0.0)g(and)e +(1.0\).)40 b(The)21 b(FTGKYT)h(routine)227 5601 y(should)34 +b(b)s(e)i(used)f(to)i(read)f(this)e(k)m(eyw)m(ord)j(v)-5 +b(alue,)37 b(b)s(ecause)f(the)g(other)h(k)m(eyw)m(ord)f(reading)f +(subroutines)227 5714 y(will)28 b(not)j(preserv)m(e)f(the)h(full)d +(precision)g(of)j(the)f(v)-5 b(alue.)p eop +%%Page: 80 86 +80 85 bop 0 299 a Fi(80)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 +555 y Fe(FTPKYT\(unit,keyword,intv)o(al,)o(dblv)o(al,c)o(omm)o(ent,)41 +b(>)48 b(status\))0 850 y Fh(11)e Fi(W)-8 b(rite)35 b(k)m(eyw)m(ords)h +(to)f(the)h(CHDU)f(that)h(are)f(de\014ned)f(in)f(an)i(ASCI)s(I)f +(template)h(\014le.)54 b(The)34 b(format)i(of)f(the)227 +963 y(template)c(\014le)f(is)f(describ)s(ed)f(under)h(the)i(ftgthd)f +(routine)f(b)s(elo)m(w.)382 1258 y Fe(FTPKTP\(unit,)44 +b(filename,)i(>)h(status\))0 1552 y Fh(12)f Fi(App)s(end)28 +b(the)i(ph)m(ysical)e(units)h(string)g(to)h(an)g(existing)f(k)m(eyw)m +(ord.)41 b(This)28 b(routine)h(uses)g(a)h(lo)s(cal)g(con)m(v)m(en)m +(tion,)227 1665 y(sho)m(wn)i(in)f(the)i(follo)m(wing)e(example,)i(in)e +(whic)m(h)g(the)i(k)m(eyw)m(ord)g(units)e(are)i(enclosed)f(in)f(square) +h(brac)m(k)m(ets)227 1778 y(in)d(the)i(b)s(eginning)d(of)i(the)h(k)m +(eyw)m(ord)g(commen)m(t)g(\014eld.)239 2073 y Fe(VELOCITY=)809 +b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382 2299 y +(FTPUNT\(unit,keyword,unit)o(s,)41 b(>)48 b(status\))0 +2630 y Fb(9.4.4)112 b(Insert)38 b(Keyw)m(ord)f(Subroutines)0 +2865 y Fh(1)81 b Fi(Insert)26 b(a)h(new)f(k)m(eyw)m(ord)h(record)g(in)m +(to)f(the)h(CHU)g(at)g(the)g(sp)s(eci\014ed)e(p)s(osition)g(\(i.e.,)j +(immediately)d(preceding)227 2978 y(the)34 b(\(k)m(eyno\)th)g(k)m(eyw)m +(ord)g(in)e(the)i(header.\))49 b(This)32 b('insert)g(record')i +(subroutine)d(is)h(somewhat)i(less)f(e\016-)227 3091 +y(cien)m(t)27 b(then)g(the)g('app)s(end)e(record')i(subroutine)e +(\(FTPREC\))h(describ)s(ed)f(ab)s(o)m(v)m(e)j(b)s(ecause)f(the)g +(remaining)227 3204 y(k)m(eyw)m(ords)k(in)e(the)i(header)f(ha)m(v)m(e)h +(to)g(b)s(e)f(shifted)f(do)m(wn)h(one)h(slot.)382 3499 +y Fe(FTIREC\(unit,key_no,card,)41 b(>)47 b(status\))0 +3793 y Fh(2)81 b Fi(Insert)36 b(a)h(new)f(k)m(eyw)m(ord)i(in)m(to)f +(the)g(CHU.)g(The)f(new)g(k)m(eyw)m(ord)i(is)e(inserted)f(immediately)g +(follo)m(wing)h(the)227 3906 y(last)26 b(k)m(eyw)m(ord)h(that)f(has)g +(b)s(een)g(read)g(from)f(the)h(header.)40 b(The)25 b(FTIKLS)g +(subroutine)f(w)m(orks)i(the)g(same)h(as)227 4019 y(the)h(FTIKYS)e +(subroutine,)g(except)j(it)e(also)g(supp)s(orts)f(long)h(string)f(v)-5 +b(alues)27 b(greater)h(than)f(68)h(c)m(haracters)227 +4132 y(in)35 b(length.)58 b(These)36 b('insert)f(k)m(eyw)m(ord')i +(subroutines)d(are)j(somewhat)g(less)e(e\016cien)m(t)i(then)f(the)g +('app)s(end)227 4245 y(k)m(eyw)m(ord')30 b(subroutines)d(describ)s(ed)g +(ab)s(o)m(v)m(e)j(b)s(ecause)f(the)g(remaining)f(k)m(eyw)m(ords)h(in)f +(the)h(header)g(ha)m(v)m(e)h(to)227 4358 y(b)s(e)g(shifted)f(do)m(wn)h +(one)h(slot.)382 4653 y Fe(FTIKEY\(unit,)44 b(card,)j(>)g(status\))382 +4766 y(FTIKY[JLS]\(unit,keyword,)o(key)o(val,)o(comm)o(ent)o(,)42 +b(>)47 b(status\))382 4878 y(FTIKLS\(unit,keyword,keyv)o(al,)o(comm)o +(ent,)41 b(>)47 b(status\))382 4991 y(FTIKY[EDFG]\(unit,keyword)o(,ke)o +(yval)o(,dec)o(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0 +5286 y Fh(3)81 b Fi(Insert)32 b(a)i(new)f(k)m(eyw)m(ord)h(with)e(an)h +(unde\014ned,)g(or)g(n)m(ull,)f(v)-5 b(alue)33 b(in)m(to)h(the)f(CHU.)h +(The)f(v)-5 b(alue)33 b(string)f(of)i(the)227 5399 y(k)m(eyw)m(ord)d +(is)f(left)g(blank)f(in)g(this)g(case.)382 5694 y Fe +(FTIKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))p +eop +%%Page: 81 87 +81 86 bop 0 299 a Fg(9.4.)72 b(FITS)30 b(HEADER)h(I/O)f(SUBR)m(OUTINES) +2086 b Fi(81)0 555 y Fb(9.4.5)112 b(Read)38 b(Keyw)m(ord)g(Subroutines) +0 774 y Fi(These)29 b(routines)e(return)h(the)h(v)-5 +b(alue)28 b(of)h(the)g(sp)s(eci\014ed)e(k)m(eyw)m(ord\(s\).)41 +b(Wild)28 b(card)g(c)m(haracters)i(\(*,)h(?,)e(or)g(#\))f(ma)m(y)0 +887 y(b)s(e)f(used)h(when)f(sp)s(ecifying)f(the)i(name)g(of)g(the)g(k)m +(eyw)m(ord)h(to)g(b)s(e)e(read:)39 b(a)29 b(')10 b(?')40 +b(will)25 b(matc)m(h)k(an)m(y)g(single)d(c)m(haracter)0 +1000 y(at)38 b(that)g(p)s(osition)d(in)h(the)i(k)m(eyw)m(ord)g(name)f +(and)g(a)g('*')i(will)34 b(matc)m(h)k(an)m(y)g(length)f(\(including)d +(zero\))k(string)f(of)0 1113 y(c)m(haracters.)65 b(The)37 +b('#')h(c)m(haracter)h(will)c(matc)m(h)k(an)m(y)f(consecutiv)m(e)h +(string)e(of)h(decimal)f(digits)f(\(0)j(-)f(9\).)64 b(Note)0 +1226 y(that)30 b(when)f(a)g(wild)e(card)j(is)e(used)h(in)f(the)i(input) +d(k)m(eyw)m(ord)j(name,)g(the)g(routine)e(will)f(only)i(searc)m(h)h +(for)f(a)h(matc)m(h)0 1339 y(from)h(the)h(curren)m(t)g(header)g(p)s +(osition)e(to)i(the)h(end)e(of)h(the)g(header.)45 b(It)32 +b(will)d(not)j(resume)g(the)g(searc)m(h)g(from)g(the)0 +1452 y(top)i(of)h(the)f(header)g(bac)m(k)h(to)g(the)f(original)e +(header)i(p)s(osition)e(as)j(is)e(done)h(when)f(no)h(wildcards)d(are)k +(included)0 1564 y(in)e(the)h(k)m(eyw)m(ord)h(name.)52 +b(If)33 b(the)h(desired)f(k)m(eyw)m(ord)i(string)e(is)g(8-c)m +(haracters)j(long)e(\(the)g(maxim)m(um)f(length)h(of)0 +1677 y(a)i(k)m(eyw)m(ord)g(name\))g(then)g(a)g('*')g(ma)m(y)h(b)s(e)e +(app)s(ended)f(as)h(the)h(nin)m(th)f(c)m(haracter)i(of)f(the)f(input)f +(name)i(to)g(force)0 1790 y(the)31 b(k)m(eyw)m(ord)g(searc)m(h)h(to)f +(stop)g(at)g(the)g(end)f(of)h(the)g(header)g(\(e.g.,)i('COMMENT)d(*')i +(will)c(searc)m(h)j(for)g(the)g(next)0 1903 y(COMMENT)37 +b(k)m(eyw)m(ord\).)64 b(The)37 b(\013grec)i(routine)e(ma)m(y)h(b)s(e)f +(used)g(to)i(set)f(the)g(starting)f(p)s(osition)f(when)h(doing)0 +2016 y(wild)28 b(card)i(searc)m(hes.)0 2264 y Fh(1)81 +b Fi(Get)37 b(the)f(n)m(th)f(80-c)m(haracter)k(header)d(record)g(from)f +(the)h(CHU.)h(The)e(\014rst)g(k)m(eyw)m(ord)i(in)d(the)i(header)g(is)f +(at)227 2377 y(k)m(ey)p 365 2377 28 4 v 34 w(no)42 b(=)f(1;)49 +b(if)41 b(k)m(ey)p 996 2377 V 34 w(no)h(=)f(0)i(then)e(this)g +(subroutine)f(simple)g(mo)m(v)m(es)k(the)e(in)m(ternal)f(p)s(oin)m(ter) +g(to)i(the)227 2490 y(b)s(eginning)33 b(of)j(the)g(header)f(so)h(that)g +(subsequen)m(t)f(k)m(eyw)m(ord)h(op)s(erations)f(will)e(start)j(at)g +(the)g(top)g(of)g(the)227 2603 y(header;)31 b(it)f(also)g(returns)f(a)i +(blank)e(card)h(v)-5 b(alue)30 b(in)f(this)g(case.)382 +2850 y Fe(FTGREC\(unit,key_no,)42 b(>)48 b(card,status\))0 +3098 y Fh(2)81 b Fi(Get)31 b(the)g(name,)f(v)-5 b(alue)30 +b(\(as)h(a)g(string\),)f(and)g(commen)m(t)i(of)e(the)h(n)m(th)f(k)m +(eyw)m(ord)h(in)e(CHU.)i(This)e(routine)g(also)227 3211 +y(c)m(hec)m(ks)i(that)f(the)g(returned)e(k)m(eyw)m(ord)i(name)f(\(KEYW) +m(ORD\))i(con)m(tains)f(only)e(legal)h(ASCI)s(I)f(c)m(haracters.)227 +3324 y(Call)h(FTGREC)h(and)g(FTPSV)m(C)g(to)h(b)m(ypass)f(this)f(error) +h(c)m(hec)m(k.)382 3572 y Fe(FTGKYN\(unit,key_no,)42 +b(>)48 b(keyword,value,comment,st)o(atu)o(s\))0 3819 +y Fh(3)81 b Fi(Get)31 b(the)g(80-c)m(haracter)i(header)d(record)g(for)g +(the)h(named)f(k)m(eyw)m(ord)382 4067 y Fe(FTGCRD\(unit,keyword,)42 +b(>)48 b(card,status\))0 4315 y Fh(4)81 b Fi(Get)26 b(the)f(next)h(k)m +(eyw)m(ord)f(whose)g(name)h(matc)m(hes)g(one)f(of)h(the)f(strings)f(in) +g('inclist')g(but)g(do)s(es)h(not)g(matc)m(h)i(an)m(y)227 +4428 y(of)32 b(the)f(strings)f(in)g('exclist'.)43 b(The)30 +b(strings)g(in)g(inclist)f(and)i(exclist)f(ma)m(y)i(con)m(tain)g(wild)c +(card)j(c)m(haracters)227 4541 y(\(*,)38 b(?,)e(and)e(#\))i(as)f +(describ)s(ed)e(at)j(the)f(b)s(eginning)d(of)k(this)e(section.)55 +b(This)33 b(routine)h(searc)m(hes)i(from)f(the)227 4654 +y(curren)m(t)28 b(header)f(p)s(osition)f(to)i(the)g(end)f(of)h(the)g +(header,)g(only)-8 b(,)28 b(and)f(do)s(es)g(not)h(con)m(tin)m(ue)g(the) +g(searc)m(h)g(from)227 4767 y(the)41 b(top)g(of)g(the)g(header)g(bac)m +(k)h(to)f(the)g(original)e(p)s(osition.)71 b(The)40 b(curren)m(t)h +(header)f(p)s(osition)f(ma)m(y)j(b)s(e)227 4880 y(reset)33 +b(with)d(the)i(ftgrec)h(routine.)43 b(Note)33 b(that)g(nexc)f(ma)m(y)g +(b)s(e)f(set)h(=)g(0)g(if)e(there)i(are)g(no)g(k)m(eyw)m(ords)g(to)h(b) +s(e)227 4993 y(excluded.)40 b(This)28 b(routine)i(returns)f(status)i(=) +f(202)h(if)f(a)g(matc)m(hing)h(k)m(eyw)m(ord)g(is)e(not)i(found.)382 +5240 y Fe(FTGNXK\(unit,inclist,ninc)o(,ex)o(clis)o(t,ne)o(xc,)41 +b(>)48 b(card,status\))0 5488 y Fh(5)81 b Fi(Get)30 b(the)g(literal)f +(k)m(eyw)m(ord)h(v)-5 b(alue)29 b(as)h(a)g(c)m(haracter)i(string.)39 +b(Regardless)30 b(of)g(the)g(datat)m(yp)s(e)g(of)g(the)g(k)m(eyw)m +(ord,)227 5601 y(this)36 b(routine)g(simply)f(returns)h(the)h(string)f +(of)h(c)m(haracters)i(in)c(the)j(v)-5 b(alue)36 b(\014eld)g(of)h(the)g +(k)m(eyw)m(ord)h(along)227 5714 y(with)29 b(the)i(commen)m(t)g +(\014eld.)p eop +%%Page: 82 88 +82 87 bop 0 299 a Fi(82)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 +555 y Fe(FTGKEY\(unit,keyword,)42 b(>)48 b(value,comment,status\))0 +817 y Fh(6)81 b Fi(Get)31 b(a)g(k)m(eyw)m(ord)g(v)-5 +b(alue)29 b(\(with)h(the)g(appropriate)g(datat)m(yp)s(e\))h(and)f +(commen)m(t)i(from)e(the)g(CHU)382 1079 y Fe(FTGKY[EDJLS]\(unit,keywor) +o(d,)41 b(>)48 b(keyval,comment,status\))0 1341 y Fh(7)81 +b Fi(Get)24 b(a)g(sequence)g(of)g(n)m(um)m(b)s(ered)e(k)m(eyw)m(ord)i +(v)-5 b(alues.)37 b(These)24 b(routines)e(do)h(not)h(supp)s(ort)e(wild) +f(card)i(c)m(haracters)227 1454 y(in)29 b(the)i(ro)s(ot)g(name.)382 +1716 y Fe(FTGKN[EDJLS]\(unit,keyroo)o(t,s)o(tart)o(no,m)o(ax_)o(keys)o +(,)42 b(>)47 b(keyvals,nfound,status\))0 1977 y Fh(8)81 +b Fi(Get)27 b(the)f(v)-5 b(alue)25 b(of)i(a)f(\015oating)g(p)s(oin)m(t) +f(k)m(eyw)m(ord,)j(returning)c(the)i(in)m(teger)g(and)g(fractional)f +(parts)h(of)g(the)g(v)-5 b(alue)227 2090 y(in)31 b(separate)h +(subroutine)e(argumen)m(ts.)45 b(This)30 b(subroutine)f(ma)m(y)k(b)s(e) +e(used)g(to)h(read)g(an)m(y)g(k)m(eyw)m(ord)g(but)f(is)227 +2203 y(esp)s(ecially)e(useful)f(for)j(reading)e(the)i('triple)e +(precision')f(k)m(eyw)m(ords)j(written)f(b)m(y)g(FTPKYT.)382 +2465 y Fe(FTGKYT\(unit,keyword,)42 b(>)48 b(intval,dblval,comment,s)o +(tat)o(us\))0 2727 y Fh(9)81 b Fi(Get)24 b(the)g(ph)m(ysical)f(units)f +(string)g(in)h(an)g(existing)g(k)m(eyw)m(ord.)39 b(This)22 +b(routine)h(uses)g(a)h(lo)s(cal)f(con)m(v)m(en)m(tion,)k(sho)m(wn)227 +2840 y(in)32 b(the)i(follo)m(wing)d(example,)j(in)e(whic)m(h)g(the)h(k) +m(eyw)m(ord)h(units)e(are)h(enclosed)g(in)f(square)h(brac)m(k)m(ets)i +(in)d(the)227 2953 y(b)s(eginning)g(of)j(the)g(k)m(eyw)m(ord)g(commen)m +(t)h(\014eld.)52 b(A)35 b(blank)f(string)f(is)h(returned)g(if)f(no)i +(units)e(are)i(de\014ned)227 3066 y(for)30 b(the)h(k)m(eyw)m(ord.)191 +3328 y Fe(VELOCITY=)809 b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382 +3553 y(FTGUNT\(unit,keyword,)c(>)48 b(units,status\))0 +3846 y Fb(9.4.6)112 b(Mo)s(dify)38 b(Keyw)m(ord)f(Subroutines)0 +4066 y Fi(Wild)30 b(card)h(c)m(haracters,)j(as)e(describ)s(ed)d(in)h +(the)i(Read)g(Keyw)m(ord)f(section,)h(ab)s(o)m(v)m(e,)h(ma)m(y)g(b)s(e) +d(used)h(when)g(sp)s(eci-)0 4179 y(fying)e(the)i(name)f(of)h(the)f(k)m +(eyw)m(ord)h(to)g(b)s(e)f(mo)s(di\014ed.)0 4441 y Fh(1)81 +b Fi(Mo)s(dify)29 b(\(o)m(v)m(erwrite\))i(the)g(n)m(th)f(80-c)m +(haracter)j(header)d(record)h(in)e(the)h(CHU)382 4702 +y Fe(FTMREC\(unit,key_no,card,)41 b(>)47 b(status\))0 +4964 y Fh(2)81 b Fi(Mo)s(dify)36 b(\(o)m(v)m(erwrite\))j(the)f(80-c)m +(haracter)j(header)c(record)h(for)f(the)h(named)f(k)m(eyw)m(ord)h(in)f +(the)h(CHU.)g(This)227 5077 y(can)31 b(b)s(e)f(used)f(to)i(o)m(v)m +(erwrite)g(the)g(name)f(of)h(the)f(k)m(eyw)m(ord)h(as)g(w)m(ell)e(as)i +(its)f(v)-5 b(alue)29 b(and)h(commen)m(t)i(\014elds.)382 +5339 y Fe(FTMCRD\(unit,keyword,card)o(,)42 b(>)47 b(status\))0 +5601 y Fh(3)81 b Fi(Mo)s(dify)32 b(\(o)m(v)m(erwrite\))k(the)e(name)g +(of)h(an)f(existing)f(k)m(eyw)m(ord)h(in)f(the)i(CHU)f(preserving)e +(the)j(curren)m(t)e(v)-5 b(alue)227 5714 y(and)30 b(commen)m(t)h +(\014elds.)p eop +%%Page: 83 89 +83 88 bop 0 299 a Fg(9.4.)72 b(FITS)30 b(HEADER)h(I/O)f(SUBR)m(OUTINES) +2086 b Fi(83)382 555 y Fe(FTMNAM\(unit,oldkey,keywo)o(rd,)41 +b(>)48 b(status\))0 823 y Fh(4)81 b Fi(Mo)s(dify)29 b(\(o)m(v)m +(erwrite\))i(the)g(commen)m(t)g(\014eld)e(of)i(an)f(existing)f(k)m(eyw) +m(ord)i(in)e(the)i(CHU)382 1091 y Fe(FTMCOM\(unit,keyword,comm)o(ent)o +(,)42 b(>)47 b(status\))0 1358 y Fh(5)81 b Fi(Mo)s(dify)23 +b(the)i(v)-5 b(alue)24 b(and)g(commen)m(t)i(\014elds)d(of)i(an)f +(existing)g(k)m(eyw)m(ord)h(in)e(the)i(CHU.)g(The)f(FTMKLS)g(subrou-) +227 1471 y(tine)34 b(w)m(orks)f(the)h(same)h(as)f(the)g(FTMKYS)f +(subroutine,)g(except)i(it)f(also)f(supp)s(orts)f(long)i(string)f(v)-5 +b(alues)227 1584 y(greater)38 b(than)f(68)h(c)m(haracters)g(in)e +(length.)59 b(Optionally)-8 b(,)37 b(one)g(ma)m(y)h(mo)s(dify)d(only)h +(the)h(v)-5 b(alue)36 b(\014eld)g(and)227 1697 y(lea)m(v)m(e)31 +b(the)e(commen)m(t)i(\014eld)d(unc)m(hanged)h(b)m(y)g(setting)g(the)h +(input)d(COMMENT)i(parameter)h(equal)f(to)h(the)227 1810 +y(amp)s(ersand)f(c)m(haracter)k(\(&\).)42 b(The)30 b(E)g(and)g(D)h(v)m +(ersions)f(of)h(this)f(routine)f(ha)m(v)m(e)j(the)f(added)f(feature)h +(that)227 1923 y(if)25 b(the)i('decimals')e(parameter)i(is)e(negativ)m +(e,)k(then)d(the)g('G')h(displa)m(y)d(format)j(rather)f(then)g(the)g +('E')h(format)227 2036 y(will)f(b)s(e)i(used)f(when)h(constructing)g +(the)g(k)m(eyw)m(ord)h(v)-5 b(alue,)29 b(taking)f(the)h(absolute)f(v)-5 +b(alue)28 b(of)g('decimals')g(for)227 2149 y(the)37 b(precision.)58 +b(This)34 b(will)g(suppress)h(trailing)f(zeros,)39 b(and)d(will)e(use)j +(a)g(\014xed)e(format)i(rather)g(than)f(an)227 2262 y(exp)s(onen)m +(tial)30 b(format,)h(dep)s(ending)c(on)k(the)f(magnitude)g(of)g(the)h +(v)-5 b(alue.)382 2530 y Fe(FTMKY[JLS]\(unit,keyword,)o(key)o(val,)o +(comm)o(ent)o(,)42 b(>)47 b(status\))382 2642 y +(FTMKLS\(unit,keyword,keyv)o(al,)o(comm)o(ent,)41 b(>)47 +b(status\))382 2755 y(FTMKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o +(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0 3023 +y Fh(6)81 b Fi(Mo)s(dify)21 b(the)h(v)-5 b(alue)22 b(of)g(an)g +(existing)g(k)m(eyw)m(ord)g(to)h(b)s(e)f(unde\014ned,)g(or)g(n)m(ull.) +36 b(The)22 b(v)-5 b(alue)21 b(string)h(of)g(the)g(k)m(eyw)m(ord)227 +3136 y(is)29 b(set)i(to)g(blank.)39 b(Optionally)-8 b(,)28 +b(one)i(ma)m(y)h(lea)m(v)m(e)g(the)g(commen)m(t)g(\014eld)d(unc)m +(hanged)i(b)m(y)g(setting)g(the)g(input)227 3249 y(COMMENT)g(parameter) +h(equal)f(to)h(the)g(amp)s(ersand)e(c)m(haracter)j(\(&\).)382 +3517 y Fe(FTMKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 +b(status\))0 3817 y Fb(9.4.7)112 b(Up)s(date)39 b(Keyw)m(ord)e +(Subroutines)0 4032 y Fh(1)81 b Fi(Up)s(date)36 b(an)g(80-c)m(haracter) +j(record)d(in)f(the)i(CHU.)f(If)g(the)g(sp)s(eci\014ed)f(k)m(eyw)m(ord) +i(already)e(exists)h(then)g(that)227 4144 y(header)j(record)f(will)e(b) +s(e)i(replaced)h(with)e(the)i(input)e(CARD)h(string.)65 +b(If)38 b(it)h(do)s(es)f(not)h(exist)f(then)h(the)227 +4257 y(new)f(record)g(will)d(b)s(e)i(added)h(to)g(the)g(header.)64 +b(The)37 b(FTUKLS)g(subroutine)f(w)m(orks)i(the)g(same)h(as)f(the)227 +4370 y(FTUKYS)28 b(subroutine,)f(except)j(it)e(also)h(supp)s(orts)d +(long)i(string)g(v)-5 b(alues)28 b(greater)i(than)e(68)h(c)m(haracters) +h(in)227 4483 y(length.)382 4751 y Fe(FTUCRD\(unit,keyword,card)o(,)42 +b(>)47 b(status\))0 5019 y Fh(2)81 b Fi(Up)s(date)44 +b(the)i(v)-5 b(alue)44 b(and)h(commen)m(t)h(\014elds)d(of)i(a)h(k)m +(eyw)m(ord)f(in)f(the)h(CHU.)h(The)e(sp)s(eci\014ed)f(k)m(eyw)m(ord)j +(is)227 5132 y(mo)s(di\014ed)37 b(if)g(it)h(already)g(exists)g(\(b)m(y) +h(calling)e(FTMKYx\))i(otherwise)e(a)i(new)f(k)m(eyw)m(ord)h(is)f +(created)h(b)m(y)227 5245 y(calling)c(FTPKYx.)58 b(The)36 +b(E)g(and)f(D)i(v)m(ersions)e(of)i(this)e(routine)g(ha)m(v)m(e)i(the)g +(added)e(feature)i(that)g(if)e(the)227 5357 y('decimals')30 +b(parameter)i(is)e(negativ)m(e,)i(then)e(the)h('G')h(displa)m(y)d +(format)i(rather)g(then)f(the)h('E')g(format)h(will)227 +5470 y(b)s(e)41 b(used)f(when)h(constructing)g(the)g(k)m(eyw)m(ord)h(v) +-5 b(alue,)44 b(taking)d(the)g(absolute)g(v)-5 b(alue)41 +b(of)h('decimals')e(for)227 5583 y(the)d(precision.)58 +b(This)34 b(will)g(suppress)h(trailing)f(zeros,)39 b(and)d(will)e(use)j +(a)g(\014xed)e(format)i(rather)g(than)f(an)227 5696 y(exp)s(onen)m +(tial)30 b(format,)h(dep)s(ending)c(on)k(the)f(magnitude)g(of)g(the)h +(v)-5 b(alue.)p eop +%%Page: 84 90 +84 89 bop 0 299 a Fi(84)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 +555 y Fe(FTUKY[JLS]\(unit,keyword,)o(key)o(val,)o(comm)o(ent)o(,)42 +b(>)47 b(status\))382 668 y(FTUKLS\(unit,keyword,keyv)o(al,)o(comm)o +(ent,)41 b(>)47 b(status\))382 781 y(FTUKY[EDFG]\(unit,keyword)o(,ke)o +(yval)o(,dec)o(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0 +1044 y Fh(3)81 b Fi(Up)s(date)23 b(the)g(v)-5 b(alue)23 +b(of)h(an)f(existing)g(k)m(eyw)m(ord)h(to)g(b)s(e)f(unde\014ned,)f(or)i +(n)m(ull,)f(or)g(insert)g(a)g(new)g(unde\014ned-v)-5 +b(alue)227 1157 y(k)m(eyw)m(ord)30 b(if)e(it)h(do)s(esn't)g(already)g +(exist.)40 b(The)29 b(v)-5 b(alue)29 b(string)f(of)h(the)h(k)m(eyw)m +(ord)f(is)g(left)g(blank)f(in)f(this)i(case.)382 1420 +y Fe(FTUKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 +1715 y Fb(9.4.8)112 b(Delete)37 b(Keyw)m(ord)g(Subroutines)0 +1927 y Fh(1)81 b Fi(Delete)31 b(an)f(existing)f(k)m(eyw)m(ord)i +(record.)40 b(The)30 b(space)h(previously)d(o)s(ccupied)h(b)m(y)h(the)g +(k)m(eyw)m(ord)h(is)e(reclaimed)227 2040 y(b)m(y)d(mo)m(ving)g(all)f +(the)h(follo)m(wing)f(header)h(records)g(up)f(one)h(ro)m(w)h(in)d(the)j +(header.)39 b(The)25 b(\014rst)h(routine)f(deletes)227 +2153 y(a)34 b(k)m(eyw)m(ord)f(at)h(a)g(sp)s(eci\014ed)d(p)s(osition)g +(in)h(the)h(header)g(\(the)h(\014rst)e(k)m(eyw)m(ord)i(is)e(at)i(p)s +(osition)d(1\),)k(whereas)227 2266 y(the)d(second)g(routine)f(deletes)h +(a)g(sp)s(eci\014cally)d(named)i(k)m(eyw)m(ord.)46 b(Wild)30 +b(card)h(c)m(haracters,)j(as)e(describ)s(ed)227 2378 +y(in)e(the)h(Read)g(Keyw)m(ord)f(section,)h(ab)s(o)m(v)m(e,)h(ma)m(y)g +(b)s(e)e(used)g(when)f(sp)s(ecifying)g(the)i(name)g(of)g(the)f(k)m(eyw) +m(ord)227 2491 y(to)h(b)s(e)f(deleted)g(\(b)s(e)g(careful!\).)382 +2755 y Fe(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382 +2867 y(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 3205 +y Fd(9.5)135 b(Data)46 b(Scaling)g(and)e(Unde\014ned)h(Pixel)h(P)l +(arameters)0 3456 y Fi(These)24 b(subroutines)e(de\014ne)i(or)h(mo)s +(dify)d(the)j(in)m(ternal)e(parameters)i(used)f(b)m(y)g(FITSIO)g(to)h +(either)f(scale)h(the)f(data)0 3569 y(or)33 b(to)i(represen)m(t)e +(unde\014ned)e(pixels.)48 b(Generally)33 b(FITSIO)f(will)f(scale)i(the) +h(data)g(according)f(to)h(the)g(v)-5 b(alues)33 b(of)0 +3682 y(the)f(BSCALE)g(and)f(BZER)m(O)h(\(or)h(TSCALn)d(and)i(TZER)m +(On\))f(k)m(eyw)m(ords,)i(ho)m(w)m(ev)m(er)h(these)e(subroutines)e(ma)m +(y)0 3795 y(b)s(e)i(used)h(to)h(o)m(v)m(erride)f(the)g(k)m(eyw)m(ord)h +(v)-5 b(alues.)48 b(This)31 b(ma)m(y)j(b)s(e)f(useful)e(when)h(one)i(w) +m(an)m(ts)f(to)h(read)f(or)g(write)g(the)0 3908 y(ra)m(w)d(unscaled)e +(v)-5 b(alues)28 b(in)h(the)g(FITS)g(\014le.)39 b(Similarly)-8 +b(,)27 b(FITSIO)h(generally)h(uses)g(the)g(v)-5 b(alue)29 +b(of)h(the)f(BLANK)h(or)0 4021 y(TNULLn)35 b(k)m(eyw)m(ord)h(to)g +(signify)d(an)j(unde\014ned)d(pixel,)i(but)g(these)h(routines)f(ma)m(y) +h(b)s(e)e(used)h(to)h(o)m(v)m(erride)g(this)0 4134 y(v)-5 +b(alue.)40 b(These)30 b(subroutines)e(do)j(not)f(create)i(or)f(mo)s +(dify)d(the)j(corresp)s(onding)d(header)i(k)m(eyw)m(ord)h(v)-5 +b(alues.)0 4397 y Fh(1)81 b Fi(Reset)26 b(the)g(scaling)e(factors)i(in) +e(the)i(primary)e(arra)m(y)i(or)f(image)h(extension;)h(do)s(es)e(not)g +(c)m(hange)i(the)f(BSCALE)227 4510 y(and)i(BZER)m(O)g(k)m(eyw)m(ord)h +(v)-5 b(alues)27 b(and)h(only)f(a\013ects)j(the)e(automatic)i(scaling)d +(p)s(erformed)g(when)g(the)h(data)227 4623 y(elemen)m(ts)e(are)g +(written/read)f(to/from)h(the)g(FITS)f(\014le.)38 b(When)25 +b(reading)g(from)g(a)h(FITS)f(\014le)f(the)i(returned)227 +4736 y(data)i(v)-5 b(alue)27 b(=)g(\(the)h(v)-5 b(alue)27 +b(giv)m(en)h(in)e(the)h(FITS)g(arra)m(y\))h(*)g(BSCALE)f(+)g(BZER)m(O.) +g(The)g(in)m(v)m(erse)h(form)m(ula)227 4849 y(is)33 b(used)g(when)g +(writing)f(data)j(v)-5 b(alues)33 b(to)h(the)g(FITS)g(\014le.)50 +b(\(NOTE:)34 b(BSCALE)f(and)g(BZER)m(O)h(m)m(ust)g(b)s(e)227 +4962 y(declared)c(as)h(Double)f(Precision)f(v)-5 b(ariables\).)382 +5225 y Fe(FTPSCL\(unit,bscale,bzero)o(,)42 b(>)47 b(status\))0 +5488 y Fh(2)81 b Fi(Reset)39 b(the)f(scaling)g(parameters)g(for)h(a)f +(table)g(column;)k(do)s(es)c(not)g(c)m(hange)i(the)e(TSCALn)f(or)h +(TZER)m(On)227 5601 y(k)m(eyw)m(ord)29 b(v)-5 b(alues)28 +b(and)f(only)h(a\013ects)h(the)g(automatic)g(scaling)e(p)s(erformed)g +(when)g(the)i(data)g(elemen)m(ts)g(are)227 5714 y(written/read)i +(to/from)h(the)g(FITS)f(\014le.)43 b(When)31 b(reading)f(from)h(a)h +(FITS)f(\014le)f(the)i(returned)e(data)i(v)-5 b(alue)p +eop +%%Page: 85 91 +85 90 bop 0 299 a Fg(9.6.)72 b(FITS)30 b(PRIMAR)-8 b(Y)31 +b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)e(I/O)i(SUBR)m(OUTINES)589 +b Fi(85)227 555 y(=)40 b(\(the)h(v)-5 b(alue)39 b(giv)m(en)h(in)f(the)h +(FITS)g(arra)m(y\))g(*)h(TSCAL)e(+)g(TZER)m(O.)h(The)f(in)m(v)m(erse)h +(form)m(ula)g(is)f(used)227 668 y(when)33 b(writing)f(data)j(v)-5 +b(alues)34 b(to)g(the)h(FITS)e(\014le.)51 b(\(NOTE:)34 +b(TSCAL)f(and)g(TZER)m(O)g(m)m(ust)h(b)s(e)f(declared)227 +781 y(as)e(Double)f(Precision)f(v)-5 b(ariables\).)382 +1041 y Fe(FTTSCL\(unit,colnum,tscal)o(,tz)o(ero,)41 b(>)48 +b(status\))0 1300 y Fh(3)81 b Fi(De\014ne)36 b(the)g(in)m(teger)h(v)-5 +b(alue)35 b(to)i(b)s(e)e(used)h(to)h(signify)d(unde\014ned)g(pixels)g +(in)h(the)h(primary)e(arra)m(y)j(or)f(image)227 1413 +y(extension.)53 b(This)33 b(is)g(only)h(used)g(if)f(BITPIX)h(=)h(8,)h +(16,)g(or)f(32.)54 b(This)33 b(do)s(es)h(not)h(create)h(or)e(c)m(hange) +i(the)227 1526 y(v)-5 b(alue)30 b(of)h(the)f(BLANK)h(k)m(eyw)m(ord)g +(in)e(the)h(header.)382 1786 y Fe(FTPNUL\(unit,blank,)43 +b(>)k(status\))0 2046 y Fh(4)81 b Fi(De\014ne)36 b(the)g(string)f(to)h +(b)s(e)f(used)g(to)i(signify)d(unde\014ned)g(pixels)g(in)g(a)i(column)f +(in)g(an)g(ASCI)s(I)g(table.)57 b(This)227 2158 y(do)s(es)30 +b(not)h(create)h(or)e(c)m(hange)i(the)e(v)-5 b(alue)30 +b(of)h(the)f(TNULLn)g(k)m(eyw)m(ord.)382 2418 y Fe +(FTSNUL\(unit,colnum,snull)41 b(>)47 b(status\))0 2678 +y Fh(5)81 b Fi(De\014ne)34 b(the)h(v)-5 b(alue)33 b(to)i(b)s(e)f(used)g +(to)h(signify)d(unde\014ned)g(pixels)h(in)g(an)h(in)m(teger)h(column)e +(in)g(a)h(binary)f(table)227 2791 y(\(where)c(TF)m(ORMn)f(=)g('B',)i +('I',)f(or)f('J'\).)i(This)c(do)s(es)j(not)f(create)j(or)d(c)m(hange)i +(the)e(v)-5 b(alue)28 b(of)h(the)g(TNULLn)227 2904 y(k)m(eyw)m(ord.)382 +3163 y Fe(FTTNUL\(unit,colnum,tnull)41 b(>)47 b(status\))0 +3497 y Fd(9.6)135 b(FITS)44 b(Primary)h(Arra)l(y)g(or)g(IMA)l(GE)g +(Extension)h(I/O)f(Subroutines)0 3747 y Fi(These)26 b(subroutines)e +(put)i(or)h(get)g(data)h(v)-5 b(alues)25 b(in)h(the)g(primary)f(data)i +(arra)m(y)g(\(i.e.,)h(the)f(\014rst)f(HDU)h(in)e(the)i(FITS)0 +3860 y(\014le\))34 b(or)h(an)f(IMA)m(GE)i(extension.)53 +b(The)34 b(data)i(arra)m(y)f(is)e(represen)m(ted)i(as)g(a)g(single)e +(one-dimensional)g(arra)m(y)i(of)0 3973 y(pixels)f(regardless)i(of)g +(the)g(actual)g(dimensionalit)m(y)d(of)k(the)f(arra)m(y)-8 +b(,)38 b(and)e(the)g(FPIXEL)g(parameter)g(giv)m(es)h(the)0 +4086 y(p)s(osition)26 b(within)e(this)j(1-D)h(arra)m(y)g(of)g(the)g +(\014rst)e(pixel)g(to)i(read)g(or)f(write.)39 b(Automatic)28 +b(data)g(t)m(yp)s(e)g(con)m(v)m(ersion)g(is)0 4199 y(p)s(erformed)h +(for)i(n)m(umeric)f(data)h(\(except)i(for)d(complex)h(data)g(t)m(yp)s +(es\))h(if)e(the)h(data)g(t)m(yp)s(e)g(of)g(the)g(primary)e(arra)m(y)0 +4312 y(\(de\014ned)f(b)m(y)g(the)h(BITPIX)f(k)m(eyw)m(ord\))h +(di\013ers)f(from)g(the)g(data)i(t)m(yp)s(e)e(of)h(the)g(arra)m(y)g(in) +e(the)i(calling)e(subroutine.)0 4425 y(The)41 b(data)i(v)-5 +b(alues)41 b(are)h(also)g(scaled)f(b)m(y)h(the)g(BSCALE)f(and)g(BZER)m +(O)h(header)f(v)-5 b(alues)41 b(as)h(they)g(are)g(b)s(eing)0 +4538 y(written)31 b(or)h(read)g(from)g(the)g(FITS)g(arra)m(y)-8 +b(.)47 b(The)31 b(ftpscl)h(subroutine)e(MUST)h(b)s(e)h(called)f(to)i +(de\014ne)e(the)i(scaling)0 4650 y(parameters)h(when)e(writing)g(data)i +(to)g(the)g(FITS)f(arra)m(y)h(or)f(to)h(o)m(v)m(erride)g(the)g(default) +e(scaling)h(v)-5 b(alue)33 b(giv)m(en)g(in)0 4763 y(the)e(header)f +(when)f(reading)h(the)g(FITS)g(arra)m(y)-8 b(.)0 4924 +y(Tw)m(o)41 b(sets)f(of)h(subroutines)d(are)j(pro)m(vided)e(to)i(read)g +(the)f(data)i(arra)m(y)f(whic)m(h)e(di\013er)g(in)g(the)i(w)m(a)m(y)g +(unde\014ned)0 5036 y(pixels)33 b(are)j(handled.)54 b(The)35 +b(\014rst)f(set)i(of)g(routines)e(\(FTGPVx\))i(simply)d(return)h(an)h +(arra)m(y)h(of)g(data)g(elemen)m(ts)0 5149 y(in)31 b(whic)m(h)g +(unde\014ned)f(pixels)g(are)j(set)f(equal)g(to)h(a)g(v)-5 +b(alue)31 b(sp)s(eci\014ed)g(b)m(y)h(the)g(user)g(in)f(the)h('n)m(ullv) +-5 b(al')30 b(parameter.)0 5262 y(An)k(additional)f(feature)i(of)f +(these)h(subroutines)e(is)g(that)j(if)d(the)i(user)f(sets)h(n)m(ullv)-5 +b(al)32 b(=)i(0,)i(then)f(no)f(c)m(hec)m(ks)i(for)0 5375 +y(unde\014ned)d(pixels)h(will)f(b)s(e)h(p)s(erformed,)i(th)m(us)f +(increasing)f(the)i(sp)s(eed)e(of)i(the)g(program.)55 +b(The)35 b(second)h(set)g(of)0 5488 y(routines)30 b(\(FTGPFx\))j +(returns)d(the)i(data)g(elemen)m(t)g(arra)m(y)g(and,)f(in)g(addition,)f +(a)i(logical)f(arra)m(y)h(whic)m(h)e(de\014nes)0 5601 +y(whether)40 b(the)g(corresp)s(onding)e(data)j(pixel)e(is)g +(unde\014ned.)69 b(The)39 b(latter)i(set)g(of)f(subroutines)e(ma)m(y)j +(b)s(e)f(more)0 5714 y(con)m(v)m(enien)m(t)32 b(to)h(use)e(in)f(some)h +(circumstances,)h(ho)m(w)m(ev)m(er,)h(it)e(requires)f(an)h(additional)e +(arra)m(y)j(of)g(logical)f(v)-5 b(alues)p eop +%%Page: 86 92 +86 91 bop 0 299 a Fi(86)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 +555 y Fi(whic)m(h)35 b(can)h(b)s(e)g(un)m(wieldy)d(when)j(w)m(orking)f +(with)g(large)h(data)h(arra)m(ys.)58 b(Also)36 b(for)g(programmer)g +(con)m(v)m(enience,)0 668 y(sets)j(of)g(subroutines)e(to)i(directly)f +(read)g(or)h(write)f(2)h(and)g(3)g(dimensional)d(arra)m(ys)j(ha)m(v)m +(e)h(b)s(een)e(pro)m(vided,)i(as)0 781 y(w)m(ell)29 b(as)h(a)g(set)g +(of)g(subroutines)d(to)j(read)g(or)g(write)e(an)m(y)i(con)m(tiguous)g +(rectangular)g(subset)f(of)h(pixels)e(within)f(the)0 +894 y(n-dimensional)g(arra)m(y)-8 b(.)0 1150 y Fh(1)81 +b Fi(Get)30 b(the)g(data)g(t)m(yp)s(e)f(of)h(the)g(image)f(\(=)h +(BITPIX)f(v)-5 b(alue\).)40 b(P)m(ossible)28 b(returned)g(v)-5 +b(alues)29 b(are:)41 b(8,)30 b(16,)h(32,)g(-32,)227 1263 +y(or)f(-64)h(corresp)s(onding)d(to)j(unsigned)d(b)m(yte,)j(signed)e +(2-b)m(yte)i(in)m(teger,)g(signed)e(4-b)m(yte)i(in)m(teger,)g(real,)f +(and)227 1376 y(double.)227 1525 y(The)c(second)f(subroutine)f(is)h +(similar)e(to)j(FTGIDT,)h(except)f(that)h(if)e(the)g(image)i(pixel)d(v) +-5 b(alues)25 b(are)h(scaled,)227 1638 y(with)g(non-default)g(v)-5 +b(alues)26 b(for)h(the)h(BZER)m(O)f(and)f(BSCALE)g(k)m(eyw)m(ords,)j +(then)e(this)f(routine)g(will)e(return)227 1751 y(the)32 +b('equiv)-5 b(alen)m(t')31 b(data)g(t)m(yp)s(e)h(that)f(is)f(needed)h +(to)h(store)g(the)f(scaled)g(v)-5 b(alues.)42 b(F)-8 +b(or)32 b(example,)f(if)f(BITPIX)227 1864 y(=)39 b(16)g(and)g(BSCALE)f +(=)g(0.1)i(then)f(the)g(equiv)-5 b(alen)m(t)38 b(data)h(t)m(yp)s(e)g +(is)f(\015oating)h(p)s(oin)m(t,)h(and)e(-32)i(will)d(b)s(e)227 +1977 y(returned.)65 b(There)39 b(are)g(2)g(sp)s(ecial)f(cases:)58 +b(if)38 b(the)h(image)g(con)m(tains)g(unsigned)e(2-b)m(yte)j(in)m +(teger)f(v)-5 b(alues,)227 2090 y(with)39 b(BITPIX)h(=)f(16,)44 +b(BSCALE)39 b(=)h(1,)j(and)c(BZER)m(O)h(=)g(32768,)45 +b(then)39 b(this)g(routine)g(will)f(return)h(a)227 2203 +y(non-standard)26 b(v)-5 b(alue)26 b(of)h(20)h(for)f(the)g(bitpix)e(v) +-5 b(alue.)39 b(Similarly)23 b(if)i(the)j(image)f(con)m(tains)g +(unsigned)e(4-b)m(yte)227 2316 y(in)m(tegers,)31 b(then)f(bitpix)e +(will)g(b)s(e)i(returned)f(with)g(a)i(v)-5 b(alue)30 +b(of)g(40.)382 2571 y Fe(FTGIDT\(unit,)44 b(>)k(bitpix,status\))382 +2684 y(FTGIET\(unit,)c(>)k(bitpix,status\))0 2940 y Fh(2)81 +b Fi(Get)31 b(the)g(dimension)c(\(n)m(um)m(b)s(er)j(of)g(axes)h(=)f +(NAXIS\))h(of)f(the)h(image)382 3196 y Fe(FTGIDM\(unit,)44 +b(>)k(naxis,status\))0 3452 y Fh(3)81 b Fi(Get)31 b(the)g(size)f(of)g +(all)g(the)g(dimensions)e(of)i(the)h(image)382 3707 y +Fe(FTGISZ\(unit,)44 b(maxdim,)i(>)i(naxes,status\))0 +3963 y Fh(4)81 b Fi(Get)35 b(the)f(parameters)g(that)h(de\014ne)e(the)h +(t)m(yp)s(e)g(and)g(size)f(of)i(the)f(image.)52 b(This)32 +b(routine)h(simply)e(com)m(bines)227 4076 y(calls)f(to)h(the)f(ab)s(o)m +(v)m(e)i(3)f(routines.)382 4332 y Fe(FTGIPR\(unit,)44 +b(maxdim,)i(>)i(bitpix,)d(naxis,)h(naxes,)h(int)f(*status\))0 +4588 y Fh(5)81 b Fi(Put)30 b(elemen)m(ts)g(in)m(to)h(the)f(data)h(arra) +m(y)382 4843 y Fe(FTPPR[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o +(ts,v)o(alue)o(s,)41 b(>)48 b(status\))0 5099 y Fh(6)81 +b Fi(Put)30 b(elemen)m(ts)h(in)m(to)f(the)h(data)g(arra)m(y)-8 +b(,)32 b(substituting)c(the)i(appropriate)g(FITS)g(n)m(ull)e(v)-5 +b(alue)30 b(for)g(all)g(elemen)m(ts)227 5212 y(whic)m(h)d(are)g(equal)h +(to)g(the)f(v)-5 b(alue)27 b(of)h(NULL)-10 b(V)g(AL.)28 +b(F)-8 b(or)28 b(in)m(teger)g(FITS)f(arra)m(ys,)i(the)e(n)m(ull)f(v)-5 +b(alue)27 b(de\014ned)f(b)m(y)227 5325 y(the)k(previous)e(call)h(to)i +(FTPNUL)e(will)e(b)s(e)i(substituted;)g(for)g(\015oating)h(p)s(oin)m(t) +f(FITS)g(arra)m(ys)h(\(BITPIX)f(=)227 5438 y(-32)j(or)e(-64\))i(then)e +(the)h(sp)s(ecial)e(IEEE)g(NaN)i(\(Not-a-Num)m(b)s(er\))h(v)-5 +b(alue)30 b(will)e(b)s(e)i(substituted.)382 5694 y Fe +(FTPPN[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o(ts,v)o(alue)o +(s,n)o(ullv)o(al)42 b(>)47 b(status\))p eop +%%Page: 87 93 +87 92 bop 0 299 a Fg(9.6.)72 b(FITS)30 b(PRIMAR)-8 b(Y)31 +b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)e(I/O)i(SUBR)m(OUTINES)589 +b Fi(87)0 555 y Fh(7)81 b Fi(Set)30 b(data)h(arra)m(y)g(elemen)m(ts)g +(as)f(unde\014ned)382 808 y Fe(FTPPRU\(unit,group,fpixel)o(,ne)o(leme)o +(nts,)41 b(>)47 b(status\))0 1060 y Fh(8)81 b Fi(Get)36 +b(elemen)m(ts)f(from)g(the)g(data)h(arra)m(y)-8 b(.)55 +b(Unde\014ned)34 b(arra)m(y)h(elemen)m(ts)h(will)c(b)s(e)j(returned)f +(with)f(a)j(v)-5 b(alue)34 b(=)227 1173 y(n)m(ullv)-5 +b(al,)28 b(unless)h(n)m(ullv)-5 b(al)28 b(=)i(0)h(in)e(whic)m(h)g(case) +i(no)g(c)m(hec)m(ks)g(for)g(unde\014ned)d(pixels)g(will)g(b)s(e)i(p)s +(erformed.)382 1425 y Fe(FTGPV[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele) +o(men)o(ts,n)o(ullv)o(al,)41 b(>)48 b(values,anyf,status\))0 +1678 y Fh(9)81 b Fi(Get)32 b(elemen)m(ts)f(and)g(n)m(ull\015ags)e(from) +i(data)h(arra)m(y)-8 b(.)44 b(An)m(y)32 b(unde\014ned)d(arra)m(y)i +(elemen)m(ts)h(will)c(ha)m(v)m(e)33 b(the)e(corre-)227 +1791 y(sp)s(onding)d(\015agv)-5 b(als)30 b(elemen)m(t)h(set)g(equal)f +(to)h(.TR)m(UE.)382 2043 y Fe(FTGPF[BIJED]\(unit,group,)o(fpi)o(xel,)o +(nele)o(men)o(ts,)41 b(>)48 b(values,flagvals,anyf,sta)o(tus)o(\))0 +2295 y Fh(10)e Fi(Put)30 b(v)-5 b(alues)30 b(in)m(to)g(group)g +(parameters)382 2548 y Fe(FTPGP[BIJED]\(unit,group,)o(fpa)o(rm,n)o +(parm)o(,va)o(lues)o(,)42 b(>)47 b(status\))0 2800 y +Fh(11)f Fi(Get)31 b(v)-5 b(alues)30 b(from)g(group)g(parameters)382 +3053 y Fe(FTGGP[BIJED]\(unit,group,)o(fpa)o(rm,n)o(parm)o(,)42 +b(>)47 b(values,status\))0 3305 y Fi(The)32 b(follo)m(wing)e(4)j +(subroutines)d(transfer)h(FITS)h(images)g(with)f(2)h(or)g(3)h +(dimensions)c(to)k(or)f(from)g(a)h(data)f(arra)m(y)0 +3418 y(whic)m(h)g(has)h(b)s(een)g(declared)f(in)g(the)i(calling)e +(program.)49 b(The)33 b(dimensionalit)m(y)d(of)k(the)f(FITS)g(image)g +(is)f(passed)0 3531 y(b)m(y)26 b(the)g(naxis1,)g(naxis2,)h(and)e +(naxis3)h(parameters)g(and)f(the)h(declared)g(dimensions)d(of)j(the)g +(program)g(arra)m(y)h(are)0 3644 y(passed)k(in)e(the)j(dim1)d(and)i +(dim2)f(parameters.)43 b(Note)32 b(that)g(the)f(program)g(arra)m(y)g +(do)s(es)g(not)g(ha)m(v)m(e)i(to)e(ha)m(v)m(e)i(the)0 +3757 y(same)28 b(dimensions)d(as)j(the)g(FITS)e(arra)m(y)-8 +b(,)30 b(but)d(m)m(ust)g(b)s(e)g(at)i(least)e(as)h(big.)39 +b(F)-8 b(or)29 b(example)e(if)f(a)i(FITS)f(image)h(with)0 +3870 y(NAXIS1)j(=)f(NAXIS2)h(=)f(400)i(is)d(read)i(in)m(to)f(a)h +(program)f(arra)m(y)h(whic)m(h)e(is)h(dimensioned)e(as)i(512)i(x)f(512) +g(pixels,)0 3983 y(then)d(the)g(image)h(will)c(just)j(\014ll)e(the)j +(lo)m(w)m(er)f(left)g(corner)g(of)h(the)f(arra)m(y)h(with)e(pixels)f +(in)h(the)i(range)f(1)h(-)f(400)i(in)d(the)0 4095 y(X)32 +b(an)g(Y)h(directions.)45 b(This)30 b(has)i(the)h(e\013ect)g(of)g +(taking)f(a)h(con)m(tiguous)f(set)h(of)f(pixel)f(v)-5 +b(alue)32 b(in)e(the)j(FITS)e(arra)m(y)0 4208 y(and)k(writing)e(them)i +(to)h(a)g(non-con)m(tiguous)f(arra)m(y)g(in)f(program)h(memory)g +(\(i.e.,)i(there)f(are)f(no)m(w)h(some)f(blank)0 4321 +y(pixels)29 b(around)g(the)h(edge)i(of)e(the)h(image)f(in)f(the)i +(program)f(arra)m(y\).)0 4574 y Fh(11)46 b Fi(Put)30 +b(2-D)i(image)e(in)m(to)h(the)f(data)h(arra)m(y)382 4826 +y Fe(FTP2D[BIJED]\(unit,group,)o(dim)o(1,na)o(xis1)o(,na)o(xis2)o(,ima) +o(ge,)41 b(>)48 b(status\))0 5078 y Fh(12)e Fi(Put)30 +b(3-D)i(cub)s(e)d(in)m(to)i(the)f(data)h(arra)m(y)382 +5331 y Fe(FTP3D[BIJED]\(unit,group,)o(dim)o(1,di)o(m2,n)o(axi)o(s1,n)o +(axis)o(2,n)o(axis)o(3,cu)o(be,)41 b(>)48 b(status\))0 +5583 y Fh(13)e Fi(Get)29 b(2-D)f(image)g(from)g(the)f(data)i(arra)m(y) +-8 b(.)41 b(Unde\014ned)26 b(pixels)f(in)i(the)h(arra)m(y)g(will)d(b)s +(e)i(set)h(equal)f(to)i(the)e(v)-5 b(alue)227 5696 y(of)31 +b('n)m(ullv)-5 b(al',)28 b(unless)h(n)m(ullv)-5 b(al=0)28 +b(in)h(whic)m(h)g(case)j(no)e(testing)h(for)f(unde\014ned)e(pixels)g +(will)g(b)s(e)i(p)s(erformed.)p eop +%%Page: 88 94 +88 93 bop 0 299 a Fi(88)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 +555 y Fe(FTG2D[BIJED]\(unit,group,)o(nul)o(lval)o(,dim)o(1,n)o(axis)o +(1,na)o(xis)o(2,)42 b(>)47 b(image,anyf,status\))0 766 +y Fh(14)f Fi(Get)31 b(3-D)h(cub)s(e)e(from)g(the)g(data)h(arra)m(y)-8 +b(.)42 b(Unde\014ned)29 b(pixels)g(in)g(the)h(arra)m(y)h(will)d(b)s(e)i +(set)h(equal)f(to)h(the)f(v)-5 b(alue)227 879 y(of)31 +b('n)m(ullv)-5 b(al',)28 b(unless)h(n)m(ullv)-5 b(al=0)28 +b(in)h(whic)m(h)g(case)j(no)e(testing)h(for)f(unde\014ned)e(pixels)g +(will)g(b)s(e)i(p)s(erformed.)382 1089 y Fe(FTG3D[BIJED]\(unit,group,)o +(nul)o(lval)o(,dim)o(1,d)o(im2,)o(naxi)o(s1,)o(naxi)o(s2,n)o(axi)o(s3,) +41 b(>)1002 1202 y(cube,anyf,status\))0 1413 y Fi(The)i(follo)m(wing)e +(subroutines)g(transfer)i(a)h(rectangular)f(subset)f(of)i(the)f(pixels) +e(in)h(a)i(FITS)e(N-dimensional)0 1525 y(image)30 b(to)h(or)f(from)f +(an)h(arra)m(y)g(whic)m(h)f(has)h(b)s(een)f(declared)g(in)g(the)h +(calling)f(program.)40 b(The)29 b(fpixels)f(and)h(lpixels)0 +1638 y(parameters)e(are)h(in)m(teger)f(arra)m(ys)h(whic)m(h)e(sp)s +(ecify)f(the)j(starting)f(and)f(ending)g(pixels)f(in)h(eac)m(h)i +(dimension)c(of)k(the)0 1751 y(FITS)36 b(image)h(that)g(are)g(to)h(b)s +(e)e(read)g(or)h(written.)59 b(\(Note)38 b(that)g(these)f(are)g(the)g +(starting)f(and)g(ending)g(pixels)0 1864 y(in)d(the)i(FITS)f(image,)j +(not)e(in)e(the)i(declared)f(arra)m(y\).)55 b(The)34 +b(arra)m(y)i(parameter)f(is)f(treated)h(simply)e(as)i(a)g(large)0 +1977 y(one-dimensional)28 b(arra)m(y)i(of)h(the)f(appropriate)f(datat)m +(yp)s(e)i(con)m(taining)f(the)g(pixel)e(v)-5 b(alues;)30 +b(The)f(pixel)g(v)-5 b(alues)29 b(in)0 2090 y(the)d(FITS)f(arra)m(y)i +(are)f(read/written)f(from/to)i(this)e(program)g(arra)m(y)i(in)d +(strict)i(sequence)g(without)f(an)m(y)i(gaps;)g(it)0 +2203 y(is)h(up)f(to)j(the)f(calling)e(routine)h(to)h(correctly)g(in)m +(terpret)f(the)h(dimensionalit)m(y)d(of)j(this)f(arra)m(y)-8 +b(.)41 b(The)28 b(t)m(w)m(o)i(families)0 2316 y(of)d(FITS)g(reading)f +(routines)g(\(FTGSVx)h(and)g(FTGSFx)g(subroutines\))e(also)j(ha)m(v)m +(e)g(an)f('incs')g(parameter)g(whic)m(h)0 2429 y(de\014nes)j(the)h +(data)h(sampling)c(in)m(terv)-5 b(al)30 b(in)g(eac)m(h)i(dimension)c +(of)j(the)g(FITS)f(arra)m(y)-8 b(.)43 b(F)-8 b(or)32 +b(example,)f(if)f(incs\(1\)=2)0 2542 y(and)j(incs\(2\)=3)g(when)g +(reading)f(a)i(2-dimensional)d(FITS)i(image,)h(then)f(only)g(ev)m(ery)h +(other)f(pixel)f(in)g(the)i(\014rst)0 2655 y(dimension)c(and)j(ev)m +(ery)h(3rd)e(pixel)g(in)g(the)h(second)g(dimension)d(will)h(b)s(e)h +(returned)g(in)g(the)h('arra)m(y')h(parameter.)0 2767 +y([Note:)39 b(the)25 b(FTGSSx)f(family)g(of)g(routines)g(whic)m(h)g(w)m +(ere)h(presen)m(t)g(in)e(previous)g(v)m(ersions)h(of)h(FITSIO)f(ha)m(v) +m(e)i(b)s(een)0 2880 y(sup)s(erseded)i(b)m(y)j(the)f(more)h(general)f +(FTGSVx)g(family)f(of)i(routines.])0 3091 y Fh(15)46 +b Fi(Put)30 b(an)g(arbitrary)f(data)i(subsection)f(in)m(to)g(the)h +(data)g(arra)m(y)-8 b(.)382 3301 y Fe(FTPSS[BIJED]\(unit,group,)o(nax)o +(is,n)o(axes)o(,fp)o(ixel)o(s,lp)o(ixe)o(ls,a)o(rray)o(,)42 +b(>)47 b(status\))0 3512 y Fh(16)f Fi(Get)30 b(an)e(arbitrary)f(data)j +(subsection)d(from)h(the)h(data)g(arra)m(y)-8 b(.)42 +b(Unde\014ned)27 b(pixels)f(in)i(the)g(arra)m(y)i(will)25 +b(b)s(e)j(set)227 3625 y(equal)j(to)i(the)e(v)-5 b(alue)32 +b(of)f('n)m(ullv)-5 b(al',)30 b(unless)g(n)m(ullv)-5 +b(al=0)30 b(in)g(whic)m(h)g(case)j(no)e(testing)h(for)f(unde\014ned)f +(pixels)227 3738 y(will)e(b)s(e)i(p)s(erformed.)382 3948 +y Fe(FTGSV[BIJED]\(unit,group,)o(nax)o(is,n)o(axes)o(,fp)o(ixel)o(s,lp) +o(ixe)o(ls,i)o(ncs,)o(nul)o(lval)o(,)42 b(>)1002 4061 +y(array,anyf,status\))0 4272 y Fh(17)k Fi(Get)34 b(an)f(arbitrary)f +(data)h(subsection)f(from)h(the)g(data)g(arra)m(y)-8 +b(.)50 b(An)m(y)33 b(Unde\014ned)e(pixels)g(in)h(the)h(arra)m(y)h(will) +227 4384 y(ha)m(v)m(e)e(the)e(corresp)s(onding)f('\015agv)-5 +b(als')30 b(elemen)m(t)h(set)g(equal)f(to)h(.TR)m(UE.)382 +4595 y Fe(FTGSF[BIJED]\(unit,group,)o(nax)o(is,n)o(axes)o(,fp)o(ixel)o +(s,lp)o(ixe)o(ls,i)o(ncs,)41 b(>)1002 4708 y(array,flagvals,anyf,statu) +o(s\))0 5034 y Fd(9.7)135 b(FITS)44 b(ASCI)t(I)g(and)h(Binary)g(T)-11 +b(able)45 b(Data)h(I/O)f(Subroutines)0 5287 y Fb(9.7.1)112 +b(Column)37 b(Information)f(Subroutines)0 5488 y Fh(1)81 +b Fi(Get)30 b(the)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(or)f(columns)f(in) +h(the)h(curren)m(t)f(FITS)g(table.)40 b(The)29 b(n)m(um)m(b)s(er)f(of)i +(ro)m(ws)g(is)e(giv)m(en)i(b)m(y)227 5601 y(the)k(NAXIS2)f(k)m(eyw)m +(ord)h(and)e(the)i(n)m(um)m(b)s(er)e(of)h(columns)f(is)g(giv)m(en)h(b)m +(y)g(the)h(TFIELDS)e(k)m(eyw)m(ord)i(in)e(the)227 5714 +y(header)e(of)h(the)g(table.)p eop +%%Page: 89 95 +89 94 bop 0 299 a Fg(9.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 +b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES) +979 b Fi(89)382 555 y Fe(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\))382 +668 y(FTGNCL\(unit,)e(>)k(ncols,)e(status\))0 921 y Fh(2)81 +b Fi(Get)25 b(the)f(table)h(column)e(n)m(um)m(b)s(er)g(\(and)h(name\))h +(of)f(the)h(column)e(whose)h(name)g(matc)m(hes)i(an)e(input)f(template) +227 1034 y(name.)38 b(The)21 b(table)h(column)e(names)i(are)g +(de\014ned)e(b)m(y)i(the)g(TTYPEn)e(k)m(eyw)m(ords)i(in)e(the)i(FITS)f +(header.)37 b(If)22 b(a)227 1147 y(column)h(do)s(es)h(not)g(ha)m(v)m(e) +h(a)f(TTYPEn)f(k)m(eyw)m(ord,)j(then)d(these)h(routines)f(assume)h +(that)g(the)h(name)e(consists)227 1260 y(of)i(all)f(blank)g(c)m +(haracters.)40 b(These)25 b(2)g(subroutines)d(p)s(erform)i(the)h(same)g +(function)f(except)i(that)f(FTGCNO)227 1373 y(only)i(returns)f(the)h(n) +m(um)m(b)s(er)f(of)h(the)g(matc)m(hing)h(column)e(whereas)h(FTGCNN)g +(also)g(returns)f(the)i(name)f(of)227 1486 y(the)k(column.)39 +b(If)30 b(CASESEN)f(=)h(.true.)41 b(then)30 b(the)h(column)e(name)h +(matc)m(h)i(will)27 b(b)s(e)j(case-sensitiv)m(e.)227 +1635 y(The)41 b(input)d(column)i(name)h(template)g(\(COL)-8 +b(TEMPLA)g(TE\))41 b(is)f(\(1\))h(either)g(the)g(exact)h(name)f(of)g +(the)227 1748 y(column)35 b(to)j(b)s(e)d(searc)m(hed)i(for,)h(or)e +(\(2\))i(it)e(ma)m(y)h(con)m(tain)f(wild)e(cards)i(c)m(haracters)i +(\(*,)h(?,)f(or)e(#\),)i(or)f(\(3\))227 1861 y(it)c(ma)m(y)h(con)m +(tain)f(the)g(n)m(um)m(b)s(er)f(of)h(the)g(desired)f(column)g(\(where)h +(the)g(n)m(um)m(b)s(er)f(is)g(expressed)g(as)h(ASCI)s(I)227 +1974 y(digits\).)39 b(The)28 b(\014rst)g(2)h(wild)d(cards)i(b)s(eha)m +(v)m(e)h(similarly)c(to)k(UNIX)g(\014lename)f(matc)m(hing:)39 +b(the)29 b('*')g(c)m(haracter)227 2087 y(matc)m(hes)e(an)m(y)g +(sequence)f(of)h(c)m(haracters)g(\(including)c(zero)k(c)m(haracters\))h +(and)d(the)i(')10 b(?')39 b(c)m(haracter)28 b(matc)m(hes)227 +2199 y(an)m(y)40 b(single)f(c)m(haracter.)71 b(The)39 +b(#)h(wildcard)d(will)g(matc)m(h)k(an)m(y)f(consecutiv)m(e)h(string)e +(of)h(decimal)e(digits)227 2312 y(\(0-9\).)45 b(As)31 +b(an)g(example,)g(the)g(template)g(strings)f('AB?DE',)i('AB*E',)h(and)d +('AB*CDE')j(will)28 b(all)i(matc)m(h)227 2425 y(the)c(string)f +('ABCDE'.)j(If)d(more)h(than)g(one)g(column)f(name)h(in)f(the)h(table)g +(matc)m(hes)h(the)f(template)h(string,)227 2538 y(then)33 +b(the)h(\014rst)f(matc)m(h)h(is)e(returned)h(and)f(the)i(status)g(v)-5 +b(alue)33 b(will)d(b)s(e)j(set)h(to)g(237)h(as)f(a)f(w)m(arning)g(that) +h(a)227 2651 y(unique)f(matc)m(h)j(w)m(as)f(not)g(found.)53 +b(T)-8 b(o)35 b(\014nd)f(the)h(other)g(cases)g(that)h(matc)m(h)g(the)f +(template,)h(simply)d(call)227 2764 y(the)27 b(subroutine)e(again)i +(lea)m(ving)g(the)g(input)e(status)i(v)-5 b(alue)27 b(equal)f(to)i(237) +g(and)f(the)g(next)g(matc)m(hing)g(name)227 2877 y(will)i(then)j(b)s(e) +f(returned.)43 b(Rep)s(eat)32 b(this)f(pro)s(cess)g(un)m(til)f(a)i +(status)g(=)g(219)h(\(column)d(name)i(not)g(found\))f(is)227 +2990 y(returned.)40 b(If)30 b(these)h(subroutines)d(fail)h(to)i(matc)m +(h)g(the)g(template)g(to)g(an)m(y)g(of)f(the)h(columns)e(in)g(the)i +(table,)227 3103 y(they)i(lastly)e(c)m(hec)m(k)j(if)e(the)g(template)h +(can)g(b)s(e)e(in)m(terpreted)h(as)h(a)g(simple)d(p)s(ositiv)m(e)h(in)m +(teger)i(\(e.g.,)i('7',)f(or)227 3216 y('512'\))i(and)d(if)f(so,)j +(they)f(return)e(that)j(column)d(n)m(um)m(b)s(er.)49 +b(If)33 b(no)g(matc)m(hes)i(are)f(found)e(then)h(a)h(status)g(=)227 +3329 y(219)e(error)e(is)f(returned.)227 3478 y(Note)i(that)e(the)h +(FITS)e(Standard)g(recommends)g(that)i(only)e(letters,)i(digits,)e(and) +h(the)g(underscore)f(c)m(har-)227 3591 y(acter)44 b(b)s(e)e(used)g(in)g +(column)f(names)i(\(with)f(no)g(em)m(b)s(edded)g(spaces)h(in)f(the)h +(name\).)78 b(T)-8 b(railing)40 b(blank)227 3704 y(c)m(haracters)32 +b(are)f(not)g(signi\014can)m(t.)40 b(It)31 b(is)e(recommended)i(that)g +(the)g(column)e(names)h(in)g(a)h(giv)m(en)f(table)h(b)s(e)227 +3816 y(unique)e(within)f(the)i(\014rst)g(8)h(c)m(haracters.)382 +4070 y Fe(FTGCNO\(unit,casesen,colt)o(emp)o(late)o(,)42 +b(>)47 b(colnum,status\))382 4182 y(FTGCNN\(unit,casesen,colt)o(emp)o +(late)o(,)42 b(>)47 b(colname,colnum,status\))0 4436 +y Fh(3)81 b Fi(Get)39 b(the)g(datat)m(yp)s(e)h(of)e(a)h(column)f(in)f +(an)h(ASCI)s(I)g(or)g(binary)f(table.)65 b(This)37 b(routine)h(returns) +f(an)i(in)m(teger)227 4549 y(co)s(de)34 b(v)-5 b(alue)32 +b(corresp)s(onding)f(to)j(the)g(datat)m(yp)s(e)g(of)f(the)g(column.)48 +b(\(See)34 b(the)f(FTBNFM)i(and)d(FT)-8 b(ASFM)227 4661 +y(subroutines)26 b(in)h(the)h(Utilities)f(section)h(of)g(this)f(do)s +(cumen)m(t)h(for)g(a)h(list)e(of)h(the)h(co)s(de)f(v)-5 +b(alues\).)40 b(The)27 b(v)m(ector)227 4774 y(rep)s(eat)38 +b(coun)m(t)g(\(whic)m(h)f(is)g(alw)m(a)m(y)h(1)g(for)g(ASCI)s(I)e +(table)h(columns\))g(is)g(also)g(returned.)62 b(If)37 +b(the)h(sp)s(eci\014ed)227 4887 y(column)31 b(has)g(an)g(ASCI)s(I)f(c)m +(haracter)j(datat)m(yp)s(e)g(\(co)s(de)f(=)f(16\))i(then)e(the)h(width) +d(of)j(a)g(unit)e(string)h(in)f(the)227 5000 y(column)i(is)g(also)h +(returned.)48 b(Note)34 b(that)g(this)d(routine)h(supp)s(orts)g(the)h +(lo)s(cal)f(con)m(v)m(en)m(tion)i(for)f(sp)s(ecifying)227 +5113 y(arra)m(ys)f(of)f(strings)f(within)e(a)k(binary)d(table)i(c)m +(haracter)h(column,)f(using)e(the)i(syn)m(tax)h(TF)m(ORM)f(=)g('rAw') +227 5226 y(where)f('r')g(is)g(the)g(total)h(n)m(um)m(b)s(er)e(of)i(c)m +(haracters)g(\(=)g(the)f(width)f(of)h(the)g(column\))g(and)g('w')g(is)f +(the)i(width)227 5339 y(of)39 b(a)f(unit)f(string)g(within)f(the)i +(column.)63 b(Th)m(us)37 b(if)g(the)h(column)f(has)h(TF)m(ORM)h(=)f +('60A12')i(then)e(this)227 5452 y(routine)30 b(will)d(return)j(dataco)s +(de)h(=)f(16,)h(rep)s(eat)g(=)f(60,)i(and)d(width)g(=)h(12.)227 +5601 y(The)h(second)h(routine,)f(FTEQTY)g(is)f(similar)f(except)k(that) +f(in)e(the)i(case)g(of)g(scaled)f(in)m(teger)h(columns)e(it)227 +5714 y(returns)23 b(the)h('equiv)-5 b(alen)m(t')23 b(data)h(t)m(yp)s(e) +g(that)h(is)d(needed)i(to)g(store)g(the)g(scaled)f(v)-5 +b(alues,)25 b(and)e(not)h(necessarily)p eop +%%Page: 90 96 +90 95 bop 0 299 a Fi(90)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)227 +555 y Fi(the)38 b(ph)m(ysical)f(data)h(t)m(yp)s(e)g(of)g(the)g +(unscaled)f(v)-5 b(alues)37 b(as)h(stored)g(in)f(the)h(FITS)f(table.)63 +b(F)-8 b(or)38 b(example)g(if)227 668 y(a)d('1I')g(column)e(in)g(a)h +(binary)f(table)h(has)g(TSCALn)f(=)g(1)i(and)f(TZER)m(On)f(=)g(32768,) +38 b(then)c(this)f(column)227 781 y(e\013ectiv)m(ely)25 +b(con)m(tains)f(unsigned)e(short)h(in)m(teger)i(v)-5 +b(alues,)24 b(and)g(th)m(us)f(the)h(returned)f(v)-5 b(alue)23 +b(of)h(t)m(yp)s(eco)s(de)h(will)227 894 y(b)s(e)32 b(the)h(co)s(de)g +(for)g(an)f(unsigned)f(short)h(in)m(teger,)i(not)f(a)g(signed)f(short)g +(in)m(teger.)48 b(Similarly)-8 b(,)30 b(if)i(a)h(column)227 +1007 y(has)d(TTYPEn)g(=)g('1I')h(and)f(TSCALn)e(=)i(0.12,)j(then)d(the) +g(returned)g(t)m(yp)s(eco)s(de)g(will)e(b)s(e)i(the)h(co)s(de)f(for)h +(a)227 1120 y('real')g(column.)382 1382 y Fe(FTGTCL\(unit,colnum,)42 +b(>)48 b(datacode,repeat,width,st)o(atu)o(s\))382 1495 +y(FTEQTY\(unit,colnum,)42 b(>)48 b(datacode,repeat,width,st)o(atu)o +(s\))0 1758 y Fh(4)81 b Fi(Return)22 b(the)i(displa)m(y)e(width)g(of)h +(a)h(column.)38 b(This)21 b(is)i(the)h(length)f(of)g(the)h(string)f +(that)h(will)d(b)s(e)i(returned)f(when)227 1871 y(reading)32 +b(the)h(column)f(as)h(a)g(formatted)g(string.)47 b(The)32 +b(displa)m(y)f(width)g(is)h(determined)g(b)m(y)g(the)h(TDISPn)227 +1984 y(k)m(eyw)m(ord,)e(if)f(presen)m(t,)g(otherwise)g(b)m(y)g(the)h +(data)g(t)m(yp)s(e)g(of)f(the)h(column.)382 2246 y Fe(FTGCDW\(unit,)44 +b(colnum,)i(>)i(dispwidth,)d(status\))0 2509 y Fh(5)81 +b Fi(Get)29 b(information)d(ab)s(out)i(an)g(existing)f(ASCI)s(I)g +(table)h(column.)39 b(\(NOTE:)28 b(TSCAL)f(and)g(TZER)m(O)h(m)m(ust)g +(b)s(e)227 2622 y(declared)i(as)h(Double)f(Precision)f(v)-5 +b(ariables\).)39 b(All)29 b(the)i(returned)e(parameters)i(are)f(scalar) +h(quan)m(tities.)382 2884 y Fe(FTGACL\(unit,colnum,)42 +b(>)716 2997 y(ttype,tbcol,tunit,tform,)o(tsca)o(l,t)o(zero)o(,snu)o +(ll,)o(tdis)o(p,st)o(atu)o(s\))0 3259 y Fh(6)81 b Fi(Get)29 +b(information)d(ab)s(out)h(an)h(existing)f(binary)f(table)i(column.)39 +b(\(NOTE:)28 b(TSCAL)e(and)i(TZER)m(O)f(m)m(ust)h(b)s(e)227 +3372 y(declared)i(as)g(Double)f(Precision)g(v)-5 b(ariables\).)39 +b(D)m(A)-8 b(T)g(A)g(TYPE)32 b(is)d(a)h(c)m(haracter)i(string)c(whic)m +(h)h(returns)g(the)227 3485 y(datat)m(yp)s(e)35 b(of)g(the)f(column)f +(as)h(de\014ned)f(b)m(y)h(the)g(TF)m(ORMn)g(k)m(eyw)m(ord)h(\(e.g.,)i +('I',)e('J','E',)g('D',)g(etc.\).)54 b(In)227 3598 y(the)27 +b(case)g(of)g(an)f(ASCI)s(I)f(c)m(haracter)j(column,)e(D)m(A)-8 +b(T)g(A)g(TYPE)29 b(will)23 b(ha)m(v)m(e)28 b(a)f(v)-5 +b(alue)26 b(of)g(the)h(form)f('An')g(where)227 3711 y('n')34 +b(is)f(an)h(in)m(teger)h(expressing)e(the)h(width)e(of)i(the)h(\014eld) +d(in)h(c)m(haracters.)53 b(F)-8 b(or)35 b(example,)g(if)e(TF)m(ORM)h(=) +227 3824 y('160A8')39 b(then)e(FTGBCL)f(will)e(return)i(D)m(A)-8 +b(T)g(A)g(TYPE='A8')39 b(and)d(REPEA)-8 b(T=20.)60 b(All)35 +b(the)i(returned)227 3937 y(parameters)31 b(are)g(scalar)f(quan)m +(tities.)382 4199 y Fe(FTGBCL\(unit,colnum,)42 b(>)716 +4312 y(ttype,tunit,datatype,rep)o(eat,)o(tsc)o(al,t)o(zero)o(,tn)o +(ull,)o(tdis)o(p,s)o(tatu)o(s\))0 4575 y Fh(7)81 b Fi(Put)31 +b(\(app)s(end\))g(a)i(TDIMn)f(k)m(eyw)m(ord)g(whose)g(v)-5 +b(alue)32 b(has)g(the)g(form)g('\(l,m,n...\)')46 b(where)32 +b(l,)g(m,)g(n...)46 b(are)33 b(the)227 4688 y(dimensions)28 +b(of)i(a)h(m)m(ultidimension)c(arra)m(y)j(column)g(in)f(a)h(binary)f +(table.)382 4950 y Fe(FTPTDM\(unit,colnum,naxis)o(,na)o(xes,)41 +b(>)48 b(status\))0 5213 y Fh(8)81 b Fi(Return)29 b(the)h(n)m(um)m(b)s +(er)e(of)i(and)g(size)f(of)h(the)g(dimensions)e(of)i(a)g(table)g +(column.)39 b(Normally)29 b(this)g(information)227 5326 +y(is)h(giv)m(en)h(b)m(y)g(the)g(TDIMn)f(k)m(eyw)m(ord,)i(but)e(if)g +(this)g(k)m(eyw)m(ord)h(is)f(not)h(presen)m(t)g(then)g(this)e(routine)h +(returns)227 5439 y(NAXIS)g(=)g(1)h(and)f(NAXES\(1\))h(equal)f(to)h +(the)g(rep)s(eat)g(coun)m(t)g(in)e(the)h(TF)m(ORM)h(k)m(eyw)m(ord.)382 +5701 y Fe(FTGTDM\(unit,colnum,maxdi)o(m,)41 b(>)48 b +(naxis,naxes,status\))p eop +%%Page: 91 97 +91 96 bop 0 299 a Fg(9.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 +b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES) +979 b Fi(91)0 555 y Fh(9)81 b Fi(Deco)s(de)33 b(the)g(input)e(TDIMn)i +(k)m(eyw)m(ord)g(string)e(\(e.g.)50 b('\(100,200\)'\))37 +b(and)32 b(return)g(the)h(n)m(um)m(b)s(er)e(of)i(and)f(size)227 +668 y(of)c(the)g(dimensions)d(of)j(a)g(binary)e(table)h(column.)39 +b(If)27 b(the)h(input)e(tdimstr)g(c)m(haracter)j(string)e(is)g(n)m +(ull,)f(then)227 781 y(this)e(routine)f(returns)g(naxis)g(=)i(1)f(and)g +(naxes[0])i(equal)d(to)j(the)e(rep)s(eat)h(coun)m(t)g(in)e(the)h(TF)m +(ORM)h(k)m(eyw)m(ord.)227 894 y(This)k(routine)g(is)h(called)f(b)m(y)h +(FTGTDM.)382 1147 y Fe(FTDTDM\(unit,tdimstr,coln)o(um,)o(maxd)o(im,)41 +b(>)48 b(naxis,naxes,)c(status\))0 1400 y Fh(10)i Fi(Return)32 +b(the)h(optimal)f(n)m(um)m(b)s(er)g(of)h(ro)m(ws)g(to)h(read)f(or)g +(write)f(at)i(one)f(time)g(for)f(maxim)m(um)g(I/O)h(e\016ciency)-8 +b(.)227 1513 y(Refer)31 b(to)g(the)g(\\Optimizing)d(Co)s(de")i(section) +h(in)e(Chapter)h(5)g(for)h(more)f(discussion)e(on)i(ho)m(w)h(to)g(use)f +(this)227 1626 y(routine.)382 1879 y Fe(FFGRSZ\(unit,)44 +b(>)k(nrows,status\))0 2169 y Fb(9.7.2)112 b(Lo)m(w-Lev)m(el)38 +b(T)-9 b(able)37 b(Access)g(Subroutines)0 2388 y Fi(The)d(follo)m(wing) +e(subroutines)g(pro)m(vide)i(lo)m(w-lev)m(el)g(access)h(to)g(the)g +(data)g(in)e(ASCI)s(I)f(or)i(binary)f(tables)h(and)g(are)0 +2501 y(mainly)27 b(useful)g(as)j(an)f(e\016cien)m(t)g(w)m(a)m(y)h(to)g +(cop)m(y)g(all)e(or)h(part)g(of)g(a)g(table)g(from)g(one)g(lo)s(cation) +g(to)h(another.)40 b(These)0 2614 y(routines)23 b(simply)f(read)i(or)h +(write)e(the)i(sp)s(eci\014ed)d(n)m(um)m(b)s(er)h(of)i(consecutiv)m(e)g +(b)m(ytes)g(in)e(an)h(ASCI)s(I)f(or)h(binary)f(table,)0 +2727 y(without)36 b(regard)h(for)f(column)g(b)s(oundaries)e(or)j(the)g +(ro)m(w)g(length)g(in)e(the)i(table.)60 b(The)37 b(\014rst)f(t)m(w)m(o) +i(subroutines)0 2840 y(read)29 b(or)h(write)f(consecutiv)m(e)h(b)m +(ytes)g(in)e(a)i(table)f(to)i(or)e(from)g(a)h(c)m(haracter)h(string)d +(v)-5 b(ariable,)29 b(while)f(the)h(last)h(t)m(w)m(o)0 +2953 y(subroutines)f(read)j(or)g(write)f(consecutiv)m(e)h(b)m(ytes)h +(to)f(or)g(from)f(a)h(v)-5 b(ariable)31 b(declared)g(as)h(a)g(n)m +(umeric)e(data)j(t)m(yp)s(e)0 3065 y(\(e.g.,)40 b(INTEGER,)d +(INTEGER*2,)i(REAL,)d(DOUBLE)h(PRECISION\).)f(These)g(routines)g(do)g +(not)h(p)s(erform)0 3178 y(an)m(y)c(mac)m(hine)f(dep)s(enden)m(t)g +(data)i(con)m(v)m(ersion)f(or)f(b)m(yte)i(sw)m(apping,)e(except)i(that) +f(con)m(v)m(ersion)g(to/from)g(ASCI)s(I)0 3291 y(format)d(is)f(p)s +(erformed)f(b)m(y)h(the)h(FTGTBS)f(and)g(FTPTBS)g(routines)g(on)g(mac)m +(hines)g(whic)m(h)g(do)g(not)h(use)f(ASCI)s(I)0 3404 +y(c)m(haracter)j(co)s(des)e(in)f(the)i(in)m(ternal)e(data)i(represen)m +(tations)g(\(e.g.,)h(on)e(IBM)h(mainframe)e(computers\).)0 +3657 y Fh(1)81 b Fi(Read)26 b(a)h(consecutiv)m(e)g(string)f(of)g(c)m +(haracters)i(from)e(an)g(ASCI)s(I)f(table)h(in)m(to)h(a)f(c)m(haracter) +i(v)-5 b(ariable)26 b(\(spanning)227 3770 y(columns)31 +b(and)h(m)m(ultiple)e(ro)m(ws)i(if)f(necessary\))i(This)e(routine)g +(should)f(not)j(b)s(e)e(used)h(with)f(binary)f(tables)227 +3883 y(b)s(ecause)h(of)f(complications)f(related)i(to)g(passing)e +(string)g(v)-5 b(ariables)29 b(b)s(et)m(w)m(een)i(C)f(and)g(F)-8 +b(ortran.)382 4136 y Fe(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 +b(>)48 b(string,status\))0 4390 y Fh(2)81 b Fi(W)-8 b(rite)30 +b(a)h(consecutiv)m(e)g(string)e(of)i(c)m(haracters)g(to)g(an)f(ASCI)s +(I)f(table)h(from)g(a)h(c)m(haracter)h(v)-5 b(ariable)29 +b(\(spanning)227 4503 y(columns)i(and)h(m)m(ultiple)e(ro)m(ws)i(if)f +(necessary\))i(This)e(routine)g(should)f(not)j(b)s(e)e(used)h(with)f +(binary)f(tables)227 4615 y(b)s(ecause)h(of)f(complications)f(related)i +(to)g(passing)e(string)g(v)-5 b(ariables)29 b(b)s(et)m(w)m(een)i(C)f +(and)g(F)-8 b(ortran.)382 4869 y Fe(FTPTBS\(unit,frow,startch)o(ar,)o +(ncha)o(rs,s)o(tri)o(ng,)41 b(>)48 b(status\))0 5122 +y Fh(3)81 b Fi(Read)27 b(a)h(consecutiv)m(e)h(arra)m(y)f(of)g(b)m(ytes) +g(from)f(an)g(ASCI)s(I)f(or)i(binary)d(table)j(in)m(to)f(a)h(n)m +(umeric)f(v)-5 b(ariable)26 b(\(span-)227 5235 y(ning)31 +b(columns)f(and)i(m)m(ultiple)d(ro)m(ws)j(if)f(necessary\).)46 +b(The)32 b(arra)m(y)g(parameter)g(ma)m(y)h(b)s(e)e(declared)g(as)i(an)m +(y)227 5348 y(n)m(umerical)g(datat)m(yp)s(e)i(as)g(long)f(as)h(the)f +(arra)m(y)h(is)e(at)i(least)g('nc)m(hars')g(b)m(ytes)f(long,)i(e.g.,)g +(if)e(nc)m(hars)g(=)g(17,)227 5461 y(then)c(declare)h(the)f(arra)m(y)h +(as)g(INTEGER*4)g(ARRA)-8 b(Y\(5\).)382 5714 y Fe +(FTGTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 b(>)48 +b(array,status\))p eop +%%Page: 92 98 +92 97 bop 0 299 a Fi(92)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 +555 y Fh(4)81 b Fi(W)-8 b(rite)31 b(a)g(consecutiv)m(e)h(arra)m(y)g(of) +f(b)m(ytes)g(to)h(an)e(ASCI)s(I)g(or)h(binary)e(table)i(from)f(a)i(n)m +(umeric)d(v)-5 b(ariable)30 b(\(span-)227 668 y(ning)k(columns)f(and)h +(m)m(ultiple)e(ro)m(ws)j(if)e(necessary\))j(The)e(arra)m(y)h(parameter) +g(ma)m(y)h(b)s(e)e(declared)g(as)h(an)m(y)227 781 y(n)m(umerical)e +(datat)m(yp)s(e)i(as)g(long)f(as)h(the)f(arra)m(y)h(is)e(at)i(least)g +('nc)m(hars')g(b)m(ytes)f(long,)i(e.g.,)g(if)e(nc)m(hars)g(=)g(17,)227 +894 y(then)c(declare)h(the)f(arra)m(y)h(as)g(INTEGER*4)g(ARRA)-8 +b(Y\(5\).)382 1161 y Fe(FTPTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,a)o +(rra)o(y,)42 b(>)47 b(status\))0 1461 y Fb(9.7.3)112 +b(Edit)36 b(Ro)m(ws)h(or)h(Columns)0 1676 y Fh(1)81 b +Fi(Insert)26 b(blank)g(ro)m(ws)i(in)m(to)f(an)g(existing)f(ASCI)s(I)g +(or)h(binary)f(table)h(\(in)g(the)g(CDU\).)h(All)e(the)i(ro)m(ws)f(F)m +(OLLO)m(W-)227 1789 y(ING)32 b(ro)m(w)f(FR)m(O)m(W)i(are)e(shifted)f +(do)m(wn)h(b)m(y)g(NR)m(O)m(WS)h(ro)m(ws.)43 b(If)31 +b(FR)m(O)m(W)i(=)d(0)i(then)f(the)g(blank)f(ro)m(ws)i(are)227 +1902 y(inserted)e(at)i(the)f(b)s(eginning)e(of)i(the)g(table.)43 +b(This)29 b(routine)h(mo)s(di\014es)f(the)j(NAXIS2)f(k)m(eyw)m(ord)h +(to)f(re\015ect)227 2015 y(the)g(new)f(n)m(um)m(b)s(er)f(of)h(ro)m(ws)h +(in)e(the)h(table.)382 2282 y Fe(FTIROW\(unit,frow,nrows,)41 +b(>)48 b(status\))0 2550 y Fh(2)81 b Fi(Delete)26 b(ro)m(ws)g(from)f +(an)g(existing)g(ASCI)s(I)f(or)h(binary)f(table)h(\(in)g(the)h(CDU\).)g +(The)f(NR)m(O)m(WS)h(n)m(um)m(b)s(er)e(of)i(ro)m(ws)227 +2663 y(are)k(deleted,)g(starting)f(with)g(ro)m(w)g(FR)m(O)m(W,)j(and)d +(an)m(y)h(remaining)d(ro)m(ws)j(in)e(the)i(table)f(are)h(shifted)f(up)f +(to)227 2775 y(\014ll)35 b(in)h(the)h(space.)61 b(This)35 +b(routine)h(mo)s(di\014es)f(the)j(NAXIS2)f(k)m(eyw)m(ord)g(to)h +(re\015ect)f(the)h(new)e(n)m(um)m(b)s(er)g(of)227 2888 +y(ro)m(ws)31 b(in)e(the)h(table.)382 3156 y Fe +(FTDROW\(unit,frow,nrows,)41 b(>)48 b(status\))0 3423 +y Fh(3)81 b Fi(Delete)25 b(a)g(list)e(of)i(ro)m(ws)f(from)g(an)h(ASCI)s +(I)e(or)h(binary)f(table)h(\(in)g(the)g(CDU\).)i(In)e(the)g(\014rst)g +(routine,)h('ro)m(wrange')227 3536 y(is)i(a)h(c)m(haracter)h(string)e +(listing)f(the)i(ro)m(ws)f(or)h(ro)m(w)g(ranges)g(to)g(delete)g +(\(e.g.,)j('2-4,)e(5,)g(8-9'\).)42 b(In)27 b(the)h(second)227 +3649 y(routine,)36 b('ro)m(wlist')e(is)g(an)g(in)m(teger)i(arra)m(y)f +(of)g(ro)m(w)g(n)m(um)m(b)s(ers)e(to)j(b)s(e)e(deleted)h(from)f(the)h +(table.)55 b(nro)m(ws)34 b(is)227 3762 y(the)e(n)m(um)m(b)s(er)e(of)h +(ro)m(w)h(n)m(um)m(b)s(ers)e(in)g(the)h(list.)43 b(The)31 +b(\014rst)f(ro)m(w)i(in)e(the)h(table)h(is)e(1)i(not)f(0.)44 +b(The)31 b(list)f(of)i(ro)m(w)227 3875 y(n)m(um)m(b)s(ers)d(m)m(ust)h +(b)s(e)g(sorted)h(in)e(ascending)g(order.)382 4142 y +Fe(FTDRRG\(unit,rowrange,)42 b(>)47 b(status\))382 4255 +y(FTDRWS\(unit,rowlist,nrow)o(s,)41 b(>)48 b(status\))0 +4523 y Fh(4)81 b Fi(Insert)43 b(a)i(blank)e(column)h(\(or)g(columns\))g +(in)m(to)g(an)g(existing)g(ASCI)s(I)f(or)h(binary)f(table)h(\(in)g(the) +g(CDU\).)227 4636 y(COLNUM)c(sp)s(eci\014es)f(the)i(column)e(n)m(um)m +(b)s(er)g(that)i(the)f(\(\014rst\))g(new)g(column)f(should)f(o)s(ccup)m +(y)j(in)e(the)227 4749 y(table.)57 b(NCOLS)34 b(sp)s(eci\014es)g(ho)m +(w)i(man)m(y)g(columns)e(are)i(to)g(b)s(e)f(inserted.)56 +b(An)m(y)35 b(existing)g(columns)f(from)227 4862 y(this)k(p)s(osition)e +(and)i(higher)f(are)i(mo)m(v)m(ed)g(o)m(v)m(er)h(to)f(allo)m(w)f(ro)s +(om)g(for)h(the)f(new)g(column\(s\).)64 b(The)38 b(index)227 +4975 y(n)m(um)m(b)s(er)j(on)h(all)f(the)h(follo)m(wing)e(k)m(eyw)m +(ords)j(will)c(b)s(e)i(incremen)m(ted)h(if)f(necessary)h(to)h +(re\015ect)f(the)g(new)227 5087 y(p)s(osition)30 b(of)h(the)g +(column\(s\))g(in)f(the)h(table:)42 b(TBCOLn,)30 b(TF)m(ORMn,)i +(TTYPEn,)e(TUNITn,)h(TNULLn,)227 5200 y(TSCALn,)22 b(TZER)m(On,)g +(TDISPn,)g(TDIMn,)h(TLMINn,)g(TLMAXn,)f(TDMINn,)i(TDMAXn,)f(TCTYPn,)227 +5313 y(TCRPXn,)30 b(TCR)-10 b(VLn,)29 b(TCDL)-8 b(Tn,)30 +b(TCR)m(OTn,)f(and)g(TCUNIn.)382 5581 y Fe(FTICOL\(unit,colnum,ttype)o +(,tf)o(orm,)41 b(>)48 b(status\))382 5694 y(FTICLS\(unit,colnum,ncols)o +(,tt)o(ype,)o(tfor)o(m,)41 b(>)48 b(status\))p eop +%%Page: 93 99 +93 98 bop 0 299 a Fg(9.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 +b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES) +979 b Fi(93)0 555 y Fh(5)81 b Fi(Mo)s(dify)36 b(the)h(v)m(ector)i +(length)e(of)g(a)h(binary)d(table)i(column)f(\(e.g.,)41 +b(c)m(hange)e(a)e(column)f(from)h(TF)m(ORMn)g(=)227 668 +y('1E')31 b(to)h('20E'\).)g(The)e(v)m(ector)i(length)d(ma)m(y)i(b)s(e)f +(increased)g(or)g(decreased)h(from)f(the)g(curren)m(t)h(v)-5 +b(alue.)382 924 y Fe(FTMVEC\(unit,colnum,newve)o(cle)o(n,)42 +b(>)47 b(status\))0 1180 y Fh(6)81 b Fi(Delete)28 b(a)g(column)f(from)g +(an)g(existing)g(ASCI)s(I)f(or)i(binary)d(table)j(\(in)f(the)g(CDU\).)i +(The)e(index)f(n)m(um)m(b)s(er)g(of)i(all)227 1293 y(the)k(k)m(eyw)m +(ords)h(listed)d(ab)s(o)m(v)m(e)k(\(for)e(FTICOL\))f(will)e(b)s(e)j +(decremen)m(ted)g(if)f(necessary)i(to)g(re\015ect)f(the)g(new)227 +1406 y(p)s(osition)24 b(of)i(the)g(column\(s\))f(in)f(the)i(table.)39 +b(Those)26 b(index)e(k)m(eyw)m(ords)i(that)g(refer)f(to)i(the)f +(deleted)f(column)227 1519 y(will)30 b(also)i(b)s(e)g(deleted.)46 +b(Note)33 b(that)g(the)g(ph)m(ysical)e(size)h(of)g(the)h(FITS)e(\014le) +h(will)d(not)k(b)s(e)e(reduced)h(b)m(y)g(this)227 1632 +y(op)s(eration,)d(and)f(the)h(empt)m(y)g(FITS)f(blo)s(c)m(ks)g(if)g(an) +m(y)h(at)g(the)g(end)f(of)h(the)g(\014le)f(will)e(b)s(e)i(padded)g +(with)f(zeros.)382 1888 y Fe(FTDCOL\(unit,colnum,)42 +b(>)48 b(status\))0 2144 y Fh(7)81 b Fi(Cop)m(y)30 b(a)g(column)f(from) +h(one)g(HDU)h(to)g(another)f(\(or)h(to)g(the)f(same)h(HDU\).)g(If)f +(createcol)i(=)d(TR)m(UE,)i(then)f(a)227 2257 y(new)20 +b(column)f(will)f(b)s(e)i(inserted)f(in)g(the)i(output)f(table,)j(at)e +(p)s(osition)d(`outcolumn',)k(otherwise)e(the)h(existing)227 +2370 y(output)29 b(column)e(will)f(b)s(e)i(o)m(v)m(erwritten)h(\(in)f +(whic)m(h)f(case)j(it)e(m)m(ust)g(ha)m(v)m(e)i(a)f(compatible)f(datat)m +(yp)s(e\).)42 b(Note)227 2483 y(that)31 b(the)g(\014rst)e(column)h(in)f +(a)h(table)h(is)e(at)i(coln)m(um)f(=)g(1.)382 2739 y +Fe(FTCPCL\(inunit,outunit,in)o(col)o(num,)o(outc)o(oln)o(um,c)o(reat)o +(eco)o(l,)42 b(>)47 b(status\);)0 3029 y Fb(9.7.4)112 +b(Read)38 b(and)h(W)-9 b(rite)35 b(Column)i(Data)g(Routines)0 +3248 y Fi(These)22 b(subroutines)e(put)i(or)g(get)i(data)f(v)-5 +b(alues)21 b(in)g(the)i(curren)m(t)f(ASCI)s(I)f(or)h(Binary)f(table)i +(extension.)37 b(Automatic)0 3361 y(data)21 b(t)m(yp)s(e)g(con)m(v)m +(ersion)f(is)f(p)s(erformed)g(for)h(n)m(umerical)f(data)i(t)m(yp)s(es)g +(\(B,I,J,E,D\))h(if)d(the)i(data)g(t)m(yp)s(e)f(of)h(the)f(column)0 +3474 y(\(de\014ned)32 b(b)m(y)i(the)f(TF)m(ORM)h(k)m(eyw)m(ord\))g +(di\013ers)e(from)g(the)i(data)g(t)m(yp)s(e)f(of)h(the)f(calling)f +(subroutine.)47 b(The)33 b(data)0 3587 y(v)-5 b(alues)29 +b(are)i(also)f(scaled)f(b)m(y)h(the)g(TSCALn)f(and)g(TZER)m(On)g +(header)h(v)-5 b(alues)29 b(as)h(they)g(are)h(b)s(eing)d(written)h(to)i +(or)0 3700 y(read)j(from)f(the)h(FITS)f(arra)m(y)-8 b(.)51 +b(The)33 b(fttscl)h(subroutine)d(MUST)j(b)s(e)f(used)g(to)h(de\014ne)f +(the)h(scaling)f(parameters)0 3813 y(when)f(writing)f(data)j(to)g(the)f +(table)g(or)g(to)h(o)m(v)m(erride)f(the)h(default)e(scaling)g(v)-5 +b(alues)33 b(giv)m(en)g(in)f(the)h(header)g(when)0 3926 +y(reading)c(from)h(the)h(table.)0 4086 y(In)h(the)i(case)g(of)f(binary) +f(tables)h(with)f(v)m(ector)i(elemen)m(ts,)h(the)e('felem')g(parameter) +h(de\014nes)e(the)i(starting)f(pixel)0 4199 y(within)j(the)i(elemen)m +(t)h(v)m(ector.)65 b(This)37 b(parameter)h(is)f(ignored)h(with)e(ASCI)s +(I)h(tables.)64 b(Similarly)-8 b(,)37 b(in)g(the)h(case)0 +4312 y(of)45 b(binary)d(tables)i(the)h('nelemen)m(ts')g(parameter)g(sp) +s(eci\014es)e(the)h(total)h(n)m(um)m(b)s(er)e(of)i(v)m(ector)h(v)-5 +b(alues)44 b(read)g(or)0 4425 y(written)35 b(\(con)m(tin)m(uing)g(on)h +(subsequen)m(t)f(ro)m(ws)g(if)g(required\))f(and)i(not)g(the)g(n)m(um)m +(b)s(er)e(of)i(table)g(elemen)m(ts.)57 b(Tw)m(o)0 4538 +y(sets)36 b(of)f(subroutines)f(are)h(pro)m(vided)f(to)j(get)f(the)g +(column)e(data)i(whic)m(h)e(di\013er)g(in)h(the)g(w)m(a)m(y)i +(unde\014ned)c(pixels)0 4650 y(are)f(handled.)41 b(The)31 +b(\014rst)g(set)h(of)f(routines)g(\(FTGCV\))h(simply)d(return)h(an)h +(arra)m(y)h(of)f(data)h(elemen)m(ts)g(in)e(whic)m(h)0 +4763 y(unde\014ned)41 b(pixels)h(are)i(set)g(equal)f(to)i(a)f(v)-5 +b(alue)43 b(sp)s(eci\014ed)f(b)m(y)h(the)h(user)f(in)f(the)i('n)m(ullv) +-5 b(al')41 b(parameter.)81 b(An)0 4876 y(additional)41 +b(feature)j(of)g(these)g(subroutines)d(is)i(that)h(if)e(the)i(user)e +(sets)i(n)m(ullv)-5 b(al)41 b(=)i(0,)48 b(then)43 b(no)g(c)m(hec)m(ks)i +(for)0 4989 y(unde\014ned)33 b(pixels)h(will)f(b)s(e)h(p)s(erformed,)i +(th)m(us)f(increasing)f(the)i(sp)s(eed)e(of)i(the)g(program.)55 +b(The)35 b(second)h(set)g(of)0 5102 y(routines)g(\(FTGCF\))i(returns)d +(the)i(data)h(elemen)m(t)f(arra)m(y)h(and)e(in)g(addition)f(a)i +(logical)g(arra)m(y)g(of)g(\015ags)g(whic)m(h)0 5215 +y(de\014nes)29 b(whether)h(the)h(corresp)s(onding)d(data)j(pixel)e(is)g +(unde\014ned.)0 5375 y(An)m(y)41 b(column,)h(regardless)e(of)h(it's)f +(in)m(trinsic)e(datat)m(yp)s(e,)45 b(ma)m(y)c(b)s(e)f(read)h(as)g(a)g +(string.)70 b(It)41 b(should)e(b)s(e)h(noted)0 5488 y(ho)m(w)m(ev)m(er) +32 b(that)f(reading)e(a)i(n)m(umeric)e(column)g(as)i(a)f(string)g(is)f +(10)i(-)g(100)g(times)f(slo)m(w)m(er)h(than)f(reading)f(the)i(same)0 +5601 y(column)f(as)i(a)g(n)m(um)m(b)s(er)e(due)h(to)h(the)g(large)g(o)m +(v)m(erhead)g(in)f(constructing)g(the)h(formatted)g(strings.)43 +b(The)31 b(displa)m(y)0 5714 y(format)26 b(of)g(the)h(returned)d +(strings)h(will)e(b)s(e)j(determined)e(b)m(y)i(the)g(TDISPn)f(k)m(eyw)m +(ord,)j(if)c(it)i(exists,)h(otherwise)e(b)m(y)p eop +%%Page: 94 100 +94 99 bop 0 299 a Fi(94)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 +555 y Fi(the)e(datat)m(yp)s(e)h(of)g(the)f(column.)39 +b(The)28 b(length)f(of)i(the)f(returned)f(strings)g(can)h(b)s(e)g +(determined)f(with)f(the)j(ftgcdw)0 668 y(routine.)40 +b(The)30 b(follo)m(wing)e(TDISPn)i(displa)m(y)e(formats)j(are)f(curren) +m(tly)g(supp)s(orted:)191 923 y Fe(Iw.m)142 b(Integer)191 +1036 y(Ow.m)g(Octal)46 b(integer)191 1149 y(Zw.m)142 +b(Hexadecimal)45 b(integer)191 1262 y(Fw.d)142 b(Fixed)46 +b(floating)g(point)191 1375 y(Ew.d)142 b(Exponential)45 +b(floating)g(point)191 1488 y(Dw.d)142 b(Exponential)45 +b(floating)g(point)191 1600 y(Gw.d)142 b(General;)46 +b(uses)g(Fw.d)h(if)g(significance)d(not)j(lost,)g(else)f(Ew.d)0 +1855 y Fi(where)37 b(w)h(is)f(the)h(width)e(in)h(c)m(haracters)i(of)f +(the)h(displa)m(y)m(ed)d(v)-5 b(alues,)40 b(m)d(is)g(the)h(minim)m(um)e +(n)m(um)m(b)s(er)g(of)i(digits)0 1968 y(displa)m(y)m(ed,)29 +b(and)h(d)g(is)f(the)i(n)m(um)m(b)s(er)e(of)h(digits)f(to)i(the)g(righ) +m(t)f(of)h(the)f(decimal.)40 b(The)30 b(.m)g(\014eld)f(is)g(optional.)0 +2223 y Fh(1)81 b Fi(Put)30 b(elemen)m(ts)h(in)m(to)g(an)f(ASCI)s(I)f +(or)i(binary)e(table)i(column)e(\(in)h(the)h(CDU\).)g(\(The)g(SPP)f +(FSPCLS)f(routine)227 2336 y(has)38 b(an)f(additional)f(in)m(teger)i +(argumen)m(t)g(after)h(the)f(V)-10 b(ALUES)37 b(c)m(haracter)i(string)e +(whic)m(h)f(sp)s(eci\014es)h(the)227 2449 y(size)30 b(of)h(the)g(1st)g +(dimension)c(of)k(this)e(2-D)j(CHAR)e(arra)m(y\).)382 +2704 y Fe(FTPCL[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)o(ele)o(m,ne)o +(leme)o(nts)o(,val)o(ues,)41 b(>)47 b(status\))0 2959 +y Fh(2)81 b Fi(Put)29 b(elemen)m(ts)h(in)m(to)g(an)g(ASCI)s(I)e(or)i +(binary)e(table)i(column)e(\(in)h(the)h(CDU\))g(substituting)e(the)i +(appropriate)227 3072 y(FITS)i(n)m(ull)e(v)-5 b(alue)31 +b(for)h(an)m(y)h(elemen)m(ts)f(that)h(are)f(equal)g(to)h(NULL)-10 +b(V)g(AL.)32 b(This)e(family)h(of)h(routines)f(m)m(ust)227 +3185 y(NOT)h(b)s(e)g(used)f(to)i(write)f(to)h(v)-5 b(ariable)31 +b(length)g(arra)m(y)i(columns.)45 b(F)-8 b(or)33 b(ASCI)s(I)e(T)-8 +b(ABLE)32 b(extensions,)h(the)227 3298 y(n)m(ull)39 b(v)-5 +b(alue)41 b(de\014ned)f(b)m(y)h(the)g(previous)f(call)g(to)i(FTSNUL)e +(will)f(b)s(e)h(substituted;)45 b(F)-8 b(or)42 b(in)m(teger)g(FITS)227 +3410 y(columns,)c(in)e(a)i(binary)e(table)h(the)g(n)m(ull)f(v)-5 +b(alue)36 b(de\014ned)h(b)m(y)g(the)g(previous)f(call)h(to)h(FTTNUL)f +(will)e(b)s(e)227 3523 y(substituted;)27 b(F)-8 b(or)28 +b(\015oating)g(p)s(oin)m(t)e(FITS)g(columns)g(a)i(sp)s(ecial)e(IEEE)h +(NaN)h(\(Not-a-Num)m(b)s(er\))h(v)-5 b(alue)27 b(will)227 +3636 y(b)s(e)j(substituted.)382 3891 y Fe(FTPCN[BIJED]\(unit,colnum)o +(,fr)o(ow,f)o(elem)o(,ne)o(leme)o(nts,)o(val)o(ues,)o(null)o(val)41 +b(>)48 b(status\))0 4146 y Fh(3)81 b Fi(Put)37 b(bit)g(v)-5 +b(alues)37 b(in)m(to)h(a)g(binary)e(b)m(yte)i(\('B'\))i(or)d(bit)g +(\('X'\))i(table)f(column)f(\(in)f(the)i(CDU\).)h(LRA)-8 +b(Y)38 b(is)f(an)227 4259 y(arra)m(y)d(of)g(logical)e(v)-5 +b(alues)33 b(corresp)s(onding)e(to)j(the)g(sequence)f(of)h(bits)e(to)i +(b)s(e)f(written.)48 b(If)33 b(LRA)-8 b(Y)34 b(is)e(true)227 +4372 y(then)g(the)g(corresp)s(onding)e(bit)h(is)g(set)h(to)h(1,)g +(otherwise)e(the)h(bit)f(is)g(set)i(to)g(0.)45 b(Note)34 +b(that)e(in)f(the)h(case)h(of)227 4485 y('X')g(columns,)f(FITSIO)f +(will)f(write)h(to)i(all)e(8)i(bits)e(of)h(eac)m(h)i(b)m(yte)f(whether) +e(they)i(are)g(formally)d(v)-5 b(alid)31 b(or)227 4598 +y(not.)46 b(Th)m(us)31 b(if)g(the)h(column)f(is)f(de\014ned)h(as)h +('4X',)i(and)d(one)h(calls)f(FTPCLX)h(with)e(fbit=1)h(and)g(n)m(bit=8,) +227 4711 y(then)j(all)f(8)h(bits)f(will)e(b)s(e)i(written)g(in)m(to)h +(the)g(\014rst)g(b)m(yte)g(\(as)h(opp)s(osed)e(to)i(writing)c(the)k +(\014rst)e(4)h(bits)f(in)m(to)227 4824 y(the)e(\014rst)f(ro)m(w)g(and)g +(then)g(the)h(next)f(4)h(bits)e(in)m(to)i(the)f(next)h(ro)m(w\),)g(ev)m +(en)g(though)f(the)h(last)f(4)h(bits)e(of)i(eac)m(h)227 +4937 y(b)m(yte)g(are)g(formally)e(not)i(de\014ned.)382 +5191 y Fe(FTPCLX\(unit,colnum,frow,)o(fbi)o(t,nb)o(it,l)o(ray)o(,)42 +b(>)47 b(status\))0 5446 y Fh(4)81 b Fi(Set)30 b(table)g(elemen)m(ts)h +(in)e(a)i(column)e(as)i(unde\014ned)382 5701 y Fe +(FTPCLU\(unit,colnum,frow,)o(fel)o(em,n)o(elem)o(ent)o(s,)42 +b(>)47 b(status\))p eop +%%Page: 95 101 +95 100 bop 0 299 a Fg(9.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 +b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES) +979 b Fi(95)0 555 y Fh(5)81 b Fi(Get)34 b(elemen)m(ts)f(from)g(an)g +(ASCI)s(I)f(or)h(binary)f(table)h(column)f(\(in)g(the)h(CDU\).)i(These) +e(routines)f(return)g(the)227 668 y(v)-5 b(alues)29 b(of)h(the)g(table) +g(column)f(arra)m(y)h(elemen)m(ts.)41 b(Unde\014ned)28 +b(arra)m(y)j(elemen)m(ts)f(will)d(b)s(e)i(returned)g(with)g(a)227 +781 y(v)-5 b(alue)25 b(=)h(n)m(ullv)-5 b(al,)24 b(unless)g(n)m(ullv)-5 +b(al)23 b(=)i(0)h(\(or)g(=)f(')h(')g(for)f(ftgcvs\))i(in)d(whic)m(h)g +(case)j(no)e(c)m(hec)m(king)i(for)e(unde\014ned)227 894 +y(v)-5 b(alues)27 b(will)e(b)s(e)i(p)s(erformed.)39 b(The)27 +b(ANYF)h(parameter)g(is)f(set)h(to)g(true)g(if)f(an)m(y)g(of)h(the)g +(returned)f(elemen)m(ts)227 1007 y(are)f(unde\014ned.)37 +b(\(Note:)i(the)26 b(ftgcl)f(routine)f(simple)f(gets)j(an)g(arra)m(y)f +(of)g(logical)g(data)h(v)-5 b(alues)24 b(without)h(an)m(y)227 +1120 y(c)m(hec)m(ks)39 b(for)e(unde\014ned)e(v)-5 b(alues;)40 +b(use)d(the)g(ftgc\015)h(routine)e(to)i(c)m(hec)m(k)g(for)f +(unde\014ned)e(logical)i(elemen)m(ts\).)227 1233 y(\(The)29 +b(SPP)f(FSGCVS)g(routine)f(has)i(an)f(additional)f(in)m(teger)i +(argumen)m(t)g(after)g(the)g(V)-10 b(ALUES)28 b(c)m(haracter)227 +1346 y(string)i(whic)m(h)f(sp)s(eci\014es)g(the)h(size)h(of)f(the)h +(1st)g(dimension)c(of)k(this)e(2-D)j(CHAR)e(arra)m(y\).)382 +1595 y Fe(FTGCL\(unit,colnum,frow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42 +b(>)47 b(values,status\))382 1708 y(FTGCV[SBIJEDCM]\(unit,col)o(num)o +(,fro)o(w,fe)o(lem)o(,nel)o(emen)o(ts,)o(null)o(val,)41 +b(>)1098 1821 y(values,anyf,status\))0 2071 y Fh(6)81 +b Fi(Get)44 b(elemen)m(ts)g(and)e(n)m(ull)g(\015ags)h(from)g(an)h(ASCI) +s(I)d(or)j(binary)d(table)j(column)e(\(in)g(the)i(CHDU\).)g(These)227 +2184 y(routines)28 b(return)f(the)i(v)-5 b(alues)28 b(of)h(the)g(table) +g(column)e(arra)m(y)j(elemen)m(ts.)40 b(An)m(y)29 b(unde\014ned)d(arra) +m(y)k(elemen)m(ts)227 2297 y(will)k(ha)m(v)m(e)k(the)f(corresp)s +(onding)e(\015agv)-5 b(als)36 b(elemen)m(t)i(set)f(equal)f(to)i(.TR)m +(UE.)f(The)f(ANYF)i(parameter)f(is)227 2409 y(set)30 +b(to)g(true)g(if)e(an)m(y)i(of)f(the)h(returned)e(elemen)m(ts)i(are)g +(unde\014ned.)38 b(\(The)29 b(SPP)f(FSGCFS)h(routine)g(has)g(an)227 +2522 y(additional)24 b(in)m(teger)j(argumen)m(t)f(after)h(the)f(V)-10 +b(ALUES)26 b(c)m(haracter)i(string)d(whic)m(h)f(sp)s(eci\014es)h(the)i +(size)e(of)i(the)227 2635 y(1st)k(dimension)d(of)j(this)e(2-D)i(CHAR)g +(arra)m(y\).)382 2885 y Fe(FTGCF[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o +(ow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42 b(>)1193 2998 +y(values,flagvals,anyf,stat)o(us\))0 3247 y Fh(7)81 b +Fi(Get)29 b(an)f(arbitrary)f(data)i(subsection)e(from)h(an)g +(N-dimensional)e(arra)m(y)j(in)e(a)h(binary)f(table)h(v)m(ector)i +(column.)227 3360 y(Unde\014ned)k(pixels)f(in)h(the)i(arra)m(y)g(will)c +(b)s(e)j(set)h(equal)e(to)i(the)g(v)-5 b(alue)35 b(of)g('n)m(ullv)-5 +b(al',)35 b(unless)e(n)m(ullv)-5 b(al=0)33 b(in)227 3473 +y(whic)m(h)f(case)j(no)e(testing)h(for)f(unde\014ned)e(pixels)h(will)e +(b)s(e)j(p)s(erformed.)49 b(The)32 b(\014rst)h(and)g(last)g(ro)m(ws)h +(in)e(the)227 3586 y(table)27 b(to)g(b)s(e)f(read)g(are)h(sp)s +(eci\014ed)d(b)m(y)j(fpixels\(naxis+1\))d(and)i(lpixels\(naxis+1\),)f +(and)h(hence)g(are)h(treated)227 3699 y(as)f(the)f(next)h(higher)e +(dimension)f(of)i(the)h(FITS)e(N-dimensional)f(arra)m(y)-8 +b(.)40 b(The)25 b(INCS)f(parameter)i(sp)s(eci\014es)227 +3812 y(the)31 b(sampling)d(in)m(terv)-5 b(al)30 b(in)f(eac)m(h)i +(dimension)d(b)s(et)m(w)m(een)j(the)g(data)g(elemen)m(ts)f(that)h(will) +d(b)s(e)i(returned.)382 4062 y Fe(FTGSV[BIJED]\(unit,colnum)o(,na)o +(xis,)o(naxe)o(s,f)o(pixe)o(ls,l)o(pix)o(els,)o(incs)o(,nu)o(llva)o(l,) +42 b(>)1002 4175 y(array,anyf,status\))0 4424 y Fh(8)81 +b Fi(Get)29 b(an)f(arbitrary)f(data)i(subsection)e(from)h(an)g +(N-dimensional)e(arra)m(y)j(in)e(a)h(binary)f(table)h(v)m(ector)i +(column.)227 4537 y(An)m(y)39 b(Unde\014ned)e(pixels)g(in)h(the)h(arra) +m(y)g(will)d(ha)m(v)m(e)k(the)f(corresp)s(onding)e('\015agv)-5 +b(als')39 b(elemen)m(t)g(set)g(equal)227 4650 y(to)d(.TR)m(UE.)f(The)f +(\014rst)g(and)g(last)h(ro)m(ws)g(in)e(the)i(table)g(to)g(b)s(e)g(read) +f(are)h(sp)s(eci\014ed)e(b)m(y)i(fpixels\(naxis+1\))227 +4763 y(and)k(lpixels\(naxis+1\),)g(and)f(hence)i(are)f(treated)i(as)e +(the)g(next)h(higher)e(dimension)e(of)k(the)f(FITS)g(N-)227 +4876 y(dimensional)d(arra)m(y)-8 b(.)66 b(The)38 b(INCS)g(parameter)h +(sp)s(eci\014es)e(the)h(sampling)f(in)m(terv)-5 b(al)38 +b(in)f(eac)m(h)j(dimension)227 4989 y(b)s(et)m(w)m(een)31 +b(the)g(data)g(elemen)m(ts)g(that)g(will)c(b)s(e)j(returned.)382 +5238 y Fe(FTGSF[BIJED]\(unit,colnum)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o +(ls,l)o(pix)o(els,)o(incs)o(,)42 b(>)1002 5351 y +(array,flagvals,anyf,statu)o(s\))0 5601 y Fh(9)81 b Fi(Get)33 +b(bit)f(v)-5 b(alues)33 b(from)f(a)h(b)m(yte)h(\('B'\))g(or)f(bit)f +(\(`X`\))i(table)f(column)f(\(in)g(the)h(CDU\).)g(LRA)-8 +b(Y)34 b(is)e(an)g(arra)m(y)i(of)227 5714 y(logical)k(v)-5 +b(alues)38 b(corresp)s(onding)f(to)i(the)g(sequence)f(of)h(bits)f(to)h +(b)s(e)f(read.)65 b(If)38 b(LRA)-8 b(Y)39 b(is)e(true)i(then)f(the)p +eop +%%Page: 96 102 +96 101 bop 0 299 a Fi(96)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)227 +555 y Fi(corresp)s(onding)j(bit)g(w)m(as)h(set)h(to)g(1,)h(otherwise)e +(the)g(bit)g(w)m(as)g(set)h(to)g(0.)53 b(Note)35 b(that)g(in)e(the)i +(case)g(of)f('X')227 668 y(columns,)40 b(FITSIO)e(will)e(read)i(all)g +(8)h(bits)f(of)h(eac)m(h)h(b)m(yte)f(whether)f(they)h(are)g(formally)f +(v)-5 b(alid)37 b(or)h(not.)227 781 y(Th)m(us)c(if)f(the)i(column)e(is) +g(de\014ned)g(as)i('4X',)h(and)d(one)i(calls)f(FTGCX)g(with)f(fbit=1)h +(and)f(n)m(bit=8,)i(then)227 894 y(all)28 b(8)i(bits)e(will)e(b)s(e)j +(read)g(from)g(the)g(\014rst)f(b)m(yte)i(\(as)g(opp)s(osed)e(to)i +(reading)e(the)i(\014rst)e(4)i(bits)e(from)g(the)i(\014rst)227 +1007 y(ro)m(w)g(and)e(then)h(the)h(\014rst)e(4)i(bits)e(from)h(the)g +(next)g(ro)m(w\),)i(ev)m(en)f(though)f(the)g(last)g(4)h(bits)e(of)h +(eac)m(h)i(b)m(yte)f(are)227 1120 y(formally)f(not)i(de\014ned.)382 +1385 y Fe(FTGCX\(unit,colnum,frow,f)o(bit)o(,nbi)o(t,)42 +b(>)47 b(lray,status\))0 1650 y Fh(10)f Fi(Read)31 b(an)m(y)g +(consecutiv)m(e)g(set)g(of)g(bits)f(from)g(an)g('X')i(or)e('B')i +(column)d(and)h(in)m(terpret)g(them)h(as)g(an)f(unsigned)227 +1763 y(n-bit)j(in)m(teger.)53 b(NBIT)35 b(m)m(ust)f(b)s(e)f(less)h +(than)g(or)g(equal)g(to)h(16)g(when)f(calling)e(FTGCXI,)j(and)f(less)f +(than)227 1876 y(or)f(equal)f(to)h(32)g(when)e(calling)g(FTGCXJ;)i +(there)f(is)g(no)g(limit)e(on)j(the)f(v)-5 b(alue)31 +b(of)h(NBIT)f(for)g(FTGCXD,)227 1989 y(but)38 b(the)h(returned)e +(double)h(precision)e(v)-5 b(alue)38 b(only)g(has)g(48)i(bits)d(of)i +(precision)e(on)h(most)h(32-bit)g(w)m(ord)227 2102 y(mac)m(hines.)63 +b(The)37 b(NBITS)g(bits)g(are)h(in)m(terpreted)f(as)h(an)g(unsigned)d +(in)m(teger)k(unless)d(NBITS)h(=)g(16)i(\(in)227 2215 +y(FTGCXI\))e(or)g(32)g(\(in)f(FTGCXJ\))g(in)f(whic)m(h)h(case)h(the)g +(string)f(of)g(bits)g(are)h(in)m(terpreted)e(as)i(16-bit)g(or)227 +2328 y(32-bit)j(2's)g(complemen)m(t)g(signed)e(in)m(tegers.)68 +b(If)39 b(NR)m(O)m(WS)i(is)d(greater)j(than)e(1)h(then)f(the)h(same)g +(set)g(of)227 2441 y(bits)33 b(will)e(b)s(e)i(read)h(from)f(sequen)m +(tial)g(ro)m(ws)h(in)e(the)i(table)f(starting)h(with)e(ro)m(w)i(FR)m(O) +m(W.)h(Note)g(that)g(the)227 2554 y(n)m(um)m(b)s(ering)26 +b(con)m(v)m(en)m(tion)j(used)e(here)g(for)h(the)g(FBIT)f(parameter)i +(adopts)e(1)h(for)g(the)g(\014rst)f(elemen)m(t)h(of)g(the)227 +2667 y(v)m(ector)k(of)f(bits;)e(this)h(is)f(the)i(Most)g(Signi\014can)m +(t)e(Bit)h(of)h(the)f(in)m(teger)h(v)-5 b(alue.)382 2932 +y Fe(FTGCX[IJD]\(unit,colnum,f)o(row)o(,nro)o(ws,f)o(bit)o(,nbi)o(t,)42 +b(>)47 b(array,status\))0 3197 y Fh(11)f Fi(Get)37 b(the)e(descriptor)g +(for)g(a)h(v)-5 b(ariable)35 b(length)g(column)f(in)g(a)i(binary)e +(table.)56 b(The)35 b(descriptor)g(consists)g(of)227 +3310 y(2)d(in)m(teger)f(parameters:)42 b(the)31 b(n)m(um)m(b)s(er)f(of) +h(elemen)m(ts)h(in)d(the)i(arra)m(y)h(and)e(the)h(starting)g(o\013set)h +(relativ)m(e)f(to)227 3423 y(the)d(start)f(of)g(the)h(heap.)39 +b(The)27 b(\014rst)f(routine)g(returns)g(a)h(single)f(descriptor)g +(whereas)h(the)g(second)g(routine)227 3536 y(returns)i(the)i +(descriptors)e(for)h(a)h(range)g(of)f(ro)m(ws)h(in)e(the)h(table.)382 +3801 y Fe(FTGDES\(unit,colnum,rownu)o(m,)41 b(>)48 b +(nelements,offset,status\))382 3914 y(FFGDESSunit,colnum,first)o(row)o +(,nro)o(ws)42 b(>)47 b(nelements,offset,)c(status\))0 +4179 y Fh(12)j Fi(Put)29 b(the)g(descriptor)f(for)h(a)h(v)-5 +b(ariable)28 b(length)h(column)f(in)g(a)h(binary)f(table.)40 +b(This)27 b(subroutine)h(can)h(b)s(e)g(used)227 4292 +y(in)23 b(conjunction)h(with)f(FTGDES)h(to)h(enable)f(2)h(or)f(more)g +(arra)m(ys)h(to)g(p)s(oin)m(t)e(to)i(the)g(same)g(storage)g(lo)s +(cation)227 4405 y(to)31 b(sa)m(v)m(e)h(storage)g(space)f(if)e(the)i +(arra)m(ys)g(are)g(iden)m(tical.)382 4671 y Fe +(FTPDES\(unit,colnum,rownu)o(m,n)o(elem)o(ents)o(,of)o(fset)o(,)42 +b(>)47 b(status\))0 5011 y Fd(9.8)135 b(Ro)l(w)46 b(Selection)g(and)f +(Calculator)h(Routines)0 5262 y Fi(These)21 b(routines)e(all)h(parse)h +(and)f(ev)-5 b(aluate)22 b(an)e(input)f(string)h(con)m(taining)h(a)g +(user)f(de\014ned)g(arithmetic)g(expression.)0 5375 y(The)29 +b(\014rst)f(3)i(routines)e(select)i(ro)m(ws)f(in)f(a)i(FITS)e(table,)i +(based)f(on)g(whether)g(the)g(expression)f(ev)-5 b(aluates)30 +b(to)g(true)0 5488 y(\(not)e(equal)e(to)i(zero\))g(or)f(false)g +(\(zero\).)41 b(The)27 b(other)g(routines)f(ev)-5 b(aluate)28 +b(the)f(expression)f(and)g(calculate)i(a)f(v)-5 b(alue)0 +5601 y(for)35 b(eac)m(h)h(ro)m(w)g(of)f(the)h(table.)55 +b(The)35 b(allo)m(w)m(ed)g(expression)f(syn)m(tax)h(is)g(describ)s(ed)e +(in)h(the)h(ro)m(w)h(\014lter)e(section)h(in)0 5714 y(the)i(earlier)f +(`Extended)g(File)g(Name)h(Syn)m(tax')g(c)m(hapter)h(of)f(this)e(do)s +(cumen)m(t.)60 b(The)36 b(expression)g(ma)m(y)h(also)g(b)s(e)p +eop +%%Page: 97 103 +97 102 bop 0 299 a Fg(9.8.)72 b(R)m(O)m(W)31 b(SELECTION)e(AND)i +(CALCULA)-8 b(TOR)29 b(R)m(OUTINES)1382 b Fi(97)0 555 +y(written)27 b(to)j(a)e(text)i(\014le,)e(and)g(the)h(name)f(of)h(the)f +(\014le,)g(prep)s(ended)f(with)g(a)i('@')f(c)m(haracter)i(ma)m(y)f(b)s +(e)f(supplied)d(for)0 668 y(the)34 b('expr')g(parameter)g(\(e.g.)53 +b('@\014lename.txt'\).)e(The)34 b(expression)e(in)h(the)h(\014le)f(can) +h(b)s(e)f(arbitrarily)e(complex)0 781 y(and)k(extend)h(o)m(v)m(er)h(m)m +(ultiple)c(lines)h(of)i(the)f(\014le.)56 b(Lines)35 b(that)h(b)s(egin)e +(with)g(2)i(slash)f(c)m(haracters)i(\('//'\))h(will)33 +b(b)s(e)0 894 y(ignored)c(and)h(ma)m(y)h(b)s(e)f(used)g(to)h(add)e +(commen)m(ts)j(to)f(the)f(\014le.)0 1171 y Fh(1)81 b +Fi(Ev)-5 b(aluate)37 b(a)g(b)s(o)s(olean)f(expression)g(o)m(v)m(er)i +(the)g(indicated)d(ro)m(ws,)k(returning)c(an)i(arra)m(y)h(of)f(\015ags) +g(indicating)227 1284 y(whic)m(h)29 b(ro)m(ws)i(ev)-5 +b(aluated)30 b(to)h(TR)m(UE/F)-10 b(ALSE)430 1560 y Fe +(FTFROW\(unit,expr,firstr)o(ow,)41 b(nrows,)46 b(>)i(n_good_rows,)c +(row_status,)h(status\))0 1837 y Fh(2)81 b Fi(Find)28 +b(the)j(\014rst)f(ro)m(w)g(whic)m(h)f(satis\014es)h(the)h(input)d(b)s +(o)s(olean)h(expression)430 2114 y Fe(FTFFRW\(unit,)44 +b(expr,)i(>)i(rownum,)e(status\))0 2391 y Fh(3)81 b Fi(Ev)-5 +b(aluate)34 b(an)g(expression)g(on)g(all)f(ro)m(ws)i(of)f(a)h(table.)53 +b(If)34 b(the)g(input)f(and)h(output)g(\014les)f(are)i(not)g(the)f +(same,)227 2503 y(cop)m(y)39 b(the)f(TR)m(UE)g(ro)m(ws)h(to)f(the)h +(output)e(\014le.)63 b(If)38 b(the)g(\014les)f(are)i(the)f(same,)j +(delete)d(the)g(F)-10 b(ALSE)38 b(ro)m(ws)227 2616 y(\(preserv)m(e)31 +b(the)g(TR)m(UE)f(ro)m(ws\).)430 2893 y Fe(FTSROW\(inunit,)43 +b(outunit,)j(expr,)g(>)i(status\))0 3170 y Fh(4)81 b +Fi(Calculate)26 b(an)h(expression)e(for)i(the)f(indicated)g(ro)m(ws)g +(of)h(a)g(table,)h(returning)d(the)i(results,)f(cast)i(as)f(datat)m(yp) +s(e)227 3283 y(\(TSHOR)-8 b(T,)32 b(TDOUBLE,)h(etc\),)h(in)d(arra)m(y) +-8 b(.)48 b(If)31 b(n)m(ulv)-5 b(al==NULL,)31 b(UNDEFs)i(will)c(b)s(e)j +(zero)s(ed)g(out.)47 b(F)-8 b(or)227 3396 y(v)m(ector)37 +b(results,)e(the)g(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)h(returned)d(ma)m +(y)j(b)s(e)e(less)g(than)h(nelemen)m(ts)f(if)g(nelemen)m(ts)h(is)227 +3509 y(not)30 b(an)g(ev)m(en)h(m)m(ultiple)c(of)j(the)g(result)f +(dimension.)38 b(Call)28 b(FTTEXP)i(to)g(obtain)g(the)g(dimensions)d +(of)j(the)227 3621 y(results.)430 3898 y Fe(FTCROW\(unit,datatype,ex)o +(pr,)o(firs)o(trow)o(,ne)o(leme)o(nts,)o(nul)o(val,)41 +b(>)620 4011 y(array,anynul,status\))0 4288 y Fh(5)81 +b Fi(Ev)-5 b(aluate)32 b(an)h(expression)e(and)i(write)e(the)i(result)f +(either)g(to)i(a)f(column)e(\(if)h(the)h(expression)e(is)h(a)h +(function)227 4401 y(of)d(other)g(columns)f(in)f(the)i(table\))g(or)g +(to)g(a)h(k)m(eyw)m(ord)f(\(if)f(the)h(expression)e(ev)-5 +b(aluates)31 b(to)f(a)g(constan)m(t)i(and)227 4514 y(is)e(not)g(a)h +(function)e(of)i(other)f(columns)g(in)f(the)h(table\).)41 +b(In)30 b(the)h(former)e(case,)j(the)f(parName)f(parameter)227 +4627 y(is)39 b(the)h(name)f(of)h(the)g(column)e(\(whic)m(h)h(ma)m(y)h +(or)f(ma)m(y)h(not)g(already)f(exist\))h(in)m(to)f(whic)m(h)g(to)h +(write)f(the)227 4739 y(results,)e(and)g(parInfo)e(con)m(tains)i(an)g +(optional)e(TF)m(ORM)i(k)m(eyw)m(ord)g(v)-5 b(alue)37 +b(if)e(a)i(new)f(column)g(is)f(b)s(eing)227 4852 y(created.)42 +b(If)28 b(a)h(TF)m(ORM)h(v)-5 b(alue)28 b(is)g(not)h(sp)s(eci\014ed)f +(then)g(a)i(default)e(format)h(will)e(b)s(e)h(used,)h(dep)s(ending)d +(on)227 4965 y(the)35 b(expression.)53 b(If)34 b(the)h(expression)e(ev) +-5 b(aluates)36 b(to)f(a)g(constan)m(t,)i(then)e(the)g(result)e(will)f +(b)s(e)i(written)g(to)227 5078 y(the)28 b(k)m(eyw)m(ord)g(name)f(giv)m +(en)g(b)m(y)h(the)f(parName)h(parameter,)h(and)d(the)i(parInfo)e +(parameter)i(ma)m(y)g(b)s(e)f(used)227 5191 y(to)k(supply)d(an)i +(optional)g(commen)m(t)h(for)f(the)g(k)m(eyw)m(ord.)42 +b(If)29 b(the)i(k)m(eyw)m(ord)g(do)s(es)f(not)g(already)g(exist,)g +(then)227 5304 y(the)g(name)f(of)h(the)g(k)m(eyw)m(ord)g(m)m(ust)f(b)s +(e)g(preceded)g(with)f(a)i('#')f(c)m(haracter,)j(otherwise)d(the)g +(result)g(will)e(b)s(e)227 5417 y(written)j(to)h(a)g(column)e(with)g +(that)i(name.)430 5694 y Fe(FTCALC\(inunit,)43 b(expr,)k(outunit,)e +(parName,)h(parInfo,)f(>)j(status\))p eop +%%Page: 98 104 +98 103 bop 0 299 a Fi(98)1319 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 +555 y Fh(6)81 b Fi(This)37 b(calculator)j(routine)f(is)f(similar)f(to)j +(the)g(previous)e(routine,)j(except)g(that)f(the)g(expression)e(is)h +(only)227 668 y(ev)-5 b(aluated)41 b(o)m(v)m(er)g(the)f(sp)s(eci\014ed) +f(ro)m(w)h(ranges.)70 b(nranges)39 b(sp)s(eci\014es)g(the)h(n)m(um)m(b) +s(er)f(of)h(ro)m(w)h(ranges,)i(and)227 781 y(\014rstro)m(w)30 +b(and)g(lastro)m(w)g(giv)m(e)h(the)g(starting)f(and)g(ending)f(ro)m(w)h +(n)m(um)m(b)s(er)f(of)i(eac)m(h)g(range.)430 1031 y Fe +(FTCALC_RNG\(inunit,)42 b(expr,)47 b(outunit,)e(parName,)h(parInfo,)573 +1144 y(nranges,)f(firstrow,)h(lastrow,)f(>)j(status\))0 +1394 y Fh(7)81 b Fi(Ev)-5 b(aluate)30 b(the)h(giv)m(en)f(expression)f +(and)h(return)f(information)g(on)h(the)h(result.)430 +1643 y Fe(FTTEXP\(unit,)44 b(expr,)i(>)i(datatype,)d(nelem,)h(naxis,)g +(naxes,)g(status\))0 1976 y Fd(9.9)135 b(Celestial)48 +b(Co)t(ordinate)e(System)f(Subroutines)0 2226 y Fi(The)36 +b(FITS)g(comm)m(unit)m(y)g(has)g(adopted)h(a)g(set)g(of)g(k)m(eyw)m +(ord)g(con)m(v)m(en)m(tions)g(that)g(de\014ne)f(the)h(transformations)0 +2339 y(needed)30 b(to)i(con)m(v)m(ert)g(b)s(et)m(w)m(een)f(pixel)e(lo)s +(cations)h(in)f(an)i(image)g(and)f(the)g(corresp)s(onding)f(celestial)h +(co)s(ordinates)0 2452 y(on)25 b(the)h(sky)-8 b(,)27 +b(or)e(more)g(generally)-8 b(,)27 b(that)f(de\014ne)e(w)m(orld)g(co)s +(ordinates)i(that)f(are)h(to)g(b)s(e)f(asso)s(ciated)h(with)e(an)m(y)i +(pixel)0 2564 y(lo)s(cation)34 b(in)f(an)i(n-dimensional)c(FITS)j(arra) +m(y)-8 b(.)54 b(CFITSIO)33 b(is)g(distributed)f(with)h(a)i(couple)e(of) +i(self-con)m(tained)0 2677 y(W)-8 b(orld)27 b(Co)s(ordinate)f(System)g +(\(W)m(CS\))i(routines,)f(ho)m(w)m(ev)m(er,)i(these)f(routines)e(DO)h +(NOT)f(supp)s(ort)f(all)h(the)h(latest)0 2790 y(W)m(CS)38 +b(con)m(v)m(en)m(tions,)j(so)e(it)f(is)f(STR)m(ONGL)-8 +b(Y)38 b(RECOMMENDED)h(that)f(soft)m(w)m(are)i(dev)m(elop)s(ers)d(use)h +(a)h(more)0 2903 y(robust)30 b(external)g(W)m(CS)g(library)-8 +b(.)39 b(Sev)m(eral)30 b(recommended)g(libraries)e(are:)95 +3153 y Fe(WCSLIB)47 b(-)95 b(supported)45 b(by)i(Mark)g(Calabretta)95 +3266 y(WCSTools)f(-)h(supported)f(by)h(Doug)g(Mink)95 +3379 y(AST)g(library)f(-)i(developed)d(by)i(the)g(U.K.)g(Starlink)e +(project)0 3629 y Fi(More)30 b(information)d(ab)s(out)i(the)g(W)m(CS)g +(k)m(eyw)m(ord)h(con)m(v)m(en)m(tions)g(and)e(links)f(to)j(all)e(of)h +(these)g(W)m(CS)g(libraries)e(can)0 3742 y(b)s(e)j(found)f(on)h(the)h +(FITS)e(Supp)s(ort)g(O\016ce)h(w)m(eb)g(site)h(at)g(h)m +(ttp://\014ts.gsfc.nasa.go)m(v)j(under)29 b(the)h(W)m(CS)h(link.)0 +3902 y(The)i(functions)g(pro)m(vided)g(in)f(these)j(external)e(W)m(CS)h +(libraries)e(will)f(need)j(access)h(to)g(the)f(W)m(CS)g(information)0 +4015 y(con)m(tained)g(in)e(the)i(FITS)f(\014le)g(headers.)51 +b(One)33 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)g(to)f(pass)g(this)e +(information)g(to)j(the)f(extermal)0 4128 y(library)j(is)i(to)i(use)e +(FITSIO)g(to)h(cop)m(y)h(the)f(header)f(k)m(eyw)m(ords)h(in)m(to)g(one) +g(long)f(c)m(haracter)j(string,)f(and)e(then)0 4240 y(pass)29 +b(this)g(string)g(to)h(an)g(in)m(terface)g(routine)f(in)g(the)h +(external)f(library)f(that)i(will)d(extract)32 b(the)e(necessary)g(W)m +(CS)0 4353 y(information)f(\(e.g.,)j(see)f(the)f(astFitsChan)g(and)g +(astPutCards)g(routines)f(in)g(the)i(Starlink)d(AST)i(library\).)0 +4514 y(The)24 b(follo)m(wing)g(FITSIO)f(routines)h(DO)h(NOT)f(supp)s +(ort)f(the)i(more)g(recen)m(t)h(W)m(CS)f(con)m(v)m(en)m(tions)h(that)g +(ha)m(v)m(e)g(b)s(een)0 4626 y(appro)m(v)m(ed)37 b(as)h(part)f(of)g +(the)h(FITS)e(standard.)61 b(Consequen)m(tly)-8 b(,)38 +b(the)g(follo)m(wing)d(routines)i(ARE)g(NO)m(W)h(DEP-)0 +4739 y(RECA)-8 b(TED.)29 b(It)f(is)g(STR)m(ONGL)-8 b(Y)28 +b(RECOMMENDED)h(that)g(soft)m(w)m(are)h(dev)m(elop)s(ers)e(not)h(use)f +(these)h(routines,)0 4852 y(and)h(instead)f(use)h(an)h(external)f(W)m +(CS)g(library)-8 b(,)29 b(as)i(describ)s(ed)d(ab)s(o)m(v)m(e.)0 +5012 y(These)21 b(routines)f(are)h(included)d(mainly)h(for)i(bac)m(kw)m +(ard)g(compatibilit)m(y)f(with)f(existing)h(soft)m(w)m(are.)39 +b(They)21 b(supp)s(ort)0 5125 y(the)30 b(follo)m(wing)f(standard)g(map) +g(pro)5 b(jections:)40 b(-SIN,)30 b(-T)-8 b(AN,)31 b(-AR)m(C,)g(-NCP)-8 +b(,)30 b(-GLS,)g(-MER,)h(and)e(-AIT)h(\(these)0 5238 +y(are)f(the)g(legal)f(v)-5 b(alues)28 b(for)g(the)h(co)s(ordt)m(yp)s(e) +f(parameter\).)41 b(These)28 b(routines)g(are)h(based)f(on)g(similar)e +(functions)h(in)0 5351 y(Classic)i(AIPS.)h(All)f(the)i(angular)e(quan)m +(tities)h(are)h(giv)m(en)f(in)f(units)g(of)h(degrees.)0 +5601 y Fh(1)81 b Fi(Get)22 b(the)g(v)-5 b(alues)20 b(of)i(all)e(the)i +(standard)f(FITS)f(celestial)h(co)s(ordinate)h(system)f(k)m(eyw)m(ords) +h(from)f(the)h(header)f(of)h(a)227 5714 y(FITS)j(image)h(\(i.e.,)h(the) +e(primary)f(arra)m(y)i(or)f(an)h(image)f(extension\).)39 +b(These)26 b(v)-5 b(alues)24 b(ma)m(y)i(then)g(b)s(e)e(passed)p +eop +%%Page: 99 105 +99 104 bop 0 299 a Fg(9.10.)73 b(FILE)30 b(CHECKSUM)f(SUBR)m(OUTINES) +2080 b Fi(99)227 555 y(to)39 b(the)e(subroutines)f(that)i(p)s(erform)e +(the)i(co)s(ordinate)f(transformations.)62 b(If)37 b(an)m(y)h(or)g(all) +e(of)i(the)g(W)m(CS)227 668 y(k)m(eyw)m(ords)32 b(are)f(not)g(presen)m +(t,)h(then)f(default)f(v)-5 b(alues)30 b(will)f(b)s(e)h(returned.)41 +b(If)31 b(the)g(\014rst)g(co)s(ordinate)f(axis)h(is)227 +781 y(the)e(declination-lik)m(e)e(co)s(ordinate,)i(then)f(this)f +(routine)h(will)e(sw)m(ap)i(them)h(so)g(that)g(the)g(longitudinal-lik)m +(e)227 894 y(co)s(ordinate)h(is)g(returned)f(as)i(the)f(\014rst)g +(axis.)227 1045 y(If)35 b(the)h(\014le)e(uses)h(the)g(new)m(er)h('CDj)p +1454 1045 28 4 v 32 w(i')f(W)m(CS)g(transformation)g(matrix)g(k)m(eyw)m +(ords)g(instead)g(of)g(old)g(st)m(yle)227 1158 y('CDEL)-8 +b(Tn')37 b(and)f('CR)m(OT)-8 b(A2')38 b(k)m(eyw)m(ords,)h(then)e(this)e +(routine)h(will)e(calculate)k(and)e(return)g(the)h(v)-5 +b(alues)227 1271 y(of)33 b(the)g(equiv)-5 b(alen)m(t)33 +b(old-st)m(yle)f(k)m(eyw)m(ords.)49 b(Note)34 b(that)g(the)f(con)m(v)m +(ersion)g(from)f(the)i(new-st)m(yle)f(k)m(eyw)m(ords)227 +1383 y(to)f(the)f(old-st)m(yle)f(v)-5 b(alues)30 b(is)g(sometimes)g +(only)g(an)h(appro)m(ximation,)f(so)g(if)g(the)h(appro)m(ximation)f(is) +f(larger)227 1496 y(than)37 b(an)h(in)m(ternally)d(de\014ned)h +(threshold)g(lev)m(el,)j(then)e(CFITSIO)f(will)f(still)g(return)h(the)i +(appro)m(ximate)227 1609 y(W)m(CS)f(k)m(eyw)m(ord)g(v)-5 +b(alues,)38 b(but)e(will)e(also)j(return)e(with)h(status)h(=)f(506,)k +(to)e(w)m(arn)e(the)h(calling)e(program)227 1722 y(that)30 +b(appro)m(ximations)d(ha)m(v)m(e)j(b)s(een)e(made.)40 +b(It)29 b(is)f(then)g(up)g(to)h(the)g(calling)f(program)g(to)h(decide)g +(whether)227 1835 y(the)34 b(appro)m(ximations)e(are)i(su\016cien)m +(tly)e(accurate)k(for)d(the)h(particular)d(application,)i(or)h(whether) +f(more)227 1948 y(precise)d(W)m(CS)g(transformations)g(m)m(ust)g(b)s(e) +g(p)s(erformed)f(using)g(new-st)m(yle)h(W)m(CS)h(k)m(eyw)m(ords)f +(directly)-8 b(.)382 2209 y Fe(FTGICS\(unit,)44 b(>)k +(xrval,yrval,xrpix,yrpix)o(,xin)o(c,yi)o(nc,)o(rot,)o(coor)o(dty)o +(pe,s)o(tatu)o(s\))0 2470 y Fh(2)81 b Fi(Get)34 b(the)f(v)-5 +b(alues)32 b(of)h(all)f(the)h(standard)f(FITS)h(celestial)f(co)s +(ordinate)h(system)g(k)m(eyw)m(ords)g(from)g(the)g(header)227 +2583 y(of)j(a)h(FITS)e(table)g(where)h(the)g(X)g(and)f(Y)h(\(or)g(RA)g +(and)g(DEC)f(co)s(ordinates)h(are)g(stored)g(in)f(2)h(separate)227 +2695 y(columns)31 b(of)h(the)g(table.)45 b(These)31 b(v)-5 +b(alues)31 b(ma)m(y)i(then)e(b)s(e)h(passed)f(to)h(the)g(subroutines)e +(that)i(p)s(erform)f(the)227 2808 y(co)s(ordinate)f(transformations.) +382 3069 y Fe(FTGTCS\(unit,xcol,ycol,)42 b(>)716 3182 +y(xrval,yrval,xrpix,yrpix,)o(xinc)o(,yi)o(nc,r)o(ot,c)o(oor)o(dtyp)o +(e,st)o(atu)o(s\))0 3443 y Fh(3)81 b Fi(Calculate)40 +b(the)i(celestial)e(co)s(ordinate)h(corresp)s(onding)e(to)j(the)f +(input)e(X)i(and)g(Y)g(pixel)e(lo)s(cation)i(in)f(the)227 +3556 y(image.)382 3817 y Fe(FTWLDP\(xpix,ypix,xrval,y)o(rva)o(l,xr)o +(pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 3929 +y(coordtype,)45 b(>)i(xpos,ypos,status\))0 4190 y Fh(4)81 +b Fi(Calculate)40 b(the)i(X)f(and)f(Y)h(pixel)f(lo)s(cation)g(corresp)s +(onding)f(to)j(the)f(input)e(celestial)i(co)s(ordinate)g(in)f(the)227 +4303 y(image.)382 4564 y Fe(FTXYPX\(xpos,ypos,xrval,y)o(rva)o(l,xr)o +(pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 4677 +y(coordtype,)45 b(>)i(xpix,ypix,status\))0 5012 y Fd(9.10)136 +b(File)45 b(Chec)l(ksum)g(Subroutines)0 5262 y Fi(The)33 +b(follo)m(wing)e(routines)h(either)h(compute)g(or)h(v)-5 +b(alidate)32 b(the)i(c)m(hec)m(ksums)f(for)g(the)h(CHDU.)g(The)e(D)m(A) +-8 b(T)g(ASUM)0 5375 y(k)m(eyw)m(ord)33 b(is)e(used)g(to)i(store)f(the) +h(n)m(umerical)d(v)-5 b(alue)32 b(of)g(the)g(32-bit,)h(1's)g(complemen) +m(t)f(c)m(hec)m(ksum)h(for)f(the)g(data)0 5488 y(unit)25 +b(alone.)39 b(If)25 b(there)h(is)g(no)f(data)i(unit)e(then)g(the)h(v)-5 +b(alue)26 b(is)f(set)h(to)h(zero.)40 b(The)26 b(n)m(umerical)e(v)-5 +b(alue)26 b(is)f(stored)h(as)g(an)0 5601 y(ASCI)s(I)20 +b(string)h(of)i(digits,)f(enclosed)g(in)e(quotes,)25 +b(b)s(ecause)d(the)g(v)-5 b(alue)22 b(ma)m(y)g(b)s(e)f(to)s(o)i(large)f +(to)h(represen)m(t)f(as)g(a)h(32-bit)0 5714 y(signed)k(in)m(teger.)40 +b(The)27 b(CHECKSUM)g(k)m(eyw)m(ord)i(is)e(used)g(to)h(store)h(the)f +(ASCI)s(I)e(enco)s(ded)i(COMPLEMENT)f(of)p eop +%%Page: 100 106 +100 105 bop 0 299 a Fi(100)1274 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 +555 y Fi(the)c(c)m(hec)m(ksum)h(for)f(the)h(en)m(tire)f(HDU.)h(Storing) +e(the)i(complemen)m(t,)g(rather)f(than)g(the)h(actual)f(c)m(hec)m +(ksum,)i(forces)0 668 y(the)k(c)m(hec)m(ksum)h(for)f(the)h(whole)e(HDU) +i(to)g(equal)f(zero.)47 b(If)31 b(the)i(\014le)e(has)h(b)s(een)f(mo)s +(di\014ed)f(since)i(the)g(c)m(hec)m(ksums)0 781 y(w)m(ere)39 +b(computed,)i(then)e(the)g(HDU)g(c)m(hec)m(ksum)h(will)c(usually)g(not) +j(equal)g(zero.)66 b(These)39 b(c)m(hec)m(ksum)g(k)m(eyw)m(ord)0 +894 y(con)m(v)m(en)m(tions)33 b(are)g(based)f(on)g(a)g(pap)s(er)f(b)m +(y)h(Rob)g(Seaman)g(published)d(in)i(the)h(pro)s(ceedings)f(of)h(the)h +(AD)m(ASS)f(IV)0 1007 y(conference)f(in)e(Baltimore)h(in)g(No)m(v)m(em) +m(b)s(er)h(1994)h(and)e(a)h(later)f(revision)f(in)g(June)g(1995.)0 +1237 y Fh(1)81 b Fi(Compute)33 b(and)g(write)g(the)h(D)m(A)-8 +b(T)g(ASUM)35 b(and)e(CHECKSUM)g(k)m(eyw)m(ord)h(v)-5 +b(alues)33 b(for)g(the)h(CHDU)g(in)m(to)g(the)227 1350 +y(curren)m(t)25 b(header.)38 b(The)24 b(D)m(A)-8 b(T)g(ASUM)27 +b(v)-5 b(alue)24 b(is)f(the)i(32-bit)g(c)m(hec)m(ksum)g(for)f(the)h +(data)g(unit,)g(expressed)f(as)h(a)227 1463 y(decimal)30 +b(in)m(teger)g(enclosed)g(in)f(single)g(quotes.)41 b(The)30 +b(CHECKSUM)g(k)m(eyw)m(ord)g(v)-5 b(alue)30 b(is)f(a)i(16-c)m(haracter) +227 1576 y(string)i(whic)m(h)f(is)h(the)g(ASCI)s(I-enco)s(ded)f(v)-5 +b(alue)33 b(for)h(the)f(complemen)m(t)h(of)g(the)f(c)m(hec)m(ksum)i +(for)e(the)h(whole)227 1689 y(HDU.)h(If)e(these)g(k)m(eyw)m(ords)h +(already)f(exist,)h(their)e(v)-5 b(alues)33 b(will)e(b)s(e)i(up)s +(dated)f(only)g(if)g(necessary)i(\(i.e.,)h(if)227 1802 +y(the)c(\014le)e(has)h(b)s(een)g(mo)s(di\014ed)e(since)i(the)h +(original)d(k)m(eyw)m(ord)j(v)-5 b(alues)30 b(w)m(ere)h(computed\).)382 +2033 y Fe(FTPCKS\(unit,)44 b(>)k(status\))0 2263 y Fh(2)81 +b Fi(Up)s(date)28 b(the)h(CHECKSUM)e(k)m(eyw)m(ord)i(v)-5 +b(alue)28 b(in)f(the)i(CHDU,)g(assuming)e(that)i(the)f(D)m(A)-8 +b(T)g(ASUM)30 b(k)m(eyw)m(ord)227 2376 y(exists)35 b(and)g(already)g +(has)g(the)h(correct)g(v)-5 b(alue.)55 b(This)34 b(routine)g +(calculates)i(the)g(new)f(c)m(hec)m(ksum)h(for)f(the)227 +2489 y(curren)m(t)40 b(header)g(unit,)i(adds)d(it)h(to)h(the)f(data)h +(unit)e(c)m(hec)m(ksum,)44 b(enco)s(des)c(the)g(v)-5 +b(alue)40 b(in)m(to)g(an)g(ASCI)s(I)227 2602 y(string,)30 +b(and)g(writes)f(the)i(string)e(to)i(the)g(CHECKSUM)e(k)m(eyw)m(ord.) +382 2833 y Fe(FTUCKS\(unit,)44 b(>)k(status\))0 3063 +y Fh(3)81 b Fi(V)-8 b(erify)34 b(the)g(CHDU)h(b)m(y)g(computing)e(the)i +(c)m(hec)m(ksums)g(and)f(comparing)g(them)g(with)f(the)i(k)m(eyw)m +(ords.)53 b(The)227 3176 y(data)34 b(unit)e(is)g(v)m(eri\014ed)g +(correctly)h(if)f(the)i(computed)f(c)m(hec)m(ksum)g(equals)g(the)g(v)-5 +b(alue)33 b(of)g(the)g(D)m(A)-8 b(T)g(ASUM)227 3289 y(k)m(eyw)m(ord.)64 +b(The)37 b(c)m(hec)m(ksum)i(for)f(the)g(en)m(tire)f(HDU)i(\(header)f +(plus)e(data)j(unit\))d(is)h(correct)i(if)e(it)h(equals)227 +3402 y(zero.)55 b(The)34 b(output)g(D)m(A)-8 b(T)g(A)m(OK)37 +b(and)d(HDUOK)h(parameters)g(in)e(this)h(subroutine)e(are)j(in)m +(tegers)g(whic)m(h)227 3515 y(will)24 b(ha)m(v)m(e)j(a)f(v)-5 +b(alue)26 b(=)g(1)g(if)f(the)i(data)f(or)g(HDU)h(is)e(v)m(eri\014ed)h +(correctly)-8 b(,)28 b(a)e(v)-5 b(alue)26 b(=)f(0)i(if)e(the)h(D)m(A)-8 +b(T)g(ASUM)28 b(or)227 3628 y(CHECKSUM)h(k)m(eyw)m(ord)g(is)g(not)g +(presen)m(t,)h(or)f(v)-5 b(alue)29 b(=)g(-1)h(if)e(the)i(computed)f(c)m +(hec)m(ksum)h(is)e(not)i(correct.)382 3858 y Fe(FTVCKS\(unit,)44 +b(>)k(dataok,hduok,status\))0 4089 y Fh(4)81 b Fi(Compute)25 +b(and)h(return)f(the)i(c)m(hec)m(ksum)g(v)-5 b(alues)25 +b(for)h(the)h(CHDU)f(\(as)h(double)e(precision)g(v)-5 +b(ariables\))25 b(without)227 4202 y(creating)45 b(or)f(mo)s(difying)e +(the)j(CHECKSUM)e(and)h(D)m(A)-8 b(T)g(ASUM)46 b(k)m(eyw)m(ords.)83 +b(This)43 b(routine)g(is)h(used)227 4315 y(in)m(ternally)29 +b(b)m(y)h(FTV)m(CKS,)g(but)g(ma)m(y)h(b)s(e)e(useful)g(in)g(other)i +(situations)e(as)h(w)m(ell.)382 4545 y Fe(FTGCKS\(unit,)44 +b(>)k(datasum,hdusum,status\))0 4776 y Fh(5)81 b Fi(Enco)s(de)33 +b(a)h(c)m(hec)m(ksum)h(v)-5 b(alue)33 b(\(stored)h(in)f(a)h(double)f +(precision)f(v)-5 b(ariable\))33 b(in)m(to)g(a)i(16-c)m(haracter)h +(string.)50 b(If)227 4889 y(COMPLEMENT)30 b(=)g(.true.)41 +b(then)30 b(the)g(32-bit)h(sum)e(v)-5 b(alue)30 b(will)e(b)s(e)i +(complemen)m(ted)g(b)s(efore)g(enco)s(ding.)382 5120 +y Fe(FTESUM\(sum,complement,)42 b(>)47 b(checksum\))0 +5350 y Fh(6)81 b Fi(Deco)s(de)39 b(a)f(16)h(c)m(haracter)h(c)m(hec)m +(ksum)e(string)f(in)m(to)h(a)h(double)d(precision)g(v)-5 +b(alue.)64 b(If)37 b(COMPLEMENT)g(=)227 5463 y(.true.)k(then)30 +b(the)h(32-bit)f(sum)g(v)-5 b(alue)30 b(will)d(b)s(e)j(complemen)m(ted) +h(after)f(deco)s(ding.)382 5694 y Fe(FTDSUM\(checksum,compleme)o(nt,)41 +b(>)48 b(sum\))p eop +%%Page: 101 107 +101 106 bop 0 299 a Fg(9.11.)113 b(D)m(A)-8 b(TE)31 b(AND)g(TIME)f +(UTILITY)g(R)m(OUTINES)1767 b Fi(101)0 555 y Fd(9.11)180 +b(Date)46 b(and)f(Time)g(Utilit)l(y)i(Routines)0 805 +y Fi(The)29 b(follo)m(wing)f(routines)h(help)f(to)j(construct)f(or)f +(parse)h(the)g(FITS)f(date/time)h(strings.)40 b(Starting)29 +b(in)f(the)i(y)m(ear)0 918 y(2000,)k(the)d(FITS)g(D)m(A)-8 +b(TE)32 b(k)m(eyw)m(ord)g(v)-5 b(alues)30 b(\(and)i(the)f(v)-5 +b(alues)31 b(of)g(other)h(`D)m(A)-8 b(TE-')33 b(k)m(eyw)m(ords\))f(m)m +(ust)f(ha)m(v)m(e)i(the)0 1031 y(form)j('YYYY-MM-DD')k(\(date)e(only\)) +e(or)h('YYYY-MM-DDThh:mm:ss.ddd...')61 b(\(date)38 b(and)e(time\))g +(where)0 1144 y(the)30 b(n)m(um)m(b)s(er)f(of)i(decimal)e(places)h(in)f +(the)h(seconds)g(v)-5 b(alue)30 b(is)f(optional.)40 b(These)30 +b(times)g(are)g(in)f(UTC.)h(The)g(older)0 1257 y('dd/mm/yy')g(date)h +(format)g(ma)m(y)g(not)g(b)s(e)e(used)h(for)g(dates)h(after)g(01)g(Jan) +m(uary)f(2000.)0 1486 y Fh(1)81 b Fi(Get)31 b(the)g(curren)m(t)f +(system)g(date.)42 b(The)29 b(returned)h(y)m(ear)h(has)f(4)h(digits)e +(\(1999,)j(2000,)h(etc.\))382 1714 y Fe(FTGSDT\()46 b(>)h(day,)g +(month,)f(year,)g(status)g(\))0 1943 y Fh(2)81 b Fi(Get)34 +b(the)g(curren)m(t)g(system)f(date)i(and)e(time)g(string)g +(\('YYYY-MM-DDThh:mm:ss'\).)53 b(The)33 b(time)h(will)d(b)s(e)227 +2056 y(in)25 b(UTC/GMT)h(if)f(a)m(v)-5 b(ailable,)26 +b(as)h(indicated)d(b)m(y)i(a)g(returned)f(timeref)g(v)-5 +b(alue)26 b(=)f(0.)40 b(If)26 b(the)g(returned)e(v)-5 +b(alue)227 2169 y(of)31 b(timeref)f(=)h(1)g(then)f(this)g(indicates)f +(that)j(it)e(w)m(as)h(not)g(p)s(ossible)d(to)j(con)m(v)m(ert)i(the)d +(lo)s(cal)g(time)h(to)g(UTC,)227 2281 y(and)f(th)m(us)g(the)h(lo)s(cal) +e(time)h(w)m(as)h(returned.)382 2510 y Fe(FTGSTM\(>)45 +b(datestr,)h(timeref,)f(status\))0 2739 y Fh(3)81 b Fi(Construct)26 +b(a)i(date)g(string)e(from)h(the)g(input)e(date)j(v)-5 +b(alues.)39 b(If)27 b(the)g(y)m(ear)h(is)f(b)s(et)m(w)m(een)g(1900)i +(and)e(1998,)j(inclu-)227 2852 y(siv)m(e,)37 b(then)d(the)i(returned)d +(date)j(string)e(will)e(ha)m(v)m(e)37 b(the)e(old)f(FITS)g(format)i +(\('dd/mm/yy'\),)h(otherwise)227 2964 y(the)32 b(date)g(string)e(will)e +(ha)m(v)m(e)33 b(the)e(new)g(FITS)g(format)g(\('YYYY-MM-DD'\).)36 +b(Use)c(FTTM2S)f(instead)f(to)227 3077 y(alw)m(a)m(ys)h(return)e(a)i +(date)g(string)f(using)e(the)j(new)f(FITS)g(format.)382 +3306 y Fe(FTDT2S\()46 b(year,)g(month,)g(day,)h(>)g(datestr,)f +(status\))0 3535 y Fh(4)81 b Fi(Construct)34 b(a)i(new-format)f(date)h +(+)f(time)g(string)f(\('YYYY-MM-DDThh:mm:ss.ddd...'\).)57 +b(If)34 b(the)i(y)m(ear,)227 3647 y(mon)m(th,)d(and)e(da)m(y)h(v)-5 +b(alues)31 b(all)g(=)g(0)h(then)g(only)f(the)h(time)f(is)g(enco)s(ded)g +(with)g(format)h('hh:mm:ss.ddd...'.)227 3760 y(The)j(decimals)f +(parameter)i(sp)s(eci\014es)d(ho)m(w)j(man)m(y)f(decimal)f(places)h(of) +g(fractional)g(seconds)g(to)h(include)227 3873 y(in)29 +b(the)i(string.)40 b(If)29 b(`decimals')h(is)g(negativ)m(e,)h(then)g +(only)e(the)i(date)g(will)c(b)s(e)j(return)f(\('YYYY-MM-DD'\).)382 +4102 y Fe(FTTM2S\()46 b(year,)g(month,)g(day,)h(hour,)f(minute,)g +(second,)g(decimals,)764 4215 y(>)h(datestr,)f(status\))0 +4443 y Fh(5)81 b Fi(Return)44 b(the)g(date)i(as)f(read)f(from)h(the)g +(input)d(string,)48 b(where)c(the)h(string)f(ma)m(y)h(b)s(e)f(in)g +(either)g(the)h(old)227 4556 y(\('dd/mm/yy'\))31 b(or)g(new)e +(\('YYYY-MM-DDThh:mm:ss')k(or)d('YYYY-MM-DD'\))k(FITS)c(format.)382 +4785 y Fe(FTS2DT\(datestr,)43 b(>)48 b(year,)e(month,)g(day,)h +(status\))0 5013 y Fh(6)81 b Fi(Return)30 b(the)h(date)h(and)f(time)g +(as)g(read)g(from)g(the)h(input)d(string,)h(where)h(the)h(string)e(ma)m +(y)i(b)s(e)e(in)g(either)h(the)227 5126 y(old)d(or)g(new)g(FITS)g +(format.)40 b(The)28 b(returned)f(hours,)h(min)m(utes,)g(and)g(seconds) +g(v)-5 b(alues)28 b(will)d(b)s(e)j(set)h(to)g(zero)227 +5239 y(if)j(the)i(input)d(string)h(do)s(es)h(not)h(include)d(the)i +(time)g(\('dd/mm/yy')g(or)h('YYYY-MM-DD'\))j(.)c(Similarly)-8 +b(,)227 5352 y(the)36 b(returned)e(y)m(ear,)j(mon)m(th,)g(and)d(date)i +(v)-5 b(alues)35 b(will)d(b)s(e)j(set)h(to)g(zero)g(if)e(the)h(date)h +(is)e(not)i(included)c(in)227 5465 y(the)f(input)d(string)i +(\('hh:mm:ss.ddd...'\).)382 5694 y Fe(FTS2TM\(datestr,)43 +b(>)48 b(year,)e(month,)g(day,)h(hour,)f(minute,)g(second,)g(status\))p +eop +%%Page: 102 108 +102 107 bop 0 299 a Fi(102)1274 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 +555 y Fd(9.12)136 b(General)45 b(Utilit)l(y)i(Subroutines)0 +805 y Fi(The)30 b(follo)m(wing)f(utilit)m(y)f(subroutines)h(ma)m(y)i(b) +s(e)e(useful)g(for)h(certain)g(applications:)0 1060 y +Fh(1)81 b Fi(Return)29 b(the)i(starting)f(b)m(yte)h(address)e(of)i(the) +f(CHDU)h(and)f(the)h(next)f(HDU.)382 1315 y Fe(FTGHAD\(iunit,)44 +b(>)j(curaddr,nextaddr\))0 1569 y Fh(2)81 b Fi(Con)m(v)m(ert)31 +b(a)g(c)m(haracter)h(string)d(to)i(upp)s(ercase)e(\(op)s(erates)j(in)d +(place\).)382 1824 y Fe(FTUPCH\(string\))0 2078 y Fh(3)81 +b Fi(Compare)43 b(the)i(input)d(template)i(string)f(against)h(the)h +(reference)f(string)f(to)i(see)g(if)e(they)h(matc)m(h.)82 +b(The)227 2191 y(template)35 b(string)f(ma)m(y)h(con)m(tain)f(wildcard) +e(c)m(haracters:)51 b('*')35 b(will)d(matc)m(h)j(an)m(y)g(sequence)g +(of)f(c)m(haracters)227 2304 y(\(including)f(zero)j(c)m(haracters\))h +(and)e('reference)h(string.)55 b(If)35 b(CASESN)f(=)h(.true.)56 +b(then)35 b(the)g(matc)m(h)i(will)227 2417 y(b)s(e)29 +b(case)h(sensitiv)m(e.)40 b(The)29 b(returned)f(MA)-8 +b(TCH)30 b(parameter)g(will)d(b)s(e)h(.true.)41 b(if)28 +b(the)i(2)g(strings)e(matc)m(h,)j(and)227 2530 y(EXA)m(CT)i(will)e(b)s +(e)h(.true.)49 b(if)32 b(the)i(matc)m(h)g(is)e(exact)i(\(i.e.,)h(if)d +(no)h(wildcard)e(c)m(haracters)j(w)m(ere)g(used)e(in)g(the)227 +2643 y(matc)m(h\).)42 b(Both)31 b(strings)e(m)m(ust)i(b)s(e)e(68)j(c)m +(haracters)f(or)g(less)f(in)f(length.)382 2898 y Fe +(FTCMPS\(str_template,stri)o(ng,)o(case)o(sen,)41 b(>)47 +b(match,exact\))0 3152 y Fh(4)81 b Fi(T)-8 b(est)31 b(that)g(the)f(k)m +(eyw)m(ord)h(name)f(con)m(tains)h(only)e(legal)i(c)m(haracters:)42 +b(A-Z,0-9,)32 b(h)m(yphen,)d(and)h(underscore.)382 3407 +y Fe(FTTKEY\(keyword,)43 b(>)48 b(status\))0 3662 y Fh(5)81 +b Fi(T)-8 b(est)31 b(that)g(the)f(k)m(eyw)m(ord)h(record)f(con)m(tains) +h(only)e(legal)h(prin)m(table)f(ASCI)s(I)g(c)m(haracters)382 +3916 y Fe(FTTREC\(card,)44 b(>)k(status\))0 4171 y Fh(6)81 +b Fi(T)-8 b(est)25 b(whether)f(the)h(curren)m(t)f(header)h(con)m(tains) +f(an)m(y)h(NULL)g(\(ASCI)s(I)e(0\))j(c)m(haracters.)40 +b(These)24 b(c)m(haracters)j(are)227 4284 y(illegal)33 +b(in)g(the)i(header,)g(but)f(they)g(will)e(go)j(undetected)g(b)m(y)f +(most)h(of)g(the)f(CFITSIO)f(k)m(eyw)m(ord)i(header)227 +4397 y(routines,)28 b(b)s(ecause)g(the)h(n)m(ull)d(is)h(in)m(terpreted) +g(as)i(the)f(normal)f(end-of-string)h(terminator.)40 +b(This)26 b(routine)227 4509 y(returns)i(the)g(p)s(osition)f(of)i(the)g +(\014rst)f(n)m(ull)e(c)m(haracter)k(in)e(the)g(header,)h(or)g(zero)g +(if)f(there)h(are)g(no)f(n)m(ulls.)38 b(F)-8 b(or)227 +4622 y(example)36 b(a)g(returned)f(v)-5 b(alue)36 b(of)g(110)h(w)m +(ould)e(indicate)g(that)i(the)f(\014rst)f(NULL)h(is)f(lo)s(cated)h(in)f +(the)h(30th)227 4735 y(c)m(haracter)28 b(of)f(the)g(second)f(k)m(eyw)m +(ord)h(in)e(the)i(header)f(\(recall)g(that)h(eac)m(h)h(header)e(record) +h(is)e(80)i(c)m(haracters)227 4848 y(long\).)55 b(Note)36 +b(that)g(this)e(is)g(one)h(of)g(the)g(few)g(FITSIO)f(routines)g(in)f +(whic)m(h)h(the)h(returned)f(v)-5 b(alue)35 b(is)f(not)227 +4961 y(necessarily)c(equal)f(to)j(the)e(status)h(v)-5 +b(alue\).)382 5216 y Fe(FTNCHK\(unit,)44 b(>)k(status\))0 +5470 y Fh(7)81 b Fi(P)m(arse)27 b(a)f(header)h(k)m(eyw)m(ord)g(record)f +(and)g(return)f(the)i(name)f(of)h(the)f(k)m(eyw)m(ord)h(and)f(the)h +(length)e(of)i(the)g(name.)227 5583 y(The)34 b(k)m(eyw)m(ord)h(name)f +(normally)f(o)s(ccupies)g(the)i(\014rst)e(8)i(c)m(haracters)g(of)g(the) +f(record,)i(except)f(under)e(the)227 5696 y(HIERAR)m(CH)e(con)m(v)m(en) +m(tion)g(where)f(the)h(name)f(can)h(b)s(e)f(up)f(to)i(70)g(c)m +(haracters)h(in)d(length.)p eop +%%Page: 103 109 +103 108 bop 0 299 a Fg(9.12.)73 b(GENERAL)30 b(UTILITY)g(SUBR)m +(OUTINES)1934 b Fi(103)382 555 y Fe(FTGKNM\(card,)44 +b(>)k(keyname,)d(keylength,)g(status\))0 811 y Fh(8)81 +b Fi(P)m(arse)34 b(a)h(header)f(k)m(eyw)m(ord)h(record.)52 +b(This)32 b(subroutine)g(parses)i(the)g(input)f(header)h(record)g(to)h +(return)e(the)227 924 y(v)-5 b(alue)26 b(\(as)h(a)g(c)m(haracter)g +(string\))f(and)g(commen)m(t)h(strings.)38 b(If)26 b(the)g(k)m(eyw)m +(ord)h(has)f(no)g(v)-5 b(alue)26 b(\(columns)f(9-10)227 +1037 y(not)i(equal)e(to)i('=)f('\),)i(then)e(the)g(v)-5 +b(alue)26 b(string)f(is)g(returned)g(blank)g(and)g(the)h(commen)m(t)i +(string)d(is)g(set)h(equal)227 1150 y(to)31 b(column)f(9)g(-)h(80)g(of) +g(the)f(input)f(string.)382 1406 y Fe(FTPSVC\(card,)44 +b(>)k(value,comment,status\))0 1662 y Fh(9)81 b Fi(Construct)35 +b(a)i(sequence)f(k)m(eyw)m(ord)h(name)f(\(R)m(OOT)g(+)g(nnn\).)57 +b(This)34 b(subroutine)g(app)s(ends)g(the)j(sequence)227 +1775 y(n)m(um)m(b)s(er)29 b(to)i(the)g(ro)s(ot)g(string)e(to)i(create)h +(a)f(k)m(eyw)m(ord)g(name)f(\(e.g.,)i('NAXIS')f(+)f(2)h(=)f('NAXIS2'\)) +382 2032 y Fe(FTKEYN\(keyroot,seq_no,)42 b(>)47 b(keyword,status\))0 +2288 y Fh(10)f Fi(Construct)30 b(a)g(sequence)g(k)m(eyw)m(ord)h(name)f +(\(n)f(+)h(R)m(OOT\).)g(This)e(subroutine)g(concatenates)k(the)f +(sequence)227 2401 y(n)m(um)m(b)s(er)20 b(to)j(the)e(fron)m(t)h(of)g +(the)f(ro)s(ot)h(string)f(to)h(create)h(a)f(k)m(eyw)m(ord)g(name)g +(\(e.g.,)j(1)d(+)f('CTYP')g(=)g('1CTYP'\))382 2657 y +Fe(FTNKEY\(seq_no,keyroot,)42 b(>)47 b(keyword,status\))0 +2913 y Fh(11)f Fi(Determine)34 b(the)g(datat)m(yp)s(e)g(of)g(a)g(k)m +(eyw)m(ord)h(v)-5 b(alue)33 b(string.)49 b(This)32 b(subroutine)g +(parses)h(the)h(k)m(eyw)m(ord)g(v)-5 b(alue)227 3026 +y(string)30 b(\(usually)e(columns)h(11-30)k(of)d(the)h(header)f +(record\))g(to)i(determine)d(its)h(datat)m(yp)s(e.)382 +3282 y Fe(FTDTYP\(value,)44 b(>)j(dtype,status\))0 3538 +y Fh(11)f Fi(Return)c(the)i(class)f(of)g(input)e(header)i(record.)79 +b(The)43 b(record)g(is)f(classi\014ed)f(in)m(to)i(one)h(of)f(the)g +(follo)m(wing)227 3651 y(categories)35 b(\(the)f(class)e(v)-5 +b(alues)33 b(are)g(de\014ned)f(in)g(\014tsio.h\).)48 +b(Note)35 b(that)e(this)f(is)g(one)i(of)f(the)g(few)g(FITSIO)227 +3764 y(routines)d(that)g(do)s(es)h(not)f(return)f(a)i(status)g(v)-5 +b(alue.)334 4020 y Fe(Class)94 b(Value)619 b(Keywords)95 +4133 y(TYP_STRUC_KEY)92 b(10)j(SIMPLE,)46 b(BITPIX,)g(NAXIS,)g(NAXISn,) +g(EXTEND,)g(BLOCKED,)1002 4246 y(GROUPS,)g(PCOUNT,)g(GCOUNT,)g(END)1002 +4359 y(XTENSION,)g(TFIELDS,)f(TTYPEn,)h(TBCOLn,)g(TFORMn,)g(THEAP,)1002 +4472 y(and)h(the)g(first)f(4)i(COMMENT)e(keywords)f(in)i(the)g(primary) +f(array)1002 4585 y(that)h(define)f(the)h(FITS)g(format.)95 +4698 y(TYP_CMPRS_KEY)92 b(20)j(The)47 b(experimental)e(keywords)g(used) +i(in)g(the)g(compressed)1002 4811 y(image)g(format)f(ZIMAGE,)g +(ZCMPTYPE,)f(ZNAMEn,)h(ZVALn,)1002 4924 y(ZTILEn,)g(ZBITPIX,)g +(ZNAXISn,)f(ZSCALE,)h(ZZERO,)g(ZBLANK)95 5036 y(TYP_SCAL_KEY)140 +b(30)95 b(BSCALE,)46 b(BZERO,)g(TSCALn,)g(TZEROn)95 5149 +y(TYP_NULL_KEY)140 b(40)95 b(BLANK,)46 b(TNULLn)95 5262 +y(TYP_DIM_KEY)188 b(50)95 b(TDIMn)95 5375 y(TYP_RANG_KEY)140 +b(60)95 b(TLMINn,)46 b(TLMAXn,)g(TDMINn,)g(TDMAXn,)g(DATAMIN,)f +(DATAMAX)95 5488 y(TYP_UNIT_KEY)140 b(70)95 b(BUNIT,)46 +b(TUNITn)95 5601 y(TYP_DISP_KEY)140 b(80)95 b(TDISPn)95 +5714 y(TYP_HDUID_KEY)d(90)j(EXTNAME,)46 b(EXTVER,)g(EXTLEVEL,)f +(HDUNAME,)g(HDUVER,)h(HDULEVEL)p eop +%%Page: 104 110 +104 109 bop 0 299 a Fi(104)1274 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)95 +555 y Fe(TYP_CKSUM_KEY)45 b(100)94 b(CHECKSUM,)46 b(DATASUM)95 +668 y(TYP_WCS_KEY)141 b(110)94 b(CTYPEn,)46 b(CUNITn,)g(CRVALn,)g +(CRPIXn,)g(CROTAn,)f(CDELTn)1002 781 y(CDj_is,)h(PVj_ms,)g(LONPOLEs,)f +(LATPOLEs)1002 894 y(TCTYPn,)h(TCTYns,)g(TCUNIn,)g(TCUNns,)g(TCRVLn,)f +(TCRVns,)h(TCRPXn,)1002 1007 y(TCRPks,)g(TCDn_k,)g(TCn_ks,)g(TPVn_m,)g +(TPn_ms,)f(TCDLTn,)h(TCROTn)1002 1120 y(jCTYPn,)g(jCTYns,)g(jCUNIn,)g +(jCUNns,)g(jCRVLn,)f(jCRVns,)h(iCRPXn,)1002 1233 y(iCRPns,)g(jiCDn,)94 +b(jiCDns,)46 b(jPVn_m,)g(jPn_ms,)f(jCDLTn,)h(jCROTn)1002 +1346 y(\(i,j,m,n)g(are)h(integers,)e(s)i(is)h(any)f(letter\))95 +1458 y(TYP_REFSYS_KEY)d(120)j(EQUINOXs,)f(EPOCH,)g(MJD-OBSs,)f +(RADECSYS,)g(RADESYSs)95 1571 y(TYP_COMM_KEY)140 b(130)47 +b(COMMENT,)f(HISTORY,)f(\(blank)h(keyword\))95 1684 y(TYP_CONT_KEY)140 +b(140)47 b(CONTINUE)95 1797 y(TYP_USER_KEY)140 b(150)47 +b(all)g(other)g(keywords)430 2023 y(class)f(=)h(FTGKCL)f(\(char)h +(*card\))0 2275 y Fh(12)f Fi(P)m(arse)f(the)g('TF)m(ORM')h(binary)d +(table)i(column)e(format)i(string.)83 b(This)43 b(subroutine)g(parses)h +(the)h(input)227 2388 y(TF)m(ORM)27 b(c)m(haracter)g(string)e(and)h +(returns)f(the)h(in)m(teger)g(datat)m(yp)s(e)h(co)s(de,)h(the)e(rep)s +(eat)g(coun)m(t)h(of)f(the)g(\014eld,)227 2501 y(and,)f(in)d(the)i +(case)g(of)g(c)m(haracter)h(string)d(\014elds,)i(the)f(length)g(of)h +(the)g(unit)e(string.)37 b(The)23 b(follo)m(wing)f(datat)m(yp)s(e)227 +2613 y(co)s(des)h(are)h(returned)e(\(the)h(negativ)m(e)h(of)g(the)f(v) +-5 b(alue)22 b(is)g(returned)g(if)g(the)h(column)f(con)m(tains)h(v)-5 +b(ariable-length)227 2726 y(arra)m(ys\):)764 2978 y Fe(Datatype)761 +b(DATACODE)46 b(value)764 3091 y(bit,)g(X)907 b(1)764 +3204 y(byte,)46 b(B)811 b(11)764 3317 y(logical,)45 b(L)668 +b(14)764 3430 y(ASCII)46 b(character,)f(A)286 b(16)764 +3543 y(short)46 b(integer,)g(I)381 b(21)764 3656 y(integer,)45 +b(J)668 b(41)764 3768 y(real,)46 b(E)811 b(42)764 3881 +y(double)46 b(precision,)f(D)238 b(82)764 3994 y(complex)809 +b(83)764 4107 y(double)46 b(complex)475 b(163)382 4333 +y(FTBNFM\(tform,)44 b(>)j(datacode,repeat,width,stat)o(us\))0 +4585 y Fh(13)f Fi(P)m(arse)38 b(the)f('TF)m(ORM')h(k)m(eyw)m(ord)g(v)-5 +b(alue)36 b(that)i(de\014nes)e(the)h(column)f(format)i(in)d(an)i(ASCI)s +(I)f(table.)61 b(This)227 4698 y(routine)30 b(parses)h(the)g(input)f +(TF)m(ORM)h(c)m(haracter)i(string)d(and)g(returns)g(the)i(datat)m(yp)s +(e)g(co)s(de,)f(the)h(width)227 4811 y(of)40 b(the)h(column,)g(and)f +(\(if)f(it)g(is)h(a)g(\015oating)g(p)s(oin)m(t)f(column\))g(the)h(n)m +(um)m(b)s(er)f(of)h(decimal)f(places)h(to)h(the)227 4924 +y(righ)m(t)27 b(of)h(the)f(decimal)f(p)s(oin)m(t.)39 +b(The)27 b(returned)f(datat)m(yp)s(e)i(co)s(des)f(are)h(the)g(same)f +(as)h(for)f(the)g(binary)f(table,)227 5036 y(listed)39 +b(ab)s(o)m(v)m(e,)44 b(with)39 b(the)h(follo)m(wing)f(additional)f +(rules:)59 b(in)m(teger)41 b(columns)e(that)h(are)h(b)s(et)m(w)m(een)g +(1)g(and)227 5149 y(4)36 b(c)m(haracters)i(wide)c(are)j(de\014ned)d(to) +j(b)s(e)e(short)h(in)m(tegers)g(\(co)s(de)g(=)g(21\).)58 +b(Wider)35 b(in)m(teger)h(columns)f(are)227 5262 y(de\014ned)k(to)i(b)s +(e)e(regular)g(in)m(tegers)i(\(co)s(de)f(=)g(41\).)71 +b(Similarly)-8 b(,)39 b(Fixed)g(decimal)g(p)s(oin)m(t)g(columns)g +(\(with)227 5375 y(TF)m(ORM)30 b(=)g('Fw.d'\))g(are)g(de\014ned)f(to)h +(b)s(e)g(single)e(precision)g(reals)h(\(co)s(de)i(=)e(42\))i(if)e(w)g +(is)g(b)s(et)m(w)m(een)h(1)h(and)227 5488 y(7)i(c)m(haracters)h(wide,)e +(inclusiv)m(e.)44 b(Wider)31 b('F')i(columns)e(will)f(return)h(a)i +(double)e(precision)f(data)j(co)s(de)g(\(=)227 5601 y(82\).)54 +b('Ew.d')34 b(format)g(columns)f(will)f(ha)m(v)m(e)j(dataco)s(de)g(=)f +(42,)j(and)c('Dw.d')i(format)f(columns)f(will)f(ha)m(v)m(e)227 +5714 y(dataco)s(de)g(=)e(82.)p eop +%%Page: 105 111 +105 110 bop 0 299 a Fg(9.12.)73 b(GENERAL)30 b(UTILITY)g(SUBR)m +(OUTINES)1934 b Fi(105)382 555 y Fe(FTASFM\(tform,)44 +b(>)j(datacode,width,decimals,st)o(atus)o(\))0 825 y +Fh(14)f Fi(Calculate)30 b(the)h(starting)f(column)g(p)s(ositions)e(and) +i(total)h(ASCI)s(I)e(table)i(width)d(based)j(on)f(the)h(input)d(arra)m +(y)227 938 y(of)f(ASCI)s(I)e(table)h(TF)m(ORM)h(v)-5 +b(alues.)39 b(The)26 b(SP)-8 b(A)m(CE)27 b(input)d(parameter)j +(de\014nes)f(ho)m(w)h(man)m(y)f(blank)g(spaces)227 1051 +y(to)40 b(lea)m(v)m(e)h(b)s(et)m(w)m(een)f(eac)m(h)g(column)f(\(it)g +(is)f(recommended)h(to)h(ha)m(v)m(e)h(one)e(space)h(b)s(et)m(w)m(een)g +(columns)e(for)227 1164 y(b)s(etter)31 b(h)m(uman)e(readabilit)m(y\).) +382 1434 y Fe(FTGABC\(tfields,tform,spa)o(ce,)41 b(>)48 +b(rowlen,tbcol,status\))0 1704 y Fh(15)e Fi(P)m(arse)36 +b(a)f(template)g(string)f(and)h(return)f(a)h(formatted)h(80-c)m +(haracter)h(string)d(suitable)g(for)h(app)s(ending)d(to)227 +1817 y(\(or)40 b(deleting)f(from\))g(a)h(FITS)f(header)h(\014le.)67 +b(This)38 b(subroutine)f(is)i(useful)f(for)h(parsing)f(lines)g(from)h +(an)227 1930 y(ASCI)s(I)34 b(template)i(\014le)f(and)f(reformatting)i +(them)f(in)m(to)h(legal)f(FITS)f(header)i(records.)55 +b(The)35 b(formatted)227 2043 y(string)30 b(ma)m(y)h(then)f(b)s(e)g +(passed)g(to)i(the)e(FTPREC,)h(FTMCRD,)g(or)f(FTDKEY)h(subroutines)d +(to)k(app)s(end)227 2156 y(or)f(mo)s(dify)d(a)j(FITS)f(header)g +(record.)382 2426 y Fe(FTGTHD\(template,)43 b(>)48 b +(card,hdtype,status\))0 2696 y Fi(The)23 b(input)g(TEMPLA)-8 +b(TE)23 b(c)m(haracter)j(string)d(generally)g(should)f(con)m(tain)i(3)h +(tok)m(ens:)38 b(\(1\))25 b(the)f(KEYNAME,)h(\(2\))0 +2809 y(the)h(V)-10 b(ALUE,)26 b(and)f(\(3\))i(the)f(COMMENT)g(string.) +38 b(The)25 b(TEMPLA)-8 b(TE)26 b(string)f(m)m(ust)g(adhere)h(to)g(the) +g(follo)m(wing)0 2922 y(format:)0 3192 y Fh(-)80 b Fi(The)24 +b(KEYNAME)g(tok)m(en)h(m)m(ust)e(b)s(egin)g(in)f(columns)h(1-8)i(and)e +(b)s(e)h(a)g(maxim)m(um)f(of)h(8)g(c)m(haracters)h(long.)38 +b(If)24 b(the)227 3305 y(\014rst)32 b(8)h(c)m(haracters)h(of)e(the)h +(template)g(line)d(are)j(blank)e(then)h(the)h(remainder)e(of)h(the)h +(line)e(is)g(considered)227 3418 y(to)42 b(b)s(e)e(a)h(FITS)f(commen)m +(t)h(\(with)f(a)h(blank)e(k)m(eyw)m(ord)i(name\).)72 +b(A)41 b(legal)g(FITS)f(k)m(eyw)m(ord)h(name)f(ma)m(y)227 +3531 y(only)34 b(con)m(tain)i(the)f(c)m(haracters)h(A-Z,)f(0-9,)j(and)c +('-')i(\(min)m(us)e(sign\))g(and)g(underscore.)54 b(This)33 +b(subroutine)227 3644 y(will)39 b(automatically)i(con)m(v)m(ert)i(an)m +(y)f(lo)m(w)m(ercase)h(c)m(haracters)f(to)h(upp)s(ercase)d(in)g(the)i +(output)f(string.)72 b(If)227 3757 y(KEYNAME)33 b(=)f('COMMENT')h(or)g +('HISTOR)-8 b(Y')32 b(then)h(the)f(remainder)f(of)i(the)g(line)e(is)h +(considered)f(to)227 3870 y(b)s(e)f(a)h(FITS)e(COMMENT)h(or)h(HISTOR)-8 +b(Y)30 b(record,)g(resp)s(ectiv)m(ely)-8 b(.)0 4140 y +Fh(-)80 b Fi(The)26 b(V)-10 b(ALUE)26 b(tok)m(en)h(m)m(ust)e(b)s(e)h +(separated)g(from)f(the)i(KEYNAME)f(tok)m(en)h(b)m(y)f(one)g(or)g(more) +g(spaces)g(and/or)227 4253 y(an)i('=')g(c)m(haracter.)41 +b(The)27 b(datat)m(yp)s(e)i(of)f(the)g(V)-10 b(ALUE)27 +b(tok)m(en)i(\(n)m(umeric,)f(logical,)g(or)g(c)m(haracter)h(string\))e +(is)227 4366 y(automatically)32 b(determined)e(and)i(the)g(output)f +(CARD)h(string)f(is)g(formatted)h(accordingly)-8 b(.)45 +b(The)31 b(v)-5 b(alue)227 4478 y(tok)m(en)34 b(ma)m(y)f(b)s(e)f +(forced)g(to)i(b)s(e)e(in)m(terpreted)f(as)i(a)g(string)f(\(e.g.)48 +b(if)32 b(it)g(is)f(a)i(string)f(of)g(n)m(umeric)g(digits\))f(b)m(y)227 +4591 y(enclosing)f(it)g(in)f(single)g(quotes.)0 4862 +y Fh(-)80 b Fi(The)37 b(COMMENT)f(tok)m(en)i(is)e(optional,)i(but)f(if) +f(presen)m(t)h(m)m(ust)f(b)s(e)h(separated)g(from)g(the)g(V)-10 +b(ALUE)37 b(tok)m(en)227 4974 y(b)m(y)j(at)h(least)g(one)f(blank)f +(space.)70 b(A)40 b(leading)f('/')i(c)m(haracter)h(ma)m(y)f(b)s(e)e +(used)h(to)g(mark)g(the)h(b)s(eginning)227 5087 y(of)33 +b(the)f(commen)m(t)h(\014eld,)f(otherwise)f(the)i(commen)m(t)g(\014eld) +e(b)s(egins)f(with)h(the)h(\014rst)g(non-blank)e(c)m(haracter)227 +5200 y(follo)m(wing)f(the)i(v)-5 b(alue)30 b(tok)m(en.)0 +5470 y Fh(-)80 b Fi(One)32 b(exception)h(to)g(the)g(ab)s(o)m(v)m(e)h +(rules)d(is)g(that)i(if)f(the)g(\014rst)g(non-blank)f(c)m(haracter)j +(in)d(the)i(template)g(string)227 5583 y(is)h(a)h(min)m(us)e(sign)h +(\('-'\))i(follo)m(w)m(ed)e(b)m(y)h(a)g(single)e(tok)m(en,)k(or)e(a)g +(single)e(tok)m(en)j(follo)m(w)m(ed)e(b)m(y)h(an)f(equal)h(sign,)227 +5696 y(then)29 b(it)f(is)g(in)m(terpreted)f(as)i(the)g(name)g(of)g(a)g +(k)m(eyw)m(ord)g(whic)m(h)e(is)h(to)h(b)s(e)f(deleted)h(from)f(the)h +(FITS)f(header.)p eop +%%Page: 106 112 +106 111 bop 0 299 a Fi(106)1274 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 +555 y Fh(-)80 b Fi(The)40 b(second)g(exception)g(is)f(that)i(if)e(the)h +(template)g(string)f(starts)h(with)f(a)i(min)m(us)d(sign)h(and)g(is)g +(follo)m(w)m(ed)227 668 y(b)m(y)33 b(2)g(tok)m(ens)g(then)g(the)f +(second)h(tok)m(en)h(is)d(in)m(terpreted)h(as)h(the)g(new)f(name)g(for) +h(the)g(k)m(eyw)m(ord)g(sp)s(eci\014ed)227 781 y(b)m(y)h(\014rst)e(tok) +m(en.)52 b(In)33 b(this)f(case)j(the)e(old)g(k)m(eyw)m(ord)h(name)g +(\(\014rst)f(tok)m(en\))i(is)d(returned)h(in)f(c)m(haracters)j(1-8)227 +894 y(of)e(the)g(returned)e(CARD)i(string,)f(and)g(the)h(new)f(k)m(eyw) +m(ord)h(name)g(\(the)g(second)f(tok)m(en\))i(is)e(returned)f(in)227 +1007 y(c)m(haracters)c(41-48)h(of)e(the)f(returned)g(CARD)g(string.)39 +b(These)25 b(old)g(and)g(new)g(names)g(ma)m(y)h(then)f(b)s(e)g(passed) +227 1120 y(to)31 b(the)g(FTMNAM)g(subroutine)e(whic)m(h)g(will)e(c)m +(hange)32 b(the)e(k)m(eyw)m(ord)h(name.)0 1361 y(The)f(HDTYPE)g(output) +g(parameter)h(indicates)e(ho)m(w)i(the)f(returned)g(CARD)g(string)f +(should)g(b)s(e)h(in)m(terpreted:)382 1602 y Fe(hdtype)857 +b(interpretation)382 1715 y(------)523 b(-------------------------)o +(----)o(---)o(----)o(----)o(---)o(----)o(--)525 1828 +y(-2)572 b(Modify)46 b(the)h(name)g(of)g(the)g(keyword)f(given)g(in)h +(CARD\(1:8\))1193 1941 y(to)g(the)g(new)g(name)g(given)f(in)h +(CARD\(41:48\))525 2167 y(-1)572 b(CARD\(1:8\))45 b(contains)h(the)h +(name)g(of)g(a)g(keyword)f(to)h(be)g(deleted)1193 2280 +y(from)g(the)g(FITS)f(header.)573 2506 y(0)572 b(append)46 +b(the)h(CARD)g(string)f(to)h(the)g(FITS)g(header)f(if)h(the)1193 +2619 y(keyword)f(does)h(not)g(already)e(exist,)h(otherwise)g(update) +1193 2732 y(the)h(value/comment)d(if)j(the)g(keyword)f(is)h(already)f +(present)1193 2844 y(in)h(the)g(header.)573 3070 y(1)572 +b(simply)46 b(append)g(this)h(keyword)f(to)h(the)g(FITS)g(header)f +(\(CARD)1193 3183 y(is)h(either)f(a)i(HISTORY)e(or)h(COMMENT)f +(keyword\).)573 3409 y(2)572 b(This)47 b(is)g(a)g(FITS)g(END)g(record;) +f(it)h(should)f(not)h(be)g(written)1193 3522 y(to)g(the)g(FITS)g +(header)f(because)g(FITSIO)g(automatically)1193 3635 +y(appends)g(the)h(END)g(record)f(when)h(the)f(header)h(is)g(closed.)0 +3876 y Fi(EXAMPLES:)30 b(The)g(follo)m(wing)f(lines)f(illustrate)h(v)-5 +b(alid)29 b(input)f(template)j(strings:)286 4118 y Fe(INTVAL)46 +b(7)i(This)f(is)g(an)g(integer)f(keyword)286 4231 y(RVAL)524 +b(34.6)142 b(/)239 b(This)46 b(is)i(a)f(floating)f(point)g(keyword)286 +4343 y(EVAL=-12.45E-03)92 b(This)46 b(is)i(a)f(floating)f(point)g +(keyword)g(in)h(exponential)e(notation)286 4456 y(lval)i(F)g(This)g(is) +g(a)h(boolean)e(keyword)859 4569 y(This)h(is)g(a)g(comment)f(keyword)g +(with)h(a)g(blank)f(keyword)g(name)286 4682 y(SVAL1)h(=)g('Hello)f +(world')142 b(/)95 b(this)47 b(is)g(a)g(string)f(keyword)286 +4795 y(SVAL2)94 b('123.5')g(this)47 b(is)g(also)f(a)i(string)e(keyword) +286 4908 y(sval3)94 b(123+)h(/)g(this)47 b(is)g(also)f(a)i(string)e +(keyword)g(with)g(the)h(value)g('123+)189 b(')286 5021 +y(#)48 b(the)f(following)e(template)h(line)g(deletes)g(the)h(DATE)g +(keyword)286 5134 y(-)h(DATE)286 5247 y(#)g(the)f(following)e(template) +h(line)g(modifies)g(the)h(NAME)f(keyword)g(to)h(OBJECT)286 +5360 y(-)h(NAME)e(OBJECT)0 5601 y Fh(16)g Fi(P)m(arse)35 +b(the)g(input)e(string)h(con)m(taining)g(a)h(list)f(of)h(ro)m(ws)f(or)h +(ro)m(w)g(ranges,)h(and)e(return)g(in)m(teger)h(arra)m(ys)g(con-)227 +5714 y(taining)25 b(the)h(\014rst)f(and)g(last)h(ro)m(w)g(in)e(eac)m(h) +j(range.)40 b(F)-8 b(or)26 b(example,)h(if)d(ro)m(wlist)h(=)g("3-5,)k +(6,)e(8-9")h(then)d(it)h(will)p eop +%%Page: 107 113 +107 112 bop 0 299 a Fg(9.12.)73 b(GENERAL)30 b(UTILITY)g(SUBR)m +(OUTINES)1934 b Fi(107)227 555 y(return)34 b(n)m(umranges)h(=)g(3,)h +(rangemin)e(=)h(3,)i(6,)g(8)e(and)g(rangemax)g(=)g(5,)i(6,)g(9.)55 +b(A)m(t)36 b(most,)h('maxranges')227 668 y(n)m(um)m(b)s(er)31 +b(of)h(ranges)f(will)e(b)s(e)j(returned.)43 b('maxro)m(ws')32 +b(is)f(the)h(maxim)m(um)f(n)m(um)m(b)s(er)f(of)i(ro)m(ws)g(in)e(the)i +(table;)227 781 y(an)m(y)e(ro)m(ws)f(or)g(ranges)g(larger)g(than)g +(this)f(will)e(b)s(e)j(ignored.)39 b(The)29 b(ro)m(ws)g(m)m(ust)g(b)s +(e)f(sp)s(eci\014ed)g(in)f(increasing)227 894 y(order,)33 +b(and)f(the)g(ranges)h(m)m(ust)f(not)g(o)m(v)m(erlap.)47 +b(A)33 b(min)m(us)d(sign)i(ma)m(y)h(b)s(e)e(use)h(to)h(sp)s(ecify)e +(all)g(the)i(ro)m(ws)f(to)227 1007 y(the)h(upp)s(er)d(or)j(lo)m(w)m(er) +g(b)s(ound,)e(so)i("50-")h(means)e(all)g(the)h(ro)m(ws)f(from)g(50)h +(to)h(the)e(end)g(of)h(the)f(table,)i(and)227 1120 y("-")e(means)e(all) +f(the)i(ro)m(ws)f(in)f(the)i(table,)f(from)g(1)h(-)g(maxro)m(ws.)191 +1380 y Fe(FTRWRG\(rowlist,)44 b(maxrows,)h(maxranges,)g(>)525 +1492 y(numranges,)g(rangemin,)g(rangemax,)h(status\))p +eop +%%Page: 108 114 +108 113 bop 0 299 a Fi(108)1274 b Fg(CHAPTER)29 b(9.)112 +b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)p +eop +%%Page: 109 115 +109 114 bop 0 1225 a Ff(Chapter)65 b(10)0 1687 y Fl(Summary)76 +b(of)i(all)f(FITSIO)0 1937 y(User-In)-6 b(terface)77 +b(Subroutines)0 2429 y Fi(Error)29 b(Status)i(Routines)e(page)i(63)382 +2696 y Fe(FTVERS\()46 b(>)h(version\))382 2809 y(FTGERR\(status,)d(>)j +(errtext\))382 2922 y(FTGMSG\()f(>)h(errmsg\))382 3035 +y(FTRPRT)f(\(stream,)f(>)j(status\))382 3147 y(FTPMSG\(errmsg\))382 +3260 y(FTPMRK)382 3373 y(FTCMSG)382 3486 y(FTCMRK)0 3753 +y Fi(FITS)30 b(File)f(Op)s(en)g(and)h(Close)g(Subroutines:)38 +b(page)31 b(69)382 4020 y Fe(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(blocksize,status\))382 4133 y(FTDKOPEN\(unit,filename,r)o(wmo) +o(de,)41 b(>)48 b(blocksize,status\))382 4246 y +(FTNOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))382 +4359 y(FTDOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 +b(status\))382 4472 y(FTTOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))382 4585 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))382 4698 y(FTREOPEN\(unit,)d(>)j(newunit,)f(status\)) +382 4811 y(FTINIT\(unit,filename,blo)o(cks)o(ize,)41 +b(>)48 b(status\))382 4924 y(FTDKINIT\(unit,filename,b)o(loc)o(ksiz)o +(e,)42 b(>)47 b(status\))382 5036 y(FTTPLT\(unit,)d(filename,)i +(tplfilename,)e(>)j(status\))382 5149 y(FTFLUS\(unit,)d(>)k(status\)) +382 5262 y(FTCLOS\(unit,)c(>)k(status\))382 5375 y(FTDELT\(unit,)c(>)k +(status\))382 5488 y(FTGIOU\()e(>)h(iounit,)f(status\))382 +5601 y(FTFIOU\(iounit,)e(>)j(status\))0 5714 y(CFITS2Unit\(fitsfile)c +(*ptr\))141 b(\(C)48 b(routine\))1882 5942 y Fi(109)p +eop +%%Page: 110 116 +110 115 bop 0 299 a Fi(110)281 b Fg(CHAPTER)30 b(10.)112 +b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10 +b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(CUnit2FITS\(int)44 +b(unit\))380 b(\(C)47 b(routine\))382 668 y(FTEXTN\(filename,)c(>)48 +b(nhdu,)e(status\))382 781 y(FTFLNM\(unit,)e(>)k(filename,)d(status\)) +382 894 y(FTFLMD\(unit,)f(>)k(iomode,)e(status\))382 +1007 y(FFURLT\(unit,)e(>)k(urltype,)d(status\))382 1120 +y(FTIURL\(filename,)e(>)48 b(filetype,)d(infile,)h(outfile,)f(extspec,) +h(filter,)716 1233 y(binspec,)f(colspec,)h(status\))382 +1346 y(FTRTNM\(filename,)d(>)48 b(rootname,)d(status\))382 +1458 y(FTEXIST\(filename,)e(>)k(exist,)f(status\))0 1695 +y Fi(HDU-Lev)m(el)32 b(Op)s(erations:)39 b(page)31 b(72)382 +1932 y Fe(FTMAHD\(unit,nhdu,)43 b(>)k(hdutype,status\))382 +2045 y(FTMRHD\(unit,nmove,)c(>)k(hdutype,status\))382 +2158 y(FTGHDN\(unit,)d(>)k(nhdu\))382 2271 y(FTMNHD\(unit,)c(hdutype,)i +(extname,)f(extver,)h(>)i(status\))382 2384 y(FTGHDT\(unit,)c(>)k +(hdutype,)d(status\))382 2497 y(FTTHDU\(unit,)f(>)k(hdunum,)e(status\)) +382 2610 y(FTCRHD\(unit,)e(>)k(status\))382 2723 y +(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382 +2836 y(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o +(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 +2949 y(status\))382 3061 y(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o +(,tfo)o(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at)f(>)48 +b(status\))382 3174 y(FTRSIM\(unit,bitpix,naxis)o(,na)o(xes,)o(stat)o +(us\))382 3287 y(FTDHDU\(unit,)c(>)k(hdutype,status\))382 +3400 y(FTCPFL\(iunit,ounit,previ)o(ous)o(,)42 b(current,)j(following,)g +(>)j(status\))382 3513 y(FTCOPY\(iunit,ounit,morek)o(eys)o(,)42 +b(>)47 b(status\))382 3626 y(FTCPHD\(inunit,)d(outunit,)h(>)j(status\)) +382 3739 y(FTCPDT\(iunit,ounit,)42 b(>)48 b(status\))0 +3976 y Fi(Subroutines)28 b(to)j(sp)s(ecify)e(or)h(mo)s(dify)f(the)h +(structure)g(of)h(the)f(CHDU:)h(page)h(75)382 4213 y +Fe(FTRDEF\(unit,)44 b(>)k(status\))93 b(\(DEPRECATED\))382 +4326 y(FTPDEF\(unit,bitpix,naxis)o(,na)o(xes,)o(pcou)o(nt,)o(gcou)o +(nt,)41 b(>)48 b(status\))93 b(\(DEPRECATED\))382 4439 +y(FTADEF\(unit,rowlen,tfiel)o(ds,)o(tbco)o(l,tf)o(orm)o(,nro)o(ws)42 +b(>)47 b(status\))94 b(\(DEPRECATED\))382 4551 y +(FTBDEF\(unit,tfields,tfor)o(m,v)o(arid)o(at,n)o(row)o(s)42 +b(>)47 b(status\))94 b(\(DEPRECATED\))382 4664 y(FTDDEF\(unit,bytlen,) +42 b(>)48 b(status\))93 b(\(DEPRECATED\))382 4777 y +(FTPTHP\(unit,theap,)43 b(>)k(status\))0 5014 y Fi(Header)31 +b(Space)f(and)g(P)m(osition)g(Subroutines:)38 b(page)31 +b(76)382 5251 y Fe(FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))382 +5364 y(FTGHSP\(iunit,)d(>)j(keysexist,keysadd,status\))382 +5477 y(FTGHPS\(iunit,)d(>)j(keysexist,key_no,status\))0 +5714 y Fi(Read)31 b(or)f(W)-8 b(rite)31 b(Standard)e(Header)i +(Subroutines:)38 b(page)31 b(77)p eop +%%Page: 111 117 +111 116 bop 3764 299 a Fi(111)382 555 y Fe(FTPHPS\(unit,bitpix,naxis)o +(,na)o(xes,)41 b(>)48 b(status\))382 668 y(FTPHPR\(unit,simple,bitpi)o +(x,n)o(axis)o(,nax)o(es,)o(pcou)o(nt,g)o(cou)o(nt,e)o(xten)o(d,)41 +b(>)48 b(status\))382 781 y(FTGHPR\(unit,maxdim,)42 b(>)48 +b(simple,bitpix,naxis,naxe)o(s,p)o(coun)o(t,gc)o(oun)o(t,ex)o(tend)o(,) +716 894 y(status\))382 1007 y(FTPHTB\(unit,rowlen,nrows)o(,tf)o(ield)o +(s,tt)o(ype)o(,tbc)o(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 +b(>)716 1120 y(status\))382 1233 y(FTGHTB\(unit,maxdim,)g(>)48 +b(rowlen,nrows,tfields,tty)o(pe,)o(tbco)o(l,tf)o(orm)o(,tun)o(it,)716 +1346 y(extname,status\))382 1458 y(FTPHBN\(unit,nrows,tfield)o(s,t)o +(type)o(,tfo)o(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at)41 +b(>)48 b(status\))382 1571 y(FTGHBN\(unit,maxdim,)42 +b(>)48 b(nrows,tfields,ttype,tfor)o(m,t)o(unit)o(,ext)o(nam)o(e,va)o +(rida)o(t,)716 1684 y(status\))0 1942 y Fi(W)-8 b(rite)31 +b(Keyw)m(ord)f(Subroutines:)38 b(page)31 b(78)382 2199 +y Fe(FTPREC\(unit,card,)43 b(>)k(status\))382 2312 y +(FTPCOM\(unit,comment,)42 b(>)48 b(status\))382 2425 +y(FTPHIS\(unit,history,)42 b(>)48 b(status\))382 2538 +y(FTPDAT\(unit,)c(>)k(status\))382 2651 y(FTPKY[JLS]\(unit,keyword,)o +(key)o(val,)o(comm)o(ent)o(,)42 b(>)47 b(status\))382 +2764 y(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o +(omme)o(nt,)41 b(>)48 b(status\))382 2877 y(FTPKLS\(unit,keyword,keyv)o +(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 2990 y(FTPLSW\(unit,)d(>)k +(status\))382 3103 y(FTPKYU\(unit,keyword,comm)o(ent)o(,)42 +b(>)47 b(status\))382 3216 y(FTPKN[JLS]\(unit,keyroot,)o(sta)o(rtno)o +(,no_)o(key)o(s,ke)o(yval)o(s,c)o(omme)o(nts,)41 b(>)47 +b(status\))382 3329 y(FTPKN[EDFG]\(unit,keyroot)o(,st)o(artn)o(o,no)o +(_ke)o(ys,k)o(eyva)o(ls,)o(deci)o(mals)o(,co)o(mmen)o(ts,)41 +b(>)907 3441 y(status\))382 3554 y(FTCPKYinunit,)j(outunit,)i(innum,)g +(outnum,)f(keyroot,)h(>)h(status\))382 3667 y +(FTPKYT\(unit,keyword,intv)o(al,)o(dblv)o(al,c)o(omm)o(ent,)41 +b(>)48 b(status\))382 3780 y(FTPKTP\(unit,)c(filename,)i(>)h(status\)) +382 3893 y(FTPUNT\(unit,keyword,unit)o(s,)41 b(>)48 b(status\))0 +4151 y Fi(Insert)30 b(Keyw)m(ord)g(Subroutines:)38 b(page)31 +b(80)382 4408 y Fe(FTIREC\(unit,key_no,card,)41 b(>)47 +b(status\))382 4521 y(FTIKY[JLS]\(unit,keyword,)o(key)o(val,)o(comm)o +(ent)o(,)42 b(>)47 b(status\))382 4634 y(FTIKLS\(unit,keyword,keyv)o +(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 4747 y +(FTIKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o +(nt,)41 b(>)48 b(status\))382 4860 y(FTIKYU\(unit,keyword,comm)o(ent)o +(,)42 b(>)47 b(status\))0 5118 y Fi(Read)31 b(Keyw)m(ord)f +(Subroutines:)38 b(page)31 b(81)382 5375 y Fe(FTGREC\(unit,key_no,)42 +b(>)48 b(card,status\))382 5488 y(FTGKYN\(unit,key_no,)42 +b(>)48 b(keyword,value,comment,st)o(atu)o(s\))382 5601 +y(FTGCRD\(unit,keyword,)42 b(>)48 b(card,status\))382 +5714 y(FTGNXK\(unit,inclist,ninc)o(,ex)o(clis)o(t,ne)o(xc,)41 +b(>)48 b(card,status\))p eop +%%Page: 112 118 +112 117 bop 0 299 a Fi(112)281 b Fg(CHAPTER)30 b(10.)112 +b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10 +b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTGKEY\(unit,keyword,)42 +b(>)48 b(value,comment,status\))382 668 y(FTGKY[EDJLS]\(unit,keywor)o +(d,)41 b(>)48 b(keyval,comment,status\))382 781 y +(FTGKN[EDJLS]\(unit,keyroo)o(t,s)o(tart)o(no,m)o(ax_)o(keys)o(,)42 +b(>)47 b(keyvals,nfound,status\))382 894 y(FTGKYT\(unit,keyword,)42 +b(>)48 b(intval,dblval,comment,s)o(tat)o(us\))382 1007 +y(FTGUNT\(unit,keyword,)42 b(>)48 b(units,status\))0 +1263 y Fi(Mo)s(dify)29 b(Keyw)m(ord)h(Subroutines:)38 +b(page)31 b(82)382 1519 y Fe(FTMREC\(unit,key_no,card,)41 +b(>)47 b(status\))382 1632 y(FTMCRD\(unit,keyword,card)o(,)42 +b(>)47 b(status\))382 1745 y(FTMNAM\(unit,oldkey,keywo)o(rd,)41 +b(>)48 b(status\))382 1858 y(FTMCOM\(unit,keyword,comm)o(ent)o(,)42 +b(>)47 b(status\))382 1971 y(FTMKY[JLS]\(unit,keyword,)o(key)o(val,)o +(comm)o(ent)o(,)42 b(>)47 b(status\))382 2084 y +(FTMKLS\(unit,keyword,keyv)o(al,)o(comm)o(ent,)41 b(>)47 +b(status\))382 2197 y(FTMKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o +(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))382 2310 +y(FTMKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 +2566 y Fi(Up)s(date)30 b(Keyw)m(ord)g(Subroutines:)38 +b(page)32 b(83)382 2822 y Fe(FTUCRD\(unit,keyword,card)o(,)42 +b(>)47 b(status\))382 2935 y(FTUKY[JLS]\(unit,keyword,)o(key)o(val,)o +(comm)o(ent)o(,)42 b(>)47 b(status\))382 3048 y +(FTUKLS\(unit,keyword,keyv)o(al,)o(comm)o(ent,)41 b(>)47 +b(status\))382 3161 y(FTUKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o +(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))382 3274 +y(FTUKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 +3530 y Fi(Delete)32 b(Keyw)m(ord)e(Subroutines:)38 b(page)31 +b(84)382 3786 y Fe(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382 +3899 y(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 4155 +y Fi(De\014ne)31 b(Data)h(Scaling)d(P)m(arameters)i(and)f(Unde\014ned)f +(Pixel)g(Flags:)41 b(page)31 b(84)382 4411 y Fe +(FTPSCL\(unit,bscale,bzero)o(,)42 b(>)47 b(status\))382 +4524 y(FTTSCL\(unit,colnum,tscal)o(,tz)o(ero,)41 b(>)48 +b(status\))382 4637 y(FTPNUL\(unit,blank,)43 b(>)k(status\))382 +4750 y(FTSNUL\(unit,colnum,snull)41 b(>)47 b(status\))382 +4863 y(FTTNUL\(unit,colnum,tnull)41 b(>)47 b(status\))0 +5119 y Fi(FITS)30 b(Primary)e(Arra)m(y)j(or)f(IMA)m(GE)i(Extension)d +(I/O)i(Subroutines:)38 b(page)31 b(85)382 5375 y Fe(FTGIDT\(unit,)44 +b(>)k(bitpix,status\))382 5488 y(FTGIET\(unit,)c(>)k(bitpix,status\)) +382 5601 y(FTGIDM\(unit,)c(>)k(naxis,status\))382 5714 +y(FTGISZ\(unit,)c(maxdim,)i(>)i(naxes,status\))p eop +%%Page: 113 119 +113 118 bop 3764 299 a Fi(113)382 555 y Fe(FTGIPR\(unit,)44 +b(maxdim,)i(>)i(bitpix,naxis,naxes,stat)o(us\))382 668 +y(FTPPR[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o(ts,v)o(alue)o +(s,)41 b(>)48 b(status\))382 781 y(FTPPN[BIJED]\(unit,group,)o(fpi)o +(xel,)o(nele)o(men)o(ts,v)o(alue)o(s,n)o(ullv)o(al)42 +b(>)47 b(status\))382 894 y(FTPPRU\(unit,group,fpixel)o(,ne)o(leme)o +(nts,)41 b(>)47 b(status\))382 1007 y(FTGPV[BIJED]\(unit,group,)o(fpi)o +(xel,)o(nele)o(men)o(ts,n)o(ullv)o(al,)41 b(>)48 b +(values,anyf,status\))382 1120 y(FTGPF[BIJED]\(unit,group,)o(fpi)o +(xel,)o(nele)o(men)o(ts,)41 b(>)48 b(values,flagvals,anyf,sta)o(tus)o +(\))382 1233 y(FTPGP[BIJED]\(unit,group,)o(fpa)o(rm,n)o(parm)o(,va)o +(lues)o(,)42 b(>)47 b(status\))382 1346 y(FTGGP[BIJED]\(unit,group,)o +(fpa)o(rm,n)o(parm)o(,)42 b(>)47 b(values,status\))382 +1458 y(FTP2D[BIJED]\(unit,group,)o(dim)o(1,na)o(xis1)o(,na)o(xis2)o +(,ima)o(ge,)41 b(>)48 b(status\))382 1571 y(FTP3D[BIJED]\(unit,group,)o +(dim)o(1,di)o(m2,n)o(axi)o(s1,n)o(axis)o(2,n)o(axis)o(3,cu)o(be,)41 +b(>)48 b(status\))382 1684 y(FTG2D[BIJED]\(unit,group,)o(nul)o(lval)o +(,dim)o(1,n)o(axis)o(1,na)o(xis)o(2,)42 b(>)47 b(image,anyf,status\)) +382 1797 y(FTG3D[BIJED]\(unit,group,)o(nul)o(lval)o(,dim)o(1,d)o(im2,)o +(naxi)o(s1,)o(naxi)o(s2,n)o(axi)o(s3,)41 b(>)1002 1910 +y(cube,anyf,status\))382 2023 y(FTPSS[BIJED]\(unit,group,)o(nax)o(is,n) +o(axes)o(,fp)o(ixel)o(s,lp)o(ixe)o(ls,a)o(rray)o(,)h(>)47 +b(status\))382 2136 y(FTGSV[BIJED]\(unit,group,)o(nax)o(is,n)o(axes)o +(,fp)o(ixel)o(s,lp)o(ixe)o(ls,i)o(ncs,)o(nul)o(lval)o(,)42 +b(>)1002 2249 y(array,anyf,status\))382 2362 y +(FTGSF[BIJED]\(unit,group,)o(nax)o(is,n)o(axes)o(,fp)o(ixel)o(s,lp)o +(ixe)o(ls,i)o(ncs,)f(>)1002 2475 y(array,flagvals,anyf,statu)o(s\))0 +2739 y Fi(T)-8 b(able)30 b(Column)e(Information)i(Subroutines:)38 +b(page)31 b(88)382 3003 y Fe(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\)) +382 3115 y(FTGNCL\(unit,)e(>)k(ncols,)e(status\))382 +3228 y(FTGCNO\(unit,casesen,colt)o(emp)o(late)o(,)c(>)47 +b(colnum,status\))382 3341 y(FTGCNN\(unit,casesen,colt)o(emp)o(late)o +(,)42 b(>)47 b(colnam,colnum,status\))382 3454 y(FTGTCL\(unit,colnum,) +42 b(>)48 b(datacode,repeat,width,st)o(atu)o(s\))382 +3567 y(FTEQTY\(unit,colnum,)42 b(>)48 b(datacode,repeat,width,st)o(atu) +o(s\))382 3680 y(FTGCDW\(unit,colnum,)42 b(>)48 b(dispwidth,status\)) +382 3793 y(FTGACL\(unit,colnum,)42 b(>)716 3906 y +(ttype,tbcol,tunit,tform,)o(tsca)o(l,t)o(zero)o(,snu)o(ll,)o(tdis)o +(p,st)o(atu)o(s\))382 4019 y(FTGBCL\(unit,colnum,)g(>)716 +4132 y(ttype,tunit,datatype,rep)o(eat,)o(tsc)o(al,t)o(zero)o(,tn)o +(ull,)o(tdis)o(p,s)o(tatu)o(s\))382 4245 y(FTPTDM\(unit,colnum,naxis)o +(,na)o(xes,)f(>)48 b(status\))382 4357 y(FTGTDM\(unit,colnum,maxdi)o +(m,)41 b(>)48 b(naxis,naxes,status\))382 4470 y +(FTDTDM\(unit,tdimstr,coln)o(um,)o(maxd)o(im,)41 b(>)48 +b(naxis,naxes,)c(status\))382 4583 y(FFGRSZ\(unit,)g(>)k +(nrows,status\))0 4847 y Fi(Lo)m(w-Lev)m(el)31 b(T)-8 +b(able)30 b(Access)i(Subroutines:)38 b(page)31 b(91)382 +5111 y Fe(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 +b(>)48 b(string,status\))382 5224 y(FTPTBS\(unit,frow,startch)o(ar,)o +(ncha)o(rs,s)o(tri)o(ng,)41 b(>)48 b(status\))382 5337 +y(FTGTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 b(>)48 +b(array,status\))382 5450 y(FTPTBB\(unit,frow,startch)o(ar,)o(ncha)o +(rs,a)o(rra)o(y,)42 b(>)47 b(status\))0 5714 y Fi(Edit)29 +b(Ro)m(ws)i(or)f(Columns)f(page)i(92)p eop +%%Page: 114 120 +114 119 bop 0 299 a Fi(114)281 b Fg(CHAPTER)30 b(10.)112 +b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10 +b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTIROW\(unit,frow,nrows,)41 +b(>)48 b(status\))382 668 y(FTDROW\(unit,frow,nrows,)41 +b(>)48 b(status\))382 781 y(FTDRRG\(unit,rowrange,)42 +b(>)47 b(status\))382 894 y(FTDRWS\(unit,rowlist,nrow)o(s,)41 +b(>)48 b(status\))382 1007 y(FTICOL\(unit,colnum,ttype)o(,tf)o(orm,)41 +b(>)48 b(status\))382 1120 y(FTICLS\(unit,colnum,ncols)o(,tt)o(ype,)o +(tfor)o(m,)41 b(>)48 b(status\))382 1233 y(FTMVEC\(unit,colnum,newve)o +(cle)o(n,)42 b(>)47 b(status\))382 1346 y(FTDCOL\(unit,colnum,)42 +b(>)48 b(status\))382 1458 y(FTCPCL\(inunit,outunit,in)o(col)o(num,)o +(outc)o(oln)o(um,c)o(reat)o(eco)o(l,)42 b(>)47 b(status\);)0 +1716 y Fi(Read)31 b(and)e(W)-8 b(rite)31 b(Column)e(Data)j(Routines)d +(page)i(93)382 1974 y Fe(FTPCL[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f) +o(ele)o(m,ne)o(leme)o(nts)o(,val)o(ues,)41 b(>)47 b(status\))382 +2087 y(FTPCN[BIJED]\(unit,colnum)o(,fr)o(ow,f)o(elem)o(,ne)o(leme)o +(nts,)o(val)o(ues,)o(null)o(val)41 b(>)48 b(status\))382 +2199 y(FTPCLX\(unit,colnum,frow,)o(fbi)o(t,nb)o(it,l)o(ray)o(,)42 +b(>)47 b(status\))382 2312 y(FTPCLU\(unit,colnum,frow,)o(fel)o(em,n)o +(elem)o(ent)o(s,)42 b(>)47 b(status\))382 2425 y +(FTGCL\(unit,colnum,frow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42 +b(>)47 b(values,status\))382 2538 y(FTGCV[SBIJEDCM]\(unit,col)o(num)o +(,fro)o(w,fe)o(lem)o(,nel)o(emen)o(ts,)o(null)o(val,)41 +b(>)1098 2651 y(values,anyf,status\))382 2764 y +(FTGCF[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)o(ele)o(m,ne)o(leme)o +(nts)o(,)h(>)1193 2877 y(values,flagvals,anyf,stat)o(us\))382 +2990 y(FTGSV[BIJED]\(unit,colnum)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o +(ls,l)o(pix)o(els,)o(incs)o(,nu)o(llva)o(l,)g(>)1002 +3103 y(array,anyf,status\))382 3216 y(FTGSF[BIJED]\(unit,colnum)o(,na)o +(xis,)o(naxe)o(s,f)o(pixe)o(ls,l)o(pix)o(els,)o(incs)o(,)g(>)1002 +3329 y(array,flagvals,anyf,statu)o(s\))382 3441 y +(FTGCX\(unit,colnum,frow,f)o(bit)o(,nbi)o(t,)g(>)47 b(lray,status\))382 +3554 y(FTGCX[IJD]\(unit,colnum,f)o(row)o(,nro)o(ws,f)o(bit)o(,nbi)o(t,) +42 b(>)47 b(array,status\))382 3667 y(FTGDES\(unit,colnum,rownu)o(m,)41 +b(>)48 b(nelements,offset,status\))382 3780 y +(FTPDES\(unit,colnum,rownu)o(m,n)o(elem)o(ents)o(,of)o(fset)o(,)42 +b(>)47 b(status\))0 4038 y Fi(Ro)m(w)31 b(Selection)f(and)f(Calculator) +h(Routines:)40 b(page)31 b(96)382 4295 y Fe(FTFROW\(unit,expr,firstro)o +(w,)41 b(nrows,)47 b(>)g(n_good_rows,)d(row_status,)h(status\))382 +4408 y(FTFFRW\(unit,)f(expr,)j(>)g(rownum,)f(status\))382 +4521 y(FTSROW\(inunit,)e(outunit,)h(expr,)i(>)g(status)f(\))382 +4634 y(FTCROW\(unit,datatype,exp)o(r,f)o(irst)o(row,)o(nel)o(emen)o +(ts,n)o(ulv)o(al,)41 b(>)620 4747 y(array,anynul,status\))382 +4860 y(FTCALC\(inunit,)j(expr,)i(outunit,)g(parName,)f(parInfo,)h(>)h +(status\))382 4973 y(FTCALC_RNG\(inunit,)c(expr,)j(outunit,)g(parName,) +f(parInfo,)573 5086 y(nranges,)g(firstrow,)h(lastrow,)f(>)j(status\)) +382 5199 y(FTTEXP\(unit,)c(expr,)j(>)g(datatype,)e(nelem,)h(naxis,)h +(naxes,)f(status\))0 5456 y Fi(Celestial)29 b(Co)s(ordinate)h(System)g +(Subroutines:)38 b(page)31 b(98)382 5714 y Fe(FTGICS\(unit,)44 +b(>)k(xrval,yrval,xrpix,yrpix)o(,xin)o(c,yi)o(nc,)o(rot,)o(coor)o(dty)o +(pe,s)o(tatu)o(s\))p eop +%%Page: 115 121 +115 120 bop 3764 299 a Fi(115)382 555 y Fe(FTGTCS\(unit,xcol,ycol,)42 +b(>)716 668 y(xrval,yrval,xrpix,yrpix,)o(xinc)o(,yi)o(nc,r)o(ot,c)o +(oor)o(dtyp)o(e,st)o(atu)o(s\))382 781 y(FTWLDP\(xpix,ypix,xrval,y)o +(rva)o(l,xr)o(pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 +894 y(coordtype,)j(>)i(xpos,ypos,status\))382 1007 y +(FTXYPX\(xpos,ypos,xrval,y)o(rva)o(l,xr)o(pix,)o(yrp)o(ix,x)o(inc,)o +(yin)o(c,ro)o(t,)1241 1120 y(coordtype,)e(>)i(xpix,ypix,status\))0 +1340 y Fi(File)30 b(Chec)m(ksum)f(Subroutines:)39 b(page)31 +b(99)382 1560 y Fe(FTPCKS\(unit,)44 b(>)k(status\))382 +1673 y(FTUCKS\(unit,)c(>)k(status\))382 1785 y(FTVCKS\(unit,)c(>)k +(dataok,hduok,status\))382 1898 y(FTGCKS\(unit,)c(>)k +(datasum,hdusum,status\))382 2011 y(FTESUM\(sum,complement,)42 +b(>)47 b(checksum\))382 2124 y(FTDSUM\(checksum,compleme)o(nt,)41 +b(>)48 b(sum\))0 2457 y Fi(Time)29 b(and)h(Date)i(Utilit)m(y)e +(Subroutines:)38 b(page)31 b(101)382 2677 y Fe(FTGSDT\()46 +b(>)h(day,)g(month,)f(year,)g(status)g(\))382 2790 y(FTGSTM\(>)f +(datestr,)h(timeref,)f(status\))382 2903 y(FTDT2S\()h(year,)g(month,)g +(day,)h(>)g(datestr,)f(status\))382 3016 y(FTTM2S\()g(year,)g(month,)g +(day,)h(hour,)f(minute,)g(second,)g(decimals,)764 3129 +y(>)h(datestr,)f(status\))382 3242 y(FTS2DT\(datestr,)d(>)48 +b(year,)e(month,)g(day,)h(status\))382 3354 y(FTS2TM\(datestr,)c(>)48 +b(year,)e(month,)g(day,)h(hour,)f(minute,)g(second,)g(status\))0 +3574 y Fi(General)30 b(Utilit)m(y)g(Subroutines:)38 b(page)31 +b(102)382 3794 y Fe(FTGHAD\(unit,)44 b(>)k(curaddr,nextaddr\))382 +3907 y(FTUPCH\(string\))382 4020 y(FTCMPS\(str_template,stri)o(ng,)o +(case)o(sen,)41 b(>)47 b(match,exact\))382 4133 y(FTTKEY\(keyword,)c(>) +48 b(status\))382 4246 y(FTTREC\(card,)c(>)k(status\))382 +4359 y(FTNCHK\(unit,)c(>)k(status\))382 4472 y(FTGKNM\(unit,)c(>)k +(keyword,)d(keylength,)g(status\))382 4585 y(FTPSVC\(card,)f(>)k +(value,comment,status\))382 4698 y(FTKEYN\(keyroot,seq_no,)42 +b(>)47 b(keyword,status\))382 4811 y(FTNKEY\(seq_no,keyroot,)42 +b(>)47 b(keyword,status\))382 4924 y(FTDTYP\(value,)d(>)j +(dtype,status\))382 5036 y(class)f(=)i(FTGKCL\(card\))382 +5149 y(FTASFM\(tform,)c(>)j(datacode,width,decimals,st)o(atus)o(\))382 +5262 y(FTBNFM\(tform,)d(>)j(datacode,repeat,width,stat)o(us\))382 +5375 y(FTGABC\(tfields,tform,spa)o(ce,)41 b(>)48 b +(rowlen,tbcol,status\))382 5488 y(FTGTHD\(template,)43 +b(>)48 b(card,hdtype,status\))382 5601 y(FTRWRG\(rowlist,)43 +b(maxrows,)j(maxranges,)f(>)i(numranges,)e(rangemin,)716 +5714 y(rangemax,)g(status\))p eop +%%Page: 116 122 +116 121 bop 0 299 a Fi(116)281 b Fg(CHAPTER)30 b(10.)112 +b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10 +b(A)m(CE)30 b(SUBR)m(OUTINES)p eop +%%Page: 117 123 +117 122 bop 0 1225 a Ff(Chapter)65 b(11)0 1687 y Fl(P)-6 +b(arameter)77 b(De\014nitions)0 2180 y Fe(anyf)47 b(-)g(\(logical\))e +(set)i(to)g(TRUE)g(if)g(any)g(of)g(the)g(returned)f(data)g(values)h +(are)f(undefined)0 2293 y(array)g(-)i(\(any)e(datatype)g(except)g +(character\))f(array)h(of)i(bytes)e(to)h(be)g(read)g(or)g(written.)0 +2406 y(bitpix)f(-)i(\(integer\))d(bits)h(per)h(pixel:)f(8,)i(16,)f(32,) +f(-32,)h(or)g(-64)0 2518 y(blank)f(-)i(\(integer\))d(value)h(used)h +(for)g(undefined)e(pixels)h(in)i(integer)d(primary)h(array)0 +2631 y(blocksize)f(-)j(\(integer\))d(2880-byte)g(logical)h(record)g +(blocking)g(factor)477 2744 y(\(if)h(0)h(<)f(blocksize)e(<)j(11\))f(or) +g(the)g(actual)f(block)g(size)h(in)g(bytes)477 2857 y(\(if)g(10)g(<)h +(blocksize)d(<)j(28800\).)93 b(As)47 b(of)g(version)f(3.3)h(of)g +(FITSIO,)477 2970 y(blocksizes)e(greater)h(than)h(2880)f(are)h(no)g +(longer)g(supported.)0 3083 y(bscale)f(-)i(\(double)d(precision\))g +(scaling)h(factor)g(for)h(the)g(primary)f(array)0 3196 +y(bytlen)g(-)i(\(integer\))d(length)h(of)h(the)g(data)g(unit,)f(in)h +(bytes)0 3309 y(bzero)f(-)i(\(double)e(precision\))f(zero)h(point)h +(for)g(primary)e(array)i(scaling)0 3422 y(card)g(-)g(\(character*80\))d +(header)i(record)g(to)h(be)h(read)e(or)h(written)0 3535 +y(casesen)f(-)h(\(logical\))f(will)g(string)g(matching)g(be)h(case)g +(sensitive?)0 3648 y(checksum)f(-)h(\(character*16\))d(encoded)i +(checksum)f(string)0 3760 y(colname)h(-)h(\(character\))e(ASCII)h(name) +h(of)g(the)g(column)0 3873 y(colnum)f(-)i(\(integer\))d(number)h(of)h +(the)g(column)f(\(first)g(column)g(=)i(1\))0 3986 y(coltemplate)d(-)i +(\(character\))e(template)g(string)i(to)g(be)g(matched)f(to)h(column)f +(names)0 4099 y(comment)g(-)h(\(character\))e(the)i(keyword)f(comment)g +(field)0 4212 y(comments)g(-)h(\(character)e(array\))h(keyword)g +(comment)g(fields)0 4325 y(compid)g(-)i(\(integer\))d(the)i(type)f(of)i +(computer)d(that)i(the)g(program)e(is)j(running)d(on)0 +4438 y(complement)g(-)i(\(logical\))f(should)g(the)h(checksum)e(be)i +(complemented?)0 4551 y(coordtype)e(-)j(\(character\))c(type)j(of)g +(coordinate)e(projection)g(\(-SIN,)h(-TAN,)h(-ARC,)477 +4664 y(-NCP,)g(-GLS,)f(-MER,)g(or)i(-AIT\))0 4777 y(cube)f(-)g(3D)g +(data)g(cube)g(of)g(the)g(appropriate)d(datatype)0 4890 +y(curaddr)i(-)h(\(integer\))f(starting)f(address)h(\(in)h(bytes\))f(of) +h(the)g(CHDU)0 5002 y(datacode)f(-)h(\(integer\))e(symbolic)h(code)g +(of)i(the)f(binary)f(table)g(column)g(datatype)0 5115 +y(dataok)g(-)i(\(integer\))d(was)i(the)g(data)f(unit)h(verification)d +(successful)h(\(=1\))i(or)430 5228 y(not)f(\(=)i(-1\).)94 +b(Equals)46 b(zero)h(if)g(the)g(DATASUM)f(keyword)f(is)j(not)f +(present.)0 5341 y(datasum)f(-)h(\(double)f(precision\))f(32-bit)h(1's) +h(complement)e(checksum)h(for)h(the)f(data)h(unit)0 5454 +y(datatype)f(-)h(\(character\))e(datatype)g(\(format\))h(of)h(the)g +(binary)f(table)g(column)0 5567 y(datestr)94 b(-)47 b(\(string\))f +(FITS)g(date/time)f(string:)h('YYYY-MM-DDThh:mm:ss.ddd')o(,)525 +5680 y('YYYY-MM-dd',)e(or)j('dd/mm/yy')1882 5942 y Fi(117)p +eop +%%Page: 118 124 +118 123 bop 0 299 a Fi(118)1779 b Fg(CHAPTER)30 b(11.)112 +b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y Fe(day)47 +b(-)g(\(integer\))f(current)f(day)i(of)h(the)e(month)0 +668 y(dblval)g(-)i(\(double)d(precision\))g(fractional)g(part)i(of)g +(the)g(keyword)f(value)0 781 y(decimals)g(-)h(\(integer\))e(number)h +(of)i(decimal)d(places)h(to)i(be)f(displayed)0 894 y(dim1)g(-)g +(\(integer\))e(actual)h(size)h(of)g(the)g(first)g(dimension)e(of)i(the) +g(image)f(or)h(cube)g(array)0 1007 y(dim2)g(-)g(\(integer\))e(actual)h +(size)h(of)g(the)g(second)f(dimension)g(of)h(the)g(cube)f(array)0 +1120 y(dispwidth)f(-)j(\(integer\))d(-)i(the)g(display)f(width)h +(\(length)e(of)j(string\))d(for)i(a)h(column)0 1233 y(dtype)e(-)i +(\(character\))d(datatype)g(of)i(the)g(keyword)f(\('C',)g('L',)h('I',) +94 b(or)48 b('F'\))764 1346 y(C)f(=)h(character)d(string)764 +1458 y(L)i(=)h(logical)764 1571 y(I)f(=)h(integer)764 +1684 y(F)f(=)h(floating)d(point)h(number)0 1797 y(errmsg)g(-)i +(\(character*80\))43 b(oldest)k(error)f(message)g(on)h(the)g(internal)e +(stack)0 1910 y(errtext)h(-)h(\(character*30\))d(descriptive)h(error)h +(message)g(corresponding)e(to)j(error)g(number)0 2023 +y(casesen)f(-)h(\(logical\))f(true)g(if)h(column)f(name)h(matching)f +(is)h(case)f(sensitive)0 2136 y(exact)g(-)i(\(logical\))d(do)i(the)g +(strings)f(match)g(exactly,)g(or)h(were)g(wildcards)e(used?)0 +2249 y(exclist)94 b(\(character)45 b(array\))h(list)g(of)h(names)g(to)g +(be)g(excluded)f(from)g(search)0 2362 y(exists)142 b(-)47 +b(flag)g(indicating)e(whether)g(the)i(file)g(or)g(compressed)e(file)i +(exists)f(on)h(disk)0 2475 y(extend)f(-)i(\(logical\))d(true)h(if)i +(there)e(may)h(be)g(extensions)e(following)g(the)i(primary)f(data)0 +2588 y(extname)g(-)h(\(character\))e(value)h(of)i(the)e(EXTNAME)g +(keyword)g(\(if)h(not)g(blank\))0 2700 y(fbit)g(-)g(\(integer\))e +(first)i(bit)g(in)g(the)g(field)f(to)h(be)g(read)g(or)g(written)0 +2813 y(felem)f(-)i(\(integer\))d(first)h(pixel)h(of)g(the)g(element)f +(vector)g(\(ignored)f(for)i(ASCII)g(tables\))0 2926 y(filename)f(-)h +(\(character\))e(name)h(of)i(the)e(FITS)h(file)0 3039 +y(flagvals)f(-)h(\(logical)f(array\))g(True)g(if)h(corresponding)e +(data)h(element)g(is)h(undefined)0 3152 y(fparm)f(-)i(\(integer\))d +(sequence)h(number)g(of)h(the)g(first)f(group)h(parameter)e(to)i(read)g +(or)g(write)0 3265 y(fpixel)f(-)i(\(integer\))d(the)i(first)f(pixel)g +(position)0 3378 y(fpixels)g(-)h(\(integer)f(array\))g(the)h(first)f +(included)g(pixel)g(in)h(each)g(dimension)0 3491 y(frow)g(-)g +(\(integer\))e(beginning)h(row)h(number)f(\(first)g(row)h(of)g(table)f +(=)i(1\))0 3604 y(gcount)e(-)i(\(integer\))d(value)h(of)h(the)g(GCOUNT) +f(keyword)g(\(usually)g(=)h(1\))0 3717 y(group)f(-)i(\(integer\))d +(sequence)h(number)g(of)h(the)g(data)f(group)h(\(=0)g(for)g +(non-grouped)d(data\))0 3830 y(hdtype)i(-)i(\(integer\))d(header)h +(record)g(type:)g(-1=delete;)93 b(0=append)46 b(or)h(replace;)907 +3942 y(1=append;)e(2=this)h(is)h(the)g(END)g(keyword)0 +4055 y(hduok)f(-)i(\(integer\))d(was)i(the)g(HDU)g(verification)d +(successful)h(\(=1\))i(or)430 4168 y(not)f(\(=)i(-1\).)94 +b(Equals)46 b(zero)h(if)g(the)g(CHECKSUM)e(keyword)h(is)h(not)g +(present.)0 4281 y(hdusum)f(-)i(\(double)d(precision\))g(32)j(bit)e +(1's)h(complement)e(checksum)h(for)h(the)g(entire)f(CHDU)0 +4394 y(hdutype)g(-)h(\(integer\))f(type)g(of)h(HDU:)g(0)g(=)h(primary)e +(array)g(or)h(IMAGE,)f(1)i(=)f(ASCII)g(table,)907 4507 +y(2)g(=)h(binary)e(table,)g(-1)h(=)h(unknown)0 4620 y(history)e(-)h +(\(character\))e(the)i(HISTORY)f(keyword)g(comment)f(string)0 +4733 y(hour)i(-)g(\(integer\))e(hour)i(from)g(0)g(-)h(23)0 +4846 y(image)e(-)i(2D)f(image)f(of)i(the)e(appropriate)f(datatype)0 +4959 y(inclist)94 b(\(character)45 b(array\))h(list)g(of)h(names)g(to)g +(be)g(included)f(in)h(search)0 5072 y(incs)g(-)g(\(integer)f(array\))g +(sampling)f(interval)h(for)h(pixels)f(in)h(each)g(FITS)f(dimension)0 +5185 y(intval)g(-)i(\(integer\))d(integer)h(part)g(of)h(the)g(keyword)f +(value)0 5297 y(iounit)g(-)i(\(integer\))d(value)h(of)h(an)h(unused)e +(I/O)h(unit)f(number)0 5410 y(iunit)g(-)i(\(integer\))d(logical)h(unit) +h(number)f(associated)f(with)h(the)h(input)g(FITS)f(file,)h(1-199)0 +5523 y(key_no)f(-)i(\(integer\))d(sequence)g(number)h(\(starting)g +(with)g(1\))i(of)f(the)g(keyword)e(record)0 5636 y(keylength)g(-)j +(\(integer\))d(length)h(of)h(the)g(keyword)f(name)p eop +%%Page: 119 125 +119 124 bop 3764 299 a Fi(119)0 555 y Fe(keyroot)46 b(-)h +(\(character\))e(root)i(string)f(for)h(the)g(keyword)e(name)0 +668 y(keysadd)h(-\(integer\))f(number)h(of)h(new)g(keyword)f(records)g +(which)g(can)h(fit)g(in)g(the)g(CHU)0 781 y(keysexist)e(-)j +(\(integer\))d(number)h(of)h(existing)f(keyword)g(records)f(in)j(the)f +(CHU)0 894 y(keyval)f(-)i(value)e(of)h(the)g(keyword)f(in)h(the)g +(appropriate)e(datatype)0 1007 y(keyvals)h(-)h(\(array\))f(value)g(of)i +(the)f(keywords)e(in)i(the)g(appropriate)e(datatype)0 +1120 y(keyword)h(-)h(\(character*8\))d(name)j(of)g(a)h(keyword)0 +1233 y(lray)f(-)g(\(logical)f(array\))g(array)g(of)h(logical)f(values)g +(corresponding)e(to)k(the)e(bit)h(array)0 1346 y(lpixels)f(-)h +(\(integer)f(array\))g(the)h(last)f(included)g(pixel)g(in)i(each)e +(dimension)0 1458 y(match)g(-)i(\(logical\))d(do)i(the)g(2)h(strings)d +(match?)0 1571 y(maxdim)h(-)i(\(integer\))d(dimensioned)g(size)h(of)h +(the)g(NAXES,)f(TTYPE,)g(TFORM)h(or)g(TUNIT)f(arrays)0 +1684 y(max_keys)g(-)h(\(integer\))e(maximum)h(number)g(of)h(keywords)f +(to)h(search)f(for)0 1797 y(minute)g(-)i(\(integer\))d(minute)h(of)h +(an)g(hour)g(\(0)g(-)h(59\))0 1910 y(month)e(-)i(\(integer\))d(current) +h(month)g(of)h(the)g(year)g(\(1)g(-)h(12\))0 2023 y(morekeys)e(-)h +(\(integer\))e(will)i(leave)f(space)h(in)g(the)g(header)f(for)h(this)f +(many)h(more)g(keywords)0 2136 y(naxes)f(-)i(\(integer)d(array\))h +(size)h(of)g(each)g(dimension)e(in)i(the)g(FITS)g(array)0 +2249 y(naxis)f(-)i(\(integer\))d(number)h(of)h(dimensions)e(in)j(the)e +(FITS)h(array)0 2362 y(naxis1)f(-)i(\(integer\))d(length)h(of)h(the)g +(X/first)f(axis)g(of)i(the)f(FITS)f(array)0 2475 y(naxis2)g(-)i +(\(integer\))d(length)h(of)h(the)g(Y/second)f(axis)g(of)h(the)g(FITS)g +(array)0 2588 y(naxis3)f(-)i(\(integer\))d(length)h(of)h(the)g(Z/third) +f(axis)g(of)i(the)f(FITS)f(array)0 2700 y(nbit)h(-)g(\(integer\))e +(number)h(of)i(bits)e(in)h(the)g(field)g(to)g(read)g(or)g(write)0 +2813 y(nchars)f(-)i(\(integer\))d(number)h(of)h(characters)e(to)i(read) +g(and)g(return)0 2926 y(ncols)f(-)i(\(integer\))d(number)h(of)h +(columns)0 3039 y(nelements)e(-)j(\(integer\))d(number)h(of)h(data)g +(elements)e(to)j(read)e(or)h(write)0 3152 y(nexc)142 +b(\(integer\))93 b(number)46 b(of)h(names)g(in)g(the)g(exclusion)e +(list)i(\(may)f(=)i(0\))0 3265 y(nhdu)f(-)g(\(integer\))e(absolute)h +(number)g(of)h(the)g(HDU)g(\(1st)g(HDU)g(=)g(1\))0 3378 +y(ninc)142 b(\(integer\))93 b(number)46 b(of)h(names)g(in)g(the)g +(inclusion)e(list)0 3491 y(nmove)h(-)i(\(integer\))d(number)h(of)h +(HDUs)g(to)g(move)g(\(+)g(or)g(-\),)g(relative)f(to)h(current)f +(position)0 3604 y(nfound)g(-)i(\(integer\))d(number)h(of)h(keywords)f +(found)g(\(highest)g(keyword)f(number\))0 3717 y(no_keys)h(-)h +(\(integer\))f(number)g(of)h(keywords)e(to)j(write)e(in)h(the)g +(sequence)0 3830 y(nparm)f(-)i(\(integer\))d(number)h(of)h(group)g +(parameters)e(to)i(read)g(or)g(write)0 3942 y(nrows)f(-)i(\(integer\))d +(number)h(of)h(rows)g(in)g(the)g(table)0 4055 y(nullval)f(-)h(value)g +(to)g(represent)e(undefined)g(pixels,)h(of)h(the)g(appropriate)e +(datatype)0 4168 y(nextaddr)h(-)h(\(integer\))e(starting)h(address)g +(\(in)h(bytes\))f(of)h(the)g(HDU)g(following)e(the)i(CHDU)0 +4281 y(offset)f(-)i(\(integer\))d(byte)h(offset)h(in)g(the)g(heap)f(to) +h(the)g(first)g(element)f(of)h(the)g(array)0 4394 y(oldkey)f(-)i +(\(character\))c(old)j(name)g(of)g(keyword)f(to)h(be)g(modified)0 +4507 y(ounit)f(-)i(\(integer\))d(logical)h(unit)h(number)f(associated)f +(with)h(the)h(output)f(FITS)h(file)g(1-199)0 4620 y(pcount)f(-)i +(\(integer\))d(value)h(of)h(the)g(PCOUNT)f(keyword)g(\(usually)g(=)h +(0\))0 4733 y(repeat)f(-)i(\(integer\))d(length)h(of)h(element)f +(vector)g(\(e.g.)g(12J\);)h(ignored)f(for)g(ASCII)h(table)0 +4846 y(rot)g(-)g(\(double)f(precision\))f(celestial)g(coordinate)g +(rotation)h(angle)g(\(degrees\))0 4959 y(rowlen)g(-)i(\(integer\))d +(length)h(of)h(a)h(table)e(row,)h(in)g(characters)e(or)i(bytes)0 +5072 y(rowlist)f(-)h(\(integer)f(array\))g(list)h(of)g(row)g(numbers)e +(to)j(be)f(deleted)f(in)h(increasing)e(order)0 5185 y(rownum)h(-)i +(\(integer\))d(number)h(of)h(the)g(row)g(\(first)f(row)h(=)g(1\))0 +5297 y(rowrange-)e(\(string\))h(list)g(of)i(rows)e(or)h(row)g(ranges)f +(to)i(be)f(deleted)0 5410 y(rwmode)f(-)i(\(integer\))d(file)h(access)h +(mode:)f(0)h(=)h(readonly,)d(1)j(=)f(readwrite)0 5523 +y(second)142 b(\(double\)-)45 b(second)h(within)g(minute)g(\(0)h(-)h +(60.9999999999\))c(\(leap)i(second!\))0 5636 y(seq_no)g(-)i +(\(integer\))d(the)i(sequence)e(number)h(to)i(append)e(to)h(the)g +(keyword)f(root)g(name)p eop +%%Page: 120 126 +120 125 bop 0 299 a Fi(120)1779 b Fg(CHAPTER)30 b(11.)112 +b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y Fe(simple)46 +b(-)i(\(logical\))d(does)h(the)h(FITS)g(file)g(conform)e(to)j(all)f +(the)f(FITS)h(standards)0 668 y(snull)f(-)i(\(character\))d(value)h +(used)h(to)g(represent)e(undefined)g(values)h(in)i(ASCII)e(table)0 +781 y(space)g(-)i(\(integer\))d(number)h(of)h(blank)g(spaces)f(to)h +(leave)f(between)g(ASCII)h(table)f(columns)0 894 y(startchar)f(-)j +(\(integer\))d(first)h(character)g(in)h(the)g(row)g(to)g(be)g(read)0 +1007 y(startno)f(-)h(\(integer\))f(value)g(of)h(the)g(first)f(keyword)g +(sequence)g(number)g(\(usually)f(1\))0 1120 y(status)h(-)i(\(integer\)) +d(returned)g(error)i(status)f(code)g(\(0)i(=)f(OK\))0 +1233 y(str_template)d(\(character\))h(template)h(string)g(to)h(be)g +(matched)f(to)h(reference)e(string)0 1346 y(stream)h(-)i(\(character\)) +c(output)i(stream)g(for)h(the)g(report:)f(either)g('STDOUT')g(or)h +('STDERR')0 1458 y(string)f(-)i(\(character\))c(character)i(string)0 +1571 y(sum)h(-)g(\(double)f(precision\))f(32)i(bit)g(unsigned)f +(checksum)f(value)0 1684 y(tbcol)h(-)i(\(integer)d(array\))h(column)h +(number)f(of)h(the)g(first)f(character)f(in)j(the)e(field\(s\))0 +1797 y(tdisp)g(-)i(\(character\))d(Fortran)g(type)i(display)f(format)g +(for)h(the)g(table)f(column)0 1910 y(template-\(character\))c(template) +k(string)g(for)h(a)g(FITS)g(header)f(record)0 2023 y(tfields)g(-)h +(\(integer\))f(number)g(of)h(fields)f(\(columns\))f(in)i(the)g(table)0 +2136 y(tform)f(-)i(\(character)d(array\))h(format)g(of)h(the)g +(column\(s\);)e(allowed)h(values)g(are:)430 2249 y(For)g(ASCII)h +(tables:)93 b(Iw,)47 b(Aw,)g(Fww.dd,)f(Eww.dd,)g(or)h(Dww.dd)430 +2362 y(For)f(binary)h(tables:)e(rL,)i(rX,)g(rB,)g(rI,)g(rJ,)g(rA,)g +(rAw,)f(rE,)h(rD,)g(rC,)g(rM)430 2475 y(where)f('w'=width)f(of)i(the)g +(field,)f('d'=no.)g(of)h(decimals,)f('r'=repeat)f(count)430 +2588 y(Note)h(that)h(the)g('rAw')f(form)h(is)g(non-standard)d +(extension)i(to)h(the)430 2700 y(TFORM)f(keyword)g(syntax)g(that)g(is)i +(not)f(specifically)d(defined)i(in)h(the)430 2813 y(Binary)f(Tables)g +(definition)f(document.)0 2926 y(theap)h(-)i(\(integer\))d(zero)i +(indexed)f(byte)g(offset)g(of)h(starting)f(address)g(of)h(the)g(heap) +430 3039 y(relative)e(to)i(the)g(beginning)e(of)j(the)f(binary)f(table) +g(data)0 3152 y(tnull)g(-)i(\(integer\))d(value)h(used)h(to)g +(represent)f(undefined)f(values)h(in)h(binary)f(table)0 +3265 y(ttype)g(-)i(\(character)d(array\))h(label)g(for)h(table)g +(column\(s\))0 3378 y(tscal)f(-)i(\(double)e(precision\))f(scaling)g +(factor)i(for)f(table)h(column)0 3491 y(tunit)f(-)i(\(character)d +(array\))h(physical)f(unit)i(for)g(table)f(column\(s\))0 +3604 y(tzero)g(-)i(\(double)e(precision\))f(scaling)g(zero)i(point)f +(for)h(table)g(column)0 3717 y(unit)94 b(-)48 b(\(integer\))d(logical)h +(unit)h(number)f(associated)f(with)h(the)h(FITS)g(file)f(\(1-199\))0 +3830 y(units)g(-)i(\(character\))d(the)h(keyword)g(units)h(string)f +(\(e.g.,)g('km/s'\))0 3942 y(value)g(-)i(\(character\))d(the)h(keyword) +g(value)h(string)0 4055 y(values)f(-)i(array)e(of)h(data)g(values)f(of) +h(the)g(appropriate)e(datatype)0 4168 y(varidat)h(-)h(\(integer\))f +(size)g(in)h(bytes)g(of)g(the)g('variable)e(length)h(data)h(area')525 +4281 y(following)e(the)i(binary)f(table)h(data)f(\(usually)g(=)h(0\))0 +4394 y(version)f(-)h(\(real\))f(current)g(revision)g(number)g(of)h(the) +g(library)0 4507 y(width)f(-)i(\(integer\))d(width)h(of)i(the)f +(character)e(string)h(field)0 4620 y(xcol)h(-)g(\(integer\))e(number)h +(of)i(the)f(column)f(containing)f(the)i(X)g(coordinate)e(values)0 +4733 y(xinc)i(-)g(\(double)f(precision\))f(X)i(axis)g(coordinate)e +(increment)g(at)i(reference)f(pixel)g(\(deg\))0 4846 +y(xpix)h(-)g(\(double)f(precision\))f(X)i(axis)g(pixel)f(location)0 +4959 y(xpos)h(-)g(\(double)f(precision\))f(X)i(axis)g(celestial)e +(coordinate)g(\(usually)h(RA\))h(\(deg\))0 5072 y(xrpix)f(-)i(\(double) +e(precision\))f(X)i(axis)g(reference)e(pixel)h(array)h(location)0 +5185 y(xrval)f(-)i(\(double)e(precision\))f(X)i(axis)g(coordinate)e +(value)h(at)h(the)g(reference)e(pixel)i(\(deg\))0 5297 +y(ycol)g(-)g(\(integer\))e(number)h(of)i(the)f(column)f(containing)f +(the)i(X)g(coordinate)e(values)0 5410 y(year)i(-)g(\(integer\))e(last)i +(2)g(digits)g(of)g(the)g(year)f(\(00)h(-)h(99\))0 5523 +y(yinc)f(-)g(\(double)f(precision\))f(Y)i(axis)g(coordinate)e +(increment)g(at)i(reference)f(pixel)g(\(deg\))0 5636 +y(ypix)h(-)g(\(double)f(precision\))f(y)i(axis)g(pixel)f(location)p +eop +%%Page: 121 127 +121 126 bop 3764 299 a Fi(121)0 555 y Fe(ypos)47 b(-)g(\(double)f +(precision\))f(y)i(axis)g(celestial)e(coordinate)g(\(usually)h(DEC\))g +(\(deg\))0 668 y(yrpix)g(-)i(\(double)e(precision\))f(Y)i(axis)g +(reference)e(pixel)h(array)h(location)0 781 y(yrval)f(-)i(\(double)e +(precision\))f(Y)i(axis)g(coordinate)e(value)h(at)h(the)g(reference)e +(pixel)i(\(deg\))p eop +%%Page: 122 128 +122 127 bop 0 299 a Fi(122)1779 b Fg(CHAPTER)30 b(11.)112 +b(P)-8 b(ARAMETER)30 b(DEFINITIONS)p eop +%%Page: 123 129 +123 128 bop 0 1225 a Ff(Chapter)65 b(12)0 1687 y Fl(FITSIO)76 +b(Error)h(Status)h(Co)6 b(des)0 2180 y Fe(Status)46 b(codes)g(in)i(the) +f(range)f(-99)h(to)g(-999)94 b(and)47 b(1)h(to)f(999)g(are)g(reserved)e +(for)i(future)0 2293 y(FITSIO)f(use.)95 2518 y(0)96 b(OK,)47 +b(no)g(error)0 2631 y(101)95 b(input)46 b(and)h(output)f(files)g(are)h +(the)g(same)0 2744 y(103)95 b(too)47 b(many)f(FITS)h(files)f(open)h(at) +g(once;)f(all)h(internal)f(buffers)g(full)0 2857 y(104)95 +b(error)46 b(opening)g(existing)f(file)0 2970 y(105)95 +b(error)46 b(creating)g(new)g(FITS)h(file;)f(\(does)h(a)g(file)g(with)g +(this)f(name)h(already)f(exist?\))0 3083 y(106)95 b(error)46 +b(writing)g(record)g(to)h(FITS)g(file)0 3196 y(107)95 +b(end-of-file)44 b(encountered)h(while)h(reading)g(record)g(from)h +(FITS)g(file)0 3309 y(108)95 b(error)46 b(reading)g(record)g(from)h +(file)0 3422 y(110)95 b(error)46 b(closing)g(FITS)g(file)0 +3535 y(111)95 b(internal)45 b(array)i(dimensions)e(exceeded)0 +3648 y(112)95 b(Cannot)46 b(modify)g(file)g(with)h(readonly)f(access)0 +3760 y(113)95 b(Could)46 b(not)h(allocate)e(memory)0 +3873 y(114)95 b(illegal)45 b(logical)h(unit)h(number;)f(must)g(be)i +(between)d(1)j(-)f(199,)g(inclusive)0 3986 y(115)95 b(NULL)46 +b(input)h(pointer)e(to)j(routine)0 4099 y(116)95 b(error)46 +b(seeking)g(position)f(in)j(file)0 4325 y(121)95 b(invalid)45 +b(URL)i(prefix)f(on)i(file)e(name)0 4438 y(122)95 b(tried)46 +b(to)h(register)f(too)h(many)f(IO)h(drivers)0 4551 y(123)95 +b(driver)46 b(initialization)e(failed)0 4664 y(124)95 +b(matching)45 b(driver)h(is)h(not)g(registered)0 4777 +y(125)95 b(failed)46 b(to)h(parse)f(input)h(file)f(URL)0 +4890 y(126)95 b(parse)46 b(error)g(in)i(range)e(list)0 +5115 y(151)95 b(bad)47 b(argument)e(in)i(shared)f(memory)g(driver)0 +5228 y(152)95 b(null)46 b(pointer)g(passed)g(as)h(an)h(argument)0 +5341 y(153)95 b(no)47 b(more)f(free)h(shared)f(memory)g(handles)0 +5454 y(154)95 b(shared)46 b(memory)g(driver)g(is)h(not)g(initialized)0 +5567 y(155)95 b(IPC)47 b(error)f(returned)f(by)j(a)f(system)f(call)0 +5680 y(156)95 b(no)47 b(memory)f(in)h(shared)f(memory)g(driver)1882 +5942 y Fi(123)p eop +%%Page: 124 130 +124 129 bop 0 299 a Fi(124)1613 b Fg(CHAPTER)30 b(12.)112 +b(FITSIO)30 b(ERR)m(OR)g(ST)-8 b(A)g(TUS)30 b(CODES)0 +555 y Fe(157)95 b(resource)45 b(deadlock)h(would)g(occur)0 +668 y(158)95 b(attempt)45 b(to)j(open/create)c(lock)j(file)g(failed)0 +781 y(159)95 b(shared)46 b(memory)g(block)g(cannot)g(be)h(resized)f(at) +h(the)g(moment)0 1120 y(201)95 b(header)46 b(not)h(empty;)f(can't)g +(write)g(required)g(keywords)0 1233 y(202)95 b(specified)45 +b(keyword)h(name)g(was)h(not)g(found)g(in)g(the)g(header)0 +1346 y(203)95 b(specified)45 b(header)h(record)g(number)g(is)h(out)g +(of)g(bounds)0 1458 y(204)95 b(keyword)45 b(value)i(field)f(is)h(blank) +0 1571 y(205)95 b(keyword)45 b(value)i(string)f(is)h(missing)f(the)h +(closing)f(quote)g(character)0 1684 y(207)95 b(illegal)45 +b(character)h(in)h(keyword)f(name)g(or)i(header)e(record)0 +1797 y(208)95 b(keyword)45 b(does)i(not)g(have)g(expected)e(name.)i +(Keyword)e(out)i(of)g(sequence?)0 1910 y(209)95 b(keyword)45 +b(does)i(not)g(have)g(expected)e(integer)h(value)0 2023 +y(210)95 b(could)46 b(not)h(find)g(the)f(required)g(END)h(header)f +(keyword)0 2136 y(211)95 b(illegal)45 b(BITPIX)i(keyword)e(value)0 +2249 y(212)95 b(illegal)45 b(NAXIS)i(keyword)f(value)0 +2362 y(213)95 b(illegal)45 b(NAXISn)i(keyword)e(value:)h(must)h(be)g(0) +h(or)f(positive)e(integer)0 2475 y(214)95 b(illegal)45 +b(PCOUNT)i(keyword)e(value)0 2588 y(215)95 b(illegal)45 +b(GCOUNT)i(keyword)e(value)0 2700 y(216)95 b(illegal)45 +b(TFIELDS)h(keyword)g(value)0 2813 y(217)95 b(negative)45 +b(ASCII)i(or)g(binary)f(table)g(width)h(value)f(\(NAXIS1\))0 +2926 y(218)95 b(negative)45 b(number)h(of)h(rows)g(in)g(ASCII)g(or)g +(binary)f(table)g(\(NAXIS2\))0 3039 y(219)95 b(column)46 +b(name)g(\(TTYPE)g(keyword\))g(not)h(found)0 3152 y(220)95 +b(illegal)45 b(SIMPLE)i(keyword)e(value)0 3265 y(221)95 +b(could)46 b(not)h(find)g(the)f(required)g(SIMPLE)g(header)g(keyword)0 +3378 y(222)95 b(could)46 b(not)h(find)g(the)f(required)g(BITPIX)g +(header)g(keyword)0 3491 y(223)95 b(could)46 b(not)h(find)g(the)f +(required)g(NAXIS)g(header)g(keyword)0 3604 y(224)95 +b(could)46 b(not)h(find)g(all)f(the)h(required)f(NAXISn)g(keywords)g +(in)h(the)g(header)0 3717 y(225)95 b(could)46 b(not)h(find)g(the)f +(required)g(XTENSION)g(header)g(keyword)0 3830 y(226)95 +b(the)47 b(CHDU)f(is)h(not)g(an)g(ASCII)g(table)f(extension)0 +3942 y(227)95 b(the)47 b(CHDU)f(is)h(not)g(a)h(binary)e(table)g +(extension)0 4055 y(228)95 b(could)46 b(not)h(find)g(the)f(required)g +(PCOUNT)g(header)g(keyword)0 4168 y(229)95 b(could)46 +b(not)h(find)g(the)f(required)g(GCOUNT)g(header)g(keyword)0 +4281 y(230)95 b(could)46 b(not)h(find)g(the)f(required)g(TFIELDS)g +(header)g(keyword)0 4394 y(231)95 b(could)46 b(not)h(find)g(all)f(the)h +(required)f(TBCOLn)g(keywords)g(in)h(the)g(header)0 4507 +y(232)95 b(could)46 b(not)h(find)g(all)f(the)h(required)f(TFORMn)g +(keywords)g(in)h(the)g(header)0 4620 y(233)95 b(the)47 +b(CHDU)f(is)h(not)g(an)g(IMAGE)g(extension)0 4733 y(234)95 +b(illegal)45 b(TBCOL)i(keyword)f(value;)g(out)h(of)g(range)0 +4846 y(235)95 b(this)46 b(operation)g(only)g(allowed)g(for)h(ASCII)f +(or)h(BINARY)g(table)f(extension)0 4959 y(236)95 b(column)46 +b(is)h(too)g(wide)f(to)i(fit)f(within)f(the)h(specified)e(width)h(of)h +(the)g(ASCII)g(table)0 5072 y(237)95 b(the)47 b(specified)e(column)h +(name)h(template)e(matched)h(more)h(than)f(one)h(column)f(name)0 +5185 y(241)95 b(binary)46 b(table)g(row)h(width)f(is)i(not)e(equal)h +(to)g(the)g(sum)g(of)g(the)g(field)f(widths)0 5297 y(251)95 +b(unrecognizable)44 b(type)i(of)h(FITS)g(extension)0 +5410 y(252)95 b(unrecognizable)44 b(FITS)i(record)0 5523 +y(253)95 b(END)47 b(keyword)e(contains)h(non-blank)f(characters)g(in)i +(columns)f(9-80)0 5636 y(254)95 b(Header)46 b(fill)g(area)h(contains)f +(non-blank)f(characters)p eop +%%Page: 125 131 +125 130 bop 3764 299 a Fi(125)0 555 y Fe(255)95 b(Data)46 +b(fill)h(area)g(contains)e(non-blank)g(on)j(non-zero)d(values)0 +668 y(261)95 b(unable)46 b(to)h(parse)f(the)h(TFORM)g(keyword)e(value)i +(string)0 781 y(262)95 b(unrecognizable)44 b(TFORM)i(datatype)f(code)0 +894 y(263)95 b(illegal)45 b(TDIMn)i(keyword)f(value)0 +1120 y(301)95 b(illegal)45 b(HDU)i(number;)f(less)h(than)f(1)i(or)f +(greater)f(than)h(internal)e(buffer)h(size)0 1233 y(302)95 +b(column)46 b(number)g(out)h(of)g(range)f(\(1)h(-)h(999\))0 +1346 y(304)95 b(attempt)45 b(to)j(move)e(to)h(negative)f(file)h(record) +f(number)0 1458 y(306)95 b(attempted)45 b(to)i(read)g(or)g(write)f(a)i +(negative)d(number)h(of)i(bytes)e(in)h(the)g(FITS)g(file)0 +1571 y(307)95 b(illegal)45 b(starting)h(row)h(number)f(for)h(table)f +(read)h(or)g(write)f(operation)0 1684 y(308)95 b(illegal)45 +b(starting)h(element)g(number)g(for)h(table)f(read)h(or)g(write)f +(operation)0 1797 y(309)95 b(attempted)45 b(to)i(read)g(or)g(write)f +(character)g(string)g(in)h(non-character)d(table)i(column)0 +1910 y(310)95 b(attempted)45 b(to)i(read)g(or)g(write)f(logical)g +(value)g(in)i(non-logical)c(table)j(column)0 2023 y(311)95 +b(illegal)45 b(ASCII)i(table)f(TFORM)h(format)f(code)g(for)h(attempted) +e(operation)0 2136 y(312)95 b(illegal)45 b(binary)i(table)f(TFORM)g +(format)g(code)h(for)g(attempted)e(operation)0 2249 y(314)95 +b(value)46 b(for)h(undefined)e(pixels)h(has)h(not)g(been)g(defined)0 +2362 y(317)95 b(attempted)45 b(to)i(read)g(or)g(write)f(descriptor)f +(in)i(a)h(non-descriptor)c(field)0 2475 y(320)95 b(number)46 +b(of)h(array)f(dimensions)f(out)i(of)g(range)0 2588 y(321)95 +b(first)46 b(pixel)g(number)g(is)i(greater)d(than)i(the)g(last)g(pixel) +f(number)0 2700 y(322)95 b(attempt)45 b(to)j(set)f(BSCALE)f(or)h +(TSCALn)f(scaling)g(parameter)f(=)i(0)0 2813 y(323)95 +b(illegal)45 b(axis)i(length)f(less)h(than)f(1)0 3039 +y(340)h(NOT_GROUP_TABLE)d(340)142 b(Grouping)45 b(function)h(error)0 +3152 y(341)95 b(HDU_ALREADY_MEMBER)0 3265 y(342)47 b(MEMBER_NOT_FOUND)0 +3378 y(343)g(GROUP_NOT_FOUND)0 3491 y(344)g(BAD_GROUP_ID)0 +3604 y(345)g(TOO_MANY_HDUS_TRACKED)0 3717 y(346)g(HDU_ALREADY_TRACKED)0 +3830 y(347)g(BAD_OPTION)0 3942 y(348)g(IDENTICAL_POINTERS)0 +4055 y(349)g(BAD_GROUP_ATTACH)0 4168 y(350)g(BAD_GROUP_DETACH)0 +4394 y(360)g(NGP_NO_MEMORY)665 b(malloc)46 b(failed)0 +4507 y(361)h(NGP_READ_ERR)713 b(read)46 b(error)h(from)f(file)0 +4620 y(362)h(NGP_NUL_PTR)761 b(null)46 b(pointer)g(passed)g(as)h(an)g +(argument.)1575 4733 y(Passing)f(null)g(pointer)g(as)h(a)h(name)f(of) +1575 4846 y(template)f(file)g(raises)g(this)h(error)0 +4959 y(363)g(NGP_EMPTY_CURLINE)473 b(line)46 b(read)h(seems)f(to)h(be)h +(empty)e(\(used)1575 5072 y(internally\))0 5185 y(364)h +(NGP_UNREAD_QUEUE_FULL)281 b(cannot)46 b(unread)g(more)g(then)h(1)g +(line)g(\(or)g(single)1575 5297 y(line)g(twice\))0 5410 +y(365)g(NGP_INC_NESTING)569 b(too)46 b(deep)h(include)f(file)h(nesting) +e(\(infinite)1575 5523 y(loop,)h(template)g(includes)f(itself)i(?\))0 +5636 y(366)g(NGP_ERR_FOPEN)665 b(fopen\(\))45 b(failed,)h(cannot)g +(open)h(template)e(file)p eop +%%Page: 126 132 +126 131 bop 0 299 a Fi(126)1613 b Fg(CHAPTER)30 b(12.)112 +b(FITSIO)30 b(ERR)m(OR)g(ST)-8 b(A)g(TUS)30 b(CODES)0 +555 y Fe(367)47 b(NGP_EOF)953 b(end)46 b(of)i(file)e(encountered)f(and) +i(not)g(expected)0 668 y(368)g(NGP_BAD_ARG)761 b(bad)46 +b(arguments)g(passed.)g(Usually)f(means)1575 781 y(internal)h(parser)g +(error.)g(Should)g(not)h(happen)0 894 y(369)g(NGP_TOKEN_NOT_EXPECT)329 +b(token)46 b(not)h(expected)e(here)0 1120 y(401)95 b(error)46 +b(attempting)f(to)i(convert)f(an)h(integer)f(to)h(a)h(formatted)d +(character)g(string)0 1233 y(402)95 b(error)46 b(attempting)f(to)i +(convert)f(a)h(real)g(value)f(to)i(a)f(formatted)e(character)h(string)0 +1346 y(403)95 b(cannot)46 b(convert)g(a)h(quoted)f(string)g(keyword)g +(to)h(an)g(integer)0 1458 y(404)95 b(attempted)45 b(to)i(read)g(a)g +(non-logical)e(keyword)h(value)g(as)h(a)h(logical)e(value)0 +1571 y(405)95 b(cannot)46 b(convert)g(a)h(quoted)f(string)g(keyword)g +(to)h(a)h(real)e(value)0 1684 y(406)95 b(cannot)46 b(convert)g(a)h +(quoted)f(string)g(keyword)g(to)h(a)h(double)e(precision)f(value)0 +1797 y(407)95 b(error)46 b(attempting)f(to)i(read)g(character)e(string) +h(as)h(an)h(integer)0 1910 y(408)95 b(error)46 b(attempting)f(to)i +(read)g(character)e(string)h(as)h(a)h(real)e(value)0 +2023 y(409)95 b(error)46 b(attempting)f(to)i(read)g(character)e(string) +h(as)h(a)h(double)e(precision)f(value)0 2136 y(410)95 +b(bad)47 b(keyword)e(datatype)h(code)0 2249 y(411)95 +b(illegal)45 b(number)i(of)g(decimal)f(places)g(while)g(formatting)f +(floating)h(point)g(value)0 2362 y(412)95 b(numerical)45 +b(overflow)g(during)i(implicit)e(datatype)h(conversion)0 +2475 y(413)95 b(error)46 b(compressing)f(image)0 2588 +y(414)95 b(error)46 b(uncompressing)e(image)0 2700 y(420)95 +b(error)46 b(in)h(date)g(or)g(time)g(conversion)0 2926 +y(431)95 b(syntax)46 b(error)g(in)h(parser)f(expression)0 +3039 y(432)95 b(expression)45 b(did)i(not)f(evaluate)g(to)h(desired)f +(type)0 3152 y(433)95 b(vector)46 b(result)g(too)h(large)f(to)h(return) +f(in)i(array)0 3265 y(434)95 b(data)46 b(parser)g(failed)g(not)h(sent)g +(an)g(out)g(column)0 3378 y(435)95 b(bad)47 b(data)f(encounter)f(while) +i(parsing)f(column)0 3491 y(436)95 b(parse)46 b(error:)g(output)g(file) +h(not)g(of)g(proper)f(type)0 3717 y(501)95 b(celestial)45 +b(angle)h(too)h(large)g(for)f(projection)0 3830 y(502)95 +b(bad)47 b(celestial)e(coordinate)g(or)i(pixel)f(value)0 +3942 y(503)95 b(error)46 b(in)h(celestial)e(coordinate)g(calculation)0 +4055 y(504)95 b(unsupported)44 b(type)j(of)g(celestial)e(projection)0 +4168 y(505)95 b(required)45 b(celestial)g(coordinate)g(keywords)h(not)h +(found)0 4281 y(506)95 b(approximate)44 b(wcs)j(keyword)f(values)g +(were)h(returned)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF |