diff options
Diffstat (limited to 'vendor/cfitsio/fitsio.ps')
-rw-r--r-- | vendor/cfitsio/fitsio.ps | 11353 |
1 files changed, 11353 insertions, 0 deletions
diff --git a/vendor/cfitsio/fitsio.ps b/vendor/cfitsio/fitsio.ps new file mode 100644 index 00000000..769e1bbb --- /dev/null +++ b/vendor/cfitsio/fitsio.ps @@ -0,0 +1,11353 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.96.1 Copyright 2007 Radical Eye Software +%%Title: fitsio.dvi +%%CreationDate: Wed Jul 18 13:51:22 2012 +%%Pages: 136 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%DocumentFonts: CMBX12 CMR12 CMR10 CMBX10 CMSL10 CMTT10 CMSY10 CMMI10 +%%DocumentPaperSizes: Letter +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -o fitsio.ps fitsio.dvi +%DVIPSParameters: dpi=600 +%DVIPSSource: TeX output 2012.07.18:1350 +%%BeginProcSet: tex.pro 0 0 +%! +/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/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]{Ci}imagemask +restore}B/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 +%%BeginProcSet: texps.pro 0 0 +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 +ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ +pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get +div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup +sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll +mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def +end + +%%EndProcSet +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.1: CMMI10 1.100 +%%CreationDate: 1996 Jul 23 07:53:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 62 /greater put +readonly def +/FontBBox{-32 -250 1048 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 +990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E +6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB +DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 +59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 +D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF +8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 +6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 +1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE +03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 +95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 +74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 +3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 +47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 +AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 +42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 +40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 +B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 +9560176676ABB71BBD0EE56B4CC492C0652750227CEC7B86E4740EB7B8775564 +332769DD30794E501BBB0E4E5CB665F3628E10B1137CC8BC5C0A64A310B5E27E +5FD6E3B04DA3914C15987E638A72790AF4073CE9CDBF6E3C749CB4DFF9C54951 +A58C386C54BC4E98B102B5E91E8567D2EEEF048F2CBD5D243701D20909290B4B +A3083F632D8552D42DEE0C69A4B14D8B15AA082DECC12B2ECAE6F663E6D09F81 +EE2979EF41FBF12C9D8BF23B77E0A20088EBD107C5BF9DD6F03FFC3AB65B69A7 +54953327E1D4AEF5A146273392BBDB321D4CC9A8FFFCFE5C515B466E21546CC7 +C6209E5A76F916B03DB98BC6CED334F33E7B373D42761696F5A876CA6F93F16E +15A07E2E102148CA4F62A99C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX12 +%!PS-AdobeFont-1.1: CMBX12 1.0 +%%CreationDate: 1991 Aug 20 16:34:54 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBX12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMBX12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 11 /ff put +dup 12 /fi put +dup 39 /quoteright put +dup 40 /parenleft put +dup 41 /parenright put +dup 45 /hyphen put +dup 46 /period put +dup 47 /slash put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 54 /six put +dup 55 /seven put +dup 56 /eight put +dup 57 /nine put +dup 58 /colon put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +readonly def +/FontBBox{-53 -251 1139 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 +B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 +AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 +7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF +20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 +B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D +68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 +D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E +26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D +F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 +77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 +BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E +C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 +30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 +148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C +E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D +E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 +337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598 +0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 +472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E +A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 +30F40A9C74C8E7773BE601C0E245E7FC10C02939848C3D28D823057B3EA23EC9 +E2BFF7851FB65FB12A4318A21D2C88EF9245D4C7BF21C81C4FC4CE0149E96278 +48F7BF97A5C3691E6CE038033AF54DE91D320EABF2B2E98617FD4145BFE5EBBF +1A5634DA07B00257A51966FFC009CA416D37AD30F4BEE6D72AB64CB2D62466F0 +42D66D6D33EF9107272835EA9C1C8FA04562864BE684FD5F8E6DF19916FF8346 +F39F3E1FA2975B5CED24EB160FEF6149954F76C359E9D15A209EDD7445BB6303 +6AFF9E1373CDD50B93DB137F3896D282F5C04AF0AC84AA02D5421A73E3AFB735 +80EBE676C2870822BA89F4BA85034D6431BC4A44CC264DDD10EA146913E9063B +038BD787A659C6A88C42FD5FBC51234664A8A1621A38C73ACB7199592AA5EA84 +B78BB5DBA7CA43E30CA8D3957CFF478712556EEAB1990C97B9BAB47ADB75E327 +B361D3039A3629B09EB84CF814773858F1D354AD8D526E85EAFD50944CBCE042 +367D1153D7B4EC4DD597DB0F57379DD63304869DEA4FA008D411E30ECFD62E41 +29F51841A9E07E066F06BB4829F87B7722562686FB801D6690F73233053B2EEC +473B9899F284296BB634358A22DBF361C2A57C59438C429EFB04B80BE083E238 +A6749D6AAD1F17F318B880D26D230B86F80A99C27B87F7605DE40A0848543DE2 +4AF7D5BF61CA6B00FA156DBB9ABE7BB0EC79CE8FD5A2FC5BE17050F2A74E8905 +75A9982E12698B289E2213DAFAAE40DD22B424562D7417E8B82A5E3DDA814669 +D4CC949397B0DD2B0787016CB8FDFD09318719D7C47DB72E094C12C6DF3EDE88 +663D6357CE7BFE51FD4A93887F022E3A22DCBE39CA86E104CE54C05AA0B5E469 +0AB9DA29D19ED5E783225ECD1122BFFF5E4E63488FF215A9F555C190ECDAF130 +B34E6BFC66AB1F7D000CC09CA9872299E23EC9B0A8ED04135C982978B9D7C4E5 +F9C7968B540837CC667196C7B40F579E8258C8C7AC569AB787BB112C046D0068 +86AEC034183A3DE02FB82C2CD3E252746C012F2385493F59DDEFD5AA95A26C61 +BA64D85CE90339A0C19F538C6E0516513B9E7661505AB81F45AEA04618CEB379 +12F6BB94E2812F2B3C69BAFC9135B439D74C6A94C0317E1B2A2EA514536AA990 +7B94105AF7DA13148A807CB2F679DBDEE10B09BDCC8BDC7365166C910AA450C7 +4FD88CA8BB639F1BA53A4B108D2E1633C5DB38E64DF4881E0FC1118559A078E8 +52A0E2A87F98461EE7B0B56DFB6C3F340430E3D5C41C12141E4332951B4DF03A +6824E8CEEA4AE8AC9F51981184287EC2710E4A51DB5E09DCFF4DFCE6B82A0B5C +D2E658D38FA7B2854778650A78AF230E97A4C195865C404EC18A5FA99EA30FE8 +755EE5B11397D3CCAECD81EE3F3D1EE1A1B1FD6B669270912948134ECBA3D5B3 +011CD3286DD6729DBCFC9A8FC93356BC70A876AB636E5C8EFA89881D3A6E0592 +D4CDDBBD21A67033AB3354BA1333206874D2F7D0E571AAD845A96057F005F730 +C98EBDFB006EF8874CC386A0B611389F9CF5204C65AD951306B0E090BB287EF9 +CB7DB38F2A58E2ED6813F2138922E28FA44792E5C57A70C6152B4A6E73462F8C +869886D1E5718C85F1CD5E7EC4BD73C6A4E3218A7118D42CFE42BB83A6B72729 +0E096EA902F81330771203309DEA91A560B56DE63911EBB6147600BB9B6A5166 +A818B7B8CE58279E22D776B2CF423897110CFF24807319C84A2063CA464C7616 +8260B36124AFE08188795E334864712574CC3DE12C3F0962D51734A44289BFE2 +2525F5D641EF82F25C1EAEA56C621525EC86FB6D09D99941D18094B7D77719E0 +3957294DBF2D221A49807B44323098D816A21C8F1BB888BC1075E2D6FD770014 +829050B6F8E297853701C467BFE76C1E52E8AFD5AF67B3FAD5A608C23E925F0A +87E7F56B0D05F4D4276CE619190A983BB19417E280B53060AF777BCEA0D1F4D1 +B803687D9C2050D0B2EBF3EFCB9FE42E02AFFA5233A49D27550BF8B32B1A3A3D +A8F58FC0FEC58439D12CC87CEEBED10BB6D9BE84DDDA7FE7A7283D2639212CEE +2DA539DE06298BF452F896FE103A4BF864E5399C3F220FFFD82AF1975FCFA69B +8C9782842F016682EFAE7269A34FDC5ED188E3E6E24FAA0345D9558B19521D16 +9FB47306CD1D15F36C9386347FCC9906A5420F4F6E030B007DF4D311B8E102DA +A653AB0BA300D9467B092165B016C6F28E8D417E1B93A6A176329A67C5E0FF79 +167F9CD8E2EDD33D5B11348EC7BF4C88C3226377DBA6C4723CBE67A7118F3CBA +34EF78E08A4211C39205325D138840E3F3FAA9CCEE74569B8F59CCE7E7D35D3A +0999DB04EC83483BA245883D764A3CF556949BE4B121C6483ED26D192405EBFF +089A97C4BA9649916F1A922F48CD04B7338EABDAEADAC52F42CF48272EAB9192 +C17906F59CD98D5A54443BD474385AF6B51B9C14EA8AEA27AE3473DC12DE901B +42DC378872B001B2C929C54117E6EDAC6202BF1028AD2793FEA3620935539071 +9BA89FBFB98229EF30B0382D9D603BB451634BFD08901432F16B31C9245D3645 +28456E44DC8B6C9C052B9446107116AFCC2EC0F39F0CC7B5E146FD9E995594A2 +DDDE2BD3DDAE13B9659969623BDE57219731BD3893B63B77D5218B94FF535FAF +2595C30EB0A003B144461C8115C5EC93595B4FAC2BC0D084E326E1F2CD14AC0D +D9B4C1467961E2FFC04BD2DCDC1A16E9582653B1CECD98AEB6ABF1E88086FD2F +347774D628A4E70B6803EA481996C07D6D84661D003CF3C92D32791A06405C2D +BDDED14EA55744AA956D04CADD4B2F5A0FBA5D29CFC84CC54CBCA53B19FBB69B +6199174100938FC1E16E7EC73BF85B058E235E282B17116250CC9965706D80F4 +EAE76E2F7E96E901CE29AFBDE9CF9E19CC2432DE75B4E67DBB7BF62C6A3A0C4A +1800F457B745F18AAAACAB8DEA973869EFED9464631EA2CBE95F78133B4DA06D +394AB1CB50B6EED8E868AEA0EABDB783EFB7F0431A450D9C48492A04BFE3A0A7 +9BFDE3B9DB2235EE46EF0D3E754F95819B6FD407E974856C83228A3C2A076966 +02E3F0F2F27CAE5C820FCF3AC5FF38C715B3DC3CE9AC77FB13382D2B606F469F +768D1B82CE3D66F1AB552902B3BFC8E1B3A5A45D3C3D914D304070AAB6C49393 +028CD984C44C2D8DEDEB61AB45A4B2237A236C0D3088AAC5A7F89EDFF9A09639 +8B1887E2CB29D9E9B5630A45879069E58DA52E5603D026339E637D7B83E6550E +CBD4349FB018A01749E171C987C30F8C36651501653A4421869F04A9B8BF792F +41B8D1E9F9101B658EF726DE26BA616A20A667FE7B571F68FF3BC77B127EF315 +64D1D39C07799B45A40CA2D4FD81633368EC9654282A91B8F38066B3D781E8EF +3DCF9CB050096E84E8DE000568251ADFB56AB4AECF2D29BB47110D277E5A1634 +D2813F9239951645D505C53CA91481C2B0F9DB72CC4C3EBB12D2BEB7B4201C23 +BE8EFE99CCC6A0D520F6282F0876E6A69CF5ED38AAA9066196A9456C5DEC58F3 +341797EFFF3040BB65E2479165581DD67AD36EDF24DA29DE341106F258C5FEA2 +D538201FBB6C0C3A132487E01488FAF2EE5A61E7079547278DFA812C5D822454 +F5B0E67620BEBAED135E63C8A55B29F685CA3CCCCBA06E2AEEECBD92E29B985A +23B93078BF8A6F41125529C1C171D7A8C1AFD9017CC089570E45E873E74D7FEA +7193C263492D4A6E73C65531C324FEA1CF9C4EBB6E501562EAA0EC4DA6C5FF7C +49DAFA4DA93D9F35F06616002A66468D7ABF3B3CAFE293A7CE0D1034B971B063 +EF162C62E480D259E5AD6383DDCCB0F2CE0059E7E04681106CA6378D59F3EEE7 +0AF84F11FCB538E4155CEB05D48678FBADF22F99B9D6589629FAAA181F78BD79 +9D97F53E9FC10919970EF6CECCC6464540FB4A8EAD144B5662A4B0BAD31DEFA4 +9C1F280C18BBB0FB005896075E3F4C52C9F11A2C0DD60CFE581C771A72273053 +796AB48AD2500600E3355CE0C91E26DBF8C135C6B12FB3B2E89B9011CCAA3D2C +AF8E2F38BE8D2BD82966B0037DA0B64A955AFC5181D3F2DA0F4FAE47875B5D3B +ABCF48A2C3D1ADF69F5A3BB51D456B19085363318C3D371221A7319EDA644EA0 +C30EB56AF819CAE5DEA47A7495B463E388562FB76C94621CA7F0DF9FA6C080EC +9F8AFC21AAAEAE2359869EFEFC8BCC433B683EE1DBE927463CEB19CCBE08ACA5 +B925E88AB69BF8EB7A0781F57FADC2111659F9A480B8B4158806CDBFD950C4A7 +0D792235486658CF8A96B0FDA2EE36468788225B794AE541683D2F5568B1239B +2956E585AE96E5C0FEF1D632895B3A0E0FCC57EEDBAF40F395547F77D7F4F6D5 +23066F8B08FD44B1F26E89083C70FF24CE2AA2168AA8B09BDFD763286A243BC3 +0431A22C8CC88A524E2C3DB01F1B65A1540A8C2EF5CEA9303DFC3F3CDB20EA23 +600F870EC83EF9992A976ABA1D086EE4018DD3F7004301A7A431694DAAB46B29 +538000BA28F999C70C3F72C1DB5CD7B1A4FDE6A0A87BA98332EDD260D30CE677 +7176F2FE3D12C3434985AB6CC12AB6BD4872F5376AE6E6CA9C4871007D6DEF15 +6D15C96C0433ACFD3AD8DB22100ED3D696FFA7DEDDA0449A14F435E9868DC2CB +8C1306330A68C38FCC010442A51DDC47BBFC474BCBA5A404A5705A0812B1DDB6 +CDE7EFD4D833C7DB0D4C91561C7369AEF96E849D23FBC55429427FDAF7E2DEFD +18E2BA193293C0BF21F7241626E30573F2BB36C0BDF9A1065B2AE02DCE822156 +0AD58921ED46E65C40FE54C0F9C58AD8531536208F5A6F538836B74090AD8191 +486F29CED44DF9C4A547FDE7C40F833887845BDDCC68D84F2F445CD4D871FE87 +52681595A6D0DC3FE1E2B00C53AD686E866FEFC39F6C7FFCAFF8191C13F7598D +3EBDCD33CA548FE31C67AA26568BE071A4D5750F9246695A4184042DB2FB0680 +C0E1FF57CF2E9E360828CCE1C7F22D5CC921A995DBAE0D2469D4C5147D607923 +455D9390580E120416B814A310E5588A0D54160728CCE53712D266C090F7175D +96725CE1CF85B0E3772347D9DB0CB282F04A2CE1A1358675ADAB4F5504554189 +B141B5FA5BE5D2DD4FD88C91AE99E6504365853F95620C378657DBC98D06A4F0 +38DAC9CB25A11D8A9D224C9CAD1369245B4A8E19AA55523BA8402CF056FA7818 +DA762A53F9A2F02F17E23C97A38C14ECC34B985B1EABF9900698E122F11EB4AA +E5524C3DA713271DAB8969B693A7CBD313F28120C7A68F4B3037AC043C992D7E +F5829F11930CA70B580A161635228ECF20C5BA4D3B1587FD7A1D52C2530FAF7D +C2C9431C7B4521296D391A3436642230E0E5D74E6D5E94277373513DC443B09C +0BC80C1EA1F22A7F2F4CE3627E852B5A636DEC22ECE7FE76F53FFC41AAF1B490 +15E8060C6448F07997AE8D012B640630D72B11D77FBFF41F65B6EE2D70345A6D +E6137355349A55DEA19D1DF5551B54F1E2F57E85568954AF23B2CA6D60859F11 +2BCF6FB935BC106B9BBCD8E8DD551D82C7D348E03B71BD4E052686F1A0D59091 +EE647EC64FBF77F558358129B938993D0F75673B45F41D2EDE54FACD6DDEF68A +A8D55C257CEFC0E0D382C60A73C49DEC67AC68E5066749A1C00AE616A2C71A4E +14A95123F58FB1D940E2A0E51EFA67C2F2BDEFF85376D211DD8F15D43F2CCE7B +47B0CE25CEF1D450EFE17476BC3CFF661C1EFFC82E80E0A69FCCB25F39E51454 +E53912FF49EBFB3CD9593F6FAE81F1F0A9E167282286F8407F9F0023538D75E5 +76171E5A7005F053ECA82809C7073A1A480198BAE0085BA9BD1EF107D4324B24 +F96E24BB4FDD80B195546854618282F770631B5F3FEFDC035E6954AE76304038 +9ED525495644EA353E32F65140DEDEF41CD343B5333954D3A4C413BC3365B0B7 +3ED0DB1A27C60237A0E82407753C1F9817C4A0D7F07D328FE2216B34CB8A233D +FC5A420704C8F1D42B57E69424267E5BFA8C2AE65BA324262DDA2812D893050F +7D50D4487A5BBE53D7CF041DA6EF76A659DE8EE07DE413E940AC2160C994648A +6D0D0A59860B4080977C18CF6540B5F5B3B4DB52EE9CDE105D965E9FE5999208 +02CFC8639767B033A3EBC2C42066F6E7CE3B8D6E2F25030D14957F7FA8E59A7A +5685A8A8479545C373DE7778A5A65D7ED6139A2C8FADBE8AACD08D56C42D11E2 +CF01E2D78D4301556A8D7AFFF7642B10A36E93546EC8B2059870C472F5CD463C +DE1DBB211CFF689095891B9980D9C9438FF7EC687DA72C548502B5EA0FFDFEE8 +D982B934E7A9F4D62428FC6719894C0ED4B0040BBA5D0FCBD0E3D80F2E245513 +4C78489DB71F2EDF17CEF7784370D080B75122290F59D4B4CAA0484A809CAD27 +94FE9EDD79994079695C3DC4440C6B2FE4AB0129F2514EFFD8615425F7E74567 +D93EADD0FB68FD8C6B9E3C1275F4FD32B8CFF3D8D04B185E2D702E46289456E7 +F6A2A0D83DCF29862BD08AD7AF05E3380AEE207F44E5B8C11A89E954AE0BAB81 +C5A8D1449693A0E5AE02D0AC8D1BF1CD96DBA29A747CF41292027ED8C05DD325 +8B92300CFA2FD33F14CEE073F8CA93E33BB952B2E58E666B1E12CB5634136777 +6D155B1855064842120EF87ED8B1CB6C95D74EF97C0B85DE90E266DD14793F70 +27038C774A64E5757DE6FFFDE5CCB2BFA4B771BD7D02FCF0530E0768DB74FA39 +2BE1C80A37A77AAC1B4972AA0335A6E51787781D482D01CCE8CD8FC732BFB1CD +69E5BF80E44F7F484277E5D8B9611B8614ABB9C8865F26DA08108D355EA7B451 +2364F41F4EA9BA074CFD14377B092F4274F18F42B30C83ACFAF87513E8CC9716 +7ADFE45917E3B9D034F4ECE1455318BA74C68CD534B7DA3E3C1C94A10E7F5738 +46EF5ABAA7F58C0CB25A1F78F8FCF83DC2FA4F74B7F01E3141E1886C457FD285 +A44A1A57E968358BC29CAC2BC79CD14FEF92F522C9873ECFE82A01BC4191BAA4 +5D5212A7AFACEF600F738F4E6C691BD5D8D6F494187F43D42B1E876E6B12A02E +8357B376CA901EF9945D7703E28549C291731B78BC185AB2D3EA810CAB3A500E +2D2DF7934A616B3B0705F0928D97A742DB11392C51901CAB772C44113F1A5873 +54C74B49EA48DE55089AFFB75B288185955DFEF25610BEFF0789A40381A1ADFB +95628B44B810062EF1AE97D6101B13B020276040FD886422F69A92254B222986 +500384843D82F4A706D5160CE4E35556253C2B73B539D101F166873974CB1819 +26D751F2E4DDA3D93FC7128C2515A75C676ACCAF8C07E2863951ACED319EB268 +87C5802B7C54317A414BF9DA26EA1B53C5A8A9536F54FBA1699E1FEC82403359 +66741ED2B98756BD5DE594C8CB2E0C24BB372EB2EE6F7910940CE6EE8D2770DE +6343C52B4065B6AC1B3DE9C4575B8061DE6F05961E68FE6527BA66EC51AF4948 +8CEEC967F6E376BAA1DCCC8D50DC72C76DEE3644F890D4DFAD6E4B9115F43F9F +25CB66AE9E46331F5233609A390523BFD6D642F6BEA65B7500C3F7C28D03C2D8 +A3B5C7ACCEB8147C62865F8DD2F844F294E8AA932F5D9482FE0A1461EF74BA57 +BF1848B7CE0CD572A583A6837F9D27B6844E62DB08DF1AC678861485877454E2 +FADCD5C87B57340824621B978982092C1334625551D36494A1E0246336B4104C +B823C8ECEB49EAC4F8360867BA86FA2929918ABFEBC195C559BAF28B2396DE2C +5A550C3A17CDB40C4E2A4683590B0BBE2031F525216083CA6D9DE3247D0B77A7 +7348225427CBD78F4C8DD795D010D66B5D16F513066C021F54DB36BC6902190E +53470B96270C8DCE6AA8F836F926EC56E5A4C69BA37EEAAF22AB1D09860279BF +97935068A4D11319146344CA8CA2B87E81D08345C699A81F0F4BAF56E39969AF +A8094449E595CFFAF5CEC0540940DBBF79273B13D1A884BB2C354509CA95E582 +34284D9EE6992D5F3D2FCC09F99D1B8B31B59E651C17A174D98E2AE214332D44 +9F3769402AE4D2E6707450545C6A5322637648488BDE496DFA32BEBA617BDE88 +D07982B6948B94C91247FAAE6AC69A8727FD4AF3154C5F6B435379119898DC8C +3110AC36907AA6653E28D292D7AFE2C3E54B6D29800BC7176B4F0D00E09904D2 +F5DF5805E4C8E4348F017ACB5C62DD8EE155F56AB87315F95BF1A7AF147B71B6 +AE4952942EE6676E491E9CA622504DCE2ADC678AABB16886ED89B6309EEEEE6E +08D8133000ECFE0BE713E5D144DF17E98DDFC61C688E9A89302773835DDF9254 +A4985D6567AF8DFEB4335E1CD6B9D7DE23B009A7BEEED3BE0D7F77BEFB5BF2A1 +07A44B1F9CEF1EEB6D3F49804D6BC47AE26DF2F878E8ED4861FA691AF085A254 +688418486DAF652BE04054A8A8CE7EB42C5B30146C3ACC47502AD1BFB1A92DEE +B3D317D4D2FB276BF7C4F11678AC10CBB01C3DA178A5C101BA5B995D18136261 +EE1EDCBF883B6BA4335CC33BCBB116EE70B1372E01E64DCFD534672D9C84FBDD +79C8D2BDDE8D5C55F852E41FB5C1076D91B0D5C0E13F70B66904E08243EB3287 +C6257181962EF755E7A603AA23D63BCABF36F18684582182CC20CEA4F1DA0665 +1A8F1A4AF7C09F0351460919B10537E19A0ECA06DD9C00368137115979D3058F +635AEB09C1C561D020B5E19358F216B8D17582A518FDEB4AD7735FFA2C746D5F +163CA092531649865A1DA92CC8FDA32490826FAF4A9BA50653C2C3667F61D880 +D6523745251E5BADE8DB233EF3A62E7C92F21AA31618EB0A08D47F406FC07C54 +FC04404F5BF9DF6D2D53334DC93138323AE39E95F9CB2260995970E173C997B3 +414701687EFD2B2088E50ECBDF14FBCC612AEF323683D2800DC9B9EB054B8CF9 +3295728A29DFA6E22A98540806D6C89C34B188C29723DF52C50BBD4EF02C887B +335A72FCC0F7C358AE98D26FF44F1632CAA1774AE6F8852EE8BC262FF77A2E24 +8B8833B7C9F9C65F94C889A06095776BC75361EA184FB5C5C8BA401A8D2D9771 +D0D71BEADEDFD70EF617B92FE12FEAEAFA5F6013A28DA3C666BEE78D103C8947 +3901E3B368BEE322935020EEE395B9701F65615D510809D8AF431537805E0B5A +908D1B2C659582D0E54294B5BAFDF5FF482712179CE8F6820C3E72A73EE0A4C2 +43F792139AE3F8AB7A8D22A6D4C222B2B63CE37F0431157AD317A63E05067704 +85F00AD9B822B1506DA0551ED23099D53CF6E5127B5AB291B33EFBD26C21E9AA +4096BA233B76B87EEFBBF8721EA8C37B933C5D901C4E451C1B05A5920CDAC618 +F9431CEED497EA77D36CDF497354E158B9016CC888DDE52EF00302C140B29C1E +392F5974EF8EB272C054F3906F5D0B493C2478AEB0A83E469850BF76AE766B4C +884B10B49EDB704B33AA96020522C5218D7258210572E8B274FBB05B51380F5F +DD14C84263128C4D037314263E8B1ED48C816F06B39E32D5A894E114F9B1A2EA +F255A824E41E768E70ABBB14964CA00C9C3EC281D14BCFB681BDC943BCF320C3 +0DB0B18DB7FDE42A3A2DEBF1746BE74E18BC0A8081DFAFDBCD64050ABBBF3A66 +72D0D7CA15E88ADD7F0A1E1F70D397D838AFECE3352FAF0B149D5DA940B518FA +9594FF7171A2A6B77CD9CF96143DF0B708EF569CC135A2240343B3B50633437B +BFCB0416AE4AADA1A480CFC134C1DBB9472279C4966B99B473272AF27150B683 +09C57E73A83E7339B022F0388640EF9561C518AF312EBF0EF120CDFFF9F193AC +FD6FCCCC337922405224C8015431BA7610EDE19CE9176A6C1F552AC7413ABFCF +EAE1FC65D1F56917B125E498E37D2E7AD170F0DB13DFD8D430523B774DF5B2B9 +971F0F78F0931E81A848B1E2D901BA1A011957B56831AA755DE617F8A40B843B +470D96140340CA72B45C2BF0C0CB635A6D7B25A084AAD2830288ACFA119C3AF9 +5ACBEE18F38B244B7FD29210A7BF1D3A5EBD17E2B268C36CF439120B1947EBC2 +CF769AD003B5C178F5FBC3AB5D901682CAF6AEC1D66B3F3DF730C27F09430EF3 +81F32BE8B781338BCA00F8BB26B89804E750BEB587E558F48AE34A0516B1B4F8 +342A97EEE51D352EB39C2819A200790E5BEBBC50EF4FC2DB326FB61F969EC2C0 +98CD4F78F741C11D2744F26B443302392316A5C80A9ED122C7D27C1C89D098E3 +ED365F63F5F2DB3889A4EF86587722E0059123D95D3C471751D8D8E84941BB5A +D14766DF319F648FB6FC6B39E94450BBAD6F83E43B92B72B5D4F6804031782D9 +9E40AAF10A291F048E4A0B6E726B1E81942615DD0A862087048BD3B261E8F8A4 +25D82D60D90E58A9F3C03CCF9593F0A8738F397E058AC523438F58B2AD206B85 +98B61EB8536BDEE0219867CD40F10F622EABC2D52297B257EA0DD929B0BB7938 +158C6A6BA70514C27CAD1F310C493FEFC4EBCA10CE4F77686C374E1125F69855 +9869DB3887046E82DA5EDDBDECABBEF1E050B26A91A6CF23D3F06B4206D5573F +EDC6CB4DA302A355CD3CF80B54B270FA1844FB5DA988D08A754D30CC5F8DB71A +5AFF8F08A67CF1DF916E3370D961EBC802E2AE36B25F0B2BD2F01DDC9D52E45E +18D579D5C4A750F27262D2364A1CB2BB36B116626A9C1B6E35E22E81FF695E1F +713B9461726F5427EBABD116AF543A84981796A6FB49F72BB7AEAB3ED5E771EC +D1823DCED5EE170126069B5369BFBE2C1225EF0E5757B2ECC2360F8EB34EE3F2 +5F39660B7F714A82EFF3A61B7C9D26A32FD4C6EEEFABDB9914BF7DD6FB240198 +81F121394D0C2386738E343645A9CE8585145ED6957EB06466D5037B1FB3210D +CF0E79E0920167C5DBD605FDF8A66F96CE741DA7DD85D629280681BFFCEF027D +C9390E2EE59F24B714AE30A802F112BCA54AB3FCF419F65B4B27CB7A543B55ED +350D9BE596B15AD6F79730DC86D82DD075390869201CD6FA2D22F77FEF7619AE +6FB42C939079757BDD06BE3B8A7CE60AEA6D1B753658F858AA2584D4A4CBAF7F +0D701BBC0379973E5753B848BCB7CF56FF30E5AC9D2E83F33B4D87DA222F1306 +1877A2D810123D951F5CE12B17862EFDD5A86DA3A3987D973F70541D70B0CB3D +0F214AD4B1FFFA21A29E5C7856CE49FA93528E6D53570E3D8D6B17FA27B28AB3 +FD2BBCC63139FD7F86DE6A84A2204CB30FD14080D45EA14EA784A5471ADE8A70 +2864A204F10AA5B2A2C870521B97AD75CE3F6C078F1BACC99BBFC0E2F2387022 +6F72BF44DDB62051E1B81A1419CF2F033B77FE46C2208E7DA22F83392EC97328 +9A5E3DEF8BD6323E16D1D14FCFC890BEFAAC9F879198703CC9FD0FEEAA639EC1 +B787D77B325A213B71ED56F1ED09DAB41AD4F8E314FA8154BAACF480F110B939 +86477401D4ADE8FB386CE8959027A8B91C56C53028C7AD7EEB61DD986D303572 +86324689E1AFF282E10F789421EC2BBFC5637C18936B1F2B4D02C8C8D5039503 +D425992185042BA95E50C1ADD6563F3C661AAAF32E29F9A4BD3ADBA7A55962F9 +ADD1CA560CDF1D0BEF0C57E4EA11587CD17CAB65D9DD830CB738549C6F614612 +FACA8E3031BBF29682324D9E12BD792F9F3A24D7250D2AB55FC984C6CDBE070F +5F6282F51C4DEAD075EFA1820E044174FDBFE9AABB68E6254F4B59E8F442DBCF +D2AE8ED7ACAFDD486DD36530A71F9A0D9FF91B19FAF723B4909C9F99D5CB29F6 +2CB6384D6A3544359AE23E09770F82FF7C9327BD392BD0F6B607897B6D826C50 +B84B2E0722B0E27ADD479E5607B4500B8ED238B99C40B2BB47F02352BDACAD22 +262DBFBD38A9D4D1BAB79053F4F172397F8F7C00CBD37164A0C89B7E31EDB3C2 +25D32798F7F83582CCA56EC0F419316EDB2F3299E40BFFFE63C5C2A0ACDE3C9A +414C2BF9F341F40FD4C8A5B1950EA05A26DD6CE187E181E6AA167F26AF6A4E5D +6E4AE9430E0069749299D2B9D8ED6A3E647BF2707948B8F6D16D4DFBBC71BF61 +5EBDC349EAA9EC847880990795B75B118423D9153B05D5D6BF0D20E909F8B22D +0DC9A8CD8CA5B43D92F4CB54344B375926EEFA5BF058B7BAB54B5C97BD5653FC +F05BB1A5991B068C26B0420DECA3F1943D093997A3A8BB061BB25CFFC0CA1DCD +D85CB203491D176C4C183BB124F22D57678841F08419028F250C30D1237A0213 +E5A392E60B27D2BE5240346B99EAFF9B57F108DA66B6AB826546C6411864F7CD +FE404BEE7D58F28580C448AAB599D12B00A3FDB2BB93737971A5E13FD7CFA970 +656D45145A54DB1BDD0701097445ACF73861FEEB01835F35790E98EF162D5F37 +E1A5617CB2BC22074305FBDC8024E741C7BB0FA0E17F123AF953742E01AF56A0 +AFF35515ED55F9621AAA309D36964B0187F56FE1F02662B7DFD745F2F3BCCC43 +23C8FFD86F382E99DFF681A7D22CD133153C40C3FCBDF86DBED11FD36F9B6B3F +C5FDBEFB72496F3C209BD61EB9558CB2BB1672CAD20F8086DF3492147770C0F5 +95444F8731D0A1F6036C3099DAC1993B2C838794554E8A3B96614090077BAB84 +A5954FF123B90550E1D1A4AB2CA6E8214C473B3CF56746959C062AB6C28EC09B +F22096BF7FB6321338085C726C42745088742C6C55D4EA9854CAA71E7BAFEC70 +A29302F3C909A6E193ACDC6496F7929713DDD1F4B813D73E794377CC0B956B9C +2D07F5AF8C01D7D9F932F114547E4EBB953ADCED8B20E83FF41B1F4FA5A02915 +0C63DC0619BD7E3B5E6FA60157A21794D7299C5774C0FF7D929FE9BC1EABB7F3 +193E83584567271D2123E6B069DC23889B93CBF2ECE77CD8CCD649AE853784CE +A79337DC93FB835373CAB6E183F5CFEDCE41C418E8C0C48D02BDDDC0CD3D3B4B +285195948E36529F28A6F925FDF16248F9331CBF5A08DC0ECDE2C36FB0A0AB89 +2DC0EA84D93C834DDC1BF962D89153901ED7784D9E68BD06357F279CCB7C602B +CCF4F389CD7CB4197D2A9271D65097AC31DC2FFEF76884D0910639237DD0C020 +F0DDBBAD4C2883ED7313DFA0539D989C1FABB6A5ED54FC791B196AFE787363DE +6688123AAD777F27E4DD19C32B7FAFB9E8E0552DE8DA00570B1AC3E8CA4C7866 +6CDE42B4CB89FA30F0AC964EC7F2F77D3F1980313330F26E545BC7A8F5072AA3 +2FB0329361BC8BE2C2B48FD060C89CAED6DD9BF6462BEE5FBA59C569D8EEEEFD +8C1BBEA3B73A537D1256C7D6CC73A9CFA3DDB34252A3A4509536D62802A615DA +4AC07C441743B45A15D85181482717316C5B12F6E52BF9A1C287801F3677CFEA +6B60F505F9234792D6E82DCE04C72C308C0D17B80B14B291AA4B437DB7CE5E35 +436CC41F868ED6162F25BE5C9FE406FE656FAAA39A72CD5DE07569F21C55198E +54678E869AB6959798013ED6CB2D9CAF568F43D2624ED5F602B7F16F9D27C12D +48EE40743E1DA97E6702FC3634CEE0AF9E6FB3C4587346219C4CDC0B6CCF7F99 +E40B48B6C7F5BB21DA0656B683E71A4CC310B001A180D9E00BE05215B170D2B5 +C93C2636B61BA3A840076A5F41B8DB3E0B2A38C3848DB0CCD419E5E14DCD1397 +AD9811172CE82D7CC7D825B6722205E0072FC807FB647E0442333D42CF799579 +C7B7406D147A69C59E03536C8D2EF372AD9C374B977CE1A0784C83073742008E +480EC148196F146C5278FF1EC8252E708B9042389C11547351F093CA8488DC3E +1D5126DF92EB568240BBBDD84B2129B6E8FD6999651566BFB632984240E14F4A +E8F5BC9C04ACFB19B327E5246E5BA5B73A0A308D930A588E57174574ED2FE506 +9512E3CD02D75AFDC1A36BFB585493E4164F3894679FA602BEDD8CE9E821D187 +47CD38794364E336B65126F61CD3CA861F9919F24CDD410E5F03AAFC4E45E30A +486F6CB28CE7A6A2125C55CCCC11BA659E72234CE9D5F6 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY10 +%!PS-AdobeFont-1.1: CMSY10 1.0 +%%CreationDate: 1991 Aug 15 07:20:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 15 /bullet put +dup 102 /braceleft put +dup 103 /braceright put +dup 106 /bar put +readonly def +/FontBBox{-29 -960 1116 775}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A +27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF +5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 +0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 +DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A +71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 +4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C +515DB70A8D4F6146FE068DC1E5DE8BC57030ACE57A0A31C99BEDB251A0ECAD78 +253AB321023D15FF7F55A3CE81514C1E7E76240C1FB36CD4874DDB761CC325F5 +D588700B294849D690F93526EF438A42B9B5B0508584EA3766D35F5B8D51C458 +ECB9FBD23A49576EAB06BACB7EA6D300985500835F4FE597D4A1110C8EABE6FC +CE3E1F95CFD3A42446F25355381D476B2FFB6EF247BF58A6FFC5EC0E4CC207BE +46485F8E07350B37DCA8C1864E62614332A1D3C9DEDDD6492181949A2C3498C9 +EC2A81C1F4FF989A4654E375F509D24D969B97D2A9940FAF43BBB286E08559C0 +F8D9674B0A294B36D3A050F7DED8C80E1D230812F6B8387B17948FD29FF050E2 +AAC5EBE5D96AFD0879534E2F4BB81613A1571750F9CF4215199F93813D815B5D +1C79E11A0FCBB627CDE569F88C741CD502627777BB058ECAC09B6ACCFACA69B9 +8F8168B0B5A1A6EB13E884B348FBB2ACF9EB180F6E27D57F8503710CE037A34A +F8B157201657C825E2A4B4A7696B58B7A988C05E43E66F0FF277A7694C555C54 +AFB1D32F6DE102136FC810E1F3B5CEA42476EAC7AAFB390E3252B2169DCDEE6E +328507BD0E24734A85AAA263E0D2F64BE1607455BC855785BC27F8B30FE917B4 +23AB3C812975355942E955501AF85A3C0CE836911AF679EA44AD6A7D042A6549 +0C471FE294E8490024D93ADCADED460FAB7FBCDC29EFEBD2A9A127E11869E659 +961B29206CE63944B6FA4B9315BCC528EB1E0223CE94C795A5D5231A7FC8545D +6B287B965F8EEDDB67A6774129DD01D5A21694ABE320BB2553043D4C42ACFF91 +1009372CB03381035BEEEEFD05631E026A0980A72A67B3703323A4E7C94FFCEE +8D0B7407F9CCC043D3D184BEA4728385D6AB2FB0641DD8F5BA7E04035D30D628 +7E97D31C1486DFD5B1D076B84B4ABA4829ED4310321F1F24B847C44E00185A69 +37711A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTT10 +%!PS-AdobeFont-1.1: CMTT10 1.00B +%%CreationDate: 1992 Apr 26 10:42:42 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +end readonly def +/FontName /CMTT10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 33 /exclam put +dup 34 /quotedbl put +dup 35 /numbersign put +dup 36 /dollar put +dup 37 /percent put +dup 38 /ampersand put +dup 39 /quoteright put +dup 40 /parenleft put +dup 41 /parenright put +dup 42 /asterisk put +dup 43 /plus put +dup 44 /comma put +dup 45 /hyphen put +dup 46 /period put +dup 47 /slash put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 54 /six put +dup 55 /seven put +dup 56 /eight put +dup 57 /nine put +dup 58 /colon put +dup 59 /semicolon put +dup 60 /less put +dup 61 /equal put +dup 62 /greater put +dup 63 /question put +dup 64 /at put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 74 /J put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 81 /Q put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 88 /X put +dup 89 /Y put +dup 90 /Z put +dup 91 /bracketleft put +dup 92 /backslash put +dup 93 /bracketright put +dup 94 /asciicircum put +dup 95 /underscore put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +dup 123 /braceleft put +dup 124 /bar put +dup 125 /braceright put +dup 126 /asciitilde put +readonly def +/FontBBox{-4 -235 731 800}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 +38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF +D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 +EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 +A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 +F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 +4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA +6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E +A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B +E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F +1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 +452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF +8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 +5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA +DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 +BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 +741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 +E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 +E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 +D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE +C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA +726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227 +CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B +7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7 +7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9 +EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6 +DAD30E2C5061E3747FE536E1A5D190D028F2130AF608F5DDF9DDDF1E77DC8437 +ECB3EC93B33505DF47884DDBD1DC6BBE4098DF04A29AF6FA3AE344600D0AAB53 +B3820DD7ECB600A3B8001C51AF2CA7A39AE1485A087FD1752DF68F55B52B4DA7 +48030F2AA7E570B3D56C4EAD367B9B73FBC0A7356253233006178B9A6BC19081 +B815B5988AE76FE6FAFD7AC239072B1106A3F509381AAEE79B2F2154CAC4727B +D199CDC8B4D05DF4BA006982512ABD7539E28D937B0F87FF79A3F84C29ECF943 +A8DCB8BDF8EA9E7A0E7CD60BC2308C96B3E889C797D0FF28FF4847016B3DA141 +E76FC6BE78A6EE9CE07E651FF86E720A1A1F075972D36E5C55162E3FE26BCE3A +814BFEB12D4C5FD24340CFFED499C7CA183E57EC4F12CFFBE3291D43F7270575 +C6C3306F832EF182ADD0AA14C4D8669A17C09F632406AFA195F90C4DDC39779E +EC0A77E590211592D6EE19563963225C06C2F13265EBB5A6CFB7C17D9E77650D +11958305727AF662AE73AD0E3ED5F7E7086C5A0C3548A8129575980B06C715AF +DD55C8DF869BED0A7883491030B1A7E82C5EB04E5A7D952E716DD8F2EF6275EE +087614CFAB55FCE2BBECD7E8D9C90FD8359E929D5E0A416A23BD58158318B4FF +87B095EB63F7F052B3A77F136FD66EB2C52BD46CD7DB3091A4B78A607112B12C +4D171B2A00B78B0E1C44B0D90C20D9244281F5123DC1F6063F91E9E3E48DE78B +C862D848BAD073A4FCB5EEC9FF54B5AB8E234CCC3C7439C62ABC4A13EF1B8897 +ABBF21F900C564C9A305FC36FC7224932F766E6E72C2EBB55953DFE2AFC2E3FD +33A0C6F0FDFF086E9FD796E7242596AE85B877223532667625E371D2156E4C04 +0D7FFCD3337B93DF066CB6FE1E13960719EB7CB409EE805C08ACD2C06303ED9C +E34C898787A43C1B428B896551C6FEB50A831C6F8CE2073EFC662EC286CB7555 +A3B42E58772E82FEE206948B8C439FEC5E4ECB9E11DC3A4CBC7611E30890E408 +637A01A2118441B4F9467A98BB2A1B03BB2F5D8E3DB7D1D15C188D9E856088EC +B762F07B1C06024F7EF53A2FBD60C0A1F4C0275D07164545250ECEEF8CB15B04 +A2D8AC44DDE818C4E3CBD2A5FA0FE49750886CD7CFAAF8B780255F89DF7F4F5C +BB594FE7C1597DA71813C2952AD3E811524459EB71D29696B450C924B6A5C843 +8F36A0F1D7DFE796FB9564333666D74AE614D0D698FAFF20F83C86524C894BB0 +272221C060544F3B653CB0E4E4F82B20D7530B3806E6A5830852C58070177815 +E287C847F19F64E854F1463C23DDD80093D6FEB8BAA22C5F05C21F99FBA7193A +EB7CD49CFDF4308C6C68CC955A45FCFB54FCADA9A3BFBDE086B057DE88BE335D +280F5338D7E66AD39FD08F9B55884F1F377FB6869FBABE3EAA4B7ACCD85BE672 +724B4B8F236B0889B6E7049CBA558A89F17863E82DF145DB8C7ED1F36332DE23 +3C0053B74E850FA14F9EC9EFC23AF18E153CC96FB0FFD910347370E57F0D81E9 +4A83E2D189EE5635E85A2BEAB5B1CB974546BFB2FC2ABA1E15DC0EC1BB3AF1DB +B2F93538B92F504CBD7AAFE36F5F3AD45EB16378F169B17869FE81464CB826CB +400D2F5441A496B6C60A4F15FD20ECCAC1F8F91015E7E1C1A10B7992A1554E52 +9FBEE905A3005336E49CB04BA7223F1674C0BBDFA06ACA34F7BFDA56906E04A7 +4DD79EC7E79B021A5008F3B1E04712D689366F520B0FA66A558F957011992728 +561BF4B75C2BE07C4024C172085E51CCC5CFA439F570297154CDDBB3AA25CD6A +3004B936488851BA1E814260C06CD5479DCAB1A6AE21A5F4563024F973D738B4 +0DDB6C6DD2E3AC21B4F6D95CF9AACA782919F5D3E613D61F3224A982AF485C8D +EA0037410EB70AB7D3EC174C6D5DE5C9C5A1220EF7C2B74499ADCEEFF077D1D3 +50C1124535F88C3C3F66477E42F1932665AD323E06B398D2805B9CEA632F5B1E +50FA587B102A35E2F15EC22DD66E4DF06A3F4BB717A3ED7FBBE2458EB4D896DD +AF00D1BC71FE1CCA27890ECBF9F0AF01D3E65CAA29427FAF06B3BE1E640522E0 +73B213D04491B93DB29113EF72211E31F4C5A7FD58451946CFC15FD805112FE2 +547D1131A46710DFB75659A33695FFAF3CDD40AE5260AD6766DA81DAB0A6E96B +E89D57AAEF32B5EDBBE9F7CC033BB2595CA3FEDA2ABAC8E5395EBC35BC112FE9 +67EAF1F123228538091483050847F8FB5194203609502D3A09CDE811EADC18B9 +F039593782C27EFA7697182D6367E88E326AD5622C5A457FE2644FEADA88615D +9DE3E483BFD9329667953CDB86F9D2F0D4F02DAB8A98FDEB1D17CAAED9B6E2E6 +0C55C1FEE25AB98FF59FC235876029CE03E4A713B75B3163BE3B2DC0D4472DBC +473E10400C0F57E627AE97FD0C1CB0F78FD8E2FA831A3D2B1C2BB3F2D4E812A4 +194C8732B0C525361DC8480CB27C30CD4DCFF01318D2EB4F5234B4A42EA8C23E +7B3EECA41B8E4F54D5458B37EF0FB2F49EB19F4EA8AD2B53820FA36E93DD309E +48847F5C01B1118ECE7D0186E6B8953344EB775D655AAAD7BCDA642EA2E39A15 +855C027CBC0E3FA752900EEB464E2D39404D1B85072B40834748C6F9C74C5B6C +3CEDE988343FD984CFE4B856A481E60E2E65D3BB41BAF2FA80AC0BFE381071C4 +573C6ED65C524FF777F34D82E9661E4A75E3878CC77BC59218244612219C5A92 +E95B90EC2C38614665550026F1730D11162F19D841681C04C401E102C047541B +97B9264D86F47E25A347696AE5EF0FF3ECD9BA32C92901DEDD816F7D73ED1216 +0A98771892472CD625A8F7F19DEFCF5CA2AE57F8AD3898F2C1005B187DEC6F2A +A31C32720EBC934178E0E9979013B3C9AEDA4051DF63D8C903A399DC88F83DCB +A73F1B2083819D1BBEA5235F8FE1D098F32A2BA6274424A99A4975FE4BFD59AD +79B40A8003CC0AA728EA79D6BDCBBD73DF45B7918BC099C5BE4A068BF64A30B1 +C39442CED98AAE1BD495F6CA32D564A72E3BF753B49E4178927E4BBC0F06048F +96DE7C30AF580B0BFFDB330B3B87D7F6532A24F403680BD9F15E758CDF04EB94 +E83C7E644FDE5BEE7CE73EFAC75669E41BDFB20A5B8ADE1137378DD8102A0DBE +19499A623770417CBF5211395A6BA9F4490F4707A46F1F9B3FBE642DEA0CA053 +9ABC307B1E71DC2B069DDDBB4EAE378BCC75AD61DA900AF8BA6DF0E27A8D2258 +DC80205305AB6ABFE3726703E60869BFAFF1874F3C0E05FAD9C05D7D89ECECA9 +DD2AF5F777D7514208697E712B52448B364D3ECEFD8127043DDC9D0757B7CC37 +5CDE8001D007A6E961EA24D7FFC92410F3B13A32946F12A50DFFA256249BC8D7 +C1842FB84AD51B41008EC4604F6B70990510EE13E6DA34F864A572D99A13FFC7 +3609EF2BB1FCDEDF37A6018248C545E086EAD1BA1143E74AC60B684E755E59E7 +36557B915F92EF78FC177621D49F777A2AF39F3C2AA6EC74750AAAE08BCC21CA +A71CCDC91DD45E6050D83ABA49ECE425B55EEE137C55619037F1C30530BD0A6E +CD2004B6A040405064D7E87C55536680364E09248BFAA3FDF95CDA0708E55F4C +F7D0A92A93DEE0C7B69638F171B28B7F854CCC6EBC6AEE14864BF5144EA36D46 +A9C297225AB0325E28EF6BD06D7E40E3A724EA1E50C4C6163B195CFFD5DD291D +D7BBE9AF4324A69394117EFD62F08D6BA6A8F0AC3E2353492999AF28FBA758C3 +A50B6840CC72054355E6CBDBD86F683537A4115049BC1616BA35C2B0B6F5CC32 +3F6831DE4E6029310738DE23D36D2C6E82F04EB675FB89789F74AFE3B8854250 +51812FBEFBCF162947554324FADAB765C74B6DA89F60A734076D44BBE45263B1 +3FEFEEA90EC7948F23F34D4049087AF6563692417DDBCDD5A9552A373C2528F8 +0318D3C0669279F292127CBA40B0ABE08A1476BC9EBFA8BD5D622BC5CE7DBA20 +C689BDAF50D5B1EAA89E296787CC53845DB2BA54FDE363DCC98A7BA256663869 +E9E02E09077884DF1A2A41AA698B7EDE8DAFA621B552DDA91AD1E671D636FB36 +91C62B4D2D4112F2C169E0023EB7521F570CECC54ECA5EBA462049AABBE2ADEF +E3234BFD71B26DFDD9D34DFA69E5E80FD90406E6505A6798F030A4B5172A7BC2 +C9B765A86ED55C0590E0432719BCD7BDE7CCC7F6B33BD467063D886276C8879D +E04897A4623111C14A1EDBBF69E2FEDDFEAEB2A785C6D2F0711DF4B93AAA291E +7F4E0CF9CC3FF0D31953C594DAD014097DA02CBD5AE8828C7E7B5BDA09188B05 +0D7263F164E1E78CC430ACAD1E8FA71001E9BCEFAE47C79846916A5F819CA366 +5734089BCDD458CA1A9E8E17BFF357A91F9A7A8A6E1DEFB121353AA80F1906A5 +AF7CD2E59EE6776FC0DA6574DA0DE522918CAC4E566F13FB9B64EFE79F3A3BC0 +689E3B0676741C90FF3BF85C7A0FA9716F4ED0E329512B66BFB8AEB56C3DD6B2 +24F8D6E23751A8485F7EB46719E9D22618FEE86D5E01ECCF4C6E74368A8E9B49 +245D80E7484DFBC916FB2447852B36EF3F99A82B6C106F786707D7689DCD7AEC +A0C51AC1A3F67034C16B74994403FAE7743BF02149BEBEF554814BEF31B79184 +3FAB4D2C887E1BEE81B465D12DCDDAD03DE5ABE9E763C440B2CFD42FD16D96EB +C21FE788C8C2688F79F148AA7090BE64B0EA710D376222FD1590301BA9A2E715 +D33B8C1D95F2589AB0EE476F7046537E27DBBCDADEA1E7357C9D7FA92C2F93A6 +7BDDF58A44966590821023380C97CDE37EF6D449E35EF32BCA6E69DC8458511E +8DC8AB63171A6018AC9A334829E5978484C4C6E917A5F1C254E6669F4037C691 +36980250A80673E0F18C9E0FBA1E5CCA3BE30B8E7B7188062B25F8E1E16528A2 +F217C18D6A1955482E5463FBF097ABAF7314E449C6FEE56E2695407A8AA9648C +61AC2BF3B2D9CB6317A9B16CE931D318C8BC9676CD908505568C197D90C2BB46 +06431C999EB68C8216409E4CABACB2BB34A05B697B9DD1E91471A404B4969519 +E25209EF4EDD420944BED17B18DB3566FCB8059699FE416789191EC2B35086AA +2E10C139E3C9FA0A535DEE9255A867A26656213E85851DE5F51F9780D3A6E572 +F1F5CE64DA176CA810799DC1C60A8FD2A5ED42E613021A19928EC4572059B2C1 +EE441E79CDF7DD4AF7B6E3D3230419ACAED329388044B107DCB4DE91B71EB838 +904B1F969738BBDA064FFE75C6623639BE9924602DDF0C166B433B9D54ACDA5E +018680477FB8F10621FF32319E58DB672D744959A33E7314A1B3CDE0C038F7D6 +0C8A195AF191E36B0325334A711CD8E25D9C1D257E46A734779E486567481108 +E0281DE96907D460546578DE83A0A01A9ABF64402B48DEF739F4308E14145753 +719CEF720FE5CF8DAD7845E74D502B69DC18D172C3A27411259B8042F3FF82C3 +B157BE242C351830255CF0EDA96577375A70657BD9A2E9FFC54AF0AE563D73F2 +E510279FEF48D79F5F7745DBB492F1D74DA738E6A4FE4364799B5BEC93B4CAF6 +B06B9B8C8D164F8FA1FBBA693204064F2C1806C39910910E02ECA8D092558CB8 +33338B359D56483B7B99A1D8137204EC1AE70ED3D75881FC3B00BB9349AD934C +81A9F285312FDDC77FA923B18B1873D288C2AAF2E6D0AF90BF25A982B843789D +5662D6A2DD58E065026885601ABED4B09CAAA3116DEE6B430B15BE0A121FC1BB +FDEA5A501F0798CFFFFEAB5101E707F1A00C8E014A3561FD39972EA9AB108EBB +960AEA7FF60C301AD6CBFCAA7D35CBF6F8462A4D76C4FBA6F3DF6BB762DF7900 +9F69529AB4EAF96C2866444B257160E8822533A7A1240C83EC18C364F577407B +4CB314678D2511735308A1660AD94B8B818CEA4A3DC00C5A1C978F8BB4E0491C +49328F6CDF95BF620AE53056364423841D84418B23C2A447B0CCF8D8633FE2E8 +4A4AC1C6C74627EECDC994059F1BAE9E6B10FA80D767B3FE97BFFAD413DCB0A8 +495039744B48266278194D60422D6E7C74D0DB45ACF217797D0C0678EEB60759 +6231438CFEFB346553A7A447B50807EBB6E885B5A49CA9A350EC4A8C76EDFBB3 +A4DA1C9E3EFA193CDF08553302998F20055C84420A4C5252F764CC4B7A4BEF6A +A09170EC417B296DD9E2301CD8EABE4A087E648E0525A9FFAF26374C47FDC123 +82F18C9884843864F418ACB08041E7896FDD395225532460A8194A8DB4DBD824 +1C68C6665F85059E365EC0972EC6465E2D8867449907DA6692A021F026F437BD +D02654BC11381BB6557663E0B0B8C4F2FF69E4776F4EABA69311BC1AF8155F7D +6D3A418BDC912CC7CF1A4BBC8A1376D8B4DEEB6585416959BCA4AA08D4520C33 +EB054DE53140992D0707210593BE62B3659E3E493C4562C2E99CECA143791DAC +679896BCDA0699E405957E17DDBD243E65CDD7C9C8629F29A2078658746A7779 +0F75BE24E2DDBB672B95F26366BAF036B3C23BE4132D7362E76D4183A469E0F7 +29174711ECAF4FD9A923E72FE58DF2854C5537E3626317D471D1E8A922C9BBA4 +CE9163A4086AC4A231C2BF35FBC39A5BBCFE41843CAC7D81A054509D31572BE1 +596E0B0B563DF2BF0E57DB4943DAEE35CA26C8433FEE4FC61145C77F65DADE75 +62DA18DFABC7F4194906F53884E62E77D8AB3E099776AB93B2B4D0C98FA44C71 +597202A2643942795EE8CE098FE26F1AF8134F1E75FAE18D563B1FF43A511C9E +EAFB9EFCF61490A1A4FD2CF354927B72C5EDD5D62B2F3F5006D6130562A13BCB +1B988A994A8D68B051A5A821CCD5D0F8D9D49FE7CD04EECCFD7A554CCDFFD77E +27AC4AB5BF9FE40F90EBD066C483796CE1A364E95C5E0CF2154834760522F128 +B2DBD1F4F73347D42635B2875A23597C35A0823CC6F71E49598125411BC9B2C2 +72470D36DD967C947AFB031BFCF770FE50551A134DF8C5D1AB1F09819569A57E +E23D4E87C0B52CD02B0A2E3FAA7D27A94359E82AF047756BB769BC5950A75207 +78ABD49D174F2F69810AFFA9336A52D6B93B004DCA5CDE58475C0210E0BA1D20 +FD4FFD6838EC56A0922472D4C4EE0CC481574BC30618179E733EA40A48847E14 +A75BE7717CC5DDCB5B0718074EAB6FF07CFFE794D335B3A13EB968EA8FC5B08A +13B38AD1C2C964E4B07E90B9732C458216B028E07DD593A5B767A2B415EFE7DA +951FC07800F11C7E2EF9BDD152BC6815B7F32117F49FE08BD79BEB949003512A +327F3F8FAE1767E7842348BA4373649F1A21DB2C56C081BCF9FA4EA86C8DFF00 +FF45C4F1386CF8C2C4120F3F6019CEBB639F2D272D08C1763A470D4BF6330DC8 +43C069A6333113C3A0C93471486EFE9BFC02B760C7CBB2E9156087D09EE8A178 +5EF50B34994094C3F0015EA2ADB6C920F4302FDEF128711994875551C4E883E2 +DDEFFAAE11F2234AFDD96400BB69C1B4E6EFD75734C586A10A54A98E7D790F28 +DEF7C7DF61FB23BF91AA700AE585EBDE74E215DA49F4ED466F46129022722086 +8884D8E026F35C4BEE7E866DF8E0846D5EC3534069B713FAB02D4B4EE3B44E1B +656F30D629D40AA1337786C1FDA08EA1217AFA4A6E2498B334DAB5461A70DFBB +5AA5686C89FFA4EE82D81CE2B28334DC5C032487CCE998616F48150BA1281911 +076E626E5BFCC56A0A4CDC559F878F14C2BD7A5148C1D8CC303FF9EC473354D2 +D4FB0F0F2AD0CF182A28074ED6552E179222570DE0E0D44E8FF4DB36C3AD6487 +C4BA53C8548714A69FCF8E3E5202F09469D7447C6519AE902C1D611A720BAFB5 +59E27A6DBA73624F44B4ABE0988BA3450F82E03521CCE8EDE8BE7EE1223B575A +DF9A52650E85545525E6F121FF2D1531F156EA9D5594239AEA2CD09EE28ACB15 +A445E11FD1C031188DB61881F474D49425C084489A88A47D681EA68E7FC4B1F9 +DBB552063A02A0EB51125E9B2CC646B940D46FF457415F9565892DEAC030F08B +E4C10DC38D825C7597394C844CB863CE6C843F67F2E1C42C4EF86AC7FB727BF0 +224B5E91BAD99CC6638AB2C64469A81D8B1789981872ED037B3A34BDF3130137 +80FE80FDA65EFBC11A08B98A1AE595F980B577E22D3CB7FED1D4016F5290ADF5 +47D7D9BAFE39F294582F2C084003E9C83FDB9EBC87C8B477CB8BB359EDD9BBC9 +9368D6605E1468A20909831BF602EFCEC0D5EBA99A2223E5A269275C8B221B3A +F9226654185929F794E1979ED18B4CD36152F973433AC67BE24B9D953254FBBD +B644CDF3BF0E29A2C72113DC486E46DED2CE8F8DFA8B0F8478D1F18C9AA8E054 +A31C3DBE84ECEDD85DF6AF9467AC2990ECAA3384FBCA1BBE598AA0D6813C859E +1520B88BF30ADA910A6AC3068A5B8CFD76B7F0F6F4AF4C32450D628B5320C384 +F23A2B5E8756895584155226A30F8B0437E028978491DCD00E79C0ED58DF261E +79B9DA17E57AEE03EE92102EAB2D63E69A88EE0B1E2087ED0C0CF6475EBDC3BE +0324D1FC8F7B90D8D807533E5436F2C2583B9629EC390403437FDAC908557894 +03054A6DD6A3586043A9C8BFD0C7EDE1229DBB9F69F7A5D20F55664D061F6517 +0051C6B3CD7338241FB403F2AF77DAB1A8EBE1650156D40863EC1957372BFDEA +BA8D0BB1193CC5BEB5A68C8274802E14FFA3ADCEBE19070325B1BDB960CF2988 +C0F5A9BFD843C515ADEC8B8AB02B2891EDD7502D9F28F4E58D8F67D1ACAFD0C3 +3531E0C7D1554344CCF90AC8696E83A3F968252981CAC09653956F4343B99D3D +4F17CB8BBE4506B354439B70F2024871D16668F9DECD8EDB872BE5E6ACC406F1 +1DF4E3ADF60EFED57D1C426292970199BB663405236C6A907B6891C6190E87F2 +78D9142220FF295C7BF44AF61470798FB8CFBEE6973C69DA1CC24ECB058AA753 +DDBFD92FBB15560EA19D5D92F0005B74F06F0EA5901D231996E0866389DCA433 +E62BE48479687084C1D67BC592E592939F806FA8BF5F0D3F644B1FA6F056DE0D +51D3F212C6818CB6166317058C2A0C07AE2E324CD90D4EC83CF4819B10CC348C +6DBABA024A5FCDAE6E288F82DA060BCD16437F07DCA43BF1E5A1B402F16C78FC +075BEE900B4021A1019C4A5ADC33230047FF11FDE8FB775DDA267040A22B4E5D +6012F7E72B8BC8DD3A81369A08FB81C6C4873C2147D03D4181D6D8032DD2B610 +9C44CAB50C5BD8F489EBF01C72D4198B66EEA4E976462F8874143640B82AE57C +A51EDEDE75A9A55D31587C14F8DEFFE69F75EA7B95BF725CE9991FB2F07AF568 +5AFEB39447B728B99BE0502BF28DE1D92B15926BE4E3DA2E7BB44A24836A97C6 +EE3A2080E01DC6514180DAF9C055F4C94929D34F193920020505E62804461630 +9F42C652F9D5681C91BE23DCB0C634247E739135F925EF3D5424767D5F5C5879 +C46F2E32C7B3BE9E90FD6ABE693A6016AB77670129B58B8FE719FA97FE320842 +6488CB85B6BCC0012975D22E75A2E086131DE676AB825A386C086FBE1B65DDDD +A19F06AA4C1D3EC84751C649F4A62CFDC48A7CF88CFEC68B959C211B60DCB045 +6BFF922FD7349B98E1769394E6CEA4F764AC4B6536AAE4E6BE69099A39A6A33C +97671C3AB4E7A94DCB829FBA97DFE5F71B1728FC81F826699DFDB0ACE9BC60E0 +6EC15D35EC479F3F53EE4D0398BAC138FED504A84A13B78568E3F9C86BAE8B88 +61830A80F8B994D0D66A8FA3FCD6C5099C29FC285ABF096EF9A3BFDBB522157C +DCE9F0D6AAFB1F8D7B0A3C573D0C170357175DD56EAF37BAAEF4C92FBE17E26C +7D2BDAACB9B8F33D09651FBE0D49A8BE66B78D075485BCD38DED5056FCE48A12 +D28E9670EC7CF4E9A277D6ABC2F7AB30BFF290B5452582F372FC9DE6CEA9EC0B +84328269F14FE7F47620B1042B283C54161AFCF84B46E6B1410587295E4F8958 +C1800F120B59639C85D46D46A4C64309931A8C91F138EB52F779189EF75B9157 +D624045F4B8846856ADF0AD735FC6FA41F7B6C002E9D1EBD92468E86C843AFB7 +4D78E3D54D866029DE5DF865EE3F7313AC358EDA70A792E22F2F806EF86A6B57 +64AAD565C57E64B1A6635B7394B4B5729189319FCAC8529ADE30633B9BDEE0D2 +AF1F8944EFDC7C408FD8FC270822CC01E7BA355C856219B3AC5D05CA37EB0EF1 +6766D62383AEDDA1F7CDAD1DF0172E766BB46C5FCCDDD61BB019D283EDEF312A +B2DBA38C9BB0928FB93F50E8516AB353BE04403D132805B5AAAA17163AB9C847 +F1B54946B0775FD21325C82E4EC7F2186C54B4396BC4B0B913A59E4444D11B39 +8AB56F2FD5788A9BA45DA5499A50BA74D28707F62086907BF8342E0C753A31A8 +DE293B592F51D74DECA52858CCF76C69BAF2224F640069BEF2604983FB478173 +792D68030D7A6E3FE083AFFE9488D872897ABFC88CA8BFE484A75201D73058D4 +72A8A26A50BA1F2B50CBF98D46DFED0BA057619BF370E435A0400147928D7C06 +28DF2A03527E3BE925D6A664E4640E63BD22D54A038D934B3DB5B500E075B8AB +06DB5279274E65FF870F1E5106E190AB0FD8849EEE2D605FD4F0DED2C3F86831 +4EECBFAAD8B2A895F08DBA692A8176F9080045519CC6C46B52F0F31DF112AD79 +8E46B9899C5527A011AB63FA443ACE90F09434C295A5D9E6753AF2645407488E +D29E7711546F87265C130B76B4632242E43962A5C886D4DB6316A2F3420FCAEA +3055AB5A9E1325EA870CE87F34BB2B3110E4919E1AFEE67606B00B03DD6824F0 +20BA42968B81DAE198C88057438E36056D46C550E3E5E03A99BD4B07E66A2179 +BBC5B3FB06D5D72022C53A3F3A1B759472D5A50D7F7A1F4E31D3F7A30EDC1D45 +4B00AEB5DF680145A123CCA3BBD801CA64B2CBEEA99842720F8DCE432909AE78 +5AD3F29AC69D302C62256CC4D47AC92EE11D2A3E1C666CEA24876491BB167548 +9E3A990252DF8254CB5E7141F57B78FD1FEB38BE135815C6FC86EF81B5994711 +E43083C3234C55DAD97CCCE4FF3F55C5A6C22ADD2C549513A465CFA3D8A9AEB6 +331374DC05A4F496BE33F9263172FB6FE1CCD19EE9515C5155ABECA9492DC743 +BE4142D63FB5E17D55C9FE642F07995502AECD9D555603D15B5BE420A65A6E98 +4F341BA13E44DBBC1DC8CF0D561198A2B40FAF35F7ED5FEB4429BF71F5C88637 +CB114F1377FD3227EDF592733EC68F4EFEAB14FE7C26DA7031075E04289FA6DC +8A79F81E4E18CAE8380CC585E7DA3DCDA3FCB53929AA8D772D53FC6D821EBB14 +EB472017FB56CE9410FEEFF14EA69C188993922DAFEC805F4C8028537A9D6365 +AE1A6BEF37CE8E02B995C41382984802AD3D12AA9FAA36837F9F9F8F60D16B81 +474238F136F442CA9B14620F83E4046E41EB0FD02BD04DA7863DF26624B5489A +B8BA35B0B3A8D128FA10E01DC9B622C26CC57CA79CCDEEB7E174698EFDCC0CBE +879AE1434B3EC5AF48E6C2EC5652DEFE0ECD7415FA46BC0C80FCC57CC808B3DE +CBE4CC7B62AD3B092487F7A23C38A2D9102DEBB1CF4C1EE7FEDE1E8BBCDF7F73 +54CAB1E591F9B3B3159D879A9492394B32F2CC43EE7EBA6E293AF12D7FC4ADF4 +DAF8F2F48A777E927A915DE1FD9125B52D406BACB0BEA149F6F6D79D92D06413 +5D68461A772D531F2E76D1947D2ED5BFFCD758E062B5435BFD180F7E3734D5DD +ABD86A1C2BA643955A36C482BEBAC608F588C43E6EA7EA2AE01D0346D28F50CD +BA8F9FD23674AB19A2B879E0DD19029EAC5D74D16B186CF4BE3382E74E361427 +536A00347E536701808C1D31A617D1F9269110B76A0D59C7B84D98C8FE308733 +C9497B807A77D244FEE03ED7FB5EB4D6ABB74A7129F23AF628BC01BEC6C43ED2 +D62F4E2133006FDB94D33CD31F9FFE57C8C9E31DC6D7A81A2C6ABF1D971EE222 +96A4D79F7232190EB796A43ECEB88F1C64A88A10C3AE8E98711EFDF984BF270B +55C5B9082D54DA7D32B168CE573597DC5A453D76953DBDDDBC1798F8A645AEB3 +78B6B5BAF60C9AFA9D5F818740EDAA977EBEA0F68E531550E607E6FCB04F3E22 +BC9D6440E1E153C8D780213DAB08CF8CFEB03018942AF980642745D711C7DB1D +BEFD825627798897ED8185D80234B6C087FBB602ADB1263C2A2A0F59AFCA7B09 +EA4ED3BCF936C2DAEA9C8DDAA90130C24AD1A1BA47711CC760FF72EB3F27C165 +CA1FDCF1250C6CA4A788AAEEE08902AB4EB03C6EDF281CA2F5B074C859DE3963 +27F7CFC53CC91C80F779ABB25F7A6601453DF5606B72EC562F615A92C1DCED58 +3911BE7784B6E8B17F8993E4D5693A327F9C289701F39ADCF583BB4EFDE1F835 +1A59BBC2E6B73CF422D877B0B423E4E8FD116F5C66A4BEB706A3D42E7EFBB5E5 +E73CD03D7A91719337CC8E13F9D8DA255185FBE3F4FB6DBE8EA90AF036A09BE3 +5047B59BC18C1C3658ACE003B6535E42043E4D7E6D79E0B48B3D0DCA36C046D1 +D5ACE0B6F91CB78BCBD144F3FAA3D9D711C9D11EC30B6CCDBF43CD490E9AC229 +9ED2CFAC4F53927040CC8FD26004450889A1167FA34247B7C283A46E4C0A8C20 +AB43314A34EF0BC02C5558746D35F2315624FB9D4A8ED13E3D1A8B80B872798E +CCB9775F985E31E8228B03949B4E35DCF7A41C834E53CE3C163EEECE81A8278C +FEA3A9E3264627D33738170C12F4EB23EF8F00811723FA4FE56A0EFE8ED5EBE4 +90455B690EAE1E8F1092C1AAC07FC418A6790C2DDA6DF739B9B586B68263EB63 +718EAD2B11037C5D26FF31FB2E56AB82773921B00EF07DECAEE2A8FD71AB232C +86865012F1FCC80CBDC4B0E881819601CE2FC5AC36875F2FB5C088436BB11159 +813020F0433EDF6D96FD162F5E3241F88BA7025F2B010208DD1DF737FFF1185B +812864C3049CE325E06610404C8DE9322187DAA7FD90FFDF2DF3C86D94E8E792 +377C1C1F10FDC78E1FDEAF718A2857C4922FA300C8D3FAC136BA2957C675FBDD +21E3A9E29C797142BA6D30FABB0D5E97AABB49D113A55C4838B253AB8D7443E7 +15596B3BDF01C88C17135A74AF78551CEB6B0041BD17ECAF89321E6948E1C531 +B227A1F071FC3558501BFFC842A4F8B80C14D9213E0633485A66F899BCB473D7 +3C72329610575B6279C781714761468C785E426DC9393564979B1D6A6D55AE9B +4954010208883EC964F35E8363129682AAFA2D40E1ED08A4A1DF27F3DB5474E2 +92B917B45D9473AC94EE40662DF06AC9D004541B6F88DF5AA4A36756620CBE83 +1254ED1C3C9CA39B09E0D4148DA552B00FC60FF68E7159F556998EB8A66C8EC3 +3B7842ACEE888BCBD1FA183BAB95B06B245ACEA49F8CC51A2EB01053E99E9A87 +A5198C2FC26E270961FFF61A093A084594E6C0298CF96B251C5F8395ACDA26FC +461E6DB774F6220F8FA04C68519E19CF69EFA73E9A1BDFFE833B228DC19571BA +34B7AC21EB2BF8B1876BD11E128F002AC9AD6A9785CBBFE2D5FBAC307BE7CE5B +DDA7C12820028FBDBEF1343638CE166E43B95E6518A83828AA3C3628779FB2E4 +CE32DED584715FD18C95D38FA85772DC8650EFC42F980A1ADC012ACD93B7E1E5 +FA6453179ADC6F17C94FEA1F4CC2EF6A2A975C687ED81DEB7111F0897742B373 +30720766409C534C5E0A42D7221337FF3C4C59BBD239518F3976DC55FDBB8C1C +8DB9CB4B05B1D9AFBAF0FA1D82B1564AD7FC92B6CB3582F7DA309403EB78916B +BFDC6F918E26A39755E5AD6394D985C92F7927FB1287FAFF2F60248236F918DC +2E8557C6805B01090A037E8D5C529E2D70976A9CBF3785F4BAFAF9923DB40756 +7B6CE8EE83559893E3930790E5917EC3421FEB042C0CBF6CE74F16C44FA08025 +82EDA0833C0486CDA66ACB450094BB65F54C83829B47DAAAC9E4CF115FC275C8 +6BE583008180F2E2C9B003712ECE32333199BBF9772A471EADE59355FF264DD7 +ADFD42FECCD00892FB545DFE555AAA4B273B82BD2740CB8C9ACD144DEEA94188 +D1AFEDFA1FC63557F9E527C00AE7D14762FEC2814487CB60E406F8D4A47365B1 +F7B0E0A56CEF011CC11345674611EBFB5A7C587C34F786498FEE4F0F999AF42F +D955CF2ECC5B64BB1C100310DE5B6C7D106A80FA4ACE0184A6E18FAC544EEDCF +307334E1C2A0CB6E488B21DA3BDDC5B593D5ABD6006D1E2BB56336EA88D56DAA +62DAFDDC379B06EF80E9F3661C6B7AA6787ADD06155F3DBCABAB6BA3A46C9047 +5D295774447BC007D5423B9840E2ABACB5B811B30ABFF547A8A6E2C18A92DEF5 +D30890D49388E80E6EC7626FE3236AABBF64B21E5525FFB7C802511129EBFAD3 +D1E19814500A465DA92054F93FF77864698288510AB599237D0DBE1EECF81C46 +F706515DF10A1D0FB06939473BC72429A42CE6E15BA2C97720756D80DDDC171E +7E8202D385C2E5B4A5A011933CE920E98A09527DDBF49FB4DAF2E736B1E42F57 +354C91CAACB68BEE8FDD10F4DECF25ABA4EFFC4588DFDB9E98640737C015EA04 +A33D5AAAF9AC4A7D288BC9D4A8AAB9B852516E215DF7614B10BEF003EE1D0572 +E4654DBA4D71959D403B936339D41C381FC1A206BFA6505DF3082D9FF767EF67 +437E8C2A14A8B6F0FB98C80DCC42A30C57C8AC3FE83570A1B4AB404374B85F45 +A1056E389A7148CAF714CF6DC26A04E3DE8E2E7FD26F6CDE3E836AE65E593A9D +3FA7A24A32E3E99A152009C8713FF8960FC93A2E49B8F442B81A90F98B99E140 +5F0E0253DE8ACE69F1248040510DEAEE069307FBD02B821D1DAEADE6C41111E8 +37A80AB702B8D79977DD73429695C13DF81ED3B562FF4C168AE03ECD24909A41 +22C579987CBB22700D1D34BB16E5D0B4BEDB4660D34EF5CF0A4FE507198EE14D +9FAF7C97CF769EA9159E1D8210B063141913DD402BAFD515CD746A7CBC061A74 +CD6D6DF78AA722FF543C5379A1AF5102B75C06F73E075BD8531353892E1733D5 +8143315C0C780BBB21D6954119C0AB1D4C89EA67C0AFDD4607AF07D509F481A9 +9045776F08003CB429316307E66E1F9490E8547FE0336BDD8B070290558E0DCE +DB08FCF371A8A9FE905E9C3BA4CBD4F12BB2F512838D395BBCAB1488C58122C0 +CD6D3634C0F6E193E2F2E8C632BB9185B20D94503E02244938D4400F0DD8FB81 +3AB0CBCF32E462A223F9680A14AC8876917ADEDCC9B181D584AA307CFF3B66B6 +F59FC840A9E8D1BE101AA1DE41934C22A1017A8AF69D257433C2D2C5A0474F9D +362A669B4044B3990BF83E8906C5B7E2B45D688CF12CC1FF38F2EA47743676CB +55FCD3C6261C6F5AF002869128882E39E089A6FA108195A8B86CB07913FFFA6F +6D8F8D5C9E897D63C174825286953B9DCB09B8475D0675E09C1D26286107E89C +C75F92D14002B1289A5E11F059F28FA27DF23FF395EEDFD5F22374FF67F0B60E +81D249898A228A6A89141B23918E977BA79C5F5E6CE84FD35F51B136D81428E4 +E4D205612F6DEEC1CE6AE571B30A33DE004A8F096656A3BFAF8BAE8A2C73AA53 +D7984D6777540082F3674304D2C3F17775BDF86A27563CC2BF95F190DB3E28E9 +FBD0716C0F1B0D56A96E2E870882F03A3E160621FB469355859954858C9CC2AB +06EA8F87EA163B9ABC176D704D3C17A37508864381659070B071B80C79D6D60C +7858A32F5DE87B1F818E78048CE81E229FD7BD91286ECD773147F94E7A184450 +D1060F0FBC5A8DB06BB4009B3F5F50EFEECEF8FE970E3FBFEB5ADEDE9EAC6A49 +AECCEB5378A9CE274BC7F25D03CF477C2054D313FD988A4D913D20ED3981CE47 +8674501E487FEFE5DD91CB0E5ED24BE1D2D45C88DBE1378B11F6B7076FE56BF4 +8E8925E65FBF23330B9C4A943CD96EEC06A6073AED304CDF520CD2AC1CFFAC7A +6B8D8FFB7327834C9DADF578F250A51BE64D27A2B65A16DD0204635560B47075 +3A054F7159EE483CA06345D3D55EFACD47AD32A9D7D7404ED0CB742A3AB8C47C +2C5CC71EA3E1405D6E114DD53D85C2350D46A8E4BDFD1667C65A8152D9F3331D +6235F40AE36EDB507325E21496725F3351C239207C0C4BBAEE2DC7D2797B8818 +BEBAFCA4FEDBBBBBF3FDB633A0C21A8BBA856D4A3119394FB00AD092E314558B +99CD5B138D4A42BB7B621DFCC2A2E2AD262479E878D8F26195A643BA0D13F9C9 +FCF3B6BE5774DE6F4564FB82BA3B2B9BA29A5F406F1A135D46DB10C80CA11E1C +39C9A74A18D8EEE86C85556F8B9203E00DE0B1A164134E48FCE7F37AAB98A79B +EAD809EA81192ADD3D3C6B35E521AC99E190262E5454C7170B081CB8AE338D09 +D489BB694D228CE9C05DA95297BF106A3B71A99A5F199F122971F5C4B0B9C53A +4344FD111B92AF456697E0B85142B71FA56802C392C886A408558A297EC3C717 +FB803CA1002361034D40420699FFE3C149800137EBA3AD99AAAD74B471038675 +8B073F692D278E0A088D3F51360C2C79A83FCDABE9963A4D636631310E7C6D35 +EF02828CD45CEBF9892C2761D934E07AF32BE74852C13FE63BD3DFF3619CEFA1 +25F5FAC01306FD99A573F0F5F29116967FFA22C9236EE8EB052488C4CC204855 +EEDB80B30838AEF66DD960389684231FAAB83750575E4C9BAE860D9B0F838927 +791AE22921BAF254FE561771B7A9164362D6BD462A82763F6D19737ADA1C2B92 +BD72443D7521795F9D3702F83B04BCF992667CA255A3AA539CB71F25F2D0ED57 +9E0B180D1C199211FBC17EE282E7CA9E078593E6340BA651AB949482A0760790 +E4C3F1446653CFF964B9A3142FF4FBE8C75CFBAEFFEEE1810D38033CBDA2FE9F +B42BBD97740EF0C118C7954FBE81FDDDC74608D036A3BBB75EEED4E1A4A56381 +0F57C993C4651E4753A27684D170EBC495D09202AC0CDC5F10267EF26EF4E7D0 +908F4524C91AD27F43737253BF0617559F2EB99EB26643D8C28B61F8968CEE7A +A79A818887ED9BC3AECE4A35AB15752A368D09594F93B7A741282DB5C6E42144 +EAD79AADE23733A43500563C3AD34E0421D1E3B4642EC1D70F0054E3DB6CC218 +FF930B11B1CCC3E4C90BC523D4635161C89CD9FF8F2C4F6E4127ABF479914610 +4D95589775902AE3993E1CE3D4868A1055BFF961CCB244AE25C76C4CE556B8AF +98129765EA10B35FFF3D24DE1CA68BA55E133084CD2562832630E302C3823EB2 +5D7293D0C760EC1788BA6BC9ADB7AF6DA83C951E0A23AD98EFAD64AD387F7764 +21320EAA8DD04EFC4C2BC011185DAC3DC1FEF1461F3F9ED515E2240433D855E2 +0229E1D5269092D0FF790539D2946A608E82E1FCA5E3A1254B27AA134C300FFE +C7C724824AE8B8436577129608078274BB69FB6A026D0CA48B97314F596EB375 +390574158057D3E1C3EA4AC61BEC73F81C706A6C7A9B42EEACD6A4B5C4E69FD2 +C68AB11CF02CE3D9B7148BAEC69F92FD7DAF6C9D772BE60AD4579BCE18396E4B +60EED65E6E2E62B283F135675C188F58C831B3A7ADCACACD39871EF8905B3264 +567AEEE25FB31D64C6596D60597315F1AD8F74E5577E6C966F8F65B001850D1F +39F0234F0478F6DB136F17F20262CC072B25202BCC8A67EECB03A2834136EE5E +8FDF55397F3572922DF82D25376DA73083419420003E99A020198ED0ECA44A72 +DCFF31392F59E14720BA027A5A5E81B3C32BE7DBEE039CEA50AFD5CF9CB9080B +3952949A3165C5AE1EF9D8C76E0C901DF5013469D55C8AFE1554A74D6C565533 +FD00D77FAA0311910C9C191ECBE1A0FE30A4FCDC3909D4F6322DE2DE90865099 +ABAA1A087DE9B4642DB649ECA28D40631EBA0B3902EA6D70F9260EA9DACBCE35 +8EFFA26B2E8BF4567406788443950D8A71339F595C83E28111FC90181AF60EC8 +9A7EDDE1989A2678B8C570F5D0BC178C4018626B9AC851604F03C98469EFDFCB +BC34589B59973E918756A2C1BB7D1811BEAA17D193DEA92EB273D50AE5C0FC30 +661B330B083311E5D971D70DE46E2239532FAC9A6D8FD913E6DD03F42ED6148C +4F04E6D136D41C24BD9B973109A9B63233E51176EE64D247DE1C5CBB43F568BC +DBD5A6AEDFB68E5A0C8DC465E9949A96665AB78F41132F96F3680B5A9A79DC44 +828FBDA04368F277C40F629961EAA9F3B253276EE252478A9F409C2FB6447C65 +37AB9FC9A216970D7BF6912FAFC92BA0C000A58950291FB3E47F0DFD493EC7CC +A99555CACEB7EC87F4250AB92E7136500138087A19053E9152B6F007B8D3DE8C +96224FF8D464BD3289C08AD1E05B9D063375F38FD42CE97ADAC4E5B83B8A88D2 +B2634B95A0DC0AE6A407E62D153BFC434B42680FD0F62F5FCF0818182F182D1D +6B9EBD47149F8506CF38BA61D8AE460A8B660F40DEFBC9243154E5683EA8D574 +8D48276FE5128F972D96E42D89E374F7D8C72E70F84F028263507BC96F6B2B92 +EF4B992CA46361BA3EDB888A6E5C57688198EF10A616F7DCCA55B4E1645FFBEA +C2201D5503101C400B147CA23A805AA95FF059120C677C32ADC486DCA6E775EC +23BB704624D3755E09505C395CC3AB83D68F10E2D6E1497BC179F3CA82A3DFC2 +38275D10D3253264BA9C32DA47C0088660037C7A789C1DAF75D0476BA9ED5B62 +CD30BA0E268DF3537F8298BDDCA16B1C970C2863B21CD839FF6B713438447A4C +C58C1F0ECE39E126AAC2353E31B6FB808253501CF26AA3AC48433D4CE5A946BF +10347C814A195929213655345791FAEB7986B1DD4F2B0C9E7116B11A4F1157CB +933B48B488B7DFE700423AD4FAA7E26F003B87B6255BB607A3A639830D68D663 +A3350CDD992B528E3D2176DAF79AC03F6455B1BD626ED15299042B46F03BB46B +992109329C6F67F1CD92A620FB4D806558D6CFDD75DE4F7D6C558CD5325302BF +ABBF40001F90CC940511F63F32F112EB958944E37A603642C0CDFC7941D9EC65 +F1F5B2805EC17A6662FABEAC3F1A7CE8A4958D64FCD57759F5CA294236B5834B +0071972DBCFAE0D89A1BA76FA1EEF2C8ACB12E45C8D8939B3EF1DA3970ECD2A3 +30AE415757A89E44CED997FFF9F6378FDB532ADAFB25872A690137609D91405F +4FDA7B432D432325F1467A7C85363A9E2825F86D5B9F9523E53FC5B58D82CB28 +90D43D172B2CBABDA71E5B83928A6271468C197108584BE45647AF5C9BD930E4 +18E321AE20B3D28980B1CA53F8B2696043BCC4C925F218B0AFF8E8C2BC1B85A9 +134BD28FC51E5F4E803761720601C5D9D87921116C342D832BB14EFA08032E5D +7C0C4F14F118883DBB1CA0313B6658E3BB5A7ABBA4970CAB64E66515031BEEA7 +F0311CD7DF8CCADCB38103DBB1D60CE59FEF567B2755D0A65100C8F8EA622025 +4AFEC5D179796C4F87808A76B3F420A228544CC12427AE7A5E2FB6CD76D4668D +BD5A22FF8161EF3FB20EE9FE64EFC4D1E466DEF81D20A395B020BDB7358E80D0 +6CCBBB8725B9AB973B060770E4CB902F429D75295D1E5ADA0BDC01D0DA7A4ED2 +A21346CC735F3E6662B87BCDED41C39EB2174C5ABD9C89A4A6554B3523E08BAD +F208FFE1095E6641C548DC0B7116851695AE8813E691347526DA61EC59DB43E1 +03BD503968825F7EA207E22EA04656780C15E1E9D0A00CF8CEEC4D3FD48A4E93 +7E82A2D0F952F5ED616618739ADDA48480DA4665526260E4269F135C89C2F28C +28B435A1A40C924B79934D6CC536A58D2F102CB46E4C3F6F5390008A7C7B5E28 +4044E385A5D6FBE641B6FB074C4E15DB9D25152E503EB7DB52F45913FBD962C4 +550310BC3592CF1C56A7E19A73261219812CA9A818856901E9F0FC46FA53FD67 +20A7AF35375DC845C8A9BC82F46C061F46233CE3F963C6AC49CCE0936A1813CC +F7904CBE756A07106AC3D9B58C28EB405FE50A12710C7FA7B4F6900E163125DC +43672E2C565C6959C412F7CC333F49E0FF5B1AE666E0770255C43E1779A67D7A +BD794057140D8D1478B7B3C43C84C2C2E56DCA12A1A536F80B16BF9C5244FFB6 +906F2729E0D6C3A6AE9A837CF39F81668CE7B299F4EC9825892A961935E4C81D +7A9FE5D9431283C53770E41DB77A70500A9B21D63B2F073D75D8E11579FF7C63 +3D1BD1D11EA3C49A594D1D83A733ADB8D887AABCB81C32E3913FC4B2DD1DFF11 +10C193CD5D5D5FDC8080F9B99C9B29A86ACFD94EAC9E052790D6A46E5A5E946F +6AB9541056CC23323C09CBA556F1B0F28BA2C30E039B3552DDBAC17B9311BF1F +648D3527E8650B3FC89CF81256E9A4A9054D9F1A9839BF7E0B875D25EAC8AFA8 +2B5663DAD7CC7DED3206BF5957291DF837535DB23BA63F9F7ACA7141E1490A68 +327E35FB7888C160C2D47BC4A7CD84194FF52646DF43AC83A51489481CBA4D20 +1E5094E7AC3EE66A5828BF1D87A530D7786577F164AC3D5C0D624FC6CF1DDFFF +C2 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSL10 +%!PS-AdobeFont-1.1: CMSL10 1.0 +%%CreationDate: 1991 Aug 20 16:40:20 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSL10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -9.46 def +/isFixedPitch false def +end readonly def +/FontName /CMSL10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 45 /hyphen put +dup 46 /period put +dup 47 /slash put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 54 /six put +dup 55 /seven put +dup 56 /eight put +dup 57 /nine put +dup 58 /colon put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 88 /X put +dup 89 /Y put +dup 90 /Z put +readonly def +/FontBBox{-62 -250 1123 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142 +08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C +30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF +C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A +BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78 +5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D +43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1 +374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23 +DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4 +B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83 +63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B +89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A +5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2 +C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5 +7A5FD1B49560969BF5C44F3749370663A04776F749DDD7B50674D93254426C4B +EFE264BEE7810EC93784B7C01A7F29EFD92547E13A2C7851A2E709FBD5B87850 +4A44F08F56A542DBE072D2FBC58D9E6468E1AB858DC35240E30D31C7AC13D6C5 +7D2BB634BEE96FA0E10F842B11A789F72A333DD6DDCB1BC23227EBC406E50B40 +30AF0C48E6359AB0C46898CDAF1118E46BFF8B00F54EACBC2AC262AB898C42B9 +2E080C10DE923C1F7BD11CA700DA95F7E94C4C77EB24EFB7D5DD39CF43896343 +AD32237117AD4B4C24EF2B9AAB4228720C9F9EDA61ECC327D71641E9657DB045 +3E35C6ED9AFD4B88FBBC287F2B08E20CD064866D01062364E81E3594D85A3216 +396597A1DFC0BE35873C5BF3B12F115AE64354DE66EACD29A904A98FB23A530A +64D6DBD4198DF302D6EC7460A65E40609374E2031E0A3E8A3CB33C9823F1CEDA +6857069DCB4384BD963FE143AB8C46C2A6953B5EE8CA955E084517BDEB8A6EAE +7004A47347A65802F42FB1C3E2BCDFEED75859F600C521207B1F12360D8B5B5E +BCDDD9A8B43BE2886777EAB5A7006AB74FE08677A20579E5E0B6B949759F8346 +347F3AF2C105AF9A10341270B338AB4FDC2288B79D98A54F8457205DF24ED632 +B28F3773A7D9B85113CB50A9C472C537EC2F2AEC0243B6211664D78DE60EB3C9 +717285D76DD931E6BFC44864BFC7F99BFDB8A2954BF0C5712F21B490CD7E416F +12EBFE13341161A9053FF78435759B60B0F54888463C4B456CBAC7490988317F +17CCF703B1298BFF7B8F1002A86171BD2B7E9D8C4E20D426C132E7A9A1020653 +B82A9B932ADB1C912AB90997600AF5D56DBCE887D79EB994466A78D9040C2034 +1E537DA15822B32E17DA808628519B5D964B961125D6CE8158FD72D84EC1021C +68FB5F28CCC9FC14CA321D290B9A2F8A9196B06F787DC618E6C1957AE2DD8C3F +C2D2BE2A46B8A2CB9BA13255AA74ECFAAB942328B176D6E13C3810CF28B976BA +58E89F16B00B2BE618A07955CC9C46A95F5A07FB240D95452CE799C8709D45A1 +85994D7BAB6792B58694594B881C240F3C36129EFBFA4AC5B5074E390AB2E39F +CE9E366EA4E95A5DFF8CA2E144E2F0050F512414FBDA7A7EA24D2804D22FAA04 +C2261EE07DD605953453B94243250098753EC7FAF186A2BB5FD481DE92D3A6B1 +E03DCF5C2E2EB80A30D0569ED52550B5ACB2BBF67A86D4F4E65D868B2178AC94 +14C344582F4ADB60E79ED161C0B7DB7CC6FF8C391FC1B2A290B33DEAB127C200 +C309335A5601E10DA4BE03730AF8297EF872B08C54110804CE0FAD959F416B9D +5E13E390C820F540C109F6D0F71AF41B0587CA7450810019F8CAEC40CFC3C617 +5D0163AAAF368C1DDC966CAE0BC65A31083D01CA513CAA2A5D3FDD301A557CAD +148344C2463CD950F033DF4686BC452D6206760EDB2EB00026F5318440AC8795 +D1F9C0595F392BC030B70806C8FEE3DE6C140547CA3CAE9B4B3F1663CFDB5519 +6F2790055E57B004E48FDCEC080F8C8417FCB849E34D5C85CDE82D435089956A +C0F3E924EB2C4328CBFDA7D115BDBC58716D98B4F49A6F2E841AD8B31F2148D1 +34A68D8E23ED7AF5D891A520ADE49714ACD727EE708BCB6668939DCE322AF08E +53F071980E0077FC9BA5A10B3BF911664F61327233022B59E72F38B2A64E90AA +C858FEFC4476C42C6398128D10F889CB7E0B96E4D13EFE60CD99998388CCB554 +C7561FCCE0BC98152D9E4FB1D7AB69A5BBB87CE684CB2795F90A682210E75F9A +539CADFF715672E0122236E42A8F54DD833D4F99E672B390CB63849D911943E4 +CB0C6C9693751380E7ED446DADB9C7CD98E042FEA6E76E473AB981D8A5CED403 +9A06577BF4960204938151DACE2CB21BA653A580DC8E57500B172839CBDE3751 +8A48345DD78508B4D5B35083973E026272994D3D58C6BC0F505BFCF708388ECA +514F0DB510FF93CF4673EF0A19A89B0E08F3235BABE22638A843CD1B92DC72F6 +7EF613DCA9053AE8177BF3650C44CCCE8F1B7CCE6EE269F54F8857B5576BA1D7 +8403538A00B1675276C38CD38CBC7B73906FAA9A34DE35A9F03CE84A0E60B499 +CFBA23F6C2EB6580B07EF12D68446359FF50E039E0AC2186499E9B589B6DD483 +0D432890F26241863A182314369ABE41338B2883A7CCA07439FE96465A5DE153 +490D3DDFEC94DFE203CA50520AB3553F6FF5630404C2A2BCA0E65935210CFDDD +433842A96E7646942824D43D0F9F5DDA9195850737EDE2D65B769292D5427023 +AEB225160606F8D821F08AB9B33E8C30D492E1C57A3259B1CFC1C56C5747EFE4 +792D365BD95A08758383C496F6D2729EDD5297E8C1571C2711F65FD6D6BA0126 +BCC6FCADF50C3075B9339D9194E79A4377D728EFD1E597635425407FD3BF22E1 +062866AC4580ED0DCE3329BD884F5E022385FB0D020CAD3ACBB9B0F696C4C911 +8C26C714194A606A95441101F427247208E296212B4FDF1E68CD054122C64CD6 +C0CD1EE077F2630FC30DA75EA8C3DEB388418C004557EBE97A136308B2E8F079 +2A225D5684449EC17A1A288265CDC0A0FAE05DF0F03AC4C61B13C2AF9C5AEB97 +4E63BB904FC564A28601A9F79E43155F3560A67B2B49EBDB1399962A2C0F55ED +73FC547D024FE86F65FE2AB8EE5B65377F9458077B0C6D31BE033B258B87E1DE +2C9646601F49B17A69341E8064F6DF881046488C2FA69AA0F9BD635057256127 +C4DC77D9D71C895D3040F9E6EF7653BE1F904978749D5F98F531C5564FE02F4D +000DB6DF12C17EB6B9C13726B0DD1D8A23F5CA8B984A350DE453F808963140E4 +3248089231E94E9B298DC62B46610176ECF3B8A1C77064CA3E90480C27FB8B01 +5E06A2CC70485242DE5CAD12DBE8037433E39E978DCA6D59923C557FDEBCBAFA +48B435C528845F0B7BEED2323CB3622C19816F2AAD6BC7027E36BE571A1C8FF9 +F2090A806CCA9B4A869E5E15EB363C608EDFD82C88A11E6644978790A0AD0647 +A786BDC3B6F0531B1D5F01AD551C3C759EFAF72E146CC7BB125ACD1DD6197DC5 +2B3AAA053519F55E433569CEECBA8009C20B4AAFDE97B8EA362C8639ADB0F771 +0D7AFD709E4E16C1CCAC746A2307505A462F77B1B977F4EF3BC32CD87968D463 +C7B02975D3269F1E3AB3CB1565CBE061F928AB2943B43408891B9D3C6FF864B8 +FD69D33E79951101FACE7C635F8B2BD3F45C27F4E2F119C969F552EC2C5D047D +EC3D0C212AA56F51240DB8861DF7398C3897B8DD8F1B2400FB49197AED7803AA +FC07426EF806A7CB2DD05B8978996754E72BD2A3078E578191221EC40C71F050 +79257CA1E7B0EAACB2C0DEEF23C4B2BCA93AF1BB58D94BCA90BC12A50FF9FC32 +253C51DC821ED1FA42318788342A8C1812EB45E1A1AA66D9CCFE0D7A107638CD +EFB007C6A6BE3D58B81AA688D787F7D0553677EFE62A3E59C2874A88D5719E8F +9F1E12B507D39FF42589C1475DC5F0974B423DB8DBCBA2C04075518EF5CD747D +C582F0DEFE4F674617DE189EF2030FB38194C08D3FF6D0CC1969494D86A74342 +337F5A3EAB685175FCF927B27E00F69A3F0B5B65E6FCB9C310ABBD731CA8D647 +F87D8B2BAC0D46E4CB24290D064B536CC0FEE46BE2E0982DC832F17A8668A78D +313F9943C5CE466123BC3B80122B69278A3B61FD4C5ACEFFA8B62EB6A1DA2AEC +7A7FB0D4B1A5D3B59235430FA156F45CA682AD86F3FF33D94C0867AD1E1D7AD8 +7439A4E3ABE919C6E3DE041175E0E3A1F2A878CF7144ADD7091DC52E5BE98830 +0AB8869740D57C6013C92CF23FE175EBD5C26330CA8B83F1B3EA50228085651E +64F36D1E8B1FEC84FE96CD2BC8AF45198C9CD8388301B1BAE9926BD8A014CEAC +3F8D5AA5C6DD2232A3F2FEB58E86F2835FB055ABA8567A3E53D0D7DD404E0D99 +7F2D19678CF28BBC35AFDD80DA0F1F47060CBCEA4EC5358FA8B000C570169AA7 +6718FF6DD3EA7622AB8725FD764C2EC14E2DCDA0548EB94981931C0A2FBFE083 +37D342A73ADF7BD3282E25390EA45D5AE7052C058AD6780ED90AA5007669AD9D +839B78DBC708D312C5E109E7756AE6D7D6BB2191FE1B6EC56B0721E6A53C8CB1 +6519FB1F37A8F38EC33E4A5766672E4785475A0F8431CEE6D66FDFA4680BCB28 +4EFAAC29A37BC21D9B884F508738D5F0225ABCDF34CEBD4D173321E328F877E8 +590DA7057B8EC485BC92A14DFAA31A63A6244D1AF09F29F0E36C6F9CFF260EED +10CC0D2730237B4C7D32BFDD509B6E3502A463284271A3991982887CF56DD662 +0654E725CE1642E0816092D6EA59CB60244DE99E733C2C8E990EF76B70B20B00 +734092F47103AE3ADD001D19F588546D8F9E8405290CA23BB3D3FA81F034EE89 +EEC731F922E6F28BBF12798A0A4D6856DC7D1987829310C32CB81B5F85B92FA4 +3DBA34BD1950E4E4ADD08B54F12F923A36195790A7D91447E91C75DB1D17F351 +D2FE11A9158534ADF9D06E2CA4BC2F11E9914AE70550D52C5667DE9DCDDEEF24 +E57C9F372DE435F3FFBB3BD498BD0B56B1B53534CE9F74BDF113E06268AA1050 +CC6D925F17CE2F7AF499C5DA843EFE205E640079F47F5B5BA0F8FA27FB30DBBC +3D3F95DE3D72DA6E726F7D599AB903EA90506732D051B5541C5952D522F354EB +F8B4E8C34660F9A53F9299DABF9C0CB5EE6F0685E522042814F58A0C5B54E0CE +58BB142FF89520E7DCD0321598AEEBB393008EFC4774E2B3BAA16C714BA68DE0 +C8814BDE1B37E87B1F7D4E8177A23C793F8D3F6CBC6833848CCC0885D01F20C2 +479E8F80CD07715EDB2BA7139837DB3E090F2FF71A66016E6805C6CACB18BA97 +035C6F33D8CB3CEB57D55B07AB10FBD469B14933299737F2535C97643662868E +41B46920C640A039A4DCE141371BCA56E66A2A6C0FF74A4CF52A851291B7B674 +8B7B676307320B1DE482A28741FE51E8FCCCB79DF636DDD2CCD73F2B46C29C2B +6B32C6C58AD847A41486323E5B75AB58BCF81FAB2E7D794191D6C66F1DD1F742 +6B0D0356D9460AE3287B98D3613E576238C10B6D18D4FC4FF25ED3A7A85EEDD7 +5FACEAB91FB2F0E6ABB6499AE02C3B1E6D2032BDF5E1ACC575620FD8199058DD +499B758C1B5C0B69F930F3A4C73E2E363168FD7E03352DBAA3FAEB32B29C34EB +7DB8B049FE0C20AE7B36DA2F783F8AF72CFBDFC698CEC9362FB188DE13CF08B4 +830993A117A1F06996B000787DDFBEDA484266BF6956FB0B27CF5613CF11DF1C +2BB3677E8CD75742BE2DF91F646817E1EC1F60EE24AC8B116CA297F57CF6317D +0F098301800B7664C0C19D12BC6C85688F105D3C91F18C6166EB9E586980FD40 +1928B4190E3DFCFB858DCFB0B8A536D14B9AF13BA62BD71969E9141ADEEDAB35 +1DA0931BF97D7749C4F93577D4DFFE52B373D4E88D85BE4F9E87B858AB32C26F +D4417FCA56EA2EBD9C96D3596D09781E09AFFFB1B4441293EA965FE8F78487A0 +5B327A789E1104D30C62248A62660C3F5710E0DE61F6F5DF848507F1CB7DCCDA +5F4D645939ABBAE1472F2704FEBF7AE27D7075946A02E322D43DB7A48F75A467 +5E081127E8CC6C1F4E674A6A8883E67BF4CD67DC016F0734DB7D2D1CA01FCEE6 +DD0B05A18A0FE8D678524A936B4AC20E512606DC99F412B589DE60841A0B67D0 +82F5F8202C1C561A60CD6779FB9DB36D5C210973BC6460EF7A01271CDB1F1D63 +FADD31E847C3B1EB0B9D4803A59CF6101D2178B0C68660E5078DCE5079FCCEEE +1DBE1E9FB0ACC7C973CD013E06A8D0D99B73E863987676E852F08756EE0DC548 +D2ACE7C12532CF8A53253722C0AC57FAA8E9B95916E30B46A8481C6607CC8979 +012E32098D7BF25586677CF9349456D708D37D676AB9E72877A4AA616389EACC +D4568F515BFDA5F56938455FD44F42AED19E9933930F0BE06B999D82C9A1A37E +BBB23B6F155C8DF5CD9374D76DE34F099B42DD6DE794BF68684DB697EA5ACDED +49880D90DBEC3E5E2F5EC08F1EA04B29174D918F6DA252FDF531D7873BF74871 +224BCB8A5AD6D87583AEEB673FB02EADFE76CFB7D08ADD021FC30DDE27E77D7F +50F3B5D09196AB64CE919D4E991D84D1D583763D5ED14EF6B106399908DBAED0 +D3900D1E15205C0F4B5AFF9104926FEAF219FEB0690552827DC496C10556441F +60FB15A6D64B52B2F84C6E49DFDF59816D67553AD81ED5573B000FDD6519864D +C384B3D60EEF2B1BB5C1141764AD6807DBF37BE031D670AF8632BE22A7076AA9 +99555DE31320B458C792EBD69279F58EC7317B1A52D0E51E950D76FB2C254C11 +CF91B8EB98EA650ACCE188585E642D17A211DA2574E509EB4E87EBFE313CBFDE +51F501C45B182D75EBFEA3EC9B95691E097E46D792BC095C6B0BD266B097BAB7 +9B8ED5797C17FDDB538AA00DB25482823B875CCD6E5EE55A76FCECAFFE8631B5 +3E4C3E9EC1E5408A2A2010FF96502D1CB940350524C797A89A5FF8E6AB47E4D2 +80BBE24B89EC689BFB00B9C5B469620DBB2F0281B757FF3AD2E84EFD0CA3D456 +A481978D788B40C8EF363A41B2C85E0AE198216E29A17D67D0FB19919879EA31 +57B62FA6123AC99A36840C6432895DC4528BE0D2FB5FE4F24F5DE3DFC5CE5E57 +CA4BE5EC998712BE30C680B8DD1F730CED756221598A0A8E5C448800491D8907 +A80C58E0D78D4A53C7B651177453802785A39C887AD73E87908D1E6AF244C67A +9A5029E17CA9F1BAFCC5802E842C33B39275F046C809F2AC427279361B3FCA39 +154E1175EFDB43DCD748DC7ABC240C8AED3F4FD78FF4C7AA684AADCEDC564AED +B35CF787921E74B51F4BAF2A8EC4BB2C3A78D2CD697BBAF16A14236BF7607F81 +6093A211924ECEBC1AA68511F7D9963DEC9689E801CA25DB41B89782A6471A62 +92965E950E21D5E41CE5496D95553FE6B9BDD94424914A3DA9F878A28BCF77B3 +BDA77E647D03250DFF74A2D17CD59BCC2763171F0EFA759C453A435F0AFC814E +D64E3EDD354A334150402AC48A6F84693B2C10E91C67537B45A5308502E96460 +871481EB917739EB412DC4262012D9ADED07CA03BABCACDD04A6C3A87F4938CD +6EE57009BB556DBCAA1E208D1B2C03F01E47EC0826C99C8A8DFB89212193E8A0 +2B2865539F8B7888664DE8CD3E5A193E6320EE7E111EF5A3EB73DF7ED921E4E7 +A26B1B1D18D92D78858086F7133DF3ECC8A80E499C576DAFFA25DA530769829D +FC01632F7E18C5F481DB0006621F7DD4320ACEF939AEF57A41A11E6BF8A183DC +6B2380A390E5F3568AAA53ED30292C6B28EC7EC45C17F471229E37FB8C1E5582 +B480FA1B647B69280035A0823C512F4AA0286201B2C9B7CA85D5FA65648F1479 +C86882D06BAFC16E0BE7EF0F4E16FBC4ADED7F49A2DCC9E151E26F1502748B2C +0BC4FECC8B11398034491060133041AF08BF8EF5B1103852F3834F6DD659494D +4AFD896D3E85560664B0F1F031ADACC315BC6140CF38668BBDEC82C202890144 +64BB345B4866F14CABC63D744F3E158AEEB004AC1A550502C2AD5F9595170EC0 +BE4A0A8D1232E0DEDA7F829B0D1A599BAD2007F9111EC24F1E08022168C2C34A +B1DBC6A844531D7A8D21731C042A7B380A1FB1D6B82E6EA341B123F8CC078324 +95A5049CC0C46392EB9116A03FE0F1B6168D272D96D8281A1527CA80A16A7449 +F31C1948E9D6A0E6550B686D985786CB6AC7B58DB428755875CFAE0572D2FD6F +7AA794CEC2AF0B7099AFC1DA5B3ABB479A7530B8EB9BCE9688BCE0276BA736BA +E88737ACD9E781828D687114ED67DCAFD4E7404C7C0E924A9141CC27692BEBE9 +5E8660B935A6F18F321E0AFA5B606F67A4D8CDDE5B424E504D52B2CB8E831A5D +F77DCCA96FC7D75E24F2D44D897FBBC3E35C98EFC52875E149E2C583AF6C10CA +BEDDD89A099F97D70AD5CA26C0CCF9E65352819C2FA1174C157E69D48AB817FC +007ED04651DDEB2FF2D8D7D405B401DAEBCE6151353441860A41731CE520F75F +6FA578EAFE5631925738B325F8AF2B0E15A5B84E9E1E203119ADF574989F3B33 +84404AF0FF3EF287A226E8C9877DAAFB358E5F1A5F5420767C0B6836FFE901F7 +CD1DF68CA5778B4649759E1F3F9FB5C5748E295ACD163EBF1EFB64785625ECB7 +A5060407B009B0CBEF3FF5935CB10233BD332B73F9C69AF4ADF799CFA08EF25C +A6CCCA840FAEBBC99C8639A75667BF652CF3FC25542FA6D873AEDC7AE369BB1E +C15BEB51ACB928C61F97E45559FDC572003885B999B4B91F66459BA96082C763 +A9F7A5C7C7F27B9CFAE1E80ADA4570300158A71016DA3600579434AF7F35AE65 +8B267F947E13216E437A98485CCBC940389CFDB05BA3E663DACF32F21978FDB5 +18528E1CB7AE189E007FA0778D62B9D05592E25559747E578C17156BB507D6DF +4B4198BED9F33ABD6E93F7D084DB0824F0C351F8D820BD9530CBC821CBDB276A +8C58D133DB076D9BB5689DCA2257FBC741C5F59AECB0BAFF81E0B899291B6F72 +5CAF3CE6A729BABE19AD5E6C31A790ACE92E952E82638B6AE9C0F61FF3A30003 +22F75DD843E2317CBA51FEC548525A4C8EDE18D2FEA0F6D8FC00B33E44938D2E +88663593AC4D1652680D51F1DACC46413C43902F77790B1C2E266293EBFB9C78 +833A274EDBF9BC80D19212D2635532B935766D0006697A7EC775AA3657152D72 +53540266F89330E3E19671E73E4BBB5F9A716EB13CD23FEC5B5358C7E004F101 +6100FEBFBE124B765BE98D24BF2E89AAD4A27C75A3549CD3907BD582E577B1C9 +1543C1AA7625E5AC9AFFCA8BEB637E5EA8C2BEAA30C8A7741D954422171D5086 +07E87A41204D0CCBD3A22E2D5184764921F19ED5981C52B539B06EDFF7A3EC02 +DF85F0132F038BE6CA49DB6A4F5A17CD5FA0AEC05478BE9605A3F7BA1159A76F +03A38668E6F2C72AA7E4DDE730641216CF7B9A61BFEA6EF937A54F2A2962A320 +9498FD339342ECD80A0FB71DE820AE65B80A5B7A8E9196D2530B8DEB0A1FB8C7 +15EAAD601F6836A6C8C0605BBB6A336A523A6CAF13B064D04F48F002B579266A +A46A47426ADB627668386804EB7AA726E1D65249F6440447BEC02306368C6B9B +0C736C4E5BD2362B7C9F0F7540B5DEBF391141BAE24EE7995303C1967B3DA371 +E0E052DB1D5259725163265BDFEAD1798D71912B4C7AE63BA1CEF08FB8A15E3A +25D67D9E3A70A040AFC254086D02FCDA5BCC1EF37450BA967EA9AA5C952AB4F2 +64F3D7487617B261CB8DDA5AD34429E3474A5C12D7DABD9F7053B22935909AE7 +D1D554D0C24436476ED68B1D209DD7AA80A6A547E045178D1763D596A5CA7AC6 +4E38DFD247A13D54EE7F2FF5A3442EDDF7F4894CA301A05ADD6E9C5020076497 +F2BF7F15BC210DFCE1A8DB7DB5ECA33EC5A7D635C089620177BD3E1F981D9CBA +B1299C0CFB41F53253A367F7B05C110C3702C570EE29503EFCAB28EAE54FC81C +922A0A80EC12E1A5D7C191603CCEB1FC7F41B06F2D91DADB13716D2D1F6BBB2F +927AB0F59DEA31F198D5422989AF7AE03D5F4AEF146323F8977F79540DC4200A +89615E702B72127B7FAFEA8152B53EA8ED9BE3BE7EE935B61ABD0B9C3DFE96E5 +B1A47626E4B62D96A9AEA785524FE73F68FA218DD58918D55E8338000DF0F5AC +6ECC8E6ED15AF45B45E74AED4F06C132E8076E21C79F6D313494BA23EAC84742 +2F778B9948CAD5BA1D589A3EA21516EC56A5E40D4CC0A5919180C2736D6570CC +FC03087BB9333C11310C8E5D814CB9AE8EC2D2973437F8B80C8CF48930E228B1 +4B35BFF4A7423DFD51D881829038D15AA5E3AC6AB976D3549CCBBD59034F1E7B +A539B629EB8C2FD450677510A7056C1D6184C20AE04B8BE7525526C9B19BC64B +1B3F6BFFB675B7D218D58C8D87F4EB1A28082A923D404CC58859AE55F0F8F433 +3063E52630170B2CB806BC95469581FB149AC66F00C26466ED3E1BA6459309DF +AE6050F36FEF2453D0CDB3DDAED0FD1E5C7B21A9469E62E9CC09 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX10 +%!PS-AdobeFont-1.1: CMBX10 1.00B +%%CreationDate: 1992 Feb 19 19:54:06 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBX10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMBX10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 12 /fi put +dup 45 /hyphen put +dup 47 /slash put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 54 /six put +dup 55 /seven put +dup 56 /eight put +dup 57 /nine put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 73 /I put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 120 /x put +dup 121 /y put +readonly def +/FontBBox{-301 -250 1164 946}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 +7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 +77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 +2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 +FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F +DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 +7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 +9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 +CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D +6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 +E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E +8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E +3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 +EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 +0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 +4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF +1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910 +757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E +0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665 +6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED +E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B +61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7 +92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C +EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F +43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453 +FCD9A4F194FA648F9FC0971734BB69CB73439CB0DD021D44A7C11BF295E81733 +4DFBA460FF3D654F9FB337E99E6D66FBA87A817EB9CA1536C84833870E3626DA +55D48DE850D3E6F6B29DA0E7C9D681283586F208DB8D58042E3A7CE55BE84822 +C98237911453E479EAB65AFEBA3F61A763B40E74535BE56C9D8D06DDF9441741 +5C9D9D917439368736619717FAB4F06E2C329AE0BA411F3FD522D9C33AD8369B +D7DCC9DF993778482F35F965973DE876FA19E109AA198A00658AB3F0D8E3DDD1 +08A573F2D525202AFC57E05D141E6C0BB811E1FE280EEA002B7A45BB363AD06C +318D320D2C81AA5DCC842CEF66E7DF7670588CB39C9F42EE7763A3A17372432A +173BDEF7ECCEA297CCDD76A835C36DCE9DB8F8CB66CC71B4920CF5BF055A5260 +5B41A5373BA6E4F63C85671D979EA5EC30D22163E6D206168A3827F465279870 +CA80E6632872F721BBCC622EE4214BF723551C846765495FA9921E11FE1A950A +53150C3F5D8595958A47E0B16064CC3AFD65DA294FFD111153F4F233BC5468AE +69585C16CFBFCA32C4B96C161F47B56661DF84FCD8ADD3EC086CFB6BB5179BC3 +A5469A1CFBC8620BC711F42D0D3139BCE4E38698D9C574450DB43B5A19FA6D54 +0368BA9F7A8DBF96DCD0B8968CD194264E6DD10A958846C278B8C2BAFE7AAF8B +44C84C955F1A89A13E62A054BC76CABBBF6296DE00A79CD7C8C61C70F127618E +9975B59A880685E126F57AD80F8F4D376E1B476BDFDAC868FB6AFAD9D694B561 +001623C4D9F55366D053B52F2B09EC08B81901AE0986C5350312E626006038AD +AC15FE313FCEE1A2E61F8992AC00CA7BB7F997707EA377D37EA6FF35BFBC2866 +A572B31491F9B80445685DBA5E62F166E80589F768FC95BBC79158C23B2F1BD1 +25816F1486A64F76D99A638AC0DC101FDF390811B3C118C2D972B2E7587F6F24 +7F1DB2DD922D237A7D18FF08FD665355CFBBEE799D3BFF11CD94CFFDBA3E725E +DCF4CDE4307E3B199D91893A365D04F43A5305BDD2538E28A0788E061F3A621A +B4A04E5063B47F0109C1693A284FA43E8F1EA9B68145FF51C005D3FA40713BA8 +1879BFC3CAA881B9D885A0C1AA8BB9A8C848963020A5B15F862E7DCC78F25D7C +56437215999EB78142C128C6CB1E6E75EBCBB1E4614E8516FEB1E68400C61326 +D9F9E8A41216901F77D9466455E2A0B45FF50B27B55A1E1DD4F243C92BA6B175 +8F7695CFA1E91CDD8651AEBA3D258FFABA6280BF2420A98FA7CECD552D152CFD +A8CCC94C032087A28D68332769DD2CB4ECECB15717C245BA305CB616CC72644D +C78326E77FA602364A7B1630CA0BD0282FA781E14282982C1AD13479B6178D28 +1CAA541FD3F4316F4FF81C53496DCDF5F86E0D7C870FFCD85B36C936B1E08D78 +CEF3823546BE4329B97EFA4E2880AF3361C0DD67F77C8BA6F1CE3822B7FBE567 +064ED0477949BDA06483F8DD04F891473C8FBF73A61F7C06B20FB8B5F0BF4B77 +1429190979A4BDB29D77E94D5FB486A93B8B61DBC84AE06B4E06CBDA3A942043 +9F9926F541DDE4E9B734A985F9054493508C5F7EF9ADE372C520840F15F705D2 +51826A537FD158C4105443E38116307A1D4608E9C6FEC3353F57E65E150EAC0D +B923BA82331D83E41C97ECAD6F8F32242DFB52EAFE2209B9F41DE483C8549B97 +407186E3A04011C8301B6C9A6D36D8170F40523FEBA5E498B8E5B7BB28581B5A +08892C2894316068537336338E46F5113462AEA9DA7102ADD13EFD2EBFBC27EF +00B38C25E4E23843C50C888B22BE1C76AC3F85CE148B7EA0F47D72E56726D13C +ADE5A5D539A8379887352298B7ED202D909C8BBFAA0BBE7CD378B80488333B88 +E38B1C3C8DD17F32583A642A1D0A4408B0C244185C1376364E723D83803813BF +106524811B9116A47F0A3205513EB80A4F798B330C9C4560F98FC3A2FA181680 +C83D6BA02AEB9E57310A60C39D31D5BC8AE28BB3171F90B69C11688521BA0845 +3F7D6E4CDB496E3F8B46D080156669BE81DE017A70B3B7D5EFD202F26514335E +E06DF49F24576733B1BC191480D8C4E613537A80FBB7C408E7562D31833E3405 +2C16297EFEA28E55E929640DDC8D9C12D15A89A03C8637336BDD0D712AD5A2EE +34012D38FD1AC70D13C3833B0A055B545F9EE98A463A2B3B424CC138AF6CA929 +A7BD80C3A804D5F80153DCA086B862A7D621B47F109EB93D67A73934B066B546 +BF15F27517D10CB8C83F7B319F423C16B42AA435231B9C4A05053D7109715804 +660B7052FAC3EF49E66AA763DCF07FD1AEFB5ADBC9913D3329AF36A7C5359038 +963383D68357C48B254DC2508706B1D5B71B66E2589214A336ACB11EA0E4070E +3F993DACD86186718E488D4734F024DB314643A9488841654924DF275A1A2221 +2FCDFDB677FC3FB49409A644CEB01B260A4210613C0AB3FA3BBA7CFD4CF2867B +B261875B9C592124D8A5609FCE7B376A39F6AC86E94F40587F69BE0E8B4C2E64 +DDBFADD699BCAA66A856556CDE4620A3C104EE29F9523D0ECBE6552A1B8211CF +66D12AFAA3E9611858D51B46039B5EF0F3E9A020A6370B34E80F83195A643F15 +86934B5BA8B60ECCD0D3C9496F8D32E70ABE513FCBB85A77D992E73AF8B955DD +5AE1FDC1CD972E81DF6816DBBDB583FC1410D2486F7479F1A466182482EFFE44 +DAC31E1F059370329DE19FE4629F33433576C1E3E6B49F122F2F7333C36AC744 +BA663E209AB384C9AC13B5AF8E9D0D7182D5F4D1EA874AE24DBA41DDB6586535 +8CA487EE4084602F3F2A7A46A1DEF17DE9B98728FB8113FD1BC2A62D3EAF7F83 +EEB13A260689B6BC369064D027601C48AF68CF0B507BD5AA8426833B11D5F086 +E0759BF00A3044F0719679D27D8D8AFA8FC303917255FBE6C1317702DAAB2C88 +4669AE63FDC111F7FDF28CDBADD14E9D82CB39340F567FFDFA4716CB99CED1C5 +871E005ED9EF2A8C3BD948CAD403F180EC8649FA7C4258DB0E1CA5F1ACA24DBD +B59A2D1D7D920103457822D0F03F7D4CA5FA2D944B13FAFE51C031FC9416E5E3 +4987815ABCD52F279B7E1A86F659576B57860004E6E22A6FF097760138E683C0 +638CA1E808E4B88CE859772171D8F864F99FA82FBB5909E75603C5010D49C62F +256EF48E28DB392A15716DCDEE0993D3C8B9D7A8DEE99AF3401FA9A39521767B +F04344EBC10A08F880FE13DB7E11AFE3372B8691EA9807B11BAE3C4B7536B7CC +B58A3DED042A85AE55ADA24E74A0A50BC5747F9C8E816A132CBB3987FAEBF451 +22FE85DD817E8E6B9DA980F189103C5E972614AE92FD7506CC61589B2284BC84 +A4486A73B619585F82FDE4410A3841729C2A26E7E6FD5052FEEAEFF792EC1B58 +0131564B3C5FF80F3FDB1132BC1D83FD8D0B4961AA68000BFB9A0989036BB0E2 +CDDB585566EADC55623BDEA1F218DFD343324776DD201CDC9AEE023DF5B98195 +AD23DE4BB8EC522DDC094D15A76FD38B85964AAAD1E2DF9513B87281F7106032 +D833B6E2019EA1E9D05C7AB6CB34DA376FD9BA187E8BDA5DF7EE06134DA2F577 +115F6E891601CAE2BFDB23FEB902E2B1A43F7A834632B6A7784EF9E9A659DE56 +5E7E66BD19DC11ED276BC0E117C8968E955629700B639BAE108F342BF38220BC +A4C110641D1F70F6843206711275F5C33A6100CD20825B2ECE39EBA78631E349 +FAAB77A671146B5A712B40F644B86BB1BF3EE8F75E49ABBC757485C1A53BD9B9 +34BCFF603FFF6AE40A641E9626B0F9259F79B06BA573D6A42DCFA21A7D69BF63 +E1BCCFE3816EB1247C9F6DFC07A59656D89D69DB5DAB731BC84B77EFE8860EE2 +AD317C5F30763FF2C1B9C00C0FD480282FC591C84D7E5AB2A795B1D2B3E50E5D +6061F96ADC97AA2DA0B04E96F8E3961CCE37109474963F05E9C15FDF55214DD5 +210DD9C43391D12018AE5480429C9D0738CCB2B0178A8824968536C99CB0BE77 +B649AB272EDCF07F46DE28AC2DB08DEABD47C1EADB1B2193EB614BC26FF58583 +B4543394A1C8DCB80606EE803B273D8E313179922EA334B26E58EDA4C2BDFF7D +3A7D83E0EE66A4FC9C6BC9863F8F9752D66CD473F28194B9F26D624F30FF8DBC +77A700D39436E16839628F46B0F3637AA4E8BF1B6F5B95CFECD5626B13634939 +C46CE51287BCD099E31DADA771D251961E311640C0623956B2AADBD1F18A5F74 +8DAFFBD0C0AD49F4EF2880A60AE0DF30AD1425B79DB0CDCF9472D2EA009E9829 +56EA40DF5941215E176B1AF92C6374AF78D9E6622CB915537EB9F5DD807EFE7C +9749B43CD46272AE2101C1172A5210A4F71421E75C874046540050485E27FC7E +C4A5DF6E3679343F161F3BDEDE5BF274D8B052224E987F4A135D2D8FE7F84EE1 +E0BF07ACF7C40DC3A9C50CEDFB0EB5EDE8FE341E696ADC8710EFA61526629305 +AC390632DE1B80CBE8B55B2A9600D8B94CBB43F4E0728C08B250A8F4FE484720 +E6A260E226D420DE06A87617A3264792743639A0FE4A2ED4D9627E78B0222991 +A583A5A87AEA5D695EBEF083D770C5771D7304E17ED5FDA30485E82FC8C41B86 +4D68C82CC51D87AF64B277E0DF3E97BD5887C7E1D913185D2FA7F29FF0BEC2BE +14A3E6D029DEA2D9DB4A08B5B3ED8157FEDA81F552EF0918ADCDE7580C48FD58 +B0FC972EE053225A5B2264685C7A14AFF0706B13EA016721DAE4F8525B8C1E80 +A3213A33114A3007B7EA5CD2B1AF43487F191D22A5C106D3BA83A22673131EE2 +5B370CC9430E2FCA3B5E3D181FF1FE29DF3A9E6823F243708D19260EC2BF31CB +BCBF8684B4E663F3B93AE10A636CC9E2F075C29F2AC4951E85DEE75B87FE2438 +C389B91443C821D4183C0C35E916FF970B51856FB04B61FF8A265206898EA5AB +CF60214736A9A0A9C320F462E7B6F7CB43C084589B88DF4217C69434107D8DFB +A9F3D9C248D26EC0F1225F842581F27265516AFCD19B9FDB23A18ACBEDA6AE5B +0C8445E30DA6F2611E3173B7E7A6C2BE8BCEE2FC8D688AE82CA35AA85B47C48D +A64FDC522636F50ABFC0B2EA41EA35D67B308CBF6C2A86B0CCB58A025DEF703B +FD186ED17A94B64DE3F9830621D11F0D94F518030A232D7C5927625B2B61F414 +ECEC88EC56CE35BD4AC7F7D4257BA661D2856B8043F236CE60FBAC9186E0B245 +9CA6DAA942CB5E4D5A4A59A48AEDE5EB78FE118F766FA9A16ECBB6CDEB641421 +7267F61338AEC49F83A9DEA6DD1F7FBC53ECF8DF0C6C2EB871518A94CD832E53 +1DA38A4390638D9115136C9D7E3FF7494DD7C2033D39D21FAC65512164664997 +785058E339CBD84ADC911F1FF4633667B7C172748F83235C241EF9083A29B907 +AC96C96B45CB517099E62B7E1DFC89390DBF51D02F1BF2A1AFD3AE38E3026990 +5E9F5A6FA9746C9E61DB1A6EB4F484C4EFCEC8F915F46E196ADBA0D2FDB82E3B +1A97DA40A76874B349BA4D480C360FEC74B1CC187C76128624D1C063D077BB8D +F3E50D3CB072C7ACA0F3346BFB1D112EBED706BC035F8C8A6A23474BC914E551 +1CA4FA8B354772352F7A0EEBDBCE9CBD523CC03E2C5C03084FD372DC9F7113A8 +8ACEBCDA2378AD0570714AD3879C7A05F120D18DC6C0AC7C5950117B9C8D24A1 +D59CBFEAAC8E439E52FE8438B59A7164CAF45C78E8396FE323FF38EA05B2107C +F20D2000F220EDF53987710F0C0E2DF4230391E545C2D21CC810A8E902323A2B +BA82A938A9221298D214BA068ACA55C690B7B7A508BD6595860E880F7AA9F030 +27E4243410CAFFD55BA49F5CA06A8FF416F194D3E3AB7192ACF871C7478DF987 +16540ABBB52520CBAEEB922BF441D940E813995D4ED3D8DD707A631707D5F553 +D73223CDE27A4699C2B377C319C1A0896AA544018FE978F5E65B24B278A108B9 +8F3D7FAEFB97C51F9AC0CC60BD9CC620B315C91027B83F0153BA8F7CF627934D +6D44536CE65F562ABF7A46DD66401FA9158F3B603ED6EE02C14B1919613FEC58 +8243E4215173307F4EAE1FDAB515F26419DE06FF2DF62D0E0E60563BCA2A7634 +4B58344AFFA0F104229A6BBAAB5CC149573A19C5903CBC58009807EB095ED97F +BFC664A073337252DFCF946620B1679778D6EEA5C1015B0F73E4DBC798F90AE1 +5CC47F90690314CDAAF1FA54C47C9DA655DAD56FE577468C6199C346CE0D5C14 +F3190325FEE8CD9F9545625F5F00EBA1B449F55FDD4E53FAE7C5286468677ED6 +2F324DB5A9C804C8A2BEA08625C37E2341E5C5A49C06C15F23BBBD08D56FA07D +2E6FDF1CCB9143BDD8EF3C48079B16324FA502C29DB5120878BDAD0A783CFF92 +19AF72D3844B77A18BF1D2BCE1C41134761176794957AF3B8634D9C5A269671F +5676B9D71F99E56EF7F84374F15099EB73515268827EAE0B114A10FDA6171656 +249A963A32C88761299004EC6848BD76B6D8D68379EB302D2528ABBEB85CA4DB +DCB6B0C376D86530F4FE8E17B93952C50D2136CDFB1E217748CEBF8AA6B46BAB +73034165C62F02628CA60EACBEE01864323CD45EAC63832BDACEE0C39BF6952C +A07095AD3D82C80E2875ED7B998F8D9F5D26D7416AA70E53760C04D2F07CF734 +E9AC0CBE98C1642B93075D96E35AF27717A52EEB4898F148BCD6F792194681E5 +F0A396D7E2FC5676FA380A34EFC2085A7D0A5DDBA1476D0823BB77CEF027B833 +A144BC9D0DDD83A6986D4153664226DEEA70796247B400AB0C53148D61BC69C6 +BA4C4A288ABD172909EDEDB5CE6494B4F86A42572D0BCBCF857A64A13503EC6E +4B495640064B9C4299C0B6AE174DEEB07DB173AB3CD0A00F03E9545386A3AE24 +717387668FD6EDFB94402E3512A7A6F14ED8F079ABD4E161D42B40BE5027E3E4 +22D8EFD20D83D85AEDA43557FC14973ABDA50ED56948FAC97B44BF6EBBB6DAB2 +E05C768D80E843837DAAFE5F4781812CE3364155672C77AB66301A94E2A9E6DB +85EF7C07FA61CB474C2CFC6A2F7D90962B4C0D9B95F391420EA0938BFA21461F +B979C547DD7144D2C73A0DB184D4E1152F82A559F09EBF4620BC1B9313E03FEC +0CA4C8D1EBDE10514F3ED772C73E76E67E3B20805A93BBC4E9646827276C758F +B57CEE6AF20227134072637C357683DE58A7830FA2227FA344860C2E4B332268 +22E6346071A229CA44AF26E180BA8AF72645D356C8AC2DD443F8C9E4775316D4 +F832981E22EBCC3D707DF08F12114D104341F83E27734D81A56005E5C0AA55F9 +DBF4FB0D4B17BDBBDDB80B3EAA35925C70B846BC4C49D0ACFDDAAB55280E838E +A962BB1FB63870089E1670EA0F1E6F810830E100D00759E16688AF88C5E832A7 +01EBEAB36927754AD34FBCF10F6B787B6CB1F90EE1C119A62E88B81BA82E71B2 +97ED389F742FEF4B76CE6A17D0516BCFBEFE6F7185A54397B3538E190CC19E2E +4CCB233AD9126D64977FF2E89C12CBA5EB2ABF6E91289728CEB3CF67950765BD +B6CB85DDBC55A6F452561F0AF5350DFEFAC063CE5F25C6F00C7D2CEF0B880324 +A82CBFF49C6796AA0C943440218E59C2A98E43C2D2764CAD05C0C5C4EA10F598 +F97288CCEE303179D86191444516A79AE6C4FD1E9E60615E3B547CAB7D471F32 +0CD1AF2B3F69C8C047FE1A01845D1F1A6EFED268601F87F8A92211BAB650913A +0A2D98053C511FA63A8B3813E2E2B3FEDC870C5E6206101C4DD70AD1CA223A32 +FB276691EDF2421D12A4B330C4BC655A1218AAF015A384B8057A71B8696FBC73 +CFA6A9CCEC4AD7B0789E290F483E96E741325E6062C5F0B37C50F75A81D00344 +966F1FFDB35329F1653AC58EEE4C4B9E97F89EE4A3DAC15D67B6FA4C814A0995 +7460E20953FBD68438F0FCC139724701242D7C45AD30C72141A695453D003D72 +AFC26291C1F4BF991BEA7404DD85C825B840301B9215060870B1E5177D0AF621 +83FE4365ADF6FF293B7F9627ABA242F0A3E4A608570E46682A0CCF1284961F63 +B3E68FAD31F3452B5ACE03F95505B3BC194C783DE0F8BF66CAB795BAC0544191 +4D98F68ED7E13FA2A535722B667F6DA5E91E74A01D815F8F3CCFB5B4820E0797 +3553604F9341EC1B735D9F96457879D61A216A449D7B8A94C928154358253459 +AF775289AD8E86DA52D05A2C58387ADC92B18E1F0D1C04CFBEE4877F49953FF2 +42A7654DC8812CB057B305A68B6C22C8BAAE86855EC1ADFF0B3E00D60C853807 +20B98B49E7B0A9E1583E685716F6C2CC58162127FC8558AB128B53554A679763 +512DC6999BE36C0110423659F580491D0071B4AC2374D5D305AB506B24E63E44 +BBD84371A903BF4CC762A0E0D3142BAF794A332B629C0C8F87366F0130FB6E7B +84BF4D812759F2AC831D1E3703177215908039D66CF07D17258BA2B34EBC5D68 +E86A5F0252A7FD1EDACB59639A56C710049D5612818EBEE157A773D8AF209CD4 +4A6816A6BA050D5C23B85C53E6C50CD2ACE0B218C8F87A54671E271EA0A8477F +4A1DD5D223C0C644580373A57CD67EF1CCF7FADAFCD53843526AA357F666B835 +4BB78097E85D4D9211DD8F506380056F03D9C9DD9EF63EE9AE3A5FF0F74C654A +EDB34C3E9894E6248A583032501A0C4B3816262300859EDDEFC8B4B095130B91 +A0E583759F16CB9E5B38C42CE172DE2DE760A9E994233F006CD772964A621DDD +686F4DE3DAA62A937ADCE746FADF3BEF3FC2F90C3661FCCCFAD07CD4C22A2F8C +4DF29BEC9C4ED7FB3006301DE829E18EC81C8B7F27EE3AEBE4292548C844523D +A6F07705F4F16891D5C310B62BC698014846F9887925163C732666B6595A19CF +4344B5391DC011EDA337BB0D00891E6CAA8A6DC61C87C467181950BDCF13A7E7 +BECB71FBD2BFCD3D93135D5A508D172C3F63394A741E1F6764735A61B90353F7 +B67797C681A1AB28131E8E29CD12906A9EE1E2844451FE9DD9B0228AB93C7310 +F2FC310DDABB8418B1C29DB475E42233826FD9D0800196D6A825F380165E27EB +EE33F99FCEC55AB289E5D5BC4B02DE34008BA722EF503608673CAEEFC884E36B +2D2BF1B6410DE582CE243523ACDBBBDF75A886CA62C634F99A8216AAC0B762BC +4312371C42DF685CD54923B02A5C7610CFBC2F1AA39F0FB7EEE423B787308DE5 +634071E08F7659C70A6EBB94826EFF8C817AD6A01B13E91F0F15F43100B0DB6D +052DB9CED475535E482A58E3528B50D66BF785454A17DA4E4280AAF58F6441FF +0D18F744E745FCD33024713DA26FD532E640E9BAB1195BCA469E9FF2476E9008 +AEF4A4A68B5114A7C2A29448DB7A9E93AD6B06429D760AAD16B48FD9D5395480 +36315FE778F795CD7B4F4F5081F8636FE81681E643BBE83740B8393E22293B6D +008C845E6B3B5F518B34337644792AC0169B793093D308641F4A4DD3DE51AABE +95E16160C170D0DCA01374D0EF9C0C1138AB40F2DF6E4E7E5C45C8707182F8DD +DD59586336662C831FD0228595D89E5818A85E6D2C461A252BC1A2DC5895D28F +C2CF0BCE8DE71A094B7BFB56A0640AF9274CDF166B0AA5F9E32C5F595ED7CECE +10F6DE434D4CE74211A93C88625E508546DD3715A18800E4829D27A0F1067F0A +31BF17B596F13E728FBCC9FC0EA5D01AA51B5CD8B76258FC9A283D7E7B8CF14C +80D2EAE16E5F6BFE3F773B6609BA7473B9431C7DF9560AD9FC6E4D64DCE17C7E +9AA26089E18C5AD0FCB8F1838E58124B0028B2C2E4D5CDE965D02195C16E968C +51714CCF9206576B6D07128DE08529C4D94A1E2986E9060CCBF3AD61C605035B +F78A0F954F3E1E5227526C47631375202CE7B71F014053C68652EC5DD89001E2 +780310E4BDBE74B38CDABB12B604CA278AF003A951F7361A607A3AF0E1CD8C8D +065668CB80022EB608FFD13A49FFF3DDE556B4F8BB7D8B379120AAB86D71AD8E +64CFFB848D698536EF379DF427309125FDCAF1F521A767B8722DDC88A64F50AF +EA8043686A2BF63A8B447B6B588ED2985C773661881ABC98E09DE56F7F1FA305 +78055AB3C1C99FB40A4FAA548BD9CA0B95C29D74E6A32F3058EBD42AC47B427B +98D24AEEBDC0F957EB5887100659B402AB542EB5EC0A4CD278ACAC36BD87798C +C41B89E8888E23552B06434635D39D6E4011F9E155D648029FBB2D9F8837774D +BB8A7D722A8EBAF520E0CCB55EF124E5E189BD7332E0EA5A90B10AB63FE405A1 +6A40F4B356482ABADD9EFE8E7D2876F5BEE9405EAA684BEFCD179271C29AF089 +097C485E4D7911EDA8997D29A67B9C225D592EE5B3B79C3F8931FD7B1A6E3960 +328E1E2718E7F999714A6439F2DD59B5FA553106F3CA3F82D7247F61020C7440 +F88FE379239A75D25FE3B3F20EAADEE28864FE249EE86664C792D92FB6E0EB6A +9D3F154EE8B06501A347761BEAE8929E122790A718E2389AF824728904A8D449 +8DC150E294B5C9F4607019120F7255944A9A8D269ADB25FA6CF19FC52B50FE7C +B86962C94561EC3386D0D54E476AE255B82A242DF5676D26242C59391D0796E8 +63039DC728F0787DAD489F3DD3F7DE89561892A5E8A38A3B28B7E942CD331E9C +DA010D80EE13169C73F055F2941462B954C1602E2BA63DAD5578DA5ED29F68C5 +50A869EBA6FCE2683FBF6A22EC68D25B306A27B79AAF8E889E82E2986A8088DA +7934ACB4168DF49CB75BDA561940C8DD8A7800E4D0A7C1DA6A23C48AA319FFC9 +3AD59846534F647DA0263EAB436564B6A501473795D2E5B5BD1E071292F958F0 +909A4247E8714F06A959A5FD8407A4B5D701CAAA3D7AA7931E091EADA1821DB9 +A795A21744000A01933981BC2C3382CC6C2878BE0F3C91DAD353C9182ECD3DE0 +C8A7B8921F87CEF6A6124BEA3D7F77A4AE68731C0AA996A9BFD86D7E78BC99F7 +E6B1BA1CB38EB0F4F36CE7537C3476E85123D3DCFE3B925BD5564705E204B101 +FD0DBF5377E44978B52DBA6BCA2780DC42620ADB6EFCB026C148EFDE93DAE351 +9388DCF162AD385FD4F9F3A671FB07570878A52DE86C00255E93B45D928449A0 +36A0E59C8881CC43A72ABF81819AE18FBBACECB668E0F062591EE485CEEEE60D +F4F218CB633F7A0260B4884CF2EECF06E5705A197D2990DA5D9A7456129FB40F +C0C6B3B6B2FC22D4264BB48337A98C375DFCBF80080DF4AA0753293E91C96FA5 +12A0B8136C7C4C80FB032C68EA75660EBD1FFB27491B7A6D984054D35FECA9D1 +5FCCE108B2F3C4C23202CBF5B85BEE7F0F420FCD74CC5D558A016874EEE3B5D7 +8E046B303D46468BEAB588ED948712DE467C5ED1F42DF22C9B402C596D24B72D +2F609E7CACDD293B5BF0C9553D22C47EA88339AFD06EB3AE466EC2333C1C85A1 +00CA808A4264FFC89A485AAD982CE70C5EB9070BE28B380BC239FEE14C455994 +726DD99D74920AFA174CE979BF410E72A22D151FD7BAC732B7BDD1A4142BDB99 +70B521BAFCA51DED5829A9A36F7FAE6E41BFA981FF2F209C9F3DDD617890BA28 +E2CDAB7E51D49C22F338ECAE92B418855FC59577F8F199F5E372AF73701CD030 +273B84196E718BA54284A26D724ABF7E698A94A47CE3917467540AEC57B31E4D +3B8691B200EAEE8444AD5BA8C24A602B7EFAFDE2EF05BE950222229FE68CF9D2 +7B5F40456B0C5A884385AE655B9AA57095B4A0B0199E7C787CCE1E0C1CAB4E18 +506587C792DC259D0EA306972DB6170F008FC9582D4930BEC21D5DEED3670071 +85EB62A3BA27A30C9245F0380F3FD20A085DD77661C3408378172F830AE09837 +8380D1C07DA549314DFA349E9566259888581E212CCABA00BBAFF7FEABD4F848 +6672980B30A1968293CC7E8A6D7DE4A5CFC7BA3708A76122A3D2552F69B6E79C +0D6C120A098404EC2B2B67E80DE56BE7BAC2A05FA3EE6B68596E98E3A997303A +D0A072D846360D0321F3F856A8C7007F489B82BE253435DE87C8163ECD0489E7 +585ECEC657A0E040A9C1FF28C94BE2B2471AE2C5966778FAA120DB1DE340E3BB +9164EB236F63D8663566C306F263A79D03FA3C26F0A3A6DA8D0AA119EF05A515 +CECB66F7D06EE72C00E2AE1363D5DA802AE6FDD5DC07F994B332332FC17A7AB7 +258A0328BEC8F828CD3833F6066DADB4B62C42FE93F07E35D1C8483D12D52954 +42795EB0130CF2A6A2600FEDED32D288DFFEB25FBA5EB70E4B78601A0A653162 +5F6A3D4DB999E0AE48E8CAB9E332048EDE4ED293CC62B7867F3159C28D6D73B1 +3A951C22096D1A77A68E37C2F6CDF58FBA5CE7D6B4E5E3FA78AC2B0845F7CE15 +A27B284DEEAB751B1088C9E190F4B90D3D9E068AFE56EB07ED0C8E332A49E8B4 +65570124F18665724A3E52A204BDB06D68B452A4D63F4B0CA4DFA3CED2FEEA1A +D86ABA5D4B3EC7943FA2DDB74F93D3D4A1CF559D2EB3CBA0B986E939137EE099 +42CB3160219BB791799DDB079A10836EC5AC37E12137FC33266A7A6273987E57 +C97EC1F6207AE4517CA2D4E08CA90A5DD27015C65D22DADC6D06DEBC6BA5989E +F64BB70FC214E1536882F72ECCF238CB5BE51A261CE55661ABA44D00DBDAE487 +ABFE21C5178A131B5CB3 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.1: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 11 /ff put +dup 12 /fi put +dup 13 /fl put +dup 14 /ffi put +dup 33 /exclam put +dup 34 /quotedblright put +dup 35 /numbersign put +dup 36 /dollar put +dup 37 /percent put +dup 38 /ampersand put +dup 39 /quoteright put +dup 40 /parenleft put +dup 41 /parenright put +dup 42 /asterisk put +dup 43 /plus put +dup 44 /comma put +dup 45 /hyphen put +dup 46 /period put +dup 47 /slash put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 54 /six put +dup 55 /seven put +dup 56 /eight put +dup 57 /nine put +dup 58 /colon put +dup 59 /semicolon put +dup 60 /exclamdown put +dup 61 /equal put +dup 62 /questiondown put +dup 63 /question put +dup 64 /at put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 74 /J put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 81 /Q put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 88 /X put +dup 89 /Y put +dup 90 /Z put +dup 91 /bracketleft put +dup 92 /quotedblleft put +dup 93 /bracketright put +dup 96 /quoteleft put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +dup 123 /endash put +readonly def +/FontBBox{-251 -250 1009 969}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C +295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 +409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C +4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF +2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E +0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E +B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 +24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B +43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF +D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 +5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC +96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 +7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 +0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 +B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D +AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 +97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 +FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 +20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4 +0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD +F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20 +3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122 +A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379 +5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA77428025D4059BA +2988AC2E3D7246BAAAFB89745F0E38580546045527C8779A254DB08DCC6FB9B9 +0E172209FBE3857AF495A7F2B34BC895A39A30F903DC6E3202D29AC110D868F4 +7184CB78407B8B9D42F6375F67FD4B828592E4A977B9E71854D143CD1A9EDCD1 +767CC2929E071FBA4C3D17500E28A23F697B5D5CC68D5F56EAD14BD504E07182 +3FDC12F5404E74EC1C02AF00C1A6A17F958770ED4A024F5B3644DEFB61F2578E +56013D0B4E7CA3AD255E23DD63369A921D427EEE0E098E8148B16E8A5613A8F8 +A5F1099E15AD16EC554B644DF306F0CF3571055A81F1B464529DB49E919F88E7 +581066BEC4765E31BBE28C245BBF0B74610DBA30C63A71A4F3B60593A6B41C6C +636C980828CFE9A3362FBC02F1967F0F770A4790F90DEF9D56E0A76B0703FC58 +2841E6E8D984FB476D4FEB960FFB6B386EC6CBB9EB83704B0AF63F38C77090A8 +DAA165E6C6BC86601B14F8E9F504A9D578AF05128D8C1BCEA9D21057958D5DCF +653026524A2D101334AA3DF02A3CFA410836E6001561C00FB34AB04FF97302F0 +7CCD024F8C61577E82FF229A45F7FE22ACEDD95AE8052044A41EDF46B8F84346 +7275F5423171DF88188EE93BCFE0A84AE5C999E9C774A32B7A2826CEA8A8560B +2F61A42F967BCBE2081DCA5547D9EC53467ACF8A6AADFC54CEDB7305DD661ECC +3FE33D8C93D2425ED57BA83F360A384F6B94023EF8938DC136ED1F66CDB618EA +F40377CDEE0F17653E011F5CDE11C81A3FA5F7168681C02167B275AC0F73EF89 +521A152823FCFC811C71E5D05D99094EB69E5724B34217D101BAA302B5BFDDF1 +4DE66F7887BFD458C2A97A835C72E7A6EC2500577B0B057BA1B4773094EA1954 +589FE5B1D1B4520FFBEFB6ECD015B606A244E605E78D39EDC316D97D99862CCE +898341583D28F141A02877B76050B07694737E9F107F153E5A5C7393CD479A09 +114F07D12DE0185B971BD526301914EBAE20A38DC804C2319EFF3C8C4186630D +C91141528F408EEB02C718A0A3E0D39D1C9853F71113AC07DD209828B4873031 +3E7A4E45D95025D9C558CC0C313BA3333EFCEB2D95B7BDA88C062E5243DFBD99 +744C678DF4AE3478C68B4F7BF5C52DFD8A81DA0BD2C95229BA43D15986717CB8 +A925638049C2A15A6913B9819B3642F68A07C4FDB2552C97D29211FAE2F16E40 +076342D4C5A72E0D5185CE8EFB7A8D87D7F345E776512E8B41609794052B9A08 +87EE0DECF203189379B9DEFB8DEC9585DEF2B44C7F64B4DEE827C74B975BD1F0 +82D7E511A5A0FEBD52702F7E68157B509F303378B191BAFFB4229495AE65C558 +D72D9AC8286E61633B29CF90917E4A01030D6B82CBF263751BCA8AB219284B04 +80A8F4B34D0592EEAB82D64F9A5EB6A08A6CC5A7F3D3EE2B61710DB386AEA658 +7A059E9633123EFEC39FADEA37C4205112063F7BD3D2F8319A30DA796E55BA23 +00DE2B3C15511F87044ABDD9DDA9247B5E785A01A05B39F1A395E36AEA4D3D4E +ACACCB99E99DDB1AD1329069714FF050311B274E495FFE43D33DB3BE958098AC +61150EBC4F9DB7BFC8F6C81047DF0BABBBE67970D14524C82334B693724A0818 +0007E4E848CE4AC8F07E72F02D74CC5C06DE0A67A63156F9567DEB913E874E56 +B993FF1EF6774A9C582D8DABECD1EE1D1731457305A989E9BCCE8CCA4872B3C7 +7635D840A0FC8FD9A40CB7B2FAAAFAE3274A2BD0CF7F681E877830103D2DD3DB +761F3D925AED45E0427BCCF205201BF0DFC16C0109A4389F37F25AC6E4E70C85 +1BF6A47B91F62079EAD1D983BDD249D0EF82B21F89FE58CCF2612BA50EA48901 +6757149BA3C3FE22E61F80F62CCB355082A71F1C85E8819E71E8997CAD75ABB6 +070F0CEE40E3A9CDBCDE24D59F2DDEA887568EBE585EA8D40BB4D0677097E73C +1C76DE3BD95B2BD843B1522540C5CDBBE4E1E6FA4A77F93E724F4942757B50C4 +40E316CA4DAD1D9D36823BDAA73E3BEC72B03F6DB2E99C89D2C3F840C15CBBAA +0EC7330D23A3EC2780813F0C1F56C891FC040B958C7861DCA654743DB8FFCE0C +EF4EDF238CD820A3EC97CA497B2C2504E43B9F29707D7F92114E8053CE90C494 +4C3E681028257FAE5E2C60C3E1A33E40A7C5920A8E6FBCD4686135296590D866 +1359BCA5B650EF33AB7582BC61158A573F93C4ACD4BE3D0E36EF1A7683B85438 +1FFA47955F8C1EBB80BEBC9427F239EFB50BA42D8C72AC0F77A511AF3832F819 +FC3576C4A28B6154B8B14B9B88A84B2E9DD9AECEC59A9CD717151FAA26CACA64 +FF6B2A5F561F77E9DBD2285695F0B1DD8D1D174EC5ED48DA7324EE88698105B1 +E28FB0EDB30067AAAB1AE5EF6527DD1A83DA04B50E5E2B7F2A63F0E8F924B2B3 +734ED216DFF4E41E2C074741FEBDBB01A103B5A68961A12C571A0A35CEDB11E7 +DB6C9046AA97B45F756EF5B32CD3E1446C9616BB8A7F57308679AD7E5368648C +37F5CB0CB4C95D49C8DF2D30A8C17D8870BE3C4D9A077BAC5EDF794050C793D8 +D26A5DBAB2025FBE4841308D5FFCD592C37514D1EA9F7286EE8789D41BD9E38A +905038AD5FA8405AA7568F9B34F43DD17FD575EAB5067147CAD8E9C0A454B292 +74635B10585CE8D8F891A07360DEED0DAFE9836B006C3ED2B6E10674CC17CD8C +9A862C5C51EFEFB1AA02F313DB95969B90714C62F32BBE3062E2D805989EDA55 +0684402A5FFD3B330B194B1EE4490D05044859619A7A6A7AFEB4909B63CBE907 +34CA9F2B19D27DC59F737344E1298EF87FD4210D08FF55E143319DDDF5E94582 +1FD4C58EFB00CB9C840ACF598F300B9F6BBC4C83A89E7CBDE9F37C0EBC924777 +9337FD42AE2B208FC6CA3E0D9FF9AA07BF7BB68ED07EE307267BE7547020AF1B +B3D65F802A95A69A2CC366B51AD5771EC679B23253F21CDF12E8584ABEA58D92 +38F3B4710D434F5F967A9868BCAB5C4B57F5E1650356F9509050F03FAD247F06 +607D717C4C183CE793BA995DCC37C836BC994465C1785517466DED4A2CCA2AB3 +32F2D92C7DA918D720341298C650B4ECC780A457CF6CFB2120313BEE25A34AD9 +3B2C2B587AA791104E38D27C117C3B4255791862E6750FEC3C32A5B965D72FB6 +E333DBAA452661F88B7CFBF442A9CF467D01B1AEFE817317BE81CE3479E17E71 +6C24D0A6C08978B3DB9EA09567FFD14118259E858E88648222DFEB2A655E0A0A +98F08F3D13539005E85DDFD0B1CA60E48C0DC80FE0AF9550344B07548E9B3039 +E9ACAE903B7A3AB6FE24324319DD792FC5140A2A368D233140DA5690D5A8DE57 +A42AB04F6E9D167CC3D0348FA7CB3EB537AEF89B99C7C93F398C9360A0B1E2CB +CC7E403B1E439CE040F958BAA50E36980FB3EA7F789FDA23F4292E566BCBB731 +38BCA4A234E2A205D815FE2A450DB6586D56E8C1AC62A50DCA49CB76E122D050 +E1A3413CE5BA8BF96F34990DCA2668FCA06BA66D9031AD98650EFF39D881929A +28D99CFCA94FDB163F970F29F3A2617F83F4894EB997EA7AFB67A6293A08E00F +37D5A50FC0C360BC4B7F9C876A6351F9D4B3279C1083D6DC79F5A63EA48CD5F7 +02FB3C581F446AA9F19603AC165BAEE2EAA7B2574268947479540B5801FFB122 +AEA27CE208AE86BFE14B8D139C16ADFD5D7ECED40EB0E258B38E509A8A1E07F6 +EFEED540300ED1EF27AEA5A9B1B0FCF027F626B7258F4485B8A17399188CEDB4 +8CCD037D55F8EE4BA5D2E876DF7083409DCD95F644F43778567B61F3A41894B5 +485A87B1381E9E98C713E2BDE4594977B85C7A4F58D542C634F9F76B9403E23A +87D1091723B30E53CBB97A1406EBB78A7E06DA949505FA40F0D5CD0675EC4B6B +207B7210210E7145ED707377A9A1534FF7ABD8395083EC23928A03E3016F636D +1697B161377879568A752DDBE939BECABDE106790248103F1C6D75D474584F85 +33DD684D3E4927EAE6DA1C2020EB78B226A43708351B8844E4A491E82D018AA5 +AB46821A444373FF2CF81F996193D0C6AC98E2302BD0D7909BE77D97F1A6CC58 +959CDBFE69014EA8F95224F2D2EC70DFCF8A38EDFA77581CABF0921B863A6544 +24740A40AC91E315E97FAAB8D490AD44AE6805A9C7471AE945A40886A2DA1F03 +7B94629ACBFD5C307ECACB6DE6FDD477F439CDBAC935A94679F037F1FD6DEDA4 +F4EABA6C9837CD7679DCF343E823FE70D065D0379ED0EA0C51DF0700B7F97775 +4EEDBD920782FF119223FAA23689358F35C8A68566DA0D9097C6D0FBF163EE2F +656EEE4291F0DF40C5F4910DBBF3A9A33A0B349A2FF1D01811857F9335FF04B6 +EDDCEDA0172528348FED69047FFA80E2EEDB6A612082134CED2E167A061EB226 +CAB50190F731B40DAB9650D4BC581BFEE93A2CEB9E9BBF5860760405127A1E3E +7FBEC40343D0D2E8EB80083B354C095C483A8405B7BC144FCC23E8F25E745A4E +8C527635AC995A1065A7FCFD805C6CA7CF611C06845EEE14D07B81E3B404E727 +20CCC5BD3657D1575949FF993A71F5F8C5236135963F13D8C09B1F3B08CAB6B3 +58460385AE220AE727B0CB9C05020EB678240921E0735D7A28E6C17CE22AE05E +6C9DE888DC5D3E24C60BB94289910B3723F60A74A8B48ADD5E03B6886044DE90 +69236204BB7411A3D9119333D328F3A7BC446AE7C2C4C529D5E3D501EB99C900 +D040D670DA581CF03FE6243093192F5E91A13B79BEF60D605A2EF3BB93B569A6 +9C533A1AAE2CC70151A0BB5992A5B8269472E626D299F66D3DC25952AD9CC205 +25572F56F774E156EB78B0406C4DE584660E1AC7E629DADC0BC41E725BACEE76 +FE217A7B0190A4CB69E9F32F4F7A184BF53EED2B1659DAC33A2EE695A88D9F07 +D076E3ABCEA448A576DB7B0C5549A5A2D63710141F4E539DECF167EFAD871552 +7BC24AE52DF04152173D6E4CA827DEEDEFB7E9C3E72B5934C5DF97BC1EB23749 +F776539AD43E9200A04341EC0594EAB62A0C7050DCA43945E58C4890350F3ECE +5BA67C3D716D5360A5C1FCB6EAE1EC00D59B46402B16B14B821EEAB4758701D4 +4CECA59735D67B099AD9CC4BFF50B846CFE14E35E4D3D1F5A3ED2641ED940775 +0067986ABE6AA117DA321122636AF7FA88AF53A473BDC12A4844F46F43D94ED9 +CBB72CF2CCB37469C2E63661BCA5A298D5E9C6BD3D41853FB4867DF938DF0391 +2F7ADC04FD1B0D6B0D5478581D4A2E51BDA015A4FAA53378696FB50A3297DD3D +20C365B963BBEAC22789E0073AA921F0640F63DE0833764999F02B66E800991A +438223368F1AD8FADC75E2C5130F76148FBB0ABCE3B1270C6F1CAB55259B5290 +A10A1CD5419F9254ACE5834A4B8A71B8068EC21E6C4AFE9E790C74EDF7411289 +3AEF976BB7A42A7CC1AABE4634CC1700272E6B272BC6CA5F1549F3172537FED6 +C4047BBA4FE5776BEB53E8AA82BB17AB4796C1F91264A7B7E95EC14C0F74710F +9E9CFD51DB71C3CFA152D6BAD9E60B38D688C7CC5B587F37BC2301C2938DE2E7 +88E1607E5B0CE6AFD63989315A9AE3BACA1E0C0E0F6CBAFF02685282033A7532 +3E5B0AFB7AF6F4E3FB5801D175D02551F9746503A2E50AE9AA8AB56DE79BDE79 +74B4550F3890818AE801957A3B6A822614EB8D12FCA584EA8C41B814D30856A5 +97C3ABB9F665D1B72B8D19C4D2BEA46AE1332F8BD2A6FD2C2A1183E48F62C4DF +4175B4CD65A9B145D400D1CAD7E00D0D154182126764BFD3A267F85BC623A575 +92FFC5A063A9205A02C89CA4B40C4D489F17D383FAF081A3C0B2C94E21BAED8B +1D06A4495F917C37F8B04070E9A90F60AFE3A8F0073086F00C5A707A96D4E1D2 +BE5A637EC1C614997446262573426452FA5872FF661B519E24A34E3C58D4A07E +BBB6C294D4DED3EE01A853EF8E153D905B0598241F97301CA600C09B7D116901 +77EA1F6C40CBF7CAD5991EAF92890305BC710270FBD575B626A59EBEBE2A9A21 +D02700440C57557225CEAD5FC1EBA1763746A061A7F4DFF5558F6CF9160F7CD8 +7C84BE7407ED508BEB2338DE3C5207A7804FF21C4E0FEED254C0DE812FC8DFF3 +4B5B890B24BE5AC7C00DC1C193C88A6B33A442E184B4F5EFF79F4CACB8A56DC4 +05098C620D63A0135F8FE2959A396398A421FC16F8AFF99F702C1B10F92ECFC2 +2D86DB2489887879926E2AD34DB4F7A9CC460E12812C24FAB08ED0F2C3DF3FCF +AB41034C07225F20ADA5B5AD6AF5349319D3F937DD64B2E0A0887B880BE636CD +F814C498584F19BBB3FC146035E4EB4A3B7EB436E7713D968B24840EE00C019E +D08263764CF0839260BE71F875E5408AF4A8AB1603F7F694C2DB705F6E13E1C9 +4CCB224D0E2B610FDC729EE8E33366D0AFB0A014C3AAC6B915C2268C27A65624 +261E38226363108AB1C12BA960649782D0A02F87404350EB7F58C6C54463C1B1 +334F936DDA18C96B577D4409F18E63A79F708A816096A6FA1071B1FBBA3DD470 +C00F032534140440012988D81DBFFEDD0F6B02827CF76A92F638A685BB1686E5 +D0624C445A765E6527B4D2FA2B8BBF035D9B0BEAA0CA35D937FA9B4A79224387 +CD974CC0A052A5C78C4CA12379413303DBFD11DC6B78507875E6643D36679EC8 +3CBB213B5116E5A262300890D85018D550C69365D717BD3AD5579C906F8BA35F +1C07EE6B17F394FDEEDFF5340A86E28FDA9ABD8803D832117A74BA868326A1D3 +4004DE8942437EC0123075F2C6B97B306AA3C806FBCE7CAFC83C2CBC77E25C3A +082DFAD7D69D36ACE654CD17916062449BDA3C3AF3806416B16C718128326DDB +062CC9FFDE6FEC2D0451C4994F5C681A18D7E5310917B2994756AC8FD055F7D6 +92FBD23FF685754DC09F36AD98201040626C381FBC63217DDDF511ADE6D13101 +0043EFEBFB8C49652EF4FED438B5322D83C6B998BB46BD5B5F31BA2DADD76B78 +ECB3D44A2AD40518C22914CF53AC408E8015F2E828F6F4908FE0C85DFE30B8AF +7A1E91B6AC7E25BE17F971DEE8271DF880E440EC95E45A6C909AB0DD6259AFAE +35B3AF9B04936FCE351DA6D244D34EF22D0B8156A583845423E93A3E5C827287 +EEB8E89E19E4FA0D6406506B73285484A75082DF8E0219FB5543B57AAF63C47A +0C5616682F22DEE96A8CBC70BEB556DF3E719CE0E70FEAB87448B0FBF45EA6E0 +2006416E39CAAC51A4568736D8F0270144CEAA8CFF832AD16907E09E49444BC2 +80306B769125A50595838E76514A7FB0F1392AFE209D8817FDBCA2DBC8CBF8C8 +5948F7E471B6B94D7FAFC382B02824888D3C5860D1AF18F729678899932A1AB6 +A6A7A3FAC08BFFEC6FFA3CD9543D36AECD2AED91B0D8674EBD6A9728FE8BAB6B +4D3E8E175D0941775B3F96144DEA873B48F3F6B7B6A30D2FAB960AB555AA441E +69DA76ACF6894AEFF47BE6BCC094E42D735EC1B9D65474C31F0468FDD3CEAAF4 +333F60053CFEEAABF43569FD1C216FFD77EDD13C344A0024CBDBFAB9CEDEC95C +115192A65A818C166A5C4441FBC0A1379D0F3FE58922EE49BB91857A03BCA8F4 +0067F324EFA67755AC0943EA80D0EED33A817BCE9D5676F9963844F6A2DDA48E +C9B3D9B1E9F8CA3FF805CEE70807B028510D0AC5B13259280021D06260FAB24A +0143CFCEE0C3FDDD6D817C717DF925DF5022C37A19FF63F77D464F699F585E93 +CF29D5AC1F2CD04E992E5E714C1EEA2FD56400E45A42813E4BBF87BF0849834C +F54A730E4B399FF3BB4E14D9CBAAACD79CF06AF35C128CEFCA1C43C8A5ADC1BC +3AB187E52F70A2562F7A705C58396C3B9198C78AFB0BCAD890956F7D463C70FC +0DD0AD6AF96D778AEE93A3A79A514A16C0324421D5DD3F7BD1002252E0F24DDA +3EDB1856E47B979C235BCFE8D6B2FF68864FBAF0CCBC3BCA811760643E0B2E73 +551BA0BCDC4037F497911B8A5CCEA5AC79B2C8229F317B690108ED2C52E7429C +01DFA8C97FD5FF794EA69BCE240C02A9640CB5194CA6AE598C605AA92086AC82 +C983661FE88DB62A3B732F78F43B93E9C22A09B29FCD79E41053D4E27CE6F3EA +FF365338B03B87AA0D48063D02B8E4C88075FB2354A05EC177E3FC76FE4E4DB7 +7337F0AA30608A6775C928A39A515C20A285D0C4541A2A6F06E6844A6CA428B1 +68D522A3EA084A2EFD17E3FE423F2F55C9F19E842D2E30CB79026C2D2DA9CAEB +8C4DE6394771D9C2D071F1B17047FC66A2ADA0FDEFECD6FAD63EA5F2196CCBEA +A4DB2C62A0948DD2A8A0D30E7F6808FCB912704E647E1FCB8E54D27039F67009 +4E995339D198156D3F6522EC70AEB3F22ABD6699C36386B98E0992A57FD9BED5 +D9EBCD492CE373E46A35A906C17AD2C4C490A9F74039075C8AFD8EB52C9631F4 +0CAFAAF50E8C6B4C565D859F6DEB844846D560318367C21967D6100DBE5D3A1B +DD12DF6B8A3633BBD59EE865445D2F1E8814D8D64C3BC913183B59DF20361B66 +6F3DC614B9AC2C2CA4C30E1A01C1C2A2054FB4BE7D58C6BFFEFAA4E13087C434 +ADC6D8F1185F68B2003E7EA12A991128037E54D2A88EEA2E794D89BF531E107C +54278EE82F49454FC13638CD0B83C142BA3E0F5462CF92FDF0FA223EBF69D12F +3D99BA804FC467F40945B1B0AC23DF88BE1BDE21E296A82870F6322630C06823 +27629EA02637E6E3E10F16747B3EB3E479AB8A347FD46D581608D453684278A4 +AA58BC490F673269CBE7356CA4F9E523CDC3F5D98EA1B95CB686BCD17366B609 +72BB6B2167EAA0D66E36EF6A1170EA56A8485A659E55C8D50108F6455F1C4227 +6CB5DED36763E54089C6C04BE71D5B762254EA4374C136F98900F25B239652FA +71A14A43F046EC8171C490A5755F90DE4ED09F8AE5EA1A6A98EC026B612BCC35 +6879F1942C6B45DF7A50F4E49B8C8013164CA04DAC46F1D799071BA6402EDCD8 +F55BC6B064A2264A37D4BFE59754703B2C13BC4C2586A61EE4A9F9915F00FC13 +05072451125EB001CE97BE3933239DF6501A664B45FFB5E63467CDA463A5AA14 +504AFA4C8D4A976B459D8B41046615E06DD43760FFB72488397A34C4648C8B4F +C56454126529C50AB1D3B328136D31F79EFA1EA011C8C6FD6AC27FF2D4218B34 +3F99304558FE4B1C81BBF4807AA89ACF653EB74E9A2C85D8DEAE86F1A7B3B5F4 +077D09031A32E48C069539410F68EEE2A7ACE7B200CA099BE59009268219DB52 +27A2D68DE15C91ADBB30775AD1701708749754BC4F0BADF52540EFEBCEEA9FC0 +E00ED70078142201E897E93EEB6B8C033B2B21617162BB54060D3A14BA41D481 +9B2BCBFA81A176BF324C8425310DE6C313113A9DA8A950C6439996C957ECD22A +BEC6631437954D043A5F0F83508A7EB24EBE9058841DC13E42E5A817928965A1 +0566C3B7A4593733E519AB17F3995C6702E3378822FA575A537E720BF26BD14E +D08755D999FA4AF6D0BBC2A54CBC279C8E75514733DF7F2C19B84F043A4C9A03 +979FEF3A622C92ADC58FE94C3C6C6ED45472D1E48290173613F991036368E036 +1F8A871A66BE125074CAC7887A69AD92D96F157BE10A6604CE0647E5D2F6E4B0 +8E3CB6AD0E830C18B4C239094238357D1D371F643F50E81CAF234EC88E0CD6C7 +BF0B0626895B812E489153B01F94C0D86769A239879CEDBCF2402894B6E79566 +1AA9B48033407926F18C7399C641C3B0C898AC99AE6595E865726374CCE03954 +92D48AD6A336888DC372676F0E1BB9821F638924976163976175D2A687324741 +912DF146F8C7F6EA428814DF6F235728386BD3558CD588BB1699B43C1DD6B4E5 +CC4E75E69FE0158E8666CD4E86BE2E79148680287615041E559DF70923831A27 +63D40F0F873B3DCFCE27E0BA3F396EF61417E77DE37C0D11902FD961CF5174EE +8EB1DBC17A1B0FED2BB385C9475096D7EF37BE12B0D75F6C1883229F3A62A679 +828645A2E71DC2818B037613531463FFB0F84EBC614F6A9C3BDD29807805E580 +0200984E41C66B9C99A62EED7E91DF58C72EEA135B03B08292FF4532728086CB +5ADD2170758529CCFD0E652138B55D545DBFB5C1DD4FFEFFA87DB31F24DCECDC +203A0B9D242B8F0ABFA7484545FA7BC22CC5F30C28629086ABD681555FD8C060 +00F4B5444B0C79EA2F1EBA2CBF0C45689B6D4B09A1292DE9F6E92A9C52A4F601 +924EBAEDC0F478330826DC36A3E3AC35DE0B82145E378108A75D4DB79B78A713 +4A54643465AB3D1127B69467DF7AAB30EA92ECF0B5C475FD5922EE8310F8913B +7B1AD24A93EE946C8E6DAF09C3697934E94DD0074D8DB4582D26F9807786CD8C +D8CF959020822AA23D57077A73126BC5716FCFBFC6271C9F1BBEE9730198EDDC +41BF84898B24CD5A42D6D060C281B1810B323C5AC6032870041F007EFF54BD07 +63F24FED3250E1F67F98E4B73678A5BEFAB99103F09E59E5E80D4BC9A2977FE4 +3AE53E66D4185F52A001E6CFE374CB6A934187664F782F63E3C3359C66017383 +99693E9A5AF425BE05A681BF7073A3108C77C2A31A9ABFCB24384010E36CDAB1 +86219786B68AB2A6A7065167EF57C5EB79D790824A459A137E7CAE466F1EFF55 +8BA7CF2E9382C1BDBBEDB381E7BFF677DF252886AF2BF19B2E2D8C44E0C35957 +A0491E4723DA85E67BC6182EA0803EDF4BAFE302BFD52D84BB888A70232F7D64 +3CA598EF660B77E88A6A8A4A4D63AAEBB88E400D20581F2DB42ED3B2B184DF15 +6DC8E586726B5074EE71F347494C84B2365830A932A4F05F3EF70FAD933EE655 +12834498F3A58AC270D74CBAEF756CB8A499D3EA9B99C37DBD8D84970B188530 +82AFCAE63D692E6A72777CB1BB9523C75F9EBD4DC7F6E5D6F39862BB1D7AE93E +5BBD3E135E919421C3DE94A2EF81914B6EC5224906F83EF47292301C59C3836C +3F359945C40C61D9FC0AEA5A88A9A93DE5CB8DD195725FE145E79B7DF33B1FAA +F14A457C39D12AA5881FE5607251BADC4CA3A1FD901BEB971C765D568803D1D9 +832D5444A1D8332E125B7D865D5B28CD78C7043D8A86AB4DCFA769A183FB4B05 +749DFD67A669B7DBF6A6283CA516B94704D74F64C3FBEEAC15CD1A2D939CCF23 +3A7837791AA06E6167291EC2DB0C34846D7D158EF594C6499288ECB69EDFD50B +4AA7F1E37993781A3933174BDB9F8EA0D41BDF7896BECC4BD9E6FE17738AE1F5 +FC0B9D80D6247E861AA03A36B3BC648FC8610203AB27DB18B48BD494A5798406 +BD74B5D1631C2844DE39ABECFC6518C45A89E117D7C498348FAB6C512DE91210 +1C07826D1D6131AFC8B138B595641D80C8753C45ABA3EA94D2B175F382508B1D +B85D1133FAB93F41187C9399ECA60142A1356B1E5CFD821108C347CEA7ADBF08 +0B124290E9D736E2043039D49D7D297ECF51BB2D2A9BF589761AB8C1E7249722 +BB558C01661AFF993684BEEBD24DA09D0184440581B53FF4BF3C0129422E8F94 +F214FD0FE66F14DE284435437600C6B9CBB80CF7CBD3CECB34757BAC210DA30A +2DE252E3DE81792D101F032EFD210853B4D37CCAF643D71C4733C81202D5212E +4E75DE6E19A3F1905A22B668DEED9A8BCABC2365A1B2C6DA539FFC709B85038F +99A65DE1C6782F0C757D402F59F11968695061FD1EB1293BD54FC33E1C2CA4BB +AEA897043AA9FE619649D835D131E18DF17A9D1ED6163BBA1A9DD12B9BB42A74 +F67DEBE8DAED8AEA55A7F022159138F97FF379566A42354358FD09DC88FA9EAA +5CF2ED8B4D13C1339C07D398E96D0287FFCECA5C5C32218BB43BFE08196D3D1E +23973D34833CD9BACE28436A5FFD4816542473B7CEAAE489D7FC0F5012BCE6F8 +4D28102E67187E50603942FE7514770BB9157E67F1459F77B2D8FBAAE9A4C987 +295D1DACC6AD96A0818C9E875FEB5354BC2A1D28E2A1F45C8628D8D5B0C58651 +5083D10F070C42724CB17BD93D598ACE9762EB5060E2687FF9EFB1F58A95A5CA +1AF7B72010131F0618EF48E9BFD21C17B297812190CC427B569313B025C39843 +57E25E37934EA128680771B49E7A3F1978B3A6238EA54D83CFB84EC2A296791E +3990AC7AA99A9A5EC4A560E59F27DE1680C81E5930C136A83E8E7B4ACE6AAAB5 +57DFB10D605F501081A8808BBE3F6E297A90F5E09A3CDF26FC387399EF4D5C70 +E7A3E9AD46B0305E86DA98263A7F44357D4E950A63D7BEEB9D2E3DF3D066A6B7 +9E940CC10E8007B2CEA1C11521D2095EED15F3152F92B10E0B4E9AB74138F241 +4303245DED32F590E1FA35275F2A0A26FC74F9A04F1CE9280B9A5F136644B77E +9F4A7CD818309F8FF436B07EECB4E6D4168501F32B348446AB6D693C81FBA667 +80FCA9390E36759B14F7A406E66F7BFE7E91BCD495A53097E55EEAD39F8A89DC +FB4CFB345F075FA37C763528DCC7D80FAD8F674B107E60FA76597DE95BAEB3C9 +A3BA95633F1A44F20A2679BAC5D867A8ADE1270B3A87CF973424372BAF552056 +C9C37ED61E8A791D32997F15AA52A1F259FD02267DD7F43A218224DA371093A2 +2945C99A06AE36A43107BEA63FE56A9A2FC0EFDB46DF08C2752AF493035A5595 +EA90BD9847126368DF8E22FE380E50A893FB21914E78BAED3AE5F9F03F7027DC +D10B91264F4459B8D0136A8C4139C416C64E304128104B6EBB0F3978C69FBF5B +E090B5C295B98578A79FAD2AF4233821A08C375DF4C4429C93623C43907B99D4 +527E67CE7A73786E4D2F817A612AAC7B4D9E3F4A79BF382F15008DE76A9A8DF3 +47C60F100B09D971EC4690B1A04173A1CB66A2269BE80708FC29D82C552151CC +385F1F179889059D5D70D252C99D0F84D12FDC13FFDFADC11A731262BC8E2AAC +FD8FA176352F9D114322CAAC7278113C9B48C869D5EACE4215CD50A125EFAC99 +88312CF4E12FC1DA63029140E8EB1BFE1D79A7A338BA2188B599A1C224A0FBA1 +3CF40EFC11D7D3333FF371DED67318D2F6DC8B5F34A5728233AC9BB2EF214D67 +B3F2D0FDAA10F2C932F7AAC4EF557E31909175A3F61B0804CA0C762C53F20A83 +53A8A6FFC37E002EFC441614A8E540921635FE855CBF1338431AC8F66FB1E17E +6770C99ACCE479A366F00211F8915AEF2940F44E43FBDAB05FE2D64565BD2584 +59F65129BD9695C4787C6CEF7FBA70E2E0FE4FB7051F65AA824782F9887E5F96 +DF2527C15E39CD1D5BDDD48765BC0C528037F69F8C5F168810DFC2D974AA0E62 +20104E3F291DB79BFE816FAAC5765BA298797EA491EF82AF07769675D60F4E4D +F088426BF9CF41B0DF5D840BEA5ACFB5382015DD26ABB0851AC610B12553BBD1 +788032FDFAF98C64AF5E2FD0B08FDB9582CDBCCFDA38F256930349697AF7566D +F980076F5E072279EF92BE37DB65AC1D702B0E85C856482A8BA9B44CC43BF3EB +BB7504F1F2696B597A0FB8085E3F6E3BF178837363F750679CF2CCF7B01027F8 +747E1DA4597C8F93CE8F07D304FA72C64972CF08CD8B8F3331285EB0ECEDF8B0 +64B53AD633C6D90340797802DFB81D424DB73D68BADB7811765D83C2C57E3BAB +F543E327CB8B0356D4A84CA1BF0AAAD57FB9EA0E5C70090A04745C916A3EA2E9 +2AEFBFC64AECCA2DDA387A3A8AE1D27C6B031A28E8FB3F871576BBBBF7217CB5 +4ECD354B391D4661B278B1DAD9B3AA0F39883F31537E158075D73A5C4D37FAD0 +4181846C724986DA122D84914611B7C50DC964E21B40ECBCDE2FBCCA5A30E11C +5AF792173E502843DB785CD34583FF25251C712087589EA26D73257EB7B9D484 +72FCB8988317B1F886C5EB9791F4688F087DC8D2D0B82B5EC38CC026C45C406F +F0BDC2C47011AAAFC765C2E520BF3C90C85E0D4AD3D59E75585FA2AD70B3C527 +2383D7582779217F435224718C04EC8467BA8C9319F99F3F033B148B24CA80C8 +C2A35C0B3BB874DE6AA03D3DBED072A45DBC5C8A746F83ABB578F872D535EC21 +D16BE93537193CD36DFCAA9BC9FA95033EECDB3853532452385A71D1E92D12A3 +9AE044E7142F0911125B2C2C881678886AA4E924B5718172A3161C790E2E6F04 +9A28709CB38269D8D460A8415E68F64D6BD3C9ED9D9744DB7AE04B9F19B8DB63 +EF85CEF8DA88F8442E2AC150FDD3A15BCF9740CAE7FFA1DE92E2571CF2C0E0F6 +90F13F5ECB3CB88FE13D4B8963B51ABFB9040A25ACC10B08166441D7275106C7 +D5F58C5A80F4F5472181D985237B431B8DED88BFBE1215B6DB506B7838A26C4E +C129AADF9C36C4177C76930CF6008104E0B5E3A387A13CBBBB8109AEA38FC35B +E7DF40B4734AAF9A7CB819D94DFE944E994DD21EE7E9BC4014BA7F0A1FD7C098 +6F7A699E77867DA25507D723B6CF9174782B58AB59D89BAE119F145D61F83687 +2C2A1653B501E71415A0978D2FF39468686E2481CE4F06B981FC398F93555A87 +E93A098C9FF28BDCBAF0637CD63BEE7FA448538FACC04B11C068A16E687BAF4B +5D722363F7E1EF39B8DDCE5C947DC2A69DF4A4FCF40C397FB446A37E74502E49 +571846E8951AED1102A7B67B7038EA1C7ED210A077D83222E988C0E5D2B88BF2 +C71DF6C9F4400104F2E8DEA364D3A45CA1C1E6651C3972E89E5CF31881322FFE +AED481E2602E19D31A735C14F3C7A8D585C46ABF0C5C64BDD64EDD35D0ACF67A +5C91C26E2D53C47EEE126FCCAC1F7E9A67A0A02DBAC2C3EDFC15F55DD73EE385 +A7A32431AE18BD4F2C612FD5F5AF4380A259C0C38D22FEEE403A7B9CCC4EF62A +6CCFE803F270AA5FB5C4DF8419CCBF6AC611A721688ED51B82C1E5647F2B988E +2B84B5343C26D8495A23908A6EAB2D2376DB03F96D493A892B6548E0369988CA +A2ABCECD47663BFE45F4F3F910952056A5314843DBF4A8862ECF20B9C6427E86 +E90CF8132B2A03E1A0109C2C1973B5830B9AADC952F41D92EC44FA3E79C77155 +AD89D10EA1E3B30126889BA190C86ADD788045D0F933226A4AC2FF91A9406F6F +976F337400FF3921D372AD11C929109E7F2D7C2A494888CD85BD790C8119681D +83B11275991898106C693C0EDF1C19B8731A84A94470D2BF52F0123E5BB89E56 +39D5CCA023BF0625DA16DE7DB7611108CEA00E3CD4B8C03F31787EE00A94B542 +A88B4369139836FAFCFDA51CDD5ACCD351C567663F1140357C1414E3301174F9 +0FAAF917EC9C19DDA2F41C671B3175F49DA30593FA6C93A067560053822D9A9D +0A440C3DE6C4422E0EB2F7E86082F7734BA83D02C30EDA9A22354D1DCBC8D186 +6A43BF3DDC5209DD661A87CEDF97BA43262C6D418DAFFD943846120FC5E1A06A +5C7D847154E41CDBE66B0538189C130DC4094D7F1709F15460AA982DC438F380 +766D6937A65D1E01B70FC903E2D906FC31448FEBDB937051BD538019D849F81D +9C28FD74ADCA7996C9F319EA011A00AD195FFB5149F1B0B550ACB239D6D161A9 +E45FC9F9018F471885D62869831C55EBC118920B864BE49244DAE14794EACD02 +A096A5D16B4800B0A1AF3EAD075EA2476743425FE2214BDE468A20749C6FA35C +9CAC2363798D17891339B28F8BB6D0BE628DB425FAE39D65D3C034D041BBF7CF +4EF74A6AB6F656144930C034E57F02C528E054F65828BDE71083109F43FAF0FF +E520EB4BF5D92932BDE44D54797E58DFAFCBF5C819474A7B9282D087F819AFA7 +F13B47F2CDD0BDDA2D8ABE8D6A0886407EB8550B96844FEE859BB61C799975C7 +056361974EBA586DB2D3DDC859CFA0FF493C5C8DA81B2673AE6C94CAEECE4B0B +498E9F060E9948D0CB5C47040265075BBF6B40382EC26C5822DF3632F1F24973 +DE14BBECF72DD8535F05BF15276DBCD457432FDA386EA8131FE695CF61F11B37 +1C917751B54637348823C481D4C2B0DD4C98671BF1EB42919C6E11554D86490B +8E2823073B9F1DB5B04EE262840352032E1B9E4B688FCFB1144E43BFE455AE25 +F914AD37E6A694900C5CEA010A04631BA180B9D126989E46566101B868EF178B +6BDE396797925C90780A1840369DD3F7AFA7C6A2D46FFC8024B12C356D5FEEA7 +9270B37CD936AF7AA2F041836B00D3DA2F190F4E8C97FB7E9903446F8847BE6D +32A1772991AB24ADD997BB3B97452F21A25591459AA9F15A0B5395DE1D23B038 +07D3B35338E4BA1214570B83D730F9FE2F0C0695A331B8E391D1FD879FA2174D +3F83FCAE5E1441C51B7CC7AE625CE6F6EE29604FAFF1DD5C1FFA48599AA073E4 +E54E56028BD64FDACB47C715566D193332542E7A45F27F87F9BD0E7CFEC8EDD0 +C604549AA0831EE8CA7C68A8A4A6549B1E7C0BF2B6EEA70AFE13024C41557568 +D11E69C2F8D7962F5FFB6367016D93125A92DA39E25F30D5E4B85F66D34B0528 +DCD0D71BB767B7EC0A58272DBB90D0D0D0F661B783F724929CAAD9843E044752 +C5D1F2F6DBA6CBC67410623EC23D7C7EF15B18484315CEA679FC1526B576F54E +D1DFDD0E8ED5F2B1449A05501D0110DB989F62F815A30E84BCB0042A0FA14855 +77D07A326FA8F2B85E67E20935F9DF0068B107572BA80DCFFD90F922B79A85C9 +821363FF5AD881CF7C0212B2E6238B49813FEDCE319FC0FE40A42797235DFCA2 +0F1B939645B97D26A23CC5D1ED56CA253AA1E5C8E88E93C74F410835E3D5C2C9 +731649584619ECCBF3A50F95DD7EF36A8C1B5F63222863F0D8223CB787B88027 +54835558B8E4CD6FA1BD7E4024B6C7267C1266AE9E7D7CACD4448342BEDE1EA2 +717FD60DE846878BA67710AF4508F33E2D8D1827B7AD0A8C94531079BF2550BB +87B73A3848857F32B5D7AF2CC07DF0590D6090B7D820D701E669ACA06BA8F194 +02672D01ECD7E2BD4E29FE18176D8317BF9523D2900B7CCACE98E9B46DEDE394 +0CB3B65538418147C93E77FADEB94B66FD048E47A0F1C3BC92A51633F83E68EE +D239C0F2F5EB9EC68A048EB809B5B9F2DFE41F815CD33623CC2F6AA0C06C9F53 +ADF903E40B50945A7A288A016839EBA12CA78156F617ECF3BFC8AC106A0B1CD9 +9E2474C0DE1B88B5B18117CC68187DF5EF78C5B1AAE36D39946EEE1D931E704A +9D0A315054F5362FDE90A0C04F159F93715B4082554A6FBBC03AC4C2BB6E3A33 +8563FB20B664A350BE0CED555FF8DCF2AEF4FADEE74A09522BC31CF7E4FFA014 +DCA45475437866FAD01AAC47DA6951197066B69E6E850D4076C0F8B3F04355B0 +E26711458BA45DA22AB577B6D71C8697816ACCDCA0C59E1BD92FA8C730D09863 +ACFA216600EEE43FC54E9BBBCB873C64D0C9FE41DDCC573AEDA8A699F780950E +A63B8EA80A78E89724BC77DE5F7ED67FA860EE16D7E847FCFC198CFACF6FD4F5 +7A25146DD526769E6A4080E908C16F7CEB0EBEC4778A6A888414FD67BC2593FA +6D0111E37BE74CA96748A43A7345622CEDA9D1DD5482E8119DBA73E73A35FA0D +ADA16A14CDDB54D76DE1D407BB39C00AB23EA1CECAC9C4DBD64DB5AEC80AC9D7 +FAB6A1A3C4CA84F630A8D3A143A3490818A7BF0C8F16F6220BBEC2B8CCD528A3 +4A5F899039BB3E21B9554E3BD873E2C1DAE37F0700B43CD1939CE5D16773520E +7A915895E74BB21222996FB5623FC6F077F44AAB49FD6E8B6AE3C8A9A93DA0C3 +445FCFA9EC73F98378C5B4EF3E67978B7FED5FED1EDA85BBD4D0108D3E059E63 +28E11EC677315B68DD63C517853C1A65967BF1B859A9203DBC2F03C4AF6A20AA +E17C7103917CDB42303D88E4A1997B34201FCC208C941249624D039D069C2977 +B28AB8D215B245CC115024E3FD2ACB74184C8548DCE81F4D65D4CE268E360C03 +FB719F335050EFE6B13EAB0B9580437C6067F0251660588FB519409390F94326 +97C1C7A485E28C199DFB746BFD1CECE61C6F66D20946A54D9F05CC7F14BC7BE5 +9F0C229CD87F1A35D1AB547EBE307B0A5CB61F8E7661DFE503FF2EB3344EF7B1 +FED24165DAC30B5B6F39D1D1FA414A19E7FFEFCDF93808EDD4493AFDCA0BE31D +03EC07BBF75FFF1654E5D3AA64DAA505454A499E398C2F53DCB93BF548451764 +3E4D7004D97DEA315CB51588F654CDF6FEABADA788D6DCABAC86E3DC9BB7E42B +FBC1381C47277801E353B58400F9B9AA4DE2E1BF4E6433688C8569182F0F4568 +6D5E7931C695A5CC181A815B3D3252AFE7F25EAFCD8B07FB7B127731A25D951F +51506723A896F8DA4027296D11DD4123FE93BCC81914409D2E6381F1F2840852 +4214BDD7C2671B85AB24BF24F895E67A91DF23E21C5663797F049467329F3DB0 +A74763B8C6458A5C9FF1157F9DD08C37351A6F074E1E5A05F9827AC15FFF4A68 +93E1D010E02D82B63C1661BBF9113D415052C4C5070E6542E5E07223745355F7 +3DD76EDECF1C5328A29473B07BDEB0D4223C5D3DAA6BF3E639C2FF860AADA0EF +05A9BBEAABD8389112937B0F282A0D6C50A7CFFB0D214523EB8618583DF0EFBB +D98086ABDF5EC23F57F1101E86AFFD2CE314B4240380C6FFBE4530E6576180C2 +3A3695E4D70DAC730C2057578AA0CF3E8E464500C0F2C7ADFADCB41E1DB62D83 +86DAD27D800C797B01D3A701C62A3A1D0E1C18D76CEE1AC9F581CC1C697A6E50 +62053E7EB21754BA9D9763654CD7FC08B53A12408A4CD4B99F4061C41FD06922 +ADCD8518DFA056B825A24965B576EF1DE31E3A4E2E54AEFBAFC8BDF5E833AE8C +929405416A91A45AF0977E396ACE32C969C87FC93DEA7888A35B7C9E8ECCC350 +C9388F9953925A208E63514E9BCBDB99BD47D146DE4EEF08810C81DD6DC06EBB +DC1F0035A6DA0D99F32696E8B4A226435376E26C0ADC8846D28C8B875BD03663 +73592B3FB5D5A0C927140F27B6CFC0FE2A8DBDC77CBEE70C0E2005EBBAFB8BD0 +5B24447CEC27AD4225DB0DC1CBBBE69AE423F9622A4A8BBD9466962FB54B64AE +726060F18B3EC8D945009E8FB6C2ECA462758A78BE369F00AA4FB8534468F700 +A9376FB42130ED96EF9DA17B7B9589474D1427D0D8FF5152F6306527B12D4329 +3CF929105E04AF564DE552C4F06B466F16A8724945CDA9E098AB31A032CB2D05 +BBC3CD225A51D818A9695D6E32DA429E702632B32FECC25722652F67165695E6 +D9819D5B200EB3626FAE8FF7376DED2B1720CABD8AE2BC1A0A39B7BA427BCEFA +936F934DC88685CAAC7DE19929C9F99984CA938BE0044FB341AED41B19F97F41 +2C31E2C4DB232FF90BC0D15F1991DB60E7E944D90F7FF591136E1F260D3764C8 +8BA791589D455192A19ECEB8A9E80FB5506A479EE444322C4E8E8FF0DD9BCB8F +749C69C488E816625DF57EF673DB1A85BFB19D960461EA8E6718A1325D878D37 +FC7BC693F15D8A85AAF4C42216490BEA3D1638BE006CA2EC9D4DDEBE3C641754 +A78F6EB4B71D7517351A91A711CEE1FFC4FD57B0EF71E2959EAF82AB5494234D +FAAB49B1EC4DA7A2F3657458CC1CF6229901C2AF5339E2E36F92197762A8E446 +5F8F9D24A57B80850DE4264FA9F23C947C35801C2B557CFF02B15637D5B9B059 +9994ACD938E826E4DAAF9581A63EE82995E793ADE573CB2B9628BD7B899A1C1F +D437749137278A36B921206B70495E0DF379B7B7315FC02058EAC7F9128A3B4A +30E20BCFEEE17A99CFC9795F193E4356AEF6DB94A7CAC8880FAC9227A0BF78D8 +B7BC18F6DAC8E5CBA63996CFD5E4F78461AFECE7EF62C585B5E5DD40789AEAD2 +597E24874B3BA77799D67DF746E70FC9DA4CCD9BF40F9897092352B3A12682E9 +4A5A92795C8B52E212FBE7323349E867ED8FE78B8B42325C6AD4BEC036BC891F +0AFDCBDA2A75DB64EDD020A39A4AF0387B68D64BFED1C5FC11C58919C6FA0C96 +F617CA7860D5C10188376F31F1E323A95AB36138D4C8AEABFFF46CB6A3618ED2 +88C3BEC6184BDC2522388424FCAC44EC1DCF68E6B0A19B01A223BD7193EED9C3 +F5B838BE944E6C4CFEE7742EEFCCCF9F60EF632849E3306B990B2CA74B8F6AF3 +465A0BF22E1E59798302338B06682323B19C4E44FEFE84C0A210031F132E015E +E74264B3B0DA6E09E116572E707C45FE7010C8D291BE49657248E416B4F244F6 +E557295AC3633C4B84B5638EDA1B2767D0FD770654C2667EBE9494B1DC28825E +C12B1244900CF0F45EDD038BD90A98497250F897F1221A1733DBD4540D1B374F +827C8C10FA84F5A1F6A4C921426BCD3EAFB1B8C654131F15B4BA3E8D489F00EA +9BCECF58E9D15BFC1B16E4A08F0D5459D26559144278DD721DAC117E4C0F6EE3 +19930DF91DEDD9664287F11ADAD823DBAB597729C554DA905BC72A6686481108 +7FA7B78D41FFEDE9830955C6309749DE1ABD705BD346019D4ABC4C340C9A2A9D +CA7D20D6CEB59E8B7836043C49D33C86469D27CA62851DBB00E6B8F4E28714C4 +B5F277CC2CFF502F0E47352F296EE242318D73197E754E4620A9B7DBD075C93E +5225C68C47BAC50FCB58A6D33E1B55A39D131DBDD4E014C126DD320293BA9748 +4712E66FBBA2BA24BC8F4B1A285AA123F7B8146F4684CD922EBD333A7B493CE4 +F9C7BDE8FEC45429EC26DF8569130F0898C3D43F7CA90C210B103117911B27C1 +A14E0068595867748609ED646B5E08485E7467C36A528C738C1B7CFA362CA720 +C088CB808926A1D895DDFA944468AB702AA7F91D8A4BFA372E6D7640A8E24273 +75C1C8466DA13AC7BC57CC6ADAEC27CDCCB29BFA5473CED983B9E2EC94132E18 +6D77798D59EDAA1BA98A0618A1066374D655D55066BCF81FAB2E4511E1928ED7 +C77FB148D57D8EA24EE0720AB527AA3A76285B696FD2FF3546901E849A5B3802 +F21F7205C80F9A4A102DFE192C5C5A5403C6A8AE106C10746A550F7CDFC992DB +E3A64BE4A2726AF22D403EAD6AC921F48D6535E9E850BEC1E5B0AC79AF04502A +1FBD5043391104C6DD0B09CAA3654A7A21A52D6164FA2E7A4FDBE9CB328C3A53 +05406F4A2F45A1FD4B2CF998E94B7DAF2E3CB584A8AD83CB32844979EA560E0F +6EB5215F705141320F1BAF1504E210D3690FBC58830BACA500624F7A7ED3EEA2 +789738814E197DAAF6DA815029368B28818561F044171ADDCB73B6DE459C3E9B +64196B66F8A12A1BE100124EF86CAB8B7A10822DF4951766AF568D826E0B91E5 +E640EB8D3D8B188912C510D456231E46972B177019A807DA6AE89E76400E82B4 +EF3EC27BCD8F879A5A7A04BB4D5E290514EF7ED3A976A5B2D5B4F9359B283DE1 +1D7BFB356B3F3F02BB45FA93F0B442330A9AA29F8680260D1071BC27829EA312 +0ED69BFF2730E0F550F35CF2CF16AEC7D8CFDECE336F95789FA1C76B4C6BECB4 +D6400166ECB6FA2A44C587F15DD55F55A1F7FFD8F07CA99EDD2052218828B191 +D52CFD56538ECE62E946AF57C39CDAED30DE6FE58491181ED84E700092A061BC +821B6A5C32A0F436DA74826E0790EBC7D55F14223DDA0234680D41A5BAC55EBD +8D657911A3C10F9537AC9D3388EBBD5856F043A544AF4E60CA7243DA6D38BB28 +4646E77BF92BFA763150C7E4543E844B01097CEA61AF0CA802CD8055BEDD63C0 +6D91EE700452A400496DCAB0632DBC58C5285E8722F9BEB4860842B48B1D9FAE +B266B6381548CA943B5EEF047A6805D99AF761A42AA6850CC458E1C147E3ACC4 +E41653EE36F6BF8C938DF808E8DF9220690A1E36BF5C7924DE8944C261955F25 +A7976C3FF10C79A10D8EACBEE51C00E961588131E35B08BD2B07962EF33769D8 +8A7FA9BA8EA90C38B846963030FB463511992396C25B4F83D6E6842BB7408064 +B979DF1E0A1C20719C8F9430C1F46B36DAD548471A37B4328DDA480F3274900C +E33879F1C6AE71A76437DA0F6712297CE10B14552768C06315EB48500514BC14 +AD86EF94E5AE2390B6D9ABC097BF1A9CB666988EC3797A3464930867433F7F95 +D26D8DED9791F0C49EE8AEB9017CCBA02B4B68D639B58C864EAD6067B3D1FD22 +E989551D11DB9BF2A8D833391D25109F007D9E3F7ECDE5F21C64AAE0B0D4C4CC +C511D9E7251286551308E976F1C69422457B9F6544A768188EC36C7964D158C5 +09ED5CF20C62955EEBFB0C4A851943CB1BEDEFC216A5F11051C9074C8971A13C +59EF979D9C6C90E545E7569F16A202E0488548C6AAD14AA2D3F5C15E5807F39A +00752DDE0B2537CEF6F67A921342CD30B85CD65841BA2B92156F2ABA110F9193 +1D8F5C3E7BC15D1F2A1B45FC37DA6EB07B9D77EC0C8F507F49599A3CFFA76C0F +4EE4037576BE710FD8D22424899D80D389FF23B8760FFDCB88B5BBB17345D278 +42286B59AFC25036261678551AF7CB98432D66CB6C49E3ABE73B47B0568839B0 +9820B34D98B0B2312CE07F438A94F7DC4C5D50066AF6FC3399BB9D58AF4E4F7B +8271B178FB44B6C9A286FF4925C920DBC35D5AF5E24B60C5637C4D1343312EE2 +FA5625B6AD5ED764EA7D670761365EFDB46FB8153E23072885C3225ED394EFAE +6B319D543ABA7005821D8B857D06235F83FED9697FDB48074BE3E797D96811F0 +10BC6392B1B9D4A896B3993C0A77E94B57CBBE264C12463687BCEAE30C575B1E +16DE09B2D92E58155BC5AF9339C62F48DC0C66831B7F519B236A7F1AD6E2EF6C +7216A0304F415B8C95E46AC28A0C2EED00A5E22B193338BA67F78735D8C26F7A +994D25DD5FBD72BD3B1DCA1E2B0F7151439313824FA3811C01FEDE345439CC7D +604ED31A684426939CB3F2B9DB05D509A7B0EAAB0583662991FC3ADB4C50A515 +3B881A40DB960A9D6226C4B8BE7DE1CE38363BBF3537A68E269787913EF43FE0 +AEFBCFA0C199AD0337F48564CCA04DBB0442A4C8BC13B0072BE782817F59C8D7 +4A052705029F8986F888C498825819171C12E4CD2A33BEF7FAFC3447FB5CE42B +B3BC34F3F2B61E0E43048E32522CE84FBFD8B7E36F9C83320D5C8692AED52588 +A2359603E13A2F2E43B310D433B83713F94D77557C9C8EFBA9B5E5419B75BE5C +25E87490EFF8A2C54734079826AC3CC2B77B982F3D11141FEA98B417603EFE94 +240F453DD6E62737EFCD0A104ED9009B009C4A62A2188A7FAAA0778F36E3CC25 +D3E6D192B338E69B6C6A63ECB42EB981B08D2B65646EBF09DBCE03940135D76A +E22D04BA3C8293534A9BEC2969B54A12B346AD976FACA36C07376C9A8F2A198E +BF0BE85F63EE43845F761274E0D9CB7531C451516EF085BDF6A02833E38B8B87 +D141D8C9F39F6F032880A6E39022707C2D318613A800E1F5A312B300115EF120 +744D58CFF4C7BD46757945D541C1349225F2C0BB4ED39A2457B7D8E3DBE1C5D1 +D150794D5EB2081B8F4C13F73ED220A7FCF5E2DAB5CD77926FB66CE3063A21DB +1B76BDC2C8B2AA374B9F362404AA707E3E4751848540E83B712DEA3423FE49B6 +0AE4D96AAFCB9D6198918EF460E585BBC2A37B3318643CECF4D3F865E14692D9 +74267716BA6CC117B13CF185717F6FA0C8602041CE79E696CCA1FECA4AA4CD31 +A06916B369B7FAEA1F66AE081DF3D44236F012C557C8076772576CB116783153 +C2DEAB8CD542F0B08C75E00AC57C816B372E20C2660374BF09AC498FB3AC9A3E +1BE52953FA41686599DC7213845478725D54DA531A0375CEC8BA1827C27DBAFD +6555A364CD1AEDA1A5DB57 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR12 +%!PS-AdobeFont-1.1: CMR12 1.0 +%%CreationDate: 1991 Aug 20 16:38:05 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 46 /period put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 77 /M put +dup 86 /V put +dup 97 /a put +dup 101 /e put +dup 105 /i put +dup 110 /n put +dup 111 /o put +dup 114 /r put +dup 115 /s put +dup 121 /y put +readonly def +/FontBBox{-34 -251 988 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C +68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 +3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E +59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28 +51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23 +DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A +AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F +45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31 +821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE +96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D +9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379 +26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4 +140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213 +1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498 +1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB +377D3061A20B1EB98796B8607EECBC699445EAA866C38E02DF59F5EDD378303A +0733B90E7835C0AAF32BA04F1566D8161EA89CD4D14DDB953F8B910BFC8A7F03 +5020F55EF8FC2640ADADA156F6CF8F2EB6610F7EE8874A26CBE7CD154469B9F4 +ED76886B3FB679FFDEB59BB6C55AF7087BA48B75EE2FB374B19BCC421A963E15 +FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671CEBFCF38BC60 +5BF06A0E01053B7F105ED5140FA4FA37A4F45ABFB58DD41780629C7FA7594F8E +9488B074D45BA0E761190A94DBFF4CF204D5812EB1DFBC0C456D6A044C558945 +8DF6D6AF8A51131AB5913EF2544E475F489FE776FA45E7C0EB62096CF4517450 +8A57DD2B80EF97DBD17036EB9B73FCB82DC4F671BCFEF06A6F86189A2012F53C +E518466A9385D08942279391EF5C2B3567F2E53B2148AAA0625BDB358ECD2C9B +730A59F8DF70FD3E09378E24AEE772A69C96E09C0D0703350A75F3843DEDD822 +B364988376CE8027EF12F0453575AE9AE46296E13925BACECA8B8808DA388222 +BA35B431F56BC3C349B8CA6D4AB83664A991FED51478BFE25B0399B54EF27B18 +65E2E39E57DFC5F57371FB4643D7EC0AD41840CA7C682EE7A1B4FE3E06E40238 +B07A2E7A7FB3F35502F1CCA283F9420F2FAB9EC0A8C8982BF4AFE69A3D2690B3 +CF5DB716B3CB9936C49A12944973F14C2D9A368E4067BDBF91E413A3321B3BFA +B84463D3C680604A4C4E4B49D0F9F9B59D5B68ECD3891FEEDE9B29B9C432212D +82505A8D423BA734A53DEB930A392BA6011C6EA6EBA7ABAA6AAC003721FB34A6 +1544EEE16F6AD73E6C5743EFF09975C186A9C769A4732F78AA09218AE576FB14 +70E1697B813AC1B09FFAB762678BA9320043C256766AF1BACD3702CED1228B94 +57E353589810F99AF74109EFDA0740CB0475DE7870AA7218120462B23441BB1A +60ACAF3B8B171E7509854D1C05C8FBF62979D2B52030B4C91F9D038EF26F2C11 +346D0E9955B491C3168E030B9CCE2964883B824F0DCF27EECA6C6E0478CF6B36 +AF2D33C9265A5F8D76FCC46AA30E6093E3822CE70C1ED22CDB8A8F910F5BCF45 +2C9D2D41B342B43DB5FE5EFCFEB5D378F78684296CAED9A39FC3834929073B6E +A934014457B89A61253E0924D3C6BB4FE4ADFBD0C9B3C61D08E3DB2B26785A1D +3B5E0E23258AE12276B63E9D79B2EAB305B8108A0987216C0EBF033A839BF611 +CB208A9B3B26699B201DD3662676B77C66EAFD20FAEB3021619FC123433D1CAE +53B0EDF00827F374A95DA1E89A01226DB951EC0F09366357A5A86C4DA2AD2A5A +0CCCB8304C4CDB9CDBA1068E98B2CCD4671E960ED12921F7B41100ABD48768C1 +BD5863591593D6ED9E604857B67D08C0CBE36A2E3D2EF5A9451345693A2F2FC1 +617F954916295D06A6A0805CA62EF2DAB67BC449674B238CCFAB92D628617FDB +9B3BA7FEE1FF29E7BB9CD5FEAB8F27E592B511CCFF9FDF4271CEF44F73CAA97A +30DDA0FE944A6C4B23D82797C4D2B53BE303031FC99A32D20F03D840E42BD088 +143E95C4E0CDA56BF86846A476E84C1ACC34A64C3A1EBC0A2B53380DEAB37DAB +692D21B1C485FD1D08080F8F3909C512F013BC14572FF66CF1ED026E2E81B3D9 +091D0C7196E99F937B4C2FB4719E8ACE48810BFAC898677969B176250A019DA8 +27BE209FCC3A0CD35219C47CC18E771C0A8E49B03CF3DD19F4118287DBC7C4A2 +2B23D2250E0C97C4C6EF38AF4960BB4E8963DBC38A11ACE3B46E1A3A36799FAE +3D53A874A1323CFBFF769064B7698CD5289E648D1B3968A48452362C9806DEA7 +D51B4C18267A88BE072D1C05B697417503C36206260DAFC1E4B989FDEA80FE19 +196EBF09046E43DD0138B1DFF846C34C7F14A126675BE530B671D23F3D5B4EF9 +9DE0484411942D59073707193132040B3786C02AF197A9520EF649BC55EAAFE1 +3F974A85D1FCA84BFE5B214F555C7F5F939977945559616160776D4369DBEE13 +0486617F2E364E8846175E02FE51D16728C08342DC1D8BC09C69A769E7165954 +A609FFD0174EA5236FE01BA8EF1BA4F43020C81683F9D83C7460A6B73650D81F +840A5085455A0CBBD4C148F065433693096FA50A32823F9E9CFE73921FE7A89B +4465255C2DE2722F176A410C0ABEC6619B7E5E2877B5F71DD65E1D83FD3AEBF1 +174CDEF7792366D9D8F965D7B894514552C8689AD98C3D47A5BDF0B62BE36A5E +EC4FED48090B02FADADE831409D8A12BF26C59DCED4FAB2D855B0AADE1E1E92D +7C12F644051C522C64DDC7D78663241BCD0077D29498143804A43C8D239B8240 +D27B1DC8264A08A7FD490BDB994C5F76175297570508141E3CA66C464E803F35 +3E203A80B56E0EF34C6CF7DF41E926F0B1C65C963E2EEFF7223D0F23C6637662 +8AD35E5E3DC3916E386945DE7F9459DEB136996E1DCD2C52EACD7EA23FEBD7FB +B2EE5067521FB56F7AB6A3DD411866A469FE6BAED525316A9E397096CCD9AD60 +227ED9887B9E199242512AE8A30ADB1647CA80A3DAF4F37367EE3A2D6E10B10F +20B04AADE3FB78AC92BDEFED7C7FEC071596FF33D00B9DF125BFD3E1A23F3E28 +06B1FB28E40FD8B9F7F56326F61D6F0ACC6B5BB5075FE00BF27D077531C87910 +7AC03290749574181B95B7968C79076CB25308FEC5F1D2E2D5EEE5EA026F841A +E1D347FA7149FAB5C64EF67A2A17C885D51C665DE67793C9E0E025A9AEC6C958 +EFBDD6E9C13CDF596CC58E28E284F6FE9700505C5B0F5D85501EB8C8668AF610 +5FF15864D7DA8F3A06CBEA58045321141099EF4FB952F9EF8848AF3A722646A8 +74336EF9927DC3451C787C2760E768DF4AD19EF9FCC27057C4602193DA5CBAF6 +404BE06ED2FF9DE5FDE00A9F2488A4FC0CAB5CE4A5C7767BAC50F2C84ADB20A6 +D0DB2AC57A490F7D0290664FC560202C2DBB5911BE6018945FC455FCA992F301 +C93F454A189878A215CEB421930E0CA6BC0C48CD297980CBAF9283B8D973078C +D40886E0C31CB1F44C36BFAC44CEA466011B72BC301552153893ABB2D2CB11B8 +AA14FB14B20E897D2A04D4B0643558B9247B8C9304286C4C26E8375258639E55 +8B004CD7B7CCE046DC730087543B0237A363C7A6B9A6D3CAB81310E2557CC57A +D43F163D5D81ADB9EB797C88E685E0E11C88400E3B0106DB9B8637B361A4FE44 +B911AAE93675C201493B5F2B24FA53A5D40E2CB99727AEE3740A620531C377CC +C9BF247FA8551E1B7AB95BA669C7EB321FE9950998496ECD49EB4131E352D217 +826587C051273B13878588F410EBB4C02820B8ECBA8FB7C860998B57FABE9C1F +816B32CE914F150EBCDF989A257F79F76F3603C9F891C2349909C87BF56EC7E7 +E7017616EDCEBE98B60C0F678D3B0F1DC838FF0A543E6A094F82A15EAA55987C +2A261E4CA71933EC92CBBCBB0E3F560659B6C3E402EBAF480B509892EC9242B6 +BFB23B9F70902A2AB6CCFED2E8FCA63DBC53244116C7612A94F198F36BA097C2 +7B63D740677C4B229AEF0256E6860F15FB800E60B522F9E70B0455D9C1871F22 +BDB77851B3885608E4FB1A8F830159DA098DE17C0EC61E54822DC61E21CD6C3B +288884430EE3017B35E742553AD08A264B38A42F3EFA5A709AB46563FF56CBF8 +73909325C6AF397E9524997CFBFA89376D9997D8EA7009A7D4433A73FFC98D13 +DBEDB05B41908A6D74CE3E28F5ECA3D8 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 40258431 52099146 1000 600 600 (fitsio.dvi) +@start /Fa 193[71 62[{}1 90.9091 /CMMI10 rf /Fb 133[50 +59 59 81 59 62 44 44 46 1[62 56 62 93 31 59 1[31 62 56 +34 51 62 50 62 54 9[116 85 86 78 62 84 1[77 84 88 106 +67 88 1[42 88 88 70 74 86 81 80 85 6[31 1[56 56 56 56 +56 56 56 56 1[56 31 37 32[62 12[{}58 99.6264 /CMBX12 +rf /Fc 149[25 2[45 45 86[45 15[{}4 90.9091 /CMSY10 rf +/Fd 133[60 71 71 97 71 75 52 53 55 1[75 67 75 112 37 +71 1[37 75 67 41 61 75 60 75 65 9[139 102 103 94 75 100 +1[92 101 105 128 81 105 1[50 105 106 85 88 103 97 96 +102 6[37 67 67 67 67 67 67 67 67 67 67 67 37 45 3[52 +52 27[75 78 11[{}63 119.552 /CMBX12 rf /Fe 129[48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 48 33[{}93 90.9091 /CMTT10 rf /Ff 139[75 1[79 1[108 +7[108 2[88 3[94 29[140 9[97 97 97 97 97 97 97 97 97 97 +48[{}17 172.188 /CMBX12 rf /Fg 165[56 68 68 93 68 68 +66 51 67 1[62 71 68 83 57 71 1[33 68 71 59 62 69 66 64 +68 6[25 45 45 45 45 45 45 45 45 45 45 45 25 30 45[{}38 +90.9091 /CMSL10 rf /Fh 134[55 55 1[55 58 41 41 43 1[58 +52 58 87 29 2[29 58 52 32 48 58 46 58 51 11[80 73 58 +78 1[71 79 82 4[40 1[82 66 69 80 76 74 79 7[52 52 52 +52 52 52 52 52 52 52 52 1[35 32[58 12[{}49 90.9091 /CMBX10 +rf /Fi 132[45 40 48 48 66 48 51 35 36 36 48 51 45 51 +76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 25 +56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 +68 71 59 62 69 66 64 68 71 43 43 71 25 25 25 45 45 45 +45 45 45 45 45 45 45 45 25 30 25 71 45 35 35 25 71 76 +45 76 45 25 18[76 51 51 53 11[{}93 90.9091 /CMR10 rf +/Fj 134[62 5[46 46 2[59 65 4[33 3[52 3[59 10[88 8[107 +25[59 59 59 59 1[33 46[{}15 119.552 /CMR12 rf /Fk 138[90 +63 64 66 2[81 90 134 45 2[45 1[81 49 74 1[72 90 78 12[112 +90 2[110 6[60 2[101 4[122 65[{}21 143.462 /CMBX12 rf +/Fl 134[123 123 1[123 129 90 92 95 1[129 116 129 194 +65 2[65 129 116 71 106 129 103 129 113 11[179 162 129 +173 1[159 175 182 4[87 1[183 146 153 178 168 165 175 +17[116 1[77 5[65 26[129 12[{}40 206.559 /CMBX12 rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%BeginPaperSize: Letter +letter +%%EndPaperSize + end +%%EndSetup +%%Page: 1 1 +TeXDict begin 1 0 bop 861 1940 a Fl(FITSIO)76 b(User's)g(Guide)356 +2399 y Fk(A)54 b(Subroutine)d(In)l(terface)i(to)g(FITS)h(F)-13 +b(ormat)54 b(Files)1055 2659 y(for)g(F)-13 b(ortran)53 +b(Programmers)1667 3155 y Fj(V)-10 b(ersion)38 b(3.0)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)h(Cen)m(ter)1522 +4396 y(Green)m(b)s(elt,)f(MD)h(20771)1857 4509 y(USA)1701 +5298 y Fj(Ma)m(y)39 b(2011)p eop end +%%Page: 2 2 +TeXDict begin 2 1 bop 0 299 a Fi(ii)p eop end +%%Page: 3 3 +TeXDict begin 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)31 b(the)f(Library)58 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)32 b(the)e(Library)j(.)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)31 b(Programs)f(with)g(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(8)136 2766 y(2.4)94 b(Getting)32 b(Started)f(with)f(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)31 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)32 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(.)85 b(10)136 3252 y(2.7)94 +b(Ac)m(kno)m(wledgmen)m(ts)30 b(.)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(10)0 +3511 y Fh(3)119 b(A)35 b(FITS)f(Primer)2918 b(13)0 3771 +y(4)84 b(FITSIO)34 b(Con)m(v)m(en)m(tions)h(and)g(Guidelines)1993 +b(15)136 3933 y Fi(4.1)94 b(CFITSIO)29 b(Size)i(Limitations)42 +b(.)k(.)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(Multiple)32 b(Access)f(to)g(the)g(Same)f(FITS) +g(File)h(.)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(16)136 +4257 y(4.3)94 b(Curren)m(t)30 b(Header)h(Data)h(Unit)e(\(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(16)136 4419 +y(4.4)94 b(Subroutine)29 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(16)136 +4581 y(4.5)94 b(Subroutine)29 b(F)-8 b(amilies)33 b(and)c(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(17)136 +4742 y(4.6)94 b(Implicit)31 b(Data)h(T)m(yp)s(e)e(Con)m(v)m(ersion)65 +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(17)136 4904 y(4.7)94 b(Data)32 b(Scaling)89 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(18)136 5066 y(4.8)94 b(Error)30 +b(Status)g(V)-8 b(alues)32 b(and)d(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(18)136 5228 y(4.9)94 b(V)-8 b(ariable-Length)33 +b(Arra)m(y)d(F)-8 b(acilit)m(y)34 b(in)c(Binary)g(T)-8 +b(ables)26 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(19)136 5390 y(4.10)49 +b(Supp)s(ort)29 b(for)h(IEEE)g(Sp)s(ecial)g(V)-8 b(alues)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(.)85 b(20)136 +5552 y(4.11)49 b(When)31 b(the)f(Final)h(Size)g(of)g(the)f(FITS)g(HDU)h +(is)f(Unkno)m(wn)k(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f +(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(21)136 5714 y(4.12)49 +b(Lo)s(cal)32 b(FITS)d(Con)m(v)m(en)m(tions)j(supp)s(orted)c(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(21)1912 5942 y(iii)p +eop end +%%Page: 4 4 +TeXDict begin 4 3 bop 0 299 a Fi(iv)3311 b Fg(CONTENTS)345 +555 y Fi(4.12.1)61 b(Supp)s(ort)29 b(for)h(Long)g(String)g(Keyw)m(ord)g +(V)-8 b(alues.)62 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g +(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(21)345 716 y(4.12.2)61 +b(Arra)m(ys)31 b(of)f(Fixed-Length)h(Strings)f(in)g(Binary)h(T)-8 +b(ables)70 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g +(.)f(.)85 b(22)345 876 y(4.12.3)61 b(Keyw)m(ord)30 b(Units)h(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(23)345 1037 y(4.12.4)61 b(HIERAR)m(CH)31 b(Con)m(v)m(en)m(tion)h(for) +e(Extended)g(Keyw)m(ord)g(Names)83 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)f(.)85 b(23)136 1197 y(4.13)49 b(Optimizing)31 +b(Co)s(de)f(for)g(Maxim)m(um)h(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(24)345 1358 y(4.13.1)61 b(Bac)m(kground)31 +b(Information:)41 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(25)345 1518 +y(4.13.2)61 b(Optimization)32 b(Strategies)69 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(25)0 +1771 y Fh(5)119 b(Basic)36 b(In)m(terface)e(Routines)2504 +b(29)136 1931 y Fi(5.1)94 b(FITSIO)30 b(Error)f(Status)h(Routines)84 +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(29)136 2092 y(5.2)94 b(File)32 b(I/O)e(Routines)e(.)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(30)136 2252 y(5.3)94 b(Keyw)m(ord)31 b(I/O)f(Routines)36 +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(32)136 2412 y(5.4)94 b(Data)32 b(I/O)f(Routines)53 +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(33)0 2665 y Fh(6)119 b(Adv)-6 b(anced)36 +b(In)m(terface)e(Subroutines)2159 b(35)136 2826 y Fi(6.1)94 +b(FITS)30 b(File)i(Op)s(en)d(and)g(Close)i(Subroutines:)76 +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(35)136 2986 y(6.2)94 +b(HDU-Lev)m(el)33 b(Op)s(erations)108 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(38)136 3146 +y(6.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(41)136 3307 y(6.4)94 +b(FITS)30 b(Header)h(I/O)f(Subroutines)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(43)345 3467 y(6.4.1)106 +b(Header)31 b(Space)g(and)f(P)m(osition)h(Routines)60 +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(43)345 3628 y(6.4.2)106 +b(Read)31 b(or)f(W)-8 b(rite)32 b(Standard)d(Header)i(Routines)67 +b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) +h(.)g(.)f(.)85 b(43)345 3788 y(6.4.3)106 b(W)-8 b(rite)32 +b(Keyw)m(ord)e(Subroutines)116 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(45)345 3949 y(6.4.4)106 b(Insert)30 b(Keyw)m(ord)g(Subroutines)108 +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(47)345 4109 +y(6.4.5)106 b(Read)31 b(Keyw)m(ord)f(Subroutines)64 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(47)345 4270 +y(6.4.6)106 b(Mo)s(dify)30 b(Keyw)m(ord)h(Subroutines)55 +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(49)345 4430 +y(6.4.7)106 b(Up)s(date)31 b(Keyw)m(ord)f(Subroutines)116 +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(50)345 4591 +y(6.4.8)106 b(Delete)33 b(Keyw)m(ord)d(Subroutines)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(50)136 4751 +y(6.5)94 b(Data)32 b(Scaling)g(and)d(Unde\014ned)g(Pixel)i(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(51)136 4912 y(6.6)94 +b(FITS)30 b(Primary)g(Arra)m(y)h(or)f(IMA)m(GE)h(Extension)g(I/O)f +(Subroutines)117 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f +(.)85 b(52)136 5072 y(6.7)94 b(FITS)30 b(ASCI)s(I)f(and)h(Binary)g(T)-8 +b(able)31 b(Data)h(I/O)e(Subroutines)d(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f +(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(55)345 +5232 y(6.7.1)106 b(Column)30 b(Information)g(Subroutines)121 +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(55)345 5393 y(6.7.2)106 +b(Lo)m(w-Lev)m(el)33 b(T)-8 b(able)31 b(Access)g(Subroutines)60 +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(58)345 5553 y(6.7.3)106 +b(Edit)31 b(Ro)m(ws)f(or)h(Columns)106 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(58)345 5714 y(6.7.4)106 b(Read)31 +b(and)f(W)-8 b(rite)31 b(Column)f(Data)i(Routines)66 +b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)f(.)85 b(60)p eop end +%%Page: 5 5 +TeXDict begin 5 4 bop 0 299 a Fg(CONTENTS)3334 b Fi(v)136 +555 y(6.8)94 b(Ro)m(w)31 b(Selection)h(and)e(Calculator)i(Routines)95 +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(64)136 717 y(6.9)94 +b(Celestial)33 b(Co)s(ordinate)d(System)g(Subroutines)98 +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(65)136 879 y(6.10)49 +b(File)32 b(Chec)m(ksum)e(Subroutines)75 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(67)136 1041 y(6.11)80 +b(Date)32 b(and)d(Time)i(Utilit)m(y)h(Routines)69 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(68)136 +1204 y(6.12)49 b(General)32 b(Utilit)m(y)g(Subroutines)61 +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(69)0 1464 y Fh(7)119 b(The)35 b(CFITSIO)e(Iterator)g(F)-9 +b(unction)2154 b(75)0 1725 y(8)119 b(Extended)35 b(File)f(Name)h(Syn)m +(tax)2330 b(77)136 1887 y Fi(8.1)94 b(Ov)m(erview)84 +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(77)136 2049 y(8.2)94 +b(Filet)m(yp)s(e)62 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(80)345 2211 y(8.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(80)345 +2373 y(8.2.2)106 b(Notes)32 b(ab)s(out)e(the)h(stream)f(\014let)m(yp)s +(e)h(driv)m(er)54 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(81)345 2536 +y(8.2.3)106 b(Notes)32 b(ab)s(out)e(the)h(gsiftp)f(\014let)m(yp)s(e)83 +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(82)345 2698 +y(8.2.4)106 b(Notes)32 b(ab)s(out)e(the)h(ro)s(ot)f(\014let)m(yp)s(e)68 +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 2860 +y(8.2.5)106 b(Notes)32 b(ab)s(out)e(the)h(shmem)e(\014let)m(yp)s(e:)70 +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(84)136 3022 y(8.3)94 +b(Base)32 b(Filename)90 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(84)136 +3184 y(8.4)94 b(Output)30 b(File)h(Name)g(when)f(Op)s(ening)f(an)h +(Existing)h(File)81 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) +f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(86)136 3346 y(8.5)94 +b(T)-8 b(emplate)32 b(File)g(Name)f(when)e(Creating)i(a)g(New)f(File)57 +b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) +f(.)h(.)g(.)f(.)85 b(88)136 3508 y(8.6)94 b(Image)32 +b(Tile-Compression)e(Sp)s(eci\014cation)91 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(88)136 3670 y(8.7)94 b(HDU)32 b(Lo)s(cation)f(Sp)s +(eci\014cation)47 b(.)e(.)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(88)136 3832 y(8.8)94 b(Image)32 b(Section)39 +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(89)136 3994 y(8.9)94 b(Image)32 +b(T)-8 b(ransform)29 b(Filters)54 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(90)136 4156 y(8.10)49 +b(Column)30 b(and)g(Keyw)m(ord)g(Filtering)h(Sp)s(eci\014cation)91 +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(92)136 4318 y(8.11)49 b(Ro)m(w)31 +b(Filtering)h(Sp)s(eci\014cation)82 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(94)345 4481 y(8.11.1)61 +b(General)32 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(94)345 4643 y(8.11.2)61 +b(Bit)32 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(97)345 4805 y(8.11.3)61 +b(V)-8 b(ector)32 b(Columns)92 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(98)345 4967 y(8.11.4)61 +b(Go)s(o)s(d)30 b(Time)h(In)m(terv)-5 b(al)31 b(Filtering)62 +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(99)345 5129 +y(8.11.5)61 b(Spatial)31 b(Region)h(Filtering)59 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(.)40 b(100)345 +5291 y(8.11.6)61 b(Example)31 b(Ro)m(w)g(Filters)h(.)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(103)136 5453 y(8.12)80 b(Binning)30 b(or)g(Histogramming)i(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(.)40 b(104)0 +5714 y Fh(9)84 b(T)-9 b(emplate)35 b(Files)2933 b(107)p +eop end +%%Page: 6 6 +TeXDict begin 6 5 bop 0 299 a Fi(vi)3311 b Fg(CONTENTS)136 +555 y Fi(9.1)94 b(Detailed)33 b(T)-8 b(emplate)31 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(.)40 +b(107)136 715 y(9.2)94 b(Auto-indexing)31 b(of)g(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(.)40 +b(108)136 876 y(9.3)94 b(T)-8 b(emplate)32 b(P)m(arser)f(Directiv)m(es) +87 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(109)136 1036 y(9.4)94 b(F)-8 b(ormal)32 b(T)-8 b(emplate)32 +b(Syn)m(tax)i(.)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(.)40 b(109)136 1196 y(9.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(.)40 b(110)136 1356 y(9.6)94 +b(Examples)72 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(.)40 b(110)0 +1607 y Fh(10)67 b(Summary)36 b(of)f(all)f(FITSIO)g(User-In)m(terface)h +(Subroutines)1215 b(113)0 1858 y(11)67 b(P)m(arameter)35 +b(De\014nitions)2563 b(121)0 2109 y(12)67 b(FITSIO)33 +b(Error)i(Status)g(Co)s(des)2295 b(127)p eop end +%%Page: 1 7 +TeXDict begin 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)33 b(do)s(cumen)m(t)i +(describ)s(es)e(the)h(F)-8 b(ortran-callable)38 b(subroutine)33 +b(in)m(terface)j(that)f(is)f(pro)m(vided)g(as)g(part)g(of)h(the)0 +2293 y(CFITSIO)f(library)h(\(whic)m(h)h(is)g(written)g(in)f(ANSI)g +(C\).)h(This)f(is)h(a)g(companion)g(do)s(cumen)m(t)f(to)i(the)e +(CFITSIO)0 2406 y(User's)k(Guide)f(whic)m(h)h(should)e(b)s(e)h +(consulted)h(for)f(further)g(information)h(ab)s(out)f(the)h(underlying) +e(CFITSIO)0 2518 y(library)-8 b(.)50 b(In)32 b(the)i(remainder)f(of)g +(this)h(do)s(cumen)m(t,)g(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)j(a)f(mac)m(hine-indep) +s(enden)m(t)g(library)g(of)h(routines)f(for)g(reading)h(and)f(writing)g +(data)h(\014les)0 2904 y(in)c(the)g(FITS)g(\(Flexible)i(Image)f(T)-8 +b(ransp)s(ort)29 b(System\))h(data)h(format.)41 b(It)31 +b(can)f(also)h(read)g(IRAF)f(format)h(image)0 3017 y(\014les)40 +b(and)e(ra)m(w)i(binary)f(data)h(arra)m(ys)g(b)m(y)g(con)m(v)m(erting)h +(them)e(on)h(the)g(\015y)f(in)m(to)h(a)g(virtual)g(FITS)f(format)h +(\014le.)0 3130 y(This)32 b(library)h(w)m(as)g(written)g(to)h(pro)m +(vide)f(a)h(p)s(o)m(w)m(erful)f(y)m(et)h(simple)f(in)m(terface)h(for)f +(accessing)i(FITS)d(\014les)h(whic)m(h)0 3243 y(will)j(run)e(on)h(most) +h(commonly)g(used)e(computers)h(and)g(w)m(orkstations.)57 +b(FITSIO)34 b(supp)s(orts)g(all)i(the)g(features)0 3356 +y(describ)s(ed)21 b(in)i(the)f(o\016cial)i(NOST)e(de\014nition)g(of)h +(the)f(FITS)g(format)h(and)f(can)h(read)f(and)g(write)h(all)g(the)g +(curren)m(tly)0 3469 y(de\014ned)40 b(t)m(yp)s(es)h(of)g(extensions,)j +(including)d(ASCI)s(I)e(tables)j(\(T)-8 b(ABLE\),)42 +b(Binary)f(tables)h(\(BINT)-8 b(ABLE\))43 b(and)0 3582 +y(IMA)m(GE)36 b(extensions.)56 b(The)34 b(FITSIO)g(subroutines)g +(insulate)i(the)f(programmer)g(from)g(ha)m(ving)h(to)g(deal)f(with)0 +3695 y(the)25 b(complicated)h(formatting)g(details)f(in)f(the)h(FITS)f +(\014le,)i(ho)m(w)m(ev)m(er,)i(it)d(is)f(assumed)g(that)h(users)f(ha)m +(v)m(e)i(a)f(general)0 3808 y(kno)m(wledge)31 b(ab)s(out)f(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)i(dev)m +(elop)s(ed)e(b)m(y)f(the)h(HEASAR)m(C)g(\(High)h(Energy)e(Astroph)m +(ysics)h(Science)0 4081 y(Arc)m(hiv)m(e)35 b(Researc)m(h)g(Cen)m(ter\)) +f(at)h(the)f(NASA)g(Go)s(ddard)e(Space)j(Fligh)m(t)g(Cen)m(ter)f(to)h +(con)m(v)m(ert)g(v)-5 b(arious)34 b(existing)0 4194 y(and)25 +b(newly)h(acquired)g(astronomical)i(data)e(sets)h(in)m(to)g(FITS)e +(format)h(and)f(to)i(further)e(analyze)i(data)g(already)f(in)0 +4307 y(FITS)h(format.)41 b(New)28 b(features)g(con)m(tin)m(ue)h(to)g(b) +s(e)e(added)h(to)g(CFITSIO)f(in)g(large)i(part)f(due)g(to)g(con)m +(tributions)h(of)0 4419 y(ideas)k(or)g(actual)h(co)s(de)f(from)f(users) +g(of)h(the)g(pac)m(k)-5 b(age.)49 b(The)33 b(In)m(tegral)h(Science)f +(Data)h(Cen)m(ter)f(in)g(Switzerland,)0 4532 y(and)g(the)g(XMM/ESTEC)h +(pro)5 b(ject)34 b(in)f(The)g(Netherlands)g(made)g(esp)s(ecially)i +(signi\014can)m(t)f(con)m(tributions)g(that)0 4645 y(resulted)c(in)g +(man)m(y)h(of)f(the)h(new)f(features)g(that)h(app)s(eared)f(in)g(v2.0)i +(of)e(CFITSIO.)0 4805 y(The)22 b(latest)i(v)m(ersion)f(of)g(the)f +(CFITSIO)f(source)i(co)s(de,)h(do)s(cumen)m(tation,)i(and)21 +b(example)j(programs)e(are)h(a)m(v)-5 b(ailable)0 4918 +y(on)30 b(the)h(W)-8 b(orld-Wide)32 b(W)-8 b(eb)31 b(or)f(via)h(anon)m +(ymous)f(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 end +%%Page: 2 8 +TeXDict begin 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,)g(bug)f +(rep)s(orts,)h(or)f(suggested)i(enhancemen)m(ts)f(related)g(to)h(the)e +(CFITSIO)f(pac)m(k)-5 b(age)30 b(should)d(b)s(e)0 668 +y(sen)m(t)k(to)g(the)g(primary)e(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 +(William.D.Pence@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)40 b(User's)i(Guide)f(assumes)g(that)h(readers)f(already)g +(ha)m(v)m(e)i(a)f(general)g(understanding)d(of)j(the)f(de\014nition)0 +1639 y(and)31 b(structure)g(of)h(FITS)e(format)i(\014les.)44 +b(F)-8 b(urther)32 b(information)f(ab)s(out)h(FITS)f(formats)g(is)h(a)m +(v)-5 b(ailable)34 b(from)d(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,)i(the)f('NOST)f(FITS)g(Standard')0 1865 +y(giv)m(es)j(the)g(authoritativ)m(e)h(de\014nition)e(of)g(the)g(FITS)g +(data)h(format,)g(and)f(the)g(`FITS)g(User's)g(Guide')g(pro)m(vides)0 +1978 y(additional)d(historical)h(bac)m(kground)e(and)g(practical)i +(advice)f(on)f(using)g(FITS)g(\014les.)0 2138 y(CFITSIO)j(users)g(ma)m +(y)h(also)h(b)s(e)f(in)m(terested)h(in)f(the)g(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)k(and)e(analyze)j(FITS)e(format)g(\014les.)59 +b(Information)36 b(ab)s(out)g(FTOOLS)f(can)i(b)s(e)f(obtained)g(on)h +(the)0 2364 y(W)-8 b(eb)31 b(or)f(via)h(anon)m(ymous)g(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 end +%%Page: 3 9 +TeXDict begin 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)f(one)j(m)m(ust)e(\014rst)g(build)g +(the)h(CFITSIO)f(library)-8 b(,)46 b(whic)m(h)d(requires)f(a)h(C)0 +2580 y(compiler.)73 b(gcc)43 b(is)e(ideal,)j(or)d(most)h(other)f +(ANSI-C)g(compilers)g(will)h(also)g(w)m(ork.)73 b(The)40 +b(CFITSIO)g(co)s(de)h(is)0 2692 y(con)m(tained)25 b(in)f(ab)s(out)f(40) +i(C)f(source)g(\014les)f(\(*.c\))j(and)d(header)h(\014les)g(\(*.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)f(\(vmsieeed.mar)h(and)f(vmsieeer.mar\))h +(are)g(also)g(needed.)0 2965 y(The)45 b(F)-8 b(ortran)46 +b(in)m(terface)g(subroutines)e(to)i(the)f(C)g(CFITSIO)f(routines)h(are) +g(lo)s(cated)i(in)e(the)g(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.)38 +b(These)22 b(are)h(relativ)m(ely)i(simple)d('wrapp)s(ers')f(that)i +(translate)h(the)f(argumen)m(ts)g(in)f(the)0 3191 y(F)-8 +b(ortran)26 b(subroutine)e(in)m(to)j(the)e(appropriate)h(format)g(for)f +(the)g(corresp)s(onding)g(C)g(routine.)39 b(This)24 b(translation)j(is) +0 3304 y(p)s(erformed)19 b(transparen)m(tly)i(to)g(the)g(user)f(b)m(y)g +(a)h(set)h(of)e(C)h(macros)g(lo)s(cated)h(in)e(the)h(cfortran.h)f +(\014le.)38 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)i(of)e(C)g(and)f(F)-8 +b(ortran)29 b(compilers)g(so)f(the)h(F)-8 b(ortran)28 +b(in)m(terface)0 3530 y(is)i(not)h(supp)s(orted)e(on)h(all)h +(platforms.)41 b(\(see)31 b(further)e(notes)i(b)s(elo)m(w\).)0 +3690 y(A)f(standard)f(com)m(bination)j(of)e(C)f(and)h(F)-8 +b(ortran)30 b(compilers)h(will)f(b)s(e)f(assumed)h(b)m(y)f(default,)i +(but)e(one)h(ma)m(y)h(also)0 3803 y(sp)s(ecify)f(a)h(particular)f(F)-8 +b(ortran)32 b(compiler)e(b)m(y)h(doing:)48 4064 y Fe(>)95 +b(setenv)46 b(CFLAGS)g(-DcompilerName=1)0 4324 y Fi(\(where)33 +b('compilerName')h(is)f(the)g(name)f(of)h(the)g(compiler\))h(b)s(efore) +e(running)f(the)i(con\014gure)f(command.)47 b(The)0 4437 +y(curren)m(tly)30 b(recognized)i(compiler)f(names)f(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 end +%%Page: 4 10 +TeXDict begin 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 1609 y Fi(Alternativ)m(ely)-8 b(,)42 +b(one)c(ma)m(y)g(edit)g(the)f(CFLA)m(GS)h(line)f(in)h(the)f(Mak)m +(e\014le)i(to)f(add)f(the)h('-DcompilerName')i(\015ag)0 +1722 y(after)31 b(running)e(the)h('./con\014gure')h(command.)0 +1882 y(The)f(CFITSIO)f(library)h(is)g(built)g(on)h(Unix)f(systems)g(b)m +(y)g(t)m(yping:)48 2146 y Fe(>)95 b(./configure)45 b +([--prefix=/target/insta)o(llat)o(ion)o(/pat)o(h])764 +2259 y([--enable-sse2])e([--enable-ssse3])48 2372 y(>)95 +b(make)476 b(\(or)95 b('make)46 b(shared'\))48 2485 y(>)95 +b(make)47 b(install)93 b(\(this)46 b(step)h(is)g(optional\))0 +2749 y Fi(at)24 b(the)g(op)s(erating)g(system)g(prompt.)38 +b(The)23 b(con\014gure)g(command)g(customizes)i(the)f(Mak)m(e\014le)h +(for)f(the)g(particular)0 2861 y(system,)g(then)d(the)g(`mak)m(e')i +(command)e(compiles)h(the)f(source)h(\014les)f(and)g(builds)f(the)h +(library)-8 b(.)38 b(T)m(yp)s(e)21 b(`./con\014gure')0 +2974 y(and)34 b(not)h(simply)f(`con\014gure')h(to)h(ensure)e(that)h +(the)g(con\014gure)g(script)f(in)h(the)g(curren)m(t)f(directory)h(is)g +(run)f(and)0 3087 y(not)29 b(some)g(other)g(system-wide)g(con\014gure)f +(script.)40 b(The)29 b(optional)h('pre\014x')e(argumen)m(t)h(to)g +(con\014gure)g(giv)m(es)h(the)0 3200 y(path)e(to)i(the)f(directory)g +(where)f(the)h(CFITSIO)f(library)g(and)g(include)h(\014les)f(should)g +(b)s(e)g(installed)i(via)f(the)g(later)0 3313 y('mak)m(e)j(install')f +(command.)41 b(F)-8 b(or)31 b(example,)143 3577 y Fe(>)48 +b(./configure)c(--prefix=/usr1/local)0 3841 y Fi(will)25 +b(cause)h(the)f('mak)m(e)h(install')g(command)f(to)h(cop)m(y)g(the)f +(CFITSIO)e(lib)s(c\014tsio)i(\014le)h(to)f(/usr1/lo)s(cal/lib)i(and)e +(the)0 3953 y(necessary)33 b(include)e(\014les)i(to)f(/usr1/lo)s +(cal/include)j(\(assuming)d(of)g(course)g(that)h(the)f(pro)s(cess)g +(has)g(p)s(ermission)0 4066 y(to)f(write)g(to)g(these)g(directories\).) +0 4227 y(The)24 b(optional)i({enable-sse2)g(and)e({enable-ssse3)i +(\015ags)e(will)h(cause)g(con\014gure)f(to)h(attempt)h(to)f(build)e +(CFITSIO)0 4339 y(using)31 b(faster)h(b)m(yte-sw)m(apping)g +(algorithms.)46 b(See)32 b(the)g("Optimizing)g(Programs")g(section)h +(of)f(this)f(man)m(ual)h(for)0 4452 y(more)f(information)f(ab)s(out)g +(these)h(options.)0 4613 y(By)37 b(default,)i(the)f(Mak)m(e\014le)g +(will)g(b)s(e)e(con\014gured)g(to)i(build)e(the)h(set)h(of)f(F)-8 +b(ortran-callable)40 b(wrapp)s(er)35 b(routines)0 4725 +y(whose)30 b(calling)i(sequences)f(are)f(describ)s(ed)g(later)h(in)f +(this)g(do)s(cumen)m(t.)0 4886 y(The)e('mak)m(e)h(shared')f(option)h +(builds)e(a)i(shared)e(or)i(dynamic)f(v)m(ersion)h(of)f(the)h(CFITSIO)d +(library)-8 b(.)40 b(When)28 b(using)0 4999 y(the)f(shared)f(library)h +(the)g(executable)h(co)s(de)f(is)g(not)g(copied)g(in)m(to)h(y)m(our)f +(program)g(at)g(link)g(time)g(and)g(instead)g(the)0 5111 +y(program)g(lo)s(cates)i(the)f(necessary)g(library)f(co)s(de)h(at)g +(run)e(time,)j(normally)f(through)e(LD)p 3065 5111 28 +4 v 33 w(LIBRAR)-8 b(Y)p 3514 5111 V 34 w(P)g(A)g(TH)28 +b(or)0 5224 y(some)j(other)f(metho)s(d.)41 b(The)29 b(adv)-5 +b(an)m(tages)33 b(of)d(using)g(a)h(shared)e(library)h(are:)143 +5488 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 5601 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 +5714 y(library)f(is)h(running)f(at)h(the)g(same)g(time)f(since)h(the)g +(system)f(is)h(smart)p eop end +%%Page: 5 11 +TeXDict begin 5 10 bop 0 299 a Fg(2.1.)72 b(BUILDING)31 +b(THE)f(LIBRAR)-8 b(Y)2507 b Fi(5)334 555 y Fe(enough)46 +b(to)h(share)g(copies)f(of)h(the)g(shared)f(library)g(at)h(run)g(time.) +143 668 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 781 y(library)f(can)h(be)g(installed) +e(without)h(relinking)f(all)i(the)g(software)334 894 +y(that)g(uses)f(it)i(\(as)e(long)h(as)g(the)g(subroutine)e(names)i(and) +f(calling)334 1007 y(sequences)f(remain)h(unchanged\).)143 +1120 y(4.)95 b(No)47 b(run-time)f(penalty.)0 1346 y Fi(The)30 +b(disadv)-5 b(an)m(tages)32 b(are:)143 1572 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 1685 y(specially)f(or)h(have)f +(LD_LIBRARY_PATH)e(set)j(right.)143 1798 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 1911 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 2024 y(either)f(really)h(slow)f +(or)h(really)f(heavily)g(loaded.)0 2250 y Fi(On)30 b(HP/UX)i(systems,)g +(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)32 b(CFLA)m(GS)f(should)f(b)s +(e)h(set)g(to)h(-Ae)g(b)s(efore)f(running)e(con-)0 2363 +y(\014gure)h(to)h(enable)g("extended)g(ANSI")f(features.)0 +2523 y(It)j(ma)m(y)g(not)g(b)s(e)f(p)s(ossible)g(to)h(statically)i +(link)e(programs)f(that)h(use)g(CFITSIO)e(on)h(some)h(platforms)g +(\(namely)-8 b(,)0 2636 y(on)28 b(Solaris)h(2.6\))h(due)e(to)h(the)g +(net)m(w)m(ork)g(driv)m(ers)f(\(whic)m(h)h(pro)m(vide)g(FTP)f(and)g +(HTTP)g(access)h(to)h(FITS)d(\014les\).)41 b(It)0 2749 +y(is)33 b(p)s(ossible)f(to)i(mak)m(e)f(b)s(oth)g(a)g(dynamic)f(and)g(a) +i(static)g(v)m(ersion)f(of)g(the)g(CFITSIO)e(library)-8 +b(,)34 b(but)e(net)m(w)m(ork)i(\014le)0 2862 y(access)e(will)e(not)h(b) +s(e)f(p)s(ossible)g(using)g(the)g(static)i(v)m(ersion.)0 +3022 y(On)c(V)-10 b(AX/VMS)31 b(and)d(ALPHA/VMS)i(systems)f(the)h(mak)m +(e)p 2100 3022 28 4 v 34 w(g\015oat.com)h(command)e(\014le)g(ma)m(y)h +(b)s(e)f(executed)h(to)0 3135 y(build)35 b(the)i(c\014tsio.olb)g(ob)5 +b(ject)37 b(library)f(using)g(the)g(default)h(G-\015oating)g(p)s(oin)m +(t)g(option)f(for)g(double)g(v)-5 b(ariables.)0 3248 +y(The)37 b(mak)m(e)p 405 3248 V 33 w(d\015oat.com)i(and)d(mak)m(e)p +1279 3248 V 34 w(ieee.com)j(\014les)f(ma)m(y)f(b)s(e)g(used)f(instead)i +(to)g(build)e(the)h(library)g(with)g(the)0 3361 y(other)26 +b(\015oating)i(p)s(oin)m(t)e(options.)39 b(Note)28 b(that)f(the)f +(getcwd)h(function)f(that)h(is)f(used)f(in)h(the)h(group.c)f(mo)s(dule) +f(ma)m(y)0 3474 y(require)44 b(that)i(programs)e(using)g(CFITSIO)f(b)s +(e)h(link)m(ed)i(with)e(the)h(ALPHA$LIBRAR)-8 b(Y:V)e(AX)m(CR)i(TL.OLB) +0 3587 y(library)g(.)41 b(See)30 b(the)h(example)g(link)f(line)h(in)f +(the)h(next)f(section)i(of)e(this)h(do)s(cumen)m(t.)0 +3747 y(On)25 b(Windo)m(ws)h(IBM-PC)g(t)m(yp)s(e)g(platforms)f(the)h +(situation)h(is)e(more)h(complicated)i(b)s(ecause)d(of)h(the)g(wide)g +(v)-5 b(ariet)m(y)0 3860 y(of)43 b(F)-8 b(ortran)43 b(compilers)h(that) +f(are)g(a)m(v)-5 b(ailable)45 b(and)d(b)s(ecause)h(of)g(the)g(inheren)m +(t)g(complexities)i(of)d(calling)j(the)0 3973 y(CFITSIO)25 +b(C)g(routines)h(from)g(F)-8 b(ortran.)40 b(Tw)m(o)26 +b(di\013eren)m(t)h(v)m(ersions)f(of)g(the)h(CFITSIO)d(dll)i(library)g +(are)g(a)m(v)-5 b(ailable,)0 4085 y(compiled)28 b(with)e(the)i(Borland) +f(C++)f(compiler)i(and)e(the)i(Microsoft)g(Visual)g(C++)e(compiler,)i +(resp)s(ectiv)m(ely)-8 b(,)30 b(in)0 4198 y(the)g(\014les)g(c\014tsio)s +(dll)p 679 4198 V 33 w(2xxx)p 901 4198 V 34 w(b)s(orland.zip)f(and)g +(c\014tsio)s(dll)p 1924 4198 V 33 w(3xxx)p 2146 4198 +V 33 w(v)m(cc.zip,)j(where)e('3xxx')h(represen)m(ts)f(the)g(curren)m(t) +0 4311 y(release)44 b(n)m(um)m(b)s(er.)76 b(Both)43 b(these)g(dll)g +(libraries)g(con)m(tain)h(a)f(set)g(of)f(F)-8 b(ortran)44 +b(wrapp)s(er)d(routines)h(whic)m(h)g(ma)m(y)0 4424 y(b)s(e)37 +b(compatible)i(with)e(some,)j(but)d(probably)g(not)g(all,)k(a)m(v)-5 +b(ailable)40 b(F)-8 b(ortran)38 b(compilers.)63 b(T)-8 +b(o)38 b(test)g(if)g(they)g(are)0 4537 y(compatible,)29 +b(compile)f(the)f(program)g(testf77.f)h(and)f(try)f(linking)i(to)f +(these)h(dll)e(libraries.)40 b(If)27 b(these)g(libraries)g(do)0 +4650 y(not)i(w)m(ork)g(with)f(a)h(particular)g(F)-8 b(ortran)30 +b(compiler,)g(then)e(there)h(are)g(2)g(p)s(ossible)g(solutions.)40 +b(The)28 b(\014rst)g(solution)0 4763 y(w)m(ould)h(b)s(e)h(to)g(mo)s +(dify)f(the)h(\014le)f(cfortran.h)h(for)f(that)i(particular)f(com)m +(bination)h(of)f(C)f(and)g(F)-8 b(ortran)30 b(compilers,)0 +4876 y(and)k(then)g(rebuild)f(the)i(CFITSIO)d(dll)j(library)-8 +b(.)52 b(This)34 b(will)h(require,)g(ho)m(w)m(ev)m(er,)i(a)e(some)f +(exp)s(ertise)h(in)f(mixed)0 4989 y(language)e(programming.)40 +b(The)30 b(other)h(solution)f(is)h(to)g(use)f(the)g(older)h(v5.03)h(F) +-8 b(ortran-77)32 b(implemen)m(tation)g(of)0 5102 y(FITSIO)25 +b(that)h(is)g(still)h(a)m(v)-5 b(ailable)28 b(from)d(the)h(FITSIO)f(w)m +(eb-site.)40 b(This)25 b(v)m(ersion)h(is)g(no)g(longer)g(supp)s(orted,) +f(but)g(it)0 5215 y(do)s(es)k(pro)m(vide)h(the)g(basic)h(functions)e +(for)g(reading)h(and)f(writing)h(FITS)f(\014les)h(and)f(should)g(b)s(e) +g(compatible)i(with)0 5327 y(most)g(F)-8 b(ortran)31 +b(compilers.)0 5488 y(CFITSIO)e(has)h(curren)m(tly)g(b)s(een)g(tested)h +(on)f(the)h(follo)m(wing)h(platforms:)95 5714 y Fe(OPERATING)46 +b(SYSTEM)523 b(COMPILER)p eop end +%%Page: 6 12 +TeXDict begin 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(Sun)47 b(OS)1002 b(gcc)47 b(and)g(cc)g(\(3.0.1\))143 +668 y(Sun)g(Solaris)762 b(gcc)47 b(and)g(cc)143 781 y(Silicon)f +(Graphics)g(IRIX)285 b(gcc)47 b(and)g(cc)143 894 y(Silicon)f(Graphics)g +(IRIX64)189 b(MIPS)143 1007 y(Dec)47 b(Alpha)f(OSF/1)572 +b(gcc)47 b(and)g(cc)143 1120 y(DECstation)93 b(Ultrix)428 +b(gcc)143 1233 y(Dec)47 b(Alpha)f(OpenVMS)476 b(cc)143 +1346 y(DEC)47 b(VAX/VMS)762 b(gcc)47 b(and)g(cc)143 1458 +y(HP-UX)1049 b(gcc)143 1571 y(IBM)47 b(AIX)954 b(gcc)143 +1684 y(Linux)1049 b(gcc)143 1797 y(MkLinux)953 b(DR3)143 +1910 y(Windows)46 b(95/98/NT)523 b(Borland)46 b(C++)h(V4.5)143 +2023 y(Windows)f(95/98/NT/ME/XP)235 b(Microsoft/Compaq)43 +b(Visual)j(C++)h(v5.0,)g(v6.0)143 2136 y(Windows)f(95/98/NT)523 +b(Cygwin)46 b(gcc)143 2249 y(OS/2)1097 b(gcc)47 b(+)g(EMX)143 +2362 y(MacOS)g(7.1)f(or)i(greater)332 b(Metrowerks)45 +b(10.+)0 2591 y Fi(CFITSIO)26 b(will)j(probably)e(run)f(on)i(most)g +(other)h(Unix)e(platforms.)40 b(Cra)m(y)28 b(sup)s(ercomputers)e(are)j +(curren)m(tly)f(not)0 2704 y(supp)s(orted.)0 3033 y Fd(2.2)135 +b(T)-11 b(esting)46 b(the)f(Library)0 3283 y Fi(The)40 +b(CFITSIO)e(library)i(should)f(b)s(e)g(tested)i(b)m(y)f(building)f(and) +g(running)g(the)h(testprog.c)h(program)f(that)h(is)0 +3396 y(included)30 b(with)g(the)g(release.)42 b(On)30 +b(Unix)g(systems)g(t)m(yp)s(e:)191 3625 y Fe(\045)47 +b(make)g(testprog)191 3738 y(\045)g(testprog)f(>)h(testprog.lis)191 +3850 y(\045)g(diff)g(testprog.lis)d(testprog.out)191 +3963 y(\045)j(cmp)g(testprog.fit)e(testprog.std)0 4192 +y Fi(On)30 b(VMS)g(systems,)g(\(assuming)h(cc)g(is)f(the)h(name)f(of)h +(the)f(C)g(compiler)h(command\),)g(t)m(yp)s(e:)191 4421 +y Fe($)47 b(cc)h(testprog.c)191 4534 y($)f(link)g(testprog,)e +(cfitsio/lib,)g(alpha$library:vaxcrtl/l)o(ib)191 4647 +y($)i(run)g(testprog)0 4876 y Fi(The)30 b(testprog)h(program)g(should)e +(pro)s(duce)g(a)i(FITS)f(\014le)g(called)i(`testprog.\014t')g(that)f +(is)f(iden)m(tical)j(to)e(the)f(`test-)0 4989 y(prog.std')25 +b(FITS)f(\014le)g(included)g(with)g(this)h(release.)40 +b(The)24 b(diagnostic)i(messages)g(\(whic)m(h)e(w)m(ere)h(pip)s(ed)f +(to)h(the)g(\014le)0 5102 y(testprog.lis)h(in)e(the)h(Unix)f(example\)) +i(should)d(b)s(e)h(iden)m(tical)j(to)e(the)g(listing)g(con)m(tained)h +(in)e(the)h(\014le)f(testprog.out.)0 5215 y(The)30 b('di\013)7 +b(')31 b(and)e('cmp')i(commands)f(sho)m(wn)g(ab)s(o)m(v)m(e)h(should)f +(not)g(rep)s(ort)g(an)m(y)h(di\013erences)g(in)f(the)g(\014les.)41 +b(\(There)0 5328 y(ma)m(y)35 b(b)s(e)e(some)h(minor)g(formatting)g +(di\013erences,)i(suc)m(h)d(as)i(the)f(presence)g(or)g(absence)g(of)g +(leading)h(zeros,)h(or)e(3)0 5441 y(digit)d(exp)s(onen)m(ts)f(in)g(n)m +(um)m(b)s(ers,)g(whic)m(h)g(can)g(b)s(e)g(ignored\).)0 +5601 y(The)f(F)-8 b(ortran)31 b(wrapp)s(ers)d(in)h(CFITSIO)f(ma)m(y)j +(b)s(e)e(tested)h(with)g(the)g(testf77)h(program.)40 +b(On)29 b(Unix)h(systems)g(the)0 5714 y(fortran)g(compilation)i(and)e +(link)g(command)g(ma)m(y)h(b)s(e)f(called)h('f77')h(or)e('g77',)j(dep)s +(ending)c(on)h(the)g(system.)p eop end +%%Page: 7 13 +TeXDict begin 7 12 bop 0 299 a Fg(2.2.)72 b(TESTING)29 +b(THE)h(LIBRAR)-8 b(Y)2555 b Fi(7)143 555 y Fe(\045)48 +b(f77)f(-o)g(testf77)f(testf77.f)f(-L.)i(-lcfitsio)e(-lnsl)h(-lsocket) +48 668 y(or)143 781 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\))48 894 y(or)143 +1007 y(\045)h(f77)f(-o)g(testf77)f(testf77.f)f(-Wl,-L.)h(-lcfitsio)f +(-lm)i(-lnsl)f(-lsocket)g(\(HP/UX\))48 1120 y(or)143 +1233 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 1458 y(\045)h(testf77)d +(>)j(testf77.lis)143 1571 y(\045)g(diff)e(testf77.lis)f(testf77.out)143 +1684 y(\045)j(cmp)f(testf77.fit)d(testf77.std)0 1934 +y Fi(On)31 b(mac)m(hines)h(running)f(SUN)g(O/S,)h(F)-8 +b(ortran)33 b(programs)e(m)m(ust)h(b)s(e)f(compiled)h(with)g(the)g('-f) +7 b(')32 b(option)h(to)f(force)0 2047 y(double)24 b(precision)g(v)-5 +b(ariables)25 b(to)g(b)s(e)e(aligned)i(on)f(8-b)m(yte)i(b)s(oundaries)c +(to)j(mak)m(e)g(the)g(fortran-declared)f(v)-5 b(ariables)0 +2160 y(compatible)34 b(with)e(C.)g(A)h(similar)g(compiler)g(option)g +(ma)m(y)g(b)s(e)f(required)g(on)g(other)h(platforms.)48 +b(F)-8 b(ailing)34 b(to)f(use)0 2273 y(this)26 b(option)g(ma)m(y)g +(cause)h(the)f(program)f(to)i(crash)e(on)h(FITSIO)f(routines)g(that)i +(read)f(or)f(write)h(double)g(precision)0 2386 y(v)-5 +b(ariables.)0 2546 y(On)27 b(Windo)m(ws)h(platforms,)g(linking)g(F)-8 +b(ortran)28 b(programs)f(with)h(a)g(C)f(library)g(often)h(dep)s(ends)e +(on)i(the)g(particular)0 2659 y(compilers)40 b(in)m(v)m(olv)m(ed.)71 +b(Some)40 b(users)f(ha)m(v)m(e)i(found)d(the)i(follo)m(wing)i(commands) +d(w)m(ork)h(when)f(using)g(the)h(In)m(tel)0 2772 y(F)-8 +b(ortran)31 b(compiler:)0 3022 y Fe(ifort)46 b(/libs.dll)g(cfitsio.lib) +e(/MD)j(testf77.f)f(/Gm)0 3247 y(or)h(possibly,)0 3473 +y(ifort)f(/libs:dll)g(cfitsio.lib)e(/MD)j(/fpp)g +(/extfpp:cfortran.h,fitsi)o(o.h)191 3586 y(/iface:cvf)e(testf77.f)0 +3836 y Fi(Also)32 b(note)h(that)f(on)g(some)g(systems)f(the)h(output)g +(listing)g(of)g(the)g(testf77)h(program)f(ma)m(y)g(di\013er)f(sligh)m +(tly)i(from)0 3949 y(the)f(testf77.std)i(template)g(if)e(leading)h +(zeros)g(are)g(not)g(prin)m(ted)e(b)m(y)i(default)f(b)s(efore)g(the)g +(decimal)i(p)s(oin)m(t)e(when)0 4062 y(using)e(F)h(format.)0 +4222 y(A)f(few)h(other)f(utilit)m(y)i(programs)e(are)h(included)e(with) +h(CFITSIO:)191 4472 y Fe(speed)46 b(-)i(measures)d(the)i(maximum)f +(throughput)f(\(in)i(MB)g(per)g(second\))668 4585 y(for)g(writing)f +(and)h(reading)f(FITS)g(files)h(with)f(CFITSIO)191 4811 +y(listhead)f(-)j(lists)e(all)h(the)g(header)f(keywords)g(in)h(any)g +(FITS)f(file)191 5036 y(fitscopy)f(-)j(copies)e(any)h(FITS)g(file)f +(\(especially)f(useful)h(in)h(conjunction)811 5149 y(with)g(the)g +(CFITSIO's)e(extended)h(input)g(filename)g(syntax\))191 +5375 y(cookbook)f(-)j(a)f(sample)f(program)g(that)h(performs)e(common)i +(read)f(and)811 5488 y(write)h(operations)e(on)i(a)g(FITS)g(file.)191 +5714 y(iter_a,)f(iter_b,)g(iter_c)g(-)h(examples)f(of)h(the)g(CFITSIO)f +(iterator)f(routine)p eop end +%%Page: 8 14 +TeXDict begin 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(The)f(\014rst)f(4)i(of)g(these)g(utilit)m(y)g(programs)f(can)h(b)s +(e)f(compiled)h(and)e(link)m(ed)i(b)m(y)f(t)m(yping)143 +816 y Fe(\045)95 b(make)47 b(program_name)0 1151 y Fd(2.3)135 +b(Linking)45 b(Programs)h(with)f(FITSIO)0 1402 y Fi(When)31 +b(linking)g(applications)i(soft)m(w)m(are)f(with)f(the)g(FITSIO)f +(library)-8 b(,)32 b(sev)m(eral)h(system)e(libraries)g(usually)g(need)0 +1515 y(to)26 b(b)s(e)f(sp)s(eci\014ed)g(on)g(the)h(link)g(comman)f +(Unix)h(systems,)h(the)e(most)h(reliable)h(w)m(a)m(y)f(to)h(determine)e +(what)h(libraries)0 1627 y(are)32 b(required)f(is)g(to)i(t)m(yp)s(e)e +('mak)m(e)i(testprog')g(and)e(see)h(what)f(libraries)h(the)g +(con\014gure)f(script)h(has)f(added.)43 b(The)0 1740 +y(t)m(ypical)25 b(libraries)f(that)g(ma)m(y)g(need)f(to)h(b)s(e)f +(added)g(are)g(-lm)h(\(the)g(math)f(library\))h(and)f(-lnsl)g(and)g +(-lso)s(c)m(k)m(et)j(\(needed)0 1853 y(only)h(for)f(FTP)g(and)g(HTTP)g +(\014le)h(access\).)41 b(These)26 b(latter)i(2)f(libraries)g(are)g(not) +g(needed)f(on)g(VMS)h(and)f(Windo)m(ws)0 1966 y(platforms,)31 +b(b)s(ecause)f(FTP)g(\014le)h(access)g(is)g(not)f(curren)m(tly)h(supp)s +(orted)d(on)i(those)h(platforms.)0 2126 y(Note)i(that)g(when)e +(upgrading)g(to)i(a)f(new)m(er)g(v)m(ersion)g(of)g(CFITSIO)f(it)h(is)g +(usually)g(necessary)g(to)h(recompile,)h(as)0 2239 y(w)m(ell)d(as)g +(relink,)g(the)f(programs)g(that)h(use)f(CFITSIO,)f(b)s(ecause)i(the)f +(de\014nitions)g(in)g(\014tsio.h)h(often)f(c)m(hange.)0 +2574 y Fd(2.4)135 b(Getting)46 b(Started)g(with)f(FITSIO)0 +2825 y Fi(In)32 b(order)h(to)h(e\013ectiv)m(ely)i(use)d(the)g(FITSIO)f +(library)h(as)h(quic)m(kly)g(as)f(p)s(ossible,)h(it)g(is)f(recommended) +g(that)g(new)0 2938 y(users)d(follo)m(w)h(these)g(steps:)0 +3098 y(1.)62 b(Read)38 b(the)f(follo)m(wing)i(`FITS)e(Primer')g(c)m +(hapter)h(for)g(a)f(brief)g(o)m(v)m(erview)i(of)f(the)g(structure)e(of) +i(FITS)f(\014les.)0 3211 y(This)25 b(is)h(esp)s(ecially)h(imp)s(ortan)m +(t)g(for)e(users)h(who)f(ha)m(v)m(e)i(not)g(previously)e(dealt)i(with)f +(the)g(FITS)f(table)i(and)f(image)0 3324 y(extensions.)0 +3484 y(2.)41 b(W)-8 b(rite)32 b(a)f(simple)f(program)g(to)h(read)g(or)f +(write)g(a)h(FITS)f(\014le)g(using)g(the)h(Basic)g(In)m(terface)h +(routines.)0 3644 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)f(included)f(with)g(this)h(release)h(for)e +(examples)i(of)f(routines)f(that)0 3757 y(p)s(erform)h(v)-5 +b(arious)30 b(common)h(FITS)f(\014le)g(op)s(erations.)0 +3917 y(4.)52 b(Read)34 b(Chapters)g(4)g(and)f(5)i(to)g(b)s(ecome)f +(familiar)h(with)e(the)i(con)m(v)m(en)m(tions)h(and)d(adv)-5 +b(anced)34 b(features)h(of)f(the)0 4030 y(FITSIO)29 b(in)m(terface.)0 +4190 y(5.)47 b(Scan)32 b(through)f(the)h(more)h(extensiv)m(e)g(set)g +(of)g(routines)f(that)g(are)h(pro)m(vided)f(in)g(the)g(`Adv)-5 +b(anced)32 b(In)m(terface'.)0 4303 y(These)22 b(routines)f(p)s(erform)g +(more)h(sp)s(ecialized)h(functions)e(than)g(are)i(pro)m(vided)e(b)m(y)h +(the)g(Basic)h(In)m(terface)g(routines.)0 4638 y Fd(2.5)135 +b(Example)46 b(Program)0 4888 y Fi(The)32 b(follo)m(wing)i(listing)f +(sho)m(ws)f(an)g(example)i(of)e(ho)m(w)h(to)g(use)f(the)g(FITSIO)g +(routines)g(in)g(a)h(F)-8 b(ortran)33 b(program.)0 5001 +y(Refer)38 b(to)h(the)g(co)s(okb)s(o)s(ok.f)f(program)g(that)h(is)f +(included)f(with)h(the)h(FITSIO)e(distribution)g(for)h(examples)h(of)0 +5114 y(other)31 b(FITS)e(programs.)286 5375 y Fe(program)46 +b(writeimage)0 5601 y(C)238 b(Create)46 b(a)i(FITS)f(primary)e(array)i +(containing)e(a)i(2-D)g(image)p eop end +%%Page: 9 15 +TeXDict begin 9 14 bop 0 299 a Fg(2.5.)72 b(EXAMPLE)31 +b(PR)m(OGRAM)2664 b Fi(9)286 555 y Fe(integer)46 b +(status,unit,blocksize,bit)o(pix,)o(nax)o(is,n)o(axes)o(\(2\))286 +668 y(integer)g(i,j,group,fpixel,nelement)o(s,ar)o(ray)o(\(300)o(,200)o +(\))286 781 y(character)g(filename*80)286 894 y(logical)g +(simple,extend)286 1120 y(status=0)0 1233 y(C)238 b(Name)47 +b(of)g(the)g(FITS)g(file)f(to)i(be)f(created:)286 1346 +y(filename='ATESTFILE.FITS')0 1571 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 1684 y(call)g(ftgiou\(unit,status\))0 1910 y(C)238 +b(create)46 b(the)h(new)g(empty)g(FITS)f(file)286 2023 +y(blocksize=1)286 2136 y(call)h(ftinit\(unit,filename,blo)o(cksi)o +(ze,s)o(tat)o(us\))0 2362 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 +2475 y(simple=.true.)286 2588 y(bitpix=16)286 2700 y(naxis=2)286 +2813 y(naxes\(1\)=300)286 2926 y(naxes\(2\)=200)286 3039 +y(extend=.true.)0 3265 y(C)238 b(write)47 b(the)g(required)e(header)h +(keywords)286 3378 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 3604 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 3717 y(do)h(j=1,naxes\(2\))477 3830 +y(do)f(i=1,naxes\(1\))668 3942 y(array\(i,j\)=i+j)477 +4055 y(end)g(do)286 4168 y(end)g(do)0 4394 y(C)238 b(write)47 +b(the)g(array)f(to)h(the)g(FITS)g(file)286 4507 y(group=1)286 +4620 y(fpixel=1)286 4733 y(nelements=naxes\(1\)*naxes\(2)o(\))286 +4846 y(call)g(ftpprj\(unit,group,fpixel)o(,nel)o(emen)o(ts,)o(arra)o +(y,st)o(atu)o(s\))0 5072 y(C)238 b(write)47 b(another)f(optional)f +(keyword)h(to)h(the)g(header)286 5185 y(call)g +(ftpkyj\(unit,'EXPOSURE',1)o(500,)o('Tot)o(al)41 b(Exposure)46 +b(Time',status\))0 5410 y(C)238 b(close)47 b(the)g(file)f(and)h(free)g +(the)g(unit)f(number)286 5523 y(call)h(ftclos\(unit,)d(status\))286 +5636 y(call)j(ftfiou\(unit,)d(status\))p eop end +%%Page: 10 16 +TeXDict begin 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)286 555 +y Fe(end)0 948 y Fd(2.6)135 b(Legal)46 b(Stu\013)0 1210 +y Fi(Cop)m(yrigh)m(t)37 b(\(Unpublished{all)g(righ)m(ts)g(reserv)m(ed)g +(under)e(the)i(cop)m(yrigh)m(t)h(la)m(ws)f(of)g(the)g(United)g +(States\),)j(U.S.)0 1323 y(Go)m(v)m(ernmen)m(t)30 b(as)g(represen)m +(ted)e(b)m(y)h(the)g(Administrator)g(of)g(the)g(National)h(Aeronautics) +g(and)e(Space)h(Adminis-)0 1436 y(tration.)42 b(No)31 +b(cop)m(yrigh)m(t)g(is)g(claimed)g(in)f(the)h(United)f(States)h(under)e +(Title)j(17,)f(U.S.)f(Co)s(de.)0 1596 y(P)m(ermission)g(to)g(freely)f +(use,)h(cop)m(y)-8 b(,)31 b(mo)s(dify)-8 b(,)29 b(and)g(distribute)g +(this)g(soft)m(w)m(are)i(and)e(its)h(do)s(cumen)m(tation)g(without)0 +1709 y(fee)f(is)f(hereb)m(y)g(gran)m(ted,)i(pro)m(vided)e(that)h(this)f +(cop)m(yrigh)m(t)i(notice)f(and)f(disclaimer)h(of)f(w)m(arran)m(t)m(y)i +(app)s(ears)d(in)h(all)0 1822 y(copies.)0 1982 y(DISCLAIMER:)0 +2142 y(THE)33 b(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-)0 +2255 y(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 2368 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 2481 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 2594 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 +2707 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 2819 y(SOFTW)-10 b(ARE)31 b(WILL)h(BE)g(ERR)m(OR)g +(FREE.)g(IN)g(NO)g(EVENT)f(SHALL)g(NASA)h(BE)g(LIABLE)g(F)m(OR)g(ANY)0 +2932 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 3045 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 +3158 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 3271 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 3384 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 3497 +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 3610 y(VICES)29 b(PR)m(O)m(VIDED)j(HEREUNDER.")0 +4002 y Fd(2.7)135 b(Ac)l(kno)l(wledgmen)l(ts)0 4264 y +Fi(The)29 b(dev)m(elopmen)m(t)h(of)g(man)m(y)f(of)h(the)f(p)s(o)m(w)m +(erful)g(features)g(in)g(CFITSIO)f(w)m(as)i(made)f(p)s(ossible)g +(through)f(collab-)0 4377 y(orations)35 b(with)f(man)m(y)h(p)s(eople)f +(or)h(organizations)h(from)e(around)f(the)i(w)m(orld.)52 +b(The)34 b(follo)m(wing,)j(in)d(particular,)0 4490 y(ha)m(v)m(e)e(made) +e(esp)s(ecially)i(signi\014can)m(t)f(con)m(tributions:)0 +4650 y(Programmers)25 b(from)h(the)f(In)m(tegral)i(Science)g(Data)g +(Cen)m(ter,)g(Switzerland)f(\(namely)-8 b(,)28 b(Jurek)c(Bork)m(o)m +(wski,)29 b(Bruce)0 4763 y(O'Neel,)34 b(and)e(Don)h(Jennings\),)f +(designed)g(the)h(concept)g(for)f(the)h(plug-in)f(I/O)g(driv)m(ers)g +(that)h(w)m(as)g(in)m(tro)s(duced)0 4876 y(with)i(CFITSIO)e(2.0.)56 +b(The)34 b(use)h(of)g(`driv)m(ers')g(greatly)h(simpli\014ed)f(the)g(lo) +m(w-lev)m(el)j(I/O,)d(whic)m(h)f(in)h(turn)f(made)0 4989 +y(other)40 b(new)f(features)i(in)e(CFITSIO)f(\(e.g.,)45 +b(supp)s(ort)38 b(for)h(compressed)h(FITS)f(\014les)h(and)f(supp)s(ort) +f(for)i(IRAF)0 5102 y(format)32 b(image)g(\014les\))g(m)m(uc)m(h)f +(easier)i(to)f(implemen)m(t.)44 b(Jurek)31 b(Bork)m(o)m(wski)h(wrote)g +(the)g(Shared)e(Memory)i(driv)m(er,)0 5215 y(and)23 b(Bruce)i(O'Neel)g +(wrote)f(the)g(driv)m(ers)g(for)f(accessing)j(FITS)d(\014les)h(o)m(v)m +(er)h(the)f(net)m(w)m(ork)h(using)e(the)i(FTP)-8 b(,)24 +b(HTTP)-8 b(,)0 5328 y(and)30 b(R)m(OOT)g(proto)s(cols.)0 +5488 y(The)45 b(ISDC)g(also)h(pro)m(vided)f(the)h(template)h(parsing)e +(routines)g(\(written)h(b)m(y)f(Jurek)g(Bork)m(o)m(wski\))i(and)e(the)0 +5601 y(hierarc)m(hical)39 b(grouping)d(routines)h(\(written)h(b)m(y)f +(Don)h(Jennings\).)60 b(The)37 b(ISDC)f(D)m(AL)i(\(Data)h(Access)f(La)m +(y)m(er\))0 5714 y(routines)30 b(are)h(la)m(y)m(ered)h(on)e(top)h(of)f +(CFITSIO)f(and)h(mak)m(e)h(extensiv)m(e)h(use)e(of)h(these)g(features.) +p eop end +%%Page: 11 17 +TeXDict begin 11 16 bop 0 299 a Fg(2.7.)72 b(A)m(CKNO)m(WLEDGMENTS)2577 +b Fi(11)0 555 y(Uw)m(e)25 b(Lammers)e(\(XMM/ESA/ESTEC,)h(The)g +(Netherlands\))g(designed)g(the)g(high-p)s(erformance)f(lexical)j +(pars-)0 668 y(ing)42 b(algorithm)h(that)f(is)g(used)f(to)i(do)e +(on-the-\015y)h(\014ltering)g(of)g(FITS)f(tables.)76 +b(This)41 b(algorithm)i(essen)m(tially)0 781 y(pre-compiles)36 +b(the)g(user-supplied)e(selection)k(expression)d(in)m(to)i(a)f(form)g +(that)g(can)g(b)s(e)f(rapidly)g(ev)-5 b(aluated)37 b(for)0 +894 y(eac)m(h)31 b(ro)m(w.)40 b(P)m(eter)31 b(Wilson)f(\(RSTX,)f +(NASA/GSF)m(C\))i(then)e(wrote)h(the)g(parsing)f(routines)g(used)g(b)m +(y)g(CFITSIO)0 1007 y(based)i(on)f(Lammers')h(design,)g(com)m(bined)g +(with)g(other)g(tec)m(hniques)g(suc)m(h)g(as)g(the)g(CFITSIO)f +(iterator)i(routine)0 1120 y(to)g(further)e(enhance)h(the)h(data)g(pro) +s(cessing)f(throughput.)42 b(This)31 b(e\013ort)h(also)g(b)s +(ene\014ted)e(from)h(a)h(m)m(uc)m(h)f(earlier)0 1233 +y(lexical)25 b(parsing)f(routine)f(that)h(w)m(as)g(dev)m(elop)s(ed)g(b) +m(y)g(Ken)m(t)g(Blac)m(kburn)f(\(NASA/GSF)m(C\).)i(More)g(recen)m(tly) +-8 b(,)27 b(Craig)0 1346 y(Markw)m(ardt)i(\(NASA/GSF)m(C\))g(implemen)m +(ted)g(additional)g(functions)f(\(median,)h(a)m(v)m(erage,)j(stddev\))c +(and)g(other)0 1458 y(enhancemen)m(ts)j(to)g(the)g(lexical)h(parser.)0 +1619 y(The)40 b(CFITSIO)g(iterator)i(function)e(is)h(lo)s(osely)h +(based)f(on)f(similar)i(ideas)f(dev)m(elop)s(ed)g(for)g(the)g(XMM)g +(Data)0 1732 y(Access)31 b(La)m(y)m(er.)0 1892 y(P)m(eter)25 +b(Wilson)g(\(RSTX,)f(NASA/GSF)m(C\))h(wrote)g(the)f(complete)i(set)e +(of)h(F)-8 b(ortran-callable)27 b(wrapp)s(ers)22 b(for)i(all)h(the)0 +2005 y(CFITSIO)k(routines,)h(whic)m(h)g(in)g(turn)g(rely)g(on)h(the)f +(CF)m(OR)-8 b(TRAN)31 b(macro)g(dev)m(elop)s(ed)g(b)m(y)f(Burkhard)f +(Buro)m(w.)0 2165 y(The)h(syn)m(tax)i(used)e(b)m(y)h(CFITSIO)f(for)g +(\014ltering)i(or)f(binning)e(input)h(FITS)h(\014les)g(is)g(based)f(on) +h(ideas)h(dev)m(elop)s(ed)0 2278 y(for)41 b(the)g(AXAF)h(Science)g(Cen) +m(ter)g(Data)h(Mo)s(del)e(b)m(y)g(Jonathan)g(McDo)m(w)m(ell,)47 +b(An)m(tonella)c(F)-8 b(ruscione,)45 b(Aneta)0 2391 y(Siemigino)m(wsk) +-5 b(a)27 b(and)e(Bill)i(Jo)m(y)m(e.)41 b(See)26 b(h)m +(ttp://heasarc.gsfc.nasa.go)m(v/do)s(cs/journal/axa)q(f7.h)m(t)q(ml)32 +b(for)25 b(further)0 2503 y(description)30 b(of)h(the)g(AXAF)g(Data)h +(Mo)s(del.)0 2664 y(The)j(\014le)g(decompression)g(co)s(de)g(w)m(ere)h +(tak)m(en)g(directly)g(from)e(the)i(gzip)f(\(GNU)h(zip\))g(program)f +(dev)m(elop)s(ed)g(b)m(y)0 2777 y(Jean-loup)30 b(Gailly)i(and)e +(others.)0 2937 y(Doug)h(Mink,)g(SA)m(O,)f(pro)m(vided)g(the)h +(routines)f(for)g(con)m(v)m(erting)i(IRAF)f(format)g(images)g(in)m(to)g +(FITS)f(format.)0 3097 y(Martin)j(Reinec)m(k)m(e)i(\(Max)f(Planc)m(k)f +(Institute,)h(Garc)m(hing\)\))g(pro)m(vided)f(the)g(mo)s(di\014cations) +f(to)i(cfortran.h)e(that)0 3210 y(are)d(necessary)h(to)f(supp)s(ort)e +(64-bit)k(in)m(teger)f(v)-5 b(alues)29 b(when)f(calling)i(C)f(routines) +g(from)f(fortran)h(programs.)39 b(The)0 3323 y(cfortran.h)30 +b(macros)h(w)m(ere)g(originally)h(dev)m(elop)s(ed)e(b)m(y)h(Burkhard)e +(Buro)m(w)h(\(CERN\).)0 3483 y(Julian)f(T)-8 b(a)m(ylor)31 +b(\(ESO,)e(Garc)m(hing\))i(pro)m(vided)e(the)g(fast)h(b)m(yte-sw)m +(apping)g(algorithms)h(that)f(use)f(the)h(SSE2)f(and)0 +3596 y(SSSE3)g(mac)m(hine)i(instructions)f(a)m(v)-5 b(ailable)33 +b(on)d(x86)p 1784 3596 28 4 v 34 w(64)h(CPUs.)0 3756 +y(In)c(addition,)i(man)m(y)f(other)g(p)s(eople)g(ha)m(v)m(e)h(made)f(v) +-5 b(aluable)29 b(con)m(tributions)f(to)h(the)f(dev)m(elopmen)m(t)h(of) +f(CFITSIO.)0 3869 y(These)i(include)g(\(with)h(ap)s(ologies)h(to)f +(others)f(that)h(ma)m(y)g(ha)m(v)m(e)h(inadv)m(erten)m(tly)g(b)s(een)d +(omitted\):)0 4029 y(Stev)m(e)g(Allen,)g(Carl)f(Ak)m(erlof,)h(Keith)f +(Arnaud,)g(Morten)g(Krabb)s(e)e(Barfo)s(ed,)j(Ken)m(t)f(Blac)m(kburn,)h +(G)f(Bo)s(dammer,)0 4142 y(Romk)m(e)h(Bon)m(tek)m(o)s(e,)i(Lucio)d +(Chiapp)s(etti,)g(Keith)g(Costorf,)g(Robin)g(Corb)s(et,)g(John)e(Da)m +(vis,)k(Ric)m(hard)e(Fink,)h(Ning)0 4255 y(Gan,)g(Emily)e(Greene,)i(Jo) +s(e)f(Harrington,)h(Cheng)e(Ho,)i(Phil)e(Ho)s(dge,)i(Jim)f(Ingham,)g(Y) +-8 b(oshitak)j(a)29 b(Ishisaki,)f(Diab)0 4368 y(Jerius,)j(Mark)h +(Levine,)g(T)-8 b(o)s(dd)30 b(Karak)-5 b(askian,)32 b(Edw)m(ard)f +(King,)g(Scott)i(Ko)s(c)m(h,)e(Claire)h(Larkin,)f(Rob)h(Managan,)0 +4481 y(Eric)38 b(Mandel,)i(John)d(Matto)m(x,)43 b(Carsten)37 +b(Mey)m(er,)42 b(Emi)37 b(Miy)m(ata,)43 b(Stefan)38 b(Mo)s(c)m(hnac)m +(ki,)j(Mik)m(e)f(Noble,)g(Oliv)m(er)0 4594 y(Ob)s(erdorf,)c(Cliv)m(e)i +(P)m(age,)i(Arvind)35 b(P)m(armar,)j(Je\013)f(P)m(edelt)m(y)-8 +b(,)40 b(Tim)c(P)m(earson,)j(Maren)e(Purv)m(es,)h(Scott)f(Randall,)0 +4706 y(Chris)d(Rogers,)j(Arnold)e(Rots,)i(Barry)f(Sc)m(hlesinger,)h +(Robin)e(Stebbins,)g(Andrew)f(Szymk)m(o)m(wiak,)k(Allyn)e(T)-8 +b(en-)0 4819 y(nan)m(t,)31 b(P)m(eter)g(T)-8 b(eub)s(en,)30 +b(James)g(Theiler,)h(Doug)g(T)-8 b(o)s(dy)g(,)31 b(Shiro)e(Ueno,)j +(Stev)m(e)f(W)-8 b(alton,)33 b(Arc)m(hie)e(W)-8 b(arno)s(c)m(k,)32 +b(Alan)0 4932 y(W)-8 b(atson,)32 b(Dan)f(Whipple,)f(Wim)h(Wimmers,)g(P) +m(eter)g(Y)-8 b(oung,)31 b(Jianjun)e(Xu,)h(and)g(Nelson)h(Zarate.)p +eop end +%%Page: 12 18 +TeXDict begin 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 end +%%Page: 13 19 +TeXDict begin 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)23 b(section)j(giv)m +(es)f(a)g(brief)e(o)m(v)m(erview)j(of)e(the)h(structure)e(of)i(FITS)e +(\014les.)38 b(Users)24 b(should)g(refer)f(to)i(the)g(do)s(cumen-)0 +2293 y(tation)j(a)m(v)-5 b(ailable)30 b(from)d(the)g(NOST,)f(as)i +(describ)s(ed)e(in)h(the)g(in)m(tro)s(duction,)h(for)f(more)g(detailed) +i(information)e(on)0 2406 y(FITS)j(formats.)0 2566 y(FITS)37 +b(w)m(as)g(\014rst)g(dev)m(elop)s(ed)h(in)f(the)g(late)i(1970's)g(as)f +(a)f(standard)g(data)h(in)m(terc)m(hange)h(format)f(b)s(et)m(w)m(een)g +(v)-5 b(ar-)0 2679 y(ious)38 b(astronomical)h(observ)-5 +b(atories.)64 b(Since)37 b(then)g(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)h(data)f(analysis)g(soft)m(w)m(are)g(pac) +m(k)-5 b(ages.)0 2952 y(A)34 b(FITS)f(\014le)g(consists)h(of)g(one)g +(or)g(more)g(Header)g(+)f(Data)i(Units)f(\(HDUs\),)i(where)d(the)h +(\014rst)f(HDU)h(is)g(called)0 3065 y(the)j(`Primary)f(HDU',)i(or)f +(`Primary)f(Arra)m(y'.)60 b(The)36 b(primary)g(arra)m(y)h(con)m(tains)h +(an)e(N-dimensional)i(arra)m(y)f(of)0 3177 y(pixels,)32 +b(suc)m(h)g(as)f(a)h(1-D)h(sp)s(ectrum,)e(a)h(2-D)h(image,)g(or)f(a)g +(3-D)g(data)h(cub)s(e.)43 b(Six)31 b(di\013eren)m(t)h(primary)f(datat)m +(yp)s(es)0 3290 y(are)g(supp)s(orted:)39 b(Unsigned)30 +b(8-bit)h(b)m(ytes,)g(16,)g(32,)h(and)e(64-bit)h(signed)g(in)m(tegers,) +h(and)d(32)j(and)d(64-bit)j(\015oating)0 3403 y(p)s(oin)m(t)d(reals.)41 +b(FITS)29 b(also)i(has)e(a)h(con)m(v)m(en)m(tion)h(for)e(storing)h +(unsigned)f(in)m(tegers)h(\(see)h(the)e(later)i(section)f(en)m(titled)0 +3516 y(`Unsigned)h(In)m(tegers')h(for)f(more)g(details\).)43 +b(The)31 b(primary)f(HDU)i(ma)m(y)f(also)h(consist)g(of)f(only)g(a)g +(header)g(with)g(a)0 3629 y(n)m(ull)f(arra)m(y)h(con)m(taining)h(no)e +(data)h(pixels.)0 3789 y(An)m(y)i(n)m(um)m(b)s(er)e(of)h(additional)i +(HDUs)f(ma)m(y)g(follo)m(w)h(the)e(primary)g(arra)m(y;)i(these)f +(additional)h(HDUs)f(are)g(called)0 3902 y(FITS)d(`extensions'.)41 +b(There)30 b(are)h(curren)m(tly)f(3)h(t)m(yp)s(es)g(of)f(extensions)h +(de\014ned)e(b)m(y)h(the)h(FITS)f(standard:)136 4171 +y Fc(\017)46 b Fi(Image)31 b(Extension)g(-)g(a)f(N-dimensional)h(arra)m +(y)g(of)g(pixels,)g(lik)m(e)g(in)f(a)h(primary)e(arra)m(y)136 +4368 y Fc(\017)46 b Fi(ASCI)s(I)29 b(T)-8 b(able)31 b(Extension)g(-)f +(ro)m(ws)h(and)e(columns)h(of)h(data)g(in)f(ASCI)s(I)f(c)m(haracter)j +(format)136 4564 y Fc(\017)46 b Fi(Binary)31 b(T)-8 b(able)31 +b(Extension)f(-)h(ro)m(ws)f(and)g(columns)g(of)h(data)g(in)f(binary)f +(represen)m(tation)0 4833 y(In)k(eac)m(h)i(case)g(the)f(HDU)h(consists) +g(of)f(an)g(ASCI)s(I)e(Header)i(Unit)h(follo)m(w)m(ed)g(b)m(y)f(an)g +(optional)h(Data)g(Unit.)52 b(F)-8 b(or)0 4946 y(historical)37 +b(reasons,)g(eac)m(h)f(Header)g(or)g(Data)h(unit)e(m)m(ust)g(b)s(e)g +(an)g(exact)i(m)m(ultiple)f(of)g(2880)h(8-bit)f(b)m(ytes)g(long.)0 +5059 y(An)m(y)30 b(un)m(used)g(space)g(is)h(padded)e(with)h(\014ll)g(c) +m(haracters)i(\(ASCI)s(I)d(blanks)h(or)h(zeros\).)0 5219 +y(Eac)m(h)i(Header)f(Unit)h(consists)g(of)f(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') +g(whic)m(h)0 5332 y(ha)m(v)m(e)f(the)e(general)i(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 end +%%Page: 14 20 +TeXDict begin 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)g(and)e +(can)h(only)h(con)m(tain)g(upp)s(ercase)e(letters,)k(the)0 +668 y(digits)25 b(0-9,)i(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)f(\(usually\))h +(follo)m(w)m(ed)i(b)m(y)d(an)0 781 y(equals)29 b(sign)g(and)f(a)g +(space)i(c)m(haracter)g(\(=)e(\))h(in)f(columns)h(9)g(-)f(10)i(of)f +(the)f(record,)h(follo)m(w)m(ed)i(b)m(y)d(the)h(v)-5 +b(alue)29 b(of)g(the)0 894 y(k)m(eyw)m(ord)34 b(whic)m(h)g(ma)m(y)g(b)s +(e)f(either)h(an)g(in)m(teger,)i(a)e(\015oating)g(p)s(oin)m(t)g(n)m(um) +m(b)s(er,)g(a)g(c)m(haracter)h(string)e(\(enclosed)i(in)0 +1007 y(single)28 b(quotes\),)i(or)e(a)g(b)s(o)s(olean)g(v)-5 +b(alue)28 b(\(the)g(letter)h(T)f(or)f(F\).)i(A)f(k)m(eyw)m(ord)g(ma)m +(y)h(also)f(ha)m(v)m(e)h(a)g(n)m(ull)e(or)h(unde\014ned)0 +1120 y(v)-5 b(alue)31 b(if)f(there)h(is)f(no)g(sp)s(eci\014ed)g(v)-5 +b(alue)31 b(string,)g(as)f(in)g(the)h(second)f(example.)0 +1280 y(The)42 b(last)h(k)m(eyw)m(ord)g(in)f(the)h(header)f(is)g(alw)m +(a)m(ys)i(the)f(`END')g(k)m(eyw)m(ord)g(whic)m(h)f(has)g(no)h(v)-5 +b(alue)42 b(or)h(commen)m(t)0 1393 y(\014elds.)d(There)30 +b(are)h(man)m(y)f(rules)g(go)m(v)m(erning)i(the)e(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)g(is)f(b)s(etter)h(to)g(rely)g(on)f +(standard)g(in)m(terface)i(soft)m(w)m(are)g(lik)m(e)g(FITSIO)d(to)j +(correctly)g(construct)0 1619 y(or)d(to)h(parse)g(the)f(k)m(eyw)m(ord)h +(records)f(rather)g(than)h(try)f(to)h(deal)g(directly)g(with)f(the)g +(ra)m(w)h(FITS)f(formats.)0 1779 y(Eac)m(h)37 b(Header)g(Unit)f(b)s +(egins)g(with)g(a)g(series)h(of)f(required)g(k)m(eyw)m(ords)g(whic)m(h) +g(dep)s(end)f(on)h(the)g(t)m(yp)s(e)h(of)f(HDU.)0 1892 +y(These)31 b(required)g(k)m(eyw)m(ords)h(sp)s(ecify)g(the)f(size)i(and) +e(format)h(of)g(the)g(follo)m(wing)h(Data)g(Unit.)45 +b(The)31 b(header)g(ma)m(y)0 2005 y(con)m(tain)h(other)f(optional)g(k)m +(eyw)m(ords)g(to)h(describ)s(e)e(other)g(asp)s(ects)h(of)g(the)g(data,) +g(suc)m(h)g(as)g(the)f(units)g(or)h(scaling)0 2118 y(v)-5 +b(alues.)44 b(Other)31 b(COMMENT)g(or)g(HISTOR)-8 b(Y)30 +b(k)m(eyw)m(ords)i(are)g(also)g(frequen)m(tly)g(added)e(to)i(further)e +(do)s(cumen)m(t)0 2230 y(the)h(data)g(\014le.)0 2391 +y(The)36 b(optional)h(Data)h(Unit)f(immediately)g(follo)m(ws)h(the)e +(last)h(2880-b)m(yte)i(blo)s(c)m(k)e(in)f(the)g(Header)h(Unit.)59 +b(Some)0 2503 y(HDUs)31 b(do)f(not)h(ha)m(v)m(e)g(a)g(Data)h(Unit)f +(and)f(only)g(consist)h(of)g(the)f(Header)h(Unit.)0 2664 +y(If)24 b(there)i(is)f(more)g(than)f(one)h(HDU)h(in)f(the)g(FITS)f +(\014le,)i(then)f(the)g(Header)h(Unit)f(of)g(the)g(next)g(HDU)h +(immediately)0 2777 y(follo)m(ws)g(the)e(last)i(2880-b)m(yte)h(blo)s(c) +m(k)e(of)g(the)f(previous)g(Data)j(Unit)d(\(or)h(Header)g(Unit)g(if)f +(there)h(is)g(no)f(Data)i(Unit\).)0 2937 y(The)k(main)g(required)g(k)m +(eyw)m(ords)g(in)g(FITS)g(primary)g(arra)m(ys)g(or)h(image)g +(extensions)g(are:)136 3172 y Fc(\017)46 b Fi(BITPIX)33 +b({)h(de\014nes)e(the)i(datat)m(yp)s(e)g(of)f(the)g(arra)m(y:)47 +b(8,)35 b(16,)g(32,)g(64,)g(-32,)g(-64)g(for)e(unsigned)f(8{bit)i(b)m +(yte,)227 3284 y(16{bit)27 b(signed)e(in)m(teger,)i(32{bit)g(signed)e +(in)m(teger,)j(64{bit)e(signed)f(in)m(teger,)j(32{bit)e(IEEE)f +(\015oating)h(p)s(oin)m(t,)227 3397 y(and)k(64{bit)i(IEEE)e(double)f +(precision)i(\015oating)g(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)g(in)g(the)h(arra)m(y)-8 b(,)31 b(usually)f(0,)h(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)g +(of)g(eac)m(h)g(dimension.)0 4008 y(FITS)e(tables)i(start)g(with)f(the) +g(k)m(eyw)m(ord)g(XTENSION)g(=)f(`T)-8 b(ABLE')31 b(\(for)f(ASCI)s(I)f +(tables\))i(or)f(XTENSION)f(=)0 4120 y(`BINT)-8 b(ABLE')32 +b(\(for)e(binary)g(tables\))h(and)f(ha)m(v)m(e)i(the)e(follo)m(wing)i +(main)e(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)g(or)h(columns)f(in)g(the)g +(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)f(the)g(table)136 4731 y Fc(\017)46 b +Fi(TTYPEn)29 b({)i(for)f(eac)m(h)i(column)e(\(n)g(ranges)h(from)f(1)g +(to)h(TFIELDS\))g(giv)m(es)g(the)g(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)g(units)f(of)g(the)h(column)f(\(optional\))0 +5341 y(Users)k(should)f(refer)h(to)h(the)f(FITS)g(Supp)s(ort)e(O\016ce) +i(at)h Fe(http://fits.gsfc.nasa.gov)27 b Fi(for)34 b(further)f(infor-)0 +5454 y(mation)e(ab)s(out)f(the)h(FITS)e(format)i(and)f(related)h(soft)m +(w)m(are)h(pac)m(k)-5 b(ages.)p eop end +%%Page: 15 21 +TeXDict begin 15 20 bop 0 1225 a Ff(Chapter)65 b(4)0 +1687 y Fl(FITSIO)76 b(Con)-6 b(v)g(en)g(tions)76 b(and)h(Guidelines)0 +2216 y Fd(4.1)135 b(CFITSIO)44 b(Size)h(Limitations)0 +2524 y Fi(CFITSIO)31 b(places)i(few)g(restrictions)g(on)g(the)f(size)i +(of)e(FITS)g(\014les)h(that)g(it)g(reads)f(or)h(writes.)47 +b(There)32 b(are)h(a)g(few)0 2636 y(limits,)e(ho)m(w)m(ev)m(er,)h(whic) +m(h)e(ma)m(y)h(a\013ect)h(some)f(extreme)g(cases:)0 2797 +y(1.)43 b(The)31 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(FITS)f(\014les)h +(that)h(ma)m(y)g(b)s(e)e(sim)m(ultaneously)i(op)s(ened)f(b)m(y)g +(CFITSIO)e(is)i(set)h(b)m(y)0 2910 y(NMAXFILES)i(as)g(de\014ned)f(in)h +(\014tsio2.h.)52 b(It)34 b(is)g(curren)m(tly)g(set)h(=)f(300)h(b)m(y)f +(default.)52 b(CFITSIO)32 b(will)i(allo)s(cate)0 3022 +y(ab)s(out)f(80)g(*)h(NMAXFILES)f(b)m(ytes)g(of)g(memory)g(for)g(in)m +(ternal)g(use.)48 b(Note)34 b(that)g(the)f(underlying)f(C)g(compiler)0 +3135 y(or)39 b(op)s(erating)h(system,)j(ma)m(y)d(ha)m(v)m(e)g(a)g +(smaller)g(limit)h(on)e(the)h(n)m(um)m(b)s(er)e(of)i(op)s(ened)e +(\014les.)68 b(The)39 b(C)h(sym)m(b)s(olic)0 3248 y(constan)m(t)31 +b(F)m(OPEN)p 690 3248 28 4 v 34 w(MAX)f(is)g(in)m(tended)g(to)h +(de\014ne)e(the)i(maxim)m(um)f(n)m(um)m(b)s(er)e(of)j(\014les)f(that)g +(ma)m(y)h(op)s(en)e(at)i(once)0 3361 y(\(including)g(an)m(y)g(other)g +(text)h(or)f(binary)f(\014les)h(that)h(ma)m(y)f(b)s(e)g(op)s(en,)f(not) +h(just)g(FITS)f(\014les\).)43 b(On)30 b(some)h(systems)0 +3474 y(it)g(has)f(b)s(een)g(found)f(that)i(gcc)g(supp)s(orts)e(a)h +(maxim)m(um)h(of)f(255)i(op)s(ened)e(\014les.)0 3634 +y(2.)54 b(By)35 b(default,)h(CFITSIO)d(can)i(handle)g(FITS)f(\014les)g +(up)g(to)h(2.1)h(GB)g(in)e(size)i(\(2**31)h(b)m(ytes\).)54 +b(This)34 b(\014le)h(size)0 3747 y(limit)41 b(is)g(often)f(imp)s(osed)g +(b)m(y)g(32-bit)i(op)s(erating)e(systems.)71 b(More)41 +b(recen)m(tly)-8 b(,)45 b(as)c(64-bit)g(op)s(erating)g(systems)0 +3860 y(b)s(ecome)33 b(more)g(common,)g(an)g(industry-wide)e(standard)h +(\(at)i(least)f(on)g(Unix)f(systems\))h(has)g(b)s(een)f(dev)m(elop)s +(ed)0 3973 y(to)39 b(supp)s(ort)d(larger)i(sized)h(\014les)f(\(see)g(h) +m(ttp://ftp.sas.com/standards/large.\014le/\).)69 b(Starting)38 +b(with)f(v)m(ersion)0 4086 y(2.1)45 b(of)e(CFITSIO,)f(larger)i(FITS)f +(\014les)g(up)g(to)h(6)g(terab)m(ytes)h(in)e(size)h(ma)m(y)g(b)s(e)f +(read)g(and)g(written)h(on)f(sup-)0 4199 y(p)s(orted)f(platforms.)76 +b(In)42 b(order)g(to)h(supp)s(ort)e(these)h(larger)h(\014les,)j +(CFITSIO)41 b(m)m(ust)h(b)s(e)g(compiled)h(with)f(the)0 +4312 y('-D)p 129 4312 V 34 w(LAR)m(GEFILE)p 696 4312 +V 33 w(SOUR)m(CE')g(and)g(`-D)p 1491 4312 V 34 w(FILE)p +1736 4312 V 33 w(OFFSET)p 2137 4312 V 32 w(BITS=64')h(compiler)g +(\015ags.)78 b(Some)43 b(platforms)0 4425 y(ma)m(y)c(also)g(require)f +(the)g(`-D)p 1002 4425 V 34 w(LAR)m(GE)p 1358 4425 V +33 w(FILES')g(compiler)h(\015ag.)64 b(This)38 b(causes)g(the)h +(compiler)g(to)g(allo)s(cate)h(8-)0 4538 y(b)m(ytes)k(instead)g(of)g +(4-b)m(ytes)h(for)f(the)g(`o\013)p 1473 4538 V 33 w(t')g(datat)m(yp)s +(e)h(whic)m(h)f(is)f(used)g(to)i(store)f(\014le)g(o\013set)h(p)s +(ositions.)81 b(It)0 4650 y(app)s(ears)31 b(that)i(in)e(most)i(cases)g +(it)f(is)g(not)g(necessary)h(to)f(also)h(include)f(these)g(compiler)h +(\015ags)f(when)f(compiling)0 4763 y(programs)f(that)h(link)f(to)h(the) +g(CFITSIO)e(library)-8 b(.)0 4924 y(If)21 b(CFITSIO)e(is)i(compiled)h +(with)f(the)g(-D)p 1386 4924 V 33 w(LAR)m(GEFILE)p 1952 +4924 V 34 w(SOUR)m(CE)f(and)g(-D)p 2654 4924 V 34 w(FILE)p +2899 4924 V 33 w(OFFSET)p 3300 4924 V 32 w(BITS=64)h(\015ags)0 +5036 y(on)36 b(a)g(platform)g(that)g(supp)s(orts)e(large)j(\014les,)h +(then)d(it)i(can)f(read)g(and)f(write)h(FITS)f(\014les)h(that)g(con)m +(tain)h(up)e(to)0 5149 y(2**31)k(2880-b)m(yte)g(FITS)d(records,)j(or)d +(appro)m(ximately)i(6)f(terab)m(ytes)h(in)f(size.)60 +b(It)37 b(is)g(still)h(required)d(that)j(the)0 5262 y(v)-5 +b(alue)30 b(of)f(the)g(NAXISn)f(and)h(PCOUNT)f(k)m(eyw)m(ords)h(in)g +(eac)m(h)h(extension)g(b)s(e)e(within)h(the)g(range)h(of)f(a)g(signed)g +(4-)0 5375 y(b)m(yte)c(in)m(teger)h(\(max)f(v)-5 b(alue)26 +b(=)e(2,147,483,648\).)44 b(Th)m(us,)25 b(eac)m(h)h(dimension)e(of)h +(an)f(image)i(\(giv)m(en)g(b)m(y)f(the)g(NAXISn)0 5488 +y(k)m(eyw)m(ords\),)32 b(the)f(total)i(width)d(of)h(a)g(table)h +(\(NAXIS1)g(k)m(eyw)m(ord\),)g(the)f(n)m(um)m(b)s(er)f(of)h(ro)m(ws)g +(in)f(a)h(table)h(\(NAXIS2)0 5601 y(k)m(eyw)m(ord\),)c(and)d(the)h +(total)i(size)f(of)f(the)g(v)-5 b(ariable-length)28 b(arra)m(y)e(heap)g +(in)g(binary)f(tables)i(\(PCOUNT)e(k)m(eyw)m(ord\))0 +5714 y(m)m(ust)30 b(b)s(e)g(less)h(than)f(this)g(limit.)1905 +5942 y(15)p eop end +%%Page: 16 22 +TeXDict begin 16 21 bop 0 299 a Fi(16)1277 b Fg(CHAPTER)29 +b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 +555 y Fi(Curren)m(tly)-8 b(,)31 b(supp)s(ort)e(for)i(large)h(\014les)f +(within)f(CFITSIO)f(has)i(b)s(een)f(tested)i(on)f(the)g(Lin)m(ux,)g +(Solaris,)g(and)f(IBM)0 668 y(AIX)g(op)s(erating)h(systems.)0 +1133 y Fd(4.2)135 b(Multiple)46 b(Access)e(to)i(the)f(Same)g(FITS)f +(File)0 1409 y Fi(CFITSIO)35 b(supp)s(orts)g(sim)m(ultaneous)i(read)f +(and)g(write)h(access)g(to)h(m)m(ultiple)f(HDUs)g(in)f(the)h(same)g +(FITS)f(\014le.)0 1522 y(Th)m(us,)43 b(one)e(can)h(op)s(en)e(the)h +(same)h(FITS)e(\014le)h(t)m(wice)i(within)d(a)i(single)f(program)g(and) +g(mo)m(v)m(e)h(to)g(2)f(di\013eren)m(t)0 1635 y(HDUs)30 +b(in)f(the)h(\014le,)g(and)f(then)g(read)h(and)e(write)i(data)g(or)g(k) +m(eyw)m(ords)g(to)g(the)g(2)f(extensions)i(just)d(as)i(if)g(one)f(w)m +(ere)0 1748 y(accessing)f(2)f(completely)h(separate)f(FITS)f(\014les.) +39 b(Since)27 b(in)f(general)h(it)g(is)g(not)g(p)s(ossible)f(to)h(ph)m +(ysically)g(op)s(en)f(the)0 1861 y(same)36 b(\014le)g(t)m(wice)h(and)e +(then)g(exp)s(ect)h(to)g(b)s(e)f(able)h(to)h(sim)m(ultaneously)f(\(or)g +(in)f(alternating)i(succession\))g(write)0 1974 y(to)e(2)f(di\013eren)m +(t)h(lo)s(cations)h(in)d(the)i(\014le,)g(CFITSIO)e(recognizes)j(when)d +(the)h(\014le)g(to)h(b)s(e)f(op)s(ened)f(\(in)h(the)h(call)g(to)0 +2087 y(\014ts)p 127 2087 28 4 v 32 w(op)s(en)p 349 2087 +V 33 w(\014le\))29 b(has)f(already)h(b)s(een)f(op)s(ened)g(and)g +(instead)h(of)g(actually)h(op)s(ening)e(the)h(\014le)g(again,)h(just)e +(logically)0 2199 y(links)i(the)h(new)f(\014le)h(to)g(the)g(old)f +(\014le.)42 b(\(This)30 b(only)h(applies)f(if)h(the)g(\014le)f(is)h(op) +s(ened)f(more)g(than)g(once)i(within)e(the)0 2312 y(same)e(program,)g +(and)f(do)s(es)h(not)f(prev)m(en)m(t)i(the)f(same)g(\014le)f(from)g(b)s +(eing)h(sim)m(ultaneously)g(op)s(ened)f(b)m(y)g(more)h(than)0 +2425 y(one)h(program\).)40 b(Then)28 b(b)s(efore)g(CFITSIO)f(reads)h +(or)h(writes)g(to)g(either)g(\(logical\))j(\014le,)d(it)g(mak)m(es)h +(sure)d(that)j(an)m(y)0 2538 y(mo)s(di\014cations)i(made)f(to)h(the)g +(other)g(\014le)f(ha)m(v)m(e)i(b)s(een)e(completely)i(\015ushed)c(from) +i(the)h(in)m(ternal)g(bu\013ers)f(to)h(the)0 2651 y(\014le.)44 +b(Th)m(us,)30 b(in)h(principle,)h(one)f(could)g(op)s(en)g(a)h(\014le)f +(t)m(wice,)i(in)e(one)h(case)g(p)s(oin)m(ting)g(to)g(the)f(\014rst)g +(extension)h(and)0 2764 y(in)i(the)h(other)g(p)s(oin)m(ting)f(to)i(the) +e(2nd)g(extension)i(and)d(then)i(write)f(data)i(to)f(b)s(oth)f +(extensions,)i(in)e(an)m(y)h(order,)0 2877 y(without)25 +b(danger)h(of)f(corrupting)h(the)f(\014le,)i(There)e(ma)m(y)h(b)s(e)f +(some)h(e\016ciency)g(p)s(enalties)g(in)f(doing)h(this)f(ho)m(w)m(ev)m +(er,)0 2990 y(since)j(CFITSIO)f(has)h(to)h(\015ush)d(all)j(the)f(in)m +(ternal)h(bu\013ers)e(related)i(to)g(one)f(\014le)g(b)s(efore)g(switc)m +(hing)g(to)h(the)f(other,)0 3103 y(so)i(it)h(w)m(ould)f(still)h(b)s(e)f +(pruden)m(t)f(to)i(minimize)g(the)f(n)m(um)m(b)s(er)f(of)i(times)f(one) +h(switc)m(hes)g(bac)m(k)g(and)e(forth)h(b)s(et)m(w)m(een)0 +3216 y(doing)g(I/O)h(to)g(di\013eren)m(t)g(HDUs)g(in)f(the)g(same)h +(\014le.)0 3680 y Fd(4.3)135 b(Curren)l(t)46 b(Header)f(Data)h(Unit)g +(\(CHDU\))0 3957 y Fi(In)32 b(general,)j(a)f(FITS)e(\014le)i(can)f(con) +m(tain)h(m)m(ultiple)g(Header)g(Data)h(Units,)f(also)g(called)g +(extensions.)49 b(CFITSIO)0 4070 y(only)38 b(op)s(erates)h(within)f +(one)g(HDU)h(at)g(an)m(y)g(giv)m(en)g(time,)i(and)d(the)g(curren)m(tly) +g(selected)i(HDU)f(is)f(called)i(the)0 4183 y(Curren)m(t)f(Header)h +(Data)h(Unit)f(\(CHDU\).)h(When)f(a)g(FITS)f(\014le)h(is)f(\014rst)g +(created)i(or)f(op)s(ened)f(the)h(CHDU)g(is)0 4295 y(automatically)28 +b(de\014ned)23 b(to)j(b)s(e)e(the)h(\014rst)f(HDU)i(\(i.e.,)h(the)e +(primary)f(arra)m(y\).)40 b(CFITSIO)23 b(routines)i(are)g(pro)m(vided)0 +4408 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)g(HDU)h(within)e(the)h(FITS)f(\014le)g(or)h(to)g(app)s(end)e +(or)i(insert)f(a)h(new)0 4521 y(HDU)31 b(in)f(the)h(FITS)e(\014le)i +(whic)m(h)f(then)g(b)s(ecomes)h(the)f(CHDU.)0 4986 y +Fd(4.4)135 b(Subroutine)45 b(Names)0 5262 y Fi(All)26 +b(FITSIO)f(subroutine)g(names)h(b)s(egin)f(with)h(the)g(letters)h('ft') +f(to)h(distinguish)e(them)h(from)f(other)h(subroutines)0 +5375 y(and)34 b(are)h(5)g(or)f(6)h(c)m(haracters)h(long.)54 +b(Users)34 b(should)g(not)g(name)h(their)g(o)m(wn)f(subroutines)f(b)s +(eginning)h(with)g('ft')0 5488 y(to)e(a)m(v)m(oid)i(con\015icts.)45 +b(\(The)32 b(SPP)f(in)m(terface)i(routines)e(all)i(b)s(egin)e(with)h +('fs'\).)45 b(Subroutines)30 b(whic)m(h)h(read)h(or)g(get)0 +5601 y(information)e(from)g(the)h(FITS)e(\014le)h(ha)m(v)m(e)i(names)e +(b)s(eginning)f(with)h('ftg...'.)43 b(Subroutines)28 +b(whic)m(h)i(write)g(or)h(put)0 5714 y(information)g(in)m(to)g(the)g +(FITS)e(\014le)i(ha)m(v)m(e)g(names)g(b)s(eginning)e(with)h('ftp...'.)p +eop end +%%Page: 17 23 +TeXDict begin 17 22 bop 0 299 a Fg(4.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(17)0 555 y Fd(4.5)135 b(Subroutine)45 b(F)-11 b(amilies)46 +b(and)f(Datat)l(yp)t(es)0 805 y Fi(Man)m(y)h(of)g(the)g(subroutines)e +(come)j(in)e(families)h(whic)m(h)g(di\013er)f(only)h(in)f(the)h(datat)m +(yp)s(e)g(of)g(the)f(asso)s(ciated)0 918 y(parameter\(s\))34 +b(.)47 b(The)32 b(datat)m(yp)s(e)i(of)f(these)g(subroutines)e(is)i +(indicated)g(b)m(y)g(the)g(last)g(letter)h(of)f(the)g(subroutine)0 +1031 y(name)d(\(e.g.,)j('j')d(in)g('ftpkyj'\))h(as)f(follo)m(ws:)382 +1284 y Fe(x)47 b(-)h(bit)382 1397 y(b)f(-)h(character*1)c(\(unsigned)i +(byte\))382 1510 y(i)h(-)h(short)e(integer)g(\(I*2\))382 +1623 y(j)h(-)h(integer)e(\(I*4,)g(32-bit)g(integer\))382 +1735 y(k)h(-)h(long)e(long)h(integer)f(\(I*8,)g(64-bit)g(integer\))382 +1848 y(e)h(-)h(real)e(exponential)f(floating)h(point)g(\(R*4\))382 +1961 y(f)h(-)h(real)e(fixed-format)f(floating)g(point)i(\(R*4\))382 +2074 y(d)g(-)h(double)e(precision)f(real)i(floating-point)d(\(R*8\))382 +2187 y(g)j(-)h(double)e(precision)f(fixed-format)g(floating)g(point)h +(\(R*8\))382 2300 y(c)h(-)h(complex)e(reals)g(\(pairs)g(of)h(R*4)g +(values\))382 2413 y(m)g(-)h(double)e(precision)f(complex)h(\(pairs)g +(of)h(R*8)g(values\))382 2526 y(l)g(-)h(logical)e(\(L*4\))382 +2639 y(s)h(-)h(character)d(string)0 2891 y Fi(When)23 +b(dealing)h(with)f(the)g(FITS)g(b)m(yte)g(datat)m(yp)s(e,)j(it)e(is)f +(imp)s(ortan)m(t)h(to)f(remem)m(b)s(er)g(that)h(the)f(ra)m(w)g(v)-5 +b(alues)24 b(\(b)s(efore)0 3004 y(an)m(y)h(scaling)g(b)m(y)f(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\))25 b(in)f(b)m(yte)h(arra)m(ys)0 +3117 y(\(BITPIX)37 b(=)f(8\))h(or)f(b)m(yte)i(columns)e(\(TF)m(ORMn)h +(=)f('B'\))h(are)g(in)m(terpreted)g(as)g(unsigned)e(b)m(ytes)i(with)g +(v)-5 b(alues)0 3230 y(ranging)40 b(from)f(0)i(to)f(255.)71 +b(Some)40 b(F)-8 b(ortran)40 b(compilers)h(supp)s(ort)d(a)i +(non-standard)f(b)m(yte)h(datat)m(yp)s(e)h(suc)m(h)f(as)0 +3343 y(INTEGER*1,)34 b(LOGICAL*1,)g(or)f(BYTE,)g(whic)m(h)f(can)h +(sometimes)h(b)s(e)e(used)g(instead)h(of)g(CHARA)m(CTER*1)0 +3456 y(v)-5 b(ariables.)39 b(Man)m(y)23 b(mac)m(hines)g(p)s(ermit)g +(passing)f(a)h(n)m(umeric)g(datat)m(yp)s(e)g(\(suc)m(h)g(as)g +(INTEGER*1\))h(to)f(the)g(FITSIO)0 3569 y(subroutines)41 +b(whic)m(h)i(are)g(exp)s(ecting)g(a)g(CHARA)m(CTER*1)h(datat)m(yp)s(e,) +j(but)42 b(this)g(tec)m(hnically)j(violates)g(the)0 3682 +y(F)-8 b(ortran-77)29 b(standard)d(and)g(is)h(not)g(supp)s(orted)e(on)i +(all)h(mac)m(hines)f(\(e.g.,)j(on)c(a)i(V)-10 b(AX/VMS)27 +b(mac)m(hine)h(one)f(m)m(ust)0 3795 y(use)j(the)h(V)-10 +b(AX-sp)s(eci\014c)31 b(\045DESCR)e(function\).)0 3955 +y(One)22 b(feature)h(of)g(the)g(CFITSIO)e(routines)i(is)f(that)i(they)f +(can)g(op)s(erate)g(on)f(a)h(`X')h(\(bit\))f(column)g(in)f(a)h(binary)f +(table)0 4068 y(as)35 b(though)e(it)i(w)m(ere)g(a)g(`B')g(\(b)m(yte\))g +(column.)53 b(F)-8 b(or)35 b(example)g(a)f(`11X')i(datat)m(yp)s(e)f +(column)f(can)h(b)s(e)f(in)m(terpreted)0 4181 y(the)28 +b(same)h(as)f(a)g(`2B')i(column)e(\(i.e.,)i(2)e(unsigned)f(8-bit)i(b)m +(ytes\).)41 b(In)27 b(some)i(instances,)g(it)f(can)h(b)s(e)e(more)h +(e\016cien)m(t)0 4294 y(to)j(read)f(and)g(write)h(whole)f(b)m(ytes)h +(at)g(a)g(time,)g(rather)g(than)f(reading)g(or)h(writing)f(eac)m(h)i +(individual)d(bit.)0 4454 y(The)41 b(double)h(precision)g(complex)g +(datat)m(yp)s(e)h(is)f(not)g(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 4567 +y(F)-8 b(ortran)35 b(compiler)g(do)s(es)f(not)h(directly)g(supp)s(ort)e +(this)i(datat)m(yp)s(e,)h(then)f(one)f(ma)m(y)h(instead)g(pass)f(an)h +(arra)m(y)g(of)0 4680 y(pairs)d(of)h(double)f(precision)h(v)-5 +b(alues)32 b(to)i(these)f(subroutines.)45 b(The)33 b(\014rst)e(v)-5 +b(alue)33 b(in)f(eac)m(h)i(pair)e(is)h(the)g(real)g(part,)0 +4792 y(and)d(the)g(second)h(is)f(the)h(imaginary)g(part.)0 +5125 y Fd(4.6)135 b(Implicit)46 b(Data)g(T)l(yp)t(e)f(Con)l(v)l(ersion) +0 5375 y Fi(The)22 b(FITSIO)g(routines)h(that)h(read)e(and)h(write)g(n) +m(umerical)g(data)h(can)f(p)s(erform)f(implicit)i(data)f(t)m(yp)s(e)g +(con)m(v)m(ersion.)0 5488 y(This)i(means)g(that)h(the)g(data)g(t)m(yp)s +(e)g(of)g(the)g(v)-5 b(ariable)26 b(or)g(arra)m(y)g(in)f(the)h(program) +f(do)s(es)g(not)h(need)g(to)g(b)s(e)f(the)h(same)0 5601 +y(as)i(the)f(data)h(t)m(yp)s(e)g(of)f(the)h(v)-5 b(alue)28 +b(in)f(the)g(FITS)g(\014le.)40 b(Data)28 b(t)m(yp)s(e)g(con)m(v)m +(ersion)h(is)e(supp)s(orted)f(for)h(n)m(umerical)h(and)0 +5714 y(string)33 b(data)h(t)m(yp)s(es)f(\(if)h(the)g(string)f(con)m +(tains)h(a)g(v)-5 b(alid)33 b(n)m(um)m(b)s(er)f(enclosed)i(in)f +(quotes\))h(when)f(reading)g(a)h(FITS)p eop end +%%Page: 18 24 +TeXDict begin 18 23 bop 0 299 a Fi(18)1277 b Fg(CHAPTER)29 +b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 +555 y Fi(header)g(k)m(eyw)m(ord)g(v)-5 b(alue)31 b(and)g(for)f(n)m +(umeric)h(v)-5 b(alues)31 b(when)f(reading)h(or)g(writing)g(v)-5 +b(alues)31 b(in)f(the)h(primary)f(arra)m(y)0 668 y(or)40 +b(a)h(table)h(column.)70 b(CFITSIO)39 b(returns)h(status)g(=)h(NUM)p +2185 668 28 4 v 33 w(O)m(VERFLO)m(W)g(if)g(the)f(con)m(v)m(erted)i +(data)f(v)-5 b(alue)0 781 y(exceeds)33 b(the)g(range)g(of)g(the)f +(output)g(data)i(t)m(yp)s(e.)47 b(Implicit)33 b(data)g(t)m(yp)s(e)g +(con)m(v)m(ersion)h(is)e(not)h(supp)s(orted)d(within)0 +894 y(binary)g(tables)h(for)f(string,)g(logical,)k(complex,)d(or)f +(double)g(complex)h(data)g(t)m(yp)s(es.)0 1054 y(In)g(addition,)h(an)m +(y)f(table)h(column)f(ma)m(y)h(b)s(e)f(read)g(as)h(if)f(it)h(con)m +(tained)g(string)f(v)-5 b(alues.)44 b(In)31 b(the)g(case)i(of)e(n)m +(umeric)0 1167 y(columns)f(the)h(returned)e(string)h(will)h(b)s(e)f +(formatted)h(using)e(the)i(TDISPn)e(displa)m(y)i(format)f(if)h(it)g +(exists.)0 1496 y Fd(4.7)135 b(Data)46 b(Scaling)0 1746 +y Fi(When)38 b(reading)f(n)m(umerical)i(data)f(v)-5 b(alues)38 +b(in)f(the)h(primary)f(arra)m(y)h(or)g(a)g(table)h(column,)h(the)d(v)-5 +b(alues)38 b(will)h(b)s(e)0 1859 y(scaled)f(automatically)j(b)m(y)c +(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 1972 y(v)-5 b(alues)33 b(if)f(they)g(are)h +(presen)m(t)g(in)f(the)g(header.)47 b(The)31 b(scaled)j(data)f(that)g +(is)f(returned)f(to)i(the)g(reading)f(program)0 2085 +y(will)f(ha)m(v)m(e)382 2316 y Fe(output)46 b(value)g(=)i(\(FITS)e +(value\))g(*)i(BSCALE)e(+)h(BZERO)0 2546 y Fi(\(a)30 +b(corresp)s(onding)e(form)m(ula)h(using)g(TSCALn)e(and)i(TZER)m(On)e +(is)i(used)g(when)f(reading)h(from)g(table)h(columns\).)0 +2659 y(In)h(the)i(case)g(of)f(in)m(teger)h(output)f(v)-5 +b(alues)32 b(the)h(\015oating)g(p)s(oin)m(t)f(scaled)g(v)-5 +b(alue)33 b(is)f(truncated)g(to)h(an)f(in)m(teger)h(\(not)0 +2772 y(rounded)38 b(to)i(the)g(nearest)g(in)m(teger\).)70 +b(The)39 b(ftpscl)g(and)g(fttscl)i(subroutines)d(ma)m(y)i(b)s(e)f(used) +g(to)h(o)m(v)m(erride)h(the)0 2885 y(scaling)30 b(parameters)f +(de\014ned)e(in)h(the)h(header)f(\(e.g.,)j(to)e(turn)f(o\013)h(the)f +(scaling)i(so)f(that)g(the)g(program)f(can)h(read)0 2998 +y(the)i(ra)m(w)f(unscaled)g(v)-5 b(alues)31 b(from)f(the)g(FITS)g +(\014le\).)0 3158 y(When)44 b(writing)h(n)m(umerical)g(data)g(to)g(the) +g(primary)f(arra)m(y)h(or)f(to)h(a)g(table)h(column)e(the)h(data)g(v)-5 +b(alues)45 b(will)0 3271 y(generally)29 b(b)s(e)f(automatically)j(in)m +(v)m(ersely)f(scaled)f(b)m(y)f(the)g(v)-5 b(alue)29 b(of)f(the)h +(BSCALE)e(and)h(BZER)m(O)g(\(or)h(TSCALn)0 3384 y(and)h(TZER)m(On\))g +(header)g(k)m(eyw)m(ord)h(v)-5 b(alues)31 b(if)g(they)g(they)g(exist)g +(in)f(the)h(header.)42 b(These)30 b(k)m(eyw)m(ords)h(m)m(ust)g(ha)m(v)m +(e)0 3497 y(b)s(een)f(written)h(to)h(the)g(header)e(b)s(efore)h(an)m(y) +h(data)f(is)g(written)h(for)e(them)i(to)f(ha)m(v)m(e)i(an)m(y)e +(e\013ect.)44 b(Otherwise,)32 b(one)0 3610 y(ma)m(y)i(use)f(the)g +(ftpscl)g(and)g(fttscl)h(subroutines)d(to)j(de\014ne)f(or)g(o)m(v)m +(erride)h(the)f(scaling)i(k)m(eyw)m(ords)e(in)g(the)g(header)0 +3723 y(\(e.g.,)h(to)f(turn)d(o\013)j(the)f(scaling)h(so)f(that)g(the)g +(program)g(can)g(write)g(the)g(ra)m(w)g(unscaled)g(v)-5 +b(alues)32 b(in)m(to)h(the)f(FITS)0 3836 y(\014le\).)43 +b(If)30 b(scaling)i(is)f(p)s(erformed,)e(the)i(in)m(v)m(erse)h(scaled)g +(output)e(v)-5 b(alue)32 b(that)f(is)g(written)g(in)m(to)h(the)f(FITS)f +(\014le)h(will)0 3949 y(ha)m(v)m(e)430 4179 y Fe(FITS)46 +b(value)h(=)g(\(\(input)f(value\))g(-)h(BZERO\))f(/)i(BSCALE)0 +4410 y Fi(\(a)39 b(corresp)s(onding)d(form)m(ula)i(using)g(TSCALn)e +(and)h(TZER)m(On)g(is)h(used)f(when)f(writing)i(to)h(table)g +(columns\).)0 4523 y(Rounding)19 b(to)i(the)g(nearest)g(in)m(teger,)i +(rather)e(than)f(truncation,)j(is)d(p)s(erformed)f(when)g(writing)h(in) +m(teger)i(datat)m(yp)s(es)0 4636 y(to)31 b(the)g(FITS)e(\014le.)0 +4965 y Fd(4.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 5215 y Fi(The)33 +b(last)i(parameter)f(in)g(nearly)g(ev)m(ery)g(FITSIO)f(subroutine)g(is) +h(the)g(error)f(status)h(v)-5 b(alue)35 b(whic)m(h)e(is)h(b)s(oth)f(an) +0 5328 y(input)j(and)f(an)i(output)f(parameter.)60 b(A)36 +b(returned)f(p)s(ositiv)m(e)j(v)-5 b(alue)37 b(for)f(this)h(parameter)g +(indicates)g(an)f(error)0 5441 y(w)m(as)31 b(detected.)42 +b(A)30 b(listing)h(of)g(all)g(the)g(FITSIO)e(status)i(co)s(de)f(v)-5 +b(alues)31 b(is)f(giv)m(en)i(at)f(the)f(end)g(of)h(this)f(do)s(cumen)m +(t.)0 5601 y(The)22 b(FITSIO)g(library)g(uses)h(an)f(`inherited)h +(status')g(con)m(v)m(en)m(tion)i(for)e(the)g(status)g(parameter)g(whic) +m(h)g(means)f(that)0 5714 y(if)i(a)h(subroutine)f(is)g(called)i(with)e +(a)h(p)s(ositiv)m(e)g(input)f(v)-5 b(alue)25 b(of)g(the)f(status)h +(parameter,)h(then)f(the)f(subroutine)g(will)p eop end +%%Page: 19 25 +TeXDict begin 19 24 bop 0 299 a Fg(4.9.)72 b(V)-10 b(ARIABLE-LENGTH)31 +b(ARRA)-8 b(Y)31 b(F)-10 b(A)m(CILITY)30 b(IN)h(BINAR)-8 +b(Y)31 b(T)-8 b(ABLES)956 b Fi(19)0 555 y(exit)26 b(immediately)f +(without)g(c)m(hanging)h(the)e(v)-5 b(alue)25 b(of)g(the)g(status)g +(parameter.)39 b(Th)m(us,)25 b(if)g(one)f(passes)h(the)g(status)0 +668 y(v)-5 b(alue)31 b(returned)e(from)h(eac)m(h)i(FITSIO)d(routine)h +(as)h(input)f(to)h(the)f(next)h(FITSIO)e(subroutine,)h(then)g(whenev)m +(er)0 781 y(an)39 b(error)g(is)h(detected)g(all)h(further)d(FITSIO)g +(pro)s(cessing)h(will)h(cease.)69 b(This)39 b(con)m(v)m(en)m(tion)i +(can)f(simplify)f(the)0 894 y(error)30 b(c)m(hec)m(king)j(in)d +(application)i(programs)f(b)s(ecause)g(it)g(is)g(not)g(necessary)g(to)g +(c)m(hec)m(k)i(the)e(v)-5 b(alue)31 b(of)g(the)g(status)0 +1007 y(parameter)j(after)g(ev)m(ery)g(single)h(FITSIO)d(subroutine)g +(call.)52 b(If)33 b(a)h(program)f(con)m(tains)i(a)f(sequence)g(of)g +(sev)m(eral)0 1120 y(FITSIO)23 b(calls,)j(one)e(can)g(just)g(c)m(hec)m +(k)h(the)f(status)g(v)-5 b(alue)24 b(after)h(the)f(last)g(call.)40 +b(Since)24 b(the)g(returned)e(status)j(v)-5 b(alues)0 +1233 y(are)36 b(generally)h(distinctiv)m(e,)i(it)d(should)f(b)s(e)g(p)s +(ossible)g(to)h(determine)g(whic)m(h)f(subroutine)g(originally)i +(returned)0 1346 y(the)31 b(error)f(status.)0 1506 y(FITSIO)i(also)i +(main)m(tains)f(an)g(in)m(ternal)h(stac)m(k)g(of)f(error)g(messages)h +(\(80-c)m(haracter)i(maxim)m(um)d(length\))g(whic)m(h)0 +1619 y(in)j(man)m(y)g(cases)h(pro)m(vide)f(a)g(more)g(detailed)i +(explanation)f(of)f(the)g(cause)h(of)f(the)g(error)g(than)f(is)h(pro)m +(vided)g(b)m(y)0 1732 y(the)k(error)e(status)i(n)m(um)m(b)s(er)e +(alone.)69 b(It)39 b(is)h(recommended)f(that)g(the)h(error)f(message)h +(stac)m(k)h(b)s(e)e(prin)m(ted)g(out)0 1844 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,)h(call)h(the)f(FTGMSG)g(routine)f(rep)s(eatedly)h +(to)0 1957 y(get)h(the)g(successiv)m(e)g(messages)h(on)e(the)g(stac)m +(k.)48 b(When)32 b(the)h(stac)m(k)g(is)g(empt)m(y)f(FTGMSG)h(will)g +(return)e(a)h(blank)0 2070 y(string.)41 b(Note)31 b(that)g(this)f(is)g +(a)g(`First)h(In)e({)i(First)f(Out')g(stac)m(k,)i(so)e(the)h(oldest)g +(error)e(message)j(is)e(returned)f(\014rst)0 2183 y(b)m(y)h(ftgmsg.)0 +2557 y Fd(4.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 2815 +y Fi(FITSIO)38 b(pro)m(vides)i(easy-to-use)h(supp)s(ort)d(for)h +(reading)g(and)g(writing)h(data)g(in)f(v)-5 b(ariable)40 +b(length)g(\014elds)f(of)h(a)0 2928 y(binary)35 b(table.)56 +b(The)35 b(v)-5 b(ariable)36 b(length)f(columns)g(ha)m(v)m(e)i(TF)m +(ORMn)e(k)m(eyw)m(ord)h(v)-5 b(alues)35 b(of)h(the)f(form)g +(`1Pt\(len\)')0 3041 y(or)30 b(`1Qt\(len\)')h(where)f(`t')g(is)g(the)g +(datat)m(yp)s(e)h(co)s(de)f(\(e.g.,)i(I,)e(J,)f(E,)h(D,)h(etc.\))42 +b(and)29 b(`len')h(is)g(an)g(in)m(teger)h(sp)s(ecifying)0 +3154 y(the)f(maxim)m(um)g(length)g(of)g(the)g(v)m(ector)h(in)f(the)g +(table.)41 b(If)30 b(the)g(v)-5 b(alue)30 b(of)g(`len')g(is)g(not)g(sp) +s(eci\014ed)f(when)g(the)h(table)0 3267 y(is)j(created)g(\(e.g.,)i(if)e +(the)f(TF)m(ORM)h(k)m(eyw)m(ord)g(v)-5 b(alue)33 b(is)g(simply)f(sp)s +(eci\014ed)g(as)h('1PE')g(instead)g(of)f('1PE\(400\))j(\),)0 +3380 y(then)28 b(FITSIO)f(will)h(automatically)k(scan)c(the)g(table)h +(when)f(it)g(is)h(closed)g(to)g(determine)f(the)g(maxim)m(um)h(length)0 +3493 y(of)i(the)f(v)m(ector)i(and)e(will)h(app)s(end)d(this)j(v)-5 +b(alue)30 b(to)i(the)e(TF)m(ORMn)g(v)-5 b(alue.)0 3653 +y(The)25 b(same)h(routines)g(whic)m(h)f(read)h(and)f(write)h(data)g(in) +f(an)h(ordinary)f(\014xed)g(length)h(binary)f(table)h(extension)h(are)0 +3766 y(also)k(used)e(for)h(v)-5 b(ariable)31 b(length)g(\014elds,)e(ho) +m(w)m(ev)m(er,)j(the)e(subroutine)f(parameters)i(tak)m(e)h(on)e(a)g +(sligh)m(tly)h(di\013eren)m(t)0 3878 y(in)m(terpretation)h(as)e +(describ)s(ed)g(b)s(elo)m(w.)0 4039 y(All)37 b(the)f(data)h(in)f(a)h(v) +-5 b(ariable)37 b(length)f(\014eld)g(is)g(written)h(in)m(to)g(an)f +(area)h(called)h(the)e(`heap')g(whic)m(h)g(follo)m(ws)i(the)0 +4152 y(main)26 b(\014xed-length)g(FITS)f(binary)h(table.)40 +b(The)25 b(size)i(of)g(the)f(heap,)h(in)f(b)m(ytes,)h(is)f(sp)s +(eci\014ed)g(with)f(the)i(PCOUNT)0 4264 y(k)m(eyw)m(ord)21 +b(in)f(the)h(FITS)f(header.)37 b(When)20 b(creating)i(a)f(new)f(binary) +g(table,)j(the)e(initial)h(v)-5 b(alue)21 b(of)f(PCOUNT)g(should)0 +4377 y(usually)31 b(b)s(e)f(set)i(to)g(zero.)44 b(FITSIO)30 +b(will)h(recompute)h(the)f(size)h(of)g(the)f(heap)g(as)g(the)h(data)g +(is)f(written)g(and)g(will)0 4490 y(automatically)d(up)s(date)c(the)i +(PCOUNT)e(k)m(eyw)m(ord)h(v)-5 b(alue)26 b(when)e(the)h(table)h(is)f +(closed.)40 b(When)25 b(writing)g(v)-5 b(ariable)0 4603 +y(length)34 b(data)g(to)g(a)g(table,)i(CFITSIO)c(will)h(automatically)k +(extend)c(the)h(size)g(of)g(the)g(heap)f(area)h(if)g(necessary)-8 +b(,)0 4716 y(so)31 b(that)g(an)m(y)f(follo)m(wing)i(HDUs)f(do)f(not)h +(get)h(o)m(v)m(erwritten.)0 4876 y(By)e(default)f(the)h(heap)f(data)i +(area)f(starts)g(immediately)h(after)f(the)f(last)i(ro)m(w)e(of)h(the)g +(\014xed-length)f(table.)42 b(This)0 4989 y(default)27 +b(starting)g(lo)s(cation)i(ma)m(y)e(b)s(e)f(o)m(v)m(erridden)h(b)m(y)g +(the)g(THEAP)f(k)m(eyw)m(ord,)i(but)f(this)f(is)h(not)g(recommended.)0 +5102 y(If)34 b(additional)h(ro)m(ws)f(of)g(data)h(are)g(added)e(to)i +(the)f(table,)j(CFITSIO)32 b(will)j(automatically)i(shift)c(the)i(the)f +(heap)0 5215 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)i(is)e(ob)m(viously)i(b)s(e)e(more)h(e\016cien)m(t)h +(to)f(initially)h(create)h(the)0 5328 y(table)31 b(with)e(the)h +(necessary)g(n)m(um)m(b)s(er)f(of)h(blank)f(ro)m(ws,)h(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 +5441 y(mo)m(v)m(ed.)0 5601 y(When)40 b(writing)h(to)g(a)g(v)-5 +b(ariable)41 b(length)g(\014eld,)i(the)e(en)m(tire)h(arra)m(y)f(of)f(v) +-5 b(alues)41 b(for)f(a)h(giv)m(en)h(ro)m(w)f(of)f(the)h(table)0 +5714 y(m)m(ust)36 b(b)s(e)g(written)g(with)g(a)g(single)h(call)h(to)f +(FTPCLx.)57 b(The)36 b(total)i(length)f(of)f(the)g(arra)m(y)h(is)f +(calculated)i(from)p eop end +%%Page: 20 26 +TeXDict begin 20 25 bop 0 299 a Fi(20)1277 b Fg(CHAPTER)29 +b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 +555 y Fi(\(NELEM+FELEM-1\).)44 b(One)30 b(cannot)i(app)s(end)d(more)i +(elemen)m(ts)h(to)g(an)e(existing)i(\014eld)f(at)g(a)h(later)g(time;)g +(an)m(y)0 668 y(attempt)j(to)f(do)g(so)g(will)g(simply)f(o)m(v)m +(erwrite)j(all)e(the)g(data)h(whic)m(h)e(w)m(as)h(previously)g +(written.)51 b(Note)35 b(also)f(that)0 781 y(the)g(new)g(data)g(will)h +(b)s(e)e(written)h(to)h(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 894 y(write)j(cannot)h +(b)s(e)e(reclaimed.)62 b(F)-8 b(or)38 b(this)f(reason)g(it)h(is)f +(advised)g(that)h(eac)m(h)g(ro)m(w)f(of)h(a)f(v)-5 b(ariable)38 +b(length)f(\014eld)0 1007 y(only)c(b)s(e)g(written)g(once.)50 +b(An)33 b(exception)h(to)g(this)f(general)h(rule)f(o)s(ccurs)g(when)f +(setting)i(elemen)m(ts)h(of)e(an)g(arra)m(y)0 1120 y(as)38 +b(unde\014ned.)63 b(One)37 b(m)m(ust)i(\014rst)e(write)h(a)h(dumm)m(y)e +(v)-5 b(alue)39 b(in)m(to)g(the)g(arra)m(y)f(with)g(FTPCLx,)i(and)e +(then)g(call)0 1233 y(FTPCLU)33 b(to)i(\015ag)f(the)f(desired)h(elemen) +m(ts)h(as)e(unde\014ned.)49 b(\(Do)35 b(not)f(use)f(the)h(FTPCNx)f +(family)h(of)g(routines)0 1346 y(with)28 b(v)-5 b(ariable)30 +b(length)f(\014elds\).)40 b(Note)30 b(that)f(the)g(ro)m(ws)g(of)g(a)g +(table,)h(whether)e(\014xed)g(or)h(v)-5 b(ariable)29 +b(length,)h(do)f(not)0 1458 y(ha)m(v)m(e)j(to)f(b)s(e)e(written)i +(consecutiv)m(ely)h(and)e(ma)m(y)h(b)s(e)f(written)g(in)g(an)m(y)h +(order.)0 1619 y(When)40 b(writing)h(to)g(a)g(v)-5 b(ariable)41 +b(length)g(ASCI)s(I)e(c)m(haracter)j(\014eld)e(\(e.g.,)45 +b(TF)m(ORM)c(=)f('1P)-8 b(A'\))43 b(only)d(a)h(single)0 +1732 y(c)m(haracter)33 b(string)f(written.)44 b(FTPCLS)30 +b(writes)i(the)g(whole)f(length)h(of)g(the)g(input)e(string)i(\(min)m +(us)f(an)m(y)h(trailing)0 1844 y(blank)37 b(c)m(haracters\),)42 +b(th)m(us)37 b(the)h(NELEM)f(and)g(FELEM)h(parameters)g(are)g(ignored.) +62 b(If)37 b(the)h(input)e(string)i(is)0 1957 y(completely)28 +b(blank)f(then)f(FITSIO)g(will)h(write)g(one)g(blank)f(c)m(haracter)j +(to)e(the)g(FITS)f(\014le.)40 b(Similarly)-8 b(,)28 b(FTGCVS)0 +2070 y(and)35 b(FTGCFS)g(read)g(the)h(en)m(tire)g(string)g(\(truncated) +f(to)i(the)e(width)g(of)g(the)h(c)m(haracter)h(string)e(argumen)m(t)h +(in)0 2183 y(the)31 b(subroutine)e(call\))j(and)e(also)h(ignore)g(the)f +(NELEM)h(and)f(FELEM)g(parameters.)0 2343 y(The)35 b(FTPDES)h +(subroutine)e(is)i(useful)f(in)g(situations)i(where)e(m)m(ultiple)i(ro) +m(ws)e(of)h(a)g(v)-5 b(ariable)37 b(length)f(column)0 +2456 y(ha)m(v)m(e)c(the)e(iden)m(tical)i(arra)m(y)f(of)g(v)-5 +b(alues.)41 b(One)30 b(can)g(simply)g(write)h(the)f(arra)m(y)h(once)g +(for)g(the)f(\014rst)g(ro)m(w,)g(and)g(then)0 2569 y(use)36 +b(FTPDES)g(to)h(write)g(the)f(same)h(descriptor)g(v)-5 +b(alues)36 b(in)m(to)i(the)e(other)h(ro)m(ws)f(\(use)h(the)f(FTGDES)h +(routine)0 2682 y(to)f(read)f(the)h(\014rst)f(descriptor)g(v)-5 +b(alue\);)39 b(all)d(the)g(ro)m(ws)f(will)h(then)f(p)s(oin)m(t)g(to)h +(the)g(same)f(storage)i(lo)s(cation)g(th)m(us)0 2795 +y(sa)m(ving)31 b(disk)f(space.)0 2955 y(When)35 b(reading)g(from)f(a)i +(v)-5 b(ariable)35 b(length)h(arra)m(y)f(\014eld)g(one)g(can)g(only)h +(read)e(as)i(man)m(y)f(elemen)m(ts)h(as)f(actually)0 +3068 y(exist)i(in)e(that)i(ro)m(w)e(of)h(the)g(table;)k(reading)c(do)s +(es)g(not)g(automatically)i(con)m(tin)m(ue)f(with)f(the)g(next)g(ro)m +(w)g(of)g(the)0 3181 y(table)29 b(as)f(o)s(ccurs)g(when)f(reading)h(an) +g(ordinary)g(\014xed)f(length)h(table)h(\014eld.)40 b(A)m(ttempts)29 +b(to)g(read)f(more)g(than)g(this)0 3294 y(will)k(cause)h(an)e(error)h +(status)g(to)g(b)s(e)f(returned.)44 b(One)32 b(can)g(determine)g(the)g +(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)h(in)f(eac)m(h)h(ro)m(w)0 +3407 y(of)e(a)f(v)-5 b(ariable)31 b(column)g(with)f(the)g(FTGDES)h +(subroutine.)0 3859 y Fd(4.10)136 b(Supp)t(ort)44 b(for)h(IEEE)g(Sp)t +(ecial)h(V)-11 b(alues)0 4133 y Fi(The)26 b(ANSI/IEEE-754)h +(\015oating-p)s(oin)m(t)h(n)m(um)m(b)s(er)d(standard)g(de\014nes)h +(certain)h(sp)s(ecial)g(v)-5 b(alues)26 b(that)h(are)g(used)e(to)0 +4246 y(represen)m(t)j(suc)m(h)g(quan)m(tities)h(as)f(Not-a-Num)m(b)s +(er)h(\(NaN\),)h(denormalized,)f(under\015o)m(w,)e(o)m(v)m(er\015o)m +(w,)j(and)d(in\014nit)m(y)-8 b(.)0 4359 y(\(See)29 b(the)f(App)s(endix) +e(in)i(the)g(NOST)g(FITS)f(standard)g(or)h(the)g(NOST)g(FITS)f(User's)h +(Guide)g(for)g(a)g(list)h(of)f(these)0 4472 y(v)-5 b(alues\).)41 +b(The)30 b(FITSIO)f(subroutines)g(that)i(read)f(\015oating)i(p)s(oin)m +(t)e(data)h(in)f(FITS)f(\014les)i(recognize)h(these)f(IEEE)0 +4585 y(sp)s(ecial)40 b(v)-5 b(alues)39 b(and)g(b)m(y)g(default)g(in)m +(terpret)h(the)f(o)m(v)m(er\015o)m(w)i(and)d(in\014nit)m(y)h(v)-5 +b(alues)40 b(as)f(b)s(eing)g(equiv)-5 b(alen)m(t)41 b(to)f(a)0 +4698 y(NaN,)35 b(and)e(con)m(v)m(ert)i(the)f(under\015o)m(w)e(and)h +(denormalized)h(v)-5 b(alues)34 b(in)m(to)h(zeros.)51 +b(In)33 b(some)h(cases)h(programmers)0 4811 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,)32 +b(without)f(an)m(y)h(mo)s(di\014cation)f(b)m(y)g(FITSIO.)g(This)f(can)i +(b)s(e)e(done)0 4924 y(b)m(y)k(calling)j(the)d(FTGPVx)h(or)g(FTGCVx)g +(routines)f(while)h(sp)s(ecifying)f(0.0)i(as)f(the)f(v)-5 +b(alue)35 b(of)g(the)g(NULL)-10 b(V)g(AL)0 5036 y(parameter.)72 +b(This)39 b(will)i(force)g(FITSIO)e(to)j(simply)e(pass)g(the)g(IEEE)g +(v)-5 b(alues)41 b(through)f(to)h(the)g(application)0 +5149 y(program,)30 b(without)g(an)m(y)g(mo)s(di\014cation.)41 +b(This)30 b(do)s(es)f(not)h(w)m(ork)g(for)g(double)g(precision)g(v)-5 +b(alues)30 b(on)g(V)-10 b(AX/VMS)0 5262 y(mac)m(hines,)38 +b(ho)m(w)m(ev)m(er,)h(where)d(there)g(is)g(no)g(easy)g(w)m(a)m(y)h(to)g +(b)m(ypass)f(the)g(default)g(in)m(terpretation)h(of)f(the)h(IEEE)0 +5375 y(sp)s(ecial)45 b(v)-5 b(alues.)83 b(This)44 b(is)h(also)g(not)g +(supp)s(orted)d(when)i(reading)h(\015oating-p)s(oin)m(t)g(images)h +(that)f(ha)m(v)m(e)h(b)s(een)0 5488 y(compressed)29 b(with)h(the)f +(FITS)g(tiled)i(image)f(compression)g(con)m(v)m(en)m(tion)i(that)e(is)g +(discussed)e(in)i(section)h(5.6;)g(the)0 5601 y(pixels)k(v)-5 +b(alues)35 b(in)g(tile)g(compressed)g(images)h(are)f(represen)m(ted)g +(b)m(y)f(scaled)i(in)m(tegers,)h(and)d(a)i(reserv)m(ed)f(in)m(teger)0 +5714 y(v)-5 b(alue)31 b(\(not)g(a)g(NaN\))g(is)f(used)g(to)h(represen)m +(t)g(unde\014ned)d(pixels.)p eop end +%%Page: 21 27 +TeXDict begin 21 26 bop 0 299 a Fg(4.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(21)0 555 y Fd(4.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 805 y Fi(It)27 b(is)h(not)f(required)f +(to)i(kno)m(w)f(the)h(total)h(size)f(of)f(a)h(FITS)e(data)i(arra)m(y)g +(or)f(table)h(b)s(efore)f(b)s(eginning)f(to)i(write)g(the)0 +918 y(data)k(to)f(the)g(FITS)f(\014le.)43 b(In)30 b(the)h(case)h(of)f +(the)g(primary)f(arra)m(y)h(or)g(an)f(image)j(extension,)e(one)h +(should)d(initially)0 1031 y(create)i(the)e(arra)m(y)h(with)e(the)i +(size)g(of)f(the)g(highest)g(dimension)g(\(largest)i(NAXISn)d(k)m(eyw)m +(ord\))i(set)g(to)g(a)f(dumm)m(y)0 1144 y(v)-5 b(alue,)26 +b(suc)m(h)e(as)g(1.)39 b(Then)23 b(after)i(all)g(the)g(data)f(ha)m(v)m +(e)i(b)s(een)d(written)h(and)g(the)g(true)g(dimensions)g(are)g(kno)m +(wn,)h(then)0 1257 y(the)31 b(NAXISn)e(v)-5 b(alue)31 +b(should)f(b)s(e)g(up)s(dated)f(using)h(the)h(\014ts)p +2051 1257 28 4 v 62 w(up)s(date)p 2389 1257 V 32 w(k)m(ey)h(routine)e +(b)s(efore)g(mo)m(ving)i(to)f(another)0 1370 y(extension)g(or)f +(closing)i(the)e(FITS)g(\014le.)0 1530 y(When)f(writing)g(to)g(FITS)g +(tables,)h(CFITSIO)d(automatically)32 b(k)m(eeps)e(trac)m(k)g(of)f(the) +g(highest)h(ro)m(w)f(n)m(um)m(b)s(er)e(that)0 1643 y(is)32 +b(written)g(to,)h(and)e(will)h(increase)h(the)f(size)h(of)f(the)g +(table)g(if)g(necessary)-8 b(.)46 b(CFITSIO)30 b(will)i(also)h +(automatically)0 1756 y(insert)j(space)h(in)f(the)g(FITS)f(\014le)i(if) +f(necessary)-8 b(,)39 b(to)e(ensure)e(that)i(the)f(data)h('heap',)h(if) +e(it)h(exists,)h(and/or)f(an)m(y)0 1869 y(additional)29 +b(HDUs)g(that)g(follo)m(w)g(the)g(table)g(do)f(not)h(get)g(o)m(v)m +(erwritten)h(as)e(new)g(ro)m(ws)g(are)h(written)f(to)h(the)g(table.)0 +2029 y(As)37 b(a)h(general)g(rule)f(it)h(is)f(b)s(est)g(to)h(sp)s +(ecify)f(the)h(initial)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f(=)g(0)g(when) +g(the)g(table)h(is)g(created,)0 2142 y(then)g(let)h(CFITSIO)e(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)i(written.)65 b(The)38 b(application)0 2255 +y(program)e(should)f(not)i(man)m(ually)g(up)s(date)e(the)i(n)m(um)m(b)s +(er)e(of)h(ro)m(ws)g(in)g(the)h(table)g(\(as)g(giv)m(en)g(b)m(y)f(the)h +(NAXIS2)0 2368 y(k)m(eyw)m(ord\))j(since)f(CFITSIO)e(do)s(es)i(this)g +(automatically)-8 b(.)69 b(If)38 b(a)i(table)f(is)g(initially)i +(created)f(with)e(more)h(than)0 2481 y(zero)i(ro)m(ws,)j(then)c(this)h +(will)f(usually)h(b)s(e)f(considered)g(as)h(the)g(minim)m(um)f(size)h +(of)g(the)g(table,)j(ev)m(en)d(if)g(few)m(er)0 2594 y(ro)m(ws)30 +b(are)g(actually)h(written)f(to)h(the)f(table.)41 b(Th)m(us,)30 +b(if)f(a)i(table)f(is)g(initially)h(created)g(with)f(NAXIS2)g(=)g(20,)h +(and)0 2706 y(CFITSIO)g(only)i(writes)f(10)i(ro)m(ws)e(of)h(data)g(b)s +(efore)f(closing)i(the)f(table,)h(then)e(NAXIS2)h(will)g(remain)f +(equal)h(to)0 2819 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)f(to)h(this)f(table,)i(then)e(NAXIS2)h +(will)f(b)s(e)g(increased)g(from)g(20)0 2932 y(to)f(30.)44 +b(The)31 b(one)g(exception)i(to)f(this)f(automatic)i(up)s(dating)d(of)h +(the)h(NAXIS2)f(k)m(eyw)m(ord)h(is)f(if)g(the)h(application)0 +3045 y(program)c(directly)g(mo)s(di\014es)f(the)i(v)-5 +b(alue)28 b(of)g(NAXIS2)g(\(up)f(or)h(do)m(wn\))g(itself)h(just)e(b)s +(efore)h(closing)h(the)f(table.)41 b(In)0 3158 y(this)28 +b(case,)i(CFITSIO)d(do)s(es)h(not)h(up)s(date)e(NAXIS2)i(again,)h +(since)f(it)g(assumes)f(that)h(the)f(application)i(program)0 +3271 y(m)m(ust)i(ha)m(v)m(e)h(had)f(a)g(go)s(o)s(d)g(reason)h(for)f(c)m +(hanging)h(the)f(v)-5 b(alue)33 b(directly)-8 b(.)47 +b(This)31 b(is)h(not)h(recommended,)f(ho)m(w)m(ev)m(er,)0 +3384 y(and)j(is)h(only)g(pro)m(vided)g(for)f(bac)m(kw)m(ard)h +(compatibilit)m(y)i(with)e(soft)m(w)m(are)h(that)g(initially)g(creates) +g(a)f(table)h(with)0 3497 y(a)d(large)h(n)m(um)m(b)s(er)e(of)h(ro)m +(ws,)h(than)f(decreases)g(the)h(NAXIS2)f(v)-5 b(alue)34 +b(to)h(the)f(actual)h(smaller)g(v)-5 b(alue)34 b(just)f(b)s(efore)0 +3610 y(closing)e(the)g(table.)0 3941 y Fd(4.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 +4191 y Fi(CFITSIO)25 b(supp)s(orts)g(sev)m(eral)j(lo)s(cal)f(FITS)f +(con)m(v)m(en)m(tions)j(whic)m(h)d(are)h(not)g(de\014ned)e(in)h(the)h +(o\016cial)h(NOST)e(FITS)0 4304 y(standard)k(and)g(whic)m(h)h(are)g +(not)g(necessarily)g(recognized)h(or)f(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 4417 y(Programmers)36 +b(should)f(b)s(e)g(cautious)i(ab)s(out)e(using)h(these)g(features,)i +(esp)s(ecially)f(if)f(the)g(FITS)f(\014les)h(that)h(are)0 +4530 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)f(do)h(not)f(use)h +(the)f(CFITSIO)0 4642 y(in)m(terface.)0 4930 y Fb(4.12.1)113 +b(Supp)s(ort)37 b(for)h(Long)g(String)f(Keyw)m(ord)h(V)-9 +b(alues.)0 5149 y Fi(The)23 b(length)i(of)f(a)g(standard)f(FITS)g +(string)h(k)m(eyw)m(ord)g(is)g(limited)h(to)f(68)h(c)m(haracters)g(b)s +(ecause)f(it)g(m)m(ust)g(\014t)g(en)m(tirely)0 5262 y(within)35 +b(a)h(single)h(FITS)e(header)h(k)m(eyw)m(ord)g(record.)57 +b(In)35 b(some)h(instances)g(it)h(is)e(necessary)i(to)f(enco)s(de)g +(strings)0 5375 y(longer)27 b(than)f(this)g(limit,)i(so)e(FITSIO)f +(supp)s(orts)f(a)j(lo)s(cal)g(con)m(v)m(en)m(tion)h(in)e(whic)m(h)g +(the)g(string)g(v)-5 b(alue)27 b(is)f(con)m(tin)m(ued)0 +5488 y(o)m(v)m(er)34 b(m)m(ultiple)g(k)m(eyw)m(ords.)49 +b(This)32 b(con)m(tin)m(uation)j(con)m(v)m(en)m(tion)h(uses)c(an)h(amp) +s(ersand)f(c)m(haracter)i(at)g(the)f(end)g(of)0 5601 +y(eac)m(h)c(substring)d(to)i(indicate)h(that)f(it)g(is)g(con)m(tin)m +(ued)g(on)f(the)h(next)g(k)m(eyw)m(ord,)h(and)d(the)i(con)m(tin)m +(uation)i(k)m(eyw)m(ords)0 5714 y(all)44 b(ha)m(v)m(e)h(the)f(name)f +(CONTINUE)g(without)g(an)h(equal)g(sign)f(in)g(column)h(9.)80 +b(The)43 b(string)h(v)-5 b(alue)43 b(ma)m(y)i(b)s(e)p +eop end +%%Page: 22 28 +TeXDict begin 22 27 bop 0 299 a Fi(22)1277 b Fg(CHAPTER)29 +b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 +555 y Fi(con)m(tin)m(ued)e(in)f(this)h(w)m(a)m(y)g(o)m(v)m(er)h(as)e +(man)m(y)h(additional)g(CONTINUE)f(k)m(eyw)m(ords)g(as)h(is)f +(required.)40 b(The)27 b(follo)m(wing)0 668 y(lines)k(illustrate)g +(this)f(con)m(tin)m(uation)j(con)m(v)m(en)m(tion)f(whic)m(h)e(is)h +(used)e(in)h(the)h(v)-5 b(alue)31 b(of)f(the)h(STRKEY)e(k)m(eyw)m(ord:) +0 920 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 1033 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 1146 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 1259 y(CONTINUE)e('FITS)47 b(header.')e(/)j(This)e(is)h(another)f +(optional)g(comment.)0 1511 y Fi(It)29 b(is)g(recommended)f(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)i(b) +s(e)d(included)g(in)g(an)m(y)h(HDU)0 1624 y(that)f(uses)e(this)h +(longstring)h(con)m(v)m(en)m(tion.)42 b(A)27 b(subroutine)f(called)i +(FTPLSW)f(has)g(b)s(een)f(pro)m(vided)h(in)f(CFITSIO)0 +1737 y(to)31 b(write)g(this)f(k)m(eyw)m(ord)h(if)f(it)h(do)s(es)f(not)h +(already)g(exist.)0 1897 y(This)23 b(long)i(string)g(con)m(v)m(en)m +(tion)h(is)e(supp)s(orted)f(b)m(y)h(the)g(follo)m(wing)i(FITSIO)d +(subroutines)g(that)i(deal)g(with)f(string-)0 2010 y(v)-5 +b(alued)30 b(k)m(eyw)m(ords:)286 2262 y Fe(ftgkys)46 +b(-)i(read)f(a)g(string)f(keyword)286 2375 y(ftpkls)g(-)i(write)e +(\(append\))g(a)h(string)f(keyword)286 2488 y(ftikls)g(-)i(insert)e(a)h +(string)g(keyword)286 2601 y(ftmkls)f(-)i(modify)e(the)h(value)f(of)h +(an)h(existing)d(string)h(keyword)286 2714 y(ftukls)g(-)i(update)e(an)h +(existing)f(keyword,)f(or)i(write)g(a)g(new)g(keyword)286 +2827 y(ftdkey)f(-)i(delete)e(a)h(keyword)0 3079 y Fi(These)41 +b(routines)f(will)h(transparen)m(tly)g(read,)j(write,)g(or)d(delete)h +(a)f(long)g(string)g(v)-5 b(alue)41 b(in)g(the)g(FITS)f(\014le,)k(so)0 +3192 y(programmers)36 b(in)g(general)h(do)f(not)h(ha)m(v)m(e)g(to)g(b)s +(e)f(concerned)g(ab)s(out)g(the)g(details)i(of)e(the)h(con)m(v)m(en)m +(tion)h(that)f(is)0 3304 y(used)32 b(to)i(enco)s(de)f(the)g(long)g +(string)g(in)g(the)g(FITS)f(header.)48 b(When)33 b(reading)g(a)g(long)h +(string,)g(one)f(m)m(ust)g(ensure)0 3417 y(that)h(the)f(c)m(haracter)i +(string)f(parameter)g(used)e(in)h(these)h(subroutine)e(calls)j(has)e(b) +s(een)f(declared)i(long)g(enough)0 3530 y(to)d(hold)f(the)h(en)m(tire)g +(string,)g(otherwise)f(the)h(returned)e(string)h(v)-5 +b(alue)31 b(will)g(b)s(e)f(truncated.)0 3690 y(Note)d(that)e(the)h +(more)f(commonly)h(used)e(FITSIO)g(subroutine)h(to)h(write)f(string)g +(v)-5 b(alued)25 b(k)m(eyw)m(ords)h(\(FTPKYS\))0 3803 +y(do)s(es)38 b(NOT)g(supp)s(ort)f(this)h(long)h(string)g(con)m(v)m(en)m +(tion)h(and)e(only)h(supp)s(orts)d(strings)i(up)g(to)h(68)g(c)m +(haracters)h(in)0 3916 y(length.)i(This)30 b(has)g(b)s(een)g(done)h +(delib)s(erately)g(to)h(prev)m(en)m(t)f(programs)g(from)f(inadv)m +(erten)m(tly)i(writing)f(k)m(eyw)m(ords)0 4029 y(using)38 +b(this)h(non-standard)e(con)m(v)m(en)m(tion)k(without)e(the)f(explicit) +i(in)m(ten)m(t)g(of)f(the)g(programmer)f(or)h(user.)64 +b(The)0 4142 y(FTPKLS)28 b(subroutine)g(m)m(ust)h(b)s(e)g(called)h +(instead)g(to)g(write)f(long)h(strings.)40 b(This)28 +b(routine)i(can)f(also)h(b)s(e)f(used)f(to)0 4255 y(write)j(ordinary)e +(string)i(v)-5 b(alues)30 b(less)h(than)f(68)h(c)m(haracters)h(in)e +(length.)0 4544 y Fb(4.12.2)113 b(Arra)m(ys)37 b(of)g(Fixed-Length)j +(Strings)e(in)f(Binary)h(T)-9 b(ables)0 4763 y Fi(CFITSIO)25 +b(supp)s(orts)g(2)i(w)m(a)m(ys)g(to)g(sp)s(ecify)f(that)i(a)f(c)m +(haracter)h(column)e(in)g(a)h(binary)f(table)i(con)m(tains)f(an)g(arra) +m(y)g(of)0 4876 y(\014xed-length)32 b(strings.)46 b(The)32 +b(\014rst)f(w)m(a)m(y)-8 b(,)34 b(whic)m(h)e(is)g(o\016cially)i(supp)s +(orted)c(b)m(y)i(the)h(FITS)e(Standard)g(do)s(cumen)m(t,)0 +4989 y(uses)38 b(the)g(TDIMn)g(k)m(eyw)m(ord.)65 b(F)-8 +b(or)39 b(example,)i(if)d(TF)m(ORMn)g(=)g('60A')h(and)f(TDIMn)g(=)g +('\(12,5\)')i(then)e(that)0 5102 y(column)30 b(will)h(b)s(e)f(in)m +(terpreted)g(as)h(con)m(taining)h(an)e(arra)m(y)h(of)g(5)f(strings,)h +(eac)m(h)g(12)g(c)m(haracters)h(long.)0 5262 y(FITSIO)40 +b(also)i(supp)s(orts)d(a)i(lo)s(cal)h(con)m(v)m(en)m(tion)h(for)e(the)g +(format)h(of)f(the)g(TF)m(ORMn)g(k)m(eyw)m(ord)g(v)-5 +b(alue)42 b(of)f(the)0 5375 y(form)h('rAw')g(where)g('r')g(is)h(an)f +(in)m(teger)i(sp)s(ecifying)e(the)g(total)j(width)c(in)h(c)m(haracters) +i(of)f(the)f(column,)k(and)0 5488 y('w')36 b(is)g(an)g(in)m(teger)h(sp) +s(ecifying)f(the)g(\(\014xed\))g(length)h(of)f(an)g(individual)f(unit)h +(string)f(within)h(the)g(v)m(ector.)59 b(F)-8 b(or)0 +5601 y(example,)47 b(TF)m(ORM1)d(=)f('120A10')j(w)m(ould)d(indicate)h +(that)f(the)h(binary)e(table)i(column)f(is)g(120)h(c)m(haracters)0 +5714 y(wide)32 b(and)g(consists)h(of)g(12)g(10-c)m(haracter)i(length)e +(strings.)47 b(This)31 b(con)m(v)m(en)m(tion)k(is)d(recognized)i(b)m(y) +e(the)h(FITSIO)p eop end +%%Page: 23 29 +TeXDict begin 23 28 bop 0 299 a Fg(4.12.)73 b(LOCAL)29 +b(FITS)h(CONVENTIONS)f(SUPPOR)-8 b(TED)29 b(BY)i(FITSIO)1168 +b Fi(23)0 555 y(subroutines)40 b(that)h(read)g(or)g(write)g(strings)f +(in)h(binary)f(tables.)73 b(The)40 b(Binary)h(T)-8 b(able)42 +b(de\014nition)e(do)s(cumen)m(t)0 668 y(sp)s(eci\014es)31 +b(that)i(other)e(optional)i(c)m(haracters)g(ma)m(y)g(follo)m(w)g(the)e +(datat)m(yp)s(e)i(co)s(de)f(in)f(the)h(TF)m(ORM)g(k)m(eyw)m(ord,)h(so)0 +781 y(this)j(lo)s(cal)i(con)m(v)m(en)m(tion)h(is)e(in)f(compliance)i +(with)e(the)h(FITS)f(standard,)h(although)g(other)g(FITS)f(readers)h +(are)0 894 y(not)31 b(required)e(to)i(recognize)h(this)f(con)m(v)m(en)m +(tion.)0 1054 y(The)25 b(Binary)h(T)-8 b(able)27 b(de\014nition)e(do)s +(cumen)m(t)h(that)h(w)m(as)f(appro)m(v)m(ed)g(b)m(y)g(the)g(IA)m(U)g +(in)g(1994)i(con)m(tains)f(an)e(app)s(endix)0 1167 y(describing)d(an)h +(alternate)h(con)m(v)m(en)m(tion)h(for)e(sp)s(ecifying)f(arra)m(ys)h +(of)g(\014xed)f(or)h(v)-5 b(ariable)24 b(length)f(strings)f(in)h(a)g +(binary)0 1280 y(table)35 b(c)m(haracter)g(column)f(\(with)g(the)h +(form)e('rA:SSTRw/nnn\)'.)50 b(This)33 b(app)s(endix)f(w)m(as)j(not)f +(o\016cially)i(v)m(oted)0 1393 y(on)30 b(b)m(y)h(the)f(IA)m(U)h(and)f +(hence)g(is)h(still)g(pro)m(visional.)42 b(FITSIO)29 +b(do)s(es)h(not)h(curren)m(tly)f(supp)s(ort)f(this)h(prop)s(osal.)0 +1687 y Fb(4.12.3)113 b(Keyw)m(ord)37 b(Units)h(Strings)0 +1907 y Fi(One)f(de\014ciency)h(of)g(the)g(curren)m(t)g(FITS)f(Standard) +f(is)i(that)h(it)f(do)s(es)f(not)h(de\014ne)f(a)i(sp)s(eci\014c)e(con)m +(v)m(en)m(tion)j(for)0 2020 y(recording)30 b(the)g(ph)m(ysical)h(units) +f(of)g(a)g(k)m(eyw)m(ord)h(v)-5 b(alue.)41 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)f(the)0 +2133 y(ph)m(ysical)36 b(units)f(of)g(the)h(v)-5 b(alues)36 +b(in)f(a)g(table)i(column,)f(but)f(there)g(is)h(no)f(analogous)i(con)m +(v)m(en)m(tion)g(for)e(k)m(eyw)m(ord)0 2246 y(v)-5 b(alues.)42 +b(The)30 b(commen)m(t)h(\014eld)g(of)f(the)h(k)m(eyw)m(ord)g(is)g +(often)g(used)f(for)g(this)g(purp)s(ose,)g(but)f(the)i(units)f(are)h +(usually)0 2359 y(not)g(sp)s(eci\014ed)e(in)h(a)h(w)m(ell)g(de\014ned)f +(format)g(that)h(FITS)f(readers)g(can)h(easily)g(recognize)h(and)e +(extract.)0 2519 y(T)-8 b(o)28 b(solv)m(e)h(this)e(de\014ciency)-8 +b(,)30 b(FITSIO)c(uses)h(a)h(lo)s(cal)h(con)m(v)m(en)m(tion)h(in)d +(whic)m(h)g(the)h(k)m(eyw)m(ord)g(units)f(are)h(enclosed)g(in)0 +2632 y(square)20 b(brac)m(k)m(ets)j(as)e(the)f(\014rst)g(tok)m(en)i(in) +f(the)f(k)m(eyw)m(ord)i(commen)m(t)f(\014eld;)j(more)d(sp)s +(eci\014cally)-8 b(,)24 b(the)d(op)s(ening)f(square)0 +2745 y(brac)m(k)m(et)28 b(immediately)g(follo)m(ws)f(the)g(slash)f('/') +h(commen)m(t)h(\014eld)e(delimiter)h(and)f(a)g(single)h(space)g(c)m +(haracter.)41 b(The)0 2858 y(follo)m(wing)32 b(examples)f(illustrate)g +(k)m(eyw)m(ords)g(that)g(use)f(this)g(con)m(v)m(en)m(tion:)0 +3121 y Fe(EXPOSURE=)713 b(1800.0)47 b(/)g([s])g(elapsed)f(exposure)f +(time)0 3234 y(V_HELIO)h(=)763 b(16.23)47 b(/)g([km)g(s**\(-1\)])e +(heliocentric)g(velocity)0 3347 y(LAMBDA)94 b(=)763 b(5400.)47 +b(/)g([angstrom])e(central)h(wavelength)0 3460 y(FLUX)190 +b(=)47 b(4.9033487787637465E-30)42 b(/)47 b([J/cm**2/s])e(average)h +(flux)0 3723 y Fi(In)28 b(general,)h(the)g(units)e(named)h(in)g(the)h +(IA)m(U\(1988\))i(St)m(yle)e(Guide)f(are)h(recommended,)f(with)g(the)h +(main)f(excep-)0 3836 y(tion)j(that)g(the)f(preferred)g(unit)f(for)i +(angle)g(is)f('deg')i(for)e(degrees.)0 3996 y(The)24 +b(FTPUNT)g(and)g(FTGUNT)h(subroutines)f(in)g(FITSIO)f(write)i(and)f +(read,)i(resp)s(ectiv)m(ely)-8 b(,)28 b(the)c(k)m(eyw)m(ord)h(unit)0 +4109 y(strings)30 b(in)g(an)h(existing)g(k)m(eyw)m(ord.)0 +4403 y Fb(4.12.4)113 b(HIERAR)m(CH)34 b(Con)m(v)m(en)m(tion)k(for)f +(Extended)h(Keyw)m(ord)f(Names)0 4623 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)i(whic)m(h)e(allo)m +(ws)h(k)m(eyw)m(ord)f(names)g(that)h(are)0 4736 y(longer)34 +b(then)e(8)i(c)m(haracters)g(and)f(ma)m(y)h(con)m(tain)g(the)f(full)g +(range)g(of)h(prin)m(table)f(ASCI)s(I)e(text)j(c)m(haracters.)51 +b(This)0 4849 y(con)m(v)m(en)m(tion)39 b(w)m(as)f(dev)m(elop)s(ed)f(at) +h(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 4962 +y(FITS)30 b(k)m(eyw)m(ord)g(suc)m(h)h(as:)0 5225 y Fe(HIERARCH)46 +b(ESO)g(INS)h(FOCU)g(POS)g(=)g(-0.00002500)e(/)j(Focus)e(position)0 +5488 y Fi(Basically)-8 b(,)55 b(this)47 b(con)m(v)m(en)m(tion)j(uses)d +(the)h(FITS)f(k)m(eyw)m(ord)h('HIERAR)m(CH')h(to)f(indicate)h(that)f +(this)f(con)m(v)m(en-)0 5601 y(tion)e(is)f(b)s(eing)g(used,)j(then)d +(the)g(actual)i(k)m(eyw)m(ord)e(name)h(\()p Fe('ESO)i(INS)f(FOCU)h +(POS')c Fi(in)h(this)g(example\))h(b)s(e-)0 5714 y(gins)40 +b(in)f(column)g(10)i(and)e(can)h(con)m(tain)g(an)m(y)g(prin)m(table)g +(ASCI)s(I)e(text)j(c)m(haracters,)i(including)d(spaces.)68 +b(The)p eop end +%%Page: 24 30 +TeXDict begin 24 29 bop 0 299 a Fi(24)1277 b Fg(CHAPTER)29 +b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 +555 y Fi(equals)44 b(sign)h(marks)e(the)h(end)g(of)g(the)g(k)m(eyw)m +(ord)h(name)f(and)f(is)i(follo)m(w)m(ed)g(b)m(y)f(the)g(usual)g(v)-5 +b(alue)45 b(and)e(com-)0 668 y(men)m(t)31 b(\014elds)f(just)g(as)h(in)f +(standard)g(FITS)g(k)m(eyw)m(ords.)41 b(F)-8 b(urther)30 +b(details)i(of)f(this)f(con)m(v)m(en)m(tion)j(are)e(describ)s(ed)e(at)0 +781 y(h)m(ttp://arcdev.hq.eso.org/dicb/dicd/dic-1-1.4.)q(h)m(tml)36 +b(\(searc)m(h)c(for)e(HIERAR)m(CH\).)0 941 y(This)43 +b(con)m(v)m(en)m(tion)k(allo)m(ws)f(a)e(m)m(uc)m(h)h(broader)e(range)i +(of)f(k)m(eyw)m(ord)h(names)f(than)h(is)f(allo)m(w)m(ed)i(b)m(y)e(the)h +(FITS)0 1054 y(Standard.)40 b(Here)30 b(are)h(more)g(examples)g(of)f +(suc)m(h)g(k)m(eyw)m(ords:)0 1296 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 +1409 y(HIERARCH)g(XTE$TEMP)f(=)j(98.6)e(/)i(Keyword)d(contains)h(the)h +('$')g(character)0 1522 y(HIERARCH)f(Earth)g(is)h(a)h(star)e(=)i(F)f(/) +h(Keyword)d(contains)h(embedded)f(spaces)0 1764 y Fi(CFITSIO)40 +b(will)i(transparen)m(tly)g(read)g(and)f(write)g(these)i(k)m(eyw)m +(ords,)i(so)d(application)h(programs)e(do)g(not)h(in)0 +1877 y(general)33 b(need)f(to)h(kno)m(w)f(an)m(ything)h(ab)s(out)f(the) +g(sp)s(eci\014c)g(implemen)m(tation)i(details)f(of)g(the)f(HIERAR)m(CH) +g(con-)0 1990 y(v)m(en)m(tion.)50 b(In)32 b(particular,)j(application)f +(programs)e(do)h(not)h(need)e(to)i(sp)s(ecify)f(the)g(`HIERAR)m(CH')h +(part)f(of)g(the)0 2103 y(k)m(eyw)m(ord)g(name)f(when)g(reading)g(or)g +(writing)h(k)m(eyw)m(ords)f(\(although)h(it)g(ma)m(y)g(b)s(e)f +(included)f(if)i(desired\).)46 b(When)0 2216 y(writing)35 +b(a)g(k)m(eyw)m(ord,)h(CFITSIO)d(\014rst)h(c)m(hec)m(ks)i(to)f(see)g +(if)g(the)g(k)m(eyw)m(ord)g(name)f(is)h(legal)h(as)f(a)g(standard)f +(FITS)0 2328 y(k)m(eyw)m(ord)k(\(no)g(more)f(than)h(8)g(c)m(haracters)h +(long)f(and)f(con)m(taining)i(only)e(letters,)k(digits,)f(or)e(a)g(min) +m(us)e(sign)i(or)0 2441 y(underscore\).)68 b(If)39 b(so)h(it)g(writes)g +(it)g(as)f(a)h(standard)f(FITS)g(k)m(eyw)m(ord,)k(otherwise)d(it)g +(uses)f(the)h(hierarc)m(h)f(con-)0 2554 y(v)m(en)m(tion)34 +b(to)f(write)g(the)f(k)m(eyw)m(ord.)48 b(The)32 b(maxim)m(um)g(k)m(eyw) +m(ord)h(name)f(length)h(is)g(67)g(c)m(haracters,)i(whic)m(h)d(lea)m(v)m +(es)0 2667 y(only)c(1)h(space)g(for)f(the)h(v)-5 b(alue)29 +b(\014eld.)39 b(A)29 b(more)f(practical)i(limit)f(is)g(ab)s(out)f(40)h +(c)m(haracters,)i(whic)m(h)d(lea)m(v)m(es)i(enough)0 +2780 y(ro)s(om)e(for)h(most)f(k)m(eyw)m(ord)h(v)-5 b(alues.)41 +b(CFITSIO)27 b(returns)g(an)h(error)h(if)f(there)h(is)f(not)h(enough)f +(ro)s(om)h(for)f(b)s(oth)g(the)0 2893 y(k)m(eyw)m(ord)k(name)f(and)f +(the)i(k)m(eyw)m(ord)f(v)-5 b(alue)32 b(on)f(the)h(80-c)m(haracter)h +(card,)f(except)g(for)f(string-v)-5 b(alued)32 b(k)m(eyw)m(ords)0 +3006 y(whic)m(h)h(are)g(simply)f(truncated)h(so)g(that)h(the)f(closing) +h(quote)g(c)m(haracter)g(falls)f(in)g(column)g(80.)49 +b(In)32 b(the)h(curren)m(t)0 3119 y(implemen)m(tation,)e(CFITSIO)c +(preserv)m(es)i(the)g(case)h(of)f(the)g(letters)h(when)e(writing)h(the) +g(k)m(eyw)m(ord)g(name,)g(but)f(it)0 3232 y(is)d(case-insensitiv)m(e)i +(when)d(reading)h(or)g(searc)m(hing)h(for)f(a)g(k)m(eyw)m(ord.)40 +b(The)24 b(curren)m(t)h(implemen)m(tation)h(allo)m(ws)h(an)m(y)0 +3345 y(ASCI)s(I)i(text)j(c)m(haracter)h(\(ASCI)s(I)c(32)j(to)f(ASCI)s +(I)f(126\))i(in)f(the)g(k)m(eyw)m(ord)g(name)g(except)h(for)e(the)h +('=')g(c)m(haracter.)0 3458 y(A)f(space)h(is)g(also)g(required)f(on)g +(either)h(side)f(of)h(the)f(equal)h(sign.)0 3788 y Fd(4.13)136 +b(Optimizing)45 b(Co)t(de)g(for)h(Maxim)l(um)f(Pro)t(cessing)g(Sp)t +(eed)0 4039 y Fi(CFITSIO)22 b(has)h(b)s(een)f(carefully)i(designed)f +(to)h(obtain)g(the)f(highest)h(p)s(ossible)e(sp)s(eed)h(when)f(reading) +h(and)g(writing)0 4152 y(FITS)33 b(\014les.)51 b(In)33 +b(order)h(to)g(ac)m(hiev)m(e)i(the)e(b)s(est)g(p)s(erformance,)g(ho)m +(w)m(ev)m(er,)i(application)g(programmers)d(m)m(ust)h(b)s(e)0 +4264 y(careful)24 b(to)h(call)g(the)f(CFITSIO)f(routines)g +(appropriately)i(and)e(in)h(an)f(e\016cien)m(t)j(sequence;)h +(inappropriate)c(usage)0 4377 y(of)31 b(CFITSIO)d(routines)j(can)f +(greatly)i(slo)m(w)f(do)m(wn)f(the)h(execution)g(sp)s(eed)f(of)g(a)h +(program.)0 4538 y(The)f(maxim)m(um)h(p)s(ossible)f(I/O)h(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 4650 y(that)g(it)f(is)g(running)e(on.)41 +b(As)30 b(a)g(rough)g(guide,)g(the)g(curren)m(t)g(generation)h(of)f(w)m +(orkstations)h(can)g(ac)m(hiev)m(e)h(sp)s(eeds)0 4763 +y(of)j(2)g({)g(10)g(MB/s)h(when)e(reading)h(or)f(writing)h(FITS)f +(images)i(and)e(similar,)i(or)f(sligh)m(tly)h(slo)m(w)m(er)g(sp)s(eeds) +d(with)0 4876 y(FITS)c(binary)h(tables.)41 b(Reading)31 +b(of)f(FITS)g(\014les)g(can)h(o)s(ccur)f(at)h(ev)m(en)f(higher)g(rates) +h(\(30MB/s)i(or)d(more\))h(if)f(the)0 4989 y(FITS)c(\014le)h(is)f +(still)i(cac)m(hed)g(in)e(system)h(memory)f(follo)m(wing)j(a)e +(previous)f(read)g(or)h(write)g(op)s(eration)g(on)g(the)g(same)0 +5102 y(\014le.)44 b(T)-8 b(o)32 b(more)g(accurately)h(predict)e(the)h +(b)s(est)f(p)s(erformance)g(that)h(is)f(p)s(ossible)g(on)h(an)m(y)g +(particular)f(system,)i(a)0 5215 y(diagnostic)h(program)f(called)h +(\\sp)s(eed.c")f(is)g(included)f(with)h(the)g(CFITSIO)e(distribution)h +(whic)m(h)h(can)g(b)s(e)f(run)0 5328 y(to)f(appro)m(ximately)h(measure) +e(the)h(maxim)m(um)f(p)s(ossible)g(sp)s(eed)f(of)i(writing)f(and)g +(reading)h(a)f(test)i(FITS)d(\014le.)0 5488 y(The)k(follo)m(wing)h(2)g +(sections)g(pro)m(vide)g(some)f(bac)m(kground)g(on)h(ho)m(w)f(CFITSIO)f +(in)m(ternally)i(manages)g(the)f(data)0 5601 y(I/O)g(and)g(describ)s +(es)f(some)i(strategies)h(that)f(ma)m(y)g(b)s(e)e(used)h(to)h(optimize) +g(the)g(pro)s(cessing)f(sp)s(eed)f(of)h(soft)m(w)m(are)0 +5714 y(that)e(uses)f(CFITSIO.)p eop end +%%Page: 25 31 +TeXDict begin 25 30 bop 0 299 a Fg(4.13.)73 b(OPTIMIZING)29 +b(CODE)h(F)m(OR)h(MAXIMUM)g(PR)m(OCESSING)f(SPEED)971 +b Fi(25)0 555 y Fb(4.13.1)113 b(Bac)m(kground)38 b(Information:)50 +b(Ho)m(w)37 b(CFITSIO)h(Manages)h(Data)f(I/O)0 776 y +Fi(Man)m(y)22 b(CFITSIO)e(op)s(erations)i(in)m(v)m(olv)m(e)i +(transferring)d(only)h(a)g(small)g(n)m(um)m(b)s(er)f(of)h(b)m(ytes)g +(to)g(or)g(from)f(the)h(FITS)f(\014le)0 889 y(\(e.g,)31 +b(reading)e(a)g(k)m(eyw)m(ord,)h(or)f(writing)g(a)g(ro)m(w)g(in)f(a)h +(table\);)i(it)f(w)m(ould)e(b)s(e)g(v)m(ery)i(ine\016cien)m(t)g(to)f +(ph)m(ysically)h(read)0 1002 y(or)i(write)h(suc)m(h)f(small)g(blo)s(c)m +(ks)h(of)f(data)h(directly)g(in)f(the)g(FITS)g(\014le)g(on)g(disk,)h +(therefore)f(CFITSIO)f(main)m(tains)0 1115 y(a)38 b(set)g(of)g(in)m +(ternal)h(Input{Output)c(\(IO\))j(bu\013ers)f(in)g(RAM)h(memory)g(that) +g(eac)m(h)h(con)m(tain)g(one)f(FITS)f(blo)s(c)m(k)0 1228 +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)f(the)g(FITS)f(\014le,)j +(it)e(\014rst)f(transfers)h(the)0 1341 y(FITS)30 b(blo)s(c)m(k)h(con)m +(taining)h(those)f(b)m(ytes)g(in)m(to)g(one)g(of)f(the)h(IO)f +(bu\013ers)f(in)h(memory)-8 b(.)42 b(The)30 b(next)g(time)h(CFITSIO)0 +1454 y(needs)36 b(to)g(access)i(b)m(ytes)e(in)g(the)g(same)h(blo)s(c)m +(k)f(it)h(can)f(then)g(go)h(to)f(the)h(fast)f(IO)f(bu\013er)g(rather)h +(than)g(using)g(a)0 1567 y(m)m(uc)m(h)c(slo)m(w)m(er)i(system)e(disk)g +(access)h(routine.)46 b(The)32 b(n)m(um)m(b)s(er)f(of)h(a)m(v)-5 +b(ailable)35 b(IO)d(bu\013ers)f(is)h(determined)g(b)m(y)g(the)0 +1680 y(NIOBUF)f(parameter)g(\(in)f(\014tsio2.h\))h(and)f(is)h(curren)m +(tly)f(set)h(to)g(40.)0 1840 y(Whenev)m(er)24 b(CFITSIO)f(reads)g(or)h +(writes)g(data)g(it)h(\014rst)e(c)m(hec)m(ks)i(to)g(see)f(if)g(that)g +(blo)s(c)m(k)h(of)f(the)g(FITS)f(\014le)g(is)h(already)0 +1953 y(loaded)33 b(in)m(to)g(one)f(of)g(the)g(IO)g(bu\013ers.)44 +b(If)32 b(not,)h(and)e(if)h(there)g(is)g(an)g(empt)m(y)h(IO)e(bu\013er) +g(a)m(v)-5 b(ailable,)35 b(then)d(it)h(will)0 2066 y(load)g(that)h(blo) +s(c)m(k)f(in)m(to)g(the)g(IO)g(bu\013er)e(\(when)h(reading)h(a)g(FITS)f +(\014le\))h(or)g(will)g(initialize)i(a)e(new)f(blo)s(c)m(k)i(\(when)0 +2179 y(writing)j(to)h(a)g(FITS)f(\014le\).)62 b(If)37 +b(all)h(the)g(IO)e(bu\013ers)h(are)g(already)h(full,)h(it)f(m)m(ust)g +(decide)f(whic)m(h)g(one)h(to)g(reuse)0 2291 y(\(generally)c(the)f(one) +g(that)g(has)f(b)s(een)g(accessed)i(least)f(recen)m(tly\),)i(and)d +(\015ush)f(the)i(con)m(ten)m(ts)h(bac)m(k)g(to)f(disk)f(if)g(it)0 +2404 y(has)e(b)s(een)g(mo)s(di\014ed)f(b)s(efore)h(loading)h(the)g(new) +f(blo)s(c)m(k.)0 2565 y(The)g(one)g(ma)5 b(jor)30 b(exception)i(to)f +(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)i(con)m(tiguous)f(set)g(of)f(b)m(ytes)h(are)0 +2677 y(accessed,)37 b(as)d(migh)m(t)i(o)s(ccur)e(when)f(reading)i(or)f +(writing)g(a)h(FITS)f(image.)54 b(In)34 b(this)g(case)h(CFITSIO)e(b)m +(ypasses)0 2790 y(the)i(in)m(ternal)h(IO)f(bu\013ers)f(and)g(simply)h +(reads)g(or)g(writes)h(the)f(desired)g(b)m(ytes)g(directly)h(in)f(the)g +(disk)g(\014le)g(with)0 2903 y(a)i(single)g(call)g(to)g(a)g(lo)m(w-lev) +m(el)i(\014le)d(read)g(or)h(write)f(routine.)58 b(The)36 +b(minim)m(um)g(threshold)f(for)h(the)h(n)m(um)m(b)s(er)e(of)0 +3016 y(b)m(ytes)40 b(to)g(read)f(or)g(write)g(this)h(w)m(a)m(y)g(is)f +(set)h(b)m(y)f(the)g(MINDIRECT)g(parameter)h(and)e(is)i(curren)m(tly)f +(set)h(to)g(3)0 3129 y(FITS)28 b(blo)s(c)m(ks)g(=)g(8640)i(b)m(ytes.)41 +b(This)28 b(is)g(the)g(most)h(e\016cien)m(t)h(w)m(a)m(y)f(to)g(read)g +(or)f(write)h(large)g(c)m(h)m(unks)f(of)g(data)i(and)0 +3242 y(can)37 b(ac)m(hiev)m(e)i(IO)d(transfer)g(rates)h(of)g(5)g({)g +(10MB/s)i(or)d(greater.)61 b(Note)38 b(that)f(this)g(fast)g(direct)g +(IO)f(pro)s(cess)g(is)0 3355 y(not)29 b(applicable)g(when)e(accessing)j +(columns)f(of)f(data)h(in)f(a)h(FITS)f(table)h(b)s(ecause)g(the)f(b)m +(ytes)h(are)g(generally)h(not)0 3468 y(con)m(tiguous)g(since)f(they)g +(are)h(in)m(terlea)m(v)m(ed)h(b)m(y)e(the)g(other)g(columns)g(of)g +(data)g(in)g(the)g(table.)41 b(This)28 b(explains)h(wh)m(y)0 +3581 y(the)i(sp)s(eed)e(for)h(accessing)i(FITS)e(tables)h(is)f +(generally)i(slo)m(w)m(er)f(than)g(accessing)g(FITS)f(images.)0 +3741 y(Giv)m(en)i(this)g(bac)m(kground)f(information,)h(the)g(general)g +(strategy)h(for)e(e\016cien)m(tly)i(accessing)g(FITS)e(\014les)g +(should)0 3854 y(no)m(w)36 b(b)s(e)g(apparen)m(t:)52 +b(when)35 b(dealing)i(with)f(FITS)g(images,)j(read)d(or)g(write)g +(large)i(c)m(h)m(unks)e(of)g(data)h(at)g(a)f(time)0 3967 +y(so)30 b(that)h(the)f(direct)h(IO)e(mec)m(hanism)h(will)h(b)s(e)e(in)m +(v)m(ok)m(ed;)j(when)d(accessing)j(FITS)d(headers)h(or)g(FITS)f +(tables,)i(on)0 4080 y(the)k(other)g(hand,)g(once)g(a)g(particular)h +(FITS)e(blo)s(c)m(k)h(has)f(b)s(een)g(loading)i(in)m(to)g(one)f(of)g +(the)f(IO)h(bu\013ers,)g(try)f(to)0 4193 y(access)39 +b(all)f(the)f(needed)g(information)h(in)f(that)h(blo)s(c)m(k)g(b)s +(efore)f(it)h(gets)g(\015ushed)d(out)j(of)g(the)f(IO)g(bu\013er.)60 +b(It)38 b(is)0 4305 y(imp)s(ortan)m(t)31 b(to)h(a)m(v)m(oid)g(the)f +(situation)h(where)f(the)g(same)g(FITS)f(blo)s(c)m(k)i(is)f(b)s(eing)f +(read)h(then)g(\015ushed)e(from)h(a)h(IO)0 4418 y(bu\013er)e(m)m +(ultiple)i(times.)0 4578 y(The)f(follo)m(wing)i(section)f(giv)m(es)h +(more)e(sp)s(eci\014c)h(suggestions)g(for)f(optimizing)i(the)e(use)g +(of)h(CFITSIO.)0 4881 y Fb(4.13.2)113 b(Optimization)38 +b(Strategies)0 5102 y Fi(1.)43 b(Because)32 b(the)f(data)g(in)g(FITS)f +(\014les)h(is)g(alw)m(a)m(ys)h(stored)f(in)g("big-endian")h(b)m(yte)f +(order,)g(where)f(the)h(\014rst)f(b)m(yte)0 5215 y(of)g(n)m(umeric)h(v) +-5 b(alues)30 b(con)m(tains)i(the)e(most)h(signi\014can)m(t)g(bits)f +(and)g(the)g(last)i(b)m(yte)e(con)m(tains)i(the)e(least)i(signi\014can) +m(t)0 5328 y(bits,)e(CFITSIO)f(m)m(ust)h(sw)m(ap)g(the)g(order)f(of)h +(the)h(b)m(ytes)f(when)f(reading)h(or)g(writing)g(FITS)g(\014les)g +(when)f(running)0 5441 y(on)k(little-endian)i(mac)m(hines)f(\(e.g.,)i +(Lin)m(ux)d(and)g(Microsoft)i(Windo)m(ws)e(op)s(erating)h(systems)g +(running)d(on)j(PCs)0 5554 y(with)c(x86)h(CPUs\).)0 5714 +y(On)i(fairly)h(new)f(CPUs)g(that)i(supp)s(ort)d("SSSE3")h(mac)m(hine)h +(instructions)g(\(e.g.,)i(starting)f(with)e(In)m(tel)i(Core)f(2)p +eop end +%%Page: 26 32 +TeXDict begin 26 31 bop 0 299 a Fi(26)1277 b Fg(CHAPTER)29 +b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 +555 y Fi(CPUs)21 b(in)h(2007,)j(and)d(in)f(AMD)i(CPUs)e(b)s(eginning)g +(in)h(2011\))i(signi\014can)m(tly)f(faster)f(4-b)m(yte)h(and)e(8-b)m +(yte)i(sw)m(apping)0 668 y(algorithms)k(are)g(a)m(v)-5 +b(ailable.)42 b(These)26 b(faster)h(b)m(yte)g(sw)m(apping)f(functions)g +(are)h(not)g(used)e(b)m(y)i(default)f(in)g(CFITSIO)0 +781 y(\(b)s(ecause)c(of)f(the)h(p)s(oten)m(tial)g(co)s(de)g(p)s +(ortablilit)m(y)g(issues\),)i(but)c(users)h(can)g(enable)h(them)f(on)h +(supp)s(orted)d(platforms)0 894 y(b)m(y)38 b(adding)f(the)h +(appropriate)f(compiler)i(\015ags)e(\(-mssse3)i(with)e(gcc)i(or)f(icc)g +(on)g(lin)m(ux\))g(when)e(compiling)j(the)0 1007 y(sw)m(appro)s(c.c)30 +b(source)g(\014le,)g(whic)m(h)g(will)g(allo)m(w)i(the)e(compiler)g(to)h +(generate)h(co)s(de)e(using)f(the)h(SSSE3)f(instruction)0 +1120 y(set.)41 b(A)28 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)f(to)g(do)g +(this)f(is)g(to)h(con\014gure)f(the)g(CFITSIO)f(library)h(with)g(the)g +(follo)m(wing)i(command:)95 1386 y Fe(>)96 b(./configure)44 +b(--enable-ssse3)0 1652 y Fi(Note,)37 b(ho)m(w)m(ev)m(er,)h(that)d(a)g +(binary)f(executable)j(\014le)e(that)g(is)g(created)h(using)e(these)h +(faster)g(functions)g(will)g(only)0 1765 y(run)c(on)h(mac)m(hines)g +(that)h(supp)s(ort)d(the)i(SSSE3)f(mac)m(hine)i(instructions.)45 +b(It)33 b(will)f(crash)g(on)g(mac)m(hines)g(that)h(do)0 +1878 y(not)e(supp)s(ort)d(them.)0 2038 y(F)-8 b(or)36 +b(faster)f(2-b)m(yte)i(sw)m(aps)e(on)g(virtually)g(all)h(x86-64)h(CPUs) +e(\(ev)m(en)h(those)g(that)f(do)g(not)h(supp)s(ort)d(SSSE3\),)j(a)0 +2151 y(v)-5 b(arian)m(t)26 b(using)e(only)g(SSE2)g(instructions)h +(exists.)39 b(SSE2)24 b(is)h(enabled)f(b)m(y)h(default)g(on)f(x86)p +3066 2151 28 4 v 34 w(64)h(CPUs)f(with)h(64-bit)0 2264 +y(op)s(erating)30 b(systems)f(\(and)g(is)g(also)i(automatically)h +(enabled)d(b)m(y)g(the)g({enable-ssse3)i(\015ag\).)41 +b(When)30 b(running)d(on)0 2377 y(x86)p 143 2377 V 34 +w(64)k(CPUs)g(with)f(32-bit)i(op)s(erating)g(systems,)f(these)g(faster) +h(2-b)m(yte)g(sw)m(apping)f(algorithms)g(are)h(not)f(used)0 +2490 y(b)m(y)f(default)h(in)f(CFITSIO,)f(but)h(can)g(b)s(e)g(enabled)g +(explicitly)i(with:)0 2756 y Fe(./configure)45 b(--enable-sse2)0 +3022 y Fi(Preliminary)f(testing)h(indicates)g(that)g(these)f(SSSE3)f +(and)g(SSE2)g(based)h(b)m(yte-sw)m(apping)h(algorithms)g(can)0 +3135 y(b)s(o)s(ost)31 b(the)h(CFITSIO)e(p)s(erformance)h(when)f +(reading)i(or)f(writing)h(FITS)f(images)h(b)m(y)g(20\045)g(-)g(30\045)g +(or)f(more.)45 b(It)0 3248 y(is)36 b(imp)s(ortan)m(t)g(to)g(note,)i(ho) +m(w)m(ev)m(er,)h(that)d(compiler)g(optimization)i(m)m(ust)e(b)s(e)f +(turned)f(on)i(\(e.g.,)j(b)m(y)d(using)f(the)0 3361 y(-O1)f(or)g(-O2)g +(\015ags)g(in)g(gcc\))h(when)e(building)g(programs)h(that)g(use)g +(these)g(fast)g(b)m(yte-sw)m(apping)h(algorithms)f(in)0 +3474 y(order)d(to)h(reap)f(the)h(full)f(b)s(ene\014t)g(of)g(the)h +(SSSE3)e(and)h(SSE2)g(instructions;)h(without)f(optimization,)j(the)e +(co)s(de)0 3587 y(ma)m(y)f(actually)h(run)d(slo)m(w)m(er)i(than)f(when) +g(using)g(more)g(traditional)i(b)m(yte-sw)m(apping)f(tec)m(hniques.)0 +3747 y(2.)54 b(When)34 b(dealing)h(with)g(a)g(FITS)e(primary)h(arra)m +(y)h(or)g(IMA)m(GE)g(extension,)i(it)e(is)f(more)h(e\016cien)m(t)h(to)f +(read)g(or)0 3860 y(write)c(large)g(c)m(h)m(unks)f(of)g(the)h(image)g +(at)h(a)e(time)h(\(at)h(least)f(3)g(FITS)f(blo)s(c)m(ks)g(=)g(8640)i(b) +m(ytes\))f(so)g(that)g(the)f(direct)0 3973 y(IO)j(mec)m(hanism)h(will)f +(b)s(e)g(used)g(as)g(describ)s(ed)g(in)g(the)g(previous)g(section.)51 +b(Smaller)34 b(c)m(h)m(unks)f(of)g(data)h(are)g(read)0 +4086 y(or)d(written)g(via)h(the)f(IO)f(bu\013ers,)g(whic)m(h)h(is)g +(somewhat)g(less)g(e\016cien)m(t)i(b)s(ecause)e(of)g(the)g(extra)h(cop) +m(y)f(op)s(eration)0 4199 y(and)26 b(additional)h(b)s(o)s(okk)m(eeping) +g(steps)g(that)g(are)g(required.)39 b(In)26 b(principle)g(it)h(is)g +(more)f(e\016cien)m(t)i(to)g(read)e(or)h(write)0 4312 +y(as)i(big)g(an)g(arra)m(y)h(of)f(image)h(pixels)f(at)h(one)f(time)g +(as)h(p)s(ossible,)f(ho)m(w)m(ev)m(er,)h(if)f(the)h(arra)m(y)f(b)s +(ecomes)g(so)g(large)h(that)0 4425 y(the)i(op)s(erating)g(system)f +(cannot)h(store)g(it)g(all)h(in)e(RAM,)h(then)f(the)h(p)s(erformance)f +(ma)m(y)h(b)s(e)f(degraded)g(b)s(ecause)0 4538 y(of)g(the)f(increased)h +(sw)m(apping)f(of)g(virtual)h(memory)f(to)h(disk.)0 4698 +y(3.)51 b(When)33 b(dealing)i(with)e(FITS)g(tables,)j(the)e(most)g(imp) +s(ortan)m(t)g(e\016ciency)g(factor)h(in)e(the)h(soft)m(w)m(are)h +(design)f(is)0 4811 y(to)j(read)f(or)g(write)g(the)g(data)h(in)f(the)g +(FITS)g(\014le)g(in)g(a)g(single)h(pass)f(through)f(the)h(\014le.)58 +b(An)36 b(example)h(of)f(p)s(o)s(or)0 4924 y(program)g(design)h(w)m +(ould)f(b)s(e)g(to)h(read)g(a)f(large,)k(3-column)d(table)g(b)m(y)g +(sequen)m(tially)h(reading)f(the)f(en)m(tire)i(\014rst)0 +5036 y(column,)25 b(then)f(going)h(bac)m(k)f(to)h(read)e(the)h(2nd)g +(column,)h(and)e(\014nally)h(the)g(3rd)f(column;)j(this)e(ob)m(viously) +g(requires)0 5149 y(3)h(passes)f(through)f(the)i(\014le)f(whic)m(h)g +(could)h(triple)f(the)h(execution)g(time)g(of)g(an)f(I/O)g(limited)h +(program.)38 b(F)-8 b(or)25 b(small)0 5262 y(tables)31 +b(this)f(is)h(not)f(imp)s(ortan)m(t,)h(but)f(when)f(reading)h(m)m +(ulti-megab)m(yte)j(sized)e(tables)g(these)g(ine\016ciencies)h(can)0 +5375 y(b)s(ecome)d(signi\014can)m(t.)41 b(The)28 b(more)h(e\016cien)m +(t)h(pro)s(cedure)d(in)i(this)f(case)i(is)e(to)i(read)e(or)h(write)g +(only)f(as)h(man)m(y)g(ro)m(ws)0 5488 y(of)g(the)g(table)h(as)f(will)h +(\014t)e(in)m(to)i(the)g(a)m(v)-5 b(ailable)31 b(in)m(ternal)f(I/O)f +(bu\013ers,)f(then)h(access)h(all)g(the)f(necessary)g(columns)0 +5601 y(of)i(data)h(within)e(that)i(range)f(of)g(ro)m(ws.)43 +b(Then)29 b(after)j(the)f(program)g(is)g(completely)h(\014nished)e +(with)g(the)i(data)f(in)0 5714 y(those)i(ro)m(ws)e(it)i(can)f(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)f(\014t) +g(in)g(the)g(bu\013ers,)f(con)m(tin)m(uing)i(in)f(this)p +eop end +%%Page: 27 33 +TeXDict begin 27 32 bop 0 299 a Fg(4.13.)73 b(OPTIMIZING)29 +b(CODE)h(F)m(OR)h(MAXIMUM)g(PR)m(OCESSING)f(SPEED)971 +b Fi(27)0 555 y(w)m(a)m(y)28 b(un)m(til)f(the)f(en)m(tire)i(\014le)f +(has)f(b)s(een)g(pro)s(cessed.)39 b(By)27 b(using)f(this)h(pro)s +(cedure)e(of)i(accessing)h(all)g(the)e(columns)h(of)0 +668 y(a)j(table)g(in)f(parallel)h(rather)f(than)g(sequen)m(tially)-8 +b(,)32 b(eac)m(h)e(blo)s(c)m(k)g(of)g(the)f(FITS)g(\014le)g(will)g +(only)h(b)s(e)e(read)i(or)f(written)0 781 y(once.)0 941 +y(The)g(optimal)h(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f(to)i(read)e(or)g +(write)h(at)g(one)g(time)g(in)f(a)h(giv)m(en)g(table)h(dep)s(ends)c(on) +j(the)f(width)g(of)0 1054 y(the)j(table)h(ro)m(w,)g(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)j(in)e(FITSIO,)f(and)h(also)h(on)f(the)0 1167 +y(n)m(um)m(b)s(er)27 b(of)i(other)f(FITS)g(\014les)g(that)h(are)g(op)s +(en)f(at)h(the)g(same)g(time)g(\(since)g(one)g(I/O)f(bu\013er)f(is)i +(alw)m(a)m(ys)h(reserv)m(ed)0 1280 y(for)k(eac)m(h)h(op)s(en)f(FITS)f +(\014le\).)53 b(F)-8 b(ortunately)g(,)37 b(a)e(FITSIO)e(routine)h(is)h +(a)m(v)-5 b(ailable)36 b(that)f(will)f(return)g(the)g(optimal)0 +1393 y(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(for)g(a)g(giv)m(en)g(table:)49 +b(call)35 b(ftgrsz\(unit,)g(nro)m(ws,)f(status\).)52 +b(It)34 b(is)g(not)g(critical)h(to)g(use)e(exactly)0 +1506 y(the)f(v)-5 b(alue)32 b(of)f(nro)m(ws)g(returned)g(b)m(y)g(this)g +(routine,)h(as)g(long)g(as)g(one)g(do)s(es)f(not)h(exceed)g(it.)45 +b(Using)32 b(a)g(v)m(ery)f(small)0 1619 y(v)-5 b(alue)32 +b(ho)m(w)m(ev)m(er)i(can)e(also)h(lead)f(to)h(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)g(n)m(um)m(b)s(er)0 1732 y(of)f(subroutine)e(calls.)0 +1892 y(The)36 b(optimal)h(n)m(um)m(b)s(er)f(of)g(ro)m(ws)h(returned)e +(b)m(y)h(ftgrsz)h(is)g(v)-5 b(alid)37 b(only)f(as)h(long)g(as)g(the)f +(application)i(program)0 2005 y(is)c(only)h(reading)g(or)f(writing)g +(data)h(in)g(the)f(sp)s(eci\014ed)g(table.)54 b(An)m(y)34 +b(other)h(calls)g(to)g(access)h(data)f(in)f(the)h(table)0 +2118 y(header)26 b(w)m(ould)f(cause)i(additional)f(blo)s(c)m(ks)h(of)f +(data)g(to)h(b)s(e)e(loaded)h(in)m(to)h(the)f(I/O)g(bu\013ers)f +(displacing)h(data)g(from)0 2230 y(the)j(original)h(table,)g(and)e +(should)f(b)s(e)h(a)m(v)m(oided)i(during)e(the)h(critical)h(p)s(erio)s +(d)e(while)g(the)h(table)h(is)e(b)s(eing)g(read)h(or)0 +2343 y(written.)0 2503 y(4.)39 b(Use)24 b(binary)f(table)h(extensions)g +(rather)f(than)h(ASCI)s(I)e(table)i(extensions)g(for)f(b)s(etter)h +(e\016ciency)h(when)d(dealing)0 2616 y(with)37 b(tabular)h(data.)62 +b(The)37 b(I/O)g(to)h(ASCI)s(I)e(tables)i(is)g(slo)m(w)m(er)g(b)s +(ecause)g(of)f(the)h(o)m(v)m(erhead)h(in)e(formatting)h(or)0 +2729 y(parsing)30 b(the)h(ASCI)s(I)f(data)h(\014elds,)g(and)f(b)s +(ecause)h(ASCI)s(I)e(tables)i(are)g(ab)s(out)g(t)m(wice)h(as)f(large)h +(as)f(binary)f(tables)0 2842 y(with)g(the)h(same)f(information)h(con)m +(ten)m(t.)0 3002 y(5.)64 b(Design)39 b(soft)m(w)m(are)g(so)g(that)f(it) +h(reads)f(the)g(FITS)f(header)h(k)m(eyw)m(ords)g(in)g(the)g(same)h +(order)e(in)h(whic)m(h)g(they)0 3115 y(o)s(ccur)33 b(in)g(the)g +(\014le.)49 b(When)32 b(reading)i(k)m(eyw)m(ords,)g(FITSIO)e(searc)m +(hes)i(forw)m(ard)e(starting)i(from)e(the)i(p)s(osition)f(of)0 +3228 y(the)c(last)i(k)m(eyw)m(ord)e(that)h(w)m(as)g(read.)40 +b(If)29 b(it)g(reac)m(hes)i(the)e(end)g(of)g(the)h(header)f(without)g +(\014nding)f(the)h(k)m(eyw)m(ord,)h(it)0 3341 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)h +(the)g(searc)m(h)g(do)m(wn)f(to)h(the)g(p)s(osition)f(where)g(it)0 +3454 y(started.)41 b(In)30 b(practice,)i(as)e(long)h(as)g(the)f(en)m +(tire)i(FITS)d(header)h(can)h(\014t)f(at)h(one)g(time)g(in)f(the)g(a)m +(v)-5 b(ailable)33 b(in)m(ternal)0 3567 y(I/O)g(bu\013ers,)h(then)f +(the)h(header)f(k)m(eyw)m(ord)h(access)h(will)e(b)s(e)g(v)m(ery)h(fast) +g(and)f(it)h(mak)m(es)g(little)h(di\013erence)f(whic)m(h)0 +3680 y(order)c(they)g(are)h(accessed.)0 3840 y(6.)40 +b(Av)m(oid)29 b(the)e(use)h(of)f(scaling)i(\(b)m(y)f(using)f(the)h +(BSCALE)e(and)h(BZER)m(O)h(or)f(TSCAL)g(and)g(TZER)m(O)f(k)m(eyw)m +(ords\))0 3953 y(in)35 b(FITS)f(\014les)g(since)i(the)f(scaling)h(op)s +(erations)f(add)f(to)i(the)f(pro)s(cessing)f(time)i(needed)e(to)i(read) +f(or)g(write)g(the)0 4066 y(data.)60 b(In)36 b(some)i(cases)f(it)g(ma)m +(y)h(b)s(e)e(more)h(e\016cien)m(t)h(to)f(temp)s(orarily)g(turn)f(o\013) +h(the)g(scaling)h(\(using)e(ftpscl)h(or)0 4179 y(fttscl\))32 +b(and)d(then)h(read)h(or)f(write)h(the)f(ra)m(w)h(unscaled)f(v)-5 +b(alues)31 b(in)f(the)g(FITS)g(\014le.)0 4339 y(7.)40 +b(Av)m(oid)27 b(using)g(the)g('implicit)h(datat)m(yp)s(e)f(con)m(v)m +(ersion')h(capabilit)m(y)h(in)d(FITSIO.)g(F)-8 b(or)28 +b(instance,)g(when)e(reading)0 4452 y(a)f(FITS)e(image)j(with)e(BITPIX) +g(=)g(-32)i(\(32-bit)g(\015oating)f(p)s(oin)m(t)f(pixels\),)j(read)d +(the)h(data)g(in)m(to)g(a)g(single)g(precision)0 4565 +y(\015oating)e(p)s(oin)m(t)e(data)i(arra)m(y)f(in)g(the)g(program.)37 +b(F)-8 b(orcing)23 b(FITSIO)e(to)h(con)m(v)m(ert)i(the)e(data)g(to)h(a) +f(di\013eren)m(t)g(datat)m(yp)s(e)0 4678 y(can)31 b(signi\014can)m(tly) +g(slo)m(w)g(the)g(program.)0 4838 y(8.)57 b(Where)36 +b(feasible,)i(design)e(FITS)f(binary)g(tables)h(using)f(v)m(ector)j +(column)d(elemen)m(ts)i(so)f(that)g(the)g(data)h(are)0 +4951 y(written)30 b(as)g(a)g(con)m(tiguous)h(set)f(of)g(b)m(ytes,)g +(rather)g(than)f(as)h(single)g(elemen)m(ts)h(in)f(m)m(ultiple)g(ro)m +(ws.)41 b(F)-8 b(or)30 b(example,)0 5064 y(it)36 b(is)g(faster)g(to)g +(access)h(the)f(data)h(in)e(a)h(table)h(that)f(con)m(tains)h(a)f +(single)g(ro)m(w)g(and)f(2)h(columns)f(with)h(TF)m(ORM)0 +5176 y(k)m(eyw)m(ords)d(equal)h(to)g('10000E')h(and)e('10000J',)j(than) +d(it)g(is)g(to)h(access)g(the)g(same)f(amoun)m(t)h(of)f(data)h(in)f(a)g +(table)0 5289 y(with)40 b(10000)j(ro)m(ws)d(whic)m(h)h(has)f(columns)g +(with)g(the)h(TF)m(ORM)g(k)m(eyw)m(ords)g(equal)g(to)g('1E')h(and)e +('1J'.)h(In)f(the)0 5402 y(former)27 b(case)i(the)f(10000)i(\015oating) +f(p)s(oin)m(t)f(v)-5 b(alues)28 b(in)g(the)g(\014rst)f(column)h(are)g +(all)h(written)f(in)f(a)h(con)m(tiguous)h(blo)s(c)m(k)0 +5515 y(of)d(the)f(\014le)h(whic)m(h)f(can)h(b)s(e)f(read)g(or)g +(written)h(quic)m(kly)-8 b(,)28 b(whereas)d(in)g(the)h(second)f(case)i +(eac)m(h)g(\015oating)f(p)s(oin)m(t)f(v)-5 b(alue)0 5628 +y(in)34 b(the)g(\014rst)f(column)g(is)h(in)m(terlea)m(v)m(ed)j(with)c +(the)h(in)m(teger)i(v)-5 b(alue)34 b(in)g(the)g(second)g(column)f(of)h +(the)g(same)h(ro)m(w)f(so)p eop end +%%Page: 28 34 +TeXDict begin 28 33 bop 0 299 a Fi(28)1277 b Fg(CHAPTER)29 +b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 +555 y Fi(CFITSIO)e(has)h(to)h(explicitly)h(mo)m(v)m(e)g(to)f(the)g(p)s +(osition)f(of)h(eac)m(h)g(elemen)m(t)h(to)f(b)s(e)f(read)g(or)g +(written.)0 715 y(9.)52 b(Av)m(oid)35 b(the)g(use)e(of)i(v)-5 +b(ariable)34 b(length)h(v)m(ector)h(columns)d(in)h(binary)g(tables,)i +(since)e(an)m(y)h(reading)f(or)g(writing)0 828 y(of)f(these)g(data)g +(requires)f(that)h(CFITSIO)f(\014rst)f(lo)s(ok)j(up)d(or)i(compute)g +(the)f(starting)i(address)e(of)g(eac)m(h)i(ro)m(w)f(of)0 +941 y(data)e(in)f(the)h(heap.)40 b(In)30 b(practice,)i(this)e(is)g +(probably)g(not)h(a)f(signi\014can)m(t)i(e\016ciency)f(issue.)0 +1101 y(10.)39 b(When)24 b(cop)m(ying)h(data)f(from)f(one)i(FITS)e +(table)h(to)h(another,)g(it)g(is)f(faster)g(to)g(transfer)f(the)h(ra)m +(w)g(b)m(ytes)h(instead)0 1214 y(of)h(reading)g(then)g(writing)g(eac)m +(h)h(column)e(of)i(the)f(table.)40 b(The)25 b(FITSIO)g(subroutines)g +(FTGTBS)g(and)h(FTPTBS)0 1327 y(\(for)i(ASCI)s(I)f(tables\),)j(and)d +(FTGTBB)i(and)e(FTPTBB)i(\(for)f(binary)f(tables\))i(will)g(p)s(erform) +d(lo)m(w-lev)m(el)31 b(reads)d(or)0 1440 y(writes)34 +b(of)h(an)m(y)f(con)m(tiguous)i(range)f(of)f(b)m(ytes)h(in)f(a)h(table) +g(extension.)53 b(These)34 b(routines)g(can)h(b)s(e)e(used)h(to)h(read) +0 1553 y(or)29 b(write)g(a)g(whole)g(ro)m(w)f(\(or)i(m)m(ultiple)f(ro)m +(ws\))g(of)g(a)g(table)h(with)e(a)h(single)g(subroutine)f(call.)41 +b(These)29 b(routines)g(are)0 1666 y(fast)38 b(b)s(ecause)f(they)h(b)m +(ypass)f(all)h(the)g(usual)f(data)h(scaling,)j(error)c(c)m(hec)m(king)i +(and)e(mac)m(hine)h(dep)s(enden)m(t)e(data)0 1779 y(con)m(v)m(ersion)41 +b(that)g(is)e(normally)i(done)e(b)m(y)h(FITSIO,)f(and)g(they)h(allo)m +(w)h(the)f(program)g(to)h(write)f(the)g(data)g(to)0 1892 +y(the)34 b(output)g(\014le)g(in)g(exactly)i(the)e(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)f(can)0 2005 y(b)s(e)f(somewhat)h(risky)f(b)s(ecause)g(no)g +(v)-5 b(alidation)35 b(or)f(mac)m(hine)g(dep)s(enden)m(t)e(con)m(v)m +(ersion)j(is)e(p)s(erformed)f(b)m(y)h(these)0 2118 y(routines.)40 +b(In)27 b(general)h(these)h(routines)e(are)h(only)g(recommended)f(for)h +(optimizing)h(critical)g(pieces)g(of)f(co)s(de)g(and)0 +2230 y(should)e(only)i(b)s(e)f(used)f(b)m(y)i(programmers)e(who)h +(thoroughly)h(understand)d(the)j(in)m(ternal)g(b)m(yte)g(structure)f +(of)h(the)0 2343 y(FITS)i(tables)h(they)f(are)h(reading)g(or)f +(writing.)0 2503 y(11.)41 b(Another)30 b(strategy)g(for)g(impro)m(ving) +f(the)h(sp)s(eed)e(of)i(writing)g(a)f(FITS)g(table,)i(similar)f(to)g +(the)f(previous)g(one,)0 2616 y(is)j(to)g(directly)h(construct)f(the)f +(en)m(tire)i(b)m(yte)f(stream)g(for)g(a)g(whole)g(table)g(ro)m(w)g +(\(or)g(m)m(ultiple)h(ro)m(ws\))f(within)f(the)0 2729 +y(application)k(program)f(and)g(then)f(write)i(it)f(to)h(the)f(FITS)f +(\014le)i(with)e(ftptbb.)51 b(This)33 b(a)m(v)m(oids)j(all)f(the)f(o)m +(v)m(erhead)0 2842 y(normally)g(presen)m(t)g(in)f(the)h(column-orien)m +(ted)h(CFITSIO)d(write)i(routines.)51 b(This)33 b(tec)m(hnique)h +(should)f(only)h(b)s(e)0 2955 y(used)26 b(for)h(critical)i +(applications,)g(b)s(ecause)d(it)i(mak)m(es)g(the)f(co)s(de)g(more)g +(di\016cult)g(to)g(understand)e(and)i(main)m(tain,)0 +3068 y(and)d(it)h(mak)m(es)h(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 3181 y(to)31 b(the)g(FITS)e +(\014le?\).)0 3341 y(12.)53 b(Finally)-8 b(,)37 b(external)e(factors)h +(suc)m(h)e(as)g(the)h(t)m(yp)s(e)f(of)h(magnetic)g(disk)f(con)m +(troller)i(\(SCSI)d(or)i(IDE\),)g(the)f(size)0 3454 y(of)h(the)g(disk)g +(cac)m(he,)j(the)d(a)m(v)m(erage)i(seek)f(sp)s(eed)e(of)h(the)g(disk,)h +(the)f(amoun)m(t)h(of)f(disk)f(fragmen)m(tation,)k(and)d(the)0 +3567 y(amoun)m(t)29 b(of)g(RAM)f(a)m(v)-5 b(ailable)31 +b(on)e(the)f(system)h(can)g(all)g(ha)m(v)m(e)h(a)f(signi\014can)m(t)g +(impact)h(on)e(o)m(v)m(erall)j(I/O)d(e\016ciency)-8 b(.)0 +3680 y(F)g(or)36 b(critical)h(applications,)g(a)f(system)f +(administrator)g(should)f(review)h(the)h(prop)s(osed)d(system)j(hardw)m +(are)e(to)0 3793 y(iden)m(tify)d(an)m(y)g(p)s(oten)m(tial)g(I/O)g(b)s +(ottlenec)m(ks.)p eop end +%%Page: 29 35 +TeXDict begin 29 34 bop 0 1225 a Ff(Chapter)65 b(5)0 +1687 y Fl(Basic)77 b(In)-6 b(terface)77 b(Routines)0 +2180 y Fi(This)27 b(section)h(de\014nes)f(a)h(basic)g(set)g(of)g +(subroutines)e(that)i(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)h(op)s +(erations)g(on)g(FITS)f(\014les.)39 b(New)25 b(users)f(should)g(start)h +(with)g(these)g(subroutines)f(and)g(then,)0 2406 y(as)33 +b(needed,)h(explore)f(the)h(more)f(adv)-5 b(ance)33 b(routines)g +(describ)s(ed)f(in)h(the)g(follo)m(wing)i(c)m(hapter)e(to)h(p)s(erform) +e(more)0 2518 y(complex)f(or)f(sp)s(ecialized)i(op)s(erations.)0 +2679 y(A)e(righ)m(t)g(arro)m(w)g(sym)m(b)s(ol)f(\()p +Fa(>)p Fi(\))h(is)g(used)f(to)h(separate)h(the)e(input)g(parameters)h +(from)f(the)h(output)f(parameters)h(in)0 2791 y(the)i(de\014nition)f +(of)g(eac)m(h)i(routine.)44 b(This)30 b(sym)m(b)s(ol)i(is)f(not)h +(actually)h(part)e(of)h(the)f(calling)i(sequence.)45 +b(Note)32 b(that)0 2904 y(the)f(status)h(parameter)g(is)f(b)s(oth)g(an) +g(input)f(and)h(an)g(output)g(parameter)h(and)e(m)m(ust)h(b)s(e)g +(initialized)i(=)e(0)h(prior)0 3017 y(to)f(calling)h(the)f(FITSIO)e +(subroutines.)0 3177 y(Refer)h(to)i(Chapter)d(9)i(for)f(the)h +(de\014nition)f(of)g(all)i(the)e(parameters)h(used)e(b)m(y)i(these)g +(in)m(terface)g(routines.)0 3525 y Fd(5.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)h(n)m(um)m(b)s(er)e(of)i(the)f +(\014tsio)h(library)-8 b(.)39 b(The)25 b(v)m(ersion)h(n)m(um)m(b)s(er)e +(will)i(b)s(e)e(incremen)m(ted)227 3886 y(with)30 b(eac)m(h)i(new)e +(release)h(of)g(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)g(text)g(string)g +(corresp)s(onding)e(to)i(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)f(string)f(con)m +(tains)i(a)f(brief)f(description)g(of)g(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\))h(80-c)m +(haracter)i(error)c(message)i(from)f(the)g(in)m(ternal)g(FITSIO)f(stac) +m(k)i(of)f(error)227 5197 y(messages)29 b(and)f(shift)g(an)m(y)g +(remaining)g(messages)h(on)f(the)g(stac)m(k)i(up)d(one)h(lev)m(el.)42 +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)28 +b(this)f(routine)g(rep)s(eatedly)g(to)h(get)h(eac)m(h)f(message)227 +5422 y(in)i(sequence.)41 b(The)30 b(error)g(stac)m(k)i(is)f(empt)m(y)f +(when)g(a)g(blank)g(string)h(is)f(returned.)382 5694 +y Fe(FTGMSG\()46 b(>)h(errmsg\))1905 5942 y Fi(29)p eop +end +%%Page: 30 36 +TeXDict begin 30 35 bop 0 299 a Fi(30)1747 b Fg(CHAPTER)30 +b(5.)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)g(puts)g(an)g(in)m +(visible)h(mark)m(er)f(on)g(the)h(CFITSIO)d(error)i(stac)m(k.)54 +b(The)33 b(FTCMRK)227 668 y(routine)41 b(can)g(then)g(b)s(e)f(used)g +(to)h(delete)h(an)m(y)f(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)f(of)g(the)g +(mark)m(er.)43 b(This)31 b(preserv)m(es)g(an)m(y)g(older)h(error)e +(messages)i(on)f(the)h(stac)m(k.)44 b(FTCMSG)227 894 +y(simply)23 b(clears)g(the)g(en)m(tire)h(error)e(message)i(stac)m(k.)40 +b(These)23 b(routines)f(are)h(called)h(without)f(an)m(y)g(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)30 b(out)h(the)g(error)f +(message)i(corresp)s(onding)e(to)h(the)g(input)f(status)h(v)-5 +b(alue)31 b(and)f(all)i(the)f(error)f(messages)227 1750 +y(on)g(the)h(FITSIO)e(stac)m(k)i(to)g(the)g(sp)s(eci\014ed)e(\014le)i +(stream)f(\(stream)h(can)g(b)s(e)e(either)i(the)f(string)g('STDOUT')227 +1863 y(or)h('STDERR'\).)f(If)g(the)h(input)e(status)i(v)-5 +b(alue)31 b(=)f(0)h(then)f(this)g(routine)g(do)s(es)g(nothing.)334 +2121 y Fe(FTRPRT)46 b(\(stream,)g(>)h(status\))0 2380 +y Fh(6)81 b Fi(W)-8 b(rite)39 b(an)f(80-c)m(haracter)j(message)e(to)g +(the)f(FITSIO)f(error)h(stac)m(k.)65 b(Application)39 +b(programs)f(should)f(not)227 2493 y(normally)31 b(write)f(to)i(the)e +(stac)m(k,)i(but)e(there)g(ma)m(y)h(b)s(e)f(some)h(situations)g(where)f +(this)g(is)h(desirable.)382 2751 y Fe(FTPMSG\(errmsg\))0 +3085 y Fd(5.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)i(FITS)d(\014le)i(with)f +(readonly)h(or)f(readwrite)h(access.)58 b(This)34 b(routine)i(alw)m(a)m +(ys)h(op)s(ens)e(the)227 3438 y(primary)30 b(arra)m(y)i(\(the)f +(\014rst)f(HDU\))i(of)f(the)h(\014le,)f(and)f(do)s(es)h(not)g(mo)m(v)m +(e)h(to)g(a)f(follo)m(wing)i(extension,)f(if)f(one)227 +3551 y(w)m(as)c(sp)s(eci\014ed)f(as)g(part)h(of)f(the)h(\014lename.)39 +b(Use)27 b(the)g(FTNOPN)f(routine)g(to)h(automatically)j(mo)m(v)m(e)e +(to)f(the)227 3664 y(extension.)44 b(This)31 b(routine)g(will)h(also)g +(op)s(en)f(IRAF)g(images)i(\(.imh)e(format)h(\014les\))g(and)e(ra)m(w)i +(binary)e(data)227 3776 y(arra)m(ys)e(with)f(READONL)-8 +b(Y)28 b(access)h(b)m(y)e(\014rst)g(con)m(v)m(erting)i(them)e(on)g(the) +h(\015y)f(in)m(to)h(virtual)g(FITS)f(images.)227 3889 +y(See)39 b(the)f(`Extended)g(File)h(Name)g(Syn)m(tax')f(c)m(hapter)h +(for)f(more)g(details.)65 b(The)38 b(FTDK)m(OPEN)g(routine)227 +4002 y(simply)f(op)s(ens)g(the)h(sp)s(eci\014ed)f(\014le)h(without)f +(trying)h(to)g(in)m(terpret)g(the)g(\014lename)g(using)f(the)h +(extended)227 4115 y(\014lename)31 b(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)h(FITS)e(\014le)h(with)f(readonly)h(or)g(readwrite)g +(access)h(and)f(mo)m(v)m(e)h(to)f(a)h(follo)m(wing)g(extension,)227 +4858 y(if)38 b(one)g(w)m(as)g(sp)s(eci\014ed)g(as)g(part)f(of)h(the)h +(\014lename.)63 b(\(e.g.,)42 b('\014lename.\014ts+2')c(or)g +('\014lename.\014ts[2]')i(will)227 4971 y(mo)m(v)m(e)e(to)g(the)e(3rd)g +(HDU)i(in)e(the)h(\014le\).)60 b(Note)37 b(that)h(this)e(routine)h +(di\013ers)f(from)g(FTOPEN)g(in)g(that)h(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) +j(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)h +(FITS)f(\014le)g(with)g(readonly)h(or)f(readwrite)h(access)g(and)f +(then)g(mo)m(v)m(e)i(to)f(the)g(\014rst)e(HDU)227 5714 +y(con)m(taining)c(signi\014can)m(t)g(data,)g(if)e(a\))i(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)h(sp)s(eci\014ed)p eop end +%%Page: 31 37 +TeXDict begin 31 36 bop 0 299 a Fg(5.2.)72 b(FILE)30 +b(I/O)h(R)m(OUTINES)2693 b Fi(31)227 555 y(as)31 b(part)g(of)g(the)g +(\014lename,)h(and)e(b\))h(if)g(the)g(FITS)f(\014le)h(con)m(tains)h(a)g +(n)m(ull)e(primary)g(arra)m(y)i(\(i.e.,)h(NAXIS)d(=)227 +668 y(0\).)41 b(In)26 b(this)i(case,)h(it)f(will)g(lo)s(ok)g(for)f(the) +h(\014rst)e(IMA)m(GE)j(HDU)f(with)f(NAXIS)g(>)h(0,)g(or)g(the)f +(\014rst)g(table)h(that)227 781 y(do)s(es)g(not)g(con)m(tain)g(the)g +(strings)g(`GTI')g(\(Go)s(o)s(d)f(Time)h(In)m(terv)-5 +b(al\))29 b(or)f(`OBST)-8 b(ABLE')28 b(in)f(the)h(EXTNAME)227 +894 y(k)m(eyw)m(ord)37 b(v)-5 b(alue.)61 b(FTTOPN)36 +b(is)g(similar,)j(except)f(it)f(will)g(mo)m(v)m(e)i(to)e(the)g(\014rst) +f(signi\014can)m(t)i(table)f(HDU)227 1007 y(\(skipping)26 +b(o)m(v)m(er)g(an)m(y)g(image)h(HDUs\))g(in)e(the)h(\014le)g(if)f(a)h +(sp)s(eci\014c)g(HDU)g(name)g(or)g(n)m(um)m(b)s(er)e(is)i(not)f(sp)s +(eci\014ed.)227 1120 y(FTIOPN)30 b(will)h(mo)m(v)m(e)h(to)f(the)f +(\014rst)g(non-n)m(ull)g(image)i(HDU,)f(skipping)f(o)m(v)m(er)h(an)m(y) +g(tables.)382 1376 y Fe(FTDOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))382 1489 y(FTTOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))382 1602 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))0 1858 y Fh(4)81 b Fi(Op)s(en)38 b(and)i(initialize)j +(a)e(new)e(empt)m(y)i(FITS)f(\014le.)70 b(A)41 b(template)h(\014le)e +(ma)m(y)h(also)g(b)s(e)f(sp)s(eci\014ed)g(to)h(de\014ne)227 +1971 y(the)34 b(structure)e(of)h(the)h(new)e(\014le)h(\(see)h(section)g +(4.2.4\).)51 b(The)33 b(FTDKINIT)g(routine)g(simply)f(creates)j(the)227 +2084 y(sp)s(eci\014ed)30 b(\014le)g(without)h(trying)f(to)h(in)m +(terpret)g(the)g(\014lename)f(using)g(the)h(extended)f(\014lename)h +(syn)m(tax.)382 2340 y Fe(FTINIT\(unit,filename,blo)o(cks)o(ize,)41 +b(>)48 b(status\))382 2453 y(FTDKINIT\(unit,filename,b)o(loc)o(ksiz)o +(e,)42 b(>)47 b(status\))0 2709 y Fh(5)81 b Fi(Close)31 +b(a)f(FITS)g(\014le)g(previously)g(op)s(ened)g(with)g(ftop)s(en)g(or)g +(ftinit)382 2965 y Fe(FTCLOS\(unit,)44 b(>)k(status\))0 +3221 y Fh(6)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)f +(\(absolute\))h(HDU)g(in)g(the)f(FITS)g(\014le)g(\(nhdu)f(=)h(1)h(for)f +(the)g(FITS)g(primary)f(arra)m(y\))382 3478 y Fe(FTMAHD\(unit,nhdu,)43 +b(>)k(hdutype,status\))0 3734 y Fh(7)81 b Fi(Create)30 +b(a)f(primary)f(arra)m(y)i(\(if)g(none)f(already)g(exists\),)i(or)e +(insert)g(a)h(new)f(IMA)m(GE)h(extension)g(immediately)227 +3847 y(follo)m(wing)25 b(the)e(CHDU,)g(or)g(insert)g(a)g(new)g(Primary) +f(Arra)m(y)h(at)h(the)f(b)s(eginning)f(of)h(the)g(\014le.)38 +b(An)m(y)23 b(follo)m(wing)227 3960 y(extensions)29 b(in)g(the)g +(\014le)f(will)h(b)s(e)f(shifted)h(do)m(wn)f(to)h(mak)m(e)h(ro)s(om)e +(for)h(the)g(new)f(extension.)40 b(If)29 b(the)g(CHDU)227 +4072 y(is)h(the)g(last)g(HDU)g(in)g(the)f(\014le)h(then)f(the)h(new)f +(image)i(extension)f(will)g(simply)f(b)s(e)g(app)s(ended)f(to)i(the)g +(end)227 4185 y(of)k(the)h(\014le.)52 b(One)33 b(can)h(force)h(a)g(new) +e(primary)g(arra)m(y)i(to)g(b)s(e)e(inserted)h(at)h(the)f(b)s(eginning) +f(of)h(the)h(FITS)227 4298 y(\014le)29 b(b)m(y)f(setting)i(status)e(=)h +(-9)g(prior)e(to)j(calling)g(the)e(routine.)40 b(In)28 +b(this)g(case)i(the)e(existing)i(primary)d(arra)m(y)227 +4411 y(will)f(b)s(e)f(con)m(v)m(erted)i(to)g(an)e(IMA)m(GE)h +(extension.)40 b(The)25 b(new)g(extension)i(\(or)f(primary)e(arra)m +(y\))j(will)f(b)s(ecome)227 4524 y(the)32 b(CHDU.)f(The)g(FTI)s(IMGLL)f +(routine)i(is)f(iden)m(tical)i(to)e(the)h(FTI)s(IMG)f(routine)g(except) +h(that)f(the)h(4th)227 4637 y(parameter)25 b(\(the)g(length)g(of)f(eac) +m(h)h(axis\))g(is)g(an)f(arra)m(y)h(of)f(64-bit)i(in)m(tegers)f(rather) +f(than)g(an)g(arra)m(y)h(of)g(32-bit)227 4750 y(in)m(tegers.)382 +5006 y Fe(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 +b(status\))382 5119 y(FTIIMGLL\(unit,bitpix,nax)o(is,)o(naxe)o(sll,)41 +b(>)47 b(status\))0 5375 y Fh(8)81 b Fi(Insert)30 b(a)i(new)f(ASCI)s(I) +f(T)-8 b(ABLE)31 b(extension)h(immediately)h(follo)m(wing)f(the)g +(CHDU.)g(An)m(y)f(follo)m(wing)i(exten-)227 5488 y(sions)26 +b(will)g(b)s(e)f(shifted)g(do)m(wn)g(to)h(mak)m(e)h(ro)s(om)e(for)h +(the)f(new)g(extension.)40 b(If)25 b(there)h(are)g(no)g(other)f(follo)m +(wing)227 5601 y(extensions)32 b(then)f(the)h(new)f(table)h(extension)g +(will)g(simply)f(b)s(e)g(app)s(ended)f(to)i(the)f(end)g(of)h(the)f +(\014le.)44 b(The)227 5714 y(new)33 b(extension)h(will)f(b)s(ecome)h +(the)f(CHDU.)h(The)f(FTIT)-8 b(ABLL)33 b(routine)g(is)g(iden)m(tical)i +(to)f(the)g(FTIT)-8 b(AB)p eop end +%%Page: 32 38 +TeXDict begin 32 37 bop 0 299 a Fi(32)1747 b Fg(CHAPTER)30 +b(5.)111 b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)227 +555 y Fi(routine)36 b(except)g(that)g(the)f(2nd)g(and)g(3rd)g +(parameters)g(\(that)i(giv)m(e)g(the)e(size)h(of)g(the)f(table\))i(are) +f(64-bit)227 668 y(in)m(tegers)43 b(rather)f(than)f(32-bit)i(in)m +(tegers.)76 b(Under)41 b(normal)g(circumstances,)46 b(the)c(nro)m(ws)f +(and)g(nro)m(wsll)227 781 y(paramen)m(ters)f(should)e(ha)m(v)m(e)j(a)f +(v)-5 b(alue)40 b(of)f(0;)45 b(CFITSIO)38 b(will)h(automatically)k(up)s +(date)38 b(the)i(n)m(um)m(b)s(er)e(of)227 894 y(ro)m(ws)31 +b(as)f(data)h(is)g(written)f(to)h(the)g(table.)382 1158 +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 1271 +y(status\))382 1384 y(FTITABLL\(unit,rowlenll,n)o(row)o(sll,)o(tfie)o +(lds)o(,tty)o(pe,t)o(bco)o(l,tf)o(orm,)o(tun)o(it,e)o(xtna)o(me,)f(>) +716 1497 y(status\))0 1761 y Fh(9)81 b Fi(Insert)26 b(a)h(new)g(binary) +f(table)h(extension)h(immediately)g(follo)m(wing)h(the)e(CHDU.)g(An)m +(y)g(follo)m(wing)h(extensions)227 1874 y(will)39 b(b)s(e)f(shifted)g +(do)m(wn)g(to)h(mak)m(e)g(ro)s(om)g(for)f(the)g(new)g(extension.)66 +b(If)38 b(there)h(are)f(no)h(other)f(follo)m(wing)227 +1987 y(extensions)f(then)g(the)f(new)g(bin)m(table)h(extension)h(will)f +(simply)f(b)s(e)g(app)s(ended)e(to)k(the)e(end)g(of)h(the)g(\014le.)227 +2100 y(The)23 b(new)g(extension)h(will)f(b)s(ecome)h(the)f(CHDU.)h(The) +f(FTIBINLL)g(routine)g(is)g(iden)m(tical)i(to)f(the)g(FTIBIN)227 +2213 y(routine)30 b(except)i(that)e(the)h(2nd)e(parameter)i(\(that)g +(giv)m(es)g(the)g(length)f(of)h(the)f(table\))h(is)g(a)f(64-bit)i(in)m +(teger)227 2325 y(rather)24 b(than)g(a)g(32-bit)h(in)m(teger.)40 +b(Under)23 b(normal)h(circumstances,)i(the)e(nro)m(ws)f(and)h(nro)m +(wsll)g(paramen)m(ters)227 2438 y(should)31 b(ha)m(v)m(e)i(a)f(v)-5 +b(alue)32 b(of)f(0;)i(CFITSIO)d(will)i(automatically)j(up)s(date)30 +b(the)i(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(as)g(data)g(is)227 +2551 y(written)f(to)g(the)f(table.)382 2815 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\))382 2928 +y(FTIBINLL\(unit,nrowsll,tf)o(iel)o(ds,t)o(type)o(,tf)o(orm,)o(tuni)o +(t,e)o(xtna)o(me,v)o(ari)o(dat)41 b(>)48 b(status\))0 +3380 y Fd(5.3)135 b(Keyw)l(ord)46 b(I/O)f(Routines)0 +3624 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)g(the)g(CHU.)382 3888 y Fe(FTPREC\(unit,card,)43 +b(>)k(status\))0 4152 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)g(datat)m(yp)s(e)h(in)m(to)g +(the)f(CHU.)g(The)f(E)h(and)f(D)i(v)m(ersions)227 4265 +y(of)24 b(this)f(routine)g(ha)m(v)m(e)h(the)g(added)e(feature)i(that)g +(if)f(the)g('decimals')i(parameter)f(is)f(negativ)m(e,)k(then)c(the)g +('G')227 4378 y(displa)m(y)30 b(format)g(rather)f(then)g(the)h('E')f +(format)h(will)g(b)s(e)f(used)f(when)h(constructing)h(the)f(k)m(eyw)m +(ord)h(v)-5 b(alue,)227 4490 y(taking)27 b(the)g(absolute)g(v)-5 +b(alue)26 b(of)h('decimals')g(for)f(the)h(precision.)39 +b(This)26 b(will)g(suppress)e(trailing)k(zeros,)g(and)227 +4603 y(will)37 b(use)g(a)g(\014xed)f(format)h(rather)g(than)f(an)h(exp) +s(onen)m(tial)g(format,)i(dep)s(ending)c(on)i(the)g(magnitude)g(of)227 +4716 y(the)31 b(v)-5 b(alue.)382 4980 y Fe(FTPKY[JKLS]\(unit,keyword)o +(,ke)o(yval)o(,com)o(men)o(t,)42 b(>)47 b(status\))382 +5093 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 5357 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)e(the)h(header)g(is)g(at)227 +5470 y(k)m(ey)p 365 5470 28 4 v 34 w(no)42 b(=)f(1;)49 +b(if)42 b(k)m(ey)p 996 5470 V 34 w(no)g(=)f(0)i(then)e(this)h +(subroutine)f(simple)h(mo)m(v)m(es)i(the)e(in)m(ternal)h(p)s(oin)m(ter) +f(to)h(the)227 5583 y(b)s(eginning)35 b(of)h(the)g(header)f(so)h(that)g +(subsequen)m(t)f(k)m(eyw)m(ord)h(op)s(erations)g(will)g(start)g(at)g +(the)g(top)g(of)g(the)227 5696 y(header;)31 b(it)g(also)g(returns)e(a)i +(blank)f(card)g(v)-5 b(alue)31 b(in)f(this)g(case.)p +eop end +%%Page: 33 39 +TeXDict begin 33 38 bop 0 299 a Fg(5.4.)72 b(D)m(A)-8 +b(T)g(A)32 b(I/O)f(R)m(OUTINES)2650 b Fi(33)382 555 y +Fe(FTGREC\(unit,key_no,)42 b(>)48 b(card,status\))0 804 +y Fh(4)81 b Fi(Get)31 b(a)g(k)m(eyw)m(ord)g(v)-5 b(alue)30 +b(\(with)h(the)f(appropriate)h(datat)m(yp)s(e\))g(and)f(commen)m(t)i +(from)e(the)g(CHU)382 1052 y Fe(FTGKY[EDJKLS]\(unit,keywo)o(rd,)41 +b(>)48 b(keyval,comment,status\))0 1301 y Fh(5)81 b Fi(Delete)32 +b(an)e(existing)i(k)m(eyw)m(ord)f(record.)382 1550 y +Fe(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 1881 +y Fd(5.4)135 b(Data)46 b(I/O)g(Routines)0 2132 y Fi(The)32 +b(follo)m(wing)i(routines)e(read)h(or)f(write)h(data)g(v)-5 +b(alues)33 b(in)f(the)h(curren)m(t)f(HDU)i(of)e(the)h(FITS)f(\014le.)47 +b(Automatic)0 2245 y(datat)m(yp)s(e)28 b(con)m(v)m(ersion)h(will)e(b)s +(e)g(attempted)h(for)g(n)m(umerical)f(datat)m(yp)s(es)i(if)e(the)g(sp)s +(eci\014ed)g(datat)m(yp)s(e)h(is)f(di\013eren)m(t)0 2357 +y(from)j(the)g(actual)i(datat)m(yp)s(e)g(of)e(the)h(FITS)e(arra)m(y)i +(or)f(table)i(column.)0 2606 y Fh(1)81 b Fi(W)-8 b(rite)31 +b(elemen)m(ts)h(in)m(to)f(the)g(primary)e(data)j(arra)m(y)e(or)h(image) +g(extension.)382 2855 y Fe(FTPPR[BIJKED]\(unit,group)o(,fp)o(ixel)o +(,nel)o(eme)o(nts,)o(valu)o(es,)41 b(>)48 b(status\))0 +3103 y Fh(2)81 b Fi(Read)30 b(elemen)m(ts)j(from)d(the)h(primary)e +(data)j(arra)m(y)f(or)g(image)h(extension.)42 b(Unde\014ned)29 +b(arra)m(y)j(elemen)m(ts)g(will)227 3216 y(b)s(e)f(returned)f(with)h(a) +h(v)-5 b(alue)31 b(=)g(n)m(ullv)-5 b(al,)33 b(unless)d(n)m(ullv)-5 +b(al)32 b(=)f(0)h(in)f(whic)m(h)g(case)h(no)f(c)m(hec)m(ks)i(for)e +(unde\014ned)227 3329 y(pixels)h(will)f(b)s(e)f(p)s(erformed.)42 +b(The)30 b(an)m(yf)i(parameter)f(is)g(set)h(to)g(true)f(\(=)g(.true.\)) +43 b(if)31 b(an)m(y)h(of)f(the)g(returned)227 3442 y(elemen)m(ts)h(w)m +(ere)f(unde\014ned.)382 3691 y Fe(FTGPV[BIJKED]\(unit,group)o(,fp)o +(ixel)o(,nel)o(eme)o(nts,)o(null)o(val)o(,)42 b(>)47 +b(values,anyf,status\))0 3939 y Fh(3)81 b Fi(W)-8 b(rite)36 +b(elemen)m(ts)h(in)m(to)f(an)f(ASCI)s(I)e(or)i(binary)g(table)h +(column.)54 b(The)35 b(`felem')h(parameter)g(applies)f(only)g(to)227 +4052 y(v)m(ector)d(columns)e(in)g(binary)g(tables)h(and)f(is)g(ignored) +h(when)e(writing)i(to)g(ASCI)s(I)d(tables.)382 4301 y +Fe(FTPCL[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,)o(fel)o(em,n)o(elem)o +(ent)o(s,va)o(lues)o(,)42 b(>)47 b(status\))0 4549 y +Fh(4)81 b Fi(Read)22 b(elemen)m(ts)h(from)e(an)g(ASCI)s(I)g(or)g +(binary)g(table)i(column.)38 b(Unde\014ned)20 b(arra)m(y)i(elemen)m(ts) +h(will)f(b)s(e)f(returned)227 4662 y(with)32 b(a)h(v)-5 +b(alue)33 b(=)f(n)m(ullv)-5 b(al,)34 b(unless)e(n)m(ullv)-5 +b(al)32 b(=)h(0)f(\(or)h(=)f(')h(')f(for)g(ftgcvs\))i(in)e(whic)m(h)g +(case)i(no)e(c)m(hec)m(king)i(for)227 4775 y(unde\014ned)23 +b(v)-5 b(alues)25 b(will)g(b)s(e)g(p)s(erformed.)37 b(The)24 +b(ANYF)i(parameter)f(is)g(set)h(to)f(true)g(if)g(an)m(y)g(of)g(the)g +(returned)227 4888 y(elemen)m(ts)32 b(are)f(unde\014ned.)227 +5036 y(An)m(y)d(column,)h(regardless)f(of)g(it's)h(in)m(trinsic)f +(datat)m(yp)s(e,)i(ma)m(y)e(b)s(e)f(read)h(as)g(a)h(string.)40 +b(It)28 b(should)e(b)s(e)i(noted)227 5149 y(ho)m(w)m(ev)m(er)k(that)f +(reading)f(a)h(n)m(umeric)f(column)g(as)h(a)g(string)f(is)g(10)i(-)e +(100)i(times)f(slo)m(w)m(er)g(than)f(reading)h(the)227 +5262 y(same)36 b(column)f(as)h(a)g(n)m(um)m(b)s(er)e(due)g(to)j(the)e +(large)i(o)m(v)m(erhead)f(in)f(constructing)h(the)g(formatted)g +(strings.)227 5375 y(The)i(displa)m(y)g(format)g(of)g(the)g(returned)f +(strings)g(will)h(b)s(e)g(determined)f(b)m(y)h(the)g(TDISPn)f(k)m(eyw)m +(ord,)j(if)227 5488 y(it)d(exists,)h(otherwise)f(b)m(y)f(the)g(datat)m +(yp)s(e)h(of)f(the)h(column.)57 b(The)36 b(length)g(of)h(the)f +(returned)f(strings)h(can)227 5601 y(b)s(e)29 b(determined)f(with)h +(the)g(ftgcdw)g(routine.)40 b(The)28 b(follo)m(wing)j(TDISPn)c(displa)m +(y)j(formats)f(are)g(curren)m(tly)227 5714 y(supp)s(orted:)p +eop end +%%Page: 34 40 +TeXDict begin 34 39 bop 0 299 a Fi(34)1747 b Fg(CHAPTER)30 +b(5.)111 b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)418 +555 y Fe(Iw.m)142 b(Integer)418 668 y(Ow.m)g(Octal)47 +b(integer)418 781 y(Zw.m)142 b(Hexadecimal)45 b(integer)418 +894 y(Fw.d)142 b(Fixed)47 b(floating)e(point)418 1007 +y(Ew.d)142 b(Exponential)45 b(floating)h(point)418 1120 +y(Dw.d)142 b(Exponential)45 b(floating)h(point)418 1233 +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 1483 y Fi(where)24 b(w)h(is)f(the)h(width)f +(in)g(c)m(haracters)i(of)f(the)g(displa)m(y)m(ed)g(v)-5 +b(alues,)27 b(m)d(is)h(the)f(minim)m(um)g(n)m(um)m(b)s(er)g(of)g +(digits)227 1595 y(displa)m(y)m(ed,)31 b(and)e(d)h(is)f(the)i(n)m(um)m +(b)s(er)d(of)i(digits)g(to)h(the)f(righ)m(t)h(of)f(the)g(decimal.)41 +b(The)29 b(.m)h(\014eld)g(is)g(optional.)382 1855 y Fe +(FTGCV[SBIJKEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)o(ele)o(m,ne)o(leme)o +(nts)o(,nul)o(lval)o(,)42 b(>)1098 1968 y(values,anyf,status\))0 +2228 y Fh(5)81 b Fi(Get)42 b(the)g(table)h(column)e(n)m(um)m(b)s(er)g +(and)g(full)g(name)h(of)g(the)f(column)h(whose)f(name)h(matc)m(hes)h +(the)f(input)227 2341 y(template)35 b(string.)48 b(See)33 +b(the)h(`Adv)-5 b(anced)33 b(In)m(terface)h(Routines')f(c)m(hapter)h +(for)f(a)g(full)g(description)g(of)g(this)227 2454 y(routine.)382 +2714 y Fe(FTGCNN\(unit,casesen,colt)o(emp)o(late)o(,)42 +b(>)47 b(colname,colnum,status\))p eop end +%%Page: 35 41 +TeXDict begin 35 40 bop 0 1225 a Ff(Chapter)65 b(6)0 +1687 y Fl(Adv)-13 b(anced)78 b(In)-6 b(terface)77 b(Subroutines)0 +2180 y Fi(This)31 b(c)m(hapter)h(de\014nes)f(all)h(the)g(a)m(v)-5 +b(ailable)34 b(subroutines)d(in)g(the)h(FITSIO)e(user)h(in)m(terface.) +46 b(F)-8 b(or)33 b(completeness,)0 2293 y(the)43 b(basic)g +(subroutines)e(describ)s(ed)g(in)i(the)f(previous)h(c)m(hapter)g(are)g +(also)g(rep)s(eated)g(here.)77 b(A)43 b(righ)m(t)g(arro)m(w)0 +2406 y(sym)m(b)s(ol)29 b(is)f(used)g(here)h(to)g(separate)h(the)f +(input)f(parameters)h(from)f(the)h(output)g(parameters)g(in)f(the)h +(de\014nition)0 2518 y(of)k(eac)m(h)h(subroutine.)47 +b(This)32 b(sym)m(b)s(ol)h(is)g(not)g(actually)i(part)d(of)h(the)h +(calling)g(sequence.)49 b(An)32 b(alphab)s(etical)i(list)0 +2631 y(and)c(de\014nition)g(of)g(all)i(the)e(parameters)h(is)f(giv)m +(en)i(at)f(the)f(end)g(of)h(this)f(section.)0 2961 y +Fd(6.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)25 b(an)i(existing)h(FITS)f(\014le)g(with)g +(readonly)g(or)g(readwrite)g(access.)41 b(The)27 b(FTDK)m(OPEN)g +(routine)g(simply)227 3310 y(op)s(ens)32 b(the)g(sp)s(eci\014ed)g +(\014le)h(without)f(trying)h(to)g(in)m(terpret)g(the)f(\014lename)h +(using)f(the)g(extended)h(\014lename)227 3423 y(syn)m(tax.)41 +b(FTDOPN)28 b(op)s(ens)e(the)i(\014le)g(and)f(also)i(mo)m(v)m(es)g(to)g +(the)f(\014rst)f(HDU)h(con)m(taining)h(signi\014can)m(t)g(data,)227 +3536 y(if)35 b(no)h(sp)s(eci\014c)f(HDU)h(is)f(sp)s(eci\014ed)f(as)i +(part)f(of)g(the)h(\014lename.)55 b(FTTOPN)35 b(and)f(FTIOPN)h(are)h +(similar)227 3649 y(except)26 b(that)f(they)g(will)g(mo)m(v)m(e)h(to)g +(the)f(\014rst)f(table)h(HDU)h(or)e(image)i(HDU,)g(resp)s(ectiv)m(ely) +-8 b(,)28 b(if)c(a)h(HDU)h(name)227 3762 y(or)31 b(n)m(um)m(b)s(er)e +(is)h(not)h(sp)s(eci\014ed)e(as)i(part)f(of)h(the)f(\014lename.)382 +3996 y Fe(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 +b(blocksize,status\))382 4108 y(FTDKOPEN\(unit,filename,r)o(wmo)o(de,) +41 b(>)48 b(blocksize,status\))382 4334 y(FTDOPN\(unit,filename,rwm)o +(ode)o(,)42 b(>)47 b(status\))382 4447 y(FTTOPN\(unit,filename,rwm)o +(ode)o(,)42 b(>)47 b(status\))382 4560 y(FTIOPN\(unit,filename,rwm)o +(ode)o(,)42 b(>)47 b(status\))0 4794 y Fh(2)81 b Fi(Op)s(en)24 +b(an)i(existing)h(FITS)e(\014le)h(with)f(readonly)h(or)g(readwrite)g +(access)h(and)f(mo)m(v)m(e)h(to)f(a)h(follo)m(wing)g(extension,)227 +4907 y(if)38 b(one)g(w)m(as)g(sp)s(eci\014ed)g(as)g(part)f(of)h(the)h +(\014lename.)63 b(\(e.g.,)42 b('\014lename.\014ts+2')c(or)g +('\014lename.\014ts[2]')i(will)227 5020 y(mo)m(v)m(e)e(to)g(the)e(3rd)g +(HDU)i(in)e(the)h(\014le\).)60 b(Note)37 b(that)h(this)e(routine)h +(di\013ers)f(from)g(FTOPEN)g(in)g(that)h(it)227 5133 +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) +j(argumen)m(t.)382 5367 y Fe(FTNOPN\(unit,filename,rwm)o(ode)o(,)42 +b(>)47 b(status\))0 5601 y Fh(3)81 b Fi(Reop)s(en)38 +b(a)i(FITS)e(\014le)i(that)f(w)m(as)h(previously)f(op)s(ened)f(with)h +(FTOPEN,)g(FTNOPN,)g(or)h(FTINIT.)e(The)227 5714 y(newunit)f(n)m(um)m +(b)s(er)f(ma)m(y)j(then)e(b)s(e)g(treated)i(as)f(a)g(separate)g +(\014le,)i(and)d(one)h(ma)m(y)h(sim)m(ultaneously)f(read)1905 +5942 y(35)p eop end +%%Page: 36 42 +TeXDict begin 36 41 bop 0 299 a Fi(36)1319 b Fg(CHAPTER)29 +b(6.)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(or)36 b(write)g(to)g(2)g(\(or)g(more\))g +(di\013eren)m(t)g(extensions)g(in)f(the)h(same)g(\014le.)56 +b(The)35 b(FTOPEN)g(and)g(FTNOPN)227 668 y(routines)f(\(ab)s(o)m(v)m +(e\))h(automatically)h(detects)f(cases)g(where)e(a)g(previously)h(op)s +(ened)e(\014le)i(is)g(b)s(eing)f(op)s(ened)227 781 y(again,)c(and)e +(then)g(in)m(ternally)h(call)g(FTREOPEN,)f(so)h(programs)e(should)h +(rarely)g(need)g(to)h(explicitly)h(call)227 894 y(this)i(routine.)334 +1136 y Fe(FTREOPEN\(unit,)44 b(>)j(newunit,)f(status\))0 +1377 y Fh(4)81 b Fi(Op)s(en)24 b(and)g(initialize)k(a)e(new)f(empt)m(y) +g(FITS)g(\014le.)39 b(The)25 b(FTDKINIT)g(routine)g(simply)g(creates)i +(the)f(sp)s(eci\014ed)227 1490 y(\014le)31 b(without)f(trying)h(to)g +(in)m(terpret)f(the)h(\014lename)g(using)e(the)i(extended)f(\014lename) +h(syn)m(tax.)334 1732 y Fe(FTINIT\(unit,filename,bloc)o(ksi)o(ze,)41 +b(>)48 b(status\))334 1845 y(FTDKINIT\(unit,filename,bl)o(ock)o(size)o +(,)42 b(>)47 b(status\))0 2087 y Fh(5)81 b Fi(Create)24 +b(a)g(new)f(FITS)g(\014le,)i(using)e(a)h(template)h(\014le)e(to)i +(de\014ne)d(its)i(initial)h(size)g(and)e(structure.)37 +b(The)24 b(template)227 2199 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)j(\014le.)64 b(If)38 +b(the)h(input)e(template)j(\014le)e(name)h(is)227 2312 +y(blank,)28 b(then)f(this)g(routine)g(b)s(eha)m(v)m(es)h(the)f(same)h +(as)f(FTINIT.)g(The)f(curren)m(tly)i(supp)s(orted)d(format)i(of)h(the) +227 2425 y(ASCI)s(I)c(template)j(\014le)f(is)f(describ)s(ed)g(under)f +(the)i(\014ts)p 2037 2425 28 4 v 32 w(parse)p 2277 2425 +V 33 w(template)g(routine)g(\(in)g(the)f(general)i(Utilities)227 +2538 y(section\),)32 b(but)e(this)g(ma)m(y)h(c)m(hange)h(sligh)m(tly)g +(later)f(releases)g(of)g(CFITSIO.)334 2780 y Fe(FTTPLT\(unit,)45 +b(filename,)g(tplfilename,)f(>)k(status\))0 3022 y Fh(6)81 +b Fi(Flush)33 b(in)m(ternal)h(bu\013ers)f(of)h(data)g(to)g(the)g +(output)g(FITS)f(\014le)h(previously)f(op)s(ened)g(with)g(ftop)s(en)h +(or)f(ftinit.)227 3135 y(The)j(routine)h(usually)f(nev)m(er)h(needs)f +(to)i(b)s(e)e(called,)j(but)d(doing)h(so)g(will)g(ensure)f(that)h(if)f +(the)h(program)227 3247 y(subsequen)m(tly)30 b(ab)s(orts,)g(then)h(the) +f(FITS)g(\014le)g(will)h(ha)m(v)m(e)h(at)f(least)g(b)s(een)f(closed)h +(prop)s(erly)-8 b(.)382 3489 y Fe(FTFLUS\(unit,)44 b(>)k(status\))0 +3731 y Fh(7)81 b Fi(Close)31 b(a)f(FITS)g(\014le)g(previously)g(op)s +(ened)g(with)g(ftop)s(en)g(or)g(ftinit)382 3973 y Fe(FTCLOS\(unit,)44 +b(>)k(status\))0 4214 y Fh(8)81 b Fi(Close)34 b(and)f(DELETE)g(a)h +(FITS)f(\014le)h(previously)f(op)s(ened)g(with)g(ftop)s(en)g(or)h +(ftinit.)51 b(This)33 b(routine)g(ma)m(y)i(b)s(e)227 +4327 y(useful)29 b(in)h(cases)g(where)g(a)g(FITS)f(\014le)g(is)h +(created,)h(but)e(an)h(error)f(o)s(ccurs)h(whic)m(h)f(prev)m(en)m(ts)i +(the)e(complete)227 4440 y(\014le)i(from)f(b)s(eing)g(written.)382 +4682 y Fe(FTDELT\(unit,)44 b(>)k(status\))0 4924 y Fh(9)81 +b Fi(Get)31 b(the)g(v)-5 b(alue)31 b(of)f(an)g(un)m(used)g(I/O)g(unit)g +(n)m(um)m(b)s(er)f(whic)m(h)h(ma)m(y)h(then)f(b)s(e)g(used)g(as)g +(input)g(to)h(FTOPEN)f(or)227 5036 y(FTINIT.)36 b(This)f(routine)h +(searc)m(hes)h(for)f(the)g(\014rst)f(un)m(used)g(unit)g(n)m(um)m(b)s +(er)g(in)g(the)i(range)f(from)f(with)h(99)227 5149 y(do)m(wn)d(to)h +(50.)50 b(This)32 b(routine)h(just)g(k)m(eeps)h(an)f(in)m(ternal)h +(list)f(of)h(the)f(allo)s(cated)i(unit)e(n)m(um)m(b)s(ers)f(and)g(do)s +(es)227 5262 y(not)26 b(ph)m(ysically)g(c)m(hec)m(k)g(that)g(the)g(F)-8 +b(ortran)25 b(unit)g(is)g(a)m(v)-5 b(ailable)28 b(\(to)e(b)s(e)f +(compatible)h(with)f(the)g(SPP)f(v)m(ersion)227 5375 +y(of)35 b(FITSIO\).)g(Th)m(us)f(users)g(m)m(ust)h(not)g(indep)s(enden)m +(tly)f(allo)s(cate)j(an)m(y)f(unit)e(n)m(um)m(b)s(ers)g(in)h(the)g +(range)g(50)227 5488 y(-)42 b(99)g(if)f(this)g(routine)g(is)g(also)h +(to)g(b)s(e)f(used)f(in)h(the)g(same)h(program.)73 b(This)40 +b(routine)h(is)g(pro)m(vided)g(for)227 5601 y(con)m(v)m(enience)34 +b(only)-8 b(,)32 b(and)e(it)i(is)f(not)h(required)e(that)i(the)f(unit)g +(n)m(um)m(b)s(ers)f(used)g(b)m(y)h(FITSIO)f(b)s(e)h(allo)s(cated)227 +5714 y(b)m(y)g(this)f(routine.)p eop end +%%Page: 37 43 +TeXDict begin 37 42 bop 0 299 a Fg(6.1.)72 b(FITS)30 +b(FILE)g(OPEN)g(AND)h(CLOSE)e(SUBR)m(OUTINES:)1561 b +Fi(37)382 555 y Fe(FTGIOU\()46 b(>)h(iounit,)f(status\))0 +807 y Fh(10)g Fi(F)-8 b(ree)34 b(\(deallo)s(cate\))i(an)d(I/O)g(unit)f +(n)m(um)m(b)s(er)g(whic)m(h)g(w)m(as)h(previously)g(allo)s(cated)i +(with)e(FTGIOU.)g(All)g(pre-)227 919 y(viously)28 b(allo)s(cated)i +(unit)d(n)m(um)m(b)s(ers)f(ma)m(y)i(b)s(e)f(deallo)s(cated)j(at)e(once) +h(b)m(y)e(calling)i(FTFIOU)f(with)f(iounit)h(=)227 1032 +y(-1.)382 1284 y Fe(FTFIOU\(iounit,)44 b(>)j(status\))0 +1535 y Fh(11)f Fi(Return)30 b(the)h(F)-8 b(ortran)31 +b(unit)g(n)m(um)m(b)s(er)e(that)i(corresp)s(onds)f(to)h(the)g(C)g +(\014ts\014le)f(p)s(oin)m(ter)h(v)-5 b(alue,)32 b(or)e(vice)i(v)m +(ersa.)227 1648 y(These)37 b(2)h(C)f(routines)g(ma)m(y)g(b)s(e)g +(useful)f(in)h(mixed)g(language)i(programs)e(where)f(b)s(oth)h(C)g(and) +f(F)-8 b(ortran)227 1761 y(subroutines)25 b(need)g(to)i(access)g(the)f +(same)g(\014le.)40 b(F)-8 b(or)26 b(example,)i(if)e(a)g(FITS)f(\014le)h +(is)g(op)s(ened)f(with)g(unit)g(12)i(b)m(y)227 1874 y(a)k(F)-8 +b(ortran)31 b(subroutine,)f(then)g(a)h(C)f(routine)h(within)f(the)g +(same)h(program)g(could)f(get)i(the)e(\014t\014le)h(p)s(oin)m(ter)227 +1987 y(v)-5 b(alue)39 b(to)f(access)h(the)f(same)h(\014le)f(b)m(y)f +(calling)j('fptr)d(=)h(CUnit2FITS\(12\)'.)64 b(These)38 +b(routines)g(return)f(a)227 2100 y(v)-5 b(alue)31 b(of)g(zero)g(if)f +(an)g(error)g(o)s(ccurs.)286 2351 y Fe(int)334 b(CFITS2Unit\(fitsfile) +42 b(*ptr\);)286 2464 y(fitsfile*)k(CUnit2FITS\(int)e(unit\);)0 +2715 y Fh(11)i Fi(P)m(arse)32 b(the)g(input)e(\014lename)i(and)f +(return)f(the)i(HDU)g(n)m(um)m(b)s(er)e(that)i(w)m(ould)f(b)s(e)g(mo)m +(v)m(ed)i(to)f(if)f(the)h(\014le)f(w)m(ere)227 2828 y(op)s(ened)i(with) +g(FTNOPN.)g(The)f(returned)g(HDU)i(n)m(um)m(b)s(er)e(b)s(egins)h(with)g +(1)g(for)g(the)g(primary)g(arra)m(y)-8 b(,)35 b(so)227 +2941 y(for)d(example,)g(if)g(the)g(input)f(\014lename)g(=)h(`m)m +(y\014le.\014ts[2]')h(then)e(hdun)m(um)e(=)j(3)g(will)g(b)s(e)f +(returned.)43 b(FIT-)227 3054 y(SIO)35 b(do)s(es)h(not)g(op)s(en)g(the) +g(\014le)g(to)h(c)m(hec)m(k)h(if)e(the)g(extension)h(actually)h(exists) +e(if)h(an)e(extension)i(n)m(um)m(b)s(er)227 3167 y(is)43 +b(sp)s(eci\014ed.)75 b(If)42 b(an)g(extension)h(*name*)g(is)f(included) +g(in)g(the)g(\014le)g(name)h(sp)s(eci\014cation)g(\(e.g.)77 +b(`m)m(y-)227 3280 y(\014le.\014ts[EVENTS]')30 b(then)f(this)h(routine) +g(will)g(ha)m(v)m(e)h(to)f(op)s(en)f(the)h(FITS)f(\014le)h(and)f(lo)s +(ok)h(for)g(the)g(p)s(osition)227 3393 y(of)38 b(the)h(named)e +(extension,)k(then)d(close)h(\014le)f(again.)64 b(This)38 +b(is)g(not)g(p)s(ossible)f(if)h(the)g(\014le)g(is)g(b)s(eing)g(read)227 +3506 y(from)e(the)g(stdin)f(stream,)j(and)d(an)h(error)f(will)h(b)s(e)g +(returned)e(in)i(this)g(case.)58 b(If)35 b(the)h(\014lename)g(do)s(es)g +(not)227 3619 y(sp)s(ecify)29 b(an)g(explicit)h(extension)g(\(e.g.)42 +b('m)m(y\014le.\014ts'\))30 b(then)f(hdun)m(um)e(=)h(-99)j(will)e(b)s +(e)g(returned,)f(whic)m(h)h(is)227 3731 y(functionally)34 +b(equiv)-5 b(alen)m(t)35 b(to)g(hdun)m(um)c(=)i(1.)50 +b(This)33 b(routine)g(is)h(mainly)g(used)e(for)i(bac)m(kw)m(ard)g +(compati-)227 3844 y(bilit)m(y)g(in)e(the)g(fto)s(ols)h(soft)m(w)m(are) +h(pac)m(k)-5 b(age)34 b(and)e(is)g(not)g(recommended)g(for)g(general)i +(use.)46 b(It)32 b(is)h(generally)227 3957 y(b)s(etter)i(and)g(more)g +(e\016cien)m(t)h(to)g(\014rst)e(op)s(en)g(the)h(FITS)f(\014le)h(with)g +(FTNOPN,)g(then)g(use)f(FTGHDN)i(to)227 4070 y(determine)30 +b(whic)m(h)g(HDU)g(in)f(the)h(\014le)g(has)g(b)s(een)f(op)s(ened,)g +(rather)g(than)h(calling)h(FTEXTN)f(follo)m(w)m(ed)h(b)m(y)227 +4183 y(a)g(call)h(to)f(FTNOPN.)382 4434 y Fe(FTEXTN\(filename,)43 +b(>)48 b(nhdu,)e(status\))0 4686 y Fh(12)g Fi(Return)30 +b(the)g(name)h(of)f(the)h(op)s(ened)e(FITS)h(\014le.)382 +4937 y Fe(FTFLNM\(unit,)44 b(>)k(filename,)d(status\))0 +5188 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)g(\(READONL)-8 b(Y)32 b(=)e(0,)h(READ)m(WRITE)g(=)f +(1\).)382 5440 y Fe(FTFLMD\(unit,)44 b(>)k(iomode,)e(status\))0 +5691 y Fh(14)g Fi(Return)30 b(the)g(\014le)h(t)m(yp)s(e)f(of)h(the)f +(op)s(ened)g(FITS)g(\014le)g(\(e.g.)42 b('\014le://',)32 +b('ftp://',)g(etc.\).)p eop end +%%Page: 38 44 +TeXDict begin 38 43 bop 0 299 a Fi(38)1319 b Fg(CHAPTER)29 +b(6.)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(FTURLT\(unit,)44 b(>)k(urltype,)d +(status\))0 819 y Fh(15)h Fi(P)m(arse)27 b(the)f(input)f(\014lename)i +(or)f(URL)g(in)m(to)h(its)g(comp)s(onen)m(t)f(parts:)39 +b(the)26 b(\014le)g(t)m(yp)s(e)h(\(\014le://,)h(ftp://,)g(h)m(ttp://,) +227 932 y(etc\),)34 b(the)e(base)g(input)e(\014le)i(name,)g(the)g(name) +g(of)g(the)g(output)f(\014le)h(that)g(the)g(input)f(\014le)g(is)h(to)g +(b)s(e)f(copied)227 1045 y(to)38 b(prior)e(to)h(op)s(ening,)h(the)f +(HDU)g(or)f(extension)i(sp)s(eci\014cation,)h(the)e(\014ltering)f(sp)s +(eci\014er,)i(the)f(binning)227 1157 y(sp)s(eci\014er,)e(and)e(the)i +(column)f(sp)s(eci\014er.)51 b(Blank)34 b(strings)g(will)h(b)s(e)e +(returned)g(for)h(an)m(y)g(comp)s(onen)m(ts)g(that)227 +1270 y(are)d(not)g(presen)m(t)f(in)g(the)h(input)e(\014le)i(name.)334 +1534 y Fe(FTIURL\(filename,)43 b(>)48 b(filetype,)d(infile,)h(outfile,) +g(extspec,)f(filter,)716 1647 y(binspec,)g(colspec,)h(status\))0 +1910 y Fh(16)g Fi(P)m(arse)e(the)g(input)f(\014le)h(name)f(and)g +(return)g(the)h(ro)s(ot)g(\014le)f(name.)81 b(The)43 +b(ro)s(ot)h(name)g(includes)f(the)h(\014le)227 2023 y(t)m(yp)s(e)35 +b(if)g(sp)s(eci\014ed,)h(\(e.g.)56 b('ftp://')37 b(or)e('h)m(ttp://'\)) +i(and)d(the)h(full)g(path)g(name,)h(to)g(the)f(exten)m(t)i(that)e(it)h +(is)227 2136 y(sp)s(eci\014ed)26 b(in)f(the)i(input)e(\014lename.)39 +b(It)26 b(do)s(es)g(not)g(include)g(the)g(HDU)h(name)f(or)g(n)m(um)m(b) +s(er,)g(or)g(an)m(y)h(\014ltering)227 2249 y(sp)s(eci\014cations.)334 +2513 y Fe(FTRTNM\(filename,)43 b(>)48 b(rootname,)d(status\))0 +2776 y Fh(16)h Fi(T)-8 b(est)36 b(if)g(the)g(input)f(\014le)h(or)f(a)i +(compressed)e(v)m(ersion)h(of)g(the)g(\014le)g(\(with)g(a)g(.gz,)i(.Z,) +e(.z,)i(or)e(.zip)g(extension\))227 2889 y(exists)j(on)f(disk.)63 +b(The)37 b(returned)g(v)-5 b(alue)38 b(of)g(the)h('exists')g(parameter) +f(will)g(ha)m(v)m(e)i(1)e(of)g(the)g(4)g(follo)m(wing)227 +3002 y(v)-5 b(alues:)370 3257 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 +3370 y(1:)95 b(the)47 b(disk)g(file)g(does)f(exist)370 +3483 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 3596 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 3709 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 +3973 y(FTEXIST\(filename,)d(>)48 b(exists,)e(status\);)0 +4311 y Fd(6.2)135 b(HDU-Lev)l(el)47 b(Op)t(erations)0 +4562 y Fi(When)30 b(a)h(FITS)f(\014le)g(is)h(\014rst)e(op)s(ened)h(or)g +(created,)i(the)f(in)m(ternal)g(bu\013ers)e(in)h(FITSIO)f +(automatically)34 b(p)s(oin)m(t)c(to)0 4675 y(the)g(\014rst)g(HDU)h(in) +f(the)g(\014le.)41 b(The)29 b(follo)m(wing)j(routines)e(ma)m(y)h(b)s(e) +e(used)h(to)h(mo)m(v)m(e)g(to)g(another)f(HDU)h(in)f(the)h(\014le.)0 +4788 y(Note)j(that)f(the)g(HDU)g(n)m(um)m(b)s(ering)f(con)m(v)m(en)m +(tion)i(used)e(in)g(FITSIO)g(denotes)h(the)f(primary)g(arra)m(y)h(as)g +(the)g(\014rst)0 4901 y(HDU,)e(the)g(\014rst)f(extension)h(in)f(a)g +(FITS)g(\014le)g(is)h(the)f(second)h(HDU,)g(and)f(so)h(on.)0 +5164 y Fh(1)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)f +(\(absolute\))h(HDU)g(in)g(the)f(FITS)g(\014le)g(\(nhdu)f(=)h(1)h(for)f +(the)g(FITS)g(primary)f(arra)m(y\))382 5428 y Fe(FTMAHD\(unit,nhdu,)43 +b(>)k(hdutype,status\))0 5691 y Fh(2)81 b Fi(Mo)m(v)m(e)32 +b(to)f(a)g(new)f(\(existing\))i(HDU)f(forw)m(ard)f(or)g(bac)m(kw)m +(ards)h(relativ)m(e)h(to)f(the)g(CHDU)p eop end +%%Page: 39 45 +TeXDict begin 39 44 bop 0 299 a Fg(6.2.)72 b(HDU-LEVEL)31 +b(OPERA)-8 b(TIONS)2414 b Fi(39)382 555 y Fe(FTMRHD\(unit,nmove,)43 +b(>)k(hdutype,status\))0 788 y Fh(3)81 b Fi(Mo)m(v)m(e)22 +b(to)f(the)f(\(\014rst\))h(HDU)g(whic)m(h)f(has)g(the)g(sp)s(eci\014ed) +g(extension)h(t)m(yp)s(e)f(and)g(EXTNAME)g(\(or)h(HDUNAME\))227 +901 y(and)34 b(EXTVER)g(k)m(eyw)m(ord)h(v)-5 b(alues.)53 +b(The)34 b(hdut)m(yp)s(e)f(parameter)i(ma)m(y)g(ha)m(v)m(e)g(a)g(v)-5 +b(alue)35 b(of)f(IMA)m(GE)p 3665 901 28 4 v 34 w(HDU)227 +1014 y(\(0\),)43 b(ASCI)s(I)p 669 1014 V 31 w(TBL)c(\(1\),)j(BINAR)-8 +b(Y)p 1468 1014 V 34 w(TBL)39 b(\(2\),)j(or)d(ANY)p 2234 +1014 V 34 w(HDU)g(\(-1\))i(where)d(ANY)p 3173 1014 V +34 w(HDU)h(means)g(that)227 1127 y(only)30 b(the)g(extname)h(and)e +(extv)m(er)i(v)-5 b(alues)30 b(will)g(b)s(e)f(used)g(to)i(lo)s(cate)g +(the)f(correct)h(extension.)42 b(If)29 b(the)h(input)227 +1240 y(v)-5 b(alue)27 b(of)f(extv)m(er)h(is)f(0)g(then)g(the)g(EXTVER)g +(k)m(eyw)m(ord)g(is)g(ignored)g(and)g(the)g(\014rst)f(HDU)i(with)e(a)i +(matc)m(hing)227 1353 y(EXTNAME)g(\(or)g(HDUNAME\))h(k)m(eyw)m(ord)f +(will)g(b)s(e)f(found.)38 b(If)26 b(no)h(matc)m(hing)h(HDU)f(is)g +(found)e(in)h(the)h(\014le)227 1466 y(then)i(the)g(curren)m(t)g(HDU)h +(will)f(remain)g(unc)m(hanged)g(and)g(a)g(status)g(=)g(BAD)p +2884 1466 V 34 w(HDU)p 3123 1466 V 33 w(NUM)h(\(301\))h(will)f(b)s(e) +227 1578 y(returned.)382 1811 y Fe(FTMNHD\(unit,)44 b(hdutype,)i +(extname,)f(extver,)h(>)i(status\))0 2044 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)f +(the)h(FITS)e(\014le)i(\(primary)f(arra)m(y)g(=)g(1\))382 +2277 y Fe(FTGHDN\(unit,)44 b(>)k(nhdu\))0 2510 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)e +(the)h(FITS)f(\014le.)71 b(The)41 b(p)s(ossible)f(v)-5 +b(alues)41 b(for)f(hdut)m(yp)s(e)g(are)227 2623 y(IMA)m(GE)p +546 2623 V 34 w(HDU)31 b(\(0\),)h(ASCI)s(I)p 1242 2623 +V 31 w(TBL)e(\(1\),)i(or)e(BINAR)-8 b(Y)p 2133 2623 V +34 w(TBL)30 b(\(2\).)382 2856 y Fe(FTGHDT\(unit,)44 b(>)k(hdutype,)d +(status\))0 3089 y Fh(6)81 b Fi(Return)29 b(the)i(total)h(n)m(um)m(b)s +(er)d(of)i(HDUs)f(in)h(the)f(FITS)g(\014le.)41 b(The)29 +b(CHDU)i(remains)f(unc)m(hanged.)382 3322 y Fe(FTTHDU\(unit,)44 +b(>)k(hdunum,)e(status\))0 3554 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)h(the)e(last) +h(extension)g(that)g(has)f(b)s(een)f(previously)h(ac-)227 +3667 y(cessed)41 b(b)m(y)f(the)g(program.)70 b(This)40 +b(will)g(o)m(v)m(erwrite)i(an)m(y)f(extensions)g(in)e(an)i(existing)g +(FITS)e(\014le)i(if)f(the)227 3780 y(program)31 b(has)g(not)g(already)h +(mo)m(v)m(ed)g(to)f(that)h(\(or)f(a)h(later\))g(extension)g(using)e +(the)h(FTMAHD)h(or)f(FTM-)227 3893 y(RHD)24 b(routines.)38 +b(F)-8 b(or)25 b(example,)g(if)f(an)f(existing)h(FITS)f(\014le)g(con)m +(tains)i(a)f(primary)e(arra)m(y)i(and)f(5)g(extensions)227 +4006 y(and)31 b(a)h(program)f(\(1\))h(op)s(ens)f(the)g(FITS)g(\014le,)h +(\(2\))g(mo)m(v)m(es)h(to)f(extension)g(4,)g(\(3\))g(mo)m(v)m(es)h(bac) +m(k)f(to)g(the)f(pri-)227 4119 y(mary)36 b(arra)m(y)-8 +b(,)38 b(and)e(\(4\))h(then)e(calls)i(FTCRHD,)f(then)g(the)g(new)g +(extension)g(will)g(b)s(e)g(written)f(follo)m(wing)227 +4232 y(the)c(4th)f(extension,)i(o)m(v)m(erwriting)g(the)e(existing)h +(5th)g(extension.)382 4465 y Fe(FTCRHD\(unit,)44 b(>)k(status\))0 +4698 y Fh(8)81 b Fi(Create)30 b(a)f(primary)f(arra)m(y)i(\(if)g(none)f +(already)g(exists\),)i(or)e(insert)g(a)h(new)f(IMA)m(GE)h(extension)g +(immediately)227 4811 y(follo)m(wing)25 b(the)e(CHDU,)g(or)g(insert)g +(a)g(new)g(Primary)f(Arra)m(y)h(at)h(the)f(b)s(eginning)f(of)h(the)g +(\014le.)38 b(An)m(y)23 b(follo)m(wing)227 4924 y(extensions)29 +b(in)g(the)g(\014le)f(will)h(b)s(e)f(shifted)h(do)m(wn)f(to)h(mak)m(e)h +(ro)s(om)e(for)h(the)g(new)f(extension.)40 b(If)29 b(the)g(CHDU)227 +5036 y(is)h(the)g(last)g(HDU)g(in)g(the)f(\014le)h(then)f(the)h(new)f +(image)i(extension)f(will)g(simply)f(b)s(e)g(app)s(ended)f(to)i(the)g +(end)227 5149 y(of)k(the)h(\014le.)52 b(One)33 b(can)h(force)h(a)g(new) +e(primary)g(arra)m(y)i(to)g(b)s(e)e(inserted)h(at)h(the)f(b)s(eginning) +f(of)h(the)h(FITS)227 5262 y(\014le)29 b(b)m(y)f(setting)i(status)e(=)h +(-9)g(prior)e(to)j(calling)g(the)e(routine.)40 b(In)28 +b(this)g(case)i(the)e(existing)i(primary)d(arra)m(y)227 +5375 y(will)f(b)s(e)f(con)m(v)m(erted)i(to)g(an)e(IMA)m(GE)h +(extension.)40 b(The)25 b(new)g(extension)i(\(or)f(primary)e(arra)m +(y\))j(will)f(b)s(ecome)227 5488 y(the)32 b(CHDU.)f(The)g(FTI)s(IMGLL)f +(routine)i(is)f(iden)m(tical)i(to)e(the)h(FTI)s(IMG)f(routine)g(except) +h(that)f(the)h(4th)227 5601 y(parameter)25 b(\(the)g(length)g(of)f(eac) +m(h)h(axis\))g(is)g(an)f(arra)m(y)h(of)f(64-bit)i(in)m(tegers)f(rather) +f(than)g(an)g(arra)m(y)h(of)g(32-bit)227 5714 y(in)m(tegers.)p +eop end +%%Page: 40 46 +TeXDict begin 40 45 bop 0 299 a Fi(40)1319 b Fg(CHAPTER)29 +b(6.)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(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 +b(>)48 b(status\))382 668 y(FTIIMGLL\(unit,bitpix,nax)o(is,)o(naxe)o +(sll,)41 b(>)47 b(status\))0 921 y Fh(9)81 b Fi(Insert)30 +b(a)i(new)f(ASCI)s(I)f(T)-8 b(ABLE)31 b(extension)h(immediately)h +(follo)m(wing)f(the)g(CHDU.)g(An)m(y)f(follo)m(wing)i(exten-)227 +1034 y(sions)26 b(will)g(b)s(e)f(shifted)g(do)m(wn)g(to)h(mak)m(e)h(ro) +s(om)e(for)h(the)f(new)g(extension.)40 b(If)25 b(there)h(are)g(no)g +(other)f(follo)m(wing)227 1147 y(extensions)32 b(then)f(the)h(new)f +(table)h(extension)g(will)g(simply)f(b)s(e)g(app)s(ended)f(to)i(the)f +(end)g(of)h(the)f(\014le.)44 b(The)227 1260 y(new)33 +b(extension)h(will)f(b)s(ecome)h(the)f(CHDU.)h(The)f(FTIT)-8 +b(ABLL)33 b(routine)g(is)g(iden)m(tical)i(to)f(the)g(FTIT)-8 +b(AB)227 1373 y(routine)36 b(except)g(that)g(the)f(2nd)g(and)g(3rd)g +(parameters)g(\(that)i(giv)m(e)g(the)e(size)h(of)g(the)f(table\))i(are) +f(64-bit)227 1486 y(in)m(tegers)c(rather)e(than)g(32-bit)i(in)m +(tegers.)382 1739 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 1852 y(status\))382 1965 y(FTITABLL\(unit,rowlenll,n)o(row)o +(sll,)o(tfie)o(lds)o(,tty)o(pe,t)o(bco)o(l,tf)o(orm,)o(tun)o(it,e)o +(xtna)o(me,)f(>)716 2077 y(status\))0 2331 y Fh(10)46 +b Fi(Insert)25 b(a)h(new)f(binary)f(table)j(extension)f(immediately)g +(follo)m(wing)h(the)f(CHDU.)g(An)m(y)g(follo)m(wing)g(extensions)227 +2443 y(will)39 b(b)s(e)f(shifted)g(do)m(wn)g(to)h(mak)m(e)g(ro)s(om)g +(for)f(the)g(new)g(extension.)66 b(If)38 b(there)h(are)f(no)h(other)f +(follo)m(wing)227 2556 y(extensions)f(then)g(the)f(new)g(bin)m(table)h +(extension)h(will)f(simply)f(b)s(e)g(app)s(ended)e(to)k(the)e(end)g(of) +h(the)g(\014le.)227 2669 y(The)23 b(new)g(extension)h(will)f(b)s(ecome) +h(the)f(CHDU.)h(The)f(FTIBINLL)g(routine)g(is)g(iden)m(tical)i(to)f +(the)g(FTIBIN)227 2782 y(routine)30 b(except)i(that)e(the)h(2nd)e +(parameter)i(\(that)g(giv)m(es)g(the)g(length)f(of)h(the)f(table\))h +(is)g(a)f(64-bit)i(in)m(teger)227 2895 y(rather)f(than)f(a)g(32-bit)i +(in)m(teger.)382 3148 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\))382 3261 y(FTIBINLL\(unit,nrowsll,tf)o(iel)o(ds,t)o +(type)o(,tf)o(orm,)o(tuni)o(t,e)o(xtna)o(me,v)o(ari)o(dat)41 +b(>)48 b(status\))0 3627 y Fh(11)e Fi(Resize)26 b(an)e(image)i(b)m(y)e +(mo)s(di\014ng)f(the)i(size,)i(dimensions,)e(and/or)f(datat)m(yp)s(e)h +(of)g(the)g(curren)m(t)f(primary)f(arra)m(y)227 3740 +y(or)29 b(image)i(extension.)40 b(If)29 b(the)g(new)g(image,)i(as)e(sp) +s(eci\014ed)f(b)m(y)h(the)g(input)f(argumen)m(ts,)i(is)f(larger)h(than) +f(the)227 3853 y(curren)m(t)34 b(existing)h(image)g(in)f(the)g(FITS)f +(\014le)h(then)f(zero)i(\014ll)f(data)h(will)f(b)s(e)f(inserted)h(at)g +(the)g(end)g(of)g(the)227 3966 y(curren)m(t)25 b(image)h(and)e(an)m(y)i +(follo)m(wing)g(extensions)g(will)f(b)s(e)f(mo)m(v)m(ed)i(further)e +(bac)m(k)h(in)g(the)g(\014le.)39 b(Similarly)-8 b(,)27 +b(if)227 4079 y(the)h(new)e(image)j(is)e(smaller)h(than)f(the)g(curren) +m(t)g(image)h(then)f(an)m(y)h(follo)m(wing)h(extensions)e(will)h(b)s(e) +e(shifted)227 4192 y(up)32 b(to)m(w)m(ards)i(the)g(b)s(eginning)e(of)h +(the)h(FITS)e(\014le)h(and)g(the)g(image)h(data)g(will)g(b)s(e)e +(truncated)h(to)h(the)f(new)227 4304 y(size.)41 b(This)25 +b(routine)h(rewrites)h(the)f(BITPIX,)h(NAXIS,)f(and)g(NAXISn)g(k)m(eyw) +m(ords)g(with)g(the)h(appropriate)227 4417 y(v)-5 b(alues)37 +b(for)f(new)h(image.)60 b(The)36 b(FTRSIMLL)g(routine)g(is)h(iden)m +(tical)h(to)g(the)e(FTRSIM)g(routine)h(except)227 4530 +y(that)30 b(the)g(4th)g(parameter)g(\(the)g(length)g(of)f(eac)m(h)i +(axis\))f(is)g(an)f(arra)m(y)h(of)g(64-bit)h(in)m(tegers)f(rather)g +(than)f(an)227 4643 y(arra)m(y)i(of)g(32-bit)g(in)m(tegers.)382 +4896 y Fe(FTRSIM\(unit,bitpix,naxis)o(,na)o(xes,)o(stat)o(us\))382 +5009 y(FTRSIMLL\(unit,bitpix,nax)o(is,)o(naxe)o(sll,)o(sta)o(tus\))0 +5262 y Fh(12)46 b Fi(Delete)34 b(the)f(CHDU)g(in)f(the)g(FITS)f +(\014le.)47 b(An)m(y)32 b(follo)m(wing)i(HDUs)f(will)g(b)s(e)e(shifted) +h(forw)m(ard)g(in)g(the)g(\014le,)h(to)227 5375 y(\014ll)38 +b(in)f(the)g(gap)h(created)g(b)m(y)g(the)f(deleted)h(HDU.)h(In)d(the)i +(case)g(of)g(deleting)g(the)g(primary)e(arra)m(y)i(\(the)227 +5488 y(\014rst)30 b(HDU)h(in)f(the)h(\014le\))g(then)f(the)h(curren)m +(t)f(primary)f(arra)m(y)i(will)g(b)s(e)f(replace)h(b)m(y)g(a)g(n)m(ull) +f(primary)f(arra)m(y)227 5601 y(con)m(taining)k(the)f(minim)m(um)e(set) +i(of)g(required)e(k)m(eyw)m(ords)i(and)e(no)i(data.)44 +b(If)31 b(there)g(are)h(more)f(extensions)227 5714 y(in)f(the)g(\014le) +g(follo)m(wing)i(the)e(one)g(that)h(is)f(deleted,)h(then)f(the)g(the)g +(CHDU)h(will)f(b)s(e)g(rede\014ned)e(to)j(p)s(oin)m(t)f(to)p +eop end +%%Page: 41 47 +TeXDict begin 41 46 bop 0 299 a Fg(6.3.)72 b(DEFINE)31 +b(OR)f(REDEFINE)h(THE)f(STR)m(UCTURE)f(OF)h(THE)g(CHDU)1042 +b Fi(41)227 555 y(the)27 b(follo)m(wing)h(extension.)41 +b(If)26 b(there)h(are)g(no)g(follo)m(wing)h(extensions)f(then)g(the)g +(CHDU)g(will)g(b)s(e)f(rede\014ned)227 668 y(to)35 b(p)s(oin)m(t)f(to)h +(the)f(previous)f(HDU.)i(The)e(output)h(HDUTYPE)g(parameter)h +(indicates)f(the)h(t)m(yp)s(e)f(of)g(the)227 781 y(new)c(CHDU)h(after)g +(the)f(previous)g(CHDU)h(has)f(b)s(een)g(deleted.)382 +1001 y Fe(FTDHDU\(unit,)44 b(>)k(hdutype,status\))0 1222 +y Fh(13)e Fi(Cop)m(y)36 b(all)h(or)f(part)g(of)g(the)g(input)f(FITS)g +(\014le)h(and)g(app)s(end)e(it)i(to)h(the)f(end)g(of)g(the)g(output)g +(FITS)f(\014le.)57 b(If)227 1335 y('previous')39 b(\(an)g(in)m(teger)h +(parameter\))g(is)f(not)g(equal)g(to)h(0,)h(then)e(an)m(y)g(HDUs)g +(preceding)g(the)g(curren)m(t)227 1448 y(HDU)f(in)e(the)h(input)e +(\014le)i(will)g(b)s(e)f(copied)h(to)g(the)g(output)f(\014le.)60 +b(Similarly)-8 b(,)39 b('curren)m(t')e(and)f('follo)m(wing')227 +1561 y(determine)j(whether)f(the)h(curren)m(t)g(HDU,)h(and/or)e(an)m(y) +i(follo)m(wing)g(HDUs)f(in)g(the)g(input)f(\014le)g(will)i(b)s(e)227 +1674 y(copied)32 b(to)g(the)g(output)f(\014le.)43 b(If)31 +b(all)h(3)g(parameters)g(are)g(not)f(equal)h(to)g(zero,)h(then)e(the)g +(en)m(tire)h(input)f(\014le)227 1786 y(will)g(b)s(e)e(copied.)41 +b(On)30 b(return,)f(the)h(curren)m(t)g(HDU)h(in)f(the)g(input)f(\014le) +h(will)h(b)s(e)e(unc)m(hanged,)h(and)g(the)g(last)227 +1899 y(copied)h(HDU)g(will)g(b)s(e)f(the)g(curren)m(t)g(HDU)i(in)e(the) +g(output)g(\014le.)382 2120 y Fe(FTCPFL\(iunit,)44 b(ounit,)i +(previous,)f(current,)h(following,)f(>)i(status\))0 2340 +y Fh(14)f Fi(Cop)m(y)35 b(the)f(en)m(tire)i(CHDU)f(from)f(the)g(FITS)g +(\014le)h(asso)s(ciated)h(with)e(IUNIT)g(to)i(the)e(CHDU)h(of)g(the)g +(FITS)227 2453 y(\014le)g(asso)s(ciated)h(with)e(OUNIT.)g(The)g(output) +g(HDU)h(m)m(ust)f(b)s(e)g(empt)m(y)h(and)e(not)i(already)g(con)m(tain)h +(an)m(y)227 2566 y(k)m(eyw)m(ords.)41 b(Space)29 b(will)g(b)s(e)g +(reserv)m(ed)g(for)g(MOREKEYS)f(additional)h(k)m(eyw)m(ords)h(in)e(the) +i(output)e(header)227 2679 y(if)j(there)f(is)h(not)f(already)h(enough)f +(space.)382 2899 y Fe(FTCOPY\(iunit,ounit,morek)o(eys)o(,)42 +b(>)47 b(status\))0 3120 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)g(with) +f(in)m(unit)g(to)h(the)f(CHDU)h(asso-)227 3233 y(ciated)f(with)e +(outunit.)39 b(If)25 b(the)g(curren)m(t)h(output)f(HDU)h(is)f(not)h +(completely)h(empt)m(y)-8 b(,)27 b(then)e(the)h(CHDU)g(will)227 +3346 y(b)s(e)e(closed)i(and)e(a)i(new)e(HDU)h(will)h(b)s(e)e(app)s +(ended)f(to)j(the)f(output)f(\014le.)39 b(This)24 b(routine)h(will)g +(automatically)227 3459 y(transform)31 b(the)g(necessary)h(k)m(eyw)m +(ords)f(when)g(cop)m(ying)h(a)f(primary)g(arra)m(y)h(to)f(and)g(image)i +(extension,)f(or)227 3572 y(an)27 b(image)h(extension)f(to)g(a)h +(primary)d(arra)m(y)-8 b(.)41 b(An)26 b(empt)m(y)h(output)f(data)i +(unit)e(will)h(b)s(e)f(created)i(\(all)g(v)-5 b(alues)227 +3684 y(=)30 b(0\).)382 3905 y Fe(FTCPHD\(inunit,)44 b(outunit,)h(>)j +(status\))0 4125 y Fh(16)e Fi(Cop)m(y)d(just)g(the)g(data)h(from)f(the) +g(CHDU)h(asso)s(ciated)g(with)f(IUNIT)g(to)h(the)f(CHDU)h(asso)s +(ciated)g(with)227 4238 y(OUNIT.)26 b(This)f(will)h(o)m(v)m(erwrite)h +(an)m(y)f(data)g(previously)g(in)f(the)h(OUNIT)f(CHDU.)h(This)f(lo)m(w) +i(lev)m(el)g(routine)227 4351 y(is)g(used)e(b)m(y)i(FTCOPY,)f(but)g(it) +g(ma)m(y)i(also)f(b)s(e)f(useful)f(in)i(certain)g(application)h +(programs)e(whic)m(h)g(w)m(an)m(t)h(to)227 4464 y(cop)m(y)j(the)f(data) +h(from)f(one)g(FITS)f(\014le)h(to)h(another)f(but)g(also)h(w)m(an)m(t)g +(to)g(mo)s(dify)e(the)h(header)g(k)m(eyw)m(ords)g(in)227 +4577 y(the)j(pro)s(cess.)44 b(all)33 b(the)f(required)f(header)g(k)m +(eyw)m(ords)h(m)m(ust)g(b)s(e)f(written)h(to)g(the)g(OUNIT)f(CHDU)h(b)s +(efore)227 4690 y(calling)g(this)e(routine)382 4910 y +Fe(FTCPDT\(iunit,ounit,)42 b(>)48 b(status\))0 5238 y +Fd(6.3)135 b(De\014ne)45 b(or)g(Rede\014ne)h(the)f(structure)g(of)g +(the)g(CHDU)0 5488 y Fi(It)32 b(should)f(rarely)h(b)s(e)g(necessary)g +(to)h(call)g(the)f(subroutines)f(in)g(this)h(section.)47 +b(FITSIO)30 b(in)m(ternally)j(calls)g(these)0 5601 y(routines)h(whenev) +m(er)g(necessary)-8 b(,)36 b(so)e(an)m(y)g(calls)h(to)g(these)f +(routines)g(b)m(y)g(application)h(programs)f(will)g(lik)m(ely)i(b)s(e)0 +5714 y(redundan)m(t.)p eop end +%%Page: 42 48 +TeXDict begin 42 47 bop 0 299 a Fi(42)1319 b Fg(CHAPTER)29 +b(6.)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(1)81 b Fi(This)36 b(routine)h(forces)h +(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 668 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)f(can)h(initialize)227 +781 y(the)36 b(in)m(ternal)g(bu\013ers)e(that)i(describ)s(e)f(the)h +(HDU)g(structure.)55 b(This)35 b(routine)h(ma)m(y)g(b)s(e)e(used)h +(instead)h(of)227 894 y(the)j(more)g(complicated)i(calls)f(to)f(ftp)s +(def,)h(ftadef)f(or)g(ftb)s(def.)65 b(This)38 b(routine)h(is)g(also)h +(v)m(ery)f(useful)f(for)227 1007 y(reinitializing)e(the)e(structure)g +(of)g(an)f(HDU,)i(if)f(the)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(in)g(a)g +(table,)i(as)e(sp)s(eci\014ed)f(b)m(y)h(the)227 1120 +y(NAXIS2)d(k)m(eyw)m(ord,)g(has)f(b)s(een)g(mo)s(di\014ed)f(from)h(its) +h(initial)g(v)-5 b(alue.)382 1361 y Fe(FTRDEF\(unit,)44 +b(>)k(status\))141 b(\(DEPRECATED\))0 1602 y Fh(2)81 +b Fi(De\014ne)27 b(the)g(structure)g(of)g(the)g(primary)f(arra)m(y)i +(or)f(IMA)m(GE)h(extension.)40 b(When)27 b(writing)g(GR)m(OUP)m(ed)h +(FITS)227 1715 y(\014les)43 b(that)h(b)m(y)e(con)m(v)m(en)m(tion)k(set) +d(the)g(NAXIS1)g(k)m(eyw)m(ord)h(equal)f(to)h(0,)i(ftp)s(def)c(m)m(ust) +h(b)s(e)f(called)i(with)227 1828 y(naxes\(1\))27 b(=)e(1,)i(NOT)e(0,)i +(otherwise)f(FITSIO)e(will)i(rep)s(ort)f(an)g(error)g(status=308)i +(when)d(trying)i(to)g(write)227 1941 y(data)31 b(to)g(a)g(group.)40 +b(Note:)i(it)31 b(is)g(usually)f(simpler)g(to)h(call)h(FTRDEF)e(rather) +h(than)f(this)g(routine.)382 2182 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 2424 y Fh(3)81 b Fi(De\014ne)32 b(the)h(structure)f +(of)g(an)h(ASCI)s(I)e(table)i(\(T)-8 b(ABLE\))33 b(extension.)48 +b(Note:)e(it)33 b(is)f(usually)g(simpler)g(to)i(call)227 +2537 y(FTRDEF)d(rather)f(than)h(this)f(routine.)382 2778 +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 3019 y Fh(4)81 b +Fi(De\014ne)35 b(the)h(structure)f(of)g(a)h(binary)f(table)h(\(BINT)-8 +b(ABLE\))37 b(extension.)56 b(Note:)d(it)36 b(is)f(usually)g(simpler)g +(to)227 3132 y(call)d(FTRDEF)f(rather)f(than)g(this)g(routine.)382 +3373 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\))0 3615 y Fh(5)81 b +Fi(De\014ne)34 b(the)g(size)h(of)f(the)g(Curren)m(t)f(Data)i(Unit,)h(o) +m(v)m(erriding)e(the)g(length)h(of)f(the)g(data)h(unit)e(as)h +(previously)227 3728 y(de\014ned)e(b)m(y)h(ftp)s(def,)g(ftadef,)i(or)e +(ftb)s(def.)48 b(This)33 b(is)g(useful)f(if)i(one)f(do)s(es)g(not)h +(kno)m(w)f(the)g(total)i(size)f(of)g(the)227 3841 y(data)f(unit)f(un)m +(til)h(after)f(the)h(data)g(ha)m(v)m(e)g(b)s(een)f(written.)46 +b(The)32 b(size)h(\(in)f(b)m(ytes\))h(of)g(an)f(ASCI)s(I)f(or)h(Binary) +227 3954 y(table)27 b(is)f(giv)m(en)g(b)m(y)g(NAXIS1)g(*)g(NAXIS2.)40 +b(\(Note)27 b(that)f(to)h(determine)f(the)f(v)-5 b(alue)27 +b(of)f(NAXIS1)f(it)i(is)f(often)227 4066 y(more)32 b(con)m(v)m(enien)m +(t)h(to)f(read)f(the)g(v)-5 b(alue)32 b(of)f(the)h(NAXIS1)f(k)m(eyw)m +(ord)h(from)e(the)i(output)e(\014le,)i(rather)f(than)227 +4179 y(computing)f(the)g(ro)m(w)g(length)h(directly)f(from)f(all)i(the) +f(TF)m(ORM)h(k)m(eyw)m(ord)f(v)-5 b(alues\).)41 b(Note:)h(it)30 +b(is)g(usually)227 4292 y(simpler)g(to)h(call)h(FTRDEF)f(rather)f(than) +g(this)g(routine.)382 4534 y Fe(FTDDEF\(unit,bytlen,)42 +b(>)48 b(status\))e(\(DEPRECATED\))0 4775 y Fh(6)81 b +Fi(De\014ne)22 b(the)g(zero)i(indexed)d(b)m(yte)i(o\013set)g(of)g(the)f +('heap')h(measured)e(from)h(the)h(start)g(of)f(the)g(binary)g(table)h +(data.)227 4888 y(By)30 b(default)g(the)f(heap)h(is)f(assumed)g(to)h +(start)g(immediately)h(follo)m(wing)g(the)f(regular)f(table)i(data,)f +(i.e.,)h(at)227 5001 y(lo)s(cation)38 b(NAXIS1)f(x)g(NAXIS2.)59 +b(This)36 b(routine)g(is)h(only)f(relev)-5 b(an)m(t)38 +b(for)e(binary)g(tables)h(whic)m(h)g(con)m(tain)227 5114 +y(v)-5 b(ariable)36 b(length)g(arra)m(y)f(columns)g(\(with)h(TF)m(ORMn) +f(=)f('Pt'\).)57 b(This)34 b(subroutine)g(also)i(automatically)227 +5227 y(writes)23 b(the)g(v)-5 b(alue)23 b(of)g(theap)g(to)h(a)f(k)m +(eyw)m(ord)g(in)g(the)g(extension)g(header.)38 b(This)22 +b(subroutine)g(m)m(ust)h(b)s(e)f(called)227 5339 y(after)27 +b(the)f(required)f(k)m(eyw)m(ords)i(ha)m(v)m(e)g(b)s(een)e(written)h +(\(with)g(ftph)m(bn\))f(and)h(after)g(the)h(table)g(structure)e(has)227 +5452 y(b)s(een)30 b(de\014ned)f(\(with)h(ftb)s(def)7 +b(\))30 b(but)g(b)s(efore)g(an)m(y)g(data)h(is)g(written)f(to)h(the)g +(table.)382 5694 y Fe(FTPTHP\(unit,theap,)43 b(>)k(status\))p +eop end +%%Page: 43 49 +TeXDict begin 43 48 bop 0 299 a Fg(6.4.)72 b(FITS)30 +b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fi(43)0 555 y +Fd(6.4)135 b(FITS)44 b(Header)i(I/O)f(Subroutines)0 809 +y Fb(6.4.1)112 b(Header)38 b(Space)h(and)f(P)m(osition)f(Routines)0 +1019 y Fh(1)81 b Fi(Reserv)m(e)37 b(space)g(in)f(the)h(CHU)f(for)h +(MOREKEYS)e(more)i(header)f(k)m(eyw)m(ords.)59 b(This)36 +b(subroutine)f(ma)m(y)j(b)s(e)227 1132 y(called)e(to)g(reserv)m(e)g +(space)f(for)g(k)m(eyw)m(ords)g(whic)m(h)g(are)g(to)h(b)s(e)e(written)h +(at)g(a)h(later)g(time,)h(after)e(the)g(data)227 1245 +y(unit)h(or)g(subsequen)m(t)f(extensions)h(ha)m(v)m(e)h(b)s(een)e +(written)h(to)h(the)f(FITS)f(\014le.)58 b(If)35 b(this)h(subroutine)f +(is)h(not)227 1358 y(explicitly)29 b(called,)g(then)e(the)g(initial)i +(size)e(of)h(the)f(FITS)f(header)h(will)h(b)s(e)e(limited)i(to)g(the)f +(space)h(a)m(v)-5 b(ailable)227 1471 y(at)24 b(the)g(time)g(that)g(the) +g(\014rst)f(data)h(is)g(written)f(to)h(the)g(asso)s(ciated)h(data)f +(unit.)38 b(FITSIO)22 b(has)i(the)f(abilit)m(y)i(to)227 +1584 y(dynamically)g(add)e(more)h(space)h(to)g(the)f(header)g(if)g +(needed,)h(ho)m(w)m(ev)m(er)g(it)g(is)f(more)g(e\016cien)m(t)h(to)g +(preallo)s(cate)227 1697 y(the)31 b(required)e(space)i(if)g(the)f(size) +h(is)g(kno)m(wn)f(in)g(adv)-5 b(ance.)382 1958 y Fe +(FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))0 2219 y +Fh(2)81 b Fi(Return)23 b(the)i(n)m(um)m(b)s(er)e(of)h(existing)i(k)m +(eyw)m(ords)e(in)h(the)f(CHU)g(\(NOT)h(including)f(the)g(END)h(k)m(eyw) +m(ord)g(whic)m(h)f(is)227 2332 y(not)g(considered)f(a)g(real)h(k)m(eyw) +m(ord\))g(and)f(the)g(remaining)h(space)f(a)m(v)-5 b(ailable)26 +b(to)e(write)f(additional)i(k)m(eyw)m(ords)227 2445 y(in)39 +b(the)h(CHU.)f(\(returns)f(KEYSADD)i(=)f(-1)h(if)f(the)g(header)g(has)g +(not)h(y)m(et)g(b)s(een)e(closed\).)69 b(Note)40 b(that)227 +2558 y(FITSIO)23 b(will)i(attempt)g(to)g(dynamically)g(add)e(space)i +(for)f(more)g(k)m(eyw)m(ords)h(if)f(required)f(when)g(app)s(ending)227 +2671 y(new)30 b(k)m(eyw)m(ords)h(to)g(a)g(header.)382 +2932 y Fe(FTGHSP\(iunit,)44 b(>)j(keysexist,keysadd,status\))0 +3194 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)f(the)g(header)g(and)g(the)g(curren)m(t)h(p)s(osition)f(in)g +(the)g(header.)68 b(This)227 3307 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)g(b)s(e)f(read)g +(next)h(\(or)g(one)g(greater)g(than)g(the)227 3420 y(p)s(osition)29 +b(of)f(the)h(last)g(k)m(eyw)m(ord)g(that)g(w)m(as)f(read)g(or)h +(written\).)40 b(A)29 b(v)-5 b(alue)28 b(of)h(1)g(is)f(returned)f(if)h +(the)h(p)s(oin)m(ter)227 3533 y(is)i(p)s(ositioned)f(at)h(the)g(b)s +(eginning)e(of)i(the)g(header.)382 3794 y Fe(FTGHPS\(iunit,)44 +b(>)j(keysexist,key_no,status\))0 4086 y Fb(6.4.2)112 +b(Read)38 b(or)f(W)-9 b(rite)37 b(Standard)i(Header)e(Routines)0 +4306 y Fi(These)31 b(subroutines)e(pro)m(vide)i(a)g(simple)g(metho)s(d) +f(of)h(reading)g(or)g(writing)g(most)g(of)g(the)g(k)m(eyw)m(ord)g(v)-5 +b(alues)31 b(that)0 4419 y(are)d(normally)g(required)f(in)h(a)g(FITS)f +(\014les.)40 b(These)27 b(subroutines)g(are)h(pro)m(vided)f(for)h(con)m +(v)m(enience)h(only)f(and)g(are)0 4532 y(not)36 b(required)e(to)i(b)s +(e)f(used.)55 b(If)35 b(preferred,)h(users)e(ma)m(y)i(call)h(the)f(lo)m +(w)m(er-lev)m(el)i(subroutines)c(describ)s(ed)h(in)g(the)0 +4644 y(previous)30 b(section)i(to)g(individually)f(read)f(or)h(write)g +(the)g(required)f(k)m(eyw)m(ords.)43 b(Note)32 b(that)g(in)e(most)i +(cases,)g(the)0 4757 y(required)26 b(k)m(eyw)m(ords)h(suc)m(h)g(as)g +(NAXIS,)f(TFIELD,)h(TTYPEn,)g(etc,)i(whic)m(h)d(de\014ne)g(the)h +(structure)f(of)h(the)g(HDU)0 4870 y(m)m(ust)j(b)s(e)g(written)g(to)i +(the)e(header)g(b)s(efore)g(an)m(y)h(data)g(can)g(b)s(e)e(written)i(to) +g(the)g(image)g(or)g(table.)0 5132 y Fh(1)81 b Fi(Put)37 +b(the)i(primary)e(header)h(or)g(IMA)m(GE)h(extension)f(k)m(eyw)m(ords)h +(in)m(to)g(the)f(CHU.)g(There)g(are)g(2)h(a)m(v)-5 b(ailable)227 +5245 y(routines:)39 b(The)27 b(simpler)f(FTPHPS)h(routine)g(is)g(equiv) +-5 b(alen)m(t)29 b(to)e(calling)i(ftphpr)c(with)i(the)g(default)h(v)-5 +b(alues)227 5357 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 5470 y(and)23 b(EXTEND)h(k)m(eyw)m(ords)g(are)h(not)f +(required)f(in)g(the)h(primary)f(header)g(and)h(are)g(only)g(written)g +(if)f(p)s(coun)m(t)227 5583 y(is)31 b(not)g(equal)h(to)g(zero,)g(gcoun) +m(t)g(is)f(not)g(equal)g(to)h(zero)g(or)f(one,)g(and)g(if)g(extend)g +(is)g(TR)m(UE,)g(resp)s(ectiv)m(ely)-8 b(.)227 5696 y(When)30 +b(writing)h(to)g(an)f(IMA)m(GE)i(extension,)f(the)f(SIMPLE)g(and)g +(EXTEND)g(parameters)h(are)g(ignored.)p eop end +%%Page: 44 50 +TeXDict begin 44 49 bop 0 299 a Fi(44)1319 b Fg(CHAPTER)29 +b(6.)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(FTPHPS\(unit,bitpix,naxis)o(,na)o(xes,)41 +b(>)48 b(status\))382 781 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 1082 y Fh(2)81 b Fi(Get)44 b(primary)e(header)h(or) +h(IMA)m(GE)g(extension)g(k)m(eyw)m(ords)g(from)f(the)g(CHU.)h(When)f +(reading)g(from)g(an)227 1195 y(IMA)m(GE)32 b(extension)f(the)f(SIMPLE) +g(and)f(EXTEND)i(parameters)g(are)f(ignored.)382 1495 +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 1608 y(status\))0 +1909 y Fh(3)81 b Fi(Put)34 b(the)h(ASCI)s(I)f(table)i(header)f(k)m(eyw) +m(ords)g(in)m(to)h(the)f(CHU.)h(The)e(optional)i(TUNITn)e(and)h +(EXTNAME)227 2021 y(k)m(eyw)m(ords)c(are)g(written)f(only)h(if)f(the)h +(input)e(string)h(v)-5 b(alues)31 b(are)g(not)f(blank.)382 +2322 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 +2435 y(status\))0 2736 y Fh(4)81 b Fi(Get)31 b(the)g(ASCI)s(I)d(table)k +(header)e(k)m(eyw)m(ords)h(from)e(the)i(CHU)382 3036 +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 3149 y(extname,status\))0 +3450 y Fh(5)81 b Fi(Put)34 b(the)h(binary)f(table)i(header)e(k)m(eyw)m +(ords)i(in)m(to)f(the)g(CHU.)g(The)g(optional)h(TUNITn)e(and)g(EXTNAME) +227 3563 y(k)m(eyw)m(ords)i(are)g(written)f(only)g(if)h(the)f(input)f +(string)i(v)-5 b(alues)35 b(are)h(not)f(blank.)55 b(The)35 +b(p)s(coun)m(t)g(parameter,)227 3675 y(whic)m(h)f(sp)s(eci\014es)g(the) +h(size)g(of)g(the)f(v)-5 b(ariable)35 b(length)g(arra)m(y)g(heap,)g +(should)f(initially)h(=)f(0;)j(FITSIO)d(will)227 3788 +y(automatically)27 b(up)s(date)c(the)h(PCOUNT)f(k)m(eyw)m(ord)h(v)-5 +b(alue)24 b(if)g(an)m(y)g(v)-5 b(ariable)25 b(length)f(arra)m(y)h(data) +f(is)g(written)227 3901 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)30 b(for)g(v)-5 +b(ariable)30 b(length)g(v)m(ector)h(columns)e(should)g(ha)m(v)m(e)i +(the)227 4014 y(form)c('Pt\(len\)')j(or)d('1Pt\(len\)')j(where)d(`t')h +(is)g(the)g(data)g(t)m(yp)s(e)g(co)s(de)f(letter)i(\(A,I,J,E,D,)g +(etc.\))42 b(and)27 b(`len')h(is)227 4127 y(an)g(in)m(teger)i(sp)s +(ecifying)e(the)g(maxim)m(um)g(length)g(of)h(the)f(v)m(ectors)h(in)f +(that)h(column)f(\(len)g(m)m(ust)g(b)s(e)g(greater)227 +4240 y(than)j(or)h(equal)f(to)i(the)e(longest)i(v)m(ector)f(in)f(the)h +(column\).)44 b(If)30 b(`len')i(is)g(not)f(sp)s(eci\014ed)g(when)f(the) +i(table)g(is)227 4353 y(created)27 b(\(e.g.,)i(the)d(input)f(TF)m(ORMn) +h(v)-5 b(alue)26 b(is)g(just)f('1Pt'\))j(then)d(FITSIO)g(will)h(scan)g +(the)g(column)g(when)227 4466 y(the)k(table)g(is)f(\014rst)g(closed)h +(and)f(will)g(app)s(end)f(the)h(maxim)m(um)h(length)f(to)h(the)g(TF)m +(ORM)f(k)m(eyw)m(ord)h(v)-5 b(alue.)227 4579 y(Note)28 +b(that)e(if)g(the)g(table)h(is)f(subsequen)m(tly)g(mo)s(di\014ed)f(to)i +(increase)f(the)h(maxim)m(um)f(length)g(of)g(the)g(v)m(ectors)227 +4692 y(then)k(the)h(mo)s(difying)f(program)g(is)g(resp)s(onsible)g(for) +g(also)h(up)s(dating)e(the)i(TF)m(ORM)g(k)m(eyw)m(ord)g(v)-5 +b(alue.)382 4992 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 5293 y Fh(6)81 b Fi(Get)31 b(the)g(binary)e(table)i +(header)g(k)m(eyw)m(ords)f(from)g(the)h(CHU)382 5593 +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 5706 y(status\))p +eop end +%%Page: 45 51 +TeXDict begin 45 50 bop 0 299 a Fg(6.4.)72 b(FITS)30 +b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fi(45)0 555 y +Fb(6.4.3)112 b(W)-9 b(rite)37 b(Keyw)m(ord)g(Subroutines)0 +764 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)g(the)g(CHU.)382 1020 y Fe(FTPREC\(unit,card,)43 +b(>)k(status\))0 1276 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)h(the)g(CHU.)f(Multiple)h(COMMENT)f +(k)m(eyw)m(ords)g(will)h(b)s(e)227 1389 y(written)31 +b(if)f(the)h(input)e(commen)m(t)i(string)g(is)f(longer)h(than)f(72)i(c) +m(haracters.)382 1645 y Fe(FTPCOM\(unit,comment,)42 b(>)48 +b(status\))0 1901 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)h(the)f(CHU.)g(Multiple)h(HISTOR)-8 +b(Y)24 b(k)m(eyw)m(ords)h(will)h(b)s(e)e(written)227 +2014 y(if)31 b(the)f(input)g(history)g(string)g(is)h(longer)g(than)f +(72)h(c)m(haracters.)382 2270 y Fe(FTPHIS\(unit,history,)42 +b(>)48 b(status\))0 2526 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)g(the)f(CHU.)h(The)f(k)m +(eyw)m(ord)g(v)-5 b(alue)37 b(will)g(con)m(tain)h(the)e(curren)m(t)227 +2639 y(system)c(date)g(as)g(a)f(c)m(haracter)i(string)f(in)f +('dd/mm/yy')g(format.)44 b(If)31 b(a)h(D)m(A)-8 b(TE)32 +b(k)m(eyw)m(ord)g(already)g(exists)227 2752 y(in)j(the)g(header,)i +(then)d(this)h(subroutine)f(will)i(simply)e(up)s(date)h(the)g(k)m(eyw)m +(ord)g(v)-5 b(alue)36 b(in-place)g(with)f(the)227 2865 +y(curren)m(t)30 b(date.)382 3121 y Fe(FTPDAT\(unit,)44 +b(>)k(status\))0 3377 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)h(datat)m(yp)s(e)g(in)m(to)h +(the)e(CHU.)h(Note)h(that)f(FTPKYS)f(will)227 3490 y(only)33 +b(write)g(string)f(v)-5 b(alues)33 b(up)e(to)j(68)f(c)m(haracters)h(in) +e(length;)i(longer)f(strings)g(will)f(b)s(e)g(truncated.)47 +b(The)227 3603 y(FTPKLS)27 b(routine)h(can)h(b)s(e)f(used)f(to)i(write) +f(longer)h(strings,)g(using)e(a)i(non-standard)e(FITS)h(con)m(v)m(en)m +(tion.)227 3716 y(The)23 b(E)h(and)f(D)h(v)m(ersions)g(of)g(this)f +(routine)h(ha)m(v)m(e)h(the)f(added)f(feature)h(that)g(if)g(the)g +('decimals')h(parameter)f(is)227 3829 y(negativ)m(e,)i(then)20 +b(the)i('G')g(displa)m(y)f(format)g(rather)g(then)g(the)g('E')h(format) +f(will)h(b)s(e)e(used)g(when)g(constructing)227 3942 +y(the)25 b(k)m(eyw)m(ord)f(v)-5 b(alue,)26 b(taking)f(the)g(absolute)g +(v)-5 b(alue)24 b(of)h('decimals')g(for)f(the)g(precision.)39 +b(This)23 b(will)i(suppress)227 4055 y(trailing)35 b(zeros,)h(and)d +(will)i(use)e(a)i(\014xed)e(format)h(rather)g(than)f(an)h(exp)s(onen)m +(tial)h(format,)h(dep)s(ending)c(on)227 4168 y(the)f(magnitude)f(of)h +(the)f(v)-5 b(alue.)382 4424 y Fe(FTPKY[JKLS]\(unit,keyword)o(,ke)o +(yval)o(,com)o(men)o(t,)42 b(>)47 b(status\))382 4537 +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 4793 y Fh(6)81 b Fi(Put)33 +b(\(app)s(end\))h(a)g(string)g(v)-5 b(alued)34 b(k)m(eyw)m(ord)h(in)m +(to)g(the)g(CHU)f(whic)m(h)g(ma)m(y)g(b)s(e)g(longer)h(than)e(68)i(c)m +(haracters)227 4906 y(in)j(length.)64 b(This)37 b(uses)h(the)g(Long)g +(String)g(Keyw)m(ord)g(con)m(v)m(en)m(tion)i(that)e(is)g(describ)s(ed)f +(in)h(the)g("Usage)227 5019 y(Guidelines)33 b(and)e(Suggestions")j +(section)f(of)g(this)f(do)s(cumen)m(t.)46 b(Since)33 +b(this)f(uses)g(a)g(non-standard)g(FITS)227 5132 y(con)m(v)m(en)m(tion) +38 b(to)d(enco)s(de)h(the)f(long)h(k)m(eyw)m(ord)f(string,)i(programs)d +(whic)m(h)h(use)g(this)g(routine)g(should)f(also)227 +5245 y(call)e(the)e(FTPLSW)g(routine)h(to)g(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 +5357 y(that)36 b(this)f(con)m(v)m(en)m(tion)j(is)d(b)s(eing)g(used.)55 +b(FTPLSW)35 b(also)h(writes)g(a)f(k)m(eyw)m(ord)h(called)h(LONGSTRN)d +(to)227 5470 y(record)c(the)h(v)m(ersion)f(of)h(the)f(longstring)h(con) +m(v)m(en)m(tion)h(that)f(has)f(b)s(een)g(used,)f(in)h(case)h(a)g(new)f +(con)m(v)m(en)m(tion)227 5583 y(is)f(adopted)g(at)g(some)g(p)s(oin)m(t) +f(in)h(the)f(future.)40 b(If)28 b(the)g(LONGSTRN)g(k)m(eyw)m(ord)h(is)g +(already)g(presen)m(t)f(in)h(the)227 5696 y(header,)i(then)f(FTPLSW)g +(will)g(simply)g(return)g(and)f(will)i(not)g(write)f(duplicate)h(k)m +(eyw)m(ords.)p eop end +%%Page: 46 52 +TeXDict begin 46 51 bop 0 299 a Fi(46)1319 b Fg(CHAPTER)29 +b(6.)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(FTPKLS\(unit,keyword,keyv)o(al,)o(comm)o +(ent,)41 b(>)47 b(status\))382 668 y(FTPLSW\(unit,)d(>)k(status\))0 +889 y Fh(7)81 b Fi(Put)30 b(\(app)s(end\))g(a)h(new)f(k)m(eyw)m(ord)h +(with)f(an)h(unde\014ned,)e(or)h(n)m(ull,)h(v)-5 b(alue)31 +b(in)m(to)h(the)f(CHU.)g(The)f(v)-5 b(alue)31 b(string)227 +1002 y(of)g(the)f(k)m(eyw)m(ord)h(is)g(left)g(blank)f(in)g(this)g +(case.)382 1223 y Fe(FTPKYU\(unit,keyword,comm)o(ent)o(,)42 +b(>)47 b(status\))0 1445 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)h(the)g +(CHU.)f(One)f(ma)m(y)i(app)s(end)d(the)j(same)227 1558 +y(commen)m(t)37 b(to)g(ev)m(ery)g(k)m(eyw)m(ord)g(\(and)f(eliminate)h +(the)g(need)f(to)h(ha)m(v)m(e)g(an)f(arra)m(y)h(of)f(iden)m(tical)i +(commen)m(t)227 1670 y(strings,)g(one)e(for)g(eac)m(h)h(k)m(eyw)m +(ord\))g(b)m(y)f(including)g(the)g(amp)s(ersand)e(c)m(haracter)k(as)e +(the)h(last)g(non-blank)227 1783 y(c)m(haracter)g(in)e(the)h +(\(\014rst\))f(COMMENTS)f(string)h(parameter.)56 b(This)35 +b(same)g(string)h(will)f(then)g(b)s(e)g(used)227 1896 +y(for)30 b(the)g(commen)m(t)h(\014eld)f(in)f(all)i(the)f(k)m(eyw)m +(ords.)41 b(\(Note)32 b(that)e(the)g(SPP)f(v)m(ersion)i(of)f(these)g +(routines)g(only)227 2009 y(supp)s(orts)f(a)i(single)g(commen)m(t)g +(string\).)382 2230 y Fe(FTPKN[JKLS]\(unit,keyroot)o(,st)o(artn)o(o,no) +o(_ke)o(ys,k)o(eyva)o(ls,)o(comm)o(ents)o(,)42 b(>)47 +b(status\))382 2343 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 2456 y(status\))0 2677 y Fh(9)81 b Fi(Cop)m(y)21 +b(an)h(indexed)f(k)m(eyw)m(ord)i(from)e(one)h(HDU)h(to)f(another,)i(mo) +s(difying)e(the)g(index)f(n)m(um)m(b)s(er)f(of)i(the)g(k)m(eyw)m(ord) +227 2790 y(name)37 b(in)f(the)g(pro)s(cess.)58 b(F)-8 +b(or)37 b(example,)i(this)d(routine)h(could)f(read)g(the)h(TLMIN3)f(k)m +(eyw)m(ord)h(from)f(the)227 2903 y(input)28 b(HDU)h(\(b)m(y)f(giving)h +(k)m(eyro)s(ot)h(=)d("TLMIN")i(and)f(inn)m(um)f(=)h(3\))h(and)f(write)g +(it)h(to)g(the)f(output)g(HDU)227 3016 y(with)36 b(the)g(k)m(eyw)m(ord) +h(name)f(TLMIN4)g(\(b)m(y)g(setting)i(outn)m(um)d(=)h(4\).)58 +b(If)36 b(the)g(input)f(k)m(eyw)m(ord)i(do)s(es)f(not)227 +3129 y(exist,)c(then)e(this)g(routine)g(simply)g(returns)f(without)i +(indicating)g(an)f(error.)382 3350 y Fe(FTCPKY\(inunit,)44 +b(outunit,)h(innum,)h(outnum,)g(keyroot,)g(>)h(status\))0 +3571 y Fh(10)f Fi(Put)33 b(\(app)s(end\))f(a)h('triple)h(precision')g +(k)m(eyw)m(ord)f(in)m(to)h(the)g(CHU)f(in)g(F28.16)i(format.)49 +b(The)33 b(\015oating)h(p)s(oin)m(t)227 3684 y(k)m(eyw)m(ord)c(v)-5 +b(alue)30 b(is)f(constructed)h(b)m(y)f(concatenating)j(the)d(input)g +(in)m(teger)i(v)-5 b(alue)29 b(with)g(the)h(input)e(double)227 +3797 y(precision)22 b(fraction)h(v)-5 b(alue)23 b(\(whic)m(h)f(m)m(ust) +g(ha)m(v)m(e)h(a)f(v)-5 b(alue)23 b(b)s(et)m(w)m(een)g(0.0)g(and)e +(1.0\).)40 b(The)21 b(FTGKYT)h(routine)227 3910 y(should)35 +b(b)s(e)h(used)f(to)i(read)f(this)f(k)m(eyw)m(ord)i(v)-5 +b(alue,)38 b(b)s(ecause)e(the)g(other)h(k)m(eyw)m(ord)f(reading)g +(subroutines)227 4023 y(will)31 b(not)g(preserv)m(e)f(the)h(full)f +(precision)g(of)h(the)f(v)-5 b(alue.)382 4244 y Fe +(FTPKYT\(unit,keyword,intv)o(al,)o(dblv)o(al,c)o(omm)o(ent,)41 +b(>)48 b(status\))0 4466 y Fh(11)e Fi(W)-8 b(rite)36 +b(k)m(eyw)m(ords)g(to)f(the)h(CHDU)f(that)h(are)f(de\014ned)f(in)g(an)h +(ASCI)s(I)f(template)i(\014le.)55 b(The)34 b(format)i(of)f(the)227 +4578 y(template)d(\014le)f(is)f(describ)s(ed)f(under)g(the)i(ftgthd)f +(routine)g(b)s(elo)m(w.)382 4800 y Fe(FTPKTP\(unit,)44 +b(filename,)i(>)h(status\))0 5021 y Fh(12)f Fi(App)s(end)28 +b(the)i(ph)m(ysical)g(units)g(string)g(to)g(an)g(existing)h(k)m(eyw)m +(ord.)41 b(This)29 b(routine)h(uses)f(a)h(lo)s(cal)i(con)m(v)m(en)m +(tion,)227 5134 y(sho)m(wn)g(in)g(the)h(follo)m(wing)h(example,)g(in)e +(whic)m(h)g(the)h(k)m(eyw)m(ord)g(units)f(are)h(enclosed)g(in)f(square) +g(brac)m(k)m(ets)227 5247 y(in)e(the)h(b)s(eginning)f(of)g(the)h(k)m +(eyw)m(ord)g(commen)m(t)g(\014eld.)239 5468 y Fe(VELOCITY=)809 +b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382 5694 y +(FTPUNT\(unit,keyword,unit)o(s,)41 b(>)48 b(status\))p +eop end +%%Page: 47 53 +TeXDict begin 47 52 bop 0 299 a Fg(6.4.)72 b(FITS)30 +b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fi(47)0 555 y +Fb(6.4.4)112 b(Insert)38 b(Keyw)m(ord)f(Subroutines)0 +762 y Fh(1)81 b Fi(Insert)26 b(a)h(new)f(k)m(eyw)m(ord)h(record)g(in)m +(to)g(the)g(CHU)g(at)g(the)g(sp)s(eci\014ed)f(p)s(osition)h(\(i.e.,)i +(immediately)f(preceding)227 875 y(the)34 b(\(k)m(eyno\)th)g(k)m(eyw)m +(ord)g(in)f(the)h(header.\))49 b(This)33 b('insert)g(record')h +(subroutine)e(is)h(somewhat)h(less)g(e\016-)227 988 y(cien)m(t)28 +b(then)f(the)g('app)s(end)e(record')i(subroutine)f(\(FTPREC\))g +(describ)s(ed)g(ab)s(o)m(v)m(e)i(b)s(ecause)f(the)g(remaining)227 +1101 y(k)m(eyw)m(ords)k(in)f(the)h(header)f(ha)m(v)m(e)h(to)g(b)s(e)f +(shifted)g(do)m(wn)g(one)h(slot.)382 1349 y Fe +(FTIREC\(unit,key_no,card,)41 b(>)47 b(status\))0 1598 +y Fh(2)81 b Fi(Insert)36 b(a)h(new)f(k)m(eyw)m(ord)i(in)m(to)g(the)f +(CHU.)g(The)f(new)g(k)m(eyw)m(ord)i(is)f(inserted)f(immediately)i +(follo)m(wing)h(the)227 1711 y(last)27 b(k)m(eyw)m(ord)g(that)f(has)g +(b)s(een)g(read)g(from)f(the)h(header.)40 b(The)25 b(FTIKLS)g +(subroutine)g(w)m(orks)h(the)g(same)h(as)227 1824 y(the)h(FTIKYS)e +(subroutine,)h(except)i(it)f(also)g(supp)s(orts)e(long)i(string)f(v)-5 +b(alues)28 b(greater)g(than)f(68)h(c)m(haracters)227 +1937 y(in)36 b(length.)59 b(These)36 b('insert)g(k)m(eyw)m(ord')h +(subroutines)e(are)i(somewhat)g(less)f(e\016cien)m(t)i(then)e(the)g +('app)s(end)227 2049 y(k)m(eyw)m(ord')30 b(subroutines)e(describ)s(ed)g +(ab)s(o)m(v)m(e)i(b)s(ecause)f(the)g(remaining)h(k)m(eyw)m(ords)f(in)g +(the)g(header)g(ha)m(v)m(e)h(to)227 2162 y(b)s(e)g(shifted)g(do)m(wn)g +(one)h(slot.)382 2411 y Fe(FTIKEY\(unit,)44 b(card,)j(>)g(status\))382 +2524 y(FTIKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o(men)o(t,)42 +b(>)47 b(status\))382 2637 y(FTIKLS\(unit,keyword,keyv)o(al,)o(comm)o +(ent,)41 b(>)47 b(status\))382 2750 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 +2998 y Fh(3)81 b Fi(Insert)32 b(a)i(new)f(k)m(eyw)m(ord)h(with)f(an)h +(unde\014ned,)e(or)h(n)m(ull,)h(v)-5 b(alue)34 b(in)m(to)h(the)e(CHU.)h +(The)f(v)-5 b(alue)34 b(string)f(of)h(the)227 3111 y(k)m(eyw)m(ord)d +(is)g(left)g(blank)f(in)g(this)g(case.)382 3359 y Fe +(FTIKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 +3648 y Fb(6.4.5)112 b(Read)38 b(Keyw)m(ord)g(Subroutines)0 +3867 y Fi(These)29 b(routines)f(return)g(the)h(v)-5 b(alue)29 +b(of)g(the)g(sp)s(eci\014ed)f(k)m(eyw)m(ord\(s\).)41 +b(Wild)30 b(card)e(c)m(haracters)i(\(*,)h(?,)e(or)g(#\))f(ma)m(y)0 +3980 y(b)s(e)f(used)h(when)f(sp)s(ecifying)h(the)g(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)28 b(matc)m(h)h(an)m(y)g(single)f(c)m(haracter)0 +4093 y(at)38 b(that)g(p)s(osition)f(in)g(the)h(k)m(eyw)m(ord)g(name)f +(and)g(a)g('*')i(will)e(matc)m(h)h(an)m(y)g(length)g(\(including)f +(zero\))h(string)g(of)0 4206 y(c)m(haracters.)65 b(The)37 +b('#')h(c)m(haracter)h(will)f(matc)m(h)h(an)m(y)f(consecutiv)m(e)i +(string)e(of)g(decimal)h(digits)f(\(0)h(-)f(9\).)64 b(Note)0 +4319 y(that)30 b(when)f(a)g(wild)g(card)h(is)f(used)g(in)g(the)h(input) +e(k)m(eyw)m(ord)i(name,)g(the)g(routine)f(will)h(only)g(searc)m(h)g +(for)f(a)h(matc)m(h)0 4432 y(from)h(the)h(curren)m(t)g(header)g(p)s +(osition)g(to)g(the)h(end)e(of)h(the)g(header.)45 b(It)32 +b(will)g(not)g(resume)g(the)g(searc)m(h)g(from)g(the)0 +4545 y(top)i(of)h(the)f(header)g(bac)m(k)h(to)g(the)f(original)h +(header)f(p)s(osition)g(as)h(is)f(done)g(when)f(no)h(wildcards)f(are)i +(included)0 4657 y(in)f(the)g(k)m(eyw)m(ord)h(name.)52 +b(If)33 b(the)h(desired)g(k)m(eyw)m(ord)h(string)f(is)g(8-c)m +(haracters)i(long)f(\(the)f(maxim)m(um)g(length)h(of)0 +4770 y(a)h(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)g(c)m(haracter)h(of)f(the)f(input)g +(name)h(to)g(force)0 4883 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)f(searc)m(h)g(for)g(the)g(next)0 4996 y(COMMENT)37 +b(k)m(eyw)m(ord\).)64 b(The)37 b(\013grec)i(routine)f(ma)m(y)g(b)s(e)f +(used)g(to)i(set)f(the)g(starting)g(p)s(osition)g(when)f(doing)0 +5109 y(wild)30 b(card)g(searc)m(hes.)0 5357 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)e(the)h(header)g(is)g +(at)227 5470 y(k)m(ey)p 365 5470 28 4 v 34 w(no)42 b(=)f(1;)49 +b(if)42 b(k)m(ey)p 996 5470 V 34 w(no)g(=)f(0)i(then)e(this)h +(subroutine)f(simple)h(mo)m(v)m(es)i(the)e(in)m(ternal)h(p)s(oin)m(ter) +f(to)h(the)227 5583 y(b)s(eginning)35 b(of)h(the)g(header)f(so)h(that)g +(subsequen)m(t)f(k)m(eyw)m(ord)h(op)s(erations)g(will)g(start)g(at)g +(the)g(top)g(of)g(the)227 5696 y(header;)31 b(it)g(also)g(returns)e(a)i +(blank)f(card)g(v)-5 b(alue)31 b(in)f(this)g(case.)p +eop end +%%Page: 48 54 +TeXDict begin 48 53 bop 0 299 a Fi(48)1319 b Fg(CHAPTER)29 +b(6.)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(FTGREC\(unit,key_no,)42 +b(>)48 b(card,status\))0 817 y Fh(2)81 b Fi(Get)31 b(the)g(name,)f(v)-5 +b(alue)31 b(\(as)g(a)g(string\),)g(and)f(commen)m(t)i(of)e(the)h(n)m +(th)f(k)m(eyw)m(ord)h(in)f(CHU.)h(This)f(routine)g(also)227 +930 y(c)m(hec)m(ks)h(that)f(the)g(returned)e(k)m(eyw)m(ord)i(name)f +(\(KEYW)m(ORD\))i(con)m(tains)g(only)e(legal)i(ASCI)s(I)d(c)m +(haracters.)227 1043 y(Call)j(FTGREC)f(and)g(FTPSV)m(C)g(to)h(b)m +(ypass)f(this)g(error)g(c)m(hec)m(k.)382 1305 y Fe +(FTGKYN\(unit,key_no,)42 b(>)48 b(keyword,value,comment,st)o(atu)o(s\)) +0 1568 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 1830 y Fe +(FTGCRD\(unit,keyword,)42 b(>)48 b(card,status\))0 2092 +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)g(in)g('inclist')i(but)d(do)s +(es)h(not)g(matc)m(h)i(an)m(y)227 2205 y(of)32 b(the)f(strings)g(in)g +('exclist'.)45 b(The)30 b(strings)h(in)g(inclist)h(and)f(exclist)h(ma)m +(y)g(con)m(tain)h(wild)d(card)h(c)m(haracters)227 2318 +y(\(*,)38 b(?,)e(and)e(#\))i(as)f(describ)s(ed)f(at)i(the)f(b)s +(eginning)f(of)i(this)f(section.)56 b(This)34 b(routine)h(searc)m(hes)h +(from)f(the)227 2431 y(curren)m(t)28 b(header)f(p)s(osition)h(to)g(the) +g(end)f(of)h(the)g(header,)g(only)-8 b(,)29 b(and)e(do)s(es)g(not)h +(con)m(tin)m(ue)h(the)f(searc)m(h)g(from)227 2544 y(the)41 +b(top)g(of)g(the)g(header)g(bac)m(k)h(to)f(the)g(original)h(p)s +(osition.)73 b(The)40 b(curren)m(t)h(header)f(p)s(osition)h(ma)m(y)h(b) +s(e)227 2657 y(reset)33 b(with)e(the)h(ftgrec)h(routine.)44 +b(Note)33 b(that)g(nexc)f(ma)m(y)g(b)s(e)f(set)h(=)g(0)g(if)f(there)h +(are)g(no)g(k)m(eyw)m(ords)g(to)h(b)s(e)227 2769 y(excluded.)41 +b(This)29 b(routine)i(returns)e(status)i(=)f(202)h(if)g(a)f(matc)m +(hing)i(k)m(eyw)m(ord)f(is)f(not)h(found.)382 3032 y +Fe(FTGNXK\(unit,inclist,ninc)o(,ex)o(clis)o(t,ne)o(xc,)41 +b(>)48 b(card,status\))0 3294 y Fh(5)81 b Fi(Get)30 b(the)g(literal)i +(k)m(eyw)m(ord)e(v)-5 b(alue)30 b(as)g(a)g(c)m(haracter)i(string.)40 +b(Regardless)31 b(of)f(the)g(datat)m(yp)s(e)g(of)g(the)g(k)m(eyw)m +(ord,)227 3407 y(this)37 b(routine)g(simply)g(returns)f(the)h(string)g +(of)g(c)m(haracters)i(in)d(the)i(v)-5 b(alue)37 b(\014eld)g(of)g(the)g +(k)m(eyw)m(ord)h(along)227 3520 y(with)30 b(the)h(commen)m(t)g +(\014eld.)382 3782 y Fe(FTGKEY\(unit,keyword,)42 b(>)48 +b(value,comment,status\))0 4044 y Fh(6)81 b Fi(Get)31 +b(a)g(k)m(eyw)m(ord)g(v)-5 b(alue)30 b(\(with)h(the)f(appropriate)h +(datat)m(yp)s(e\))g(and)f(commen)m(t)i(from)e(the)g(CHU)382 +4306 y Fe(FTGKY[EDJKLS]\(unit,keywo)o(rd,)41 b(>)48 b +(keyval,comment,status\))0 4568 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.)38 b(These)24 b(routines)f(do)g(not)h(supp)s(ort)e(wild)h +(card)g(c)m(haracters)227 4681 y(in)30 b(the)h(ro)s(ot)g(name.)382 +4943 y Fe(FTGKN[EDJKLS]\(unit,keyro)o(ot,)o(star)o(tno,)o(max)o(_key)o +(s,)42 b(>)47 b(keyvals,nfound,status\))0 5206 y Fh(8)81 +b Fi(Get)27 b(the)f(v)-5 b(alue)26 b(of)h(a)f(\015oating)h(p)s(oin)m(t) +f(k)m(eyw)m(ord,)i(returning)d(the)h(in)m(teger)h(and)f(fractional)h +(parts)f(of)g(the)g(v)-5 b(alue)227 5319 y(in)32 b(separate)g +(subroutine)f(argumen)m(ts.)45 b(This)31 b(subroutine)f(ma)m(y)j(b)s(e) +e(used)g(to)h(read)g(an)m(y)g(k)m(eyw)m(ord)g(but)f(is)227 +5431 y(esp)s(ecially)h(useful)d(for)i(reading)f(the)h('triple)g +(precision')f(k)m(eyw)m(ords)h(written)g(b)m(y)f(FTPKYT.)382 +5694 y Fe(FTGKYT\(unit,keyword,)42 b(>)48 b(intval,dblval,comment,s)o +(tat)o(us\))p eop end +%%Page: 49 55 +TeXDict begin 49 54 bop 0 299 a Fg(6.4.)72 b(FITS)30 +b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fi(49)0 555 y +Fh(9)81 b Fi(Get)24 b(the)g(ph)m(ysical)h(units)e(string)g(in)h(an)f +(existing)i(k)m(eyw)m(ord.)39 b(This)23 b(routine)h(uses)f(a)h(lo)s +(cal)h(con)m(v)m(en)m(tion,)j(sho)m(wn)227 668 y(in)33 +b(the)h(follo)m(wing)g(example,)h(in)e(whic)m(h)g(the)g(k)m(eyw)m(ord)h +(units)f(are)g(enclosed)h(in)f(square)g(brac)m(k)m(ets)i(in)e(the)227 +781 y(b)s(eginning)h(of)h(the)g(k)m(eyw)m(ord)g(commen)m(t)h(\014eld.) +53 b(A)35 b(blank)g(string)f(is)h(returned)f(if)g(no)h(units)f(are)h +(de\014ned)227 894 y(for)30 b(the)h(k)m(eyw)m(ord.)191 +1132 y Fe(VELOCITY=)809 b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382 +1358 y(FTGUNT\(unit,keyword,)c(>)48 b(units,status\))0 +1645 y Fb(6.4.6)112 b(Mo)s(dify)39 b(Keyw)m(ord)e(Subroutines)0 +1864 y Fi(Wild)32 b(card)f(c)m(haracters,)j(as)e(describ)s(ed)e(in)h +(the)h(Read)g(Keyw)m(ord)f(section,)i(ab)s(o)m(v)m(e,)g(ma)m(y)g(b)s(e) +d(used)h(when)g(sp)s(eci-)0 1977 y(fying)f(the)h(name)f(of)h(the)f(k)m +(eyw)m(ord)h(to)g(b)s(e)f(mo)s(di\014ed.)0 2215 y Fh(1)81 +b Fi(Mo)s(dify)30 b(\(o)m(v)m(erwrite\))i(the)f(n)m(th)f(80-c)m +(haracter)j(header)d(record)h(in)f(the)g(CHU)382 2453 +y Fe(FTMREC\(unit,key_no,card,)41 b(>)47 b(status\))0 +2692 y Fh(2)81 b Fi(Mo)s(dify)37 b(\(o)m(v)m(erwrite\))j(the)e(80-c)m +(haracter)j(header)c(record)h(for)f(the)h(named)f(k)m(eyw)m(ord)h(in)g +(the)g(CHU.)g(This)227 2805 y(can)31 b(b)s(e)f(used)f(to)i(o)m(v)m +(erwrite)h(the)f(name)f(of)h(the)f(k)m(eyw)m(ord)h(as)g(w)m(ell)g(as)g +(its)g(v)-5 b(alue)30 b(and)g(commen)m(t)i(\014elds.)382 +3043 y Fe(FTMCRD\(unit,keyword,card)o(,)42 b(>)47 b(status\))0 +3281 y Fh(3)81 b Fi(Mo)s(dify)33 b(\(o)m(v)m(erwrite\))k(the)d(name)g +(of)h(an)f(existing)h(k)m(eyw)m(ord)f(in)g(the)h(CHU)f(preserving)f +(the)i(curren)m(t)e(v)-5 b(alue)227 3394 y(and)30 b(commen)m(t)h +(\014elds.)382 3632 y Fe(FTMNAM\(unit,oldkey,keywo)o(rd,)41 +b(>)48 b(status\))0 3870 y Fh(4)81 b Fi(Mo)s(dify)30 +b(\(o)m(v)m(erwrite\))i(the)f(commen)m(t)g(\014eld)f(of)h(an)f +(existing)h(k)m(eyw)m(ord)g(in)f(the)h(CHU)382 4108 y +Fe(FTMCOM\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 +4347 y Fh(5)81 b Fi(Mo)s(dify)24 b(the)h(v)-5 b(alue)25 +b(and)f(commen)m(t)i(\014elds)e(of)h(an)f(existing)i(k)m(eyw)m(ord)f +(in)f(the)h(CHU.)g(The)f(FTMKLS)g(subrou-)227 4459 y(tine)35 +b(w)m(orks)e(the)h(same)h(as)f(the)g(FTMKYS)f(subroutine,)h(except)h +(it)g(also)f(supp)s(orts)e(long)j(string)f(v)-5 b(alues)227 +4572 y(greater)38 b(than)f(68)h(c)m(haracters)g(in)f(length.)60 +b(Optionally)-8 b(,)40 b(one)d(ma)m(y)h(mo)s(dify)e(only)h(the)g(v)-5 +b(alue)37 b(\014eld)g(and)227 4685 y(lea)m(v)m(e)32 b(the)d(commen)m(t) +i(\014eld)e(unc)m(hanged)g(b)m(y)g(setting)h(the)g(input)e(COMMENT)h +(parameter)h(equal)g(to)g(the)227 4798 y(amp)s(ersand)f(c)m(haracter)k +(\(&\).)42 b(The)30 b(E)g(and)g(D)h(v)m(ersions)g(of)g(this)g(routine)f +(ha)m(v)m(e)i(the)f(added)f(feature)h(that)227 4911 y(if)26 +b(the)h('decimals')g(parameter)g(is)f(negativ)m(e,)k(then)c(the)g('G')h +(displa)m(y)f(format)h(rather)f(then)g(the)g('E')h(format)227 +5024 y(will)i(b)s(e)f(used)f(when)h(constructing)h(the)f(k)m(eyw)m(ord) +h(v)-5 b(alue,)30 b(taking)f(the)g(absolute)g(v)-5 b(alue)29 +b(of)f('decimals')i(for)227 5137 y(the)37 b(precision.)60 +b(This)35 b(will)i(suppress)e(trailing)i(zeros,)i(and)d(will)h(use)g(a) +g(\014xed)e(format)i(rather)g(than)f(an)227 5250 y(exp)s(onen)m(tial)c +(format,)f(dep)s(ending)d(on)j(the)f(magnitude)h(of)f(the)h(v)-5 +b(alue.)382 5488 y Fe(FTMKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o +(men)o(t,)42 b(>)47 b(status\))382 5601 y(FTMKLS\(unit,keyword,keyv)o +(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 5714 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\))p eop end +%%Page: 50 56 +TeXDict begin 50 55 bop 0 299 a Fi(50)1319 b Fg(CHAPTER)29 +b(6.)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(Mo)s(dify)22 b(the)g(v)-5 +b(alue)23 b(of)f(an)g(existing)i(k)m(eyw)m(ord)e(to)h(b)s(e)f +(unde\014ned,)g(or)g(n)m(ull.)38 b(The)22 b(v)-5 b(alue)22 +b(string)h(of)f(the)g(k)m(eyw)m(ord)227 668 y(is)30 b(set)h(to)g +(blank.)40 b(Optionally)-8 b(,)31 b(one)f(ma)m(y)h(lea)m(v)m(e)h(the)f +(commen)m(t)g(\014eld)e(unc)m(hanged)h(b)m(y)g(setting)h(the)f(input) +227 781 y(COMMENT)g(parameter)h(equal)g(to)g(the)g(amp)s(ersand)e(c)m +(haracter)j(\(&\).)382 1034 y Fe(FTMKYU\(unit,keyword,comm)o(ent)o(,)42 +b(>)47 b(status\))0 1324 y Fb(6.4.7)112 b(Up)s(date)39 +b(Keyw)m(ord)e(Subroutines)0 1532 y Fh(1)81 b Fi(Up)s(date)36 +b(an)g(80-c)m(haracter)j(record)d(in)g(the)h(CHU.)f(If)g(the)g(sp)s +(eci\014ed)g(k)m(eyw)m(ord)h(already)f(exists)h(then)f(that)227 +1645 y(header)j(record)f(will)h(b)s(e)f(replaced)i(with)e(the)h(input)f +(CARD)g(string.)66 b(If)38 b(it)i(do)s(es)e(not)h(exist)g(then)g(the) +227 1758 y(new)f(record)g(will)g(b)s(e)f(added)h(to)g(the)g(header.)64 +b(The)37 b(FTUKLS)g(subroutine)g(w)m(orks)h(the)g(same)h(as)f(the)227 +1870 y(FTUKYS)28 b(subroutine,)g(except)i(it)f(also)h(supp)s(orts)c +(long)j(string)g(v)-5 b(alues)29 b(greater)h(than)e(68)h(c)m(haracters) +h(in)227 1983 y(length.)382 2237 y Fe(FTUCRD\(unit,keyword,card)o(,)42 +b(>)47 b(status\))0 2490 y Fh(2)81 b Fi(Up)s(date)44 +b(the)i(v)-5 b(alue)45 b(and)g(commen)m(t)h(\014elds)e(of)h(a)h(k)m +(eyw)m(ord)f(in)g(the)g(CHU.)h(The)e(sp)s(eci\014ed)g(k)m(eyw)m(ord)i +(is)227 2603 y(mo)s(di\014ed)38 b(if)g(it)h(already)g(exists)g(\(b)m(y) +g(calling)h(FTMKYx\))f(otherwise)f(a)h(new)f(k)m(eyw)m(ord)h(is)g +(created)g(b)m(y)227 2716 y(calling)f(FTPKYx.)58 b(The)36 +b(E)g(and)f(D)i(v)m(ersions)f(of)h(this)f(routine)g(ha)m(v)m(e)h(the)g +(added)e(feature)i(that)g(if)f(the)227 2828 y('decimals')c(parameter)g +(is)f(negativ)m(e,)i(then)d(the)h('G')h(displa)m(y)f(format)g(rather)g +(then)f(the)h('E')g(format)h(will)227 2941 y(b)s(e)41 +b(used)f(when)h(constructing)h(the)f(k)m(eyw)m(ord)h(v)-5 +b(alue,)45 b(taking)d(the)f(absolute)h(v)-5 b(alue)42 +b(of)g('decimals')g(for)227 3054 y(the)37 b(precision.)60 +b(This)35 b(will)i(suppress)e(trailing)i(zeros,)i(and)d(will)h(use)g(a) +g(\014xed)e(format)i(rather)g(than)f(an)227 3167 y(exp)s(onen)m(tial)c +(format,)f(dep)s(ending)d(on)j(the)f(magnitude)h(of)f(the)h(v)-5 +b(alue.)382 3420 y Fe(FTUKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o +(men)o(t,)42 b(>)47 b(status\))382 3533 y(FTUKLS\(unit,keyword,keyv)o +(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 3646 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 3899 y Fh(3)81 b Fi(Up)s(date)23 +b(the)g(v)-5 b(alue)24 b(of)g(an)f(existing)i(k)m(eyw)m(ord)f(to)g(b)s +(e)f(unde\014ned,)f(or)i(n)m(ull,)h(or)e(insert)h(a)f(new)g +(unde\014ned-v)-5 b(alue)227 4012 y(k)m(eyw)m(ord)30 +b(if)f(it)h(do)s(esn't)f(already)h(exist.)41 b(The)29 +b(v)-5 b(alue)30 b(string)f(of)g(the)h(k)m(eyw)m(ord)f(is)h(left)g +(blank)f(in)f(this)i(case.)382 4265 y Fe(FTUKYU\(unit,keyword,comm)o +(ent)o(,)42 b(>)47 b(status\))0 4555 y Fb(6.4.8)112 b(Delete)38 +b(Keyw)m(ord)f(Subroutines)0 4763 y Fh(1)81 b Fi(Delete)32 +b(an)e(existing)h(k)m(eyw)m(ord)g(record.)40 b(The)30 +b(space)h(previously)f(o)s(ccupied)g(b)m(y)g(the)g(k)m(eyw)m(ord)h(is)f +(reclaimed)227 4876 y(b)m(y)c(mo)m(ving)h(all)g(the)f(follo)m(wing)i +(header)e(records)g(up)f(one)h(ro)m(w)h(in)e(the)i(header.)39 +b(The)25 b(\014rst)h(routine)g(deletes)227 4989 y(a)34 +b(k)m(eyw)m(ord)f(at)h(a)g(sp)s(eci\014ed)e(p)s(osition)h(in)g(the)g +(header)g(\(the)h(\014rst)e(k)m(eyw)m(ord)i(is)f(at)h(p)s(osition)f +(1\),)i(whereas)227 5102 y(the)d(second)g(routine)g(deletes)h(a)f(sp)s +(eci\014cally)g(named)f(k)m(eyw)m(ord.)46 b(Wild)32 b(card)f(c)m +(haracters,)j(as)e(describ)s(ed)227 5215 y(in)f(the)g(Read)g(Keyw)m +(ord)f(section,)i(ab)s(o)m(v)m(e,)g(ma)m(y)g(b)s(e)e(used)g(when)f(sp)s +(ecifying)i(the)g(name)g(of)g(the)f(k)m(eyw)m(ord)227 +5328 y(to)h(b)s(e)f(deleted)h(\(b)s(e)f(careful!\).)382 +5581 y Fe(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382 +5694 y(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))p eop +end +%%Page: 51 57 +TeXDict begin 51 56 bop 0 299 a Fg(6.5.)72 b(D)m(A)-8 +b(T)g(A)32 b(SCALING)e(AND)h(UNDEFINED)h(PIXEL)e(P)-8 +b(ARAMETERS)1083 b Fi(51)0 555 y Fd(6.5)135 b(Data)46 +b(Scaling)g(and)e(Unde\014ned)h(Pixel)h(P)l(arameters)0 +805 y Fi(These)24 b(subroutines)f(de\014ne)h(or)h(mo)s(dify)e(the)i(in) +m(ternal)g(parameters)g(used)f(b)m(y)g(FITSIO)g(to)h(either)g(scale)h +(the)e(data)0 918 y(or)33 b(to)i(represen)m(t)e(unde\014ned)e(pixels.) +50 b(Generally)35 b(FITSIO)d(will)i(scale)g(the)g(data)g(according)g +(to)g(the)g(v)-5 b(alues)34 b(of)0 1031 y(the)e(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)f(ma)m(y)0 1144 y(b)s(e)h(used)h(to)h(o)m(v) +m(erride)g(the)f(k)m(eyw)m(ord)h(v)-5 b(alues.)49 b(This)32 +b(ma)m(y)i(b)s(e)f(useful)f(when)g(one)i(w)m(an)m(ts)f(to)h(read)f(or)g +(write)h(the)0 1257 y(ra)m(w)c(unscaled)f(v)-5 b(alues)29 +b(in)h(the)f(FITS)g(\014le.)40 b(Similarly)-8 b(,)31 +b(FITSIO)d(generally)j(uses)e(the)g(v)-5 b(alue)30 b(of)g(the)f(BLANK)h +(or)0 1370 y(TNULLn)35 b(k)m(eyw)m(ord)h(to)g(signify)f(an)h +(unde\014ned)d(pixel,)k(but)e(these)h(routines)g(ma)m(y)g(b)s(e)e(used) +h(to)h(o)m(v)m(erride)h(this)0 1483 y(v)-5 b(alue.)41 +b(These)30 b(subroutines)f(do)i(not)f(create)i(or)f(mo)s(dify)e(the)i +(corresp)s(onding)e(header)h(k)m(eyw)m(ord)h(v)-5 b(alues.)0 +1727 y Fh(1)81 b Fi(Reset)26 b(the)g(scaling)g(factors)g(in)f(the)h +(primary)f(arra)m(y)h(or)f(image)i(extension;)h(do)s(es)d(not)g(c)m +(hange)i(the)f(BSCALE)227 1840 y(and)i(BZER)m(O)g(k)m(eyw)m(ord)h(v)-5 +b(alues)28 b(and)g(only)g(a\013ects)i(the)e(automatic)j(scaling)e(p)s +(erformed)e(when)g(the)h(data)227 1953 y(elemen)m(ts)f(are)f +(written/read)g(to/from)g(the)g(FITS)f(\014le.)39 b(When)25 +b(reading)h(from)f(a)h(FITS)f(\014le)g(the)h(returned)227 +2066 y(data)i(v)-5 b(alue)28 b(=)f(\(the)h(v)-5 b(alue)28 +b(giv)m(en)h(in)e(the)g(FITS)g(arra)m(y\))h(*)g(BSCALE)f(+)g(BZER)m(O.) +g(The)g(in)m(v)m(erse)i(form)m(ula)227 2179 y(is)34 b(used)f(when)g +(writing)h(data)h(v)-5 b(alues)34 b(to)g(the)g(FITS)g(\014le.)51 +b(\(NOTE:)34 b(BSCALE)f(and)g(BZER)m(O)h(m)m(ust)g(b)s(e)227 +2292 y(declared)d(as)g(Double)g(Precision)g(v)-5 b(ariables\).)382 +2536 y Fe(FTPSCL\(unit,bscale,bzero)o(,)42 b(>)47 b(status\))0 +2780 y Fh(2)81 b Fi(Reset)39 b(the)f(scaling)i(parameters)e(for)h(a)f +(table)h(column;)k(do)s(es)38 b(not)g(c)m(hange)i(the)e(TSCALn)f(or)h +(TZER)m(On)227 2893 y(k)m(eyw)m(ord)29 b(v)-5 b(alues)29 +b(and)e(only)i(a\013ects)g(the)g(automatic)h(scaling)f(p)s(erformed)e +(when)g(the)i(data)g(elemen)m(ts)h(are)227 3006 y(written/read)i +(to/from)g(the)g(FITS)f(\014le.)44 b(When)31 b(reading)g(from)g(a)h +(FITS)f(\014le)g(the)h(returned)e(data)i(v)-5 b(alue)227 +3119 y(=)40 b(\(the)h(v)-5 b(alue)40 b(giv)m(en)h(in)f(the)g(FITS)g +(arra)m(y\))g(*)h(TSCAL)e(+)g(TZER)m(O.)h(The)f(in)m(v)m(erse)i(form)m +(ula)g(is)f(used)227 3232 y(when)33 b(writing)h(data)h(v)-5 +b(alues)35 b(to)f(the)h(FITS)e(\014le.)52 b(\(NOTE:)34 +b(TSCAL)f(and)g(TZER)m(O)g(m)m(ust)h(b)s(e)f(declared)227 +3345 y(as)e(Double)g(Precision)g(v)-5 b(ariables\).)382 +3589 y Fe(FTTSCL\(unit,colnum,tscal)o(,tz)o(ero,)41 b(>)48 +b(status\))0 3833 y Fh(3)81 b Fi(De\014ne)36 b(the)g(in)m(teger)i(v)-5 +b(alue)36 b(to)h(b)s(e)e(used)h(to)h(signify)f(unde\014ned)e(pixels)i +(in)g(the)g(primary)f(arra)m(y)i(or)f(image)227 3946 +y(extension.)59 b(This)35 b(is)h(only)g(used)g(if)g(BITPIX)g(=)f(8,)j +(16,)h(32.)59 b(or)36 b(64)h(This)e(do)s(es)h(not)g(create)i(or)e(c)m +(hange)227 4059 y(the)27 b(v)-5 b(alue)28 b(of)f(the)g(BLANK)g(k)m(eyw) +m(ord)h(in)e(the)i(header.)39 b(FTPNULLL)27 b(is)g(iden)m(tical)h(to)g +(FTPNUL)f(except)227 4172 y(that)k(the)g(blank)f(v)-5 +b(alue)31 b(is)f(a)h(64-bit)g(in)m(teger)h(instead)f(of)f(a)h(32-bit)h +(in)m(teger.)382 4416 y Fe(FTPNUL\(unit,blank,)43 b(>)k(status\))382 +4529 y(FTPNULLL\(unit,blankll,)42 b(>)47 b(status\))0 +4774 y Fh(4)81 b Fi(De\014ne)36 b(the)g(string)g(to)g(b)s(e)f(used)g +(to)i(signify)f(unde\014ned)e(pixels)i(in)f(a)h(column)g(in)g(an)f +(ASCI)s(I)g(table.)58 b(This)227 4887 y(do)s(es)30 b(not)h(create)h(or) +e(c)m(hange)i(the)e(v)-5 b(alue)31 b(of)g(the)f(TNULLn)g(k)m(eyw)m +(ord.)382 5131 y Fe(FTSNUL\(unit,colnum,snull)41 b(>)47 +b(status\))0 5375 y Fh(5)81 b Fi(De\014ne)34 b(the)h(v)-5 +b(alue)34 b(to)h(b)s(e)f(used)g(to)h(signify)f(unde\014ned)e(pixels)j +(in)f(an)g(in)m(teger)i(column)e(in)g(a)g(binary)g(table)227 +5488 y(\(where)42 b(TF)m(ORMn)f(=)g('B',)i('I',)f('J',)f(or)h('K'\).)g +(This)f(do)s(es)g(not)h(create)h(or)e(c)m(hange)i(the)e(v)-5 +b(alue)42 b(of)g(the)227 5601 y(TNULLn)d(k)m(eyw)m(ord.)71 +b(FTTNULLL)39 b(is)i(iden)m(tical)h(to)e(FTTNUL)g(except)h(that)g(the)f +(tn)m(ull)h(v)-5 b(alue)40 b(is)h(a)227 5714 y(64-bit)32 +b(in)m(teger)g(instead)e(of)h(a)g(32-bit)g(in)m(teger.)p +eop end +%%Page: 52 58 +TeXDict begin 52 57 bop 0 299 a Fi(52)1319 b Fg(CHAPTER)29 +b(6.)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(FTTNUL\(unit,colnum,tnull)41 +b(>)47 b(status\))382 668 y(FTTNULLL\(unit,colnum,tnu)o(lll)o(l)42 +b(>)47 b(status\))0 1001 y Fd(6.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 1251 +y Fi(These)26 b(subroutines)f(put)h(or)h(get)g(data)h(v)-5 +b(alues)26 b(in)h(the)f(primary)g(data)h(arra)m(y)g(\(i.e.,)i(the)e +(\014rst)f(HDU)h(in)f(the)h(FITS)0 1364 y(\014le\))35 +b(or)g(an)f(IMA)m(GE)i(extension.)54 b(The)34 b(data)i(arra)m(y)f(is)f +(represen)m(ted)h(as)g(a)g(single)g(one-dimensional)h(arra)m(y)f(of)0 +1477 y(pixels)h(regardless)h(of)f(the)g(actual)h(dimensionalit)m(y)g +(of)g(the)f(arra)m(y)-8 b(,)38 b(and)e(the)g(FPIXEL)g(parameter)g(giv)m +(es)i(the)0 1590 y(p)s(osition)28 b(within)e(this)i(1-D)g(arra)m(y)g +(of)g(the)g(\014rst)e(pixel)i(to)g(read)g(or)f(write.)40 +b(Automatic)29 b(data)f(t)m(yp)s(e)g(con)m(v)m(ersion)h(is)0 +1703 y(p)s(erformed)g(for)i(n)m(umeric)g(data)g(\(except)i(for)d +(complex)i(data)f(t)m(yp)s(es\))h(if)f(the)g(data)g(t)m(yp)s(e)g(of)g +(the)g(primary)f(arra)m(y)0 1816 y(\(de\014ned)e(b)m(y)g(the)h(BITPIX)f +(k)m(eyw)m(ord\))h(di\013ers)g(from)f(the)g(data)i(t)m(yp)s(e)e(of)h +(the)g(arra)m(y)g(in)f(the)h(calling)h(subroutine.)0 +1929 y(The)41 b(data)i(v)-5 b(alues)42 b(are)g(also)h(scaled)f(b)m(y)g +(the)g(BSCALE)f(and)g(BZER)m(O)h(header)f(v)-5 b(alues)42 +b(as)g(they)g(are)g(b)s(eing)0 2042 y(written)32 b(or)g(read)g(from)g +(the)g(FITS)g(arra)m(y)-8 b(.)47 b(The)31 b(ftpscl)i(subroutine)e(MUST) +g(b)s(e)h(called)h(to)g(de\014ne)e(the)i(scaling)0 2155 +y(parameters)h(when)e(writing)i(data)g(to)g(the)g(FITS)f(arra)m(y)h(or) +f(to)h(o)m(v)m(erride)h(the)f(default)f(scaling)i(v)-5 +b(alue)34 b(giv)m(en)g(in)0 2267 y(the)d(header)f(when)f(reading)i(the) +f(FITS)g(arra)m(y)-8 b(.)0 2428 y(Tw)m(o)41 b(sets)f(of)h(subroutines)e +(are)i(pro)m(vided)f(to)h(read)g(the)f(data)i(arra)m(y)f(whic)m(h)f +(di\013er)g(in)g(the)h(w)m(a)m(y)g(unde\014ned)0 2541 +y(pixels)35 b(are)h(handled.)55 b(The)35 b(\014rst)f(set)i(of)g +(routines)f(\(FTGPVx\))h(simply)f(return)f(an)h(arra)m(y)h(of)g(data)g +(elemen)m(ts)0 2653 y(in)c(whic)m(h)g(unde\014ned)e(pixels)i(are)h(set) +f(equal)h(to)g(a)g(v)-5 b(alue)32 b(sp)s(eci\014ed)g(b)m(y)g(the)g +(user)g(in)g(the)g('n)m(ullv)-5 b(al')33 b(parameter.)0 +2766 y(An)h(additional)i(feature)f(of)f(these)h(subroutines)f(is)g +(that)i(if)e(the)h(user)f(sets)h(n)m(ullv)-5 b(al)35 +b(=)f(0,)i(then)f(no)f(c)m(hec)m(ks)i(for)0 2879 y(unde\014ned)d +(pixels)j(will)g(b)s(e)e(p)s(erformed,)i(th)m(us)f(increasing)h(the)g +(sp)s(eed)e(of)i(the)g(program.)55 b(The)35 b(second)h(set)g(of)0 +2992 y(routines)31 b(\(FTGPFx\))i(returns)d(the)i(data)g(elemen)m(t)h +(arra)m(y)f(and,)f(in)h(addition,)g(a)g(logical)i(arra)m(y)e(whic)m(h)f +(de\014nes)0 3105 y(whether)40 b(the)g(corresp)s(onding)f(data)i(pixel) +g(is)f(unde\014ned.)69 b(The)39 b(latter)j(set)f(of)f(subroutines)f(ma) +m(y)i(b)s(e)f(more)0 3218 y(con)m(v)m(enien)m(t)33 b(to)g(use)e(in)g +(some)g(circumstances,)i(ho)m(w)m(ev)m(er,)g(it)f(requires)f(an)g +(additional)h(arra)m(y)g(of)g(logical)i(v)-5 b(alues)0 +3331 y(whic)m(h)36 b(can)g(b)s(e)g(un)m(wieldy)f(when)h(w)m(orking)g +(with)g(large)h(data)g(arra)m(ys.)58 b(Also)37 b(for)f(programmer)g +(con)m(v)m(enience,)0 3444 y(sets)j(of)g(subroutines)f(to)h(directly)h +(read)e(or)h(write)g(2)g(and)g(3)g(dimensional)g(arra)m(ys)g(ha)m(v)m +(e)h(b)s(een)e(pro)m(vided,)j(as)0 3557 y(w)m(ell)31 +b(as)f(a)g(set)g(of)g(subroutines)e(to)i(read)g(or)g(write)f(an)m(y)h +(con)m(tiguous)h(rectangular)g(subset)e(of)h(pixels)g(within)f(the)0 +3670 y(n-dimensional)h(arra)m(y)-8 b(.)0 3925 y Fh(1)81 +b Fi(Get)39 b(the)g(data)h(t)m(yp)s(e)e(of)h(the)g(image)h(\(=)f +(BITPIX)f(v)-5 b(alue\).)67 b(P)m(ossible)39 b(returned)f(v)-5 +b(alues)39 b(are:)58 b(8,)41 b(16,)h(32,)227 4038 y(64,)36 +b(-32,)h(or)d(-64)h(corresp)s(onding)e(to)h(unsigned)f(b)m(yte,)j +(signed)e(2-b)m(yte)h(in)m(teger,)i(signed)d(4-b)m(yte)h(in)m(teger,) +227 4151 y(signed)c(8-b)m(yte)g(in)m(teger,)h(real,)g(and)d(double.)227 +4300 y(The)d(second)f(subroutine)g(is)h(similar)g(to)g(FTGIDT,)h +(except)f(that)h(if)f(the)f(image)j(pixel)e(v)-5 b(alues)26 +b(are)g(scaled,)227 4413 y(with)h(non-default)g(v)-5 +b(alues)27 b(for)g(the)h(BZER)m(O)f(and)f(BSCALE)g(k)m(eyw)m(ords,)j +(then)e(this)g(routine)g(will)g(return)227 4526 y(the)32 +b('equiv)-5 b(alen)m(t')33 b(data)e(t)m(yp)s(e)h(that)f(is)g(needed)g +(to)h(store)g(the)f(scaled)h(v)-5 b(alues.)43 b(F)-8 +b(or)32 b(example,)g(if)f(BITPIX)227 4639 y(=)39 b(16)g(and)g(BSCALE)f +(=)g(0.1)i(then)f(the)g(equiv)-5 b(alen)m(t)40 b(data)f(t)m(yp)s(e)g +(is)g(\015oating)h(p)s(oin)m(t,)h(and)d(-32)i(will)g(b)s(e)227 +4752 y(returned.)65 b(There)39 b(are)g(2)g(sp)s(ecial)h(cases:)58 +b(if)39 b(the)g(image)h(con)m(tains)g(unsigned)e(2-b)m(yte)i(in)m +(teger)g(v)-5 b(alues,)227 4865 y(with)40 b(BITPIX)g(=)f(16,)44 +b(BSCALE)39 b(=)h(1,)j(and)c(BZER)m(O)h(=)g(32768,)45 +b(then)39 b(this)h(routine)g(will)h(return)e(a)227 4978 +y(non-standard)26 b(v)-5 b(alue)27 b(of)g(20)h(for)f(the)g(bitpix)g(v) +-5 b(alue.)40 b(Similarly)27 b(if)f(the)i(image)g(con)m(tains)g +(unsigned)e(4-b)m(yte)227 5091 y(in)m(tegers,)32 b(then)e(bitpix)g +(will)h(b)s(e)f(returned)f(with)h(a)h(v)-5 b(alue)31 +b(of)f(40.)382 5346 y Fe(FTGIDT\(unit,)44 b(>)k(bitpix,status\))382 +5459 y(FTGIET\(unit,)c(>)k(bitpix,status\))0 5714 y Fh(2)81 +b Fi(Get)31 b(the)g(dimension)e(\(n)m(um)m(b)s(er)h(of)g(axes)h(=)f +(NAXIS\))h(of)f(the)h(image)p eop end +%%Page: 53 59 +TeXDict begin 53 58 bop 0 299 a Fg(6.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(53)382 555 y Fe(FTGIDM\(unit,)44 +b(>)k(naxis,status\))0 807 y Fh(3)81 b Fi(Get)38 b(the)f(size)h(of)f +(all)h(the)f(dimensions)g(of)g(the)g(image.)62 b(The)37 +b(FTGISZLL)e(routine)i(returns)f(an)h(arra)m(y)h(of)227 +920 y(64-bit)32 b(in)m(tegers)g(instead)e(of)h(32-bit)g(in)m(tegers.) +382 1172 y Fe(FTGISZ\(unit,)44 b(maxdim,)i(>)i(naxes,status\))382 +1285 y(FTGISZLL\(unit,)c(maxdim,)i(>)h(naxesll,status\))0 +1537 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)g(of)h(the)f(image.)53 b(This)33 +b(routine)h(simply)f(com)m(bines)227 1649 y(calls)40 +b(to)f(the)g(ab)s(o)m(v)m(e)h(3)f(routines.)65 b(The)38 +b(FTGIPRLL)g(routine)h(returns)e(an)i(arra)m(y)g(of)g(64-bit)h(in)m +(tegers)227 1762 y(instead)31 b(of)f(32-bit)i(in)m(tegers.)382 +2014 y Fe(FTGIPR\(unit,)44 b(maxdim,)i(>)i(bitpix,)d(naxis,)h(naxes,)h +(int)f(*status\))382 2127 y(FTGIPRLL\(unit,)e(maxdim,)i(>)h(bitpix,)f +(naxis,)g(naxesll,)f(int)i(*status\))0 2379 y Fh(5)81 +b Fi(Put)30 b(elemen)m(ts)h(in)m(to)h(the)e(data)h(arra)m(y)382 +2631 y Fe(FTPPR[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o +(valu)o(es,)41 b(>)48 b(status\))0 2883 y Fh(6)81 b Fi(Put)30 +b(elemen)m(ts)i(in)m(to)f(the)g(data)g(arra)m(y)-8 b(,)32 +b(substituting)e(the)g(appropriate)h(FITS)f(n)m(ull)g(v)-5 +b(alue)31 b(for)f(all)i(elemen)m(ts)227 2996 y(whic)m(h)c(are)f(equal)i +(to)f(the)f(v)-5 b(alue)28 b(of)g(NULL)-10 b(V)g(AL.)28 +b(F)-8 b(or)28 b(in)m(teger)h(FITS)e(arra)m(ys,)i(the)e(n)m(ull)h(v)-5 +b(alue)28 b(de\014ned)e(b)m(y)227 3109 y(the)k(previous)f(call)i(to)g +(FTPNUL)e(will)h(b)s(e)f(substituted;)h(for)f(\015oating)i(p)s(oin)m(t) +f(FITS)f(arra)m(ys)h(\(BITPIX)f(=)227 3221 y(-32)j(or)e(-64\))i(then)e +(the)h(sp)s(ecial)g(IEEE)e(NaN)i(\(Not-a-Num)m(b)s(er\))h(v)-5 +b(alue)31 b(will)g(b)s(e)f(substituted.)382 3473 y Fe +(FTPPN[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o(valu)o +(es,)o(null)o(val)41 b(>)48 b(status\))0 3725 y Fh(7)81 +b Fi(Set)30 b(data)h(arra)m(y)g(elemen)m(ts)h(as)e(unde\014ned)382 +3977 y Fe(FTPPRU\(unit,group,fpixel)o(,ne)o(leme)o(nts,)41 +b(>)47 b(status\))0 4229 y Fh(8)81 b Fi(Get)36 b(elemen)m(ts)g(from)f +(the)g(data)h(arra)m(y)-8 b(.)55 b(Unde\014ned)34 b(arra)m(y)h(elemen)m +(ts)i(will)e(b)s(e)g(returned)f(with)g(a)i(v)-5 b(alue)35 +b(=)227 4342 y(n)m(ullv)-5 b(al,)31 b(unless)f(n)m(ullv)-5 +b(al)31 b(=)f(0)h(in)f(whic)m(h)g(case)h(no)g(c)m(hec)m(ks)g(for)g +(unde\014ned)d(pixels)i(will)h(b)s(e)f(p)s(erformed.)382 +4594 y Fe(FTGPV[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o +(null)o(val)o(,)42 b(>)47 b(values,anyf,status\))0 4845 +y Fh(9)81 b Fi(Get)32 b(elemen)m(ts)g(and)f(n)m(ull\015ags)g(from)g +(data)h(arra)m(y)-8 b(.)44 b(An)m(y)32 b(unde\014ned)d(arra)m(y)i +(elemen)m(ts)i(will)e(ha)m(v)m(e)i(the)e(corre-)227 4958 +y(sp)s(onding)e(\015agv)-5 b(als)31 b(elemen)m(t)h(set)f(equal)g(to)g +(.TR)m(UE.)382 5210 y Fe(FTGPF[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel) +o(eme)o(nts,)41 b(>)48 b(values,flagvals,anyf,st)o(atu)o(s\))0 +5462 y Fh(10)e Fi(Put)30 b(v)-5 b(alues)31 b(in)m(to)g(group)f +(parameters)382 5714 y Fe(FTPGP[BIJKED]\(unit,group)o(,fp)o(arm,)o +(npar)o(m,v)o(alue)o(s,)42 b(>)47 b(status\))p eop end +%%Page: 54 60 +TeXDict begin 54 59 bop 0 299 a Fi(54)1319 b Fg(CHAPTER)29 +b(6.)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(11)46 b Fi(Get)31 b(v)-5 +b(alues)31 b(from)f(group)g(parameters)382 809 y Fe +(FTGGP[BIJKED]\(unit,group)o(,fp)o(arm,)o(npar)o(m,)41 +b(>)48 b(values,status\))0 1062 y Fi(The)32 b(follo)m(wing)h(4)g +(subroutines)e(transfer)g(FITS)h(images)h(with)f(2)g(or)g(3)h +(dimensions)e(to)i(or)f(from)g(a)h(data)f(arra)m(y)0 +1175 y(whic)m(h)h(has)g(b)s(een)g(declared)g(in)g(the)h(calling)h +(program.)49 b(The)33 b(dimensionalit)m(y)h(of)g(the)f(FITS)g(image)h +(is)f(passed)0 1288 y(b)m(y)26 b(the)g(naxis1,)h(naxis2,)h(and)d +(naxis3)i(parameters)f(and)f(the)h(declared)h(dimensions)e(of)h(the)g +(program)g(arra)m(y)h(are)0 1401 y(passed)k(in)f(the)i(dim1)e(and)h +(dim2)g(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 +1514 y(same)28 b(dimensions)f(as)h(the)g(FITS)e(arra)m(y)-8 +b(,)30 b(but)d(m)m(ust)g(b)s(e)g(at)i(least)f(as)g(big.)40 +b(F)-8 b(or)29 b(example)f(if)f(a)h(FITS)f(image)i(with)0 +1627 y(NAXIS1)i(=)f(NAXIS2)h(=)f(400)i(is)e(read)h(in)m(to)g(a)g +(program)f(arra)m(y)h(whic)m(h)f(is)h(dimensioned)f(as)g(512)i(x)f(512) +g(pixels,)0 1739 y(then)d(the)g(image)i(will)e(just)g(\014ll)g(the)h +(lo)m(w)m(er)g(left)g(corner)f(of)h(the)f(arra)m(y)h(with)f(pixels)g +(in)g(the)h(range)f(1)h(-)f(400)i(in)e(the)0 1852 y(X)k(an)g(Y)h +(directions.)47 b(This)31 b(has)h(the)h(e\013ect)g(of)g(taking)g(a)g +(con)m(tiguous)g(set)g(of)f(pixel)h(v)-5 b(alue)33 b(in)e(the)i(FITS)e +(arra)m(y)0 1965 y(and)k(writing)g(them)g(to)h(a)g(non-con)m(tiguous)g +(arra)m(y)f(in)g(program)g(memory)g(\(i.e.,)j(there)e(are)f(no)m(w)h +(some)f(blank)0 2078 y(pixels)c(around)e(the)h(edge)i(of)e(the)h(image) +g(in)f(the)h(program)f(arra)m(y\).)0 2332 y Fh(11)46 +b Fi(Put)30 b(2-D)i(image)f(in)m(to)h(the)e(data)h(arra)m(y)382 +2585 y Fe(FTP2D[BIJKED]\(unit,group)o(,di)o(m1,n)o(axis)o(1,n)o(axis)o +(2,im)o(age)o(,)42 b(>)47 b(status\))0 2838 y Fh(12)f +Fi(Put)30 b(3-D)i(cub)s(e)d(in)m(to)j(the)e(data)h(arra)m(y)382 +3092 y Fe(FTP3D[BIJKED]\(unit,group)o(,di)o(m1,d)o(im2,)o(nax)o(is1,)o +(naxi)o(s2,)o(naxi)o(s3,c)o(ube)o(,)42 b(>)47 b(status\))0 +3345 y Fh(13)f Fi(Get)29 b(2-D)f(image)h(from)f(the)f(data)i(arra)m(y) +-8 b(.)41 b(Unde\014ned)26 b(pixels)h(in)h(the)g(arra)m(y)g(will)g(b)s +(e)f(set)h(equal)g(to)h(the)e(v)-5 b(alue)227 3458 y(of)31 +b('n)m(ullv)-5 b(al',)31 b(unless)f(n)m(ullv)-5 b(al=0)31 +b(in)f(whic)m(h)g(case)i(no)e(testing)i(for)e(unde\014ned)e(pixels)i +(will)h(b)s(e)f(p)s(erformed.)382 3712 y Fe(FTG2D[BIJKED]\(unit,group)o +(,nu)o(llva)o(l,di)o(m1,)o(naxi)o(s1,n)o(axi)o(s2,)41 +b(>)48 b(image,anyf,status\))0 3965 y Fh(14)e 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)i(in)f(the)g(arra)m(y)h(will)g(b)s(e)f(set)h +(equal)g(to)g(the)f(v)-5 b(alue)227 4078 y(of)31 b('n)m(ullv)-5 +b(al',)31 b(unless)f(n)m(ullv)-5 b(al=0)31 b(in)f(whic)m(h)g(case)i(no) +e(testing)i(for)e(unde\014ned)e(pixels)i(will)h(b)s(e)f(p)s(erformed.) +382 4331 y Fe(FTG3D[BIJKED]\(unit,group)o(,nu)o(llva)o(l,di)o(m1,)o +(dim2)o(,nax)o(is1)o(,nax)o(is2,)o(nax)o(is3,)41 b(>)1002 +4444 y(cube,anyf,status\))0 4698 y Fi(The)i(follo)m(wing)h(subroutines) +e(transfer)h(a)h(rectangular)g(subset)e(of)i(the)f(pixels)g(in)g(a)h +(FITS)e(N-dimensional)0 4811 y(image)31 b(to)g(or)f(from)f(an)h(arra)m +(y)g(whic)m(h)g(has)g(b)s(een)f(declared)h(in)g(the)g(calling)i +(program.)40 b(The)29 b(fpixels)h(and)f(lpixels)0 4924 +y(parameters)e(are)h(in)m(teger)g(arra)m(ys)g(whic)m(h)f(sp)s(ecify)f +(the)i(starting)g(and)e(ending)h(pixels)g(in)g(eac)m(h)h(dimension)e +(of)i(the)0 5036 y(FITS)36 b(image)i(that)f(are)g(to)h(b)s(e)e(read)g +(or)h(written.)60 b(\(Note)38 b(that)g(these)f(are)g(the)g(starting)g +(and)f(ending)h(pixels)0 5149 y(in)d(the)h(FITS)f(image,)k(not)d(in)f +(the)h(declared)g(arra)m(y\).)55 b(The)34 b(arra)m(y)i(parameter)f(is)g +(treated)g(simply)g(as)g(a)g(large)0 5262 y(one-dimensional)c(arra)m(y) +f(of)h(the)f(appropriate)g(datat)m(yp)s(e)h(con)m(taining)h(the)e +(pixel)g(v)-5 b(alues;)31 b(The)e(pixel)i(v)-5 b(alues)30 +b(in)0 5375 y(the)c(FITS)f(arra)m(y)i(are)f(read/written)g(from/to)h +(this)f(program)f(arra)m(y)i(in)e(strict)i(sequence)f(without)g(an)m(y) +h(gaps;)g(it)0 5488 y(is)i(up)e(to)j(the)f(calling)h(routine)f(to)g +(correctly)h(in)m(terpret)f(the)g(dimensionalit)m(y)h(of)f(this)g(arra) +m(y)-8 b(.)41 b(The)28 b(t)m(w)m(o)i(families)0 5601 +y(of)d(FITS)g(reading)g(routines)g(\(FTGSVx)g(and)g(FTGSFx)g +(subroutines\))f(also)j(ha)m(v)m(e)f(an)f('incs')h(parameter)f(whic)m +(h)0 5714 y(de\014nes)j(the)h(data)h(sampling)e(in)m(terv)-5 +b(al)32 b(in)f(eac)m(h)h(dimension)e(of)h(the)g(FITS)f(arra)m(y)-8 +b(.)43 b(F)-8 b(or)32 b(example,)g(if)f(incs\(1\)=2)p +eop end +%%Page: 55 61 +TeXDict begin 55 60 bop 0 299 a Fg(6.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(55)0 555 y(and)33 +b(incs\(2\)=3)h(when)f(reading)g(a)h(2-dimensional)g(FITS)f(image,)i +(then)e(only)h(ev)m(ery)g(other)f(pixel)h(in)f(the)h(\014rst)0 +668 y(dimension)e(and)h(ev)m(ery)h(3rd)e(pixel)i(in)f(the)g(second)g +(dimension)f(will)i(b)s(e)e(returned)g(in)h(the)g('arra)m(y')h +(parameter.)0 781 y([Note:)39 b(the)25 b(FTGSSx)f(family)i(of)e +(routines)h(whic)m(h)g(w)m(ere)g(presen)m(t)g(in)f(previous)g(v)m +(ersions)h(of)g(FITSIO)f(ha)m(v)m(e)i(b)s(een)0 894 y(sup)s(erseded)i +(b)m(y)j(the)f(more)h(general)g(FTGSVx)f(family)h(of)g(routines.])0 +1152 y Fh(15)46 b Fi(Put)30 b(an)g(arbitrary)g(data)h(subsection)g(in)m +(to)g(the)g(data)g(arra)m(y)-8 b(.)382 1411 y Fe +(FTPSS[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o(ls,l)o +(pix)o(els,)o(arra)o(y,)41 b(>)48 b(status\))0 1669 y +Fh(16)e Fi(Get)30 b(an)e(arbitrary)g(data)i(subsection)e(from)g(the)h +(data)g(arra)m(y)-8 b(.)42 b(Unde\014ned)27 b(pixels)h(in)h(the)f(arra) +m(y)i(will)e(b)s(e)g(set)227 1782 y(equal)k(to)h(the)e(v)-5 +b(alue)33 b(of)e('n)m(ullv)-5 b(al',)33 b(unless)e(n)m(ullv)-5 +b(al=0)33 b(in)e(whic)m(h)g(case)i(no)e(testing)i(for)e(unde\014ned)f +(pixels)227 1895 y(will)h(b)s(e)f(p)s(erformed.)382 2154 +y Fe(FTGSV[BIJKED]\(unit,group)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 2266 +y(array,anyf,status\))0 2525 y Fh(17)k Fi(Get)34 b(an)f(arbitrary)g +(data)g(subsection)g(from)g(the)g(data)g(arra)m(y)-8 +b(.)50 b(An)m(y)33 b(Unde\014ned)e(pixels)i(in)g(the)g(arra)m(y)h(will) +227 2638 y(ha)m(v)m(e)e(the)e(corresp)s(onding)g('\015agv)-5 +b(als')31 b(elemen)m(t)h(set)f(equal)g(to)g(.TR)m(UE.)382 +2896 y Fe(FTGSF[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o +(ls,l)o(pix)o(els,)o(incs)o(,)42 b(>)1002 3009 y +(array,flagvals,anyf,statu)o(s\))0 3343 y Fd(6.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 3596 y Fb(6.7.1)112 b(Column)39 +b(Information)f(Subroutines)0 3805 y Fh(1)81 b Fi(Get)37 +b(the)f(n)m(um)m(b)s(er)f(of)i(ro)m(ws)f(or)g(columns)g(in)g(the)h +(curren)m(t)f(FITS)g(table.)59 b(The)36 b(n)m(um)m(b)s(er)f(of)h(ro)m +(ws)h(is)f(giv)m(en)227 3918 y(b)m(y)f(the)h(NAXIS2)f(k)m(eyw)m(ord)h +(and)f(the)g(n)m(um)m(b)s(er)f(of)h(columns)g(is)g(giv)m(en)h(b)m(y)g +(the)f(TFIELDS)g(k)m(eyw)m(ord)g(in)227 4031 y(the)d(header)f(of)h(the) +g(table.)45 b(The)31 b(FTGNR)-10 b(WLL)32 b(routine)g(is)f(iden)m +(tical)i(to)g(FTGNR)-10 b(W)32 b(except)h(that)f(the)227 +4144 y(n)m(um)m(b)s(er)d(of)i(ro)m(ws)f(is)h(returned)e(as)h(a)h +(64-bit)h(in)m(teger)g(rather)e(than)g(a)h(32-bit)g(in)m(teger.)382 +4402 y Fe(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\))382 +4515 y(FTGNRWLL\(unit,)e(>)j(nrowsll,)f(status\))382 +4628 y(FTGNCL\(unit,)e(>)k(ncols,)e(status\))0 4886 y +Fh(2)81 b Fi(Get)25 b(the)f(table)i(column)e(n)m(um)m(b)s(er)f(\(and)h +(name\))h(of)f(the)h(column)f(whose)g(name)g(matc)m(hes)i(an)e(input)g +(template)227 4999 y(name.)38 b(The)21 b(table)i(column)e(names)h(are)g +(de\014ned)e(b)m(y)i(the)g(TTYPEn)e(k)m(eyw)m(ords)i(in)f(the)h(FITS)f +(header.)37 b(If)22 b(a)227 5112 y(column)i(do)s(es)g(not)g(ha)m(v)m(e) +h(a)f(TTYPEn)f(k)m(eyw)m(ord,)j(then)d(these)h(routines)g(assume)g +(that)g(the)h(name)e(consists)227 5225 y(of)i(all)h(blank)f(c)m +(haracters.)40 b(These)25 b(2)g(subroutines)e(p)s(erform)h(the)h(same)g +(function)g(except)h(that)f(FTGCNO)227 5338 y(only)j(returns)e(the)h(n) +m(um)m(b)s(er)f(of)h(the)g(matc)m(hing)i(column)e(whereas)g(FTGCNN)g +(also)h(returns)e(the)i(name)f(of)227 5451 y(the)k(column.)40 +b(If)30 b(CASESEN)f(=)h(.true.)41 b(then)30 b(the)h(column)f(name)g +(matc)m(h)i(will)e(b)s(e)g(case-sensitiv)m(e.)227 5601 +y(The)41 b(input)e(column)i(name)g(template)h(\(COL)-8 +b(TEMPLA)g(TE\))41 b(is)g(\(1\))g(either)h(the)f(exact)h(name)f(of)g +(the)227 5714 y(column)36 b(to)i(b)s(e)d(searc)m(hed)i(for,)h(or)e +(\(2\))i(it)f(ma)m(y)g(con)m(tain)g(wild)f(cards)g(c)m(haracters)i +(\(*,)h(?,)f(or)e(#\),)i(or)f(\(3\))p eop end +%%Page: 56 62 +TeXDict begin 56 61 bop 0 299 a Fi(56)1319 b Fg(CHAPTER)29 +b(6.)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(it)k(ma)m(y)g(con)m(tain)g(the)f(n)m(um)m +(b)s(er)f(of)h(the)g(desired)g(column)g(\(where)g(the)g(n)m(um)m(b)s +(er)f(is)h(expressed)f(as)h(ASCI)s(I)227 668 y(digits\).)41 +b(The)28 b(\014rst)g(2)h(wild)f(cards)g(b)s(eha)m(v)m(e)h(similarly)g +(to)g(UNIX)g(\014lename)g(matc)m(hing:)40 b(the)29 b('*')g(c)m +(haracter)227 781 y(matc)m(hes)e(an)m(y)g(sequence)f(of)h(c)m +(haracters)g(\(including)f(zero)h(c)m(haracters\))h(and)d(the)i(')10 +b(?')39 b(c)m(haracter)28 b(matc)m(hes)227 894 y(an)m(y)40 +b(single)h(c)m(haracter.)71 b(The)39 b(#)h(wildcard)f(will)h(matc)m(h)h +(an)m(y)f(consecutiv)m(e)i(string)e(of)g(decimal)g(digits)227 +1007 y(\(0-9\).)45 b(As)31 b(an)g(example,)h(the)f(template)h(strings)f +('AB?DE',)h('AB*E',)h(and)d('AB*CDE')j(will)e(all)h(matc)m(h)227 +1120 y(the)26 b(string)g('ABCDE'.)i(If)d(more)h(than)g(one)g(column)g +(name)g(in)g(the)g(table)h(matc)m(hes)g(the)f(template)i(string,)227 +1233 y(then)33 b(the)h(\014rst)f(matc)m(h)h(is)f(returned)g(and)f(the)i +(status)g(v)-5 b(alue)34 b(will)f(b)s(e)g(set)h(to)g(237)h(as)f(a)f(w)m +(arning)h(that)g(a)227 1346 y(unique)g(matc)m(h)i(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,)i(simply)e(call)227 1458 y(the)27 +b(subroutine)f(again)i(lea)m(ving)h(the)e(input)f(status)h(v)-5 +b(alue)28 b(equal)f(to)h(237)g(and)f(the)g(next)g(matc)m(hing)h(name) +227 1571 y(will)k(then)g(b)s(e)f(returned.)43 b(Rep)s(eat)32 +b(this)g(pro)s(cess)f(un)m(til)h(a)g(status)g(=)g(219)h(\(column)e +(name)h(not)g(found\))f(is)227 1684 y(returned.)40 b(If)30 +b(these)h(subroutines)e(fail)i(to)g(matc)m(h)g(the)g(template)h(to)f +(an)m(y)g(of)f(the)h(columns)f(in)g(the)h(table,)227 +1797 y(they)i(lastly)g(c)m(hec)m(k)h(if)f(the)f(template)i(can)f(b)s(e) +e(in)m(terpreted)i(as)g(a)g(simple)f(p)s(ositiv)m(e)h(in)m(teger)h +(\(e.g.,)h('7',)f(or)227 1910 y('512'\))i(and)d(if)g(so,)i(they)f +(return)e(that)j(column)e(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 +2023 y(219)e(error)e(is)g(returned.)227 2187 y(Note)h(that)e(the)h +(FITS)e(Standard)g(recommends)g(that)i(only)f(letters,)i(digits,)f(and) +f(the)g(underscore)f(c)m(har-)227 2300 y(acter)44 b(b)s(e)e(used)g(in)h +(column)f(names)h(\(with)g(no)f(em)m(b)s(edded)g(spaces)h(in)g(the)g +(name\).)78 b(T)-8 b(railing)43 b(blank)227 2412 y(c)m(haracters)32 +b(are)f(not)f(signi\014can)m(t.)382 2699 y Fe +(FTGCNO\(unit,casesen,colt)o(emp)o(late)o(,)42 b(>)47 +b(colnum,status\))382 2812 y(FTGCNN\(unit,casesen,colt)o(emp)o(late)o +(,)42 b(>)47 b(colname,colnum,status\))0 3098 y Fh(3)81 +b Fi(Get)39 b(the)g(datat)m(yp)s(e)h(of)e(a)h(column)g(in)f(an)g(ASCI)s +(I)g(or)g(binary)g(table.)66 b(This)38 b(routine)h(returns)e(an)i(in)m +(teger)227 3211 y(co)s(de)34 b(v)-5 b(alue)33 b(corresp)s(onding)f(to)i +(the)g(datat)m(yp)s(e)g(of)f(the)g(column.)49 b(\(See)34 +b(the)f(FTBNFM)i(and)d(FT)-8 b(ASFM)227 3324 y(subroutines)27 +b(in)h(the)g(Utilities)j(section)e(of)f(this)g(do)s(cumen)m(t)g(for)g +(a)h(list)g(of)f(the)h(co)s(de)f(v)-5 b(alues\).)41 b(The)27 +b(v)m(ector)227 3437 y(rep)s(eat)38 b(coun)m(t)g(\(whic)m(h)g(is)g(alw) +m(a)m(y)h(1)f(for)g(ASCI)s(I)e(table)i(columns\))g(is)g(also)g +(returned.)62 b(If)37 b(the)h(sp)s(eci\014ed)227 3550 +y(column)32 b(has)f(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)e(of)i(a)g(unit)f(string)h +(in)f(the)227 3663 y(column)i(is)g(also)h(returned.)48 +b(Note)34 b(that)g(this)e(routine)h(supp)s(orts)f(the)h(lo)s(cal)h(con) +m(v)m(en)m(tion)h(for)e(sp)s(ecifying)227 3776 y(arra)m(ys)f(of)f +(strings)g(within)f(a)i(binary)e(table)i(c)m(haracter)g(column,)g +(using)e(the)h(syn)m(tax)h(TF)m(ORM)f(=)g('rAw')227 3889 +y(where)f('r')g(is)h(the)f(total)i(n)m(um)m(b)s(er)d(of)i(c)m +(haracters)g(\(=)g(the)f(width)g(of)g(the)g(column\))h(and)f('w')g(is)g +(the)h(width)227 4002 y(of)39 b(a)f(unit)g(string)g(within)g(the)g +(column.)64 b(Th)m(us)37 b(if)h(the)g(column)g(has)g(TF)m(ORM)h(=)f +('60A12')i(then)e(this)227 4114 y(routine)29 b(will)g(return)f(dataco)s +(de)i(=)e(16,)i(rep)s(eat)f(=)f(60,)j(and)d(width)g(=)g(12.)41 +b(\(The)29 b(TDIMn)f(k)m(eyw)m(ord)h(ma)m(y)227 4227 +y(also)35 b(b)s(e)e(used)g(to)h(sp)s(ecify)f(the)h(unit)f(string)h +(length;)i(The)d(pair)g(of)h(k)m(eyw)m(ords)g(TF)m(ORMn)f(=)g('60A')j +(and)227 4340 y(TDIMn)30 b(=)g('\(12,5\)')j(w)m(ould)e(ha)m(v)m(e)g +(the)g(same)g(e\013ect)g(as)g(TF)m(ORMn)f(=)g('60A12'\).)227 +4504 y(The)h(second)h(routine,)g(FTEQTY)f(is)g(similar)h(except)h(that) +f(in)f(the)h(case)g(of)g(scaled)g(in)m(teger)h(columns)e(it)227 +4617 y(returns)23 b(the)h('equiv)-5 b(alen)m(t')25 b(data)f(t)m(yp)s(e) +g(that)h(is)e(needed)h(to)g(store)g(the)g(scaled)g(v)-5 +b(alues,)26 b(and)d(not)h(necessarily)227 4730 y(the)38 +b(ph)m(ysical)h(data)f(t)m(yp)s(e)g(of)g(the)g(unscaled)g(v)-5 +b(alues)38 b(as)g(stored)g(in)g(the)g(FITS)f(table.)64 +b(F)-8 b(or)38 b(example)h(if)227 4843 y(a)c('1I')g(column)f(in)g(a)g +(binary)g(table)h(has)f(TSCALn)f(=)g(1)i(and)f(TZER)m(On)f(=)g(32768,) +38 b(then)c(this)g(column)227 4956 y(e\013ectiv)m(ely)27 +b(con)m(tains)e(unsigned)e(short)g(in)m(teger)j(v)-5 +b(alues,)25 b(and)f(th)m(us)f(the)h(returned)f(v)-5 b(alue)24 +b(of)g(t)m(yp)s(eco)s(de)h(will)227 5068 y(b)s(e)32 b(the)h(co)s(de)g +(for)g(an)f(unsigned)g(short)g(in)m(teger,)j(not)e(a)g(signed)g(short)f +(in)m(teger.)49 b(Similarly)-8 b(,)34 b(if)f(a)g(column)227 +5181 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)h(b)s(e)f(the)h(co)s(de)f(for)h +(a)227 5294 y('real')h(column.)382 5581 y Fe(FTGTCL\(unit,colnum,)42 +b(>)48 b(datacode,repeat,width,st)o(atu)o(s\))382 5694 +y(FTEQTY\(unit,colnum,)42 b(>)48 b(datacode,repeat,width,st)o(atu)o +(s\))p eop end +%%Page: 57 63 +TeXDict begin 57 62 bop 0 299 a Fg(6.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(57)0 555 y +Fh(4)81 b Fi(Return)22 b(the)i(displa)m(y)g(width)f(of)g(a)h(column.)39 +b(This)22 b(is)i(the)g(length)g(of)f(the)h(string)g(that)g(will)g(b)s +(e)f(returned)f(when)227 668 y(reading)33 b(the)g(column)g(as)g(a)g +(formatted)g(string.)48 b(The)32 b(displa)m(y)h(width)f(is)h +(determined)g(b)m(y)f(the)h(TDISPn)227 781 y(k)m(eyw)m(ord,)e(if)g +(presen)m(t,)f(otherwise)h(b)m(y)f(the)h(data)g(t)m(yp)s(e)g(of)f(the)h +(column.)382 1012 y Fe(FTGCDW\(unit,)44 b(colnum,)i(>)i(dispwidth,)d +(status\))0 1243 y Fh(5)81 b Fi(Get)29 b(information)f(ab)s(out)g(an)g +(existing)h(ASCI)s(I)e(table)i(column.)40 b(\(NOTE:)28 +b(TSCAL)f(and)g(TZER)m(O)h(m)m(ust)g(b)s(e)227 1356 y(declared)j(as)g +(Double)g(Precision)g(v)-5 b(ariables\).)41 b(All)31 +b(the)g(returned)e(parameters)i(are)f(scalar)i(quan)m(tities.)382 +1586 y Fe(FTGACL\(unit,colnum,)42 b(>)716 1699 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 1930 y Fh(6)81 b Fi(Get)29 b(information)f(ab)s +(out)f(an)h(existing)h(binary)e(table)i(column.)40 b(\(NOTE:)28 +b(TSCAL)e(and)i(TZER)m(O)f(m)m(ust)h(b)s(e)227 2043 y(declared)j(as)f +(Double)g(Precision)h(v)-5 b(ariables\).)41 b(D)m(A)-8 +b(T)g(A)g(TYPE)32 b(is)e(a)g(c)m(haracter)i(string)d(whic)m(h)h +(returns)f(the)227 2156 y(datat)m(yp)s(e)35 b(of)g(the)f(column)g(as)g +(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 2269 y(the)27 +b(case)g(of)g(an)f(ASCI)s(I)f(c)m(haracter)j(column,)f(D)m(A)-8 +b(T)g(A)g(TYPE)29 b(will)d(ha)m(v)m(e)i(a)f(v)-5 b(alue)27 +b(of)f(the)h(form)f('An')g(where)227 2382 y('n')34 b(is)g(an)g(in)m +(teger)i(expressing)e(the)g(width)f(of)h(the)h(\014eld)e(in)h(c)m +(haracters.)53 b(F)-8 b(or)35 b(example,)h(if)e(TF)m(ORM)g(=)227 +2495 y('160A8')39 b(then)e(FTGBCL)f(will)h(return)f(D)m(A)-8 +b(T)g(A)g(TYPE='A8')39 b(and)d(REPEA)-8 b(T=20.)60 b(All)37 +b(the)g(returned)227 2608 y(parameters)31 b(are)g(scalar)g(quan)m +(tities.)382 2838 y Fe(FTGBCL\(unit,colnum,)42 b(>)716 +2951 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 3182 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)33 b(has)f(the)g(form)g('\(l,m,n...\)')47 b(where)32 +b(l,)h(m,)f(n...)46 b(are)33 b(the)227 3295 y(dimensions)d(of)g(a)h(m)m +(ultidimensional)g(arra)m(y)g(column)f(in)g(a)h(binary)f(table.)382 +3526 y Fe(FTPTDM\(unit,colnum,naxis)o(,na)o(xes,)41 b(>)48 +b(status\))0 3757 y Fh(8)81 b Fi(Return)29 b(the)h(n)m(um)m(b)s(er)e +(of)i(and)g(size)g(of)g(the)g(dimensions)g(of)g(a)g(table)h(column.)40 +b(Normally)31 b(this)f(information)227 3870 y(is)h(giv)m(en)h(b)m(y)f +(the)g(TDIMn)f(k)m(eyw)m(ord,)i(but)e(if)h(this)g(k)m(eyw)m(ord)g(is)g +(not)g(presen)m(t)g(then)g(this)f(routine)h(returns)227 +3983 y(NAXIS)f(=)g(1)h(and)f(NAXES\(1\))h(equal)g(to)g(the)g(rep)s(eat) +g(coun)m(t)g(in)f(the)g(TF)m(ORM)h(k)m(eyw)m(ord.)382 +4213 y Fe(FTGTDM\(unit,colnum,maxdi)o(m,)41 b(>)48 b +(naxis,naxes,status\))0 4444 y Fh(9)81 b Fi(Deco)s(de)33 +b(the)g(input)f(TDIMn)h(k)m(eyw)m(ord)g(string)f(\(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 4557 y(of)c(the)g(dimensions)f(of)h(a)g(binary)f(table) +h(column.)40 b(If)27 b(the)h(input)f(tdimstr)g(c)m(haracter)i(string)f +(is)g(n)m(ull,)g(then)227 4670 y(this)d(routine)f(returns)f(naxis)h(=)h +(1)f(and)g(naxes[0])i(equal)e(to)i(the)e(rep)s(eat)h(coun)m(t)g(in)f +(the)g(TF)m(ORM)h(k)m(eyw)m(ord.)227 4783 y(This)30 b(routine)g(is)h +(called)g(b)m(y)f(FTGTDM.)382 5014 y Fe(FTDTDM\(unit,tdimstr,coln)o +(um,)o(maxd)o(im,)41 b(>)48 b(naxis,naxes,)c(status\))0 +5245 y Fh(10)i Fi(Return)32 b(the)h(optimal)h(n)m(um)m(b)s(er)e(of)h +(ro)m(ws)g(to)h(read)f(or)g(write)g(at)h(one)f(time)h(for)e(maxim)m(um) +h(I/O)g(e\016ciency)-8 b(.)227 5358 y(Refer)31 b(to)g(the)g +(\\Optimizing)g(Co)s(de")f(section)i(in)e(Chapter)g(5)g(for)h(more)f +(discussion)g(on)g(ho)m(w)h(to)g(use)f(this)227 5470 +y(routine.)382 5701 y Fe(FFGRSZ\(unit,)44 b(>)k(nrows,status\))p +eop end +%%Page: 58 64 +TeXDict begin 58 63 bop 0 299 a Fi(58)1319 b Fg(CHAPTER)29 +b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 +b(SUBR)m(OUTINES)0 555 y Fb(6.7.2)112 b(Lo)m(w-Lev)m(el)39 +b(T)-9 b(able)38 b(Access)f(Subroutines)0 774 y Fi(The)d(follo)m(wing)h +(subroutines)e(pro)m(vide)i(lo)m(w-lev)m(el)i(access)e(to)g(the)g(data) +g(in)f(ASCI)s(I)e(or)i(binary)g(tables)h(and)f(are)0 +887 y(mainly)29 b(useful)f(as)i(an)f(e\016cien)m(t)h(w)m(a)m(y)g(to)g +(cop)m(y)g(all)g(or)f(part)g(of)g(a)g(table)h(from)f(one)g(lo)s(cation) +i(to)f(another.)40 b(These)0 1000 y(routines)24 b(simply)g(read)g(or)h +(write)f(the)h(sp)s(eci\014ed)e(n)m(um)m(b)s(er)g(of)i(consecutiv)m(e)h +(b)m(ytes)f(in)f(an)g(ASCI)s(I)f(or)h(binary)g(table,)0 +1113 y(without)37 b(regard)g(for)f(column)h(b)s(oundaries)e(or)i(the)g +(ro)m(w)g(length)h(in)e(the)h(table.)61 b(The)37 b(\014rst)f(t)m(w)m(o) +i(subroutines)0 1226 y(read)29 b(or)h(write)g(consecutiv)m(e)h(b)m +(ytes)f(in)f(a)h(table)g(to)h(or)e(from)g(a)h(c)m(haracter)h(string)e +(v)-5 b(ariable,)31 b(while)f(the)f(last)i(t)m(w)m(o)0 +1339 y(subroutines)f(read)i(or)g(write)g(consecutiv)m(e)h(b)m(ytes)g +(to)f(or)g(from)f(a)h(v)-5 b(ariable)33 b(declared)f(as)g(a)g(n)m +(umeric)f(data)i(t)m(yp)s(e)0 1452 y(\(e.g.,)40 b(INTEGER,)d +(INTEGER*2,)i(REAL,)d(DOUBLE)h(PRECISION\).)f(These)g(routines)h(do)f +(not)h(p)s(erform)0 1564 y(an)m(y)c(mac)m(hine)g(dep)s(enden)m(t)f +(data)i(con)m(v)m(ersion)g(or)e(b)m(yte)i(sw)m(apping,)f(except)h(that) +f(con)m(v)m(ersion)h(to/from)f(ASCI)s(I)0 1677 y(format)d(is)g(p)s +(erformed)e(b)m(y)h(the)h(FTGTBS)f(and)g(FTPTBS)g(routines)h(on)f(mac)m +(hines)h(whic)m(h)g(do)f(not)h(use)f(ASCI)s(I)0 1790 +y(c)m(haracter)j(co)s(des)e(in)g(the)h(in)m(ternal)g(data)g(represen)m +(tations)h(\(e.g.,)g(on)e(IBM)h(mainframe)f(computers\).)0 +2049 y Fh(1)81 b Fi(Read)26 b(a)h(consecutiv)m(e)h(string)f(of)f(c)m +(haracters)i(from)e(an)g(ASCI)s(I)f(table)i(in)m(to)h(a)e(c)m(haracter) +i(v)-5 b(ariable)28 b(\(spanning)227 2162 y(columns)k(and)g(m)m +(ultiple)h(ro)m(ws)f(if)g(necessary\))h(This)f(routine)g(should)f(not)i +(b)s(e)e(used)h(with)g(binary)f(tables)227 2275 y(b)s(ecause)g(of)f +(complications)i(related)g(to)f(passing)f(string)g(v)-5 +b(ariables)31 b(b)s(et)m(w)m(een)g(C)f(and)g(F)-8 b(ortran.)382 +2533 y Fe(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 +b(>)48 b(string,status\))0 2792 y Fh(2)81 b Fi(W)-8 b(rite)31 +b(a)g(consecutiv)m(e)h(string)e(of)h(c)m(haracters)g(to)g(an)f(ASCI)s +(I)f(table)i(from)f(a)h(c)m(haracter)h(v)-5 b(ariable)31 +b(\(spanning)227 2905 y(columns)h(and)g(m)m(ultiple)h(ro)m(ws)f(if)g +(necessary\))h(This)f(routine)g(should)f(not)i(b)s(e)e(used)h(with)g +(binary)f(tables)227 3018 y(b)s(ecause)g(of)f(complications)i(related)g +(to)f(passing)f(string)g(v)-5 b(ariables)31 b(b)s(et)m(w)m(een)g(C)f +(and)g(F)-8 b(ortran.)382 3277 y Fe(FTPTBS\(unit,frow,startch)o(ar,)o +(ncha)o(rs,s)o(tri)o(ng,)41 b(>)48 b(status\))0 3535 +y Fh(3)81 b Fi(Read)27 b(a)h(consecutiv)m(e)i(arra)m(y)e(of)g(b)m(ytes) +g(from)f(an)g(ASCI)s(I)f(or)i(binary)e(table)j(in)m(to)f(a)g(n)m +(umeric)g(v)-5 b(ariable)28 b(\(span-)227 3648 y(ning)k(columns)f(and)h +(m)m(ultiple)g(ro)m(ws)g(if)g(necessary\).)46 b(The)32 +b(arra)m(y)g(parameter)g(ma)m(y)h(b)s(e)e(declared)h(as)h(an)m(y)227 +3761 y(n)m(umerical)i(datat)m(yp)s(e)g(as)g(long)g(as)g(the)f(arra)m(y) +h(is)f(at)h(least)h('nc)m(hars')f(b)m(ytes)f(long,)j(e.g.,)f(if)f(nc)m +(hars)f(=)g(17,)227 3874 y(then)c(declare)i(the)e(arra)m(y)h(as)g +(INTEGER*4)g(ARRA)-8 b(Y\(5\).)382 4133 y Fe(FTGTBB\(unit,frow,startch) +o(ar,)o(ncha)o(rs,)41 b(>)48 b(array,status\))0 4391 +y Fh(4)81 b Fi(W)-8 b(rite)32 b(a)f(consecutiv)m(e)i(arra)m(y)f(of)f(b) +m(ytes)g(to)h(an)e(ASCI)s(I)g(or)h(binary)f(table)i(from)e(a)i(n)m +(umeric)e(v)-5 b(ariable)32 b(\(span-)227 4504 y(ning)j(columns)f(and)g +(m)m(ultiple)h(ro)m(ws)g(if)f(necessary\))i(The)e(arra)m(y)h(parameter) +g(ma)m(y)h(b)s(e)e(declared)h(as)g(an)m(y)227 4617 y(n)m(umerical)g +(datat)m(yp)s(e)g(as)g(long)g(as)g(the)f(arra)m(y)h(is)f(at)h(least)h +('nc)m(hars')f(b)m(ytes)f(long,)j(e.g.,)f(if)f(nc)m(hars)f(=)g(17,)227 +4730 y(then)c(declare)i(the)e(arra)m(y)h(as)g(INTEGER*4)g(ARRA)-8 +b(Y\(5\).)382 4989 y Fe(FTPTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,a)o +(rra)o(y,)42 b(>)47 b(status\))0 5279 y Fb(6.7.3)112 +b(Edit)37 b(Ro)m(ws)g(or)h(Columns)0 5488 y Fh(1)81 b +Fi(Insert)26 b(blank)h(ro)m(ws)h(in)m(to)g(an)f(existing)h(ASCI)s(I)e +(or)h(binary)g(table)h(\(in)g(the)f(CDU\).)h(All)g(the)g(ro)m(ws)f(F)m +(OLLO)m(W-)227 5601 y(ING)35 b(ro)m(w)g(FR)m(O)m(W)g(are)g(shifted)f +(do)m(wn)g(b)m(y)h(NR)m(O)m(WS)g(ro)m(ws.)53 b(If)34 +b(FR)m(O)m(W)i(or)e(FR)m(O)m(WLL)i(equals)e(0)h(then)227 +5714 y(the)27 b(blank)f(ro)m(ws)h(are)g(inserted)f(at)h(the)g(b)s +(eginning)f(of)g(the)h(table.)41 b(These)26 b(routines)g(mo)s(dify)g +(the)h(NAXIS2)p eop end +%%Page: 59 65 +TeXDict begin 59 64 bop 0 299 a Fg(6.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(59)227 555 +y(k)m(eyw)m(ord)35 b(to)h(re\015ect)f(the)g(new)f(n)m(um)m(b)s(er)f(of) +i(ro)m(ws)g(in)f(the)h(table.)54 b(Note)36 b(that)f(it)h(is)e(*not*)i +(necessary)f(to)227 668 y(insert)c(ro)m(ws)f(in)g(a)h(table)g(b)s +(efore)f(writing)g(data)i(to)f(those)g(ro)m(ws)f(\(indeed,)g(it)h(w)m +(ould)g(b)s(e)e(ine\016cien)m(t)j(to)f(do)227 781 y(so\).)54 +b(Instead,)35 b(one)g(ma)m(y)g(simply)f(write)h(data)g(to)g(an)m(y)g +(ro)m(w)f(of)h(the)g(table,)h(whether)e(that)h(ro)m(w)g(of)f(data)227 +894 y(already)d(exists)g(or)g(not.)382 1116 y Fe +(FTIROW\(unit,frow,nrows,)41 b(>)48 b(status\))382 1229 +y(FTIROWLL\(unit,frowll,nro)o(wsl)o(l,)42 b(>)47 b(status\))0 +1451 y Fh(2)81 b Fi(Delete)25 b(ro)m(ws)f(from)f(an)g(existing)i(ASCI)s +(I)c(or)j(binary)f(table)h(\(in)f(the)h(CDU\).)g(The)f(NR)m(O)m(WS)h +(\(or)g(NR)m(O)m(WSLL\))227 1564 y(is)e(the)g(n)m(um)m(b)s(er)f(of)h +(ro)m(ws)g(are)g(deleted,)i(starting)f(with)f(ro)m(w)g(FR)m(O)m(W)h +(\(or)f(FR)m(O)m(WLL\),)h(and)f(an)m(y)g(remaining)227 +1677 y(ro)m(ws)f(in)g(the)f(table)i(are)f(shifted)g(up)e(to)j(\014ll)f +(in)f(the)h(space.)38 b(These)21 b(routines)f(mo)s(dify)g(the)h(NAXIS2) +g(k)m(eyw)m(ord)227 1790 y(to)31 b(re\015ect)g(the)g(new)f(n)m(um)m(b)s +(er)f(of)h(ro)m(ws)h(in)f(the)g(table.)382 2012 y Fe +(FTDROW\(unit,frow,nrows,)41 b(>)48 b(status\))382 2125 +y(FTDROWLL\(unit,frowll,nro)o(wsl)o(l,)42 b(>)47 b(status\))0 +2348 y Fh(3)81 b Fi(Delete)26 b(a)f(list)g(of)g(ro)m(ws)f(from)g(an)h +(ASCI)s(I)e(or)h(binary)g(table)h(\(in)g(the)f(CDU\).)i(In)e(the)g +(\014rst)g(routine,)i('ro)m(wrange')227 2461 y(is)i(a)g(c)m(haracter)h +(string)f(listing)h(the)f(ro)m(ws)f(or)h(ro)m(w)g(ranges)g(to)g(delete) +h(\(e.g.,)i('2-4,)e(5,)g(8-9'\).)42 b(In)27 b(the)h(second)227 +2574 y(routine,)37 b('ro)m(wlist')f(is)f(an)f(in)m(teger)j(arra)m(y)e +(of)g(ro)m(w)g(n)m(um)m(b)s(ers)e(to)j(b)s(e)e(deleted)i(from)e(the)h +(table.)56 b(nro)m(ws)34 b(is)227 2686 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)h(the)g(list.)45 b(The)31 +b(\014rst)f(ro)m(w)i(in)f(the)g(table)i(is)e(1)h(not)f(0.)44 +b(The)31 b(list)h(of)g(ro)m(w)227 2799 y(n)m(um)m(b)s(ers)d(m)m(ust)h +(b)s(e)g(sorted)h(in)f(ascending)g(order.)382 3022 y +Fe(FTDRRG\(unit,rowrange,)42 b(>)47 b(status\))382 3135 +y(FTDRWS\(unit,rowlist,nrow)o(s,)41 b(>)48 b(status\))0 +3357 y Fh(4)81 b Fi(Insert)43 b(a)i(blank)f(column)h(\(or)f(columns\))h +(in)m(to)g(an)f(existing)i(ASCI)s(I)d(or)h(binary)g(table)h(\(in)g(the) +f(CDU\).)227 3470 y(COLNUM)c(sp)s(eci\014es)g(the)h(column)f(n)m(um)m +(b)s(er)f(that)i(the)f(\(\014rst\))g(new)g(column)g(should)f(o)s(ccup)m +(y)i(in)f(the)227 3583 y(table.)58 b(NCOLS)34 b(sp)s(eci\014es)h(ho)m +(w)h(man)m(y)g(columns)f(are)h(to)g(b)s(e)f(inserted.)57 +b(An)m(y)35 b(existing)i(columns)e(from)227 3696 y(this)k(p)s(osition)f +(and)g(higher)g(are)h(mo)m(v)m(ed)g(o)m(v)m(er)h(to)f(allo)m(w)h(ro)s +(om)e(for)h(the)f(new)g(column\(s\).)65 b(The)38 b(index)227 +3808 y(n)m(um)m(b)s(er)j(on)h(all)h(the)f(follo)m(wing)h(k)m(eyw)m +(ords)g(will)f(b)s(e)f(incremen)m(ted)i(if)f(necessary)g(to)h +(re\015ect)f(the)g(new)227 3921 y(p)s(osition)32 b(of)f(the)g +(column\(s\))h(in)f(the)g(table:)43 b(TBCOLn,)30 b(TF)m(ORMn,)i +(TTYPEn,)e(TUNITn,)h(TNULLn,)227 4034 y(TSCALn,)22 b(TZER)m(On,)g +(TDISPn,)g(TDIMn,)h(TLMINn,)g(TLMAXn,)f(TDMINn,)i(TDMAXn,)f(TCTYPn,)227 +4147 y(TCRPXn,)30 b(TCR)-10 b(VLn,)29 b(TCDL)-8 b(Tn,)30 +b(TCR)m(OTn,)f(and)g(TCUNIn.)382 4370 y Fe(FTICOL\(unit,colnum,ttype)o +(,tf)o(orm,)41 b(>)48 b(status\))382 4482 y(FTICLS\(unit,colnum,ncols)o +(,tt)o(ype,)o(tfor)o(m,)41 b(>)48 b(status\))0 4705 y +Fh(5)81 b Fi(Mo)s(dify)37 b(the)g(v)m(ector)i(length)f(of)f(a)h(binary) +e(table)i(column)f(\(e.g.,)k(c)m(hange)e(a)e(column)g(from)g(TF)m(ORMn) +g(=)227 4818 y('1E')31 b(to)h('20E'\).)g(The)e(v)m(ector)i(length)e(ma) +m(y)h(b)s(e)f(increased)h(or)f(decreased)h(from)f(the)g(curren)m(t)h(v) +-5 b(alue.)382 5040 y Fe(FTMVEC\(unit,colnum,newve)o(cle)o(n,)42 +b(>)47 b(status\))0 5262 y Fh(6)81 b Fi(Delete)29 b(a)f(column)g(from)f +(an)g(existing)i(ASCI)s(I)d(or)i(binary)e(table)j(\(in)f(the)f(CDU\).)i +(The)e(index)g(n)m(um)m(b)s(er)f(of)i(all)227 5375 y(the)k(k)m(eyw)m +(ords)h(listed)f(ab)s(o)m(v)m(e)i(\(for)e(FTICOL\))f(will)h(b)s(e)g +(decremen)m(ted)g(if)g(necessary)h(to)g(re\015ect)f(the)g(new)227 +5488 y(p)s(osition)26 b(of)g(the)g(column\(s\))g(in)f(the)h(table.)40 +b(Those)26 b(index)f(k)m(eyw)m(ords)h(that)g(refer)f(to)i(the)f +(deleted)g(column)227 5601 y(will)33 b(also)g(b)s(e)f(deleted.)47 +b(Note)33 b(that)g(the)g(ph)m(ysical)g(size)g(of)f(the)h(FITS)e(\014le) +i(will)f(not)h(b)s(e)e(reduced)h(b)m(y)g(this)227 5714 +y(op)s(eration,)e(and)e(the)h(empt)m(y)g(FITS)f(blo)s(c)m(ks)h(if)g(an) +m(y)g(at)g(the)g(end)f(of)h(the)g(\014le)g(will)g(b)s(e)f(padded)g +(with)g(zeros.)p eop end +%%Page: 60 66 +TeXDict begin 60 65 bop 0 299 a Fi(60)1319 b Fg(CHAPTER)29 +b(6.)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(FTDCOL\(unit,colnum,)42 +b(>)48 b(status\))0 795 y Fh(7)81 b Fi(Cop)m(y)30 b(a)g(column)g(from)g +(one)g(HDU)h(to)g(another)f(\(or)h(to)g(the)f(same)h(HDU\).)g(If)f +(createcol)j(=)c(TR)m(UE,)i(then)f(a)227 908 y(new)20 +b(column)g(will)h(b)s(e)f(inserted)g(in)g(the)h(output)f(table,)k(at)d +(p)s(osition)f(`outcolumn',)j(otherwise)e(the)g(existing)227 +1021 y(output)29 b(column)f(will)h(b)s(e)f(o)m(v)m(erwritten)i(\(in)f +(whic)m(h)f(case)i(it)f(m)m(ust)f(ha)m(v)m(e)i(a)f(compatible)h(datat)m +(yp)s(e\).)42 b(Note)227 1134 y(that)31 b(the)g(\014rst)e(column)i(in)f +(a)g(table)i(is)e(at)h(coln)m(um)g(=)f(1.)382 1373 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 1661 y Fb(6.7.4)112 +b(Read)38 b(and)h(W)-9 b(rite)36 b(Column)j(Data)e(Routines)0 +1880 y Fi(These)22 b(subroutines)f(put)h(or)g(get)i(data)f(v)-5 +b(alues)22 b(in)g(the)h(curren)m(t)f(ASCI)s(I)f(or)h(Binary)g(table)i +(extension.)38 b(Automatic)0 1992 y(data)21 b(t)m(yp)s(e)g(con)m(v)m +(ersion)g(is)f(p)s(erformed)f(for)h(n)m(umerical)h(data)g(t)m(yp)s(es)g +(\(B,I,J,E,D\))h(if)e(the)h(data)g(t)m(yp)s(e)f(of)h(the)f(column)0 +2105 y(\(de\014ned)32 b(b)m(y)i(the)f(TF)m(ORM)h(k)m(eyw)m(ord\))g +(di\013ers)f(from)f(the)i(data)g(t)m(yp)s(e)f(of)h(the)f(calling)i +(subroutine.)48 b(The)33 b(data)0 2218 y(v)-5 b(alues)30 +b(are)h(also)g(scaled)f(b)m(y)g(the)g(TSCALn)f(and)g(TZER)m(On)g +(header)h(v)-5 b(alues)30 b(as)g(they)g(are)h(b)s(eing)e(written)h(to)h +(or)0 2331 y(read)j(from)f(the)h(FITS)f(arra)m(y)-8 b(.)51 +b(The)33 b(fttscl)i(subroutine)d(MUST)i(b)s(e)f(used)g(to)h(de\014ne)f +(the)h(scaling)h(parameters)0 2444 y(when)d(writing)h(data)h(to)g(the)f +(table)h(or)f(to)h(o)m(v)m(erride)g(the)g(default)f(scaling)h(v)-5 +b(alues)34 b(giv)m(en)g(in)f(the)g(header)g(when)0 2557 +y(reading)27 b(from)g(the)g(table.)40 b(Note)29 b(that)e(it)h(is)f +(*not*)h(necessary)f(to)h(insert)f(ro)m(ws)g(in)f(a)i(table)g(b)s +(efore)e(writing)h(data)0 2670 y(to)j(those)h(ro)m(ws)e(\(indeed,)h(it) +g(w)m(ould)g(b)s(e)f(ine\016cien)m(t)i(to)f(do)g(so\).)41 +b(Instead,)30 b(one)g(ma)m(y)g(simply)f(write)h(data)g(to)h(an)m(y)0 +2783 y(ro)m(w)f(of)h(the)g(table,)g(whether)f(that)h(ro)m(w)f(of)h +(data)g(already)g(exists)g(or)f(not.)0 2943 y(In)i(the)i(case)g(of)f +(binary)g(tables)h(with)f(v)m(ector)h(elemen)m(ts,)i(the)d('felem')h +(parameter)g(de\014nes)e(the)i(starting)g(pixel)0 3056 +y(within)k(the)g(elemen)m(t)i(v)m(ector.)65 b(This)38 +b(parameter)g(is)g(ignored)h(with)e(ASCI)s(I)g(tables.)65 +b(Similarly)-8 b(,)41 b(in)d(the)g(case)0 3169 y(of)45 +b(binary)e(tables)i(the)g('nelemen)m(ts')h(parameter)f(sp)s(eci\014es)f +(the)g(total)i(n)m(um)m(b)s(er)d(of)i(v)m(ector)h(v)-5 +b(alues)45 b(read)f(or)0 3282 y(written)36 b(\(con)m(tin)m(uing)h(on)f +(subsequen)m(t)f(ro)m(ws)g(if)h(required\))f(and)h(not)g(the)g(n)m(um)m +(b)s(er)e(of)i(table)h(elemen)m(ts.)58 b(Tw)m(o)0 3395 +y(sets)36 b(of)f(subroutines)g(are)g(pro)m(vided)g(to)i(get)f(the)g +(column)f(data)h(whic)m(h)f(di\013er)g(in)h(the)f(w)m(a)m(y)i +(unde\014ned)c(pixels)0 3508 y(are)f(handled.)42 b(The)31 +b(\014rst)g(set)h(of)f(routines)h(\(FTGCV\))g(simply)f(return)f(an)h +(arra)m(y)h(of)f(data)h(elemen)m(ts)h(in)e(whic)m(h)0 +3620 y(unde\014ned)41 b(pixels)j(are)g(set)g(equal)g(to)h(a)f(v)-5 +b(alue)44 b(sp)s(eci\014ed)f(b)m(y)g(the)h(user)f(in)g(the)h('n)m(ullv) +-5 b(al')44 b(parameter.)81 b(An)0 3733 y(additional)44 +b(feature)g(of)g(these)g(subroutines)e(is)i(that)g(if)f(the)h(user)e +(sets)i(n)m(ullv)-5 b(al)44 b(=)f(0,)48 b(then)43 b(no)g(c)m(hec)m(ks)i +(for)0 3846 y(unde\014ned)33 b(pixels)j(will)g(b)s(e)e(p)s(erformed,)i +(th)m(us)f(increasing)h(the)g(sp)s(eed)e(of)i(the)g(program.)55 +b(The)35 b(second)h(set)g(of)0 3959 y(routines)h(\(FTGCF\))h(returns)d +(the)i(data)h(elemen)m(t)g(arra)m(y)g(and)e(in)h(addition)g(a)g +(logical)j(arra)m(y)d(of)g(\015ags)g(whic)m(h)0 4072 +y(de\014nes)29 b(whether)h(the)h(corresp)s(onding)e(data)i(pixel)g(is)f +(unde\014ned.)0 4232 y(An)m(y)41 b(column,)i(regardless)e(of)g(it's)g +(in)m(trinsic)g(datat)m(yp)s(e,)k(ma)m(y)c(b)s(e)f(read)h(as)g(a)g +(string.)71 b(It)41 b(should)f(b)s(e)g(noted)0 4345 y(ho)m(w)m(ev)m(er) +32 b(that)f(reading)f(a)h(n)m(umeric)f(column)g(as)h(a)f(string)h(is)f +(10)h(-)g(100)g(times)g(slo)m(w)m(er)h(than)e(reading)g(the)h(same)0 +4458 y(column)g(as)h(a)g(n)m(um)m(b)s(er)e(due)h(to)h(the)g(large)h(o)m +(v)m(erhead)f(in)g(constructing)g(the)g(formatted)g(strings.)44 +b(The)31 b(displa)m(y)0 4571 y(format)26 b(of)g(the)h(returned)d +(strings)i(will)g(b)s(e)g(determined)f(b)m(y)h(the)g(TDISPn)f(k)m(eyw)m +(ord,)j(if)d(it)i(exists,)h(otherwise)e(b)m(y)0 4684 +y(the)i(datat)m(yp)s(e)h(of)g(the)f(column.)40 b(The)28 +b(length)g(of)h(the)f(returned)f(strings)h(can)g(b)s(e)g(determined)g +(with)f(the)i(ftgcdw)0 4797 y(routine.)41 b(The)30 b(follo)m(wing)h +(TDISPn)f(displa)m(y)g(formats)h(are)f(curren)m(tly)h(supp)s(orted:)191 +5036 y Fe(Iw.m)142 b(Integer)191 5149 y(Ow.m)g(Octal)46 +b(integer)191 5262 y(Zw.m)142 b(Hexadecimal)45 b(integer)191 +5375 y(Fw.d)142 b(Fixed)46 b(floating)g(point)191 5488 +y(Ew.d)142 b(Exponential)45 b(floating)g(point)191 5601 +y(Dw.d)142 b(Exponential)45 b(floating)g(point)191 5714 +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)p eop end +%%Page: 61 67 +TeXDict begin 61 66 bop 0 299 a Fg(6.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(61)0 555 y(where)37 +b(w)h(is)g(the)g(width)f(in)h(c)m(haracters)h(of)f(the)h(displa)m(y)m +(ed)f(v)-5 b(alues,)41 b(m)c(is)h(the)g(minim)m(um)g(n)m(um)m(b)s(er)e +(of)i(digits)0 668 y(displa)m(y)m(ed,)31 b(and)f(d)g(is)g(the)h(n)m(um) +m(b)s(er)e(of)h(digits)h(to)g(the)g(righ)m(t)g(of)g(the)f(decimal.)42 +b(The)30 b(.m)g(\014eld)g(is)g(optional.)0 920 y Fh(1)81 +b Fi(Put)30 b(elemen)m(ts)i(in)m(to)g(an)e(ASCI)s(I)f(or)i(binary)f +(table)i(column)e(\(in)h(the)g(CDU\).)g(\(The)g(SPP)f(FSPCLS)f(routine) +227 1033 y(has)38 b(an)f(additional)i(in)m(teger)g(argumen)m(t)f(after) +h(the)f(V)-10 b(ALUES)37 b(c)m(haracter)i(string)f(whic)m(h)f(sp)s +(eci\014es)h(the)227 1145 y(size)31 b(of)g(the)g(1st)g(dimension)e(of)i +(this)f(2-D)i(CHAR)e(arra)m(y\).)227 1294 y(The)24 b(alternate)i(v)m +(ersion)f(of)g(these)g(routines,)h(whose)e(names)g(end)g(in)g('LL')h +(after)g(the)g(datat)m(yp)s(e)g(c)m(haracter,)227 1407 +y(supp)s(ort)34 b(large)j(tables)f(with)g(more)f(then)h(2*31)h(ro)m +(ws.)57 b(When)35 b(calling)i(these)f(routines,)h(the)f(fro)m(w)g(and) +227 1520 y(felem)31 b(parameters)g(*m)m(ust*)g(b)s(e)f(64-bit)h(in)m +(teger*8)i(v)-5 b(ariables,)31 b(instead)g(of)g(normal)f(4-b)m(yte)i +(in)m(tegers.)382 1772 y Fe(FTPCL[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o +(row,)o(fel)o(em,n)o(elem)o(ent)o(s,va)o(lues)o(,)42 +b(>)47 b(status\))382 1885 y(FTPCL[LBIJKEDCM]LL\(unit,)o(col)o(num,)o +(frow)o(,fe)o(lem,)o(nele)o(men)o(ts,v)o(alue)o(s,)41 +b(>)48 b(status\))0 2136 y Fh(2)81 b Fi(Put)29 b(elemen)m(ts)i(in)m(to) +g(an)f(ASCI)s(I)e(or)i(binary)f(table)i(column)e(\(in)h(the)g(CDU\))g +(substituting)g(the)g(appropriate)227 2249 y(FITS)c(n)m(ull)g(v)-5 +b(alue)26 b(for)g(an)m(y)h(elemen)m(ts)g(that)g(are)f(equal)h(to)g +(NULL)-10 b(V)g(AL.)26 b(F)-8 b(or)27 b(ASCI)s(I)e(T)-8 +b(ABLE)26 b(extensions,)227 2362 y(the)31 b(n)m(ull)f(v)-5 +b(alue)31 b(de\014ned)e(b)m(y)h(the)g(previous)g(call)i(to)f(FTSNUL)f +(will)g(b)s(e)g(substituted;)g(F)-8 b(or)31 b(in)m(teger)h(FITS)227 +2475 y(columns,)39 b(in)e(a)h(binary)f(table)h(the)f(n)m(ull)h(v)-5 +b(alue)37 b(de\014ned)g(b)m(y)g(the)g(previous)g(call)i(to)f(FTTNUL)f +(will)h(b)s(e)227 2588 y(substituted;)28 b(F)-8 b(or)28 +b(\015oating)h(p)s(oin)m(t)e(FITS)f(columns)h(a)h(sp)s(ecial)g(IEEE)f +(NaN)h(\(Not-a-Num)m(b)s(er\))h(v)-5 b(alue)28 b(will)227 +2701 y(b)s(e)i(substituted.)227 2850 y(The)24 b(alternate)i(v)m(ersion) +f(of)g(these)g(routines,)h(whose)e(names)g(end)g(in)g('LL')h(after)g +(the)g(datat)m(yp)s(e)g(c)m(haracter,)227 2963 y(supp)s(ort)34 +b(large)j(tables)f(with)g(more)f(then)h(2*31)h(ro)m(ws.)57 +b(When)35 b(calling)i(these)f(routines,)h(the)f(fro)m(w)g(and)227 +3075 y(felem)31 b(parameters)g(*m)m(ust*)g(b)s(e)f(64-bit)h(in)m +(teger*8)i(v)-5 b(ariables,)31 b(instead)g(of)g(normal)f(4-b)m(yte)i +(in)m(tegers.)382 3327 y Fe(FTPCN[SBIJKED]\(unit,coln)o(um,)o(frow)o +(,fel)o(em,)o(nele)o(ment)o(s,v)o(alue)o(s,nu)o(llv)o(al)42 +b(>)47 b(status\))382 3440 y(FTPCN[SBIJKED]LL\(unit,co)o(lnu)o(m,\(I)o +(*8\))41 b(frow,\(I*8\))k(felem,nelements,values,)764 +3553 y(nullval)g(>)j(status\))0 3804 y Fh(3)81 b Fi(Put)37 +b(bit)h(v)-5 b(alues)38 b(in)m(to)h(a)f(binary)f(b)m(yte)h(\('B'\))i +(or)d(bit)h(\('X'\))h(table)g(column)f(\(in)f(the)h(CDU\).)h(LRA)-8 +b(Y)38 b(is)g(an)227 3917 y(arra)m(y)c(of)g(logical)h(v)-5 +b(alues)34 b(corresp)s(onding)e(to)i(the)g(sequence)f(of)h(bits)f(to)h +(b)s(e)f(written.)49 b(If)33 b(LRA)-8 b(Y)34 b(is)f(true)227 +4030 y(then)f(the)g(corresp)s(onding)f(bit)h(is)g(set)g(to)h(1,)g +(otherwise)f(the)g(bit)g(is)g(set)h(to)g(0.)45 b(Note)34 +b(that)e(in)g(the)g(case)h(of)227 4143 y('X')g(columns,)g(FITSIO)e +(will)i(write)f(to)h(all)g(8)g(bits)f(of)g(eac)m(h)i(b)m(yte)f(whether) +e(they)i(are)g(formally)f(v)-5 b(alid)33 b(or)227 4256 +y(not.)46 b(Th)m(us)31 b(if)h(the)g(column)g(is)f(de\014ned)g(as)h +('4X',)i(and)d(one)h(calls)h(FTPCLX)f(with)f(fbit=1)h(and)f(n)m(bit=8,) +227 4369 y(then)j(all)h(8)f(bits)g(will)g(b)s(e)f(written)h(in)m(to)h +(the)f(\014rst)g(b)m(yte)g(\(as)h(opp)s(osed)e(to)i(writing)e(the)i +(\014rst)e(4)h(bits)g(in)m(to)227 4482 y(the)d(\014rst)f(ro)m(w)g(and)g +(then)g(the)h(next)f(4)h(bits)f(in)m(to)i(the)e(next)h(ro)m(w\),)g(ev)m +(en)g(though)f(the)h(last)g(4)g(bits)f(of)h(eac)m(h)227 +4595 y(b)m(yte)g(are)g(formally)g(not)g(de\014ned.)382 +4846 y Fe(FTPCLX\(unit,colnum,frow,)o(fbi)o(t,nb)o(it,l)o(ray)o(,)42 +b(>)47 b(status\))0 5098 y Fh(4)81 b Fi(Set)30 b(table)h(elemen)m(ts)h +(in)e(a)h(column)f(as)h(unde\014ned)382 5349 y Fe +(FTPCLU\(unit,colnum,frow,)o(fel)o(em,n)o(elem)o(ent)o(s,)42 +b(>)47 b(status\))0 5601 y Fh(5)81 b Fi(Get)34 b(elemen)m(ts)g(from)f +(an)g(ASCI)s(I)f(or)h(binary)g(table)h(column)f(\(in)g(the)g(CDU\).)i +(These)e(routines)g(return)f(the)227 5714 y(v)-5 b(alues)30 +b(of)g(the)g(table)h(column)f(arra)m(y)g(elemen)m(ts.)42 +b(Unde\014ned)28 b(arra)m(y)j(elemen)m(ts)g(will)f(b)s(e)f(returned)g +(with)h(a)p eop end +%%Page: 62 68 +TeXDict begin 62 67 bop 0 299 a Fi(62)1319 b Fg(CHAPTER)29 +b(6.)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(v)-5 b(alue)26 b(=)g(n)m(ullv)-5 +b(al,)27 b(unless)e(n)m(ullv)-5 b(al)26 b(=)f(0)h(\(or)g(=)f(')h(')g +(for)f(ftgcvs\))i(in)e(whic)m(h)g(case)i(no)e(c)m(hec)m(king)j(for)d +(unde\014ned)227 668 y(v)-5 b(alues)28 b(will)g(b)s(e)f(p)s(erformed.) +39 b(The)27 b(ANYF)h(parameter)g(is)g(set)g(to)g(true)g(if)g(an)m(y)f +(of)h(the)g(returned)f(elemen)m(ts)227 781 y(are)f(unde\014ned.)37 +b(\(Note:)i(the)26 b(ftgcl)g(routine)f(simple)g(gets)h(an)g(arra)m(y)f +(of)g(logical)j(data)e(v)-5 b(alues)25 b(without)h(an)m(y)227 +894 y(c)m(hec)m(ks)39 b(for)e(unde\014ned)e(v)-5 b(alues;)41 +b(use)c(the)g(ftgc\015)h(routine)f(to)h(c)m(hec)m(k)g(for)f +(unde\014ned)e(logical)40 b(elemen)m(ts\).)227 1007 y(\(The)29 +b(SPP)f(FSGCVS)g(routine)g(has)h(an)f(additional)i(in)m(teger)g +(argumen)m(t)f(after)g(the)g(V)-10 b(ALUES)28 b(c)m(haracter)227 +1120 y(string)j(whic)m(h)f(sp)s(eci\014es)g(the)g(size)i(of)e(the)h +(1st)g(dimension)e(of)i(this)f(2-D)i(CHAR)e(arra)m(y\).)227 +1272 y(The)24 b(alternate)i(v)m(ersion)f(of)g(these)g(routines,)h +(whose)e(names)g(end)g(in)g('LL')h(after)g(the)g(datat)m(yp)s(e)g(c)m +(haracter,)227 1385 y(supp)s(ort)34 b(large)j(tables)f(with)g(more)f +(then)h(2*31)h(ro)m(ws.)57 b(When)35 b(calling)i(these)f(routines,)h +(the)f(fro)m(w)g(and)227 1498 y(felem)31 b(parameters)g(*m)m(ust*)g(b)s +(e)f(64-bit)h(in)m(teger*8)i(v)-5 b(ariables,)31 b(instead)g(of)g +(normal)f(4-b)m(yte)i(in)m(tegers.)382 1761 y Fe +(FTGCL\(unit,colnum,frow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42 +b(>)47 b(values,status\))382 1874 y(FTGCV[SBIJKEDCM]\(unit,co)o(lnu)o +(m,fr)o(ow,f)o(ele)o(m,ne)o(leme)o(nts)o(,nul)o(lval)o(,)42 +b(>)1098 1987 y(values,anyf,status\))382 2100 y +(FTGCV[BIJKEDCM]LL\(unit,c)o(oln)o(um,\()o(I*8\))f(frow,)46 +b(\(I*8\))h(felem,)f(nelements,)716 2213 y(nullval,)f(>)j +(values,anyf,status\))0 2476 y Fh(6)81 b Fi(Get)44 b(elemen)m(ts)h(and) +d(n)m(ull)i(\015ags)f(from)g(an)h(ASCI)s(I)d(or)j(binary)e(table)j +(column)e(\(in)g(the)h(CHDU\).)g(These)227 2589 y(routines)29 +b(return)e(the)i(v)-5 b(alues)29 b(of)g(the)g(table)h(column)e(arra)m +(y)i(elemen)m(ts.)41 b(An)m(y)29 b(unde\014ned)d(arra)m(y)k(elemen)m +(ts)227 2702 y(will)37 b(ha)m(v)m(e)h(the)f(corresp)s(onding)f(\015agv) +-5 b(als)37 b(elemen)m(t)i(set)e(equal)g(to)h(.TR)m(UE.)f(The)f(ANYF)i +(parameter)f(is)227 2815 y(set)30 b(to)g(true)g(if)f(an)m(y)h(of)f(the) +h(returned)e(elemen)m(ts)j(are)f(unde\014ned.)38 b(\(The)29 +b(SPP)f(FSGCFS)h(routine)h(has)f(an)227 2928 y(additional)e(in)m(teger) +h(argumen)m(t)e(after)h(the)f(V)-10 b(ALUES)26 b(c)m(haracter)i(string) +e(whic)m(h)f(sp)s(eci\014es)h(the)h(size)f(of)h(the)227 +3041 y(1st)k(dimension)f(of)h(this)f(2-D)h(CHAR)g(arra)m(y\).)227 +3193 y(The)24 b(alternate)i(v)m(ersion)f(of)g(these)g(routines,)h +(whose)e(names)g(end)g(in)g('LL')h(after)g(the)g(datat)m(yp)s(e)g(c)m +(haracter,)227 3306 y(supp)s(ort)34 b(large)j(tables)f(with)g(more)f +(then)h(2*31)h(ro)m(ws.)57 b(When)35 b(calling)i(these)f(routines,)h +(the)f(fro)m(w)g(and)227 3418 y(felem)31 b(parameters)g(*m)m(ust*)g(b)s +(e)f(64-bit)h(in)m(teger*8)i(v)-5 b(ariables,)31 b(instead)g(of)g +(normal)f(4-b)m(yte)i(in)m(tegers.)382 3682 y Fe +(FTGCF[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,)o(fel)o(em,n)o(elem)o +(ent)o(s,)42 b(>)1193 3795 y(values,flagvals,anyf,stat)o(us\))382 +3908 y(FTGCF[BIJKED]LL\(unit,col)o(num)o(,)g(\(I*8\))k(frow,)h(\(I*8\)) +f(felem,nelements,)d(>)1193 4021 y(values,flagvals,anyf,stat)o(us\))0 +4284 y Fh(7)81 b Fi(Get)29 b(an)f(arbitrary)g(data)h(subsection)f(from) +g(an)g(N-dimensional)h(arra)m(y)g(in)f(a)g(binary)g(table)h(v)m(ector)h +(column.)227 4397 y(Unde\014ned)k(pixels)h(in)g(the)h(arra)m(y)g(will)f +(b)s(e)g(set)h(equal)f(to)h(the)g(v)-5 b(alue)36 b(of)f('n)m(ullv)-5 +b(al',)38 b(unless)c(n)m(ullv)-5 b(al=0)36 b(in)227 4510 +y(whic)m(h)d(case)i(no)e(testing)i(for)e(unde\014ned)e(pixels)j(will)f +(b)s(e)g(p)s(erformed.)49 b(The)32 b(\014rst)h(and)g(last)h(ro)m(ws)g +(in)f(the)227 4623 y(table)28 b(to)f(b)s(e)f(read)g(are)h(sp)s +(eci\014ed)e(b)m(y)i(fpixels\(naxis+1\))g(and)f(lpixels\(naxis+1\),)j +(and)d(hence)g(are)h(treated)227 4736 y(as)f(the)f(next)h(higher)f +(dimension)g(of)g(the)h(FITS)e(N-dimensional)i(arra)m(y)-8 +b(.)40 b(The)25 b(INCS)f(parameter)i(sp)s(eci\014es)227 +4848 y(the)31 b(sampling)f(in)m(terv)-5 b(al)32 b(in)e(eac)m(h)h +(dimension)f(b)s(et)m(w)m(een)h(the)g(data)g(elemen)m(ts)g(that)g(will) +g(b)s(e)f(returned.)382 5112 y Fe(FTGSV[BIJKED]\(unit,colnu)o(m,n)o +(axis)o(,nax)o(es,)o(fpix)o(els,)o(lpi)o(xels)o(,inc)o(s,n)o(ullv)o +(al,)41 b(>)1002 5225 y(array,anyf,status\))0 5488 y +Fh(8)81 b Fi(Get)29 b(an)f(arbitrary)g(data)h(subsection)f(from)g(an)g +(N-dimensional)h(arra)m(y)g(in)f(a)g(binary)g(table)h(v)m(ector)h +(column.)227 5601 y(An)m(y)39 b(Unde\014ned)e(pixels)i(in)g(the)g(arra) +m(y)g(will)g(ha)m(v)m(e)h(the)f(corresp)s(onding)f('\015agv)-5 +b(als')40 b(elemen)m(t)g(set)f(equal)227 5714 y(to)d(.TR)m(UE.)f(The)f +(\014rst)g(and)g(last)i(ro)m(ws)f(in)f(the)h(table)h(to)f(b)s(e)g(read) +f(are)h(sp)s(eci\014ed)f(b)m(y)h(fpixels\(naxis+1\))p +eop end +%%Page: 63 69 +TeXDict begin 63 68 bop 0 299 a Fg(6.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(63)227 555 +y(and)39 b(lpixels\(naxis+1\),)k(and)38 b(hence)i(are)f(treated)i(as)e +(the)g(next)h(higher)f(dimension)f(of)i(the)f(FITS)g(N-)227 +668 y(dimensional)g(arra)m(y)-8 b(.)66 b(The)38 b(INCS)g(parameter)h +(sp)s(eci\014es)f(the)g(sampling)h(in)m(terv)-5 b(al)40 +b(in)e(eac)m(h)i(dimension)227 781 y(b)s(et)m(w)m(een)31 +b(the)g(data)g(elemen)m(ts)h(that)f(will)f(b)s(e)g(returned.)382 +1028 y Fe(FTGSF[BIJKED]\(unit,colnu)o(m,n)o(axis)o(,nax)o(es,)o(fpix)o +(els,)o(lpi)o(xels)o(,inc)o(s,)41 b(>)1002 1141 y +(array,flagvals,anyf,statu)o(s\))0 1389 y Fh(9)81 b Fi(Get)33 +b(bit)g(v)-5 b(alues)34 b(from)e(a)h(b)m(yte)h(\('B'\))g(or)f(bit)g +(\(`X`\))h(table)g(column)f(\(in)g(the)g(CDU\).)g(LRA)-8 +b(Y)34 b(is)f(an)f(arra)m(y)i(of)227 1502 y(logical)41 +b(v)-5 b(alues)39 b(corresp)s(onding)f(to)h(the)g(sequence)f(of)h(bits) +g(to)g(b)s(e)f(read.)65 b(If)38 b(LRA)-8 b(Y)39 b(is)f(true)h(then)f +(the)227 1615 y(corresp)s(onding)c(bit)g(w)m(as)g(set)h(to)g(1,)h +(otherwise)f(the)f(bit)h(w)m(as)f(set)h(to)g(0.)53 b(Note)35 +b(that)g(in)f(the)h(case)g(of)f('X')227 1728 y(columns,)41 +b(FITSIO)d(will)h(read)f(all)i(8)f(bits)g(of)g(eac)m(h)h(b)m(yte)f +(whether)f(they)h(are)g(formally)h(v)-5 b(alid)39 b(or)f(not.)227 +1840 y(Th)m(us)c(if)g(the)h(column)f(is)g(de\014ned)f(as)i('4X',)h(and) +d(one)i(calls)h(FTGCX)e(with)g(fbit=1)h(and)e(n)m(bit=8,)j(then)227 +1953 y(all)30 b(8)g(bits)f(will)g(b)s(e)g(read)g(from)g(the)g(\014rst)f +(b)m(yte)i(\(as)g(opp)s(osed)e(to)i(reading)f(the)h(\014rst)e(4)i(bits) +f(from)f(the)i(\014rst)227 2066 y(ro)m(w)g(and)e(then)h(the)h(\014rst)e +(4)i(bits)f(from)g(the)g(next)g(ro)m(w\),)i(ev)m(en)f(though)f(the)g +(last)h(4)g(bits)f(of)g(eac)m(h)i(b)m(yte)f(are)227 2179 +y(formally)h(not)g(de\014ned.)382 2427 y Fe(FTGCX\(unit,colnum,frow,f)o +(bit)o(,nbi)o(t,)42 b(>)47 b(lray,status\))0 2674 y Fh(10)f +Fi(Read)31 b(an)m(y)g(consecutiv)m(e)h(set)f(of)g(bits)g(from)f(an)g +('X')i(or)e('B')i(column)e(and)g(in)m(terpret)h(them)g(as)g(an)f +(unsigned)227 2787 y(n-bit)k(in)m(teger.)54 b(NBIT)35 +b(m)m(ust)f(b)s(e)f(less)i(than)f(or)g(equal)h(to)g(16)g(when)f +(calling)h(FTGCXI,)g(and)f(less)g(than)227 2900 y(or)e(equal)g(to)g(32) +g(when)e(calling)j(FTGCXJ;)f(there)f(is)h(no)f(limit)h(on)g(the)f(v)-5 +b(alue)32 b(of)g(NBIT)f(for)g(FTGCXD,)227 3013 y(but)38 +b(the)h(returned)e(double)i(precision)f(v)-5 b(alue)39 +b(only)g(has)f(48)i(bits)e(of)h(precision)g(on)f(most)h(32-bit)h(w)m +(ord)227 3126 y(mac)m(hines.)64 b(The)37 b(NBITS)g(bits)h(are)g(in)m +(terpreted)g(as)g(an)g(unsigned)e(in)m(teger)k(unless)d(NBITS)g(=)g(16) +i(\(in)227 3239 y(FTGCXI\))e(or)g(32)g(\(in)g(FTGCXJ\))f(in)g(whic)m(h) +h(case)g(the)g(string)g(of)f(bits)h(are)g(in)m(terpreted)f(as)h(16-bit) +h(or)227 3352 y(32-bit)j(2's)f(complemen)m(t)h(signed)e(in)m(tegers.)69 +b(If)39 b(NR)m(O)m(WS)i(is)e(greater)i(than)e(1)h(then)f(the)h(same)g +(set)g(of)227 3464 y(bits)34 b(will)g(b)s(e)f(read)h(from)f(sequen)m +(tial)i(ro)m(ws)f(in)f(the)h(table)g(starting)h(with)e(ro)m(w)h(FR)m(O) +m(W.)h(Note)g(that)g(the)227 3577 y(n)m(um)m(b)s(ering)27 +b(con)m(v)m(en)m(tion)j(used)d(here)g(for)h(the)g(FBIT)f(parameter)i +(adopts)e(1)h(for)g(the)g(\014rst)f(elemen)m(t)i(of)f(the)227 +3690 y(v)m(ector)k(of)f(bits;)f(this)h(is)f(the)h(Most)g(Signi\014can)m +(t)g(Bit)g(of)g(the)f(in)m(teger)i(v)-5 b(alue.)382 3938 +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 4185 y Fh(11)f Fi(Get)37 b(the)e(descriptor)h +(for)f(a)h(v)-5 b(ariable)37 b(length)f(column)f(in)g(a)h(binary)f +(table.)57 b(The)35 b(descriptor)h(consists)g(of)227 +4298 y(2)c(in)m(teger)g(parameters:)42 b(the)31 b(n)m(um)m(b)s(er)f(of) +h(elemen)m(ts)i(in)d(the)h(arra)m(y)h(and)e(the)h(starting)h(o\013set)g +(relativ)m(e)h(to)227 4411 y(the)28 b(start)f(of)g(the)h(heap.)39 +b(The)27 b(\014rst)f(routine)h(returns)f(a)h(single)h(descriptor)f +(whereas)g(the)g(second)g(routine)227 4524 y(returns)i(the)i +(descriptors)f(for)g(a)h(range)g(of)f(ro)m(ws)h(in)f(the)g(table.)382 +4771 y Fe(FTGDES\(unit,colnum,rownu)o(m,)41 b(>)48 b +(nelements,offset,status\))382 4884 y(FTGDESLL\(unit,colnum,row)o(num)o +(,)42 b(>)47 b(nelementsll,offsetll,statu)o(s\))382 5110 +y(FFGDESS\(unit,colnum,firs)o(tro)o(w,nr)o(ows)41 b(>)48 +b(nelements,offset,)43 b(status\))382 5223 y(FFGDESSLL\(unit,colnum,fi) +o(rst)o(row,)o(nrow)o(s)f(>)47 b(nelementsll,offsetll,)42 +b(status\))0 5470 y Fh(12)k Fi(W)-8 b(rite)33 b(the)f(descriptor)g(for) +f(a)i(v)-5 b(ariable)32 b(length)g(column)g(in)f(a)i(binary)e(table.)45 +b(These)32 b(subroutines)e(can)j(b)s(e)227 5583 y(used)f(in)h +(conjunction)g(with)g(FTGDES)g(to)g(enable)h(2)f(or)g(more)g(arra)m(ys) +h(to)f(p)s(oin)m(t)g(to)h(the)f(same)g(storage)227 5696 +y(lo)s(cation)f(to)f(sa)m(v)m(e)h(storage)g(space)f(if)f(the)h(arra)m +(ys)g(are)g(iden)m(tical.)p eop end +%%Page: 64 70 +TeXDict begin 64 69 bop 0 299 a Fi(64)1319 b Fg(CHAPTER)29 +b(6.)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(FTPDES\(unit,colnum,rownu)o(m,n)o(elem)o +(ents)o(,of)o(fset)o(,)42 b(>)47 b(status\))382 668 y +(FTPDESLL\(unit,colnum,row)o(num)o(,nel)o(emen)o(tsl)o(l,of)o(fset)o +(ll,)41 b(>)48 b(status\))0 1001 y Fd(6.8)135 b(Ro)l(w)46 +b(Selection)g(and)f(Calculator)h(Routines)0 1252 y Fi(These)21 +b(routines)f(all)i(parse)f(and)f(ev)-5 b(aluate)23 b(an)d(input)g +(string)h(con)m(taining)i(a)e(user)f(de\014ned)g(arithmetic)i +(expression.)0 1365 y(The)29 b(\014rst)f(3)i(routines)f(select)i(ro)m +(ws)e(in)g(a)h(FITS)e(table,)j(based)e(on)g(whether)g(the)g(expression) +g(ev)-5 b(aluates)31 b(to)f(true)0 1477 y(\(not)e(equal)f(to)h(zero\))g +(or)f(false)h(\(zero\).)41 b(The)27 b(other)g(routines)g(ev)-5 +b(aluate)29 b(the)e(expression)g(and)f(calculate)k(a)d(v)-5 +b(alue)0 1590 y(for)35 b(eac)m(h)h(ro)m(w)g(of)f(the)h(table.)56 +b(The)35 b(allo)m(w)m(ed)i(expression)e(syn)m(tax)g(is)h(describ)s(ed)e +(in)h(the)g(ro)m(w)h(\014lter)f(section)h(in)0 1703 y(the)h(earlier)h +(`Extended)e(File)i(Name)f(Syn)m(tax')g(c)m(hapter)h(of)f(this)f(do)s +(cumen)m(t.)60 b(The)36 b(expression)h(ma)m(y)g(also)h(b)s(e)0 +1816 y(written)28 b(to)i(a)e(text)i(\014le,)f(and)f(the)h(name)f(of)h +(the)f(\014le,)h(prep)s(ended)e(with)h(a)h('@')f(c)m(haracter)i(ma)m(y) +f(b)s(e)f(supplied)f(for)0 1929 y(the)34 b('expr')g(parameter)g(\(e.g.) +53 b('@\014lename.txt'\).)f(The)34 b(expression)f(in)h(the)g(\014le)g +(can)g(b)s(e)f(arbitrarily)h(complex)0 2042 y(and)h(extend)h(o)m(v)m +(er)h(m)m(ultiple)f(lines)g(of)g(the)f(\014le.)57 b(Lines)36 +b(that)g(b)s(egin)f(with)g(2)h(slash)g(c)m(haracters)h(\('//'\))h(will) +e(b)s(e)0 2155 y(ignored)30 b(and)g(ma)m(y)h(b)s(e)f(used)g(to)h(add)e +(commen)m(ts)j(to)f(the)f(\014le.)0 2412 y Fh(1)81 b +Fi(Ev)-5 b(aluate)38 b(a)f(b)s(o)s(olean)g(expression)g(o)m(v)m(er)h +(the)g(indicated)f(ro)m(ws,)i(returning)d(an)h(arra)m(y)h(of)f(\015ags) +g(indicating)227 2525 y(whic)m(h)30 b(ro)m(ws)h(ev)-5 +b(aluated)31 b(to)g(TR)m(UE/F)-10 b(ALSE)430 2783 y Fe +(FTFROW\(unit,expr,firstr)o(ow,)41 b(nrows,)46 b(>)i(n_good_rows,)c +(row_status,)h(status\))0 3040 y Fh(2)81 b Fi(Find)29 +b(the)i(\014rst)f(ro)m(w)g(whic)m(h)g(satis\014es)h(the)g(input)e(b)s +(o)s(olean)h(expression)430 3298 y Fe(FTFFRW\(unit,)44 +b(expr,)i(>)i(rownum,)e(status\))0 3555 y Fh(3)81 b Fi(Ev)-5 +b(aluate)35 b(an)f(expression)h(on)f(all)h(ro)m(ws)g(of)f(a)h(table.)54 +b(If)34 b(the)g(input)g(and)g(output)g(\014les)g(are)h(not)g(the)f +(same,)227 3668 y(cop)m(y)i(the)g(TR)m(UE)f(ro)m(ws)g(to)h(the)f +(output)g(\014le;)j(if)d(the)g(output)g(table)h(is)f(not)h(empt)m(y)-8 +b(,)37 b(then)e(this)g(routine)227 3781 y(will)28 b(app)s(end)e(the)i +(new)f(selected)i(ro)m(ws)e(after)h(the)g(existing)h(ro)m(ws.)39 +b(If)27 b(the)h(\014les)g(are)f(the)h(same,)h(delete)g(the)227 +3894 y(F)-10 b(ALSE)30 b(ro)m(ws)h(\(preserv)m(e)f(the)h(TR)m(UE)f(ro)m +(ws\).)430 4151 y Fe(FTSROW\(inunit,)43 b(outunit,)j(expr,)g(>)i +(status\))0 4409 y Fh(4)81 b Fi(Calculate)28 b(an)f(expression)f(for)h +(the)f(indicated)i(ro)m(ws)e(of)h(a)g(table,)i(returning)d(the)h +(results,)g(cast)h(as)f(datat)m(yp)s(e)227 4522 y(\(TSHOR)-8 +b(T,)32 b(TDOUBLE,)h(etc\),)h(in)e(arra)m(y)-8 b(.)48 +b(If)31 b(n)m(ulv)-5 b(al==NULL,)33 b(UNDEFs)g(will)f(b)s(e)g(zero)s +(ed)g(out.)47 b(F)-8 b(or)227 4634 y(v)m(ector)37 b(results,)f(the)f(n) +m(um)m(b)s(er)e(of)i(elemen)m(ts)i(returned)c(ma)m(y)j(b)s(e)e(less)h +(than)g(nelemen)m(ts)g(if)g(nelemen)m(ts)h(is)227 4747 +y(not)30 b(an)g(ev)m(en)h(m)m(ultiple)f(of)g(the)g(result)g(dimension.) +40 b(Call)30 b(FTTEXP)g(to)g(obtain)h(the)f(dimensions)f(of)h(the)227 +4860 y(results.)430 5118 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 5231 +y(array,anynul,status\))0 5488 y Fh(5)81 b Fi(Ev)-5 b(aluate)33 +b(an)g(expression)f(and)h(write)f(the)h(result)g(either)g(to)h(a)f +(column)f(\(if)h(the)g(expression)f(is)h(a)g(function)227 +5601 y(of)d(other)g(columns)g(in)f(the)h(table\))h(or)f(to)g(a)h(k)m +(eyw)m(ord)f(\(if)g(the)g(expression)f(ev)-5 b(aluates)32 +b(to)e(a)g(constan)m(t)i(and)227 5714 y(is)f(not)f(a)h(function)f(of)h +(other)f(columns)h(in)f(the)g(table\).)42 b(In)30 b(the)h(former)e +(case,)j(the)f(parName)f(parameter)p eop end +%%Page: 65 71 +TeXDict begin 65 70 bop 0 299 a Fg(6.9.)72 b(CELESTIAL)29 +b(COORDINA)-8 b(TE)30 b(SYSTEM)f(SUBR)m(OUTINES)1307 +b Fi(65)227 555 y(is)40 b(the)g(name)f(of)h(the)g(column)f(\(whic)m(h)h +(ma)m(y)g(or)f(ma)m(y)h(not)g(already)g(exist\))h(in)m(to)f(whic)m(h)g +(to)g(write)g(the)227 668 y(results,)e(and)f(parInfo)e(con)m(tains)j +(an)f(optional)g(TF)m(ORM)g(k)m(eyw)m(ord)g(v)-5 b(alue)38 +b(if)e(a)h(new)f(column)h(is)f(b)s(eing)227 781 y(created.)42 +b(If)28 b(a)h(TF)m(ORM)h(v)-5 b(alue)29 b(is)g(not)g(sp)s(eci\014ed)g +(then)f(a)i(default)f(format)g(will)h(b)s(e)e(used,)h(dep)s(ending)e +(on)227 894 y(the)35 b(expression.)54 b(If)34 b(the)h(expression)f(ev) +-5 b(aluates)37 b(to)e(a)g(constan)m(t,)i(then)e(the)g(result)f(will)h +(b)s(e)f(written)h(to)227 1007 y(the)28 b(k)m(eyw)m(ord)g(name)f(giv)m +(en)h(b)m(y)g(the)f(parName)h(parameter,)h(and)d(the)i(parInfo)e +(parameter)i(ma)m(y)g(b)s(e)f(used)227 1120 y(to)k(supply)e(an)h +(optional)i(commen)m(t)f(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)h(exist,)g +(then)227 1233 y(the)f(name)f(of)h(the)g(k)m(eyw)m(ord)g(m)m(ust)f(b)s +(e)g(preceded)g(with)g(a)h('#')f(c)m(haracter,)j(otherwise)e(the)f +(result)h(will)g(b)s(e)227 1346 y(written)h(to)g(a)g(column)f(with)g +(that)h(name.)430 1605 y Fe(FTCALC\(inunit,)43 b(expr,)k(outunit,)e +(parName,)h(parInfo,)f(>)j(status\))0 1865 y Fh(6)81 +b Fi(This)38 b(calculator)k(routine)e(is)f(similar)h(to)g(the)g +(previous)f(routine,)j(except)f(that)f(the)g(expression)f(is)h(only)227 +1978 y(ev)-5 b(aluated)42 b(o)m(v)m(er)f(the)f(sp)s(eci\014ed)g(ro)m(w) +g(ranges.)70 b(nranges)39 b(sp)s(eci\014es)h(the)g(n)m(um)m(b)s(er)f +(of)h(ro)m(w)h(ranges,)i(and)227 2091 y(\014rstro)m(w)30 +b(and)g(lastro)m(w)h(giv)m(e)h(the)f(starting)g(and)f(ending)g(ro)m(w)g +(n)m(um)m(b)s(er)f(of)i(eac)m(h)g(range.)430 2350 y Fe +(FTCALC_RNG\(inunit,)42 b(expr,)47 b(outunit,)e(parName,)h(parInfo,)573 +2463 y(nranges,)f(firstrow,)h(lastrow,)f(>)j(status\))0 +2723 y Fh(7)81 b Fi(Ev)-5 b(aluate)36 b(the)f(giv)m(en)h(expression)f +(and)g(return)f(dimension)g(and)h(t)m(yp)s(e)g(information)g(on)g(the)h +(result.)54 b(The)227 2836 y(returned)37 b(dimensions)f(corresp)s(ond)g +(to)j(a)e(single)i(ro)m(w)e(en)m(try)h(of)f(the)h(requested)f +(expression,)j(and)d(are)227 2949 y(equiv)-5 b(alen)m(t)26 +b(to)f(the)g(result)f(of)g(\014ts)p 1380 2949 28 4 v +33 w(read)p 1585 2949 V 32 w(tdim\(\).)40 b(Note)25 b(that)g(strings)f +(are)h(considered)f(to)h(b)s(e)f(one)g(elemen)m(t)227 +3062 y(regardless)31 b(of)g(string)f(length.)41 b(If)30 +b(maxdim)g(==)g(0,)h(then)f(naxes)g(is)h(optional.)430 +3321 y Fe(FTTEXP\(unit,)44 b(expr,)i(maxdim)g(>)i(datatype,)d(nelem,)h +(naxis,)g(naxes,)g(status\))0 3655 y Fd(6.9)135 b(Celestial)48 +b(Co)t(ordinate)e(System)f(Subroutines)0 3905 y Fi(The)36 +b(FITS)g(comm)m(unit)m(y)h(has)f(adopted)h(a)g(set)g(of)g(k)m(eyw)m +(ord)g(con)m(v)m(en)m(tions)h(that)f(de\014ne)f(the)h(transformations)0 +4018 y(needed)30 b(to)i(con)m(v)m(ert)g(b)s(et)m(w)m(een)f(pixel)g(lo)s +(cations)h(in)e(an)h(image)h(and)e(the)g(corresp)s(onding)g(celestial)j +(co)s(ordinates)0 4131 y(on)25 b(the)h(sky)-8 b(,)27 +b(or)e(more)g(generally)-8 b(,)29 b(that)d(de\014ne)e(w)m(orld)h(co)s +(ordinates)i(that)e(are)h(to)g(b)s(e)f(asso)s(ciated)i(with)e(an)m(y)h +(pixel)0 4244 y(lo)s(cation)36 b(in)e(an)h(n-dimensional)f(FITS)g(arra) +m(y)-8 b(.)54 b(CFITSIO)33 b(is)h(distributed)g(with)g(a)h(couple)f(of) +h(self-con)m(tained)0 4357 y(W)-8 b(orld)28 b(Co)s(ordinate)f(System)f +(\(W)m(CS\))i(routines,)g(ho)m(w)m(ev)m(er,)h(these)f(routines)f(DO)g +(NOT)f(supp)s(ort)f(all)j(the)f(latest)0 4470 y(W)m(CS)38 +b(con)m(v)m(en)m(tions,)k(so)d(it)g(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)e(use)g +(a)h(more)0 4583 y(robust)30 b(external)h(W)m(CS)f(library)-8 +b(.)41 b(Sev)m(eral)31 b(recommended)f(libraries)h(are:)95 +4842 y Fe(WCSLIB)47 b(-)95 b(supported)45 b(by)i(Mark)g(Calabretta)95 +4955 y(WCSTools)f(-)h(supported)f(by)h(Doug)g(Mink)95 +5068 y(AST)g(library)f(-)i(developed)d(by)i(the)g(U.K.)g(Starlink)e +(project)0 5328 y Fi(More)30 b(information)f(ab)s(out)g(the)g(W)m(CS)g +(k)m(eyw)m(ord)h(con)m(v)m(en)m(tions)h(and)d(links)h(to)h(all)g(of)f +(these)g(W)m(CS)g(libraries)h(can)0 5441 y(b)s(e)g(found)f(on)h(the)h +(FITS)e(Supp)s(ort)g(O\016ce)h(w)m(eb)g(site)i(at)f(h)m +(ttp://\014ts.gsfc.nasa.go)m(v)j(under)29 b(the)h(W)m(CS)h(link.)0 +5601 y(The)i(functions)h(pro)m(vided)g(in)f(these)i(external)f(W)m(CS)g +(libraries)h(will)f(need)g(access)h(to)g(the)f(W)m(CS)g(information)0 +5714 y(con)m(tained)i(in)f(the)h(FITS)e(\014le)i(headers.)55 +b(One)35 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)f(to)g(pass)f(this)g +(information)h(to)g(the)f(external)p eop end +%%Page: 66 72 +TeXDict begin 66 71 bop 0 299 a Fi(66)1319 b Fg(CHAPTER)29 +b(6.)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(library)39 b(is)h(to)h(use)e(FITSIO)g(to)h +(cop)m(y)h(the)f(header)f(k)m(eyw)m(ords)h(in)m(to)h(one)f(long)g(c)m +(haracter)i(string,)g(and)d(then)0 668 y(pass)29 b(this)h(string)g(to)g +(an)g(in)m(terface)h(routine)f(in)g(the)g(external)g(library)g(that)g +(will)g(extract)i(the)e(necessary)g(W)m(CS)0 781 y(information)h +(\(e.g.,)h(see)f(the)f(astFitsChan)h(and)f(astPutCards)g(routines)g(in) +g(the)h(Starlink)f(AST)g(library\).)0 941 y(The)24 b(follo)m(wing)j +(FITSIO)c(routines)i(DO)g(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)i(that)f(ha)m(v)m(e)g(b)s(een)0 +1054 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(,)39 b(the)f(follo)m(wing)g(routines)g(ARE)f(NO) +m(W)h(DEP-)0 1167 y(RECA)-8 b(TED.)29 b(It)f(is)h(STR)m(ONGL)-8 +b(Y)28 b(RECOMMENDED)h(that)g(soft)m(w)m(are)h(dev)m(elop)s(ers)f(not)g +(use)f(these)h(routines,)0 1280 y(and)h(instead)g(use)g(an)h(external)g +(W)m(CS)f(library)-8 b(,)31 b(as)g(describ)s(ed)e(ab)s(o)m(v)m(e.)0 +1440 y(These)21 b(routines)g(are)g(included)f(mainly)h(for)g(bac)m(kw)m +(ard)g(compatibilit)m(y)j(with)c(existing)i(soft)m(w)m(are.)39 +b(They)21 b(supp)s(ort)0 1553 y(the)30 b(follo)m(wing)i(standard)d(map) +g(pro)5 b(jections:)41 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 1666 +y(are)f(the)g(legal)h(v)-5 b(alues)29 b(for)f(the)h(co)s(ordt)m(yp)s(e) +f(parameter\).)41 b(These)28 b(routines)h(are)g(based)f(on)g(similar)h +(functions)f(in)0 1779 y(Classic)j(AIPS.)f(All)h(the)g(angular)f(quan)m +(tities)i(are)f(giv)m(en)g(in)f(units)g(of)g(degrees.)0 +2048 y Fh(1)81 b Fi(Get)22 b(the)g(v)-5 b(alues)21 b(of)h(all)g(the)g +(standard)f(FITS)f(celestial)k(co)s(ordinate)f(system)e(k)m(eyw)m(ords) +h(from)f(the)h(header)f(of)h(a)227 2161 y(FITS)j(image)i(\(i.e.,)h(the) +d(primary)g(arra)m(y)h(or)f(an)h(image)g(extension\).)40 +b(These)26 b(v)-5 b(alues)25 b(ma)m(y)h(then)g(b)s(e)e(passed)227 +2274 y(to)39 b(the)e(subroutines)g(that)h(p)s(erform)e(the)i(co)s +(ordinate)g(transformations.)63 b(If)37 b(an)m(y)h(or)g(all)g(of)g(the) +g(W)m(CS)227 2387 y(k)m(eyw)m(ords)32 b(are)f(not)g(presen)m(t,)h(then) +f(default)g(v)-5 b(alues)31 b(will)h(b)s(e)e(returned.)41 +b(If)31 b(the)g(\014rst)g(co)s(ordinate)g(axis)h(is)227 +2500 y(the)d(declination-lik)m(e)j(co)s(ordinate,)e(then)e(this)g +(routine)h(will)g(sw)m(ap)f(them)h(so)g(that)g(the)g(longitudinal-lik)m +(e)227 2612 y(co)s(ordinate)i(is)g(returned)e(as)i(the)f(\014rst)g +(axis.)227 2767 y(If)35 b(the)h(\014le)f(uses)g(the)g(new)m(er)h('CDj)p +1454 2767 28 4 v 32 w(i')g(W)m(CS)f(transformation)h(matrix)g(k)m(eyw)m +(ords)f(instead)h(of)f(old)h(st)m(yle)227 2880 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)f +(routine)h(will)g(calculate)j(and)c(return)g(the)h(v)-5 +b(alues)227 2993 y(of)33 b(the)g(equiv)-5 b(alen)m(t)35 +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)h(from)e(the)i(new-st)m(yle)g(k)m(eyw)m(ords)227 +3106 y(to)e(the)f(old-st)m(yle)h(v)-5 b(alues)31 b(is)g(sometimes)g +(only)g(an)g(appro)m(ximation,)h(so)e(if)h(the)g(appro)m(ximation)h(is) +e(larger)227 3219 y(than)37 b(an)h(in)m(ternally)g(de\014ned)e +(threshold)h(lev)m(el,)k(then)c(CFITSIO)f(will)i(still)g(return)e(the)i +(appro)m(ximate)227 3332 y(W)m(CS)f(k)m(eyw)m(ord)g(v)-5 +b(alues,)39 b(but)d(will)h(also)h(return)d(with)i(status)g(=)f(506,)k +(to)e(w)m(arn)e(the)h(calling)h(program)227 3445 y(that)30 +b(appro)m(ximations)f(ha)m(v)m(e)h(b)s(een)e(made.)40 +b(It)29 b(is)g(then)f(up)g(to)h(the)g(calling)i(program)d(to)h(decide)h +(whether)227 3558 y(the)k(appro)m(ximations)g(are)g(su\016cien)m(tly)g +(accurate)i(for)d(the)h(particular)f(application,)j(or)e(whether)f +(more)227 3671 y(precise)e(W)m(CS)f(transformations)h(m)m(ust)f(b)s(e)g +(p)s(erformed)f(using)h(new-st)m(yle)h(W)m(CS)g(k)m(eyw)m(ords)f +(directly)-8 b(.)382 3940 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 4209 y Fh(2)81 b Fi(Get)34 b(the)f(v)-5 +b(alues)33 b(of)g(all)h(the)f(standard)f(FITS)h(celestial)i(co)s +(ordinate)f(system)f(k)m(eyw)m(ords)g(from)g(the)g(header)227 +4322 y(of)j(a)h(FITS)e(table)h(where)g(the)g(X)g(and)f(Y)h(\(or)g(RA)g +(and)g(DEC)f(co)s(ordinates)i(are)f(stored)g(in)g(2)g(separate)227 +4435 y(columns)c(of)g(the)g(table.)46 b(These)31 b(v)-5 +b(alues)32 b(ma)m(y)h(then)e(b)s(e)h(passed)f(to)h(the)g(subroutines)f +(that)h(p)s(erform)f(the)227 4548 y(co)s(ordinate)g(transformations.) +382 4817 y Fe(FTGTCS\(unit,xcol,ycol,)42 b(>)716 4930 +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 5199 y Fh(3)81 b Fi(Calculate)42 +b(the)g(celestial)h(co)s(ordinate)f(corresp)s(onding)e(to)i(the)f +(input)f(X)h(and)g(Y)g(pixel)g(lo)s(cation)i(in)e(the)227 +5312 y(image.)382 5581 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 5694 +y(coordtype,)k(>)i(xpos,ypos,status\))p eop end +%%Page: 67 73 +TeXDict begin 67 72 bop 0 299 a Fg(6.10.)73 b(FILE)30 +b(CHECKSUM)f(SUBR)m(OUTINES)2080 b Fi(67)0 555 y Fh(4)81 +b Fi(Calculate)42 b(the)g(X)f(and)f(Y)h(pixel)h(lo)s(cation)g(corresp)s +(onding)e(to)i(the)f(input)f(celestial)k(co)s(ordinate)e(in)f(the)227 +668 y(image.)382 932 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 1045 +y(coordtype,)k(>)i(xpix,ypix,status\))0 1383 y Fd(6.10)136 +b(File)45 b(Chec)l(ksum)g(Subroutines)0 1634 y Fi(The)33 +b(follo)m(wing)h(routines)f(either)h(compute)f(or)h(v)-5 +b(alidate)34 b(the)g(c)m(hec)m(ksums)f(for)g(the)h(CHDU.)g(The)e(D)m(A) +-8 b(T)g(ASUM)0 1747 y(k)m(eyw)m(ord)33 b(is)f(used)f(to)i(store)f(the) +h(n)m(umerical)f(v)-5 b(alue)33 b(of)f(the)g(32-bit,)i(1's)f(complemen) +m(t)g(c)m(hec)m(ksum)g(for)f(the)g(data)0 1860 y(unit)26 +b(alone.)40 b(If)25 b(there)h(is)h(no)e(data)i(unit)f(then)f(the)h(v)-5 +b(alue)27 b(is)f(set)g(to)h(zero.)40 b(The)26 b(n)m(umerical)g(v)-5 +b(alue)27 b(is)f(stored)g(as)g(an)0 1973 y(ASCI)s(I)20 +b(string)i(of)h(digits,)h(enclosed)f(in)e(quotes,)k(b)s(ecause)d(the)g +(v)-5 b(alue)23 b(ma)m(y)f(b)s(e)f(to)s(o)i(large)g(to)g(represen)m(t)f +(as)g(a)h(32-bit)0 2086 y(signed)28 b(in)m(teger.)41 +b(The)27 b(CHECKSUM)g(k)m(eyw)m(ord)i(is)f(used)f(to)h(store)h(the)f +(ASCI)s(I)e(enco)s(ded)i(COMPLEMENT)f(of)0 2199 y(the)f(c)m(hec)m(ksum) +h(for)f(the)h(en)m(tire)g(HDU.)g(Storing)f(the)h(complemen)m(t,)h +(rather)e(than)g(the)h(actual)g(c)m(hec)m(ksum,)h(forces)0 +2312 y(the)k(c)m(hec)m(ksum)h(for)f(the)h(whole)f(HDU)h(to)g(equal)g +(zero.)47 b(If)31 b(the)i(\014le)f(has)g(b)s(een)f(mo)s(di\014ed)g +(since)i(the)f(c)m(hec)m(ksums)0 2425 y(w)m(ere)39 b(computed,)i(then)e +(the)g(HDU)g(c)m(hec)m(ksum)h(will)f(usually)f(not)h(equal)h(zero.)66 +b(These)39 b(c)m(hec)m(ksum)g(k)m(eyw)m(ord)0 2538 y(con)m(v)m(en)m +(tions)34 b(are)f(based)f(on)g(a)g(pap)s(er)f(b)m(y)h(Rob)g(Seaman)g +(published)f(in)h(the)g(pro)s(ceedings)g(of)g(the)h(AD)m(ASS)f(IV)0 +2651 y(conference)f(in)f(Baltimore)i(in)f(No)m(v)m(em)m(b)s(er)g(1994)h +(and)e(a)h(later)g(revision)g(in)f(June)f(1995.)0 2914 +y Fh(1)81 b Fi(Compute)33 b(and)g(write)h(the)g(D)m(A)-8 +b(T)g(ASUM)35 b(and)e(CHECKSUM)g(k)m(eyw)m(ord)h(v)-5 +b(alues)34 b(for)f(the)h(CHDU)g(in)m(to)h(the)227 3027 +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)25 b(is)f(the)h(32-bit)h(c)m(hec)m(ksum)f(for)f(the)h +(data)g(unit,)h(expressed)e(as)h(a)227 3140 y(decimal)32 +b(in)m(teger)f(enclosed)g(in)f(single)h(quotes.)41 b(The)30 +b(CHECKSUM)g(k)m(eyw)m(ord)g(v)-5 b(alue)31 b(is)f(a)h(16-c)m(haracter) +227 3253 y(string)j(whic)m(h)f(is)h(the)f(ASCI)s(I-enco)s(ded)f(v)-5 +b(alue)34 b(for)g(the)f(complemen)m(t)i(of)f(the)f(c)m(hec)m(ksum)i +(for)e(the)h(whole)227 3366 y(HDU.)h(If)e(these)g(k)m(eyw)m(ords)h +(already)g(exist,)h(their)e(v)-5 b(alues)34 b(will)g(b)s(e)f(up)s +(dated)f(only)h(if)g(necessary)h(\(i.e.,)i(if)227 3479 +y(the)31 b(\014le)f(has)g(b)s(een)g(mo)s(di\014ed)f(since)i(the)g +(original)g(k)m(eyw)m(ord)g(v)-5 b(alues)31 b(w)m(ere)g(computed\).)382 +3743 y Fe(FTPCKS\(unit,)44 b(>)k(status\))0 4007 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)29 b(in)f(the)h(CHDU,)g(assuming)f(that)h(the)f(D)m(A)-8 +b(T)g(ASUM)30 b(k)m(eyw)m(ord)227 4119 y(exists)36 b(and)f(already)h +(has)f(the)h(correct)g(v)-5 b(alue.)56 b(This)35 b(routine)g +(calculates)j(the)e(new)f(c)m(hec)m(ksum)h(for)f(the)227 +4232 y(curren)m(t)40 b(header)g(unit,)j(adds)c(it)i(to)g(the)f(data)h +(unit)f(c)m(hec)m(ksum,)k(enco)s(des)c(the)g(v)-5 b(alue)41 +b(in)m(to)g(an)f(ASCI)s(I)227 4345 y(string,)31 b(and)f(writes)g(the)h +(string)f(to)h(the)g(CHECKSUM)e(k)m(eyw)m(ord.)382 4609 +y Fe(FTUCKS\(unit,)44 b(>)k(status\))0 4873 y Fh(3)81 +b Fi(V)-8 b(erify)35 b(the)f(CHDU)h(b)m(y)g(computing)f(the)h(c)m(hec)m +(ksums)g(and)f(comparing)h(them)f(with)g(the)h(k)m(eyw)m(ords.)53 +b(The)227 4986 y(data)34 b(unit)f(is)g(v)m(eri\014ed)g(correctly)h(if)f +(the)h(computed)f(c)m(hec)m(ksum)g(equals)h(the)f(v)-5 +b(alue)34 b(of)f(the)g(D)m(A)-8 b(T)g(ASUM)227 5099 y(k)m(eyw)m(ord.)64 +b(The)37 b(c)m(hec)m(ksum)i(for)f(the)g(en)m(tire)g(HDU)h(\(header)f +(plus)f(data)i(unit\))e(is)h(correct)h(if)f(it)h(equals)227 +5212 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)f(this)h(subroutine)e(are)i(in)m +(tegers)h(whic)m(h)227 5325 y(will)27 b(ha)m(v)m(e)g(a)f(v)-5 +b(alue)27 b(=)f(1)g(if)g(the)h(data)f(or)g(HDU)h(is)f(v)m(eri\014ed)h +(correctly)-8 b(,)29 b(a)d(v)-5 b(alue)27 b(=)e(0)i(if)f(the)g(D)m(A)-8 +b(T)g(ASUM)28 b(or)227 5437 y(CHECKSUM)h(k)m(eyw)m(ord)g(is)h(not)f +(presen)m(t,)h(or)f(v)-5 b(alue)30 b(=)f(-1)h(if)f(the)h(computed)f(c)m +(hec)m(ksum)h(is)f(not)h(correct.)382 5701 y Fe(FTVCKS\(unit,)44 +b(>)k(dataok,hduok,status\))p eop end +%%Page: 68 74 +TeXDict begin 68 73 bop 0 299 a Fi(68)1319 b Fg(CHAPTER)29 +b(6.)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(Compute)25 b(and)h(return)f(the)i +(c)m(hec)m(ksum)g(v)-5 b(alues)26 b(for)g(the)h(CHDU)f(\(as)h(double)f +(precision)h(v)-5 b(ariables\))27 b(without)227 668 y(creating)46 +b(or)e(mo)s(difying)g(the)h(CHECKSUM)e(and)h(D)m(A)-8 +b(T)g(ASUM)46 b(k)m(eyw)m(ords.)83 b(This)44 b(routine)g(is)h(used)227 +781 y(in)m(ternally)32 b(b)m(y)e(FTV)m(CKS,)g(but)g(ma)m(y)h(b)s(e)e +(useful)h(in)g(other)h(situations)g(as)f(w)m(ell.)382 +1050 y Fe(FTGCKS\(unit,)44 b(>)k(datasum,hdusum,status\))0 +1319 y Fh(5)81 b Fi(Enco)s(de)33 b(a)h(c)m(hec)m(ksum)h(v)-5 +b(alue)34 b(\(stored)g(in)g(a)g(double)g(precision)g(v)-5 +b(ariable\))35 b(in)m(to)f(a)h(16-c)m(haracter)h(string.)51 +b(If)227 1432 y(COMPLEMENT)30 b(=)g(.true.)41 b(then)30 +b(the)g(32-bit)i(sum)d(v)-5 b(alue)31 b(will)g(b)s(e)f(complemen)m(ted) +h(b)s(efore)f(enco)s(ding.)382 1701 y Fe(FTESUM\(sum,complement,)42 +b(>)47 b(checksum\))0 1971 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)g(in)m(to)h(a)g +(double)e(precision)h(v)-5 b(alue.)65 b(If)37 b(COMPLEMENT)g(=)227 +2083 y(.true.)k(then)30 b(the)h(32-bit)g(sum)f(v)-5 b(alue)31 +b(will)f(b)s(e)g(complemen)m(ted)i(after)e(deco)s(ding.)382 +2353 y Fe(FTDSUM\(checksum,compleme)o(nt,)41 b(>)48 b(sum\))0 +2697 y Fd(6.11)180 b(Date)46 b(and)f(Time)g(Utilit)l(y)i(Routines)0 +2950 y Fi(The)29 b(follo)m(wing)i(routines)f(help)f(to)i(construct)f +(or)f(parse)h(the)g(FITS)f(date/time)i(strings.)41 b(Starting)30 +b(in)f(the)h(y)m(ear)0 3063 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)31 b(\(and)h(the)f(v)-5 +b(alues)32 b(of)f(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 3176 y(form)j('YYYY-MM-DD')k(\(date)e(only\)) +f(or)g('YYYY-MM-DDThh:mm:ss.ddd...')61 b(\(date)38 b(and)e(time\))h +(where)0 3288 y(the)30 b(n)m(um)m(b)s(er)f(of)i(decimal)g(places)g(in)f +(the)g(seconds)g(v)-5 b(alue)31 b(is)f(optional.)42 b(These)30 +b(times)h(are)f(in)g(UTC.)g(The)g(older)0 3401 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 3670 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)g +(\(1999,)h(2000,)h(etc.\))382 3940 y Fe(FTGSDT\()46 b(>)h(day,)g +(month,)f(year,)g(status)g(\))0 4209 y Fh(2)81 b Fi(Get)34 +b(the)g(curren)m(t)g(system)f(date)i(and)e(time)h(string)g +(\('YYYY-MM-DDThh:mm:ss'\).)53 b(The)33 b(time)i(will)f(b)s(e)227 +4322 y(in)26 b(UTC/GMT)g(if)g(a)m(v)-5 b(ailable,)29 +b(as)e(indicated)f(b)m(y)g(a)g(returned)f(timeref)h(v)-5 +b(alue)27 b(=)e(0.)40 b(If)26 b(the)g(returned)e(v)-5 +b(alue)227 4435 y(of)31 b(timeref)g(=)g(1)g(then)f(this)h(indicates)g +(that)h(it)f(w)m(as)g(not)g(p)s(ossible)f(to)h(con)m(v)m(ert)i(the)d +(lo)s(cal)i(time)g(to)f(UTC,)227 4547 y(and)f(th)m(us)g(the)h(lo)s(cal) +g(time)g(w)m(as)g(returned.)382 4817 y Fe(FTGSTM\(>)45 +b(datestr,)h(timeref,)f(status\))0 5086 y Fh(3)81 b Fi(Construct)26 +b(a)i(date)g(string)f(from)g(the)g(input)f(date)i(v)-5 +b(alues.)40 b(If)27 b(the)g(y)m(ear)h(is)g(b)s(et)m(w)m(een)f(1900)i +(and)e(1998,)j(inclu-)227 5199 y(siv)m(e,)38 b(then)c(the)i(returned)d +(date)j(string)f(will)g(ha)m(v)m(e)i(the)e(old)g(FITS)f(format)i +(\('dd/mm/yy'\),)h(otherwise)227 5312 y(the)32 b(date)g(string)f(will)g +(ha)m(v)m(e)i(the)e(new)g(FITS)g(format)g(\('YYYY-MM-DD'\).)36 +b(Use)c(FTTM2S)f(instead)g(to)227 5425 y(alw)m(a)m(ys)h(return)d(a)i +(date)g(string)g(using)e(the)i(new)f(FITS)g(format.)382 +5694 y Fe(FTDT2S\()46 b(year,)g(month,)g(day,)h(>)g(datestr,)f +(status\))p eop end +%%Page: 69 75 +TeXDict begin 69 74 bop 0 299 a Fg(6.12.)73 b(GENERAL)30 +b(UTILITY)g(SUBR)m(OUTINES)1979 b Fi(69)0 555 y Fh(4)81 +b Fi(Construct)34 b(a)i(new-format)f(date)h(+)f(time)h(string)f +(\('YYYY-MM-DDThh:mm:ss.ddd...'\).)57 b(If)34 b(the)i(y)m(ear,)227 +668 y(mon)m(th,)d(and)e(da)m(y)h(v)-5 b(alues)32 b(all)h(=)e(0)h(then)g +(only)g(the)g(time)g(is)g(enco)s(ded)f(with)h(format)g +('hh:mm:ss.ddd...'.)227 781 y(The)j(decimals)h(parameter)g(sp)s +(eci\014es)e(ho)m(w)i(man)m(y)f(decimal)h(places)g(of)f(fractional)i +(seconds)e(to)h(include)227 894 y(in)30 b(the)h(string.)41 +b(If)29 b(`decimals')j(is)f(negativ)m(e,)h(then)f(only)f(the)h(date)g +(will)f(b)s(e)g(return)f(\('YYYY-MM-DD'\).)382 1154 y +Fe(FTTM2S\()46 b(year,)g(month,)g(day,)h(hour,)f(minute,)g(second,)g +(decimals,)764 1267 y(>)h(datestr,)f(status\))0 1527 +y Fh(5)81 b Fi(Return)44 b(the)g(date)i(as)f(read)f(from)h(the)g(input) +e(string,)49 b(where)44 b(the)h(string)g(ma)m(y)g(b)s(e)f(in)h(either)g +(the)g(old)227 1640 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 +1900 y Fe(FTS2DT\(datestr,)43 b(>)48 b(year,)e(month,)g(day,)h +(status\))0 2160 y Fh(6)81 b Fi(Return)30 b(the)h(date)h(and)f(time)h +(as)f(read)g(from)g(the)h(input)e(string,)h(where)g(the)h(string)f(ma)m +(y)h(b)s(e)e(in)h(either)h(the)227 2273 y(old)d(or)f(new)g(FITS)g +(format.)40 b(The)28 b(returned)f(hours,)h(min)m(utes,)h(and)f(seconds) +g(v)-5 b(alues)29 b(will)f(b)s(e)g(set)h(to)g(zero)227 +2386 y(if)k(the)h(input)e(string)h(do)s(es)g(not)h(include)f(the)g +(time)h(\('dd/mm/yy')f(or)h('YYYY-MM-DD'\))j(.)c(Similarly)-8 +b(,)227 2499 y(the)36 b(returned)e(y)m(ear,)j(mon)m(th,)g(and)d(date)i +(v)-5 b(alues)36 b(will)f(b)s(e)g(set)h(to)g(zero)g(if)f(the)g(date)h +(is)f(not)h(included)e(in)227 2612 y(the)d(input)e(string)i +(\('hh:mm:ss.ddd...'\).)382 2872 y Fe(FTS2TM\(datestr,)43 +b(>)48 b(year,)e(month,)g(day,)h(hour,)f(minute,)g(second,)g(status\))0 +3206 y Fd(6.12)136 b(General)45 b(Utilit)l(y)i(Subroutines)0 +3456 y Fi(The)30 b(follo)m(wing)i(utilit)m(y)f(subroutines)f(ma)m(y)h +(b)s(e)e(useful)h(for)g(certain)h(applications:)0 3716 +y Fh(1)81 b Fi(Return)29 b(the)i(starting)g(b)m(yte)g(address)e(of)i +(the)f(CHDU)h(and)f(the)h(next)f(HDU.)382 3976 y Fe(FTGHAD\(iunit,)44 +b(>)j(curaddr,)f(nextaddr\))0 4236 y Fh(2)81 b Fi(Con)m(v)m(ert)31 +b(a)g(c)m(haracter)h(string)e(to)h(upp)s(ercase)e(\(op)s(erates)j(in)e +(place\).)382 4496 y Fe(FTUPCH\(string\))0 4756 y Fh(3)81 +b Fi(Compare)43 b(the)i(input)e(template)i(string)f(against)h(the)g +(reference)f(string)g(to)h(see)g(if)f(they)g(matc)m(h.)82 +b(The)227 4869 y(template)36 b(string)f(ma)m(y)g(con)m(tain)g(wildcard) +f(c)m(haracters:)51 b('*')35 b(will)g(matc)m(h)g(an)m(y)g(sequence)g +(of)f(c)m(haracters)227 4982 y(\(including)j(zero)h(c)m(haracters\))g +(and)e(')10 b(?')60 b(will)38 b(matc)m(h)f(an)m(y)g(single)h(c)m +(haracter)g(in)f(the)g(reference)g(string.)227 5095 y(The)31 +b('#')g(c)m(haracter)i(will)f(matc)m(h)g(an)m(y)f(consecutiv)m(e)j +(string)d(of)g(decimal)h(digits)g(\(0)g(-)g(9\).)43 b(If)31 +b(CASESN)f(=)227 5208 y(.true.)45 b(then)31 b(the)g(matc)m(h)i(will)f +(b)s(e)f(case)h(sensitiv)m(e.)46 b(The)31 b(returned)f(MA)-8 +b(TCH)32 b(parameter)g(will)g(b)s(e)f(.true.)227 5321 +y(if)j(the)h(2)f(strings)g(matc)m(h,)j(and)c(EXA)m(CT)h(will)h(b)s(e)e +(.true.)53 b(if)34 b(the)g(matc)m(h)h(is)g(exact)g(\(i.e.,)i(if)d(no)g +(wildcard)227 5434 y(c)m(haracters)e(w)m(ere)f(used)f(in)g(the)g(matc)m +(h\).)42 b(Both)31 b(strings)f(m)m(ust)h(b)s(e)e(68)j(c)m(haracters)f +(or)g(less)f(in)g(length.)382 5694 y Fe(FTCMPS\(str_template,)42 +b(string,)k(casesen,)f(>)j(match,)e(exact\))p eop end +%%Page: 70 76 +TeXDict begin 70 75 bop 0 299 a Fi(70)1319 b Fg(CHAPTER)29 +b(6.)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(T)-8 b(est)31 b(that)g(the)f(k)m +(eyw)m(ord)h(name)f(con)m(tains)i(only)e(legal)j(c)m(haracters:)42 +b(A-Z,0-9,)32 b(h)m(yphen,)d(and)h(underscore.)382 820 +y Fe(FTTKEY\(keyword,)43 b(>)48 b(status\))0 1085 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) +i(only)e(legal)i(prin)m(table)f(ASCI)s(I)e(c)m(haracters)382 +1350 y Fe(FTTREC\(card,)44 b(>)k(status\))0 1615 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) +g(an)m(y)g(NULL)g(\(ASCI)s(I)e(0\))j(c)m(haracters.)40 +b(These)24 b(c)m(haracters)j(are)227 1728 y(illegal)37 +b(in)d(the)h(header,)g(but)f(they)g(will)h(go)g(undetected)g(b)m(y)f +(most)h(of)g(the)f(CFITSIO)f(k)m(eyw)m(ord)i(header)227 +1841 y(routines,)29 b(b)s(ecause)f(the)h(n)m(ull)f(is)g(in)m(terpreted) +g(as)h(the)f(normal)g(end-of-string)h(terminator.)41 +b(This)27 b(routine)227 1954 y(returns)h(the)g(p)s(osition)h(of)g(the)g +(\014rst)f(n)m(ull)g(c)m(haracter)i(in)f(the)f(header,)h(or)g(zero)g +(if)g(there)g(are)g(no)f(n)m(ulls.)40 b(F)-8 b(or)227 +2067 y(example)37 b(a)f(returned)f(v)-5 b(alue)37 b(of)f(110)h(w)m +(ould)f(indicate)h(that)g(the)f(\014rst)f(NULL)h(is)g(lo)s(cated)h(in)f +(the)g(30th)227 2180 y(c)m(haracter)28 b(of)f(the)g(second)f(k)m(eyw)m +(ord)h(in)f(the)h(header)f(\(recall)i(that)f(eac)m(h)h(header)e(record) +h(is)f(80)h(c)m(haracters)227 2293 y(long\).)56 b(Note)36 +b(that)g(this)f(is)g(one)g(of)g(the)g(few)g(FITSIO)f(routines)h(in)f +(whic)m(h)h(the)g(returned)f(v)-5 b(alue)36 b(is)f(not)227 +2406 y(necessarily)d(equal)e(to)i(the)e(status)h(v)-5 +b(alue\).)382 2671 y Fe(FTNCHK\(unit,)44 b(>)k(status\))0 +2935 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)f(of)h(the)g(name.)227 3048 y(The)34 b(k)m(eyw)m(ord)h(name)f +(normally)h(o)s(ccupies)f(the)h(\014rst)e(8)i(c)m(haracters)g(of)g(the) +f(record,)i(except)f(under)e(the)227 3161 y(HIERAR)m(CH)e(con)m(v)m(en) +m(tion)h(where)e(the)h(name)f(can)h(b)s(e)f(up)f(to)i(70)g(c)m +(haracters)h(in)e(length.)382 3426 y Fe(FTGKNM\(card,)44 +b(>)k(keyname,)d(keylength,)g(staThe)h('\\#')h(character)e(will)i +(match)f(any)h(consecutive)e(string)191 3539 y(of)i(decimal)f(digits)g +(\(0)h(-)h(9\).)f(tus\))0 3804 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)33 b(subroutine)g +(parses)h(the)g(input)g(header)g(record)g(to)h(return)e(the)227 +3917 y(v)-5 b(alue)27 b(\(as)g(a)g(c)m(haracter)g(string\))g(and)f +(commen)m(t)h(strings.)39 b(If)26 b(the)g(k)m(eyw)m(ord)h(has)f(no)g(v) +-5 b(alue)27 b(\(columns)f(9-10)227 4030 y(not)h(equal)f(to)h('=)f +('\),)i(then)e(the)g(v)-5 b(alue)27 b(string)f(is)g(returned)f(blank)h +(and)f(the)h(commen)m(t)i(string)e(is)g(set)g(equal)227 +4143 y(to)31 b(column)g(9)f(-)h(80)g(of)g(the)f(input)g(string.)382 +4408 y Fe(FTPSVC\(card,)44 b(>)k(value,comment,status\))0 +4673 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)35 b(subroutine)g(app)s(ends)f(the)j +(sequence)227 4786 y(n)m(um)m(b)s(er)29 b(to)i(the)g(ro)s(ot)g(string)f +(to)h(create)h(a)f(k)m(eyw)m(ord)g(name)f(\(e.g.,)i('NAXIS')f(+)f(2)h +(=)f('NAXIS2'\))382 5051 y Fe(FTKEYN\(keyroot,seq_no,)42 +b(>)47 b(keyword,status\))0 5316 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)f +(subroutine)g(concatenates)j(the)f(sequence)227 5429 +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)g(to)g(create)h(a)f(k)m(eyw)m(ord)g(name)g(\(e.g.,)j(1)d(+)f +('CTYP')g(=)g('1CTYP'\))382 5694 y Fe(FTNKEY\(seq_no,keyroot,)42 +b(>)47 b(keyword,status\))p eop end +%%Page: 71 77 +TeXDict begin 71 76 bop 0 299 a Fg(6.12.)73 b(GENERAL)30 +b(UTILITY)g(SUBR)m(OUTINES)1979 b Fi(71)0 555 y Fh(11)46 +b Fi(Determine)35 b(the)f(datat)m(yp)s(e)g(of)g(a)g(k)m(eyw)m(ord)h(v) +-5 b(alue)34 b(string.)50 b(This)33 b(subroutine)g(parses)g(the)h(k)m +(eyw)m(ord)g(v)-5 b(alue)227 668 y(string)31 b(\(usually)f(columns)g +(11-30)j(of)d(the)h(header)f(record\))g(to)i(determine)e(its)h(datat)m +(yp)s(e.)382 936 y Fe(FTDTYP\(value,)44 b(>)j(dtype,status\))0 +1204 y Fh(11)f Fi(Return)c(the)i(class)g(of)f(input)f(header)h(record.) +79 b(The)43 b(record)g(is)g(classi\014ed)g(in)m(to)h(one)g(of)f(the)g +(follo)m(wing)227 1317 y(categories)36 b(\(the)e(class)f(v)-5 +b(alues)34 b(are)f(de\014ned)f(in)h(\014tsio.h\).)49 +b(Note)35 b(that)e(this)g(is)g(one)h(of)f(the)g(few)g(FITSIO)227 +1430 y(routines)e(that)f(do)s(es)h(not)f(return)f(a)i(status)g(v)-5 +b(alue.)334 1697 y Fe(Class)94 b(Value)619 b(Keywords)95 +1810 y(TYP_STRUC_KEY)92 b(10)j(SIMPLE,)46 b(BITPIX,)g(NAXIS,)g(NAXISn,) +g(EXTEND,)g(BLOCKED,)1002 1923 y(GROUPS,)g(PCOUNT,)g(GCOUNT,)g(END)1002 +2036 y(XTENSION,)g(TFIELDS,)f(TTYPEn,)h(TBCOLn,)g(TFORMn,)g(THEAP,)1002 +2149 y(and)h(the)g(first)f(4)i(COMMENT)e(keywords)f(in)i(the)g(primary) +f(array)1002 2262 y(that)h(define)f(the)h(FITS)g(format.)95 +2375 y(TYP_CMPRS_KEY)92 b(20)j(The)47 b(experimental)e(keywords)g(used) +i(in)g(the)g(compressed)1002 2488 y(image)g(format)f(ZIMAGE,)g +(ZCMPTYPE,)f(ZNAMEn,)h(ZVALn,)1002 2601 y(ZTILEn,)g(ZBITPIX,)g +(ZNAXISn,)f(ZSCALE,)h(ZZERO,)g(ZBLANK)95 2714 y(TYP_SCAL_KEY)140 +b(30)95 b(BSCALE,)46 b(BZERO,)g(TSCALn,)g(TZEROn)95 2826 +y(TYP_NULL_KEY)140 b(40)95 b(BLANK,)46 b(TNULLn)95 2939 +y(TYP_DIM_KEY)188 b(50)95 b(TDIMn)95 3052 y(TYP_RANG_KEY)140 +b(60)95 b(TLMINn,)46 b(TLMAXn,)g(TDMINn,)g(TDMAXn,)g(DATAMIN,)f +(DATAMAX)95 3165 y(TYP_UNIT_KEY)140 b(70)95 b(BUNIT,)46 +b(TUNITn)95 3278 y(TYP_DISP_KEY)140 b(80)95 b(TDISPn)95 +3391 y(TYP_HDUID_KEY)d(90)j(EXTNAME,)46 b(EXTVER,)g(EXTLEVEL,)f +(HDUNAME,)g(HDUVER,)h(HDULEVEL)95 3504 y(TYP_CKSUM_KEY)f(100)94 +b(CHECKSUM,)46 b(DATASUM)95 3617 y(TYP_WCS_KEY)141 b(110)94 +b(CTYPEn,)46 b(CUNITn,)g(CRVALn,)g(CRPIXn,)g(CROTAn,)f(CDELTn)1002 +3730 y(CDj_is,)h(PVj_ms,)g(LONPOLEs,)f(LATPOLEs)1002 +3843 y(TCTYPn,)h(TCTYns,)g(TCUNIn,)g(TCUNns,)g(TCRVLn,)f(TCRVns,)h +(TCRPXn,)1002 3956 y(TCRPks,)g(TCDn_k,)g(TCn_ks,)g(TPVn_m,)g(TPn_ms,)f +(TCDLTn,)h(TCROTn)1002 4068 y(jCTYPn,)g(jCTYns,)g(jCUNIn,)g(jCUNns,)g +(jCRVLn,)f(jCRVns,)h(iCRPXn,)1002 4181 y(iCRPns,)g(jiCDn,)94 +b(jiCDns,)46 b(jPVn_m,)g(jPn_ms,)f(jCDLTn,)h(jCROTn)1002 +4294 y(\(i,j,m,n)g(are)h(integers,)e(s)i(is)h(any)f(letter\))95 +4407 y(TYP_REFSYS_KEY)d(120)j(EQUINOXs,)f(EPOCH,)g(MJD-OBSs,)f +(RADECSYS,)g(RADESYSs)95 4520 y(TYP_COMM_KEY)140 b(130)47 +b(COMMENT,)f(HISTORY,)f(\(blank)h(keyword\))95 4633 y(TYP_CONT_KEY)140 +b(140)47 b(CONTINUE)95 4746 y(TYP_USER_KEY)140 b(150)47 +b(all)g(other)g(keywords)430 4972 y(class)f(=)h(FTGKCL)f(\(char)h +(*card\))0 5240 y Fh(12)f Fi(P)m(arse)f(the)g('TF)m(ORM')h(binary)e +(table)i(column)e(format)h(string.)84 b(This)44 b(subroutine)g(parses)g +(the)h(input)227 5352 y(TF)m(ORM)27 b(c)m(haracter)g(string)f(and)g +(returns)f(the)h(in)m(teger)h(datat)m(yp)s(e)g(co)s(de,)h(the)e(rep)s +(eat)g(coun)m(t)h(of)f(the)g(\014eld,)227 5465 y(and,)f(in)e(the)h +(case)g(of)g(c)m(haracter)h(string)e(\014elds,)i(the)e(length)h(of)g +(the)g(unit)f(string.)38 b(The)23 b(follo)m(wing)i(datat)m(yp)s(e)227 +5578 y(co)s(des)e(are)h(returned)e(\(the)h(negativ)m(e)i(of)f(the)f(v) +-5 b(alue)23 b(is)g(returned)f(if)h(the)g(column)g(con)m(tains)h(v)-5 +b(ariable-length)227 5691 y(arra)m(ys\):)p eop end +%%Page: 72 78 +TeXDict begin 72 77 bop 0 299 a Fi(72)1319 b Fg(CHAPTER)29 +b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 +b(SUBR)m(OUTINES)764 555 y Fe(Datatype)761 b(DATACODE)46 +b(value)764 668 y(bit,)g(X)907 b(1)764 781 y(byte,)46 +b(B)811 b(11)764 894 y(logical,)45 b(L)668 b(14)764 1007 +y(ASCII)46 b(character,)f(A)286 b(16)764 1120 y(short)46 +b(integer,)g(I)381 b(21)764 1233 y(integer,)45 b(J)668 +b(41)764 1346 y(real,)46 b(E)811 b(42)764 1458 y(double)46 +b(precision,)f(D)238 b(82)764 1571 y(complex)809 b(83)764 +1684 y(double)46 b(complex)475 b(163)382 1910 y(FTBNFM\(tform,)44 +b(>)j(datacode,repeat,width,stat)o(us\))0 2147 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)37 b(that)h(de\014nes)e(the)h(column)g(format)h(in)e(an)h(ASCI)s +(I)f(table.)62 b(This)227 2260 y(routine)31 b(parses)g(the)g(input)g +(TF)m(ORM)g(c)m(haracter)i(string)e(and)f(returns)g(the)i(datat)m(yp)s +(e)g(co)s(de,)f(the)h(width)227 2373 y(of)40 b(the)h(column,)h(and)e +(\(if)g(it)g(is)h(a)f(\015oating)h(p)s(oin)m(t)f(column\))g(the)g(n)m +(um)m(b)s(er)f(of)h(decimal)h(places)g(to)g(the)227 2486 +y(righ)m(t)28 b(of)g(the)f(decimal)h(p)s(oin)m(t.)40 +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)g(table,)227 2599 y(listed)41 +b(ab)s(o)m(v)m(e,)j(with)c(the)g(follo)m(wing)i(additional)f(rules:)60 +b(in)m(teger)42 b(columns)e(that)g(are)h(b)s(et)m(w)m(een)g(1)g(and)227 +2712 y(4)36 b(c)m(haracters)i(wide)d(are)i(de\014ned)d(to)j(b)s(e)e +(short)h(in)m(tegers)h(\(co)s(de)f(=)g(21\).)58 b(Wider)36 +b(in)m(teger)h(columns)f(are)227 2825 y(de\014ned)j(to)i(b)s(e)e +(regular)h(in)m(tegers)i(\(co)s(de)e(=)g(41\).)71 b(Similarly)-8 +b(,)43 b(Fixed)d(decimal)h(p)s(oin)m(t)f(columns)g(\(with)227 +2937 y(TF)m(ORM)30 b(=)g('Fw.d'\))g(are)g(de\014ned)f(to)h(b)s(e)g +(single)g(precision)g(reals)g(\(co)s(de)h(=)e(42\))i(if)f(w)f(is)h(b)s +(et)m(w)m(een)g(1)h(and)227 3050 y(7)i(c)m(haracters)h(wide,)f +(inclusiv)m(e.)47 b(Wider)32 b('F')h(columns)f(will)h(return)e(a)i +(double)f(precision)g(data)h(co)s(de)g(\(=)227 3163 y(82\).)54 +b('Ew.d')34 b(format)g(columns)g(will)h(ha)m(v)m(e)g(dataco)s(de)g(=)f +(42,)j(and)c('Dw.d')i(format)f(columns)g(will)h(ha)m(v)m(e)227 +3276 y(dataco)s(de)d(=)e(82.)382 3513 y Fe(FTASFM\(tform,)44 +b(>)j(datacode,width,decimals,st)o(atus)o(\))0 3750 y +Fh(14)f Fi(Calculate)32 b(the)f(starting)g(column)g(p)s(ositions)f(and) +g(total)i(ASCI)s(I)d(table)j(width)d(based)i(on)f(the)h(input)e(arra)m +(y)227 3863 y(of)e(ASCI)s(I)e(table)i(TF)m(ORM)g(v)-5 +b(alues.)40 b(The)26 b(SP)-8 b(A)m(CE)27 b(input)e(parameter)i +(de\014nes)f(ho)m(w)h(man)m(y)f(blank)h(spaces)227 3976 +y(to)40 b(lea)m(v)m(e)i(b)s(et)m(w)m(een)e(eac)m(h)g(column)g(\(it)g +(is)f(recommended)g(to)h(ha)m(v)m(e)h(one)e(space)h(b)s(et)m(w)m(een)g +(columns)f(for)227 4089 y(b)s(etter)31 b(h)m(uman)e(readabilit)m(y\).) +382 4326 y Fe(FTGABC\(tfields,tform,spa)o(ce,)41 b(>)48 +b(rowlen,tbcol,status\))0 4563 y Fh(15)e Fi(P)m(arse)36 +b(a)f(template)h(string)f(and)g(return)f(a)h(formatted)h(80-c)m +(haracter)h(string)e(suitable)h(for)f(app)s(ending)e(to)227 +4675 y(\(or)40 b(deleting)h(from\))e(a)h(FITS)f(header)h(\014le.)68 +b(This)39 b(subroutine)f(is)i(useful)f(for)g(parsing)g(lines)h(from)f +(an)227 4788 y(ASCI)s(I)34 b(template)j(\014le)f(and)e(reformatting)j +(them)e(in)m(to)i(legal)g(FITS)d(header)i(records.)55 +b(The)35 b(formatted)227 4901 y(string)c(ma)m(y)g(then)f(b)s(e)g +(passed)g(to)i(the)e(FTPREC,)h(FTMCRD,)g(or)f(FTDKEY)h(subroutines)e +(to)j(app)s(end)227 5014 y(or)f(mo)s(dify)e(a)i(FITS)f(header)g +(record.)382 5251 y Fe(FTGTHD\(template,)43 b(>)48 b +(card,hdtype,status\))0 5488 y Fi(The)23 b(input)h(TEMPLA)-8 +b(TE)23 b(c)m(haracter)j(string)e(generally)h(should)e(con)m(tain)i(3)g +(tok)m(ens:)38 b(\(1\))25 b(the)f(KEYNAME,)h(\(2\))0 +5601 y(the)h(V)-10 b(ALUE,)26 b(and)f(\(3\))i(the)f(COMMENT)g(string.) +39 b(The)25 b(TEMPLA)-8 b(TE)26 b(string)g(m)m(ust)f(adhere)h(to)g(the) +g(follo)m(wing)0 5714 y(format:)p eop end +%%Page: 73 79 +TeXDict begin 73 78 bop 0 299 a Fg(6.12.)73 b(GENERAL)30 +b(UTILITY)g(SUBR)m(OUTINES)1979 b Fi(73)0 555 y Fh(-)80 +b Fi(The)24 b(KEYNAME)g(tok)m(en)h(m)m(ust)e(b)s(egin)h(in)f(columns)h +(1-8)h(and)e(b)s(e)h(a)g(maxim)m(um)g(of)g(8)g(c)m(haracters)h(long.)39 +b(If)24 b(the)227 668 y(\014rst)32 b(8)h(c)m(haracters)h(of)e(the)h +(template)h(line)e(are)h(blank)f(then)g(the)h(remainder)f(of)g(the)h +(line)g(is)f(considered)227 781 y(to)42 b(b)s(e)e(a)h(FITS)f(commen)m +(t)h(\(with)g(a)g(blank)f(k)m(eyw)m(ord)h(name\).)72 +b(A)41 b(legal)i(FITS)d(k)m(eyw)m(ord)h(name)f(ma)m(y)227 +894 y(only)35 b(con)m(tain)i(the)e(c)m(haracters)h(A-Z,)f(0-9,)j(and)c +('-')i(\(min)m(us)f(sign\))g(and)f(underscore.)54 b(This)34 +b(subroutine)227 1007 y(will)42 b(automatically)i(con)m(v)m(ert)f(an)m +(y)f(lo)m(w)m(ercase)i(c)m(haracters)e(to)h(upp)s(ercase)d(in)h(the)h +(output)f(string.)73 b(If)227 1120 y(KEYNAME)33 b(=)f('COMMENT')h(or)g +('HISTOR)-8 b(Y')32 b(then)h(the)f(remainder)g(of)h(the)g(line)g(is)g +(considered)f(to)227 1233 y(b)s(e)e(a)h(FITS)e(COMMENT)h(or)h(HISTOR)-8 +b(Y)30 b(record,)g(resp)s(ectiv)m(ely)-8 b(.)0 1490 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 1603 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,)g(logical,)i(or)d(c)m(haracter)h(string\))f +(is)227 1716 y(automatically)35 b(determined)c(and)h(the)g(output)f +(CARD)h(string)g(is)g(formatted)g(accordingly)-8 b(.)47 +b(The)31 b(v)-5 b(alue)227 1829 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)g(as)h(a)g(string)g(\(e.g.)48 +b(if)33 b(it)g(is)f(a)h(string)g(of)f(n)m(umeric)h(digits\))g(b)m(y)227 +1942 y(enclosing)g(it)f(in)f(single)h(quotes.)45 b(If)31 +b(the)h(v)-5 b(alue)32 b(tok)m(en)g(is)g(a)g(c)m(haracter)h(string)e +(that)i(con)m(tains)f(1)g(or)g(more)227 2055 y(em)m(b)s(edded)39 +b(blank)g(space)h(c)m(haracters)h(or)e(slash)h(\('/'\))h(c)m(haracters) +g(then)e(the)g(en)m(tire)i(c)m(haracter)g(string)227 +2168 y(m)m(ust)31 b(b)s(e)e(enclosed)i(in)f(single)h(quotes.)0 +2425 y Fh(-)80 b Fi(The)28 b(COMMENT)g(tok)m(en)h(is)f(optional,)i(but) +e(if)g(presen)m(t)g(m)m(ust)g(b)s(e)g(separated)g(from)g(the)h(V)-10 +b(ALUE)28 b(tok)m(en)h(b)m(y)227 2538 y(a)i(blank)f(space)h(or)f(a)h +('/')g(c)m(haracter.)0 2796 y Fh(-)80 b Fi(One)32 b(exception)i(to)f +(the)g(ab)s(o)m(v)m(e)h(rules)e(is)g(that)h(if)g(the)f(\014rst)g +(non-blank)g(c)m(haracter)i(in)e(the)h(template)h(string)227 +2909 y(is)h(a)g(min)m(us)f(sign)h(\('-'\))h(follo)m(w)m(ed)g(b)m(y)f(a) +g(single)g(tok)m(en,)i(or)e(a)g(single)g(tok)m(en)h(follo)m(w)m(ed)g(b) +m(y)f(an)f(equal)i(sign,)227 3022 y(then)29 b(it)g(is)g(in)m(terpreted) +f(as)h(the)g(name)g(of)g(a)g(k)m(eyw)m(ord)g(whic)m(h)f(is)h(to)g(b)s +(e)f(deleted)i(from)e(the)h(FITS)f(header.)0 3279 y Fh(-)80 +b Fi(The)40 b(second)g(exception)h(is)f(that)h(if)f(the)g(template)h +(string)f(starts)g(with)g(a)h(min)m(us)e(sign)h(and)f(is)h(follo)m(w)m +(ed)227 3392 y(b)m(y)33 b(2)g(tok)m(ens)g(then)g(the)f(second)h(tok)m +(en)h(is)e(in)m(terpreted)h(as)g(the)g(new)f(name)g(for)h(the)g(k)m +(eyw)m(ord)g(sp)s(eci\014ed)227 3505 y(b)m(y)h(\014rst)e(tok)m(en.)52 +b(In)33 b(this)g(case)i(the)e(old)h(k)m(eyw)m(ord)g(name)g(\(\014rst)f +(tok)m(en\))i(is)e(returned)g(in)g(c)m(haracters)i(1-8)227 +3618 y(of)e(the)g(returned)e(CARD)i(string,)g(and)f(the)h(new)f(k)m +(eyw)m(ord)h(name)g(\(the)g(second)f(tok)m(en\))i(is)f(returned)e(in) +227 3731 y(c)m(haracters)c(41-48)h(of)e(the)f(returned)g(CARD)g +(string.)40 b(These)25 b(old)h(and)f(new)g(names)g(ma)m(y)h(then)f(b)s +(e)g(passed)227 3844 y(to)31 b(the)g(FTMNAM)g(subroutine)f(whic)m(h)g +(will)g(c)m(hange)i(the)e(k)m(eyw)m(ord)h(name.)0 4101 +y(The)f(HDTYPE)g(output)g(parameter)h(indicates)g(ho)m(w)g(the)f +(returned)g(CARD)g(string)g(should)g(b)s(e)g(in)m(terpreted:)382 +4359 y Fe(hdtype)857 b(interpretation)382 4472 y(------)523 +b(-------------------------)o(----)o(---)o(----)o(----)o(---)o(----)o +(--)525 4585 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 4698 y(to)g(the)g(new)g(name)g(given)f +(in)h(CARD\(41:48\))525 4924 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 +5036 y(from)g(the)g(FITS)f(header.)573 5262 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 +5375 y(keyword)f(does)h(not)g(already)e(exist,)h(otherwise)g(update) +1193 5488 y(the)h(value/comment)d(if)j(the)g(keyword)f(is)h(already)f +(present)1193 5601 y(in)h(the)g(header.)p eop end +%%Page: 74 80 +TeXDict begin 74 79 bop 0 299 a Fi(74)1319 b Fg(CHAPTER)29 +b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 +b(SUBR)m(OUTINES)573 555 y Fe(1)572 b(simply)46 b(append)g(this)h +(keyword)f(to)h(the)g(FITS)g(header)f(\(CARD)1193 668 +y(is)h(either)f(a)i(HISTORY)e(or)h(COMMENT)f(keyword\).)573 +894 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 1007 y(to)g(the)g(FITS)g(header)f(because)g +(FITSIO)g(automatically)1193 1120 y(appends)g(the)h(END)g(record)f +(when)h(the)f(header)h(is)g(closed.)0 1380 y Fi(EXAMPLES:)30 +b(The)g(follo)m(wing)i(lines)e(illustrate)i(v)-5 b(alid)31 +b(input)e(template)j(strings:)286 1639 y Fe(INTVAL)46 +b(7)i(This)f(is)g(an)g(integer)f(keyword)286 1752 y(RVAL)524 +b(34.6)142 b(/)239 b(This)46 b(is)i(a)f(floating)f(point)g(keyword)286 +1865 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 1978 y(lval)i(F)g(This)g(is) +g(a)h(boolean)e(keyword)859 2091 y(This)h(is)g(a)g(comment)f(keyword)g +(with)h(a)g(blank)f(keyword)g(name)286 2204 y(SVAL1)h(=)g('Hello)f +(world')142 b(/)95 b(this)47 b(is)g(a)g(string)f(keyword)286 +2317 y(SVAL2)94 b('123.5')g(this)47 b(is)g(also)f(a)i(string)e(keyword) +286 2430 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 2543 +y(#)48 b(the)f(following)e(template)h(line)g(deletes)g(the)h(DATE)g +(keyword)286 2655 y(-)h(DATE)286 2768 y(#)g(the)f(following)e(template) +h(line)g(modifies)g(the)h(NAME)f(keyword)g(to)h(OBJECT)286 +2881 y(-)h(NAME)e(OBJECT)0 3141 y Fh(16)g Fi(P)m(arse)35 +b(the)g(input)f(string)h(con)m(taining)h(a)f(list)h(of)f(ro)m(ws)f(or)h +(ro)m(w)g(ranges,)h(and)e(return)g(in)m(teger)i(arra)m(ys)f(con-)227 +3254 y(taining)27 b(the)f(\014rst)f(and)g(last)i(ro)m(w)f(in)f(eac)m(h) +i(range.)40 b(F)-8 b(or)26 b(example,)i(if)d(ro)m(wlist)i(=)e("3-5,)k +(6,)e(8-9")h(then)d(it)i(will)227 3367 y(return)34 b(n)m(umranges)h(=)g +(3,)h(rangemin)f(=)g(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 3480 y(n)m(um)m(b)s(er)31 +b(of)h(ranges)f(will)h(b)s(e)g(returned.)43 b('maxro)m(ws')32 +b(is)g(the)g(maxim)m(um)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(in)f(the)h +(table;)227 3593 y(an)m(y)e(ro)m(ws)f(or)g(ranges)g(larger)h(than)f +(this)g(will)g(b)s(e)g(ignored.)40 b(The)29 b(ro)m(ws)g(m)m(ust)g(b)s +(e)f(sp)s(eci\014ed)h(in)f(increasing)227 3706 y(order,)33 +b(and)f(the)g(ranges)h(m)m(ust)f(not)g(o)m(v)m(erlap.)48 +b(A)33 b(min)m(us)e(sign)i(ma)m(y)g(b)s(e)e(use)h(to)h(sp)s(ecify)f +(all)h(the)g(ro)m(ws)f(to)227 3819 y(the)h(upp)s(er)d(or)j(lo)m(w)m(er) +h(b)s(ound,)d(so)i("50-")h(means)e(all)i(the)f(ro)m(ws)f(from)g(50)h +(to)h(the)e(end)g(of)h(the)f(table,)j(and)227 3931 y("-")d(means)e(all) +h(the)g(ro)m(ws)f(in)g(the)h(table,)g(from)f(1)h(-)g(maxro)m(ws.)191 +4191 y Fe(FTRWRG\(rowlist,)44 b(maxrows,)h(maxranges,)g(>)525 +4304 y(numranges,)g(rangemin,)g(rangemax,)h(status\))p +eop end +%%Page: 75 81 +TeXDict begin 75 80 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 +614 2180 V 34 w(data)i(function)e(in)h(CFITSIO)e(pro)m(vides)i(a)g +(unique)e(metho)s(d)i(of)g(executing)h(an)e(arbitrary)0 +2293 y(user-supplied)35 b(`w)m(ork')i(function)f(that)h(op)s(erates)g +(on)g(ro)m(ws)f(of)h(data)g(in)f(FITS)g(tables)h(or)f(on)h(pixels)f(in) +h(FITS)0 2406 y(images.)i(Rather)24 b(than)e(explicitly)j(reading)e +(and)g(writing)g(the)g(FITS)g(images)h(or)f(columns)g(of)g(data,)i(one) +f(instead)0 2518 y(calls)36 b(the)g(CFITSIO)d(iterator)k(routine,)g +(passing)e(to)h(it)g(the)f(name)g(of)h(the)f(user's)g(w)m(ork)g +(function)g(that)h(is)f(to)0 2631 y(b)s(e)30 b(executed)h(along)g(with) +f(a)h(list)g(of)f(all)h(the)f(table)i(columns)e(or)g(image)h(arra)m(ys) +g(that)g(are)f(to)h(b)s(e)f(passed)g(to)h(the)0 2744 +y(w)m(ork)37 b(function.)61 b(The)37 b(CFITSIO)e(iterator)k(function)e +(then)g(do)s(es)g(all)h(the)f(w)m(ork)g(of)h(allo)s(cating)h(memory)e +(for)0 2857 y(the)28 b(arra)m(ys,)h(reading)f(the)g(input)e(data)j +(from)e(the)h(FITS)f(\014le,)h(passing)g(them)g(to)g(the)g(w)m(ork)g +(function,)g(and)f(then)0 2970 y(writing)36 b(an)m(y)h(output)f(data)h +(bac)m(k)h(to)f(the)f(FITS)g(\014le)g(after)h(the)g(w)m(ork)g(function) +f(exits.)59 b(Because)38 b(it)f(is)g(often)0 3083 y(more)g(e\016cien)m +(t)i(to)f(pro)s(cess)f(only)g(a)h(subset)f(of)g(the)g(total)i(table)g +(ro)m(ws)e(at)h(one)f(time,)j(the)e(iterator)g(function)0 +3196 y(can)31 b(determine)f(the)h(optim)m(um)f(amoun)m(t)h(of)f(data)h +(to)g(pass)f(in)g(eac)m(h)i(iteration)f(and)f(rep)s(eatedly)h(call)g +(the)g(w)m(ork)0 3309 y(function)f(un)m(til)h(the)f(en)m(tire)i(table)f +(b)s(een)e(pro)s(cessed.)0 3469 y(F)-8 b(or)37 b(man)m(y)f +(applications)h(this)e(single)i(CFITSIO)d(iterator)k(function)d(can)h +(e\013ectiv)m(ely)j(replace)e(all)g(the)f(other)0 3582 +y(CFITSIO)g(routines)i(for)f(reading)h(or)f(writing)h(data)g(in)f(FITS) +g(images)i(or)e(tables.)64 b(Using)37 b(the)h(iterator)h(has)0 +3695 y(sev)m(eral)32 b(imp)s(ortan)m(t)e(adv)-5 b(an)m(tages)32 +b(o)m(v)m(er)g(the)f(traditional)g(metho)s(d)f(of)h(reading)f(and)g +(writing)g(FITS)g(data)h(\014les:)136 3961 y Fc(\017)46 +b Fi(It)33 b(cleanly)h(separates)g(the)f(data)h(I/O)f(from)f(the)h +(routine)g(that)h(op)s(erates)f(on)g(the)g(data.)49 b(This)32 +b(leads)h(to)227 4074 y(a)e(more)g(mo)s(dular)e(and)h(`ob)5 +b(ject)31 b(orien)m(ted')h(programming)e(st)m(yle.)136 +4268 y Fc(\017)46 b Fi(It)27 b(simpli\014es)f(the)h(application)h +(program)f(b)m(y)f(eliminating)i(the)f(need)g(to)g(allo)s(cate)i +(memory)e(for)f(the)h(data)227 4381 y(arra)m(ys)e(and)f(eliminates)i +(most)e(of)h(the)f(calls)i(to)f(the)g(CFITSIO)d(routines)j(that)g +(explicitly)h(read)e(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)h(as)e(p)s(ossible.)44 +b(This)31 b(is)g(esp)s(ecially)i(imp)s(ortan)m(t)227 +4801 y(when)44 b(pro)s(cessing)g(tabular)h(data)h(since)f(the)g +(iterator)h(function)e(will)h(calculate)i(the)e(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)f(the)h(table)g(to)g +(b)s(e)f(passed)g(at)i(one)e(time)i(to)f(the)g(user's)e(w)m(ork)i +(function)f(on)h(eac)m(h)227 5027 y(iteration.)136 5222 +y Fc(\017)46 b Fi(Mak)m(es)39 b(it)e(p)s(ossible)g(for)g(larger)h(pro)5 +b(jects)37 b(to)h(dev)m(elop)g(a)g(library)e(of)i(w)m(ork)f(functions)f +(that)i(all)g(ha)m(v)m(e)h(a)227 5335 y(uniform)29 b(calling)j +(sequence)f(and)f(are)h(all)g(indep)s(enden)m(t)e(of)i(the)f(details)i +(of)e(the)h(FITS)e(\014le)i(format.)0 5601 y(There)f(are)h(basically)h +(2)g(steps)e(in)h(using)f(the)h(CFITSIO)e(iterator)j(function.)42 +b(The)30 b(\014rst)g(step)h(is)g(to)g(design)g(the)0 +5714 y(w)m(ork)26 b(function)f(itself)h(whic)m(h)f(m)m(ust)h(ha)m(v)m +(e)g(a)g(prescrib)s(ed)e(set)i(of)g(input)f(parameters.)39 +b(One)25 b(of)h(these)g(parameters)1905 5942 y(75)p eop +end +%%Page: 76 82 +TeXDict begin 76 81 bop 0 299 a Fi(76)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)f(a)g(structure)g(con)m(taining)i(p)s(oin)m(ters)d(to)i +(the)f(arra)m(ys)h(of)f(data;)h(the)f(w)m(ork)h(function)e(can)i(p)s +(erform)d(an)m(y)i(desired)0 668 y(op)s(erations)k(on)h(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)e(data)i(w)m(ere)f(read)g(from)0 781 y(the)e(\014le)f(or)g +(ho)m(w)h(the)f(output)g(data)h(get)h(written)e(bac)m(k)h(to)h(the)e +(\014le.)0 941 y(The)24 b(second)h(step)g(is)f(to)i(design)e(the)h +(driv)m(er)g(routine)f(that)i(op)s(ens)e(all)h(the)g(necessary)g(FITS)f +(\014les)h(and)f(initializes)0 1054 y(the)41 b(input)g(parameters)g(to) +h(the)g(iterator)g(function.)73 b(The)41 b(driv)m(er)g(program)g(calls) +h(the)g(CFITSIO)e(iterator)0 1167 y(function)30 b(whic)m(h)g(then)g +(reads)g(the)h(data)g(and)f(passes)g(it)h(to)g(the)g(user's)e(w)m(ork)i +(function.)0 1327 y(F)-8 b(urther)41 b(details)i(on)f(using)f(the)h +(iterator)h(function)f(can)g(b)s(e)f(found)f(in)i(the)g(companion)g +(CFITSIO)e(User's)0 1440 y(Guide,)31 b(and)e(in)h(the)h(iter)p +874 1440 28 4 v 33 w(a.f,)g(iter)p 1197 1440 V 34 w(b.f)f(and)f(iter)p +1677 1440 V 34 w(c.f)h(example)h(programs.)p eop end +%%Page: 77 83 +TeXDict begin 77 82 bop 0 1225 a Ff(Chapter)65 b(8)0 +1687 y Fl(Extended)77 b(File)g(Name)g(Syn)-6 b(tax)0 +2216 y Fd(8.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)g(the) +h(name)f(of)h(the)g(data)g(\014le)f(to)h(b)s(e)f(op)s(ened)g(or)0 +2579 y(created)g(that)g(includes)f(the)h(follo)m(wing)h(features:)136 +2813 y Fc(\017)46 b Fi(CFITSIO)40 b(can)i(read)f(IRAF)h(format)g +(images)g(whic)m(h)f(ha)m(v)m(e)i(header)e(\014le)h(names)f(that)h(end) +f(with)g(the)227 2926 y('.imh')d(extension,)i(as)e(w)m(ell)g(as)g +(reading)f(and)g(writing)g(FITS)g(\014les,)i(This)e(feature)h(is)f +(implemen)m(ted)h(in)227 3039 y(CFITSIO)29 b(b)m(y)i(\014rst)e(con)m(v) +m(erting)k(the)d(IRAF)h(image)h(in)m(to)f(a)g(temp)s(orary)f(FITS)g +(format)h(\014le)f(in)g(memory)-8 b(,)227 3152 y(then)35 +b(op)s(ening)f(the)h(FITS)f(\014le.)54 b(An)m(y)35 b(of)g(the)g(usual)f +(CFITSIO)g(routines)g(then)h(ma)m(y)g(b)s(e)f(used)g(to)i(read)227 +3265 y(the)31 b(image)g(header)f(or)h(data.)41 b(Similarly)-8 +b(,)31 b(ra)m(w)f(binary)g(data)h(arra)m(ys)f(can)h(b)s(e)f(read)g(b)m +(y)g(con)m(v)m(erting)i(them)227 3378 y(on)f(the)f(\015y)g(in)m(to)h +(virtual)g(FITS)f(images.)136 3557 y Fc(\017)46 b Fi(FITS)37 +b(\014les)g(on)g(the)g(In)m(ternet)h(can)f(b)s(e)g(read)g(\(and)g +(sometimes)h(written\))f(using)g(the)g(FTP)-8 b(,)38 +b(HTTP)-8 b(,)37 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)g(can)h(b)s(e)f(pip)s(ed)f(b)s +(et)m(w)m(een)i(tasks)f(on)h(the)f(stdin)g(and)g(stdout)g(streams.)136 +4028 y Fc(\017)46 b Fi(FITS)20 b(\014les)h(can)g(b)s(e)f(read)g(and)g +(written)h(in)f(shared)g(memory)-8 b(.)38 b(This)20 b(can)h(p)s(oten)m +(tially)h(ac)m(hiev)m(e)h(m)m(uc)m(h)e(b)s(etter)227 +4141 y(data)26 b(I/O)e(p)s(erformance)g(compared)h(to)h(reading)f(and)f +(writing)g(the)h(same)h(FITS)e(\014les)g(on)h(magnetic)h(disk.)136 +4320 y Fc(\017)46 b Fi(Compressed)30 b(FITS)f(\014les)i(in)f(gzip)h(or) +f(Unix)g(COMPRESS)f(format)h(can)h(b)s(e)f(directly)h(read.)136 +4499 y Fc(\017)46 b Fi(Output)28 b(FITS)h(\014les)g(can)g(b)s(e)g +(written)g(directly)h(in)e(compressed)h(gzip)h(format,)g(th)m(us)e(sa)m +(ving)i(disk)f(space.)136 4678 y Fc(\017)46 b Fi(FITS)26 +b(table)h(columns)f(can)h(b)s(e)f(created,)i(mo)s(di\014ed,)f(or)f +(deleted)h('on-the-\015y')g(as)g(the)g(table)g(is)f(op)s(ened)g(b)m(y) +227 4791 y(CFITSIO.)32 b(This)h(creates)i(a)e(virtual)h(FITS)f(\014le)g +(con)m(taining)i(the)f(mo)s(di\014cations)f(that)h(is)g(then)f(op)s +(ened)227 4904 y(b)m(y)e(the)f(application)i(program.)136 +5083 y Fc(\017)46 b Fi(T)-8 b(able)29 b(ro)m(ws)e(ma)m(y)i(b)s(e)e +(selected,)j(or)e(\014ltered)g(out,)g(on)g(the)g(\015y)f(when)g(the)h +(table)h(is)f(op)s(ened)f(b)m(y)g(CFITSIO,)227 5196 y(based)f(on)h(an)f +(arbitrary)h(user-sp)s(eci\014ed)e(expression.)39 b(Only)26 +b(ro)m(ws)h(for)f(whic)m(h)g(the)h(expression)f(ev)-5 +b(aluates)227 5309 y(to)31 b('TR)m(UE')g(are)g(retained)g(in)f(the)g +(cop)m(y)i(of)e(the)h(table)g(that)g(is)f(op)s(ened)g(b)m(y)g(the)h +(application)g(program.)136 5488 y Fc(\017)46 b Fi(Histogram)28 +b(images)g(ma)m(y)f(b)s(e)f(created)h(on)f(the)h(\015y)f(b)m(y)g +(binning)g(the)g(v)-5 b(alues)27 b(in)f(table)i(columns,)f(resulting) +227 5601 y(in)36 b(a)g(virtual)h(N-dimensional)f(FITS)g(image.)59 +b(The)35 b(application)i(program)f(then)g(only)g(sees)g(the)h(FITS)227 +5714 y(image)32 b(\(in)e(the)h(primary)e(arra)m(y\))j(instead)e(of)h +(the)f(original)i(FITS)d(table.)1905 5942 y(77)p eop +end +%%Page: 78 84 +TeXDict begin 78 83 bop 0 299 a Fi(78)1618 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fi(The)43 b(latter)i(3)f(features)g(in)f(particular)h(add)f(v)m +(ery)h(p)s(o)m(w)m(erful)f(data)h(pro)s(cessing)f(capabilities)j +(directly)e(in)m(to)0 668 y(CFITSIO,)29 b(and)g(hence)h(in)m(to)h(ev)m +(ery)f(task)h(that)f(uses)g(CFITSIO)e(to)j(read)f(or)g(write)g(FITS)f +(\014les.)40 b(F)-8 b(or)31 b(example,)0 781 y(these)d(features)f +(transform)f(a)i(v)m(ery)f(simple)g(program)g(that)h(just)f(copies)h +(an)f(input)f(FITS)g(\014le)h(to)h(a)g(new)e(output)0 +894 y(\014le)36 b(\(lik)m(e)h(the)f(`\014tscop)m(y')h(program)f(that)g +(is)g(distributed)f(with)g(CFITSIO\))g(in)m(to)i(a)f(m)m(ultipurp)s +(ose)f(FITS)g(\014le)0 1007 y(pro)s(cessing)24 b(to)s(ol.)40 +b(By)25 b(app)s(ending)f(fairly)g(simple)h(quali\014ers)g(on)m(to)g +(the)g(name)g(of)g(the)g(input)f(FITS)g(\014le,)i(the)f(user)0 +1120 y(can)37 b(p)s(erform)f(quite)i(complex)g(table)g(editing)g(op)s +(erations)f(\(e.g.,)k(create)e(new)d(columns,)j(or)e(\014lter)h(out)f +(ro)m(ws)0 1233 y(in)g(a)g(table\))h(or)f(create)h(FITS)f(images)h(b)m +(y)f(binning)e(or)i(histogramming)h(the)f(v)-5 b(alues)37 +b(in)g(table)h(columns.)60 b(In)0 1346 y(addition,)33 +b(these)g(functions)e(ha)m(v)m(e)j(b)s(een)d(co)s(ded)h(using)f(new)h +(state-of-the)i(art)f(algorithms)g(that)g(are,)g(in)f(some)0 +1458 y(cases,)g(10)f(-)f(100)i(times)f(faster)g(than)f(previous)g +(widely)g(used)g(implemen)m(tations.)0 1619 y(Before)k(describing)f +(the)h(complete)h(syn)m(tax)f(for)f(the)h(extended)f(FITS)g(\014le)g +(names)g(in)g(the)h(next)g(section,)h(here)0 1732 y(are)c(a)g(few)f +(examples)h(of)f(FITS)g(\014le)g(names)h(that)f(giv)m(e)i(a)f(quic)m(k) +g(o)m(v)m(erview)h(of)f(the)f(allo)m(w)m(ed)i(syn)m(tax:)136 +1960 y Fc(\017)46 b Fe('myfile.fits')p Fi(:)37 b(the)31 +b(simplest)f(case)i(of)e(a)h(FITS)f(\014le)g(on)h(disk)e(in)i(the)f +(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) +i(\014le)e(and)f(con)m(v)m(erts)i(it)g(on)f(the)g(\015y)f(in)m(to)i(a)f +(temp)s(orary)227 2250 y(FITS)h(format)h(image)g(in)f(memory)h(whic)m +(h)f(can)g(then)g(b)s(e)g(read)g(with)g(an)m(y)h(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)e(data)i(arra)m(y)g(\(a)g +(512)g(x)f(512)i(short)e(in)m(teger)h(arra)m(y)g(in)227 +2540 y(this)i(case\))i(and)d(con)m(v)m(erts)j(it)e(on)g(the)g(\015y)g +(in)m(to)h(a)f(temp)s(orary)g(FITS)f(format)h(image)i(in)d(memory)h +(whic)m(h)227 2652 y(can)e(then)f(b)s(e)g(read)g(with)g(an)m(y)h(other) +f(CFITSIO)f(routine.)136 2830 y Fc(\017)46 b Fe(myfile.fits.gz)p +Fi(:)d(if)33 b(this)g(is)g(the)g(name)g(of)h(a)f(new)g(output)g +(\014le,)h(the)f('.gz')i(su\016x)d(will)h(cause)h(it)g(to)g(b)s(e)227 +2942 y(compressed)c(in)g(gzip)h(format)g(when)e(it)i(is)g(written)f(to) +h(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)e(\014le) +i(m)m(y\014le.\014ts)f(then)227 3232 y(mo)m(v)m(es)34 +b(to)f(the)f(extension)h(whic)m(h)f(has)f(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)g +(sign\))h(signi\014es)f(that)h(the)g(input)f(\014le)g(is)h(to)g(b)s(e)f +(read)g(from)g(the)h(stdin)f(\014le)g(stream,)227 3635 +y(or)h(that)g(the)f(output)g(\014le)h(is)f(to)h(b)s(e)f(written)g(to)h +(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)g(in)g(an)m(y)g(ftp)g(arc)m(hiv)m(e)i(site) +f(on)f(the)227 3925 y(In)m(ternet)j(ma)m(y)g(b)s(e)f(directly)h(op)s +(ened)e(with)h(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)35 b(URL)f(to)h(a)f(FITS)g(\014le) +g(on)227 4215 y(the)d(W)-8 b(eb)31 b(ma)m(y)g(b)s(e)f(op)s(ened)f(with) +h(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)24 b(to)g(ftp)f(access)i(except)g(that)f(it)g(pro-) +227 4505 y(vides)30 b(write)h(as)f(w)m(ell)h(as)g(read)f(access)h(to)g +(the)f(\014les)h(across)f(the)h(net)m(w)m(ork.)41 b(This)29 +b(uses)h(the)h(ro)s(ot)f(proto)s(col)227 4618 y(dev)m(elop)s(ed)h(at)g +(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)i(in)f(a)g(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)i(in)e(core)i +(computer)f(memory)-8 b(.)62 b(The)37 b(resulting)g('\014le')h(will)227 +5198 y(disapp)s(ear)25 b(when)f(the)i(program)f(exits,)i(so)f(this)f +(is)h(mainly)f(useful)g(for)g(testing)i(purp)s(oses)c(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)i(con)m(tained)f(in)f(the)h(10th)f(ro) +m(w)h(of)227 5601 y(the)26 b('Images')i(column)d(in)h(the)g(binary)g +(table)g(in)g(the)g(3th)h(extension)f(of)g(the)h(FITS)e(\014le.)39 +b(The)26 b(application)227 5714 y(just)k(sees)h(this)f(single)h(image)h +(as)e(the)h(primary)e(arra)m(y)-8 b(.)p eop end +%%Page: 79 85 +TeXDict begin 79 84 bop 0 299 a Fg(8.1.)72 b(O)m(VER)-10 +b(VIEW)3086 b Fi(79)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)h(of)e(the)h(input)f +(image)i(ranging)f(from)f(the)227 668 y(1st)26 b(to)g(the)f(512th)h +(pixel)g(in)e(X)i(and)e(Y,)i(and)e(selects)j(ev)m(ery)e(second)h(pixel) +f(in)g(b)s(oth)f(dimensions,)i(resulting)227 781 y(in)k(a)h(256)h(x)e +(256)i(pixel)e(image)i(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)f(on)f(the)g(\015y)g(\(in)g(memory)g(or)g(on)h +(disk\))f(that)g(is)h(iden)m(tical)h(to)f(m)m(y\014le.\014ts)f(except)h +(that)g(it)g(will)g(con)m(tain)227 1207 y(a)41 b(new)f(column)g(in)h +(the)f(EVENTS)g(extension)h(called)h('Rad')f(whose)f(v)-5 +b(alue)41 b(is)f(computed)h(using)f(the)227 1320 y(indicated)31 +b(expression)f(whic)m(h)g(is)h(a)g(function)f(of)g(the)h(v)-5 +b(alues)30 b(in)h(the)f(X)h(and)e(Y)i(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)g(that)h(is)g(iden)m(ti-)227 1633 y(cal)k(to)g('m)m +(y\014le.\014ts')f(except)h(that)f(the)g(EVENTS)f(table)i(will)f(only)g +(con)m(tain)h(the)f(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)g(greater)i(than)e(5.)40 +b(In)27 b(general,)i(an)m(y)f(arbitrary)f(b)s(o)s(olean)h(expression)f +(using)g(a)h(C)f(or)227 1859 y(F)-8 b(ortran-lik)m(e)31 +b(syn)m(tax,)e(whic)m(h)f(ma)m(y)h(com)m(bine)g(AND)g(and)f(OR)f(op)s +(erators,)i(ma)m(y)g(b)s(e)f(used)f(to)i(select)h(ro)m(ws)227 +1972 y(from)g(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)g(arra)m(y)227 +2285 y(image)c(whic)m(h)f(is)g(computed)f(on)h(the)g(\015y)f(b)m(y)g +(binning)g(\(i.e,)j(computing)d(the)h(2-dimensional)h(histogram\))227 +2398 y(of)k(the)f(v)-5 b(alues)34 b(in)f(the)h(X)g(and)e(Y)i(columns)f +(of)h(the)f(EVENTS)g(extension.)50 b(In)33 b(this)g(case)i(the)e(X)h +(and)f(Y)227 2511 y(co)s(ordinates)h(range)g(from)f(1)h(to)g(2048)h +(and)e(the)h(image)g(pixel)g(size)g(is)g(4)f(units)g(in)g(b)s(oth)g +(dimensions,)h(so)227 2624 y(the)d(resulting)f(image)i(is)e(512)i(x)e +(512)i(pixels)f(in)f(size.)136 2824 y Fc(\017)46 b Fi(The)31 +b(\014nal)g(example)i(com)m(bines)f(man)m(y)f(of)h(these)g(feature)g +(in)m(to)g(one)g(complex)g(expression)f(\(it)i(is)e(brok)m(en)227 +2937 y(in)m(to)h(sev)m(eral)f(lines)g(for)f(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)h(case,)j +(CFITSIO)36 b(\(1\))j(copies)g(and)e(uncompresses)g(the)h(FITS)f +(\014le)h(from)f(the)h(ftp)f(site)i(on)f(the)227 3814 +y(legacy)g(mac)m(hine,)h(\(2\))e(mo)m(v)m(es)g(to)g(the)g('EVENTS')f +(extension,)i(\(3\))f(calculates)i(a)d(new)g(column)g(called)227 +3927 y('phacorr',)30 b(\(4\))f(selects)h(the)f(ro)m(ws)g(in)f(the)h +(table)h(that)f(ha)m(v)m(e)h(phacorr)e(in)g(the)h(range)g(5)g(to)h(14,) +g(and)e(\014nally)227 4040 y(\(5\))35 b(bins)d(the)h(remaining)g(ro)m +(ws)g(on)h(the)f(X)g(and)g(Y)g(column)g(co)s(ordinates,)i(using)d(a)i +(pixel)f(size)h(=)f(32)h(to)227 4153 y(create)d(a)f(2D)g(image.)42 +b(All)30 b(this)f(pro)s(cessing)g(is)h(completely)h(transparen)m(t)e +(to)i(the)e(application)i(program,)227 4266 y(whic)m(h)f(simply)g(sees) +h(the)g(\014nal)f(2-D)h(image)h(in)e(the)g(primary)g(arra)m(y)h(of)f +(the)h(op)s(ened)f(\014le.)0 4538 y(The)c(full)h(extended)g(CFITSIO)e +(FITS)h(\014le)h(name)g(can)g(con)m(tain)h(sev)m(eral)g(di\013eren)m(t) +g(comp)s(onen)m(ts)f(dep)s(ending)e(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)e +(in)h(the)g(follo)m(wing)i(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 end +%%Page: 80 86 +TeXDict begin 80 85 bop 0 299 a Fi(80)1618 b Fg(CHAPTER)30 +b(8.)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,)k(BaseFilename,)i(outName,)e(HDUlo) +s(cation,)i(and)41 b(ImageSection)i(comp)s(onen)m(ts,)i(if)d(presen)m +(t,)0 668 y(m)m(ust)30 b(b)s(e)g(giv)m(en)i(in)e(that)h(order,)g(but)f +(the)g(colFilter,)j(ro)m(wFilter,)g(and)c(binSp)s(ec)h(sp)s(eci\014ers) +f(ma)m(y)j(follo)m(w)f(in)g(an)m(y)0 781 y(order.)39 +b(Regardless)29 b(of)g(the)f(order,)g(ho)m(w)m(ev)m(er,)i(the)f +(colFilter)h(sp)s(eci\014er,)e(if)g(presen)m(t,)h(will)g(b)s(e)e(pro)s +(cessed)h(\014rst)f(b)m(y)0 894 y(CFITSIO,)i(follo)m(w)m(ed)j(b)m(y)e +(the)h(ro)m(wFilter)h(sp)s(eci\014er,)e(and)f(\014nally)i(b)m(y)f(the)g +(binSp)s(ec)f(sp)s(eci\014er.)0 1253 y Fd(8.2)135 b(Filet)l(yp)t(e)0 +1508 y Fi(The)37 b(t)m(yp)s(e)g(of)g(\014le)g(determines)g(the)g +(medium)f(on)h(whic)m(h)g(the)g(\014le)g(is)h(lo)s(cated)g(\(e.g.,)i +(disk)d(or)g(net)m(w)m(ork\))h(and,)0 1621 y(hence,)f(whic)m(h)e(in)m +(ternal)h(device)g(driv)m(er)f(is)g(used)f(b)m(y)h(CFITSIO)f(to)i(read) +f(and/or)g(write)g(the)g(\014le.)56 b(Curren)m(tly)0 +1734 y(supp)s(orted)29 b(t)m(yp)s(es)h(are)382 2015 y +Fe(file://)93 b(-)48 b(file)e(on)i(local)e(magnetic)g(disk)g +(\(default\))382 2128 y(ftp://)141 b(-)48 b(a)f(readonly)f(file)g +(accessed)g(with)h(the)g(anonymous)e(FTP)i(protocol.)907 +2241 y(It)g(also)g(supports)93 b(ftp://username:password@)o(host)o(nam) +o(e/..)o(.)907 2354 y(for)47 b(accessing)e(password-protected)e(ftp)k +(sites.)382 2467 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 2579 y(supports)45 +b(username:password)e(just)k(like)g(the)g(ftp)g(driver.)907 +2692 y(Proxy)f(HTTP)h(servers)f(are)h(supported)e(using)h(the)h +(http_proxy)907 2805 y(environment)e(variable)g(\(see)i(following)e +(note\).)286 2918 y(stream://)93 b(-)48 b(special)e(driver)g(to)h(read) +g(an)g(input)f(FITS)h(file)f(from)h(the)g(stdin)907 3031 +y(stream,)f(and/or)g(write)g(an)h(output)f(FITS)h(file)g(to)g(the)g +(stdout)143 3144 y(stream.)94 b(This)46 b(driver)g(is)i(fragile)d(and)i +(has)g(limited)143 3257 y(functionality)d(\(see)j(the)g(following)e +(note\).)286 3370 y(gsiftp://)93 b(-)48 b(access)e(files)g(on)h(a)h +(computational)c(grid)j(using)f(the)h(gridftp)907 3483 +y(protocol)e(in)j(the)e(Globus)h(toolkit)e(\(see)i(following)e(note\).) +382 3596 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 3709 y(reading)f(files)g(over)h +(the)g(network.)382 3821 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 +3934 y(shared)f(memory.)382 4047 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 4160 y(disappears)e(when)h(the)h(program)f(exits)h +(so)g(this)f(is)i(mainly)907 4273 y(useful)e(for)h(test)f(purposes)g +(when)h(a)g(permanent)e(output)h(file)907 4386 y(is)h(not)g(desired.)0 +4667 y Fi(If)35 b(the)h(\014let)m(yp)s(e)g(is)f(not)h(sp)s(eci\014ed,)h +(then)e(t)m(yp)s(e)h(\014le://)h(is)e(assumed.)56 b(The)35 +b(double)g(slashes)h('//')h(are)f(optional)0 4780 y(and)30 +b(ma)m(y)h(b)s(e)e(omitted)j(in)e(most)h(cases.)0 5096 +y Fb(8.2.1)112 b(Notes)37 b(ab)s(out)i(HTTP)d(pro)m(xy)i(serv)m(ers)0 +5320 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)f(the)h(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 5433 y(serv)m(er)f(with)f(the)g(h)m +(ttp)p 801 5433 28 4 v 33 w(pro)m(xy)g(en)m(vironmen)m(t)h(v)-5 +b(ariable.)42 b(F)-8 b(or)31 b(example)191 5714 y Fe(setenv)46 +b(http_proxy)f(http://heasarc.gsfc.nasa)o(.gov)o(:312)o(8)p +eop end +%%Page: 81 87 +TeXDict begin 81 86 bop 0 299 a Fg(8.2.)72 b(FILETYPE)3128 +b Fi(81)0 555 y(will)38 b(cause)g(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)g(a) +g(FITS)f(\014le)0 668 y(with)30 b(HTTP)-8 b(.)0 987 y +Fb(8.2.2)112 b(Notes)37 b(ab)s(out)i(the)e(stream)h(\014let)m(yp)s(e)g +(driv)m(er)0 1212 y Fi(The)e(stream)h(driv)m(er)f(can)h(b)s(e)f(used)g +(to)h(e\016cien)m(tly)i(read)d(a)h(FITS)f(\014le)h(from)f(the)h(stdin)f +(\014le)g(stream)h(or)g(write)0 1324 y(a)44 b(FITS)e(to)i(the)g(stdout) +f(\014le)g(stream.)80 b(Ho)m(w)m(ev)m(er,)49 b(b)s(ecause)43 +b(these)h(input)e(and)h(output)g(streams)g(m)m(ust)h(b)s(e)0 +1437 y(accessed)30 b(sequen)m(tially)-8 b(,)31 b(the)e(FITS)f(\014le)g +(reading)h(or)f(writing)h(application)h(m)m(ust)e(also)i(read)e(and)g +(write)h(the)g(\014le)0 1550 y(sequen)m(tially)-8 b(,)33 +b(at)e(least)g(within)f(the)h(tolerances)h(describ)s(ed)d(b)s(elo)m(w.) +0 1710 y(CFITSIO)34 b(supp)s(orts)f(2)j(di\013eren)m(t)f(metho)s(ds)g +(for)g(accessing)i(FITS)d(\014les)h(on)h(the)f(stdin)g(and)f(stdout)h +(streams.)0 1823 y(The)c(original)i(metho)s(d,)f(whic)m(h)f(is)h(in)m +(v)m(ok)m(ed)h(b)m(y)f(sp)s(ecifying)f(a)h(dash)f(c)m(haracter,)j("-",) +g(as)d(the)h(name)g(of)g(the)g(\014le)0 1936 y(when)g(op)s(ening)g(or)h +(creating)h(it,)g(w)m(orks)e(b)m(y)h(storing)g(a)g(complete)h(cop)m(y)g +(of)f(the)g(en)m(tire)g(FITS)f(\014le)h(in)f(memory)-8 +b(.)0 2049 y(In)35 b(this)g(case,)k(when)34 b(reading)i(from)f(stdin,)i +(CFITSIO)d(will)i(cop)m(y)h(the)e(en)m(tire)i(stream)f(in)m(to)h +(memory)e(b)s(efore)0 2162 y(doing)c(an)m(y)h(pro)s(cessing)f(of)h(the) +f(\014le.)44 b(Similarly)-8 b(,)32 b(when)f(writing)g(to)h(stdout,)g +(CFITSIO)d(will)j(create)h(a)f(cop)m(y)g(of)0 2275 y(the)h(en)m(tire)g +(FITS)f(\014le)g(in)h(memory)-8 b(,)33 b(b)s(efore)f(\014nally)h +(\015ushing)e(it)i(out)f(to)i(the)e(stdout)h(stream)g(when)e(the)i +(FITS)0 2388 y(\014le)g(is)g(closed.)49 b(Bu\013ering)33 +b(the)g(en)m(tire)h(FITS)e(\014le)h(in)g(this)f(w)m(a)m(y)i(allo)m(ws)g +(the)f(application)i(to)e(randomly)g(access)0 2501 y(an)m(y)h(part)f +(of)h(the)f(FITS)g(\014le,)i(in)e(an)m(y)h(order,)f(but)g(it)h(also)h +(requires)e(that)h(the)f(user)g(ha)m(v)m(e)i(su\016cien)m(t)f(a)m(v)-5 +b(ailable)0 2614 y(memory)30 b(\(or)g(virtual)g(memory\))g(to)h(store)f +(the)g(en)m(tire)h(\014le,)f(whic)m(h)f(ma)m(y)i(not)f(b)s(e)f(p)s +(ossible)g(in)h(the)g(case)h(of)f(v)m(ery)0 2727 y(large)h(\014les.)0 +2887 y(The)e(new)m(er)g(stream)h(\014let)m(yp)s(e)g(pro)m(vides)f(a)h +(more)f(memory-e\016cien)m(t)i(metho)s(d)e(of)h(accessing)h(FITS)d +(\014les)h(on)h(the)0 3000 y(stdin)37 b(or)h(stdout)g(streams.)64 +b(Instead)38 b(of)g(storing)g(a)g(cop)m(y)h(of)f(the)g(en)m(tire)h +(FITS)e(\014le)h(in)g(memory)-8 b(,)40 b(CFITSIO)0 3113 +y(only)32 b(uses)g(a)g(set)h(of)f(in)m(ternal)h(bu\013er)e(whic)m(h)h +(b)m(y)g(default)g(can)g(store)h(40)g(FITS)e(blo)s(c)m(ks,)i(or)g(ab)s +(out)e(100K)i(b)m(ytes)0 3225 y(of)f(the)f(FITS)g(\014le.)43 +b(The)31 b(application)i(program)e(m)m(ust)g(pro)s(cess)g(the)h(FITS)e +(\014le)i(sequen)m(tially)h(from)e(b)s(eginning)0 3338 +y(to)h(end,)e(within)g(this)h(100K)h(bu\013er.)41 b(Generally)32 +b(sp)s(eaking)f(the)g(application)h(program)f(m)m(ust)f(conform)h(to)h +(the)0 3451 y(follo)m(wing)g(restrictions:)136 3735 y +Fc(\017)46 b Fi(The)36 b(program)f(m)m(ust)h(\014nish)e(reading)i(or)g +(writing)f(the)h(header)g(k)m(eyw)m(ords)g(b)s(efore)f(reading)h(or)g +(writing)227 3848 y(an)m(y)31 b(data)g(in)f(the)h(HDU.)136 +4060 y Fc(\017)46 b Fi(The)24 b(HDU)h(can)f(con)m(tain)i(at)e(most)h +(ab)s(out)f(1400)h(header)f(k)m(eyw)m(ords.)39 b(This)24 +b(is)g(the)g(maxim)m(um)g(that)h(can)f(\014t)227 4172 +y(in)g(the)g(nominal)h(40)g(FITS)e(blo)s(c)m(k)i(bu\013er.)37 +b(In)24 b(principle,)h(this)f(limit)h(could)f(b)s(e)g(increased)g(b)m +(y)g(recompiling)227 4285 y(CFITSIO)29 b(with)h(a)h(larger)g(bu\013er)e +(limit,)j(whic)m(h)e(is)g(set)h(b)m(y)f(the)h(NIOBUF)g(parameter)g(in)f +(\014tsio2.h.)136 4497 y Fc(\017)46 b Fi(The)32 b(program)g(m)m(ust)f +(read)h(or)g(write)h(the)f(data)g(in)g(a)g(sequen)m(tial)i(manner)d +(from)h(the)g(b)s(eginning)f(to)i(the)227 4610 y(end)26 +b(of)g(the)h(HDU.)g(Note)h(that)f(CFITSIO's)e(in)m(ternal)i(100K)g +(bu\013er)e(allo)m(ws)j(a)e(little)j(latitude)e(in)f(meeting)227 +4723 y(this)31 b(requiremen)m(t.)136 4934 y Fc(\017)46 +b Fi(The)30 b(program)g(cannot)h(mo)m(v)m(e)h(bac)m(k)f(to)g(a)g +(previous)f(HDU)h(in)f(the)h(FITS)e(\014le.)136 5146 +y Fc(\017)46 b Fi(Reading)c(or)f(writing)f(of)h(v)-5 +b(ariable)42 b(length)f(arra)m(y)h(columns)e(in)h(binary)f(tables)i(is) +f(not)g(supp)s(orted)e(on)227 5259 y(streams,)29 b(b)s(ecause)f(this)g +(requires)g(mo)m(ving)g(bac)m(k)h(and)f(forth)f(b)s(et)m(w)m(een)i(the) +f(\014xed-length)g(p)s(ortion)g(of)g(the)227 5372 y(binary)i(table)h +(and)f(the)g(follo)m(wing)i(heap)e(area)i(where)e(the)g(arra)m(ys)h +(are)g(actually)h(stored.)136 5583 y Fc(\017)46 b Fi(Reading)25 +b(or)g(writing)f(of)h(tile-compressed)h(images)g(is)e(not)h(supp)s +(orted)e(on)h(streams,)i(b)s(ecause)f(the)g(images)227 +5696 y(are)31 b(in)m(ternally)g(stored)g(using)f(v)-5 +b(ariable)31 b(length)g(arra)m(ys.)p eop end +%%Page: 82 88 +TeXDict begin 82 87 bop 0 299 a Fi(82)1618 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fb(8.2.3)112 b(Notes)37 b(ab)s(out)i(the)e(gsiftp)h(\014let)m(yp) +s(e)0 774 y Fi(DEPENDENCIES:)c(Globus)h(to)s(olkit)h(\(2.4.3)g(or)f +(higher\))f(\(GT\))h(should)f(b)s(e)g(installed.)53 b(There)34 +b(are)h(t)m(w)m(o)h(dif-)0 887 y(feren)m(t)31 b(w)m(a)m(ys)g(to)g +(install)g(GT:)0 1047 y(1\))43 b(goto)h(the)f(globus)f(to)s(olkit)i(w)m +(eb)e(page)i(www.globus.org)e(and)g(follo)m(w)h(the)g(do)m(wnload)g +(and)e(compilation)0 1160 y(instructions;)0 1320 y(2\))j(goto)i(the)d +(Virtual)i(Data)g(T)-8 b(o)s(olkit)45 b(w)m(eb)e(page)i(h)m +(ttp://vdt.cs.wisc.edu/)g(and)e(follo)m(w)i(the)f(instructions)0 +1433 y(\(STR)m(ONGL)-8 b(Y)31 b(SUGGESTED\);)0 1593 y(Once)23 +b(a)h(globus)f(clien)m(t)h(has)f(b)s(een)g(installed)h(in)e(y)m(our)i +(system)f(with)g(a)g(sp)s(eci\014c)g(\015a)m(v)m(our)h(it)f(is)g(p)s +(ossible)g(to)h(compile)0 1706 y(and)30 b(install)h(the)g(CFITSIO)d +(libraries.)41 b(Sp)s(eci\014c)30 b(con\014guration)h(\015ags)f(m)m +(ust)h(b)s(e)e(used:)0 1866 y(1\))21 b({with-gsiftp[[=P)-8 +b(A)g(TH]])22 b(Enable)f(Globus)f(T)-8 b(o)s(olkit)21 +b(gsiftp)g(proto)s(col)g(supp)s(ort)d(P)-8 b(A)g(TH=GLOBUS)p +3532 1866 28 4 v 33 w(LOCA)g(TION)0 1979 y(i.e.)42 b(the)30 +b(lo)s(cation)i(of)f(y)m(our)f(globus)g(installation)0 +2139 y(2\))h({with-gsiftp-\015a)m(v)m(our[[=P)-8 b(A)g(TH])33 +b(de\014nes)d(the)g(sp)s(eci\014c)g(Globus)h(\015a)m(v)m(our)f(ex.)41 +b(gcc32)0 2300 y(Both)31 b(the)g(\015ags)f(m)m(ust)g(b)s(e)g(used)g +(and)f(it)i(is)g(mandatory)f(to)h(set)g(b)s(oth)f(the)g(P)-8 +b(A)g(TH)31 b(and)f(the)h(\015a)m(v)m(our.)0 2460 y(USA)m(GE:)g(T)-8 +b(o)31 b(access)h(\014les)e(on)g(a)h(gridftp)f(serv)m(er)g(it)h(is)g +(necessary)f(to)i(use)e(a)g(gsiftp)h(pre\014x:)0 2620 +y(example:)41 b(gsiftp://remote)p 1003 2620 V 35 w(serv)m(er)p +1271 2620 V 34 w(fqhn/directory/\014lename)0 2780 y(The)f(gridftp)g +(driv)m(er)g(uses)g(a)g(lo)s(cal)i(bu\013er)d(on)i(a)f(temp)s(orary)g +(\014le)h(the)f(\014le)h(is)f(lo)s(cated)i(in)e(the)g(/tmp)h(direc-)0 +2893 y(tory)-8 b(.)73 b(If)40 b(y)m(ou)h(ha)m(v)m(e)h(sp)s(ecial)g(p)s +(ermissions)d(on)i(/tmp)g(or)g(y)m(ou)g(do)f(not)i(ha)m(v)m(e)g(a)f +(/tmp)g(directory)-8 b(,)44 b(it)e(is)e(p)s(os-)0 3006 +y(sible)d(to)h(force)g(another)g(lo)s(cation)g(setting)h(the)e(GSIFTP)p +2068 3006 V 32 w(TMPFILE)g(en)m(vironmen)m(t)h(v)-5 b(ariable)38 +b(\(ex.)62 b(exp)s(ort)0 3119 y(GSIFTP)p 347 3119 V 32 +w(TMPFILE=/y)m(our/lo)s(cation/y)m(ourtmp\014le\).)0 +3279 y(Grid)34 b(FTP)g(supp)s(orts)f(m)m(ulti)h(c)m(hannel)h(transfer.) +52 b(By)35 b(default)f(a)h(single)g(c)m(hannel)g(transmission)f(is)g(a) +m(v)-5 b(ailable.)0 3392 y(Ho)m(w)m(ev)m(er,)34 b(it)d(is)h(p)s +(ossible)e(to)i(mo)s(dify)e(this)i(b)s(eha)m(vior)f(setting)h(the)f +(GSIFTP)p 2691 3392 V 33 w(STREAMS)f(en)m(vironmen)m(t)h(v)-5 +b(ari-)0 3505 y(able)31 b(\(ex.)41 b(exp)s(ort)30 b(GSIFTP)p +1016 3505 V 33 w(STREAMS=8\).)0 3790 y Fb(8.2.4)112 b(Notes)37 +b(ab)s(out)i(the)e(ro)s(ot)g(\014let)m(yp)s(e)0 4009 +y Fi(The)20 b(original)j(ro)s(otd)d(serv)m(er)h(can)h(b)s(e)e(obtained) +h(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 4122 y(it)33 b(to)h(w)m(ork)f(correctly)h(with)e +(CFITSIO)g(one)h(has)f(to)i(use)e(a)i(mo)s(di\014ed)d(v)m(ersion)j +(whic)m(h)e(supp)s(orts)f(a)i(command)0 4235 y(to)41 +b(return)d(the)j(length)f(of)g(the)g(\014le.)70 b(This)39 +b(mo)s(di\014ed)f(v)m(ersion)j(is)f(a)m(v)-5 b(ailable)42 +b(in)e(ro)s(otd)f(sub)s(directory)g(in)h(the)0 4348 y(CFITSIO)29 +b(ftp)h(area)h(at)286 4577 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 +4805 y Fi(This)j(small)g(serv)m(er)h(is)g(started)f(either)h(b)m(y)g +(inetd)f(when)f(a)i(clien)m(t)h(requests)e(a)h(connection)h(to)f(a)f +(ro)s(otd)h(serv)m(er)0 4918 y(or)30 b(b)m(y)g(hand)f(\(i.e.)42 +b(from)30 b(the)g(command)g(line\).)42 b(The)29 b(ro)s(otd)h(serv)m(er) +h(w)m(orks)f(with)g(the)g(R)m(OOT)g(TNetFile)i(class.)0 +5031 y(It)e(allo)m(ws)g(remote)h(access)f(to)h(R)m(OOT)e(database)h +(\014les)f(in)g(either)h(read)g(or)f(write)h(mo)s(de.)40 +b(By)30 b(default)f(TNetFile)0 5144 y(assumes)38 b(p)s(ort)g(432)h +(\(whic)m(h)f(requires)g(ro)s(otd)g(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)h(inetd)f(add)g(the)0 +5257 y(follo)m(wing)32 b(line)f(to)g(/etc/services:)95 +5485 y Fe(rootd)238 b(432/tcp)0 5714 y Fi(and)30 b(to)h +(/etc/inetd.conf,)i(add)d(the)g(follo)m(wing)i(line:)p +eop end +%%Page: 83 89 +TeXDict begin 83 88 bop 0 299 a Fg(8.2.)72 b(FILETYPE)3128 +b Fi(83)95 555 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 829 y +Fi(F)-8 b(orce)34 b(inetd)e(to)i(reread)e(its)h(conf)f(\014le)h(with)f +("kill)h(-HUP)g(<pid)f(inetd>".)47 b(Y)-8 b(ou)33 b(can)g(also)g(start) +g(ro)s(otd)g(b)m(y)f(hand)0 942 y(running)j(directly)i(under)d(y)m(our) +j(priv)-5 b(ate)37 b(accoun)m(t)g(\(no)g(ro)s(ot)g(system)f(privileges) +h(needed\).)59 b(F)-8 b(or)37 b(example)g(to)0 1054 y(start)e(ro)s(otd) +e(listening)i(on)f(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:)50 b(no)34 b(&)f(is)h(needed.)51 +b(Ro)s(otd)35 b(will)0 1167 y(go)c(in)m(to)h(bac)m(kground)e(b)m(y)g +(itself.)95 1441 y Fe(Rootd)47 b(arguments:)191 1554 +y(-i)763 b(says)47 b(we)g(were)f(started)g(by)h(inetd)191 +1667 y(-p)g(port#)476 b(specifies)45 b(a)j(different)d(port)i(to)g +(listen)f(on)191 1780 y(-d)h(level)476 b(level)46 b(of)i(debug)e(info)h +(written)e(to)j(syslog)1050 1893 y(0)f(=)h(no)f(debug)f(\(default\)) +1050 2005 y(1)h(=)h(minimum)1050 2118 y(2)f(=)h(medium)1050 +2231 y(3)f(=)h(maximum)0 2505 y Fi(Ro)s(otd)29 b(can)f(also)h(b)s(e)f +(con\014gured)g(for)g(anon)m(ymous)g(usage)h(\(lik)m(e)h(anon)m(ymous)e +(ftp\).)40 b(T)-8 b(o)29 b(setup)f(ro)s(otd)g(to)h(accept)0 +2618 y(anon)m(ymous)h(logins)h(do)g(the)f(follo)m(wing)i(\(while)f(b)s +(eing)f(logged)i(in)e(as)g(ro)s(ot\):)143 2891 y Fe(-)48 +b(Add)f(the)f(following)g(line)g(to)i(/etc/passwd:)239 +3117 y(rootd:*:71:72:Anonymous)41 b(rootd:/var/spool/rootd:/b)o(in/)o +(fals)o(e)239 3343 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 3456 +y(to)h(suite)f(your)h(system.)143 3681 y(-)h(Add)f(the)f(following)g +(line)g(to)i(/etc/group:)239 3907 y(rootd:*:72:rootd)239 +4133 y(where)e(the)h(gid)g(must)f(match)h(the)g(gid)g(in)g +(/etc/passwd.)143 4359 y(-)h(Create)e(the)h(directories:)239 +4585 y(mkdir)f(/var/spool/rootd)239 4698 y(mkdir)g +(/var/spool/rootd/tmp)239 4811 y(chmod)g(777)h(/var/spool/rootd/tmp)239 +5036 y(Where)f(/var/spool/rootd)d(must)k(match)f(the)h(rootd)g(home)f +(directory)g(as)239 5149 y(specified)f(in)i(the)g(rootd)f(/etc/passwd)f +(entry.)143 5375 y(-)j(To)f(make)f(writeable)g(directories)e(for)j +(anonymous)f(do,)h(for)f(example:)239 5601 y(mkdir)g +(/var/spool/rootd/pub)239 5714 y(chown)g(rootd:rootd)f +(/var/spool/rootd/pub)p eop end +%%Page: 84 90 +TeXDict begin 84 89 bop 0 299 a Fi(84)1618 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fi(That's)42 b(all.)76 b(Sev)m(eral)43 b(additional)g(remarks:)64 +b(y)m(ou)42 b(can)g(login)h(to)g(an)f(anon)m(ymous)f(serv)m(er)i +(either)f(with)g(the)0 668 y(names)31 b("anon)m(ymous")h(or)f("ro)s +(otd".)43 b(The)31 b(passw)m(ord)f(should)g(b)s(e)h(of)g(t)m(yp)s(e)g +(user@host.do.main.)43 b(Only)30 b(the)h(@)0 781 y(is)e(enforced)f(for) +h(the)f(time)i(b)s(eing.)39 b(In)28 b(anon)m(ymous)h(mo)s(de)f(the)g +(top)h(of)g(the)g(\014le)f(tree)i(is)e(set)h(to)h(the)e(ro)s(otd)h +(home)0 894 y(directory)-8 b(,)39 b(therefore)e(only)f(\014les)h(b)s +(elo)m(w)f(the)h(home)f(directory)h(can)f(b)s(e)g(accessed.)60 +b(Anon)m(ymous)36 b(mo)s(de)g(only)0 1007 y(w)m(orks)30 +b(when)g(the)g(serv)m(er)h(is)f(started)h(via)g(inetd.)0 +1296 y Fb(8.2.5)112 b(Notes)37 b(ab)s(out)i(the)e(shmem)i(\014let)m(yp) +s(e:)0 1515 y Fi(Shared)34 b(memory)h(\014les)g(are)g(curren)m(tly)g +(supp)s(orted)e(on)i(most)h(Unix)f(platforms,)h(where)f(the)g(shared)f +(memory)0 1627 y(segmen)m(ts)d(are)g(managed)g(b)m(y)f(the)g(op)s +(erating)h(system)g(k)m(ernel)f(and)g(`liv)m(e')i(indep)s(enden)m(tly)d +(of)i(pro)s(cesses.)40 b(They)0 1740 y(are)34 b(not)g(deleted)h(\(b)m +(y)f(default\))g(when)f(the)h(pro)s(cess)f(whic)m(h)h(created)h(them)f +(terminates,)h(although)g(they)f(will)0 1853 y(disapp)s(ear)e(if)h(the) +h(system)f(is)g(reb)s(o)s(oted.)49 b(Applications)34 +b(can)g(create)h(shared)d(memory)h(\014les)g(in)g(CFITSIO)f(b)m(y)0 +1966 y(calling:)143 2214 y Fe(fit_create_file\(&fitsfile)o(ptr,)41 +b("shmem://h2",)j(&status\);)0 2462 y Fi(where)25 b(the)g(ro)s(ot)h +(`\014le')f(names)h(are)f(curren)m(tly)g(restricted)h(to)g(b)s(e)f +('h0',)i('h1',)g('h2',)g('h3',)f(etc.,)i(up)d(to)g(a)h(maxim)m(um)0 +2575 y(n)m(um)m(b)s(er)20 b(de\014ned)f(b)m(y)i(the)g(the)g(v)-5 +b(alue)22 b(of)f(SHARED)p 1746 2575 28 4 v 33 w(MAXSEG)g(\(equal)h(to)f +(16)h(b)m(y)f(default\).)38 b(This)20 b(is)h(a)g(protot)m(yp)s(e)0 +2688 y(implemen)m(tation)30 b(of)f(the)g(shared)f(memory)g(in)m +(terface)i(and)e(a)h(more)g(robust)f(in)m(terface,)j(whic)m(h)d(will)h +(ha)m(v)m(e)h(few)m(er)0 2801 y(restrictions)h(on)f(the)h(n)m(um)m(b)s +(er)e(of)i(\014les)f(and)g(on)g(their)g(names,)h(ma)m(y)g(b)s(e)f(dev)m +(elop)s(ed)g(in)g(the)h(future.)0 2961 y(When)23 b(op)s(ening)h(an)f +(already)h(existing)h(FITS)e(\014le)h(in)f(shared)g(memory)h(one)g +(calls)g(the)g(usual)g(CFITSIO)e(routine:)143 3209 y +Fe(fits_open_file\(&fitsfilep)o(tr,)41 b("shmem://h7",)j(mode,)j +(&status\))0 3457 y Fi(The)26 b(\014le)h(mo)s(de)g(can)g(b)s(e)f(READ)m +(WRITE)h(or)g(READONL)-8 b(Y)28 b(just)e(as)h(with)f(disk)h(\014les.)39 +b(More)28 b(than)e(one)h(pro)s(cess)0 3570 y(can)35 b(op)s(erate)g(on)f +(READONL)-8 b(Y)35 b(mo)s(de)f(\014les)h(at)g(the)f(same)h(time.)54 +b(CFITSIO)33 b(supp)s(orts)f(prop)s(er)h(\014le)i(lo)s(c)m(king)0 +3682 y(\(b)s(oth)27 b(in)h(READONL)-8 b(Y)29 b(and)e(READ)m(WRITE)h(mo) +s(des\),)h(so)f(calls)h(to)f(\014ts)p 2572 3682 V 33 +w(op)s(en)p 2795 3682 V 32 w(\014le)g(ma)m(y)g(b)s(e)f(lo)s(c)m(k)m(ed) +j(out)e(un)m(til)0 3795 y(another)j(other)f(pro)s(cess)g(closes)i(the)e +(\014le.)0 3956 y(When)g(an)g(application)i(is)e(\014nished)f +(accessing)j(a)e(FITS)g(\014le)g(in)g(a)h(shared)e(memory)h(segmen)m +(t,)i(it)f(ma)m(y)g(close)g(it)0 4068 y(\(and)j(the)g(\014le)g(will)g +(remain)f(in)h(the)g(system\))g(with)g(\014ts)p 1955 +4068 V 32 w(close)p 2173 4068 V 34 w(\014le,)h(or)f(delete)h(it)g(with) +e(\014ts)p 3191 4068 V 33 w(delete)p 3455 4068 V 34 w(\014le.)51 +b(Ph)m(ys-)0 4181 y(ical)36 b(deletion)g(is)f(p)s(ostp)s(oned)e(un)m +(til)j(the)f(last)g(pro)s(cess)g(calls)h(\013clos/\013delt.)56 +b(\014ts)p 2801 4181 V 32 w(delete)p 3064 4181 V 34 w(\014le)35 +b(tries)h(to)f(obtain)h(a)0 4294 y(READ)m(WRITE)e(lo)s(c)m(k)g(on)f +(the)g(\014le)h(to)g(b)s(e)e(deleted,)j(th)m(us)e(it)h(can)f(b)s(e)g +(blo)s(c)m(k)m(ed)h(if)f(the)h(ob)5 b(ject)34 b(w)m(as)f(not)h(op)s +(ened)0 4407 y(in)c(READ)m(WRITE)h(mo)s(de.)0 4567 y(A)i(shared)f +(memory)h(managemen)m(t)h(utilit)m(y)g(program)f(called)h(`smem',)f(is) +g(included)f(with)h(the)g(CFITSIO)e(dis-)0 4680 y(tribution.)39 +b(It)27 b(can)g(b)s(e)f(built)h(b)m(y)g(t)m(yping)g(`mak)m(e)h(smem';)g +(then)f(t)m(yp)s(e)g(`smem)f(-h')h(to)h(get)g(a)f(list)g(of)g(v)-5 +b(alid)27 b(options.)0 4793 y(Executing)37 b(smem)f(without)g(an)m(y)h +(options)g(causes)f(it)h(to)g(list)g(all)g(the)g(shared)e(memory)i +(segmen)m(ts)g(curren)m(tly)0 4906 y(residing)c(in)g(the)g(system)h +(and)e(managed)i(b)m(y)f(the)h(shared)e(memory)h(driv)m(er.)49 +b(T)-8 b(o)34 b(get)g(a)g(list)g(of)f(all)h(the)g(shared)0 +5019 y(memory)c(ob)5 b(jects,)32 b(run)d(the)h(system)h(utilit)m(y)g +(program)f(`ip)s(cs)h([-a]'.)0 5351 y Fd(8.3)135 b(Base)46 +b(Filename)0 5601 y Fi(The)31 b(base)g(\014lename)h(is)f(the)h(name)f +(of)h(the)f(\014le)h(optionally)g(including)f(the)h(director/sub)s +(directory)f(path,)h(and)0 5714 y(in)e(the)h(case)g(of)g(`ftp',)f(`h)m +(ttp',)i(and)d(`ro)s(ot')j(\014let)m(yp)s(es,)e(the)h(mac)m(hine)g +(iden)m(ti\014er.)41 b(Examples:)p eop end +%%Page: 85 91 +TeXDict begin 85 90 bop 0 299 a Fg(8.3.)72 b(BASE)30 +b(FILENAME)2830 b Fi(85)191 555 y Fe(myfile.fits)191 +668 y(!data.fits)191 781 y(/data/myfile.fits)191 894 +y(fits.gsfc.nasa.gov/ftp/s)o(ampl)o(eda)o(ta/m)o(yfil)o(e.f)o(its.)o +(gz)0 1120 y Fi(When)29 b(creating)h(a)f(new)f(output)h(\014le)g(on)g +(magnetic)h(disk)e(\(of)i(t)m(yp)s(e)f(\014le://\))h(if)f(the)g(base)g +(\014lename)g(b)s(egins)f(with)0 1233 y(an)34 b(exclamation)j(p)s(oin)m +(t)d(\(!\))54 b(then)34 b(an)m(y)g(existing)i(\014le)e(with)g(that)h +(same)g(basename)g(will)g(b)s(e)e(deleted)i(prior)f(to)0 +1346 y(creating)h(the)f(new)g(FITS)f(\014le.)51 b(Otherwise)34 +b(if)g(the)g(\014le)g(to)g(b)s(e)g(created)h(already)f(exists,)i(then)d +(CFITSIO)g(will)0 1459 y(return)g(an)h(error)f(and)g(will)i(not)f(o)m +(v)m(erwrite)h(the)f(existing)h(\014le.)52 b(Note)35 +b(that)g(the)f(exclamation)i(p)s(oin)m(t,)f(')10 b(!',)36 +b(is)e(a)0 1572 y(sp)s(ecial)28 b(UNIX)g(c)m(haracter,)j(so)d(if)f(it)i +(is)f(used)f(on)g(the)h(command)g(line)g(rather)g(than)f(en)m(tered)h +(at)h(a)f(task)h(prompt,)0 1685 y(it)j(m)m(ust)f(b)s(e)g(preceded)g(b)m +(y)h(a)g(bac)m(kslash)g(to)g(force)g(the)g(UNIX)g(shell)f(to)h(pass)f +(it)i(v)m(erbatim)f(to)g(the)g(application)0 1798 y(program.)0 +1958 y(If)24 b(the)i(output)e(disk)h(\014le)g(name)g(ends)f(with)g(the) +h(su\016x)f('.gz',)k(then)d(CFITSIO)e(will)i(compress)g(the)g(\014le)g +(using)g(the)0 2071 y(gzip)g(compression)f(algorithm)h(b)s(efore)f +(writing)g(it)h(to)g(disk.)38 b(This)23 b(can)i(reduce)f(the)g(amoun)m +(t)h(of)f(disk)g(space)h(used)0 2184 y(b)m(y)34 b(the)h(\014le.)53 +b(Note)36 b(that)f(this)g(feature)g(requires)f(that)h(the)f +(uncompressed)g(\014le)g(b)s(e)g(constructed)h(in)f(memory)0 +2297 y(b)s(efore)c(it)h(is)f(compressed)g(and)g(written)h(to)g(disk,)f +(so)g(it)h(can)g(fail)g(if)f(there)h(is)f(insu\016cien)m(t)h(a)m(v)-5 +b(ailable)33 b(memory)-8 b(.)0 2457 y(An)45 b(input)g(FITS)f(\014le)i +(ma)m(y)g(b)s(e)f(compressed)g(with)h(the)f(gzip)h(or)g(Unix)f +(compress)h(algorithms,)k(in)45 b(whic)m(h)0 2570 y(case)38 +b(CFITSIO)e(will)i(uncompress)e(the)i(\014le)g(on)f(the)h(\015y)e(in)m +(to)j(a)f(temp)s(orary)f(\014le)g(\(in)h(memory)f(or)g(on)h(disk\).)0 +2683 y(Compressed)32 b(\014les)i(ma)m(y)g(only)f(b)s(e)g(op)s(ened)f +(with)h(read-only)h(p)s(ermission.)49 b(When)33 b(sp)s(ecifying)g(the)h +(name)f(of)h(a)0 2796 y(compressed)h(FITS)g(\014le)h(it)g(is)g(not)g +(necessary)g(to)g(app)s(end)e(the)i(\014le)g(su\016x)e(\(e.g.,)39 +b(`.gz')e(or)f(`.Z'\).)g(If)f(CFITSIO)0 2908 y(cannot)24 +b(\014nd)e(the)h(input)f(\014le)i(name)f(without)g(the)g(su\016x,)h +(then)f(it)h(will)g(automatically)i(searc)m(h)e(for)f(a)g(compressed)0 +3021 y(\014le)36 b(with)f(the)h(same)g(ro)s(ot)g(name.)57 +b(In)35 b(the)h(case)h(of)f(reading)g(ftp)f(and)g(h)m(ttp)h(t)m(yp)s(e) +g(\014les,)h(CFITSIO)e(generally)0 3134 y(lo)s(oks)j(for)g(a)g +(compressed)g(v)m(ersion)g(of)g(the)g(\014le)g(\014rst,)h(b)s(efore)e +(trying)h(to)h(op)s(en)e(the)h(uncompressed)e(\014le.)64 +b(By)0 3247 y(default,)37 b(CFITSIO)e(copies)h(\(and)g(uncompressed)e +(if)i(necessary\))g(the)g(ftp)f(or)h(h)m(ttp)g(FITS)f(\014le)g(in)m(to) +i(memory)0 3360 y(on)f(the)g(lo)s(cal)h(mac)m(hine)f(b)s(efore)g(op)s +(ening)f(it.)58 b(This)35 b(will)h(fail)g(if)g(the)g(lo)s(cal)h(mac)m +(hine)g(do)s(es)e(not)h(ha)m(v)m(e)h(enough)0 3473 y(memory)g(to)h +(hold)f(the)g(whole)h(FITS)e(\014le,)k(so)d(in)g(this)g(case,)k(the)c +(output)g(\014lename)g(sp)s(eci\014er)g(\(see)h(the)g(next)0 +3586 y(section\))32 b(can)f(b)s(e)e(used)h(to)h(further)e(con)m(trol)j +(ho)m(w)e(CFITSIO)f(reads)h(ftp)g(and)g(h)m(ttp)g(\014les.)0 +3746 y(If)i(the)h(input)f(\014le)h(is)g(an)g(IRAF)g(image)h(\014le)f +(\(*.imh)g(\014le\))h(then)e(CFITSIO)f(will)j(automatically)h(con)m(v)m +(ert)g(it)e(on)0 3859 y(the)27 b(\015y)g(in)m(to)h(a)g(virtual)f(FITS)f +(image)j(b)s(efore)e(it)g(is)g(op)s(ened)g(b)m(y)g(the)g(application)i +(program.)39 b(IRAF)27 b(images)i(can)0 3972 y(only)h(b)s(e)g(op)s +(ened)g(with)g(READONL)-8 b(Y)31 b(\014le)f(access.)0 +4132 y(Similarly)-8 b(,)32 b(if)f(the)g(input)f(\014le)i(is)f(a)g(ra)m +(w)g(binary)f(data)i(arra)m(y)-8 b(,)33 b(then)d(CFITSIO)g(will)h(con)m +(v)m(ert)i(it)e(on)g(the)h(\015y)e(in)m(to)0 4245 y(a)38 +b(virtual)g(FITS)g(image)h(with)e(the)h(basic)h(set)f(of)g(required)f +(header)h(k)m(eyw)m(ords)g(b)s(efore)g(it)g(is)g(op)s(ened)f(b)m(y)h +(the)0 4358 y(application)32 b(program)f(\(with)g(READONL)-8 +b(Y)31 b(access\).)44 b(In)30 b(this)h(case)h(the)f(data)g(t)m(yp)s(e)g +(and)g(dimensions)f(of)h(the)0 4471 y(image)d(m)m(ust)f(b)s(e)f(sp)s +(eci\014ed)g(in)h(square)g(brac)m(k)m(ets)h(follo)m(wing)g(the)f +(\014lename)g(\(e.g.)41 b(ra)m(w\014le.dat[ib512,512]\).)j(The)0 +4584 y(\014rst)30 b(c)m(haracter)i(\(case)f(insensitiv)m(e\))h +(de\014nes)e(the)g(datat)m(yp)s(e)h(of)g(the)g(arra)m(y:)239 +4810 y Fe(b)429 b(8-bit)46 b(unsigned)g(byte)239 4923 +y(i)381 b(16-bit)46 b(signed)g(integer)239 5036 y(u)381 +b(16-bit)46 b(unsigned)g(integer)239 5149 y(j)381 b(32-bit)46 +b(signed)g(integer)239 5262 y(r)h(or)g(f)143 b(32-bit)46 +b(floating)g(point)239 5375 y(d)381 b(64-bit)46 b(floating)g(point)0 +5601 y Fi(An)40 b(optional)h(second)f(c)m(haracter)i(sp)s(eci\014es)e +(the)h(b)m(yte)f(order)g(of)g(the)h(arra)m(y)g(v)-5 b(alues:)60 +b(b)40 b(or)g(B)h(indicates)g(big)0 5714 y(endian)f(\(as)h(in)f(FITS)f +(\014les)i(and)f(the)g(nativ)m(e)i(format)e(of)h(SUN)f(UNIX)h(w)m +(orkstations)g(and)f(Mac)i(PCs\))e(and)p eop end +%%Page: 86 92 +TeXDict begin 86 91 bop 0 299 a Fi(86)1618 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fi(l)41 b(or)g(L)g(indicates)g(little)i(endian)e(\(nativ)m(e)h +(format)g(of)f(DEC)f(OSF)h(w)m(orkstations)h(and)e(IBM)i(PCs\).)72 +b(If)40 b(this)0 668 y(c)m(haracter)32 b(is)e(omitted)i(then)e(the)g +(arra)m(y)h(is)g(assumed)e(to)i(ha)m(v)m(e)h(the)f(nativ)m(e)g(b)m(yte) +g(order)f(of)h(the)f(lo)s(cal)i(mac)m(hine.)0 781 y(These)d(datat)m(yp) +s(e)h(c)m(haracters)h(are)e(then)g(follo)m(w)m(ed)i(b)m(y)e(a)h(series) +f(of)g(one)h(or)f(more)g(in)m(teger)i(v)-5 b(alues)29 +b(separated)h(b)m(y)0 894 y(commas)h(whic)m(h)g(de\014ne)e(the)i(size)h +(of)e(eac)m(h)i(dimension)e(of)h(the)g(ra)m(w)f(arra)m(y)-8 +b(.)43 b(Arra)m(ys)30 b(with)h(up)e(to)j(5)f(dimensions)0 +1007 y(are)f(curren)m(tly)g(supp)s(orted.)38 b(Finally)-8 +b(,)32 b(a)e(b)m(yte)g(o\013set)g(to)h(the)e(p)s(osition)h(of)g(the)g +(\014rst)e(pixel)i(in)g(the)f(data)i(\014le)e(ma)m(y)0 +1120 y(b)s(e)d(sp)s(eci\014ed)g(b)m(y)h(separating)h(it)f(with)g(a)g +(':')39 b(from)27 b(the)g(last)g(dimension)g(v)-5 b(alue.)40 +b(If)26 b(omitted,)j(it)e(is)g(assumed)f(that)0 1233 +y(the)35 b(o\013set)h(=)f(0.)54 b(This)35 b(parameter)g(ma)m(y)h(b)s(e) +e(used)g(to)i(skip)e(o)m(v)m(er)i(an)m(y)g(header)e(information)i(in)e +(the)h(\014le)g(that)0 1346 y(precedes)30 b(the)h(binary)f(data.)41 +b(F)-8 b(urther)30 b(examples:)95 1603 y Fe(raw.dat[b10000])521 +b(1-dimensional)45 b(10000)h(pixel)g(byte)h(array)95 +1715 y(raw.dat[rb400,400,12])233 b(3-dimensional)45 b(floating)g(point) +h(big-endian)f(array)95 1828 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 +1941 y(a)i(FITS)e(file,)h(skipping)e(over)i(the)g(2880)g(byte)f(header) +0 2198 y Fi(One)25 b(sp)s(ecial)g(case)h(of)f(input)f(\014le)h(is)g +(where)g(the)g(\014lename)g(=)g(`-')h(\(a)f(dash)g(or)g(min)m(us)f +(sign\))h(or)g('stdin')g(or)g('stdout',)0 2311 y(whic)m(h)d +(signi\014es)h(that)h(the)f(input)e(\014le)i(is)g(to)h(b)s(e)e(read)g +(from)h(the)g(stdin)f(stream,)j(or)e(written)f(to)i(the)f(stdout)g +(stream)0 2424 y(if)34 b(a)g(new)g(output)f(\014le)h(is)g(b)s(eing)g +(created.)52 b(In)33 b(the)h(case)h(of)f(reading)h(from)e(stdin,)h +(CFITSIO)f(\014rst)g(copies)i(the)0 2537 y(whole)g(stream)h(in)m(to)g +(a)f(temp)s(orary)g(FITS)f(\014le)i(\(in)f(memory)g(or)g(on)g(disk\),)h +(and)f(subsequen)m(t)f(reading)h(of)h(the)0 2650 y(FITS)c(\014le)h(o)s +(ccurs)g(in)f(this)h(cop)m(y)-8 b(.)49 b(When)33 b(writing)g(to)g +(stdout,)h(CFITSIO)d(\014rst)h(constructs)h(the)g(whole)g(\014le)g(in)0 +2763 y(memory)h(\(since)i(random)d(access)j(is)e(required\),)i(then)e +(\015ushes)f(it)i(out)g(to)g(the)f(stdout)h(stream)g(when)e(the)i +(\014le)0 2876 y(is)30 b(closed.)42 b(In)29 b(addition,)i(if)f(the)g +(output)g(\014lename)g(=)g('-.gz')i(or)e('stdout.gz')h(then)f(it)h +(will)f(b)s(e)g(gzip)g(compressed)0 2989 y(b)s(efore)g(b)s(eing)g +(written)g(to)h(stdout.)0 3149 y(This)25 b(abilit)m(y)j(to)e(read)g +(and)f(write)h(on)g(the)g(stdin)g(and)f(stdout)h(steams)g(allo)m(ws)i +(FITS)d(\014les)h(to)g(b)s(e)g(pip)s(ed)e(b)s(et)m(w)m(een)0 +3262 y(tasks)42 b(in)f(memory)g(rather)g(than)h(ha)m(ving)g(to)g +(create)h(temp)s(orary)e(in)m(termediate)i(FITS)d(\014les)i(on)f(disk.) +73 b(F)-8 b(or)0 3375 y(example)28 b(if)e(task1)i(creates)h(an)e +(output)f(FITS)g(\014le,)i(and)f(task2)g(reads)g(an)g(input)f(FITS)g +(\014le,)i(the)f(FITS)f(\014le)h(ma)m(y)0 3487 y(b)s(e)j(pip)s(ed)f(b)s +(et)m(w)m(een)i(the)f(2)h(tasks)g(b)m(y)f(sp)s(ecifying)143 +3744 y Fe(task1)47 b(-)g(|)g(task2)g(-)0 4001 y Fi(where)30 +b(the)h(v)m(ertical)i(bar)e(is)f(the)h(Unix)g(piping)f(sym)m(b)s(ol.)42 +b(This)30 b(assumes)g(that)i(the)f(2)g(tasks)g(read)g(the)g(name)g(of)0 +4114 y(the)g(FITS)e(\014le)i(o\013)f(of)h(the)g(command)f(line.)0 +4448 y Fd(8.4)135 b(Output)45 b(File)g(Name)h(when)f(Op)t(ening)g(an)g +(Existing)h(File)0 4698 y Fi(An)36 b(optional)i(output)e(\014lename)h +(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(in)g(paren)m(theses)h(immediately)h +(follo)m(wing)g(the)f(base)g(\014le)0 4811 y(name)28 +b(to)h(b)s(e)f(op)s(ened.)39 b(This)28 b(is)g(mainly)g(useful)g(in)g +(those)g(cases)i(where)d(CFITSIO)g(creates)j(a)e(temp)s(orary)g(cop)m +(y)0 4924 y(of)i(the)f(input)g(FITS)f(\014le)i(b)s(efore)f(it)h(is)f +(op)s(ened)g(and)f(passed)h(to)h(the)g(application)h(program.)40 +b(This)28 b(happ)s(ens)g(b)m(y)0 5036 y(default)i(when)g(op)s(ening)g +(a)g(net)m(w)m(ork)h(FTP)g(or)f(HTTP-t)m(yp)s(e)g(\014le,)h(when)e +(reading)h(a)h(compressed)f(FITS)g(\014le)g(on)0 5149 +y(a)36 b(lo)s(cal)h(disk,)g(when)e(reading)h(from)g(the)g(stdin)f +(stream,)j(or)d(when)g(a)i(column)e(\014lter,)j(ro)m(w)e(\014lter,)h +(or)f(binning)0 5262 y(sp)s(eci\014er)29 b(is)g(included)g(as)h(part)f +(of)g(the)h(input)f(\014le)g(sp)s(eci\014cation.)41 b(By)30 +b(default)g(this)f(temp)s(orary)g(\014le)g(is)h(created)0 +5375 y(in)g(memory)-8 b(.)41 b(If)29 b(there)h(is)g(not)g(enough)g +(memory)g(to)h(create)g(the)g(\014le)f(cop)m(y)-8 b(,)31 +b(then)f(CFITSIO)e(will)i(exit)h(with)f(an)0 5488 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)g(to)h(b)s(e)e(created)i(on)f(disk,)g(instead)h(of)f(a)g(temp)s +(orary)0 5601 y(\014le)38 b(in)f(memory)-8 b(,)40 b(b)m(y)d(supplying)f +(the)i(name)g(in)f(paren)m(theses)h(immediately)h(follo)m(wing)g(the)e +(base)h(\014le)g(name.)0 5714 y(The)30 b(output)g(\014lename)g(can)h +(include)f(the)h(')10 b(!')41 b(clobb)s(er)30 b(\015ag.)p +eop end +%%Page: 87 93 +TeXDict begin 87 92 bop 0 299 a Fg(8.4.)72 b(OUTPUT)30 +b(FILE)g(NAME)h(WHEN)g(OPENING)f(AN)h(EXISTING)e(FILE)967 +b Fi(87)0 555 y(Th)m(us,)48 b(if)d(the)g(input)f(\014lename)h(to)g +(CFITSIO)f(is:)70 b Fe(file1.fits.gz\(file2.fit)o(s\))39 +b Fi(then)44 b(CFITSIO)g(will)0 668 y(uncompress)39 b +(`\014le1.\014ts.gz')j(in)m(to)f(the)f(lo)s(cal)h(disk)e(\014le)h +(`\014le2.\014ts')h(b)s(efore)f(op)s(ening)f(it.)70 b(CFITSIO)38 +b(do)s(es)i(not)0 781 y(automatically)33 b(delete)f(the)e(output)g +(\014le,)h(so)g(it)g(will)f(still)i(exist)f(after)g(the)f(application)i +(program)e(exits.)0 941 y(In)35 b(some)i(cases,)h(sev)m(eral)f +(di\013eren)m(t)g(temp)s(orary)e(FITS)h(\014les)g(will)g(b)s(e)f +(created)i(in)f(sequence,)i(for)e(instance,)i(if)0 1054 +y(one)f(op)s(ens)g(a)g(remote)h(\014le)f(using)g(FTP)-8 +b(,)37 b(then)g(\014lters)g(ro)m(ws)g(in)g(a)h(binary)e(table)i +(extension,)i(then)c(create)j(an)0 1167 y(image)f(b)m(y)f(binning)f(a)h +(pair)g(of)g(columns.)60 b(In)36 b(this)h(case,)j(the)d(remote)h +(\014le)f(will)g(b)s(e)f(copied)h(to)h(a)f(temp)s(orary)0 +1280 y(lo)s(cal)j(\014le,)h(then)d(a)h(second)f(temp)s(orary)h(\014le)f +(will)h(b)s(e)f(created)i(con)m(taining)g(the)e(\014ltered)h(ro)m(ws)f +(of)h(the)g(table,)0 1393 y(and)c(\014nally)g(a)h(third)e(temp)s(orary) +h(\014le)h(con)m(taining)g(the)g(binned)e(image)i(will)g(b)s(e)f +(created.)57 b(In)34 b(cases)i(lik)m(e)h(this)0 1506 +y(where)28 b(m)m(ultiple)h(\014les)f(are)h(created,)h(the)e(out\014le)h +(sp)s(eci\014er)f(will)g(b)s(e)g(in)m(terpreted)h(the)f(name)g(of)h +(the)f(\014nal)g(\014le)h(as)0 1619 y(describ)s(ed)g(b)s(elo)m(w,)i(in) +f(descending)g(priorit)m(y:)136 1869 y Fc(\017)46 b Fi(as)29 +b(the)g(name)g(of)g(the)g(\014nal)f(image)i(\014le)f(if)f(an)h(image)h +(within)e(a)h(single)g(binary)f(table)i(cell)g(is)e(op)s(ened)g(or)h +(if)227 1982 y(an)i(image)g(is)g(created)g(b)m(y)f(binning)g(a)g(table) +i(column.)136 2167 y Fc(\017)46 b Fi(as)33 b(the)f(name)h(of)f(the)h +(\014le)f(con)m(taining)i(the)e(\014ltered)g(table)i(if)e(a)h(column)f +(\014lter)g(and/or)g(a)h(ro)m(w)f(\014lter)h(are)227 +2280 y(sp)s(eci\014ed.)136 2464 y Fc(\017)46 b Fi(as)31 +b(the)f(name)h(of)f(the)h(lo)s(cal)h(cop)m(y)f(of)f(the)h(remote)g(FTP) +f(or)h(HTTP)e(\014le.)136 2649 y Fc(\017)46 b Fi(as)31 +b(the)g(name)g(of)g(the)f(uncompressed)g(v)m(ersion)h(of)g(the)f(FITS)g +(\014le,)h(if)g(a)g(compressed)f(FITS)g(\014le)h(on)g(lo)s(cal)227 +2762 y(disk)f(has)g(b)s(een)g(op)s(ened.)136 2946 y Fc(\017)46 +b Fi(otherwise,)31 b(the)g(output)f(\014lename)g(is)h(ignored.)0 +3197 y(The)e(output)f(\014le)h(sp)s(eci\014er)g(is)g(useful)f(when)g +(reading)h(FTP)g(or)g(HTTP-t)m(yp)s(e)g(FITS)f(\014les)h(since)g(it)h +(can)f(b)s(e)g(used)0 3310 y(to)34 b(create)i(a)e(lo)s(cal)h(disk)e +(cop)m(y)i(of)f(the)g(\014le)f(that)i(can)f(b)s(e)f(reused)g(in)g(the)h +(future.)50 b(If)33 b(the)h(output)g(\014le)f(name)h(=)0 +3423 y(`*')i(then)e(a)i(lo)s(cal)g(\014le)f(with)g(the)g(same)g(name)g +(as)g(the)h(net)m(w)m(ork)f(\014le)g(will)h(b)s(e)e(created.)56 +b(Note)36 b(that)f(CFITSIO)0 3535 y(will)30 b(b)s(eha)m(v)m(e)g +(di\013eren)m(tly)h(dep)s(ending)d(on)i(whether)f(the)h(remote)g +(\014le)g(is)g(compressed)f(or)h(not)g(as)g(sho)m(wn)f(b)m(y)h(the)0 +3648 y(follo)m(wing)i(examples:)136 3876 y Fc(\017)46 +b Fi(`ftp://remote.mac)m(hine/tmp/m)m(y\014le.\014ts.gz\(*\)')k(-)43 +b(the)g(remote)h(compressed)f(\014le)g(is)g(copied)h(to)g(the)227 +3988 y(lo)s(cal)26 b(compressed)e(\014le)g(`m)m(y\014le.\014ts.gz',)k +(whic)m(h)c(is)g(then)h(uncompressed)e(in)h(lo)s(cal)h(memory)f(b)s +(efore)g(b)s(eing)227 4101 y(op)s(ened)30 b(and)g(passed)g(to)h(the)f +(application)i(program.)136 4286 y Fc(\017)46 b Fi(`ftp://remote.mac)m +(hine/tmp/m)m(y\014le.\014ts.gz\(m)m(y\014le.\014ts\)')d(-)37 +b(the)g(remote)g(compressed)f(\014le)h(is)f(copied)227 +4399 y(and)h(uncompressed)g(in)m(to)h(the)g(lo)s(cal)h(\014le)f(`m)m +(y\014le.\014ts'.)64 b(This)36 b(example)j(requires)e(less)h(lo)s(cal)h +(memory)227 4512 y(than)30 b(the)h(previous)f(example)h(since)g(the)f +(\014le)h(is)f(uncompressed)f(on)h(disk)g(instead)h(of)f(in)h(memory)-8 +b(.)136 4696 y Fc(\017)46 b Fi(`ftp://remote.mac)m(hine/tmp/m)m +(y\014le.\014ts\(m)m(y\014le.\014ts.gz\)')28 b(-)21 b(this)g(will)h +(usually)f(pro)s(duce)f(an)h(error)g(since)227 4809 y(CFITSIO)29 +b(itself)i(cannot)g(compress)f(\014les.)0 5036 y(The)36 +b(exact)i(b)s(eha)m(vior)e(of)h(CFITSIO)e(in)h(the)h(latter)g(case)h +(dep)s(ends)c(on)j(the)f(t)m(yp)s(e)h(of)g(ftp)f(serv)m(er)g(running)f +(on)0 5149 y(the)c(remote)g(mac)m(hine)g(and)f(ho)m(w)g(it)h(is)f +(con\014gured.)40 b(In)30 b(some)h(cases,)g(if)f(the)h(\014le)f(`m)m +(y\014le.\014ts.gz')j(exists)e(on)f(the)0 5262 y(remote)38 +b(mac)m(hine,)h(then)e(the)g(serv)m(er)g(will)h(cop)m(y)f(it)h(to)f +(the)h(lo)s(cal)g(mac)m(hine.)61 b(In)36 b(other)h(cases)h(the)f(ftp)g +(serv)m(er)0 5375 y(will)f(automatically)j(create)e(and)f(transmit)g(a) +g(compressed)g(v)m(ersion)g(of)g(the)g(\014le)g(if)g(only)g(the)g +(uncompressed)0 5488 y(v)m(ersion)27 b(exists.)41 b(This)26 +b(can)h(get)h(rather)f(confusing,)h(so)f(users)f(should)g(use)h(a)g +(certain)h(amoun)m(t)g(of)f(caution)h(when)0 5601 y(using)34 +b(the)h(output)f(\014le)h(sp)s(eci\014er)f(with)h(FTP)f(or)h(HTTP)f +(\014le)h(t)m(yp)s(es,)h(to)f(mak)m(e)h(sure)e(they)h(get)h(the)f(b)s +(eha)m(vior)0 5714 y(that)c(they)g(exp)s(ect.)p eop end +%%Page: 88 94 +TeXDict begin 88 93 bop 0 299 a Fi(88)1618 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fd(8.5)135 b(T)-11 b(emplate)46 b(File)g(Name)f(when)g(Creating)h +(a)g(New)f(File)0 808 y Fi(When)38 b(a)h(new)f(FITS)g(\014le)h(is)g +(created)g(with)g(a)f(call)i(to)g(\014ts)p 2101 808 28 +4 v 32 w(create)p 2369 808 V 35 w(\014le,)g(the)f(name)g(of)g(a)g +(template)h(\014le)e(ma)m(y)0 921 y(b)s(e)h(supplied)g(in)h(paren)m +(theses)g(immediately)h(follo)m(wing)g(the)g(name)f(of)g(the)g(new)f +(\014le)h(to)h(b)s(e)e(created.)71 b(This)0 1034 y(template)27 +b(is)e(used)g(to)h(de\014ne)f(the)h(structure)f(of)h(one)f(or)h(more)g +(HDUs)g(in)f(the)h(new)f(\014le.)39 b(The)25 b(template)i(\014le)e(ma)m +(y)0 1147 y(b)s(e)32 b(another)h(FITS)f(\014le,)i(in)f(whic)m(h)f(case) +i(the)f(newly)g(created)h(\014le)f(will)g(ha)m(v)m(e)h(exactly)h(the)e +(same)g(k)m(eyw)m(ords)g(in)0 1260 y(eac)m(h)25 b(HDU)g(as)g(in)f(the)g +(template)i(FITS)d(\014le,)j(but)d(all)j(the)e(data)h(units)e(will)i(b) +s(e)f(\014lled)g(with)f(zeros.)40 b(The)24 b(template)0 +1373 y(\014le)i(ma)m(y)h(also)g(b)s(e)e(an)h(ASCI)s(I)e(text)j(\014le,) +g(where)f(eac)m(h)h(line)f(\(in)g(general\))i(describ)s(es)d(one)h +(FITS)f(k)m(eyw)m(ord)i(record.)0 1486 y(The)j(format)h(of)f(the)h +(ASCI)s(I)e(template)i(\014le)g(is)f(describ)s(ed)f(b)s(elo)m(w.)0 +1833 y Fd(8.6)135 b(Image)46 b(Tile-Compression)h(Sp)t(eci\014cation)0 +2086 y Fi(When)28 b(sp)s(ecifying)g(the)h(name)g(of)f(the)h(output)f +(FITS)g(\014le)g(to)h(b)s(e)f(created,)i(the)f(user)f(can)g(indicate)i +(that)f(images)0 2198 y(should)d(b)s(e)h(written)g(in)g +(tile-compressed)h(format)g(\(see)g(section)g(5.5,)h(\\Primary)e(Arra)m +(y)h(or)f(IMA)m(GE)h(Extension)0 2311 y(I/O)f(Routines"\))i(b)m(y)e +(enclosing)h(the)g(compression)f(parameters)h(in)f(square)g(brac)m(k)m +(ets)i(follo)m(wing)g(the)f(ro)s(ot)f(disk)0 2424 y(\014le)j(name.)41 +b(Here)31 b(are)g(some)g(examples)g(of)f(the)h(syn)m(tax)g(for)f(sp)s +(ecifying)g(tile-compressed)i(output)e(images:)191 2695 +y Fe(myfile.fit[compress])185 b(-)48 b(use)f(Rice)f(algorithm)g(and)h +(default)e(tile)i(size)191 2921 y(myfile.fit[compress)42 +b(GZIP])47 b(-)g(use)g(the)g(specified)e(compression)g(algorithm;)191 +3034 y(myfile.fit[compress)d(Rice])238 b(only)46 b(the)h(first)g +(letter)f(of)h(the)g(algorithm)191 3147 y(myfile.fit[compress)42 +b(PLIO])238 b(name)46 b(is)i(required.)191 3373 y(myfile.fit[compress) +42 b(Rice)47 b(100,100])141 b(-)48 b(use)e(100)h(x)h(100)f(pixel)f +(tile)h(size)191 3486 y(myfile.fit[compress)42 b(Rice)47 +b(100,100;2])e(-)j(as)f(above,)f(and)h(use)g(noisebits)e(=)i(2)0 +3833 y Fd(8.7)135 b(HDU)46 b(Lo)t(cation)f(Sp)t(eci\014cation)0 +4086 y Fi(The)c(optional)h(HDU)h(lo)s(cation)g(sp)s(eci\014er)d +(de\014nes)h(whic)m(h)g(HDU)h(\(Header-Data)i(Unit,)h(also)d(kno)m(wn)f +(as)h(an)0 4199 y(`extension'\))36 b(within)d(the)i(FITS)e(\014le)h(to) +h(initially)h(op)s(en.)51 b(It)34 b(m)m(ust)g(immediately)i(follo)m(w)f +(the)f(base)h(\014le)f(name)0 4312 y(\(or)g(the)g(output)g(\014le)g +(name)f(if)h(presen)m(t\).)52 b(If)33 b(it)h(is)g(not)g(sp)s(eci\014ed) +g(then)f(the)h(\014rst)f(HDU)i(\(the)f(primary)f(arra)m(y\))0 +4425 y(is)g(op)s(ened.)46 b(The)32 b(HDU)h(lo)s(cation)h(sp)s +(eci\014er)e(is)h(required)f(if)g(the)h(colFilter,)i(ro)m(wFilter,)g +(or)e(binSp)s(ec)e(sp)s(eci\014ers)0 4538 y(are)f(presen)m(t,)f(b)s +(ecause)h(the)f(primary)f(arra)m(y)i(is)f(not)h(a)f(v)-5 +b(alid)30 b(HDU)g(for)f(these)g(op)s(erations.)41 b(The)29 +b(HDU)h(ma)m(y)g(b)s(e)0 4650 y(sp)s(eci\014ed)e(either)i(b)m(y)e +(absolute)i(p)s(osition)f(n)m(um)m(b)s(er,)f(starting)i(with)e(0)i(for) +e(the)h(primary)f(arra)m(y)-8 b(,)31 b(or)e(b)m(y)f(reference)0 +4763 y(to)h(the)g(HDU)g(name,)g(and)f(optionally)-8 b(,)31 +b(the)e(v)m(ersion)g(n)m(um)m(b)s(er)e(and)h(the)h(HDU)g(t)m(yp)s(e)g +(of)f(the)h(desired)f(extension.)0 4876 y(The)k(lo)s(cation)h(of)f(an)g +(image)i(within)d(a)i(single)f(cell)i(of)e(a)g(binary)g(table)h(ma)m(y) +f(also)h(b)s(e)f(sp)s(eci\014ed,)g(as)g(describ)s(ed)0 +4989 y(b)s(elo)m(w.)0 5149 y(The)26 b(absolute)h(p)s(osition)f(of)g +(the)h(extension)g(is)f(sp)s(eci\014ed)f(either)i(b)m(y)f(enclosed)h +(the)g(n)m(um)m(b)s(er)e(in)h(square)f(brac)m(k)m(ets)0 +5262 y(\(e.g.,)k(`[1]')g(=)d(the)h(\014rst)f(extension)h(follo)m(wing)i +(the)e(primary)e(arra)m(y\))j(or)f(b)m(y)f(preceded)h(the)g(n)m(um)m(b) +s(er)e(with)i(a)g(plus)0 5375 y(sign)37 b(\(`+1'\).)63 +b(T)-8 b(o)38 b(sp)s(ecify)f(the)g(HDU)h(b)m(y)g(name,)h(giv)m(e)g(the) +e(name)h(of)f(the)h(desired)f(HDU)h(\(the)f(v)-5 b(alue)38 +b(of)g(the)0 5488 y(EXTNAME)e(or)g(HDUNAME)h(k)m(eyw)m(ord\))g(and)f +(optionally)h(the)f(extension)h(v)m(ersion)f(n)m(um)m(b)s(er)f(\(v)-5 +b(alue)37 b(of)f(the)0 5601 y(EXTVER)27 b(k)m(eyw)m(ord\))i(and)e(the)h +(extension)h(t)m(yp)s(e)e(\(v)-5 b(alue)29 b(of)f(the)g(XTENSION)f(k)m +(eyw)m(ord:)40 b(IMA)m(GE,)29 b(ASCI)s(I)d(or)0 5714 +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)i(enclosed)g(in)f(square)g(brac)m(k)m(ets.)56 +b(If)34 b(the)h(v)-5 b(alue)p eop end +%%Page: 89 95 +TeXDict begin 89 94 bop 0 299 a Fg(8.8.)72 b(IMA)m(GE)31 +b(SECTION)2835 b Fi(89)0 555 y(of)34 b(EXTVER)f(and)f(XTENSION)h(are)h +(not)f(sp)s(eci\014ed,)h(then)f(the)h(\014rst)e(extension)j(with)e(the) +g(correct)i(v)-5 b(alue)34 b(of)0 668 y(EXTNAME)39 b(is)g(op)s(ened.)67 +b(The)38 b(extension)i(name)f(and)f(t)m(yp)s(e)i(are)f(not)h(case)g +(sensitiv)m(e,)j(and)38 b(the)h(extension)0 781 y(t)m(yp)s(e)29 +b(ma)m(y)g(b)s(e)f(abbreviated)h(to)g(a)g(single)g(letter)h(\(e.g.,)h +(I)d(=)g(IMA)m(GE)i(extension)f(or)f(primary)g(arra)m(y)-8 +b(,)30 b(A)f(or)f(T)g(=)0 894 y(ASCI)s(I)d(table)i(extension,)h(and)e +(B)h(=)f(binary)g(table)h(BINT)-8 b(ABLE)27 b(extension\).)41 +b(If)26 b(the)g(HDU)h(lo)s(cation)i(sp)s(eci\014er)0 +1007 y(is)h(equal)h(to)g(`[PRIMAR)-8 b(Y]')32 b(or)f(`[P]',)g(then)f +(the)h(primary)e(arra)m(y)i(\(the)g(\014rst)f(HDU\))h(will)g(b)s(e)f +(op)s(ened.)0 1167 y(FITS)k(images)i(are)f(most)h(commonly)f(stored)g +(in)g(the)g(primary)f(arra)m(y)h(or)g(an)g(image)h(extension,)h(but)d +(images)0 1280 y(can)d(also)h(b)s(e)e(stored)h(as)h(a)f(v)m(ector)h(in) +f(a)g(single)h(cell)g(of)f(a)h(binary)e(table)i(\(i.e.)43 +b(eac)m(h)32 b(ro)m(w)f(of)g(the)h(v)m(ector)g(column)0 +1393 y(con)m(tains)d(a)g(di\013eren)m(t)f(image\).)42 +b(Suc)m(h)27 b(an)h(image)i(can)e(b)s(e)g(op)s(ened)f(with)h(CFITSIO)e +(b)m(y)i(sp)s(ecifying)g(the)g(desired)0 1506 y(column)k(name)g(and)f +(the)h(ro)m(w)g(n)m(um)m(b)s(er)f(after)h(the)g(binary)f(table)i(HDU)g +(sp)s(eci\014er)e(as)h(sho)m(wn)g(in)f(the)h(follo)m(wing)0 +1619 y(examples.)71 b(The)40 b(column)g(name)h(is)f(separated)h(from)f +(the)h(HDU)g(sp)s(eci\014er)f(b)m(y)g(a)h(semicolon)g(and)f(the)h(ro)m +(w)0 1732 y(n)m(um)m(b)s(er)29 b(is)h(enclosed)h(in)e(paren)m(theses.) +41 b(In)30 b(this)g(case)h(CFITSIO)d(copies)j(the)f(image)i(from)d(the) +i(table)g(cell)g(in)m(to)0 1844 y(a)h(temp)s(orary)e(primary)h(arra)m +(y)g(b)s(efore)g(it)h(is)f(op)s(ened.)43 b(The)30 b(application)j +(program)e(then)g(just)g(sees)g(the)h(image)0 1957 y(in)i(the)h +(primary)e(arra)m(y)-8 b(,)37 b(without)d(an)m(y)h(extensions.)53 +b(The)34 b(particular)g(ro)m(w)h(to)g(b)s(e)e(op)s(ened)h(ma)m(y)h(b)s +(e)f(sp)s(eci\014ed)0 2070 y(either)28 b(b)m(y)f(giving)h(an)f +(absolute)h(in)m(teger)h(ro)m(w)f(n)m(um)m(b)s(er)e(\(starting)i(with)f +(1)h(for)f(the)g(\014rst)g(ro)m(w\),)i(or)e(b)m(y)g(sp)s(ecifying)0 +2183 y(a)33 b(b)s(o)s(olean)f(expression)g(that)h(ev)-5 +b(aluates)34 b(to)f(TR)m(UE)g(for)f(the)g(desired)g(ro)m(w.)47 +b(The)32 b(\014rst)f(ro)m(w)i(that)g(satis\014es)g(the)0 +2296 y(expression)28 b(will)g(b)s(e)g(used.)39 b(The)28 +b(ro)m(w)g(selection)i(expression)e(has)g(the)g(same)g(syn)m(tax)h(as)f +(describ)s(ed)f(in)h(the)g(Ro)m(w)0 2409 y(Filter)k(Sp)s(eci\014er)d +(section,)j(b)s(elo)m(w.)0 2569 y(Examples:)143 2811 +y Fe(myfile.fits[3])44 b(-)k(open)e(the)h(3rd)g(HDU)g(following)e(the)i +(primary)f(array)143 2924 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 +3037 y(myfile.fits[EVENTS])f(-)k(open)g(the)g(extension)e(that)i(has)g +(EXTNAME)e(=)j('EVENTS')143 3150 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 3263 y(myfile.fits[events,2,b])42 b(-)47 b(same,)f(but)h +(also)g(requires)f(XTENSION)f(=)j('BINTABLE')143 3376 +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 3489 y(column)f(in)i(the)e(3rd)h +(extension)f(of)h(the)g(file.)143 3602 y(myfile.fits[3;)d +(images\(exposure)g(>)j(100\)])g(-)g(as)g(above,)f(but)h(opens)g(the)f +(image)907 3714 y(in)h(the)g(first)f(row)h(that)g(has)g(an)g +('exposure')e(column)h(value)907 3827 y(greater)g(than)g(100.)0 +4158 y Fd(8.8)135 b(Image)46 b(Section)0 4408 y Fi(A)41 +b(virtual)g(\014le)f(con)m(taining)i(a)f(rectangular)h(subsection)e(of) +h(an)g(image)g(can)g(b)s(e)f(extracted)i(and)e(op)s(ened)g(b)m(y)0 +4521 y(sp)s(ecifying)32 b(the)h(range)g(of)g(pixels)g(\(start:end\))g +(along)h(eac)m(h)g(axis)f(to)g(b)s(e)f(extracted)i(from)e(the)h +(original)g(image.)0 4634 y(One)d(can)h(also)h(sp)s(ecify)e(an)h +(optional)h(pixel)f(incremen)m(t)g(\(start:end:step\))h(for)f(eac)m(h)h +(axis)f(of)g(the)g(input)e(image.)0 4747 y(A)f(pixel)f(step)h(=)f(1)h +(will)g(b)s(e)f(assumed)f(if)i(it)g(is)f(not)h(sp)s(eci\014ed.)39 +b(If)27 b(the)h(start)g(pixel)g(is)f(larger)i(then)e(the)h(end)e +(pixel,)0 4860 y(then)32 b(the)g(image)h(will)f(b)s(e)f(\015ipp)s(ed)f +(\(pro)s(ducing)h(a)h(mirror)g(image\))h(along)g(that)f(dimension.)45 +b(An)32 b(asterisk,)h('*',)0 4973 y(ma)m(y)39 b(b)s(e)e(used)h(to)h(sp) +s(ecify)f(the)g(en)m(tire)h(range)g(of)f(an)h(axis,)i(and)c('-*')j +(will)e(\015ip)g(the)g(en)m(tire)h(axis.)65 b(The)38 +b(input)0 5086 y(image)31 b(can)f(b)s(e)f(in)g(the)h(primary)f(arra)m +(y)-8 b(,)31 b(in)e(an)g(image)i(extension,)g(or)f(con)m(tained)g(in)g +(a)g(v)m(ector)h(cell)g(of)f(a)g(binary)0 5199 y(table.)40 +b(In)25 b(the)h(later)h(2)f(cases)h(the)f(extension)h(name)f(or)f(n)m +(um)m(b)s(er)g(m)m(ust)h(b)s(e)f(sp)s(eci\014ed)g(b)s(efore)h(the)g +(image)h(section)0 5312 y(sp)s(eci\014er.)0 5472 y(Examples:)95 +5714 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)p eop end +%%Page: 90 96 +TeXDict begin 90 95 bop 0 299 a Fi(90)1618 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)668 +555 y Fe(consisting)45 b(of)i(the)g(odd)g(numbered)f(columns)g(\(1st)g +(axis\))h(and)668 668 y(the)g(even)g(numbered)e(rows)i(\(2nd)g(axis\))f +(of)h(the)g(image)f(in)i(the)668 781 y(primary)e(array)g(of)i(the)e +(file.)95 1007 y(myfile.fits[*,)e(512:256])i(-)h(open)g(an)g(image)g +(consisting)e(of)i(all)g(the)g(columns)668 1120 y(in)g(the)g(input)g +(image,)f(but)h(only)f(rows)h(256)g(through)f(512.)668 +1233 y(The)h(image)f(will)h(be)g(flipped)f(along)g(the)h(2nd)g(axis)g +(since)668 1346 y(the)g(starting)f(pixel)g(is)h(greater)f(than)h(the)g +(ending)f(pixel.)95 1571 y(myfile.fits[*:2,)e(512:256:2])h(-)i(same)g +(as)g(above)f(but)h(keeping)f(only)668 1684 y(every)h(other)f(row)h +(and)g(column)f(in)h(the)g(input)f(image.)95 1910 y(myfile.fits[-*,)e +(*])j(-)h(copy)e(the)h(entire)f(image,)g(flipping)g(it)h(along)668 +2023 y(the)g(first)f(axis.)95 2249 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 +2362 y(is)g(in)h(the)e(3rd)h(extension)f(of)h(the)g(file.)95 +2588 y(myfile.fits[4;)d(images\(12\)][1:10,1:10])e(-)48 +b(open)e(an)h(image)g(consisting)286 2700 y(of)h(the)e(first)h(10)g +(pixels)f(in)h(both)g(dimensions.)e(The)i(original)286 +2813 y(image)g(resides)f(in)h(the)g(12th)f(row)h(of)g(the)g('images')f +(vector)286 2926 y(column)g(in)i(the)f(table)f(in)h(the)g(4th)g +(extension)e(of)i(the)g(file.)0 3203 y Fi(When)23 b(CFITSIO)f(op)s(ens) +h(an)g(image)h(section)h(it)f(\014rst)f(creates)h(a)g(temp)s(orary)f +(\014le)h(con)m(taining)h(the)e(image)i(section)0 3315 +y(plus)32 b(a)i(cop)m(y)g(of)g(an)m(y)g(other)f(HDUs)h(in)f(the)h +(\014le.)50 b(This)32 b(temp)s(orary)h(\014le)h(is)f(then)g(op)s(ened)g +(b)m(y)g(the)h(application)0 3428 y(program,)28 b(so)g(it)g(is)f(not)h +(p)s(ossible)f(to)h(write)g(to)g(or)g(mo)s(dify)f(the)g(input)g(\014le) +g(when)g(sp)s(ecifying)g(an)h(image)h(section.)0 3541 +y(Note)39 b(that)f(CFITSIO)e(automatically)k(up)s(dates)d(the)g(w)m +(orld)h(co)s(ordinate)g(system)g(k)m(eyw)m(ords)f(in)g(the)h(header)0 +3654 y(of)33 b(the)h(image)g(section,)h(if)e(they)h(exist,)h(so)e(that) +h(the)f(co)s(ordinate)h(asso)s(ciated)h(with)e(eac)m(h)h(pixel)f(in)g +(the)h(image)0 3767 y(section)e(will)e(b)s(e)g(computed)g(correctly)-8 +b(.)0 4120 y Fd(8.9)135 b(Image)46 b(T)-11 b(ransform)45 +b(Filters)0 4374 y Fi(CFITSIO)33 b(can)h(apply)g(a)h(user-sp)s +(eci\014ed)e(mathematical)j(function)e(to)h(the)g(v)-5 +b(alue)34 b(of)h(ev)m(ery)g(pixel)f(in)g(a)h(FITS)0 4487 +y(image,)29 b(th)m(us)e(creating)h(a)g(new)e(virtual)h(image)i(in)d +(computer)h(memory)g(that)h(is)f(then)f(op)s(ened)h(and)f(read)h(b)m(y) +g(the)0 4600 y(application)32 b(program.)40 b(The)30 +b(original)i(FITS)d(image)j(is)e(not)h(mo)s(di\014ed)e(b)m(y)h(this)h +(pro)s(cess.)0 4760 y(The)20 b(image)j(transformation)e(sp)s(eci\014er) +f(is)h(app)s(ended)e(to)j(the)f(input)f(FITS)h(\014le)g(name)g(and)f +(is)h(enclosed)h(in)e(square)0 4873 y(brac)m(k)m(ets.)42 +b(It)29 b(b)s(egins)f(with)h(the)g(letters)i('PIX')e(to)h(distinguish)e +(it)i(from)e(other)i(t)m(yp)s(es)f(of)g(FITS)f(\014le)h(\014lters)g +(that)0 4986 y(are)36 b(recognized)i(b)m(y)e(CFITSIO.)e(The)i(image)h +(transforming)f(function)f(ma)m(y)i(use)f(an)m(y)g(of)g(the)h +(mathematical)0 5099 y(op)s(erators)44 b(listed)h(in)f(the)h(follo)m +(wing)h('Ro)m(w)f(Filtering)g(Sp)s(eci\014cation')g(section)h(of)e +(this)h(do)s(cumen)m(t.)82 b(Some)0 5212 y(examples)31 +b(of)f(image)i(transform)e(\014lters)g(are:)48 5488 y +Fe([pix)46 b(X)i(*)f(2.0])715 b(-)48 b(multiply)d(each)i(pixel)f(by)h +(2.0)48 5601 y([pix)f(sqrt\(X\)])714 b(-)48 b(take)e(the)h(square)f +(root)h(of)g(each)g(pixel)48 5714 y([pix)f(X)i(+)f(#ZEROPT)571 +b(-)48 b(add)e(the)h(value)g(of)g(the)g(ZEROPT)f(keyword)p +eop end +%%Page: 91 97 +TeXDict begin 91 96 bop 0 299 a Fg(8.9.)72 b(IMA)m(GE)31 +b(TRANSF)m(ORM)g(FIL)-8 b(TERS)2237 b Fi(91)48 555 y +Fe([pix)46 b(X>0)h(?)h(log10\(X\))d(:)j(-99.])e(-)i(if)f(the)g(pixel)f +(value)g(is)i(greater)1480 668 y(than)e(0,)h(compute)f(the)h(base)g(10) +g(log,)1480 781 y(else)f(set)h(the)g(pixel)f(=)i(-99.)0 +1013 y Fi(Use)24 b(the)g(letter)h('X')f(in)f(the)h(expression)g(to)g +(represen)m(t)g(the)g(curren)m(t)f(pixel)h(v)-5 b(alue)24 +b(in)f(the)h(image.)40 b(The)23 b(expression)0 1126 y(is)38 +b(ev)-5 b(aluated)39 b(indep)s(enden)m(tly)e(for)g(eac)m(h)i(pixel)f +(in)g(the)g(image)h(and)e(ma)m(y)h(b)s(e)g(a)g(function)f(of)h(1\))h +(the)f(original)0 1239 y(pixel)32 b(v)-5 b(alue,)32 b(2\))g(the)f(v)-5 +b(alue)32 b(of)f(other)h(pixels)f(in)g(the)g(image)i(at)f(a)f(giv)m(en) +i(relativ)m(e)g(o\013set)f(from)f(the)g(p)s(osition)h(of)0 +1352 y(the)d(pixel)f(that)h(is)g(b)s(eing)f(ev)-5 b(aluated,)30 +b(and)e(3\))h(the)g(v)-5 b(alue)29 b(of)f(an)m(y)h(header)f(k)m(eyw)m +(ords.)41 b(Header)29 b(k)m(eyw)m(ord)g(v)-5 b(alues)0 +1465 y(are)31 b(represen)m(ted)f(b)m(y)g(the)h(name)f(of)h(the)f(k)m +(eyw)m(ord)h(preceded)f(b)m(y)h(the)f('#')h(sign.)0 1625 +y(T)-8 b(o)35 b(access)h(the)f(the)g(v)-5 b(alue)35 b(of)g(adjacen)m(t) +h(pixels)f(in)f(the)h(image,)i(sp)s(ecify)e(the)g(\(1-D\))h(o\013set)g +(from)e(the)h(curren)m(t)0 1738 y(pixel)c(in)f(curly)g(brac)m(k)m(ets.) +42 b(F)-8 b(or)31 b(example)48 1970 y Fe([pix)94 b(\(x{-1})46 +b(+)i(x)f(+)h(x{+1}\))e(/)h(3])0 2202 y Fi(will)25 b(replace)g(eac)m(h) +h(pixel)f(v)-5 b(alue)25 b(with)f(the)h(running)e(mean)i(of)f(the)h(v) +-5 b(alues)25 b(of)g(that)g(pixel)g(and)f(it's)h(2)g(neigh)m(b)s(oring) +0 2314 y(pixels.)40 b(Note)30 b(that)g(in)e(this)g(notation)i(the)f +(image)h(is)f(treated)g(as)g(a)g(1-D)h(arra)m(y)-8 b(,)30 +b(where)e(eac)m(h)i(ro)m(w)f(of)g(the)g(image)0 2427 +y(\(or)c(higher)f(dimensional)g(cub)s(e\))h(is)f(app)s(ended)f(one)h +(after)h(another)g(in)f(one)h(long)g(arra)m(y)g(of)f(pixels.)39 +b(It)25 b(is)f(p)s(ossible)0 2540 y(to)35 b(refer)f(to)h(pixels)f(in)g +(the)g(ro)m(ws)g(ab)s(o)m(v)m(e)h(or)g(b)s(elo)m(w)f(the)g(curren)m(t)g +(pixel)h(b)m(y)f(using)f(the)h(v)-5 b(alue)35 b(of)f(the)h(NAXIS1)0 +2653 y(header)30 b(k)m(eyw)m(ord.)41 b(F)-8 b(or)32 b(example)48 +2885 y Fe([pix)46 b(\(x{-#NAXIS1})f(+)i(x)h(+)f(x{#NAXIS1}\))e(/)i(3])0 +3117 y Fi(will)34 b(compute)f(the)h(mean)f(of)g(eac)m(h)i(image)f +(pixel)g(and)e(the)i(pixels)f(immediately)i(ab)s(o)m(v)m(e)f(and)f(b)s +(elo)m(w)g(it)h(in)f(the)0 3230 y(adjacen)m(t)27 b(ro)m(ws)f(of)g(the)f +(image.)41 b(The)25 b(follo)m(wing)i(more)f(complex)h(example)f +(creates)h(a)f(smo)s(othed)g(virtual)g(image)0 3343 y(where)k(eac)m(h)h +(pixel)g(is)g(a)f(3)h(x)f(3)h(b)s(o)m(xcar)g(a)m(v)m(erage)i(of)d(the)h +(input)e(image)j(pixels:)95 3575 y Fe([pix)47 b(\(X)g(+)h(X{-1})e(+)i +(X{+1})286 3688 y(+)g(X{-#NAXIS1})d(+)i(X{-#NAXIS1)e(-)i(1})h(+)f +(X{-#NAXIS1)e(+)j(1})286 3801 y(+)g(X{#NAXIS1})d(+)i(X{#NAXIS1)f(-)h +(1})g(+)h(X{#NAXIS1)d(+)i(1}\))g(/)h(9.])0 4033 y Fi(If)31 +b(the)h(pixel)g(o\013set)h(extends)f(b)s(ey)m(ond)f(the)h(\014rst)f(or) +h(last)h(pixel)f(in)f(the)h(image,)i(the)e(function)g(will)g(ev)-5 +b(aluate)33 b(to)0 4145 y(unde\014ned,)28 b(or)j(NULL.)0 +4306 y(F)-8 b(or)39 b(complex)g(or)g(commonly)g(used)e(image)j +(\014ltering)f(op)s(erations,)i(one)d(can)h(write)g(the)f(expression)h +(in)m(to)g(an)0 4419 y(external)i(text)h(\014le)f(and)f(then)g(imp)s +(ort)g(it)h(in)m(to)h(the)e(\014lter)h(using)f(the)h(syn)m(tax)g('[pix) +g(@\014lename.txt]'.)72 b(The)0 4531 y(mathematical)29 +b(expression)e(can)g(extend)g(o)m(v)m(er)i(m)m(ultiple)e(lines)g(of)h +(text)g(in)e(the)h(\014le.)40 b(An)m(y)27 b(lines)g(in)g(the)g +(external)0 4644 y(text)h(\014le)e(that)i(b)s(egin)e(with)g(2)h(slash)f +(c)m(haracters)i(\('//'\))h(will)e(b)s(e)f(ignored)h(and)f(ma)m(y)h(b)s +(e)f(used)g(to)h(add)f(commen)m(ts)0 4757 y(in)m(to)31 +b(the)g(\014le.)0 4917 y(By)c(default,)g(the)f(datat)m(yp)s(e)i(of)e +(the)g(resulting)h(image)g(will)g(b)s(e)e(the)i(same)f(as)h(the)f +(original)i(image,)g(but)e(one)g(ma)m(y)0 5030 y(force)31 +b(a)g(di\013eren)m(t)g(datat)m(yp)s(e)g(b)m(y)f(app)s(ended)f(a)h(co)s +(de)h(letter)h(to)f(the)f('pix')h(k)m(eyw)m(ord:)286 +5262 y Fe(pixb)95 b(-)g(8-bit)46 b(byte)190 b(image)46 +b(with)h(BITPIX)f(=)143 b(8)286 5375 y(pixi)95 b(-)47 +b(16-bit)f(integer)g(image)g(with)h(BITPIX)f(=)95 b(16)286 +5488 y(pixj)g(-)47 b(32-bit)f(integer)g(image)g(with)h(BITPIX)f(=)95 +b(32)286 5601 y(pixr)g(-)47 b(32-bit)f(float)142 b(image)46 +b(with)h(BITPIX)f(=)i(-32)286 5714 y(pixd)95 b(-)47 b(64-bit)f(float) +142 b(image)46 b(with)h(BITPIX)f(=)i(-64)p eop end +%%Page: 92 98 +TeXDict begin 92 97 bop 0 299 a Fi(92)1618 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fi(Also)23 b(b)m(y)f(default,)j(an)m(y)d(other)h(HDUs)g(in)f(the) +g(input)g(\014le)g(will)h(b)s(e)e(copied)i(without)g(c)m(hange)g(to)g +(the)g(output)f(virtual)0 668 y(FITS)k(\014le,)h(but)f(one)g(ma)m(y)h +(discard)f(the)h(other)f(HDUs)h(b)m(y)f(adding)g(the)h(n)m(um)m(b)s(er) +e('1')i(to)g(the)g('pix')f(k)m(eyw)m(ord)h(\(and)0 781 +y(follo)m(wing)32 b(an)m(y)f(optional)g(datat)m(yp)s(e)g(co)s(de)g +(letter\).)42 b(F)-8 b(or)32 b(example:)239 1044 y Fe +(myfile.fits[3][pixr1)90 b(sqrt\(X\)])0 1307 y Fi(will)23 +b(create)i(a)e(virtual)g(FITS)f(\014le)h(con)m(taining)h(only)f(a)g +(primary)f(arra)m(y)i(image)g(with)e(32-bit)i(\015oating)g(p)s(oin)m(t) +f(pixels)0 1420 y(that)29 b(ha)m(v)m(e)h(a)f(v)-5 b(alue)30 +b(equal)f(to)g(the)g(square)g(ro)s(ot)g(of)g(the)g(pixels)f(in)h(the)g +(image)h(that)f(is)g(in)f(the)h(3rd)f(extension)i(of)0 +1533 y(the)h('m)m(y\014le.\014ts')g(\014le.)0 1870 y +Fd(8.10)136 b(Column)45 b(and)f(Keyw)l(ord)i(Filtering)g(Sp)t +(eci\014cation)0 2121 y Fi(The)27 b(optional)i(column/k)m(eyw)m(ord)g +(\014ltering)f(sp)s(eci\014er)f(is)h(used)f(to)i(mo)s(dify)e(the)h +(column)g(structure)f(and/or)h(the)0 2234 y(header)38 +b(k)m(eyw)m(ords)h(in)f(the)h(HDU)g(that)h(w)m(as)f(selected)h(with)e +(the)h(previous)f(HDU)h(lo)s(cation)h(sp)s(eci\014er.)65 +b(This)0 2347 y(\014ltering)42 b(sp)s(eci\014er)f(m)m(ust)h(b)s(e)f +(enclosed)i(in)e(square)h(brac)m(k)m(ets)h(and)e(can)h(b)s(e)f +(distinguished)g(from)h(a)g(general)0 2460 y(ro)m(w)d(\014lter)g(sp)s +(eci\014er)f(\(describ)s(ed)g(b)s(elo)m(w\))h(b)m(y)g(the)g(fact)h +(that)f(it)g(b)s(egins)f(with)h(the)g(string)g('col)h(')f(and)f(is)h +(not)0 2573 y(immediately)30 b(follo)m(w)m(ed)g(b)m(y)e(an)g(equals)h +(sign.)40 b(The)28 b(original)h(\014le)f(is)h(not)f(c)m(hanged)h(b)m(y) +f(this)h(\014ltering)f(op)s(eration,)0 2686 y(and)40 +b(instead)h(the)g(mo)s(di\014cations)g(are)g(made)f(on)h(a)g(cop)m(y)g +(of)g(the)g(input)f(FITS)g(\014le)g(\(usually)h(in)f(memory\),)0 +2799 y(whic)m(h)33 b(also)h(con)m(tains)g(a)f(cop)m(y)h(of)f(all)h(the) +g(other)f(HDUs)h(in)e(the)h(\014le.)49 b(This)33 b(temp)s(orary)f +(\014le)h(is)g(passed)g(to)h(the)0 2912 y(application)f(program)f(and)f +(will)h(p)s(ersist)f(only)h(un)m(til)g(the)g(\014le)g(is)g(closed)h(or) +f(un)m(til)g(the)g(program)f(exits,)j(unless)0 3025 y(the)d(out\014le)f +(sp)s(eci\014er)g(\(see)h(ab)s(o)m(v)m(e\))h(is)f(also)g(supplied.)0 +3185 y(The)g(column/k)m(eyw)m(ord)h(\014lter)f(can)g(b)s(e)g(used)f(to) +i(p)s(erform)e(the)i(follo)m(wing)g(op)s(erations.)44 +b(More)32 b(than)f(one)g(op)s(er-)0 3298 y(ation)g(ma)m(y)g(b)s(e)f(sp) +s(eci\014ed)g(b)m(y)g(separating)h(them)f(with)h(commas)f(or)h +(semi-colons.)136 3561 y Fc(\017)46 b Fi(Cop)m(y)36 b(only)g(a)g(sp)s +(eci\014ed)g(list)g(of)g(columns)g(columns)f(to)i(the)f(\014ltered)g +(input)f(\014le.)57 b(The)36 b(list)g(of)g(column)227 +3673 y(name)c(should)f(b)s(e)h(separated)g(b)m(y)g(semi-colons.)48 +b(Wild)32 b(card)g(c)m(haracters)i(ma)m(y)e(b)s(e)g(used)f(in)h(the)g +(column)227 3786 y(names)37 b(to)h(matc)m(h)g(m)m(ultiple)g(columns.)61 +b(If)37 b(the)g(expression)g(con)m(tains)i(b)s(oth)d(a)i(list)f(of)h +(columns)f(to)h(b)s(e)227 3899 y(included)h(and)f(columns)h(to)g(b)s(e) +g(deleted,)j(then)c(all)i(the)f(columns)g(in)g(the)g(original)h(table)g +(except)g(the)227 4012 y(explicitly)32 b(deleted)f(columns)f(will)g +(app)s(ear)g(in)g(the)g(\014ltered)g(table)h(\(i.e.,)h(there)e(is)h(no) +f(need)f(to)i(explicitly)227 4125 y(list)g(the)g(columns)f(to)h(b)s(e)f +(included)f(if)i(an)m(y)f(columns)g(are)h(b)s(eing)f(deleted\).)136 +4316 y Fc(\017)46 b Fi(Delete)32 b(a)d(column)g(or)g(k)m(eyw)m(ord)h(b) +m(y)f(listing)h(the)f(name)g(preceded)g(b)m(y)g(a)g(min)m(us)g(sign)g +(or)g(an)g(exclamation)227 4429 y(mark)c(\(!\),)h(e.g.,)i('-TIME')d +(will)g(delete)h(the)e(TIME)h(column)f(if)g(it)i(exists,)g(otherwise)f +(the)g(TIME)f(k)m(eyw)m(ord.)227 4542 y(An)35 b(error)f(is)h(returned)e +(if)i(neither)f(a)i(column)e(nor)g(k)m(eyw)m(ord)h(with)g(this)f(name)h +(exists.)54 b(Note)36 b(that)g(the)227 4655 y(exclamation)27 +b(p)s(oin)m(t,)g(')10 b(!',)27 b(is)e(a)g(sp)s(ecial)h(UNIX)f(c)m +(haracter,)j(so)d(if)g(it)h(is)f(used)f(on)h(the)g(command)g(line)g +(rather)227 4768 y(than)33 b(en)m(tered)h(at)g(a)g(task)g(prompt,)f(it) +h(m)m(ust)f(b)s(e)g(preceded)g(b)m(y)g(a)h(bac)m(kslash)g(to)g(force)g +(the)f(UNIX)h(shell)227 4881 y(to)d(ignore)g(it.)136 +5071 y Fc(\017)46 b Fi(Rename)29 b(an)g(existing)g(column)f(or)h(k)m +(eyw)m(ord)g(with)f(the)h(syn)m(tax)g('NewName)h(==)e(OldName'.)40 +b(An)28 b(error)227 5184 y(is)j(returned)e(if)h(neither)h(a)f(column)g +(nor)g(k)m(eyw)m(ord)h(with)f(this)h(name)f(exists.)136 +5375 y Fc(\017)46 b Fi(App)s(end)37 b(a)j(new)f(column)f(or)i(k)m(eyw)m +(ord)f(to)h(the)f(table.)68 b(T)-8 b(o)40 b(create)g(a)g(column,)h(giv) +m(e)g(the)e(new)g(name,)227 5488 y(optionally)e(follo)m(w)m(ed)g(b)m(y) +e(the)g(datat)m(yp)s(e)h(in)f(paren)m(theses,)i(follo)m(w)m(ed)g(b)m(y) +e(a)h(single)g(equals)f(sign)g(and)g(an)227 5601 y(expression)g(to)h(b) +s(e)e(used)g(to)i(compute)f(the)g(v)-5 b(alue)35 b(\(e.g.,)j('new)m +(col\(1J\))f(=)e(0')g(will)h(create)g(a)f(new)g(32-bit)227 +5714 y(in)m(teger)k(column)e(called)i('new)m(col')f(\014lled)g(with)f +(zeros\).)62 b(The)37 b(datat)m(yp)s(e)h(is)g(sp)s(eci\014ed)e(using)h +(the)h(same)p eop end +%%Page: 93 99 +TeXDict begin 93 98 bop 0 299 a Fg(8.10.)73 b(COLUMN)30 +b(AND)h(KEYW)m(ORD)g(FIL)-8 b(TERING)30 b(SPECIFICA)-8 +b(TION)1075 b Fi(93)227 555 y(syn)m(tax)28 b(that)h(is)e(allo)m(w)m(ed) +j(for)d(the)h(v)-5 b(alue)28 b(of)g(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 +668 y(for)37 b(binary)f(tables,)k(and)c('I8',)k(F12.3',)h('E20.12',)g +(etc.)62 b(for)37 b(ASCI)s(I)e(tables\).)62 b(If)37 b(the)g(datat)m(yp) +s(e)h(is)f(not)227 781 y(sp)s(eci\014ed)24 b(then)f(an)h(appropriate)h +(datat)m(yp)s(e)g(will)f(b)s(e)g(c)m(hosen)g(dep)s(ending)f(on)h(the)g +(form)g(of)g(the)g(expression)227 894 y(\(ma)m(y)f(b)s(e)d(a)i(c)m +(haracter)h(string,)h(logical,)h(bit,)f(long)e(in)m(teger,)j(or)c +(double)g(column\).)38 b(An)21 b(appropriate)g(v)m(ector)227 +1007 y(coun)m(t)31 b(\(in)g(the)f(case)i(of)e(binary)g(tables\))h(will) +g(also)g(b)s(e)f(added)g(if)g(not)h(explicitly)h(sp)s(eci\014ed.)227 +1156 y(When)26 b(creating)h(a)f(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) +h('#',)j(and)227 1269 y(the)h(expression)f(m)m(ust)g(ev)-5 +b(aluate)30 b(to)f(a)g(scalar)g(\(i.e.,)h(cannot)f(ha)m(v)m(e)h(a)f +(column)f(name)g(in)g(the)h(expression\).)227 1382 y(The)j(commen)m(t)i +(string)f(for)f(the)h(k)m(eyw)m(ord)h(ma)m(y)f(b)s(e)f(sp)s(eci\014ed)g +(in)g(paren)m(theses)h(immediately)h(follo)m(wing)227 +1495 y(the)29 b(k)m(eyw)m(ord)f(name)g(\(instead)h(of)f(supplying)f(a)h +(datat)m(yp)s(e)h(as)g(in)e(the)i(case)g(of)f(creating)h(a)g(new)f +(column\).)227 1608 y(If)c(the)h(k)m(eyw)m(ord)g(name)f(ends)g(with)g +(a)h(p)s(ound)d(sign)i('#',)i(then)e(c\014tsio)i(will)e(substitute)h +(the)f(n)m(um)m(b)s(er)f(of)i(the)227 1720 y(most)31 +b(recen)m(tly)h(referenced)e(column)h(for)f(the)h(#)f(c)m(haracter)i(.) +41 b(This)29 b(is)i(esp)s(ecially)h(useful)d(when)h(writing)227 +1833 y(a)c(column-related)g(k)m(eyw)m(ord)g(lik)m(e)g(TUNITn)e(for)h(a) +h(newly)f(created)h(column,)g(as)g(sho)m(wn)e(in)h(the)g(follo)m(wing) +227 1946 y(examples.)136 2131 y Fc(\017)46 b Fi(Recompute)f(\(o)m(v)m +(erwrite\))i(the)d(v)-5 b(alues)44 b(in)g(an)g(existing)i(column)e(or)g +(k)m(eyw)m(ord)g(b)m(y)g(giving)i(the)e(name)227 2244 +y(follo)m(w)m(ed)32 b(b)m(y)f(an)f(equals)h(sign)f(and)g(an)g +(arithmetic)i(expression.)0 2497 y(The)23 b(expression)g(that)i(is)e +(used)g(when)g(app)s(ending)f(or)h(recomputing)h(columns)f(or)h(k)m +(eyw)m(ords)g(can)g(b)s(e)f(arbitrarily)0 2610 y(complex)36 +b(and)g(ma)m(y)g(b)s(e)f(a)h(function)g(of)g(other)g(header)g(k)m(eyw)m +(ord)g(v)-5 b(alues)36 b(and)f(other)h(columns)g(\(in)g(the)g(same)0 +2723 y(ro)m(w\).)63 b(The)37 b(full)g(syn)m(tax)i(and)e(a)m(v)-5 +b(ailable)40 b(functions)d(for)g(the)h(expression)f(are)h(describ)s(ed) +f(b)s(elo)m(w)h(in)f(the)h(ro)m(w)0 2836 y(\014lter)30 +b(sp)s(eci\014cation)i(section.)0 2996 y(If)27 b(the)h(expression)g +(con)m(tains)g(b)s(oth)f(a)h(list)h(of)f(columns)f(to)h(b)s(e)g +(included)e(and)i(columns)f(to)h(b)s(e)f(deleted,)j(then)d(all)0 +3109 y(the)34 b(columns)g(in)g(the)g(original)h(table)g(except)g(the)f +(explicitly)i(deleted)f(columns)e(will)i(app)s(ear)e(in)h(the)g +(\014ltered)0 3222 y(table.)40 b(If)26 b(no)g(columns)f(to)i(b)s(e)f +(deleted)g(are)h(sp)s(eci\014ed,)f(then)g(only)g(the)h(columns)e(that)i +(are)f(explicitly)i(listed)f(will)0 3335 y(b)s(e)k(included)g(in)g(the) +h(\014ltered)f(output)h(table.)45 b(T)-8 b(o)32 b(include)f(all)i(the)e +(columns,)h(add)f(the)h('*')g(wildcard)g(sp)s(eci\014er)0 +3447 y(at)f(the)g(end)e(of)i(the)f(list,)i(as)e(sho)m(wn)g(in)g(the)h +(examples.)0 3608 y(F)-8 b(or)30 b(complex)h(or)e(commonly)h(used)f(op) +s(erations,)i(one)e(can)h(also)h(place)g(the)e(op)s(erations)h(in)m(to) +h(an)e(external)i(text)0 3720 y(\014le)g(and)f(imp)s(ort)g(it)h(in)m +(to)h(the)f(column)g(\014lter)f(using)h(the)g(syn)m(tax)g('[col)h +(@\014lename.txt]'.)43 b(The)31 b(op)s(erations)g(can)0 +3833 y(extend)26 b(o)m(v)m(er)i(m)m(ultiple)f(lines)g(of)f(the)h +(\014le,)h(but)d(m)m(ultiple)i(op)s(erations)g(m)m(ust)f(still)i(b)s(e) +d(separated)i(b)m(y)g(semicolons.)0 3946 y(An)m(y)h(lines)h(in)f(the)g +(external)i(text)f(\014le)f(that)h(b)s(egin)f(with)g(2)h(slash)f(c)m +(haracters)i(\('//'\))g(will)f(b)s(e)e(ignored)i(and)e(ma)m(y)0 +4059 y(b)s(e)j(used)f(to)i(add)f(commen)m(ts)h(in)m(to)h(the)e(\014le.) +0 4219 y(Examples:)143 4472 y Fe([col)47 b(Time;)f(rate])667 +b(-)47 b(only)g(the)g(Time)g(and)g(rate)f(columns)g(will)1670 +4585 y(appear)h(in)g(the)g(filtered)e(input)i(file.)143 +4811 y([col)g(Time,)f(*raw])667 b(-)47 b(include)f(the)h(Time)g(column) +f(and)h(any)g(other)1670 4924 y(columns)f(whose)h(name)f(ends)h(with)g +('raw'.)143 5149 y([col)g(-TIME;)f(Good)h(==)g(STATUS])141 +b(-)47 b(deletes)f(the)h(TIME)g(column)f(and)1670 5262 +y(renames)g(the)h(status)f(column)g(to)i('Good')143 5488 +y([col)f(PI=PHA)f(*)h(1.1)g(+)h(0.2;)e(#TUNIT#\(column)e(units\))i(=)i +('counts';*])1575 5601 y(-)f(creates)f(new)h(PI)g(column)f(from)h(PHA)g +(values)1670 5714 y(and)g(also)g(writes)f(the)h(TUNITn)f(keyword)p +eop end +%%Page: 94 100 +TeXDict begin 94 99 bop 0 299 a Fi(94)1618 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)1670 +555 y Fe(for)47 b(the)g(new)g(column.)94 b(The)47 b(final)f('*')1670 +668 y(expression)f(means)i(preserve)e(all)i(the)1670 +781 y(columns)f(in)h(the)g(input)g(table)f(in)h(the)1670 +894 y(virtual)f(output)g(table;)94 b(without)46 b(the)h('*')1670 +1007 y(the)g(output)f(table)h(would)f(only)h(contain)1670 +1120 y(the)g(single)f('PI')h(column.)143 1346 y([col)g(rate)f(=)i +(rate/exposure;)c(TUNIT#\(&\))h(=)j('counts/s';*])1575 +1458 y(-)f(recomputes)e(the)i(rate)g(column)f(by)h(dividing)1670 +1571 y(it)h(by)f(the)g(EXPOSURE)e(keyword)h(value.)g(This)1670 +1684 y(also)h(modifies)f(the)h(value)f(of)h(the)g(TUNITn)1670 +1797 y(keyword)f(for)h(this)g(column.)f(The)h(use)f(of)i(the)1670 +1910 y('&')f(character)f(for)h(the)f(keyword)g(comment)1670 +2023 y(string)h(means)f(preserve)f(the)i(existing)1670 +2136 y(comment)f(string)g(for)h(that)g(keyword.)e(The)1670 +2249 y(final)i('*')g(preserves)e(all)i(the)g(columns)1670 +2362 y(in)h(the)f(input)f(table)g(in)h(the)g(virtual)1670 +2475 y(output)g(table.)0 2816 y Fd(8.11)136 b(Ro)l(w)45 +b(Filtering)h(Sp)t(eci\014cation)0 3068 y Fi(When)29 +b(en)m(tering)h(the)f(name)g(of)g(a)g(FITS)f(table)i(that)g(is)e(to)i +(b)s(e)e(op)s(ened)h(b)m(y)f(a)i(program,)f(an)g(optional)h(ro)m(w)f +(\014lter)0 3181 y(ma)m(y)i(b)s(e)g(sp)s(eci\014ed)f(to)h(select)h(a)g +(subset)e(of)h(the)g(ro)m(ws)f(in)h(the)g(table.)43 b(A)31 +b(temp)s(orary)f(new)g(FITS)g(\014le)h(is)g(created)0 +3294 y(on)25 b(the)h(\015y)e(whic)m(h)h(con)m(tains)h(only)g(those)g +(ro)m(ws)f(for)g(whic)m(h)g(the)g(ro)m(w)g(\014lter)h(expression)f(ev) +-5 b(aluates)26 b(to)g(true.)39 b(\(The)0 3407 y(primary)26 +b(arra)m(y)h(and)f(an)m(y)g(other)h(extensions)g(in)f(the)h(input)f +(\014le)g(are)h(also)h(copied)f(to)g(the)f(temp)s(orary)h(\014le\).)39 +b(The)0 3520 y(original)30 b(FITS)f(\014le)g(is)g(closed)h(and)e(the)i +(new)e(virtual)i(\014le)f(is)g(op)s(ened)f(b)m(y)h(the)h(application)g +(program.)40 b(The)29 b(ro)m(w)0 3633 y(\014lter)37 b(expression)g(is)h +(enclosed)g(in)f(square)g(brac)m(k)m(ets)i(follo)m(wing)g(the)e(\014le) +h(name)f(and)g(extension)h(name)f(\(e.g.,)0 3745 y('\014le.\014ts[ev)m +(en)m(ts][GRADE==50]')29 b(selects)d(only)f(those)h(ro)m(ws)f(where)f +(the)h(GRADE)h(column)f(v)-5 b(alue)25 b(equals)g(50\).)0 +3858 y(When)33 b(dealing)h(with)f(tables)g(where)g(eac)m(h)h(ro)m(w)f +(has)g(an)g(asso)s(ciated)i(time)f(and/or)f(2D)g(spatial)i(p)s +(osition,)f(the)0 3971 y(ro)m(w)e(\014lter)h(expression)e(can)i(also)g +(b)s(e)f(used)f(to)i(select)h(ro)m(ws)e(based)g(on)g(the)g(times)h(in)f +(a)g(Go)s(o)s(d)g(Time)g(In)m(terv)-5 b(als)0 4084 y(\(GTI\))31 +b(extension,)g(or)f(on)h(spatial)g(p)s(osition)g(as)f(giv)m(en)i(in)e +(a)g(SA)m(O-st)m(yle)i(region)f(\014le.)0 4383 y Fb(8.11.1)113 +b(General)38 b(Syn)m(tax)0 4603 y Fi(The)32 b(ro)m(w)h(\014ltering)g +(expression)g(can)g(b)s(e)f(an)h(arbitrarily)g(complex)g(series)g(of)g +(op)s(erations)g(p)s(erformed)f(on)g(con-)0 4716 y(stan)m(ts,)39 +b(k)m(eyw)m(ord)e(v)-5 b(alues,)38 b(and)e(column)g(data)i(tak)m(en)f +(from)f(the)h(sp)s(eci\014ed)e(FITS)h(T)-8 b(ABLE)37 +b(extension.)59 b(The)0 4829 y(expression)37 b(m)m(ust)h(ev)-5 +b(aluate)39 b(to)g(a)f(b)s(o)s(olean)g(v)-5 b(alue)38 +b(for)f(eac)m(h)i(ro)m(w)f(of)g(the)f(table,)k(where)c(a)h(v)-5 +b(alue)39 b(of)e(F)-10 b(ALSE)0 4942 y(means)30 b(that)h(the)g(ro)m(w)f +(will)h(b)s(e)f(excluded.)0 5102 y(F)-8 b(or)34 b(complex)g(or)g +(commonly)f(used)g(\014lters,)h(one)g(can)g(place)g(the)g(expression)f +(in)m(to)h(a)g(text)g(\014le)g(and)f(imp)s(ort)f(it)0 +5215 y(in)m(to)38 b(the)e(ro)m(w)h(\014lter)g(using)f(the)h(syn)m(tax)g +('[@\014lename.txt]'.)61 b(The)36 b(expression)h(can)f(b)s(e)g +(arbitrarily)h(complex)0 5328 y(and)27 b(extend)i(o)m(v)m(er)g(m)m +(ultiple)g(lines)f(of)g(the)h(\014le.)40 b(An)m(y)28 +b(lines)g(in)g(the)g(external)h(text)g(\014le)f(that)h(b)s(egin)f(with) +g(2)g(slash)0 5441 y(c)m(haracters)k(\('//'\))g(will)f(b)s(e)f(ignored) +g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(add)f(commen)m(ts)h(in)m(to)h(the) +e(\014le.)0 5601 y(Keyw)m(ord)37 b(and)f(column)g(data)i(are)f +(referenced)g(b)m(y)g(name.)60 b(An)m(y)37 b(string)f(of)h(c)m +(haracters)i(not)e(surrounded)d(b)m(y)0 5714 y(quotes)41 +b(\(ie,)j(a)d(constan)m(t)h(string\))f(or)f(follo)m(w)m(ed)i(b)m(y)f +(an)f(op)s(en)g(paren)m(theses)h(\(ie,)j(a)d(function)f(name\))h(will)g +(b)s(e)p eop end +%%Page: 95 101 +TeXDict begin 95 100 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)2027 b Fi(95)0 +555 y(initially)38 b(in)m(terpreted)e(as)h(a)g(column)f(name)g(and)g +(its)h(con)m(ten)m(ts)h(for)e(the)h(curren)m(t)f(ro)m(w)g(inserted)g +(in)m(to)i(the)e(ex-)0 668 y(pression.)k(If)28 b(no)h(suc)m(h)g(column) +g(exists,)h(a)g(k)m(eyw)m(ord)f(of)h(that)f(name)g(will)h(b)s(e)e +(searc)m(hed)i(for)f(and)f(its)i(v)-5 b(alue)29 b(used,)0 +781 y(if)36 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)h(as)g(a)g(k)m(eyw)m(ord)g(\(in)g(case)g(there)g +(is)g(b)s(oth)f(a)h(column)g(and)0 894 y(k)m(eyw)m(ord)41 +b(with)e(the)i(same)f(name\),)j(precede)d(the)h(k)m(eyw)m(ord)f(name)g +(with)g(a)h(single)f(p)s(ound)e(sign,)43 b('#',)g(as)d(in)0 +1007 y('#NAXIS2'.)g(Due)27 b(to)g(the)f(generalities)j(of)d(FITS)g +(column)g(and)g(k)m(eyw)m(ord)h(names,)g(if)f(the)h(column)f(or)g(k)m +(eyw)m(ord)0 1120 y(name)33 b(con)m(tains)h(a)f(space)h(or)f(a)g(c)m +(haracter)h(whic)m(h)f(migh)m(t)h(app)s(ear)e(as)h(an)g(arithmetic)h +(term)f(then)g(enclose)h(the)0 1233 y(name)c(in)g('$')i(c)m(haracters)g +(as)e(in)g($MAX)i(PHA$)f(or)f(#$MAX-PHA$.)43 b(Names)31 +b(are)f(case)i(insensitiv)m(e.)0 1393 y(T)-8 b(o)32 b(access)g(a)g +(table)g(en)m(try)g(in)f(a)h(ro)m(w)f(other)h(than)f(the)g(curren)m(t)g +(one,)h(follo)m(w)h(the)e(column's)h(name)f(with)g(a)h(ro)m(w)0 +1506 y(o\013set)37 b(within)e(curly)g(braces.)57 b(F)-8 +b(or)36 b(example,)i('PHA)p Fc(f)p Fi(-3)p Fc(g)p Fi(')g(will)e(ev)-5 +b(aluate)38 b(to)e(the)g(v)-5 b(alue)36 b(of)g(column)f(PHA,)i(3)0 +1619 y(ro)m(ws)28 b(ab)s(o)m(v)m(e)i(the)e(ro)m(w)h(curren)m(tly)f(b)s +(eing)g(pro)s(cessed.)40 b(One)28 b(cannot)h(sp)s(ecify)f(an)g +(absolute)h(ro)m(w)f(n)m(um)m(b)s(er,)g(only)h(a)0 1732 +y(relativ)m(e)j(o\013set.)42 b(Ro)m(ws)31 b(that)g(fall)g(outside)g +(the)f(table)h(will)g(b)s(e)f(treated)h(as)g(unde\014ned,)d(or)j +(NULLs.)0 1892 y(Bo)s(olean)h(op)s(erators)f(can)g(b)s(e)f(used)f(in)i +(the)f(expression)h(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 2005 y(b)s(o)s(olean)g +(op)s(erators)h(are)g(a)m(v)-5 b(ailable:)191 2247 y +Fe("equal")428 b(.eq.)46 b(.EQ.)h(==)95 b("not)46 b(equal")476 +b(.ne.)94 b(.NE.)h(!=)191 2360 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 2473 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 2585 y("or")572 b(.or.)46 b(.OR.)h(||)95 +b("and")762 b(.and.)46 b(.AND.)h(&&)191 2698 y("negation")236 +b(.not.)46 b(.NOT.)h(!)95 b("approx.)45 b(equal\(1e-7\)")92 +b(~)0 2940 y Fi(Note)32 b(that)g(the)f(exclamation)i(p)s(oin)m(t,)e(') +10 b(!',)33 b(is)e(a)g(sp)s(ecial)g(UNIX)h(c)m(haracter,)h(so)e(if)g +(it)g(is)g(used)f(on)h(the)g(command)0 3053 y(line)i(rather)f(than)h +(en)m(tered)g(at)g(a)g(task)g(prompt,)g(it)g(m)m(ust)f(b)s(e)g +(preceded)h(b)m(y)f(a)h(bac)m(kslash)g(to)h(force)f(the)g(UNIX)0 +3166 y(shell)e(to)g(ignore)g(it.)0 3326 y(The)h(expression)g(ma)m(y)i +(also)f(include)f(arithmetic)i(op)s(erators)f(and)f(functions.)47 +b(T)-8 b(rigonometric)34 b(functions)e(use)0 3439 y(radians,)23 +b(not)g(degrees.)38 b(The)22 b(follo)m(wing)h(arithmetic)g(op)s +(erators)g(and)e(functions)g(can)i(b)s(e)e(used)g(in)h(the)g +(expression)0 3552 y(\(function)38 b(names)f(are)h(case)g(insensitiv)m +(e\).)64 b(A)37 b(n)m(ull)h(v)-5 b(alue)38 b(will)f(b)s(e)g(returned)g +(in)g(case)h(of)g(illegal)i(op)s(erations)0 3665 y(suc)m(h)30 +b(as)h(divide)f(b)m(y)g(zero,)i(sqrt\(negativ)m(e\))h(log\(negativ)m +(e\),)h(log10\(negativ)m(e\),)i(arccos\(.gt.)43 b(1\),)32 +b(arcsin\(.gt.)42 b(1\).)191 3907 y Fe("addition")522 +b(+)477 b("subtraction")d(-)191 4020 y("multiplication")234 +b(*)477 b("division")618 b(/)191 4133 y("negation")522 +b(-)477 b("exponentiation")330 b(**)143 b(^)191 4246 +y("absolute)45 b(value")237 b(abs\(x\))g("cosine")714 +b(cos\(x\))191 4359 y("sine")g(sin\(x\))237 b("tangent")666 +b(tan\(x\))191 4472 y("arc)47 b(cosine")427 b(arccos\(x\))93 +b("arc)47 b(sine")619 b(arcsin\(x\))191 4585 y("arc)47 +b(tangent")379 b(arctan\(x\))93 b("arc)47 b(tangent")475 +b(arctan2\(y,x\))191 4698 y("hyperbolic)45 b(cos")237 +b(cosh\(x\))189 b("hyperbolic)45 b(sin")333 b(sinh\(x\))191 +4811 y("hyperbolic)45 b(tan")237 b(tanh\(x\))189 b("round)46 +b(to)h(nearest)f(int")h(round\(x\))191 4924 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 5036 y("exponential")378 b(exp\(x\))237 +b("square)46 b(root")476 b(sqrt\(x\))191 5149 y("natural)45 +b(log")381 b(log\(x\))237 b("common)46 b(log")524 b(log10\(x\))191 +5262 y("modulus")570 b(x)48 b(\045)f(y)286 b("random)46 +b(#)h([0.0,1.0\)")141 b(random\(\))191 5375 y("random)46 +b(Gaussian")188 b(randomn\(\))93 b("random)46 b(Poisson")332 +b(randomp\(x\))191 5488 y("minimum")570 b(min\(x,y\))141 +b("maximum")666 b(max\(x,y\))191 5601 y("cumulative)45 +b(sum")237 b(accum\(x\))93 b("sequential)45 b(difference")g +(seqdiff\(x\))191 5714 y("if-then-else")330 b(b?x:y)p +eop end +%%Page: 96 102 +TeXDict begin 96 101 bop 0 299 a Fi(96)1618 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191 +555 y Fe("angular)45 b(separation")93 b(angsep\(ra1,dec1,ra2,de2\))41 +b(\(all)47 b(in)g(degrees\))191 668 y("substring")283 +b(strmid\(s,p,n\))44 b("string)i(search")428 b(strstr\(s,r\))0 +907 y Fi(Three)30 b(di\013eren)m(t)h(random)f(n)m(um)m(b)s(er)f +(functions)h(are)h(pro)m(vided:)41 b(random\(\),)30 b(with)h(no)f +(argumen)m(ts,)h(pro)s(duces)f(a)0 1020 y(uniform)g(random)f(deviate)k +(b)s(et)m(w)m(een)e(0)g(and)f(1;)i(randomn\(\),)e(also)i(with)e(no)h +(argumen)m(ts,)g(pro)s(duces)f(a)h(normal)0 1133 y(\(Gaussian\))k +(random)e(deviate)j(with)e(zero)h(mean)f(and)g(unit)f(standard)h +(deviation;)j(randomp\(x\))d(pro)s(duces)f(a)0 1245 y(P)m(oisson)27 +b(random)f(deviate)h(whose)f(exp)s(ected)h(n)m(um)m(b)s(er)e(of)h(coun) +m(ts)h(is)g(X.)f(X)h(ma)m(y)g(b)s(e)e(an)m(y)i(p)s(ositiv)m(e)g(real)g +(n)m(um)m(b)s(er)0 1358 y(of)k(exp)s(ected)f(coun)m(ts,)h(including)f +(fractional)i(v)-5 b(alues,)31 b(but)f(the)g(return)g(v)-5 +b(alue)31 b(is)f(an)g(in)m(teger.)0 1519 y(When)d(the)g(random)g +(functions)f(are)i(used)e(in)h(a)h(v)m(ector)g(expression,)g(b)m(y)f +(default)h(the)f(same)h(random)e(v)-5 b(alue)28 b(will)0 +1631 y(b)s(e)g(used)f(when)h(ev)-5 b(aluating)30 b(eac)m(h)f(elemen)m +(t)h(of)f(the)g(v)m(ector.)41 b(If)28 b(di\013eren)m(t)h(random)f(n)m +(um)m(b)s(ers)f(are)i(desired,)f(then)0 1744 y(the)37 +b(name)g(of)g(a)g(v)m(ector)i(column)e(should)e(b)s(e)i(supplied)e(as)i +(the)h(single)f(argumen)m(t)g(to)h(the)f(random)f(function)0 +1857 y(\(e.g.,)31 b("\015ux)c(+)h(0.1)h(*)g(random\(\015ux\)",)f(where) +g("\015ux')g(is)g(the)g(name)h(of)f(a)h(v)m(ector)h(column\).)40 +b(This)27 b(will)i(create)h(a)0 1970 y(v)m(ector)d(of)f(random)f(n)m +(um)m(b)s(ers)f(that)i(will)g(b)s(e)f(used)f(in)i(sequence)g(when)e(ev) +-5 b(aluating)27 b(eac)m(h)g(elemen)m(t)g(of)f(the)f(v)m(ector)0 +2083 y(expression.)0 2243 y(An)31 b(alternate)i(syn)m(tax)f(for)f(the)g +(min)g(and)g(max)g(functions)g(has)g(only)g(a)h(single)g(argumen)m(t)g +(whic)m(h)f(should)f(b)s(e)h(a)0 2356 y(v)m(ector)g(v)-5 +b(alue)30 b(\(see)g(b)s(elo)m(w\).)41 b(The)29 b(result)g(will)h(b)s(e) +e(the)i(minim)m(um/maxim)m(um)f(elemen)m(t)h(con)m(tained)h(within)e +(the)0 2469 y(v)m(ector.)0 2629 y(The)35 b(accum\(x\))i(function)f +(forms)f(the)h(cum)m(ulativ)m(e)i(sum)d(of)h(x,)h(elemen)m(t)h(b)m(y)e +(elemen)m(t.)58 b(V)-8 b(ector)38 b(columns)e(are)0 2742 +y(supp)s(orted)h(simply)h(b)m(y)g(p)s(erforming)f(the)i(summation)g +(pro)s(cess)f(through)f(all)j(the)f(v)-5 b(alues.)65 +b(Null)39 b(v)-5 b(alues)39 b(are)0 2855 y(treated)30 +b(as)f(0.)41 b(The)29 b(seqdi\013\(x\))h(function)e(forms)h(the)g +(sequen)m(tial)i(di\013erence)e(of)h(x,)f(elemen)m(t)i(b)m(y)e(elemen)m +(t.)41 b(The)0 2968 y(\014rst)36 b(v)-5 b(alue)38 b(of)f(seqdi\013)g +(is)g(the)g(\014rst)g(v)-5 b(alue)37 b(of)g(x.)61 b(A)37 +b(single)h(n)m(ull)f(v)-5 b(alue)38 b(in)e(x)h(causes)h(a)f(pair)g(of)g +(n)m(ulls)g(in)g(the)0 3081 y(output.)55 b(The)35 b(seqdi\013)g(and)g +(accum)g(functions)g(are)h(functional)f(in)m(v)m(erses,)j(i.e.,)g +(seqdi\013\(accum\(x\)\))f(==)e(x)g(as)0 3194 y(long)c(as)g(no)f(n)m +(ull)g(v)-5 b(alues)31 b(are)g(presen)m(t.)0 3354 y(In)36 +b(the)h(if-then-else)i(expression,)f("b?x:y",)i(b)c(is)h(an)g(explicit) +h(b)s(o)s(olean)f(v)-5 b(alue)37 b(or)g(expression.)61 +b(There)36 b(is)h(no)0 3467 y(automatic)d(t)m(yp)s(e)e(con)m(v)m +(ersion)h(from)e(n)m(umeric)h(to)g(b)s(o)s(olean)g(v)-5 +b(alues,)33 b(so)f(one)g(needs)f(to)i(use)e("iV)-8 b(al!=0")35 +b(instead)0 3580 y(of)30 b(merely)g("iV)-8 b(al")32 b(as)e(the)g(b)s(o) +s(olean)g(argumen)m(t.)41 b(x)30 b(and)f(y)h(can)g(b)s(e)f(an)m(y)h +(scalar)h(data)g(t)m(yp)s(e)f(\(including)f(string\).)0 +3740 y(The)22 b(angsep)g(function)f(computes)i(the)f(angular)g +(separation)h(in)e(degrees)i(b)s(et)m(w)m(een)g(2)f(celestial)j(p)s +(ositions,)e(where)0 3853 y(the)36 b(\014rst)f(2)h(parameters)g(giv)m +(e)h(the)f(RA-lik)m(e)i(and)d(Dec-lik)m(e)j(co)s(ordinates)f(\(in)f +(decimal)g(degrees\))h(of)f(the)g(\014rst)0 3966 y(p)s(osition,)31 +b(and)e(the)i(3rd)f(and)g(4th)g(parameters)h(giv)m(e)h(the)e(co)s +(ordinates)i(of)e(the)h(second)f(p)s(osition.)0 4126 +y(The)38 b(substring)f(function)i(strmid\(S,P)-8 b(,N\))39 +b(extracts)g(a)g(substring)f(from)g(S,)g(starting)h(at)g(string)g(p)s +(osition)f(P)-8 b(,)0 4239 y(with)33 b(a)h(substring)f(length)h(N.)g +(The)f(\014rst)g(c)m(haracter)j(p)s(osition)d(in)h(S)f(is)h(lab)s(eled) +g(as)g(1.)51 b(If)33 b(P)g(is)h(0,)h(or)f(refers)f(to)0 +4352 y(a)i(p)s(osition)g(b)s(ey)m(ond)f(the)h(end)e(of)i(S,)g(then)f +(the)h(extracted)h(substring)d(will)i(b)s(e)f(NULL.)h(S,)f(P)-8 +b(,)36 b(and)e(N)g(ma)m(y)i(b)s(e)0 4465 y(functions)30 +b(of)g(other)h(columns.)0 4625 y(The)39 b(string)h(searc)m(h)h +(function)e(strstr\(S,R\))h(searc)m(hes)h(for)f(the)g(\014rst)f(o)s +(ccurrence)h(of)g(the)g(substring)f(R)h(in)f(S.)0 4738 +y(The)c(result)h(is)f(an)h(in)m(teger,)i(indicating)f(the)e(c)m +(haracter)i(p)s(osition)f(of)g(the)g(\014rst)e(matc)m(h)j(\(where)e(1)h +(is)g(the)g(\014rst)0 4851 y(c)m(haracter)c(p)s(osition)e(of)h(S\).)f +(If)g(no)h(matc)m(h)g(is)f(found,)g(then)g(strstr\(\))g(returns)f(a)i +(NULL)f(v)-5 b(alue.)0 5011 y(The)37 b(follo)m(wing)i(t)m(yp)s(e)f +(casting)g(op)s(erators)g(are)g(a)m(v)-5 b(ailable,)42 +b(where)37 b(the)h(enclosing)g(paren)m(theses)g(are)g(required)0 +5124 y(and)30 b(tak)m(en)h(from)f(the)h(C)f(language)h(usage.)42 +b(Also,)31 b(the)g(in)m(teger)g(to)h(real)f(casts)g(v)-5 +b(alues)30 b(to)i(double)e(precision:)764 5362 y Fe("real)46 +b(to)h(integer")189 b(\(int\))46 b(x)239 b(\(INT\))46 +b(x)764 5475 y("integer)f(to)i(real")190 b(\(float\))46 +b(i)143 b(\(FLOAT\))45 b(i)0 5714 y Fi(In)30 b(addition,)g(sev)m(eral)i +(constan)m(ts)g(are)f(built)f(in)g(for)g(use)g(in)g(n)m(umerical)h +(expressions:)p eop end +%%Page: 97 103 +TeXDict begin 97 102 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)2027 b Fi(97)382 +555 y Fe(#pi)667 b(3.1415...)284 b(#e)620 b(2.7182...)382 +668 y(#deg)f(#pi/180)380 b(#row)524 b(current)46 b(row)h(number)382 +781 y(#null)428 b(undefined)45 b(value)142 b(#snull)428 +b(undefined)45 b(string)0 1040 y Fi(A)40 b(string)f(constan)m(t)i(m)m +(ust)e(b)s(e)g(enclosed)h(in)g(quotes)g(as)f(in)h('Crab'.)67 +b(The)39 b("n)m(ull")i(constan)m(ts)f(are)g(useful)f(for)0 +1153 y(conditionally)g(setting)g(table)g(v)-5 b(alues)38 +b(to)g(a)g(NULL,)g(or)g(unde\014ned,)f(v)-5 b(alue)39 +b(\(eg.,)i("col1==-99)f(?)62 b(#NULL)38 b(:)0 1266 y(col1"\).)0 +1426 y(There)27 b(is)g(also)i(a)e(function)g(for)h(testing)g(if)f(t)m +(w)m(o)i(v)-5 b(alues)28 b(are)g(close)g(to)h(eac)m(h)f(other,)h(i.e.,) +g(if)e(they)h(are)g("near")g(eac)m(h)0 1539 y(other)c(to)h(within)e(a)h +(user)g(sp)s(eci\014ed)f(tolerance.)40 b(The)24 b(argumen)m(ts,)h(v)-5 +b(alue)p 2502 1539 28 4 v 34 w(1)24 b(and)f(v)-5 b(alue)p +2979 1539 V 33 w(2)25 b(can)f(b)s(e)f(in)m(teger)i(or)f(real)0 +1652 y(and)32 b(represen)m(t)h(the)g(t)m(w)m(o)h(v)-5 +b(alues)33 b(who's)f(pro)m(ximit)m(y)i(is)f(b)s(eing)f(tested)h(to)h(b) +s(e)e(within)g(the)h(sp)s(eci\014ed)f(tolerance,)0 1765 +y(also)f(an)g(in)m(teger)g(or)g(real:)955 2023 y Fe(near\(value_1,)44 +b(value_2,)h(tolerance\))0 2282 y Fi(When)24 b(a)i(NULL,)e(or)h +(unde\014ned,)f(v)-5 b(alue)25 b(is)g(encoun)m(tered)g(in)g(the)f(FITS) +g(table,)j(the)e(expression)g(will)g(ev)-5 b(aluate)26 +b(to)0 2395 y(NULL)31 b(unless)f(the)h(unde\014ned)e(v)-5 +b(alue)31 b(is)g(not)g(actually)h(required)e(for)h(ev)-5 +b(aluation,)33 b(e.g.)43 b("TR)m(UE)31 b(.or.)43 b(NULL")0 +2508 y(ev)-5 b(aluates)32 b(to)f(TR)m(UE.)g(The)f(follo)m(wing)h(t)m(w) +m(o)h(functions)e(allo)m(w)i(some)f(NULL)f(detection)i(and)e(handling:) +430 2767 y Fe("a)47 b(null)f(value?")667 b(ISNULL\(x\))430 +2880 y("define)45 b(a)j(value)e(for)h(null")190 b(DEFNULL\(x,y\))0 +3139 y Fi(The)36 b(former)h(returns)e(a)i(b)s(o)s(olean)g(v)-5 +b(alue)37 b(of)g(TR)m(UE)g(if)g(the)g(argumen)m(t)g(x)g(is)g(NULL.)g +(The)f(later)i("de\014nes")f(a)0 3252 y(v)-5 b(alue)35 +b(to)g(b)s(e)e(substituted)h(for)g(NULL)g(v)-5 b(alues;)37 +b(it)e(returns)e(the)h(v)-5 b(alue)35 b(of)f(x)g(if)g(x)h(is)f(not)g +(NULL,)h(otherwise)f(it)0 3365 y(returns)29 b(the)i(v)-5 +b(alue)31 b(of)f(y)-8 b(.)0 3655 y Fb(8.11.2)113 b(Bit)36 +b(Masks)0 3874 y Fi(Bit)g(masks)f(can)h(b)s(e)f(used)f(to)i(select)h +(out)e(ro)m(ws)h(from)e(bit)i(columns)f(\(TF)m(ORMn)g(=)g(#X\))h(in)f +(FITS)f(\014les.)55 b(T)-8 b(o)0 3987 y(represen)m(t)30 +b(the)h(mask,)g(binary)-8 b(,)30 b(o)s(ctal,)i(and)e(hex)g(formats)g +(are)h(allo)m(w)m(ed:)811 4246 y Fe(binary:)142 b +(b0110xx1010000101xxxx00)o(01)811 4359 y(octal:)190 b(o720x1)46 +b(->)h(\(b111010000xxx001\))811 4471 y(hex:)286 b(h0FxD)94 +b(->)47 b(\(b00001111xxxx1101\))0 4730 y Fi(In)22 b(all)i(the)f +(represen)m(tations,)j(an)c(x)h(or)g(X)g(is)g(allo)m(w)m(ed)i(in)d(the) +h(mask)g(as)g(a)h(wild)e(card.)38 b(Note)25 b(that)e(the)g(x)g +(represen)m(ts)0 4843 y(a)k(di\013eren)m(t)h(n)m(um)m(b)s(er)e(of)h +(wild)f(card)h(bits)g(in)g(eac)m(h)h(represen)m(tation.)41 +b(All)27 b(represen)m(tations)h(are)g(case)g(insensitiv)m(e.)0 +5003 y(T)-8 b(o)28 b(construct)g(the)g(b)s(o)s(olean)f(expression)h +(using)f(the)h(mask)f(as)h(the)g(b)s(o)s(olean)f(equal)h(op)s(erator)g +(describ)s(ed)f(ab)s(o)m(v)m(e)0 5116 y(on)34 b(a)h(bit)g(table)h +(column.)53 b(F)-8 b(or)35 b(example,)i(if)d(y)m(ou)h(had)f(a)h(7)g +(bit)g(column)f(named)g(\015ags)h(in)f(a)h(FITS)f(table)i(and)0 +5229 y(w)m(an)m(ted)31 b(all)g(ro)m(ws)g(ha)m(ving)g(the)f(bit)h +(pattern)f(0010011,)k(the)c(selection)j(expression)d(w)m(ould)g(b)s(e:) +1336 5488 y Fe(flags)47 b(==)g(b0010011)191 5601 y(or)1336 +5714 y(flags)g(.eq.)f(b10011)p eop end +%%Page: 98 104 +TeXDict begin 98 103 bop 0 299 a Fi(98)1618 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 +555 y Fi(It)35 b(is)g(also)h(p)s(ossible)e(to)i(test)g(if)f(a)g(range)g +(of)g(bits)g(is)g(less)g(than,)h(less)f(than)g(equal,)i(greater)f(than) +e(and)h(greater)0 668 y(than)30 b(equal)h(to)g(a)g(particular)g(b)s(o)s +(olean)f(v)-5 b(alue:)1336 922 y Fe(flags)47 b(<=)g(bxxx010xx)1336 +1035 y(flags)g(.gt.)f(bxxx100xx)1336 1148 y(flags)h(.le.)f(b1xxxxxxx)0 +1402 y Fi(Notice)32 b(the)f(use)f(of)h(the)f(x)g(bit)h(v)-5 +b(alue)31 b(to)g(limit)g(the)f(range)h(of)g(bits)f(b)s(eing)g +(compared.)0 1563 y(It)i(is)h(not)f(necessary)h(to)g(sp)s(ecify)f(the)h +(leading)g(\(most)g(signi\014can)m(t\))h(zero)f(\(0\))g(bits)f(in)g +(the)h(mask,)g(as)g(sho)m(wn)e(in)0 1675 y(the)g(second)f(expression)g +(ab)s(o)m(v)m(e.)0 1836 y(Bit)44 b(wise)f(AND,)h(OR)e(and)g(NOT)h(op)s +(erations)g(are)g(also)h(p)s(ossible)e(on)h(t)m(w)m(o)h(or)f(more)g +(bit)g(\014elds)f(using)h(the)0 1949 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)34 b(of)f(these)h(op)s(erators)g(result)f(in)h +(a)g(bit)f(\014eld)g(whic)m(h)0 2061 y(can)e(then)f(b)s(e)f(used)h +(with)g(the)h(equal)g(op)s(erator.)41 b(F)-8 b(or)31 +b(example:)1241 2316 y Fe(\(!flags\))45 b(==)j(b1101100)1241 +2429 y(\(flags)e(&)h(b1000001\))f(==)h(bx000001)0 2683 +y Fi(Bit)35 b(\014elds)f(can)g(b)s(e)f(app)s(ended)g(as)h(w)m(ell)h +(using)f(the)g('+')g(op)s(erator.)53 b(Strings)33 b(can)i(b)s(e)e +(concatenated)j(this)e(w)m(a)m(y)-8 b(,)0 2796 y(to)s(o.)0 +3086 y Fb(8.11.3)113 b(V)-9 b(ector)36 b(Columns)0 3304 +y Fi(V)-8 b(ector)37 b(columns)e(can)h(also)g(b)s(e)f(used)f(in)h +(building)g(the)g(expression.)56 b(No)36 b(sp)s(ecial)g(syn)m(tax)f(is) +h(required)e(if)i(one)0 3417 y(w)m(an)m(ts)46 b(to)f(op)s(erate)h(on)f +(all)h(elemen)m(ts)g(of)f(the)h(v)m(ector.)86 b(Simply)44 +b(use)h(the)g(column)g(name)g(as)g(for)g(a)g(scalar)0 +3530 y(column.)d(V)-8 b(ector)32 b(columns)f(can)g(b)s(e)f(freely)h(in) +m(termixed)h(with)e(scalar)i(columns)e(or)h(constan)m(ts)h(in)f +(virtually)g(all)0 3643 y(expressions.)40 b(The)29 b(result)g(will)g(b) +s(e)g(of)g(the)g(same)h(dimension)e(as)i(the)f(v)m(ector.)42 +b(Tw)m(o)29 b(v)m(ectors)i(in)e(an)g(expression,)0 3756 +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)h(and)e(ha)m(v)m(e)j(the)e(same)g(dimensions.)39 +b(The)26 b(only)h(places)0 3869 y(a)35 b(v)m(ector)h(column)e(cannot)h +(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)h(functions)f(and)f(the)i(NEAR)0 3982 y(b)s(o)s(olean)30 +b(function.)0 4142 y(Arithmetic)24 b(and)e(logical)k(op)s(erations)d +(are)h(all)g(p)s(erformed)d(on)i(an)g(elemen)m(t)h(b)m(y)f(elemen)m(t)i +(basis.)38 b(Comparing)23 b(t)m(w)m(o)0 4255 y(v)m(ector)32 +b(columns,)e(eg)h("COL1)f(==)g(COL2",)g(th)m(us)g(results)g(in)g +(another)g(v)m(ector)i(of)e(b)s(o)s(olean)h(v)-5 b(alues)30 +b(indicating)0 4368 y(whic)m(h)g(elemen)m(ts)i(of)e(the)h(t)m(w)m(o)h +(v)m(ectors)f(are)g(equal.)0 4528 y(Eigh)m(t)g(functions)f(are)h(a)m(v) +-5 b(ailable)33 b(that)e(op)s(erate)g(on)f(a)h(v)m(ector)h(and)d +(return)h(a)g(scalar)i(result:)191 4782 y Fe("minimum")284 +b(MIN\(V\))475 b("maximum")714 b(MAX\(V\))191 4895 y("average")284 +b(AVERAGE\(V\))f("median")762 b(MEDIAN\(V\))191 5008 +y("summation")188 b(SUM\(V\))475 b("standard)46 b(deviation")188 +b(STDDEV\(V\))191 5121 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 +5375 y Fi(where)40 b(V)h(represen)m(ts)g(the)g(name)g(of)h(a)f(v)m +(ector)h(column)f(or)g(a)h(man)m(ually)f(constructed)g(v)m(ector)i +(using)d(curly)0 5488 y(brac)m(k)m(ets)27 b(as)f(describ)s(ed)e(b)s +(elo)m(w.)39 b(The)25 b(\014rst)g(6)h(of)g(these)g(functions)f(ignore)h +(an)m(y)g(n)m(ull)f(v)-5 b(alues)26 b(in)f(the)h(v)m(ector)h(when)0 +5601 y(computing)k(the)f(result.)41 b(The)30 b(STDDEV\(\))h(function)g +(computes)f(the)h(sample)g(standard)e(deviation,)j(i.e.)42 +b(it)31 b(is)0 5714 y(prop)s(ortional)f(to)h(1/SQR)-8 +b(T\(N-1\))32 b(instead)f(of)g(1/SQR)-8 b(T\(N\),)31 +b(where)f(N)h(is)f(NV)-10 b(ALID\(V\).)p eop end +%%Page: 99 105 +TeXDict begin 99 104 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)2027 b Fi(99)0 +555 y(The)32 b(SUM)h(function)f(literally)j(sums)c(all)j(the)f(elemen)m +(ts)h(in)f(x,)g(returning)f(a)h(scalar)h(v)-5 b(alue.)48 +b(If)32 b(x)h(is)g(a)g(b)s(o)s(olean)0 668 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.) +60 b(The)36 b(NELEM)g(function)g(returns)f(the)h(n)m(um)m(b)s(er)0 +781 y(of)i(elemen)m(ts)h(in)f(v)m(ector)h(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)f(elemen) +m(ts)j(in)d(the)h(v)m(ector.)0 894 y(\(NELEM)28 b(also)h(op)s(erates)f +(on)g(bit)f(and)g(string)h(columns,)g(returning)f(their)h(column)f +(widths.\))40 b(As)27 b(an)h(example,)0 1007 y(to)42 +b(test)g(whether)f(all)h(elemen)m(ts)h(of)f(t)m(w)m(o)g(v)m(ectors)h +(satisfy)f(a)g(giv)m(en)g(logical)i(comparison,)g(one)e(can)g(use)f +(the)0 1120 y(expression)668 1374 y Fe(SUM\()47 b(COL1)f(>)i(COL2)f(\)) +g(==)g(NELEM\()f(COL1)h(\))0 1629 y Fi(whic)m(h)32 b(will)g(return)f +(TR)m(UE)h(if)g(all)h(elemen)m(ts)g(of)f(COL1)g(are)g(greater)h(than)f +(their)g(corresp)s(onding)f(elemen)m(ts)i(in)0 1742 y(COL2.)0 +1902 y(T)-8 b(o)32 b(sp)s(ecify)f(a)i(single)f(elemen)m(t)h(of)f(a)g(v) +m(ector,)i(giv)m(e)f(the)f(column)f(name)h(follo)m(w)m(ed)h(b)m(y)f(a)g +(comma-separated)h(list)0 2015 y(of)c(co)s(ordinates)g(enclosed)h(in)e +(square)h(brac)m(k)m(ets.)41 b(F)-8 b(or)30 b(example,)g(if)e(a)h(v)m +(ector)i(column)d(named)h(PHAS)f(exists)h(in)0 2128 y(the)e(table)g(as) +g(a)g(one)g(dimensional,)h(256)g(comp)s(onen)m(t)f(list)g(of)g(n)m(um)m +(b)s(ers)e(from)h(whic)m(h)h(y)m(ou)g(w)m(an)m(ted)g(to)g(select)i(the) +0 2241 y(57th)j(comp)s(onen)m(t)g(for)f(use)g(in)g(the)h(expression,)f +(then)h(PHAS[57])g(w)m(ould)f(do)h(the)f(tric)m(k.)45 +b(Higher)32 b(dimensional)0 2354 y(arra)m(ys)41 b(of)h(data)f(ma)m(y)h +(app)s(ear)f(in)f(a)i(column.)73 b(But)41 b(in)g(order)f(to)i(in)m +(terpret)f(them,)j(the)e(TDIMn)e(k)m(eyw)m(ord)0 2466 +y(m)m(ust)34 b(app)s(ear)g(in)g(the)g(header.)52 b(Assuming)34 +b(that)h(a)f(\(4,4,4,4\))k(arra)m(y)c(is)h(pac)m(k)m(ed)g(in)m(to)g +(eac)m(h)h(ro)m(w)e(of)g(a)h(column)0 2579 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) +g(of)g(eac)m(h)g(ro)m(w)g(is)f(accessed)i(b)m(y)e(ARRA)-8 +b(Y4D[1,2,3,4].)0 2692 y(Arra)m(ys)33 b(up)e(to)j(dimension)e(5)h(are)f +(curren)m(tly)h(supp)s(orted.)46 b(Eac)m(h)33 b(v)m(ector)h(index)e +(can)h(itself)g(b)s(e)f(an)h(expression,)0 2805 y(although)39 +b(it)g(m)m(ust)g(ev)-5 b(aluate)40 b(to)f(an)g(in)m(teger)h(v)-5 +b(alue)39 b(within)f(the)h(b)s(ounds)d(of)j(the)g(v)m(ector.)67 +b(V)-8 b(ector)40 b(columns)0 2918 y(whic)m(h)31 b(con)m(tain)h(spaces) +g(or)f(arithmetic)h(op)s(erators)g(m)m(ust)f(ha)m(v)m(e)h(their)f +(names)g(enclosed)h(in)f("$")h(c)m(haracters)h(as)0 3031 +y(with)d($ARRA)-8 b(Y-4D$[1,2,3,4].)0 3191 y(A)45 b(more)f(C-lik)m(e)i +(syn)m(tax)g(for)e(sp)s(ecifying)g(v)m(ector)j(indices)d(is)h(also)h(a) +m(v)-5 b(ailable.)85 b(The)45 b(elemen)m(t)h(used)d(in)i(the)0 +3304 y(preceding)28 b(example)h(alternativ)m(ely)i(could)d(b)s(e)g(sp)s +(eci\014ed)g(with)f(the)i(syn)m(tax)g(ARRA)-8 b(Y4D[4][3][2][1].)45 +b(Note)30 b(the)0 3417 y(rev)m(erse)40 b(order)f(of)h(indices)f(\(as)h +(in)f(C\),)h(as)f(w)m(ell)i(as)e(the)h(fact)g(that)g(the)g(v)-5 +b(alues)40 b(are)f(still)i(ones-based)e(\(as)h(in)0 3530 +y(F)-8 b(ortran)39 b({)g(adopted)g(to)g(a)m(v)m(oid)h(am)m(biguit)m(y)g +(for)f(1D)g(v)m(ectors\).)67 b(With)39 b(this)g(syn)m(tax,)i(one)e(do)s +(es)f(not)h(need)f(to)0 3643 y(sp)s(ecify)30 b(all)h(of)g(the)f +(indices.)41 b(T)-8 b(o)31 b(extract)h(a)f(3D)g(slice)g(of)g(this)f(4D) +h(arra)m(y)-8 b(,)32 b(use)e(ARRA)-8 b(Y4D[4].)0 3803 +y(V)g(ariable-length)33 b(v)m(ector)f(columns)e(are)g(not)h(supp)s +(orted.)0 3963 y(V)-8 b(ectors)24 b(can)e(b)s(e)f(man)m(ually)h +(constructed)h(within)e(the)h(expression)g(using)f(a)h(comma-separated) +i(list)f(of)f(elemen)m(ts)0 4076 y(surrounded)35 b(b)m(y)j(curly)g +(braces)h(\(')p Fc(fg)p Fi('\).)66 b(F)-8 b(or)38 b(example,)j(')p +Fc(f)p Fi(1,3,6,1)p Fc(g)p Fi(')h(is)d(a)f(4-elemen)m(t)i(v)m(ector)g +(con)m(taining)g(the)0 4189 y(v)-5 b(alues)26 b(1,)h(3,)g(6,)g(and)e +(1.)40 b(The)25 b(v)m(ector)i(can)f(con)m(tain)h(only)f(b)s(o)s(olean,) +g(in)m(teger,)j(and)c(real)h(v)-5 b(alues)26 b(\(or)g(expressions\).)0 +4302 y(The)e(elemen)m(ts)h(will)g(b)s(e)f(promoted)g(to)h(the)g +(highest)f(datat)m(yp)s(e)h(presen)m(t.)39 b(An)m(y)24 +b(elemen)m(ts)i(whic)m(h)e(are)h(themselv)m(es)0 4415 +y(v)m(ectors,)40 b(will)d(b)s(e)f(expanded)g(out)h(with)g(eac)m(h)g(of) +g(its)g(elemen)m(ts)i(b)s(ecoming)d(an)h(elemen)m(t)h(in)f(the)g +(constructed)0 4528 y(v)m(ector.)0 4818 y Fb(8.11.4)113 +b(Go)s(o)s(d)38 b(Time)g(In)m(terv)-6 b(al)37 b(Filtering)0 +5036 y Fi(A)44 b(common)g(\014ltering)h(metho)s(d)e(in)m(v)m(olv)m(es)j +(selecting)g(ro)m(ws)e(whic)m(h)f(ha)m(v)m(e)j(a)e(time)h(v)-5 +b(alue)44 b(whic)m(h)g(lies)g(within)0 5149 y(what)37 +b(is)g(called)i(a)f(Go)s(o)s(d)f(Time)g(In)m(terv)-5 +b(al)38 b(or)f(GTI.)g(The)g(time)h(in)m(terv)-5 b(als)38 +b(are)g(de\014ned)e(in)h(a)g(separate)i(FITS)0 5262 y(table)i +(extension)g(whic)m(h)e(con)m(tains)i(2)g(columns)f(giving)g(the)h +(start)f(and)g(stop)g(time)g(of)g(eac)m(h)i(go)s(o)s(d)e(in)m(terv)-5 +b(al.)0 5375 y(The)34 b(\014ltering)h(op)s(eration)h(accepts)g(only)e +(those)i(ro)m(ws)e(of)h(the)g(input)f(table)i(whic)m(h)e(ha)m(v)m(e)i +(an)f(asso)s(ciated)h(time)0 5488 y(whic)m(h)f(falls)i(within)e(one)h +(of)g(the)g(time)g(in)m(terv)-5 b(als)37 b(de\014ned)e(in)g(the)h(GTI)g +(extension.)57 b(A)36 b(high)g(lev)m(el)h(function,)0 +5601 y(gti\014lter\(a,b,c,d\),)44 b(is)c(a)m(v)-5 b(ailable)42 +b(whic)m(h)d(ev)-5 b(aluates)41 b(eac)m(h)g(ro)m(w)e(of)h(the)f(input)g +(table)h(and)f(returns)f(TR)m(UE)i(or)0 5714 y(F)-10 +b(ALSE)30 b(dep)s(ending)f(whether)h(the)g(ro)m(w)h(is)f(inside)g(or)g +(outside)h(the)g(go)s(o)s(d)f(time)h(in)m(terv)-5 b(al.)42 +b(The)30 b(syn)m(tax)h(is)p eop end +%%Page: 100 106 +TeXDict begin 100 105 bop 0 299 a Fi(100)1573 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)286 +555 y Fe(gtifilter\()45 b([)j("gtifile")d([,)i(expr)g([,)g("STARTCOL",) +e("STOPCOL")g(])j(])f(])g(\))0 799 y Fi(where)20 b(eac)m(h)h("[]")h +(demarks)e(optional)h(parameters.)38 b(Note)21 b(that)g(the)g(quotes)f +(around)g(the)g(gti\014le)i(and)d(ST)-8 b(AR)g(T/STOP)0 +912 y(column)33 b(are)h(required.)50 b(Either)34 b(single)g(or)g +(double)f(quotes)h(ma)m(y)g(b)s(e)f(used.)50 b(In)33 +b(cases)h(where)g(this)f(expression)0 1024 y(is)d(en)m(tered)g(on)g +(the)g(Unix)g(command)g(line,)g(enclose)h(the)f(en)m(tire)h(expression) +f(in)f(double)h(quotes,)g(and)g(then)f(use)0 1137 y(single)c(quotes)g +(within)e(the)i(expression)f(to)h(enclose)g(the)g('gti\014le')h(and)d +(other)i(terms.)38 b(It)25 b(is)f(also)h(usually)f(p)s(ossible)0 +1250 y(to)38 b(do)e(the)h(rev)m(erse,)j(and)c(enclose)i(the)f(whole)g +(expression)g(in)f(single)i(quotes)f(and)f(then)h(use)f(double)g +(quotes)0 1363 y(within)d(the)g(expression.)50 b(The)33 +b(gti\014le,)i(if)f(sp)s(eci\014ed,)f(can)h(b)s(e)f(blank)g(\(""\))i +(whic)m(h)e(will)g(mean)h(to)g(use)f(the)h(\014rst)0 +1476 y(extension)g(with)g(the)f(name)h("*GTI*")h(in)f(the)f(curren)m(t) +h(\014le,)h(a)f(plain)f(extension)h(sp)s(eci\014er)f(\(eg,)j("+2",)g +("[2]",)0 1589 y(or)30 b("[STDGTI]"\))i(whic)m(h)e(will)h(b)s(e)f(used) +f(to)j(select)g(an)e(extension)h(in)f(the)h(curren)m(t)f(\014le,)h(or)f +(a)h(regular)g(\014lename)0 1702 y(with)f(or)h(without)f(an)h +(extension)g(sp)s(eci\014er)f(whic)m(h)g(in)g(the)h(latter)h(case)f +(will)g(mean)f(to)i(use)e(the)h(\014rst)e(extension)0 +1815 y(with)37 b(an)g(extension)g(name)h("*GTI*".)62 +b(Expr)36 b(can)h(b)s(e)g(an)m(y)g(arithmetic)i(expression,)f +(including)f(simply)g(the)0 1928 y(time)f(column)g(name.)57 +b(A)36 b(v)m(ector)h(time)g(expression)e(will)h(pro)s(duce)f(a)h(v)m +(ector)h(b)s(o)s(olean)f(result.)57 b(ST)-8 b(AR)g(TCOL)0 +2041 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)i(in)f(the)h(GTI)g(extension.)41 +b(If)27 b(one)h(of)g(them)0 2154 y(is)i(sp)s(eci\014ed,)g(they)h(b)s +(oth)f(m)m(ust)g(b)s(e.)0 2314 y(In)21 b(its)h(simplest)g(form,)i(no)d +(parameters)h(need)g(to)h(b)s(e)e(pro)m(vided)g({)h(default)g(v)-5 +b(alues)22 b(will)h(b)s(e)e(used.)37 b(The)21 b(expression)0 +2427 y("gti\014lter\(\)")33 b(is)e(equiv)-5 b(alen)m(t)31 +b(to)334 2670 y Fe(gtifilter\()45 b("",)i(TIME,)f("*START*",)f +("*STOP*")h(\))0 2913 y Fi(This)31 b(will)g(searc)m(h)h(the)g(curren)m +(t)f(\014le)g(for)g(a)h(GTI)f(extension,)h(\014lter)g(the)f(TIME)g +(column)g(in)g(the)h(curren)m(t)f(table,)0 3026 y(using)j(ST)-8 +b(AR)g(T/STOP)34 b(times)i(tak)m(en)f(from)g(columns)f(in)h(the)g(GTI)g +(extension)g(with)g(names)f(con)m(taining)j(the)0 3139 +y(strings)32 b("ST)-8 b(AR)g(T")33 b(and)e("STOP".)46 +b(The)32 b(wildcards)f(\('*'\))j(allo)m(w)g(sligh)m(t)f(v)-5 +b(ariations)33 b(in)f(naming)g(con)m(v)m(en)m(tions)0 +3252 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)g(v)-5 b(alues)38 +b(apply)g(for)g(unsp)s(eci\014ed)f(parame-)0 3365 y(ters)f(when)f(the)h +(\014rst)f(one)i(or)f(t)m(w)m(o)h(parameters)f(are)h(sp)s(eci\014ed.)56 +b(The)36 b(function)f(automatically)k(searc)m(hes)e(for)0 +3478 y(TIMEZER)m(O/I/F)g(k)m(eyw)m(ords)f(in)g(the)h(curren)m(t)f(and)g +(GTI)g(extensions,)i(applying)f(a)f(relativ)m(e)j(time)e(o\013set,)i +(if)0 3591 y(necessary)-8 b(.)0 3879 y Fb(8.11.5)113 +b(Spatial)38 b(Region)g(Filtering)0 4098 y Fi(Another)g(common)g +(\014ltering)g(metho)s(d)f(selects)i(ro)m(ws)f(based)g(on)f(whether)h +(the)g(spatial)h(p)s(osition)e(asso)s(ciated)0 4211 y(with)32 +b(eac)m(h)i(ro)m(w)e(is)h(lo)s(cated)h(within)e(a)h(giv)m(en)g +(2-dimensional)g(region.)48 b(The)32 b(syn)m(tax)h(for)f(this)h +(high-lev)m(el)h(\014lter)0 4324 y(is)334 4567 y Fe(regfilter\()45 +b("regfilename")f([)k(,)f(Xexpr,)f(Yexpr)h([)g(,)h("wcs)e(cols")h(])g +(])g(\))0 4811 y Fi(where)22 b(eac)m(h)i("[]")g(demarks)e(optional)i +(parameters.)38 b(The)22 b(region)h(\014le)g(name)f(is)h(required)f +(and)g(m)m(ust)g(b)s(e)g(enclosed)0 4924 y(in)34 b(quotes.)51 +b(The)33 b(remaining)h(parameters)h(are)f(optional.)52 +b(There)33 b(are)i(2)f(supp)s(orted)e(formats)i(for)f(the)h(region)0 +5036 y(\014le:)62 b(ASCI)s(I)39 b(\014le)h(or)h(FITS)f(binary)g(table.) +73 b(The)40 b(region)h(\014le)g(con)m(tains)h(a)f(list)g(of)g(one)g(or) +g(more)g(geometric)0 5149 y(shap)s(es)30 b(\(circle,)j(ellipse,)g(b)s +(o)m(x,)e(etc.\))44 b(whic)m(h)31 b(de\014nes)f(a)i(region)g(on)f(the)g +(celestial)j(sphere)c(or)h(an)g(area)h(within)f(a)0 5262 +y(particular)36 b(2D)g(image.)57 b(The)35 b(region)h(\014le)f(is)g(t)m +(ypically)j(generated)e(using)f(an)g(image)i(displa)m(y)e(program)g +(suc)m(h)0 5375 y(as)e(fv/PO)m(W)g(\(distribute)f(b)m(y)h(the)f(HEASAR) +m(C\),)h(or)g(ds9)f(\(distributed)g(b)m(y)g(the)h(Smithsonian)f +(Astroph)m(ysical)0 5488 y(Observ)-5 b(atory\).)69 b(Users)39 +b(should)g(refer)g(to)h(the)g(do)s(cumen)m(tation)h(pro)m(vided)e(with) +g(these)h(programs)f(for)h(more)0 5601 y(details)29 b(on)f(the)g(syn)m +(tax)h(used)e(in)h(the)h(region)f(\014les.)40 b(The)28 +b(FITS)f(region)i(\014le)f(format)h(is)f(de\014ned)f(in)h(a)g(do)s +(cumen)m(t)0 5714 y(a)m(v)-5 b(ailable)33 b(from)d(the)g(FITS)g(Supp)s +(ort)e(O\016ce)j(at)g(h)m(ttp://\014ts.gsfc.nasa.go)m(v/)k(registry/)c +(region.h)m(tml)p eop end +%%Page: 101 107 +TeXDict begin 101 106 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)1982 b Fi(101)0 +555 y(In)21 b(its)h(simplest)g(form,)i(\(e.g.,)h +(reg\014lter\("region.reg"\))h(\))c(the)g(co)s(ordinates)g(in)g(the)g +(default)g('X')h(and)e('Y')h(columns)0 668 y(will)43 +b(b)s(e)g(used)f(to)i(determine)f(if)g(eac)m(h)h(ro)m(w)f(is)g(inside)g +(or)g(outside)g(the)g(area)h(sp)s(eci\014ed)e(in)h(the)g(region)h +(\014le.)0 781 y(Alternate)32 b(p)s(osition)e(column)g(names,)h(or)f +(expressions,)h(ma)m(y)g(b)s(e)e(en)m(tered)i(if)g(needed,)f(as)h(in) +382 1039 y Fe(regfilter\("region.reg",)41 b(XPOS,)47 +b(YPOS\))0 1297 y Fi(Region)37 b(\014ltering)f(can)g(b)s(e)f(applied)g +(most)h(unam)m(biguously)f(if)h(the)g(p)s(ositions)g(in)f(the)h(region) +g(\014le)g(and)f(in)h(the)0 1410 y(table)g(to)g(b)s(e)e(\014ltered)h +(are)h(b)s(oth)e(giv)m(e)j(in)e(terms)g(of)g(absolute)h(celestial)i(co) +s(ordinate)e(units.)54 b(In)35 b(this)g(case)h(the)0 +1523 y(lo)s(cations)26 b(and)d(sizes)i(of)g(the)f(geometric)i(shap)s +(es)e(in)g(the)g(region)h(\014le)f(are)h(sp)s(eci\014ed)f(in)g(angular) +g(units)g(on)g(the)g(sky)0 1636 y(\(e.g.,)32 b(p)s(ositions)e(giv)m(en) +i(in)e(R.A.)g(and)g(Dec.)42 b(and)30 b(sizes)h(in)f(arcseconds)g(or)h +(arcmin)m(utes\).)41 b(Similarly)-8 b(,)31 b(eac)m(h)h(ro)m(w)0 +1749 y(of)h(the)h(\014ltered)f(table)h(will)f(ha)m(v)m(e)i(a)e +(celestial)j(co)s(ordinate)e(asso)s(ciated)g(with)f(it.)50 +b(This)32 b(asso)s(ciation)j(is)e(usually)0 1862 y(implemen)m(ted)39 +b(using)e(a)i(set)g(of)f(so-called)i('W)-8 b(orld)39 +b(Co)s(ordinate)g(System')f(\(or)h(W)m(CS\))f(FITS)g(k)m(eyw)m(ords)g +(that)0 1975 y(de\014ne)27 b(the)g(co)s(ordinate)h(transformation)g +(that)g(m)m(ust)f(b)s(e)f(applied)h(to)h(the)g(v)-5 b(alues)27 +b(in)g(the)h('X')g(and)e('Y')i(columns)0 2088 y(to)j(calculate)i(the)d +(co)s(ordinate.)0 2248 y(Alternativ)m(ely)-8 b(,)30 b(one)d(can)g(p)s +(erform)e(spatial)j(\014ltering)e(using)g(unitless)h('pixel')g(co)s +(ordinates)h(for)e(the)h(regions)g(and)0 2361 y(ro)m(w)33 +b(p)s(ositions.)49 b(In)33 b(this)g(case)h(the)f(user)g(m)m(ust)g(b)s +(e)f(careful)h(to)h(ensure)f(that)g(the)h(p)s(ositions)f(in)g(the)g(2)g +(\014les)h(are)0 2474 y(self-consisten)m(t.)54 b(A)34 +b(t)m(ypical)i(problem)d(is)h(that)h(the)f(region)h(\014le)f(ma)m(y)h +(b)s(e)e(generated)j(using)d(a)i(binned)d(image,)0 2587 +y(but)g(the)h(un)m(binned)e(co)s(ordinates)i(are)g(giv)m(en)h(in)e(the) +h(ev)m(en)m(t)i(table.)48 b(The)32 b(R)m(OSA)-8 b(T)33 +b(ev)m(en)m(ts)h(\014les,)g(for)e(example,)0 2700 y(ha)m(v)m(e)f(X)f +(and)f(Y)g(pixel)h(co)s(ordinates)g(that)h(range)f(from)f(1)h(-)g +(15360.)42 b(These)30 b(co)s(ordinates)g(are)g(t)m(ypically)h(binned)0 +2812 y(b)m(y)i(a)h(factor)g(of)f(32)h(to)g(pro)s(duce)e(a)i(480x480)i +(pixel)d(image.)51 b(If)32 b(one)i(then)f(uses)g(a)g(region)h(\014le)f +(generated)h(from)0 2925 y(this)c(image)i(\(in)f(image)g(pixel)g +(units\))g(to)g(\014lter)f(the)h(R)m(OSA)-8 b(T)30 b(ev)m(en)m(ts)i +(\014le,)f(then)f(the)h(X)g(and)f(Y)g(column)h(v)-5 b(alues)0 +3038 y(m)m(ust)30 b(b)s(e)g(con)m(v)m(erted)i(to)f(corresp)s(onding)e +(pixel)i(units)f(as)g(in:)382 3296 y Fe(regfilter\("rosat.reg",)42 +b(X/32.+.5,)j(Y/32.+.5\))0 3555 y Fi(Note)h(that)f(this)f(binning)f +(con)m(v)m(ersion)j(is)e(not)h(necessary)g(if)f(the)h(region)g(\014le)f +(is)h(sp)s(eci\014ed)e(using)h(celestial)0 3668 y(co)s(ordinate)h +(units)f(instead)g(of)g(pixel)h(units)f(b)s(ecause)g(CFITSIO)e(is)j +(then)e(able)i(to)g(directly)g(compare)g(the)0 3780 y(celestial)30 +b(co)s(ordinate)f(of)e(eac)m(h)i(ro)m(w)f(in)f(the)h(table)g(with)g +(the)f(celestial)k(co)s(ordinates)d(in)f(the)h(region)g(\014le)g +(without)0 3893 y(ha)m(ving)j(to)g(kno)m(w)f(an)m(ything)h(ab)s(out)f +(ho)m(w)h(the)f(image)i(ma)m(y)f(ha)m(v)m(e)g(b)s(een)f(binned.)0 +4054 y(The)f(last)h("w)m(cs)g(cols")h(parameter)f(should)e(rarely)h(b)s +(e)g(needed.)40 b(If)29 b(supplied,)f(this)i(string)f(con)m(tains)i +(the)e(names)0 4166 y(of)37 b(the)g(2)h(columns)f(\(space)h(or)f(comma) +g(separated\))h(whic)m(h)f(ha)m(v)m(e)h(the)g(asso)s(ciated)g(W)m(CS)f +(k)m(eyw)m(ords.)61 b(If)37 b(not)0 4279 y(supplied,)f(the)g(\014lter)g +(will)h(scan)f(the)g(X)g(and)f(Y)h(expressions)g(for)g(column)f(names.) +58 b(If)35 b(only)h(one)h(is)f(found)e(in)0 4392 y(eac)m(h)e +(expression,)e(those)h(columns)f(will)h(b)s(e)e(used,)h(otherwise)h(an) +f(error)g(will)h(b)s(e)f(returned.)0 4552 y(These)g(region)h(shap)s(es) +f(are)g(supp)s(orted)f(\(names)h(are)h(case)h(insensitiv)m(e\):)334 +4811 y Fe(Point)428 b(\()48 b(X1,)f(Y1)g(\))715 b(<-)48 +b(One)f(pixel)f(square)g(region)334 4924 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) +334 5036 y(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 5149 y(Rectangle)236 +b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(A)h(\))334 b(|)47 b(boundaries)e +(considered)334 5262 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 5375 y(Diamond)332 +b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i(\))334 5488 +y(Circle)380 b(\()48 b(Xc,)f(Yc,)g(R)g(\))334 5601 y(Annulus)332 +b(\()48 b(Xc,)f(Yc,)g(Rin,)f(Rout)h(\))334 5714 y(Ellipse)332 +b(\()48 b(Xc,)f(Yc,)g(Rx,)f(Ry,)h(A)h(\))p eop end +%%Page: 102 108 +TeXDict begin 102 107 bop 0 299 a Fi(102)1573 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)334 +555 y Fe(Elliptannulus)44 b(\()k(Xc,)f(Yc,)g(Rinx,)f(Riny,)g(Routx,)g +(Routy,)g(Ain,)h(Aout)g(\))334 668 y(Sector)380 b(\()48 +b(Xc,)f(Yc,)g(Amin,)f(Amax)h(\))0 1111 y Fi(where)28 +b(\(Xc,Yc\))j(is)d(the)h(co)s(ordinate)h(of)e(the)h(shap)s(e's)f(cen)m +(ter;)j(\(X#,Y#\))e(are)g(the)g(co)s(ordinates)g(of)g(the)g(shap)s(e's) +0 1224 y(edges;)36 b(Rxxx)d(are)h(the)f(shap)s(es')g(v)-5 +b(arious)34 b(Radii)f(or)h(semi-ma)5 b(jor/minor)34 b(axes;)i(and)d +(Axxx)g(are)h(the)f(angles)i(of)0 1337 y(rotation)e(\(or)e(b)s(ounding) +f(angles)i(for)f(Sector\))h(in)f(degrees.)44 b(F)-8 b(or)32 +b(rotated)h(shap)s(es,)e(the)g(rotation)i(angle)f(can)g(b)s(e)0 +1450 y(left)g(o\013,)h(indicating)f(no)f(rotation.)46 +b(Common)31 b(alternate)i(names)e(for)h(the)f(regions)h(can)g(also)h(b) +s(e)d(used:)43 b(rotb)s(o)m(x)0 1563 y(=)29 b(b)s(o)m(x;)g +(rotrectangle)i(=)e(rectangle;)i(\(rot\)rhom)m(bus)e(=)f +(\(rot\)diamond;)j(and)d(pie)h(=)f(sector.)42 b(When)28 +b(a)i(shap)s(e's)0 1676 y(name)e(is)g(preceded)f(b)m(y)h(a)g(min)m(us)g +(sign,)g('-',)i(the)e(de\014ned)e(region)j(is)f(instead)g(the)g(area)h +(*outside*)g(its)f(b)s(oundary)0 1789 y(\(ie,)36 b(the)e(region)h(is)f +(in)m(v)m(erted\).)53 b(All)34 b(the)g(shap)s(es)f(within)h(a)g(single) +h(region)f(\014le)h(are)f(OR'd)f(together)j(to)e(create)0 +1902 y(the)29 b(region,)i(and)d(the)i(order)f(is)g(signi\014can)m(t.)41 +b(The)29 b(o)m(v)m(erall)i(w)m(a)m(y)g(of)e(lo)s(oking)h(at)g(region)g +(\014les)f(is)g(that)h(if)f(the)h(\014rst)0 2015 y(region)f(is)g(an)g +(excluded)g(region)g(then)f(a)i(dumm)m(y)d(included)h(region)i(of)f +(the)g(whole)g(detector)h(is)f(inserted)f(in)h(the)0 +2128 y(fron)m(t.)40 b(Then)25 b(eac)m(h)j(region)f(sp)s(eci\014cation)h +(as)f(it)g(is)g(pro)s(cessed)f(o)m(v)m(errides)h(an)m(y)g(selections)i +(inside)d(of)h(that)g(region)0 2240 y(sp)s(eci\014ed)36 +b(b)m(y)g(previous)g(regions.)59 b(Another)37 b(w)m(a)m(y)g(of)g +(thinking)f(ab)s(out)g(this)g(is)h(that)g(if)f(a)h(previous)f(excluded) +0 2353 y(region)31 b(is)f(completely)i(inside)f(of)f(a)h(subsequen)m(t) +e(included)h(region)h(the)g(excluded)f(region)h(is)f(ignored.)0 +2514 y(The)44 b(p)s(ositional)i(co)s(ordinates)g(ma)m(y)f(b)s(e)g(giv)m +(en)h(either)f(in)g(pixel)g(units,)j(decimal)e(degrees)g(or)f +(hh:mm:ss.s,)0 2626 y(dd:mm:ss.s)25 b(units.)38 b(The)26 +b(shap)s(e)f(sizes)i(ma)m(y)f(b)s(e)g(giv)m(en)h(in)e(pixels,)j +(degrees,)f(arcmin)m(utes,)h(or)e(arcseconds.)40 b(Lo)s(ok)0 +2739 y(at)31 b(examples)g(of)f(region)h(\014le)g(pro)s(duced)d(b)m(y)i +(fv/PO)m(W)h(or)g(ds9)f(for)g(further)f(details)i(of)g(the)f(region)h +(\014le)f(format.)0 2900 y(There)37 b(are)g(three)g(functions)g(that)g +(are)h(primarily)f(for)f(use)h(with)g(SA)m(O)g(region)g(\014les)g(and)g +(the)g(FSA)m(OI)g(task,)0 3012 y(but)e(they)h(can)h(b)s(e)e(used)g +(directly)-8 b(.)59 b(They)36 b(return)f(a)h(b)s(o)s(olean)g(true)g(or) +g(false)g(dep)s(ending)f(on)h(whether)f(a)i(t)m(w)m(o)0 +3125 y(dimensional)31 b(p)s(oin)m(t)f(is)g(in)g(the)h(region)g(or)f +(not:)191 3569 y Fe("point)46 b(in)h(a)h(circular)d(region")477 +3681 y(circle\(xcntr,ycntr,radius)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 +3907 y("point)h(in)h(an)g(elliptical)e(region")430 4020 +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 4246 y("point)h(in)h(a)h +(rectangular)c(region")620 4359 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 +4585 y(where)334 4698 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 +4811 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 4924 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 +5036 y(\(radius\))f(is)h(half)f(the)h(diameter)f(of)h(the)g(circle)334 +5149 y(\(rotation\))e(is)i(the)g(angle\(degrees\))d(that)j(the)g +(region)f(is)h(rotated)f(with)620 5262 y(respect)g(to)h +(\(xcntr,ycntr\))334 5375 y(\(Xcoord,Ycoord\))d(are)j(the)g(\(x,y\))f +(coordinates)f(to)i(test,)f(usually)g(column)620 5488 +y(names)334 5601 y(NOTE:)g(each)h(parameter)e(can)i(itself)f(be)i(an)f +(expression,)d(not)j(merely)f(a)620 5714 y(column)h(name)f(or)h +(constant.)p eop end +%%Page: 103 109 +TeXDict begin 103 108 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31 +b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)1982 b Fi(103)0 +555 y Fb(8.11.6)113 b(Example)38 b(Ro)m(w)f(Filters)191 +859 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 972 +y(than)94 b(fifth)47 b(magnitude)e(\(note)h(that)1766 +1085 y(the)h(initial)f(space)g(is)h(necessary)e(to)1766 +1197 y(prevent)h(it)h(from)g(being)f(treated)g(as)h(a)1766 +1310 y(binning)f(specification\))191 1536 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 1762 y([IMAGE[4,5])f(.gt.)h(100])476 b(-)48 +b(Extract)e(all)h(rows)f(that)h(have)g(the)1766 1875 +y(\(4,5\))f(component)g(of)h(the)g(IMAGE)f(column)1766 +1988 y(greater)g(than)g(100)191 2214 y([abs\(sin\(theta)e(*)j(#deg\)\)) +f(<)i(0.5])e(-)i(Extract)e(all)h(rows)f(having)g(the)1766 +2327 y(absolute)f(value)i(of)g(the)g(sine)g(of)g(theta)1766 +2439 y(less)94 b(than)47 b(a)g(half)g(where)f(the)h(angles)1766 +2552 y(are)g(tabulated)e(in)i(degrees)191 2778 y([SUM\()f(SPEC)h(>)g +(3*BACKGRND)e(\)>=1])94 b(-)48 b(Extract)e(all)h(rows)f(containing)f(a) +1766 2891 y(spectrum,)g(held)i(in)g(vector)f(column)1766 +3004 y(SPEC,)g(with)h(at)g(least)f(one)h(value)g(3)1766 +3117 y(times)f(greater)g(than)h(the)g(background)1766 +3230 y(level)f(held)h(in)g(a)h(keyword,)d(BACKGRND)191 +3456 y([VCOL=={1,4,2}])759 b(-)48 b(Extract)e(all)h(rows)f(whose)h +(vector)f(column)1766 3569 y(VCOL)h(contains)e(the)i(3-elements)e(1,)i +(4,)g(and)1766 3681 y(2.)191 3907 y([@rowFilter.txt])711 +b(-)48 b(Extract)e(rows)g(using)h(the)g(expression)1766 +4020 y(contained)e(within)h(the)h(text)g(file)1766 4133 +y(rowFilter.txt)191 4359 y([gtifilter\(\)])855 b(-)48 +b(Search)e(the)h(current)f(file)g(for)h(a)h(GTI)239 4472 +y(extension,)92 b(filter)i(the)47 b(TIME)239 4585 y(column)f(in)h(the)g +(current)f(table,)g(using)239 4698 y(START/STOP)f(times)h(taken)g(from) +239 4811 y(columns)f(in)j(the)f(GTI)94 b(extension)191 +5036 y([regfilter\("pow.reg"\)])423 b(-)48 b(Extract)e(rows)g(which)h +(have)f(a)i(coordinate)1766 5149 y(\(as)f(given)f(in)h(the)g(X)h(and)f +(Y)g(columns\))1766 5262 y(within)f(the)h(spatial)f(region)g(specified) +1766 5375 y(in)h(the)g(pow.reg)f(region)g(file.)191 5601 +y([regfilter\("pow.reg",)c(Xs,)47 b(Ys\)])f(-)i(Same)f(as)g(above,)f +(except)g(that)h(the)1766 5714 y(Xs)g(and)g(Ys)g(columns)f(will)h(be)g +(used)f(to)p eop end +%%Page: 104 110 +TeXDict begin 104 109 bop 0 299 a Fi(104)1573 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)1766 +555 y Fe(determine)45 b(the)i(coordinate)e(of)i(each)1766 +668 y(row)g(in)g(the)g(table.)0 1001 y Fd(8.12)180 b(Binning)45 +b(or)g(Histogramming)i(Sp)t(eci\014cation)0 1252 y Fi(The)22 +b(optional)i(binning)e(sp)s(eci\014er)g(is)h(enclosed)h(in)f(square)f +(brac)m(k)m(ets)j(and)d(can)h(b)s(e)f(distinguished)g(from)h(a)g +(general)0 1365 y(ro)m(w)32 b(\014lter)h(sp)s(eci\014cation)g(b)m(y)f +(the)h(fact)g(that)g(it)g(b)s(egins)f(with)g(the)g(k)m(eyw)m(ord)h +('bin')f(not)h(immediately)g(follo)m(w)m(ed)0 1477 y(b)m(y)41 +b(an)f(equals)i(sign.)72 b(When)41 b(binning)e(is)i(sp)s(eci\014ed,)i +(a)e(temp)s(orary)g(N-dimensional)g(FITS)f(primary)g(arra)m(y)0 +1590 y(is)j(created)h(b)m(y)f(computing)h(the)f(histogram)h(of)f(the)g +(v)-5 b(alues)44 b(in)e(the)i(sp)s(eci\014ed)e(columns)h(of)g(a)h(FITS) +e(table)0 1703 y(extension.)f(After)30 b(the)f(histogram)h(is)g +(computed)f(the)h(input)e(FITS)h(\014le)h(con)m(taining)h(the)e(table)i +(is)e(then)g(closed)0 1816 y(and)34 b(the)h(temp)s(orary)f(FITS)g +(primary)g(arra)m(y)h(is)g(op)s(ened)f(and)g(passed)g(to)h(the)g +(application)h(program.)54 b(Th)m(us,)0 1929 y(the)39 +b(application)h(program)f(nev)m(er)g(sees)g(the)g(original)h(FITS)e +(table)i(and)e(only)h(sees)h(the)f(image)h(in)e(the)h(new)0 +2042 y(temp)s(orary)32 b(\014le)h(\(whic)m(h)g(has)f(no)h(additional)g +(extensions\).)49 b(Ob)m(viously)-8 b(,)34 b(the)f(application)h +(program)e(m)m(ust)h(b)s(e)0 2155 y(exp)s(ecting)e(to)g(op)s(en)f(a)h +(FITS)e(image)j(and)e(not)g(a)h(FITS)f(table)h(in)f(this)g(case.)0 +2315 y(The)g(data)h(t)m(yp)s(e)f(of)h(the)f(FITS)g(histogram)g(image)i +(ma)m(y)f(b)s(e)f(sp)s(eci\014ed)f(b)m(y)h(app)s(ending)f('b')h(\(for)h +(8-bit)g(b)m(yte\),)g('i')0 2428 y(\(for)g(16-bit)g(in)m(tegers\),)h +('j')f(\(for)g(32-bit)g(in)m(teger\),)i('r')d(\(for)h(32-bit)g +(\015oating)h(p)s(oin)m(ts\),)e(or)h('d')f(\(for)h(64-bit)g(double)0 +2541 y(precision)d(\015oating)h(p)s(oin)m(t\))g(to)f(the)h('bin')e(k)m +(eyw)m(ord)i(\(e.g.)41 b('[binr)28 b(X]')g(creates)i(a)e(real)h +(\015oating)g(p)s(oin)m(t)f(image\).)41 b(If)0 2654 y(the)26 +b(datat)m(yp)s(e)h(is)f(not)g(explicitly)i(sp)s(eci\014ed)d(then)h(a)g +(32-bit)h(in)m(teger)h(image)f(will)f(b)s(e)f(created)i(b)m(y)f +(default,)i(unless)0 2767 y(the)h(w)m(eigh)m(ting)h(option)f(is)g(also) +h(sp)s(eci\014ed)e(in)g(whic)m(h)h(case)g(the)g(image)h(will)f(ha)m(v)m +(e)h(a)f(32-bit)h(\015oating)g(p)s(oin)m(t)e(data)0 2880 +y(t)m(yp)s(e)j(b)m(y)f(default.)0 3040 y(The)24 b(histogram)g(image)i +(ma)m(y)f(ha)m(v)m(e)g(from)f(1)g(to)h(4)g(dimensions)e(\(axes\),)k +(dep)s(ending)c(on)h(the)g(n)m(um)m(b)s(er)f(of)h(columns)0 +3153 y(that)31 b(are)g(sp)s(eci\014ed.)40 b(The)30 b(general)h(form)f +(of)g(the)h(binning)e(sp)s(eci\014cation)i(is:)48 3410 +y Fe([bin{bijrd})92 b(Xcol=min:max:binsize,)42 b(Ycol=)47 +b(...,)f(Zcol=...,)f(Tcol=...;)h(weight])0 3668 y Fi(in)39 +b(whic)m(h)g(up)f(to)i(4)g(columns,)h(eac)m(h)f(corresp)s(onding)e(to)i +(an)g(axis)f(of)h(the)f(image,)k(are)d(listed.)67 b(The)39 +b(column)0 3781 y(names)27 b(are)h(case)h(insensitiv)m(e,)g(and)e(the)h +(column)f(n)m(um)m(b)s(er)f(ma)m(y)i(b)s(e)f(giv)m(en)h(instead)g(of)g +(the)g(name,)g(preceded)f(b)m(y)0 3894 y(a)32 b(p)s(ound)e(sign)i +(\(e.g.,)i([bin)d(#4=1:512]\).)47 b(If)31 b(the)h(column)g(name)g(is)f +(not)h(sp)s(eci\014ed,)g(then)f(CFITSIO)g(will)h(\014rst)0 +4007 y(try)37 b(to)h(use)f(the)g('preferred)f(column')i(as)f(sp)s +(eci\014ed)g(b)m(y)g(the)g(CPREF)g(k)m(eyw)m(ord)h(if)f(it)g(exists)h +(\(e.g.,)j('CPREF)0 4120 y(=)i('DETX,DETY'\),)h(otherwise)g(column)f +(names)g('X',)h('Y',)g('Z',)f(and)f('T')i(will)f(b)s(e)f(assumed)h(for) +g(eac)m(h)h(of)0 4233 y(the)37 b(4)h(axes,)i(resp)s(ectiv)m(ely)-8 +b(.)62 b(In)37 b(cases)h(where)e(the)i(column)f(name)g(could)g(b)s(e)f +(confused)h(with)g(an)g(arithmetic)0 4346 y(expression,)30 +b(enclose)i(the)f(column)f(name)g(in)g(paren)m(theses)h(to)g(force)g +(the)f(name)h(to)g(b)s(e)f(in)m(terpreted)g(literally)-8 +b(.)0 4506 y(Eac)m(h)33 b(column)f(name)g(ma)m(y)h(b)s(e)f(follo)m(w)m +(ed)h(b)m(y)g(an)f(equals)g(sign)h(and)e(then)h(the)g(lo)m(w)m(er)i +(and)e(upp)s(er)e(range)i(of)h(the)0 4619 y(histogram,)f(and)e(the)h +(size)h(of)f(the)g(histogram)h(bins,)e(separated)h(b)m(y)g(colons.)43 +b(Spaces)31 b(are)g(allo)m(w)m(ed)i(b)s(efore)e(and)0 +4731 y(after)e(the)g(equals)g(sign)f(but)g(not)h(within)f(the)h +('min:max:binsize')g(string.)40 b(The)29 b(min,)f(max)h(and)f(binsize)h +(v)-5 b(alues)0 4844 y(ma)m(y)32 b(b)s(e)e(in)m(teger)i(or)f +(\015oating)h(p)s(oin)m(t)f(n)m(um)m(b)s(ers,)f(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)g(the)g(header)g(of)0 +4957 y(the)g(table.)41 b(If)30 b(the)h(latter,)h(then)e(the)g(v)-5 +b(alue)31 b(of)g(that)g(k)m(eyw)m(ord)f(is)h(substituted)f(in)m(to)h +(the)g(expression.)0 5117 y(Default)37 b(v)-5 b(alues)36 +b(for)g(the)g(min,)h(max)f(and)g(binsize)g(quan)m(tities)h(will)f(b)s +(e)f(used)h(if)f(not)i(explicitly)g(giv)m(en)g(in)f(the)0 +5230 y(binning)29 b(expression)h(as)h(sho)m(wn)f(in)g(these)h +(examples:)191 5488 y Fe([bin)47 b(x)g(=)g(:512:2])94 +b(-)47 b(use)g(default)f(minimum)g(value)191 5601 y([bin)h(x)g(=)g +(1::2])190 b(-)47 b(use)g(default)f(maximum)g(value)191 +5714 y([bin)h(x)g(=)g(1:512])142 b(-)47 b(use)g(default)f(bin)h(size)p +eop end +%%Page: 105 111 +TeXDict begin 105 110 bop 0 299 a Fg(8.12.)113 b(BINNING)31 +b(OR)f(HISTOGRAMMING)h(SPECIFICA)-8 b(TION)1268 b Fi(105)191 +555 y Fe([bin)47 b(x)g(=)g(1:])286 b(-)47 b(use)g(default)f(maximum)g +(value)g(and)h(bin)g(size)191 668 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 +781 y([bin)g(x)g(=)g(2])334 b(-)47 b(use)g(default)f(minimum)g(and)h +(maximum)f(values)191 894 y([bin)h(x])524 b(-)47 b(use)g(default)f +(minimum,)g(maximum)g(and)g(bin)h(size)191 1007 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 1120 y([bin])619 b(-)47 b(default)f(2-D)h(image)0 +1374 y Fi(CFITSIO)31 b(will)i(use)f(the)h(v)-5 b(alue)33 +b(of)g(the)g(TLMINn,)f(TLMAXn,)h(and)f(TDBINn)h(k)m(eyw)m(ords,)h(if)e +(they)h(exist,)h(for)0 1487 y(the)j(default)f(min,)i(max,)g(and)e +(binsize,)i(resp)s(ectiv)m(ely)-8 b(.)61 b(If)36 b(they)h(do)f(not)h +(exist)g(then)f(CFITSIO)f(will)i(use)f(the)0 1600 y(actual)d(minim)m +(um)e(and)h(maxim)m(um)g(v)-5 b(alues)32 b(in)g(the)g(column)f(for)h +(the)g(histogram)h(min)e(and)h(max)g(v)-5 b(alues.)45 +b(The)0 1713 y(default)34 b(binsize)f(will)h(b)s(e)f(set)h(to)h(1,)g +(or)e(\(max)h(-)g(min\))f(/)h(10.,)i(whic)m(hev)m(er)e(is)g(smaller,)h +(so)e(that)i(the)e(histogram)0 1826 y(will)e(ha)m(v)m(e)g(at)g(least)h +(10)f(bins)f(along)h(eac)m(h)h(axis.)0 1986 y(A)41 b(shortcut)g +(notation)h(is)f(allo)m(w)m(ed)i(if)e(all)h(the)f(columns/axes)h(ha)m +(v)m(e)g(the)f(same)g(binning)f(sp)s(eci\014cation.)74 +b(In)0 2099 y(this)33 b(case)g(all)h(the)f(column)f(names)h(ma)m(y)g(b) +s(e)f(listed)h(within)f(paren)m(theses,)i(follo)m(w)m(ed)h(b)m(y)d(the) +h(\(single\))h(binning)0 2212 y(sp)s(eci\014cation,)d(as)g(in:)191 +2466 y Fe([bin)47 b(\(X,Y\)=1:512:2])191 2579 y([bin)g(\(X,Y\))f(=)h +(5])0 2834 y Fi(The)31 b(optional)i(w)m(eigh)m(ting)h(factor)e(is)g +(the)g(last)g(item)h(in)e(the)h(binning)f(sp)s(eci\014er)g(and,)h(if)f +(presen)m(t,)i(is)e(separated)0 2947 y(from)38 b(the)g(list)h(of)f +(columns)g(b)m(y)g(a)h(semi-colon.)65 b(As)39 b(the)f(histogram)h(is)f +(accum)m(ulated,)k(this)c(w)m(eigh)m(t)i(is)e(used)0 +3059 y(to)d(incremen)m(ted)f(the)g(v)-5 b(alue)35 b(of)f(the)g +(appropriated)f(bin)h(in)f(the)h(histogram.)52 b(If)34 +b(the)g(w)m(eigh)m(ting)i(factor)f(is)f(not)0 3172 y(sp)s(eci\014ed,)24 +b(then)f(the)g(default)g(w)m(eigh)m(t)i(=)d(1)i(is)f(assumed.)37 +b(The)23 b(w)m(eigh)m(ting)i(factor)f(ma)m(y)f(b)s(e)g(a)g(constan)m(t) +i(in)m(teger)f(or)0 3285 y(\015oating)30 b(p)s(oin)m(t)f(n)m(um)m(b)s +(er,)f(or)h(the)g(name)g(of)g(a)g(k)m(eyw)m(ord)h(con)m(taining)g(the)g +(w)m(eigh)m(ting)g(v)-5 b(alue.)41 b(Or)28 b(the)h(w)m(eigh)m(ting)0 +3398 y(factor)g(ma)m(y)g(b)s(e)e(the)h(name)g(of)h(a)f(table)h(column)f +(in)g(whic)m(h)f(case)j(the)e(v)-5 b(alue)28 b(in)g(that)h(column,)f +(on)g(a)h(ro)m(w)f(b)m(y)g(ro)m(w)0 3511 y(basis,)i(will)h(b)s(e)f +(used.)0 3671 y(In)35 b(some)h(cases,)i(the)d(column)h(or)f(k)m(eyw)m +(ord)h(ma)m(y)g(giv)m(e)h(the)f(recipro)s(cal)g(of)g(the)g(actual)h(w)m +(eigh)m(t)g(v)-5 b(alue)36 b(that)g(is)0 3784 y(needed.)49 +b(In)32 b(this)h(case,)i(precede)e(the)h(w)m(eigh)m(t)g(k)m(eyw)m(ord)g +(or)f(column)g(name)g(b)m(y)g(a)g(slash)g('/')h(to)g(tell)g(CFITSIO)0 +3897 y(to)d(use)f(the)h(recipro)s(cal)g(of)f(the)h(v)-5 +b(alue)31 b(when)e(constructing)i(the)g(histogram.)0 +4057 y(F)-8 b(or)35 b(complex)f(or)g(commonly)g(used)f(histograms,)j +(one)e(can)g(also)h(place)g(its)f(description)g(in)m(to)h(a)f(text)h +(\014le)f(and)0 4170 y(imp)s(ort)44 b(it)g(in)m(to)i(the)e(binning)f +(sp)s(eci\014cation)i(using)f(the)h(syn)m(tax)f('[bin)g +(@\014lename.txt]'.)84 b(The)44 b(\014le's)g(con-)0 4283 +y(ten)m(ts)37 b(can)e(extend)h(o)m(v)m(er)h(m)m(ultiple)f(lines,)i +(although)e(it)g(m)m(ust)f(still)i(conform)f(to)g(the)g(no-spaces)g +(rule)f(for)h(the)0 4396 y(min:max:binsize)h(syn)m(tax)h(and)e(eac)m(h) +i(axis)g(sp)s(eci\014cation)g(m)m(ust)f(still)g(b)s(e)g +(comma-separated.)62 b(An)m(y)37 b(lines)g(in)0 4509 +y(the)32 b(external)h(text)g(\014le)f(that)h(b)s(egin)e(with)h(2)g +(slash)g(c)m(haracters)h(\('//'\))h(will)e(b)s(e)g(ignored)g(and)f(ma)m +(y)i(b)s(e)e(used)g(to)0 4622 y(add)f(commen)m(ts)h(in)m(to)g(the)g +(\014le.)0 4782 y(Examples:)191 5036 y Fe([bini)46 b(detx,)h(dety])762 +b(-)47 b(2-D,)g(16-bit)f(integer)g(histogram)1861 5149 +y(of)i(DETX)e(and)h(DETY)g(columns,)e(using)1861 5262 +y(default)h(values)g(for)h(the)g(histogram)1861 5375 +y(range)g(and)g(binsize)191 5601 y([bin)g(\(detx,)f(dety\)=16;)f +(/exposure])g(-)i(2-D,)g(32-bit)f(real)h(histogram)e(of)i(DETX)1861 +5714 y(and)g(DETY)g(columns)f(with)g(a)i(bin)f(size)f(=)i(16)p +eop end +%%Page: 106 112 +TeXDict begin 106 111 bop 0 299 a Fi(106)1573 b Fg(CHAPTER)30 +b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)1861 +555 y Fe(in)48 b(both)e(axes.)h(The)f(histogram)g(values)1861 +668 y(are)h(divided)f(by)h(the)g(EXPOSURE)f(keyword)1861 +781 y(value.)191 1007 y([bin)h(time=TSTART:TSTOP:0.1])280 +b(-)47 b(1-D)g(lightcurve,)e(range)h(determined)f(by)1861 +1120 y(the)i(TSTART)f(and)h(TSTOP)g(keywords,)1861 1233 +y(with)g(0.1)g(unit)g(size)f(bins.)191 1458 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 1571 y(of)i(the)e(PHA)h(column)f(for)h(the)g(X)h(axis,) +1861 1684 y(and)f(1000)g(bins)g(in)g(the)g(range)1861 +1797 y(8000.)g(to)g(8100.)f(for)h(the)g(Y)h(axis.)191 +2023 y([bin)f(@binFilter.txt])616 b(-)47 b(Use)g(the)g(contents)f(of)h +(the)g(text)f(file)1861 2136 y(binFilter.txt)f(for)h(the)h(binning)1861 +2249 y(specifications.)p eop end +%%Page: 107 113 +TeXDict begin 107 112 bop 0 1225 a Ff(Chapter)65 b(9)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)h(is)g(created)g(with)g(a)f(call)i(to)g +(\014ts)p 2101 2180 28 4 v 32 w(create)p 2369 2180 V +35 w(\014le,)g(the)f(name)g(of)g(a)g(template)h(\014le)e(ma)m(y)0 +2293 y(b)s(e)h(supplied)g(in)h(paren)m(theses)g(immediately)h(follo)m +(wing)g(the)g(name)f(of)g(the)g(new)f(\014le)h(to)h(b)s(e)e(created.)71 +b(This)0 2406 y(template)27 b(is)e(used)g(to)h(de\014ne)f(the)h +(structure)f(of)h(one)f(or)h(more)g(HDUs)g(in)f(the)h(new)f(\014le.)39 +b(The)25 b(template)i(\014le)e(ma)m(y)0 2518 y(b)s(e)32 +b(another)h(FITS)f(\014le,)i(in)f(whic)m(h)f(case)i(the)f(newly)g +(created)h(\014le)f(will)g(ha)m(v)m(e)h(exactly)h(the)e(same)g(k)m(eyw) +m(ords)g(in)0 2631 y(eac)m(h)25 b(HDU)g(as)g(in)f(the)g(template)i +(FITS)d(\014le,)j(but)d(all)j(the)e(data)h(units)e(will)i(b)s(e)f +(\014lled)g(with)f(zeros.)40 b(The)24 b(template)0 2744 +y(\014le)i(ma)m(y)h(also)g(b)s(e)e(an)h(ASCI)s(I)e(text)j(\014le,)g +(where)f(eac)m(h)h(line)f(\(in)g(general\))i(describ)s(es)d(one)h(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)i(\014le)g(is)f(describ)s(ed)f(in)i(the)f(follo)m(wing)i +(sections.)0 3188 y Fd(9.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)k(line)f(closely)h(follo) +m(ws)f(the)g(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)f(sign)h(ma)m(y)f(app)s(ear)g(at)h(an)m(y)g +(p)s(osition)f(in)g(the)h(line\))g(and)0 4039 y(T)-8 +b(AB)34 b(c)m(haracters)g(are)g(allo)m(w)m(ed)h(and)e(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)g(are)h +(optional.)43 b(The)30 b(equals)h(sign)f(c)m(haracter)j(is)d(also)i +(optional,)g(but)e(it)h(is)f(recommended)0 4264 y(that)42 +b(it)f(b)s(e)g(included)f(for)h(clarit)m(y)-8 b(.)75 +b(An)m(y)41 b(template)i(line)e(that)h(b)s(egins)f(with)f(the)i(p)s +(ound)d('#')i(c)m(haracter)i(is)0 4377 y(ignored)30 b(b)m(y)h(the)f +(template)i(parser)e(and)g(ma)m(y)h(b)s(e)e(use)h(to)h(insert)g(commen) +m(ts)g(in)m(to)g(the)g(template)h(\014le)e(itself.)0 +4538 y(The)c(KEYW)m(ORD)g(name)g(\014eld)g(is)g(limited)h(to)g(8)f(c)m +(haracters)h(in)f(length)h(and)e(only)h(the)g(letters)i(A-Z,)e(digits)h +(0-9,)0 4650 y(and)h(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)h(an)m(y)f(em)m(b)s +(edded)g(spaces.)40 b(Lo)m(w)m(ercase)0 4763 y(letters)22 +b(in)f(the)h(template)g(k)m(eyw)m(ord)g(name)f(will)g(b)s(e)g(con)m(v)m +(erted)i(to)f(upp)s(ercase.)36 b(Leading)22 b(spaces)f(in)g(the)h +(template)0 4876 y(line)k(preceding)g(the)f(k)m(eyw)m(ord)h(name)g(are) +g(generally)h(ignored,)g(except)f(if)g(the)g(\014rst)f(8)h(c)m +(haracters)h(of)f(a)g(template)0 4989 y(line)f(are)h(all)g(blank,)g +(then)f(the)g(en)m(tire)h(line)g(is)f(treated)h(as)f(a)h(FITS)e(commen) +m(t)i(k)m(eyw)m(ord)g(\(with)f(a)h(blank)e(k)m(eyw)m(ord)0 +5102 y(name\))31 b(and)f(is)g(copied)h(v)m(erbatim)g(in)m(to)g(the)g +(FITS)e(header.)0 5262 y(The)37 b(KEYV)-10 b(ALUE)37 +b(\014eld)g(ma)m(y)h(ha)m(v)m(e)g(an)m(y)g(allo)m(w)m(ed)h(FITS)e(data) +h(t)m(yp)s(e:)54 b(c)m(haracter)39 b(string,)h(logical,)h(in)m(teger,)0 +5375 y(real,)34 b(complex)f(in)m(teger,)i(or)d(complex)i(real.)47 +b(The)32 b(c)m(haracter)j(string)d(v)-5 b(alues)33 b(need)f(not)h(b)s +(e)f(enclosed)h(in)f(single)0 5488 y(quote)d(c)m(haracters)h(unless)e +(they)g(are)h(necessary)g(to)g(distinguish)e(the)i(string)f(from)g(a)h +(di\013eren)m(t)g(data)g(t)m(yp)s(e)f(\(e.g.)0 5601 y(2.0)h(is)e(a)h +(real)h(but)e('2.0')i(is)f(a)g(string\).)40 b(The)27 +b(k)m(eyw)m(ord)h(has)f(an)h(unde\014ned)d(\(n)m(ull\))j(v)-5 +b(alue)29 b(if)e(the)h(template)h(record)0 5714 y(only)h(con)m(tains)i +(blanks)e(follo)m(wing)i(the)e("=")h(or)g(b)s(et)m(w)m(een)g(the)f("=") +h(and)f(the)g("/")i(commen)m(t)g(\014eld)d(delimiter.)1882 +5942 y(107)p eop end +%%Page: 108 114 +TeXDict begin 108 113 bop 0 299 a Fi(108)2295 b Fg(CHAPTER)30 +b(9.)71 b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Fi(String)c(k)m(eyw)m(ord)h +(v)-5 b(alues)27 b(longer)g(than)f(68)h(c)m(haracters)h(\(the)f(maxim)m +(um)f(length)h(that)g(will)g(\014t)f(in)g(a)h(single)g(FITS)0 +668 y(k)m(eyw)m(ord)41 b(record\))g(are)g(p)s(ermitted)f(using)g(the)h +(CFITSIO)e(long)i(string)g(con)m(v)m(en)m(tion.)74 b(They)40 +b(can)h(either)g(b)s(e)0 781 y(sp)s(eci\014ed)28 b(as)i(a)f(single)h +(long)f(line)h(in)e(the)i(template,)h(or)e(b)m(y)f(using)h(m)m(ultiple) +h(lines)f(where)f(the)i(con)m(tin)m(uing)g(lines)0 894 +y(con)m(tain)i(the)e('CONTINUE')g(k)m(eyw)m(ord,)h(as)g(in)f(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)h(lines)e(with)h(CONTINUE)e +(k)m(eyw)m(ord)i(is)g(v)m(ery)g(strict:)41 b(3)30 b(spaces)g(m)m(ust)f +(follo)m(w)i(CON-)0 1610 y(TINUE)f(and)g(the)g(rest)h(of)f(the)h(line)g +(is)f(copied)h(v)m(erbatim)g(to)g(the)g(FITS)e(\014le.)0 +1771 y(The)i(start)h(of)g(the)f(optional)i(COMMENT)e(\014eld)g(m)m(ust) +h(b)s(e)e(preceded)i(b)m(y)f("/",)i(whic)m(h)e(is)h(used)f(to)h +(separate)g(it)0 1883 y(from)e(the)g(k)m(eyw)m(ord)h(v)-5 +b(alue)30 b(\014eld.)41 b(Exceptions)30 b(are)h(if)f(the)h(KEYW)m(ORD)g +(name)f(\014eld)g(con)m(tains)h(COMMENT,)0 1996 y(HISTOR)-8 +b(Y,)30 b(CONTINUE,)g(or)g(if)g(the)h(\014rst)f(8)g(c)m(haracters)i(of) +f(the)f(template)i(line)f(are)g(blanks.)0 2157 y(More)c(than)f(one)h +(Header-Data)i(Unit)e(\(HDU\))g(ma)m(y)g(b)s(e)f(de\014ned)f(in)h(the)h +(template)h(\014le.)39 b(The)26 b(start)h(of)g(an)f(HDU)0 +2269 y(de\014nition)k(is)g(denoted)h(with)f(a)h(SIMPLE)e(or)i(XTENSION) +e(template)j(line:)0 2430 y(1\))i(SIMPLE)f(b)s(egins)g(a)h(Primary)g +(HDU)g(de\014nition.)50 b(SIMPLE)33 b(ma)m(y)h(only)g(app)s(ear)f(as)h +(the)g(\014rst)f(k)m(eyw)m(ord)h(in)0 2543 y(the)e(template)i(\014le.) +45 b(If)32 b(the)g(template)i(\014le)e(b)s(egins)f(with)h(XTENSION)f +(instead)h(of)g(SIMPLE,)g(then)f(a)i(default)0 2655 y(empt)m(y)d +(Primary)e(HDU)i(is)g(created,)h(and)d(the)i(template)h(is)e(then)g +(assumed)f(to)i(de\014ne)f(the)h(k)m(eyw)m(ords)f(starting)0 +2768 y(with)h(the)h(\014rst)e(extension)i(follo)m(wing)h(the)f(Primary) +f(HDU.)0 2928 y(2\))35 b(XTENSION)e(marks)g(the)i(b)s(eginning)e(of)h +(a)h(new)e(extension)i(HDU)f(de\014nition.)52 b(The)33 +b(previous)h(HDU)h(will)0 3041 y(b)s(e)30 b(closed)h(at)g(this)f(p)s +(oin)m(t)h(and)e(pro)s(cessing)i(of)f(the)h(next)f(extension)h(b)s +(egins.)0 3373 y Fd(9.2)135 b(Auto-indexing)45 b(of)h(Keyw)l(ords)0 +3623 y Fi(If)31 b(a)h(template)g(k)m(eyw)m(ord)g(name)f(ends)g(with)g +(a)g("#")h(c)m(haracter,)i(it)e(is)f(said)g(to)h(b)s(e)f +('auto-indexed'.)44 b(Eac)m(h)32 b("#")0 3736 y(c)m(haracter)i(will)f +(b)s(e)f(replaced)i(b)m(y)e(the)h(curren)m(t)g(in)m(teger)h(index)e(v) +-5 b(alue,)34 b(whic)m(h)f(gets)g(reset)h(=)e(1)h(at)h(the)e(start)i +(of)0 3849 y(eac)m(h)h(new)f(HDU)g(in)g(the)g(\014le)g(\(or)g(7)h(in)e +(the)h(sp)s(ecial)h(case)g(of)f(a)g(GR)m(OUP)h(de\014nition\).)51 +b(The)33 b(FIRST)g(indexed)0 3962 y(k)m(eyw)m(ord)c(in)f(eac)m(h)h +(template)h(HDU)f(de\014nition)f(is)g(used)f(as)i(the)f('incremen)m +(tor';)j(eac)m(h)e(subsequen)m(t)f(o)s(ccurrence)0 4075 +y(of)k(this)f(SAME)g(k)m(eyw)m(ord)h(will)g(cause)g(the)g(index)f(v)-5 +b(alue)32 b(to)g(b)s(e)f(incremen)m(ted.)44 b(This)31 +b(b)s(eha)m(vior)g(can)h(b)s(e)f(rather)0 4188 y(subtle,)d(as)g +(illustrated)h(in)e(the)h(follo)m(wing)h(examples)f(in)f(whic)m(h)h +(the)g(TTYPE)e(k)m(eyw)m(ord)i(is)g(the)g(incremen)m(tor)g(in)0 +4300 y(b)s(oth)i(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)26 b(create)i(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)g(the)g(template)h(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 +end +%%Page: 109 115 +TeXDict begin 109 114 bop 0 299 a Fg(9.3.)72 b(TEMPLA)-8 +b(TE)30 b(P)-8 b(ARSER)30 b(DIRECTIVES)2028 b Fi(109)0 +555 y(this)31 b(results)f(in)h(a)g(FITS)f(\014les)h(with)f(TTYPE1,)h +(TTYPE2,)g(TF)m(ORM2,)h(and)e(TF)m(ORM2,)i(whic)m(h)f(is)g(probably)0 +668 y(not)g(what)f(w)m(as)h(in)m(tended!)0 1000 y Fd(9.3)135 +b(T)-11 b(emplate)46 b(P)l(arser)g(Directiv)l(es)0 1251 +y Fi(In)29 b(addition)i(to)f(the)g(template)i(lines)e(whic)m(h)g +(de\014ne)f(individual)h(k)m(eyw)m(ords,)g(the)g(template)i(parser)d +(recognizes)0 1363 y(3)h(sp)s(ecial)h(directiv)m(es)g(whic)m(h)f(are)g +(eac)m(h)h(preceded)f(b)m(y)f(the)h(bac)m(kslash)h(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')h(directiv)m(e)i(m)m(ust) +d(b)s(e)h(follo)m(w)m(ed)h(b)m(y)f(a)g(\014lename.)63 +b(It)38 b(forces)g(the)g(parser)f(to)i(temp)s(orarily)f(stop)0 +1749 y(reading)d(the)g(curren)m(t)g(template)h(\014le)f(and)f(b)s(egin) +h(reading)g(the)g(include)f(\014le.)55 b(Once)35 b(the)g(parser)f(reac) +m(hes)i(the)0 1862 y(end)f(of)h(the)g(include)f(\014le)h(it)g(con)m +(tin)m(ues)g(parsing)g(the)f(curren)m(t)h(template)h(\014le.)56 +b(Include)35 b(\014les)h(can)g(b)s(e)f(nested,)0 1975 +y(and)30 b(HDU)h(de\014nitions)f(can)g(span)g(m)m(ultiple)h(template)h +(\014les.)0 2135 y(The)f(start)h(of)g(a)g(GR)m(OUP)h(de\014nition)e(is) +h(denoted)g(with)f(the)h('group')g(directiv)m(e,)h(and)f(the)f(end)h +(of)f(a)i(GR)m(OUP)0 2248 y(de\014nition)k(is)h(denoted)f(with)g(the)h +('end')f(directiv)m(e.)63 b(Eac)m(h)39 b(GR)m(OUP)e(con)m(tains)i(0)f +(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)i(of)f(t)m(yp)s +(e)g(GR)m(OUP)g(can)g(con)m(tain)h(their)f(o)m(wn)g(mem)m(b)s(er)f(blo) +s(c)m(ks.)0 2474 y(The)32 b(GR)m(OUP)g(de\014nition)g(itself)h(o)s +(ccupies)g(one)f(FITS)g(\014le)g(HDU)h(of)f(sp)s(ecial)h(t)m(yp)s(e)f +(\(GR)m(OUP)h(HDU\),)h(so)e(if)h(a)0 2587 y(template)f(sp)s(eci\014es)e +(1)h(group)e(with)h(1)h(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)g(with)g(3)h(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)32 b(sp)s(eaking,)e(the)f(GR)m +(OUP)i(HDU)f(is)g(a)g(BINT)-8 b(ABLE)30 b(with)g(6)g(columns.)40 +b(Applications)31 b(can)f(de\014ne)0 4382 y(additional)23 +b(columns)f(in)f(a)i(GR)m(OUP)f(HDU)h(using)f(TF)m(ORMn)f(and)h(TTYPEn) +f(\(where)g(n)h(is)g(7,)i(8,)h(....\))39 b(k)m(eyw)m(ords)0 +4494 y(or)30 b(their)h(auto-indexing)g(equiv)-5 b(alen)m(ts.)0 +4655 y(F)d(or)26 b(a)f(more)g(complicated)h(example)f(of)g(a)h +(template)g(\014le)f(using)f(the)h(group)f(directiv)m(es,)k(lo)s(ok)d +(at)g(the)g(sample.tpl)0 4767 y(\014le)30 b(that)h(is)g(included)e(in)i +(the)f(CFITSIO)f(distribution.)0 5100 y Fd(9.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)i(syn)m(tax)f(can)f(formally)h(b)s(e)f(de\014ned)f +(as)i(follo)m(ws:)191 5601 y Fe(TEMPLATE)45 b(=)j(BLOCK)e([)i(BLOCK)e +(...)h(])p eop end +%%Page: 110 116 +TeXDict begin 110 115 bop 0 299 a Fi(110)2295 b Fg(CHAPTER)30 +b(9.)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,)i(the)e(template)i +(de\014nes)c(1)j(or)e(more)h(template)h(blo)s(c)m(ks.)49 +b(Blo)s(c)m(ks)34 b(can)f(b)s(e)f(either)h(HDU)0 2050 +y(\(Header)27 b(Data)h(Unit\))g(or)e(a)h(GR)m(OUP)-8 +b(.)28 b(F)-8 b(or)27 b(eac)m(h)g(blo)s(c)m(k)g(the)g(parser)f(creates) +i(1)f(\(or)g(more)f(for)h(GR)m(OUPs\))g(FITS)0 2163 y(\014le)j(HDUs.)0 +2495 y Fd(9.5)135 b(Errors)0 2745 y Fi(In)24 b(general)h(the)f(\014ts)p +692 2745 28 4 v 33 w(execute)p 1019 2745 V 34 w(template\(\))i +(function)e(tries)h(to)g(b)s(e)f(as)g(atomic)i(as)f(p)s(ossible,)g(so)f +(either)h(ev)m(erything)0 2858 y(is)f(done)g(or)g(nothing)f(is)h(done.) +39 b(If)23 b(an)h(error)f(o)s(ccurs)h(during)f(parsing)g(of)h(the)g +(template,)j(\014ts)p 3125 2858 V 33 w(execute)p 3452 +2858 V 34 w(template\(\))0 2971 y(will)k(\(try)g(to\))h(delete)g(the)f +(top)g(lev)m(el)h(BLOCK)e(\(with)h(all)g(its)h(c)m(hildren)e(if)h(an)m +(y\))g(in)g(whic)m(h)f(the)h(error)f(o)s(ccurred,)0 3084 +y(then)g(it)h(will)g(stop)f(reading)h(the)f(template)i(\014le)e(and)g +(it)h(will)g(return)e(with)h(an)g(error.)0 3417 y Fd(9.6)135 +b(Examples)0 3667 y Fi(1.)54 b(This)34 b(template)i(\014le)f(will)g +(create)h(a)f(200)h(x)e(300)i(pixel)f(image,)j(with)c(4-b)m(yte)i(in)m +(teger)g(pixel)f(v)-5 b(alues,)36 b(in)f(the)0 3780 y(primary)29 +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)i(v)-5 b(alues)36 b(of)f(BITPIX)g(are) +h(8,)h(16,)h(32,)g(-32,)g(or)d(-64,)j(represen)m(ting,)f(resp)s(ectiv)m +(ely)-8 b(,)39 b(8-bit)d(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)f(64)h +(bit)g(\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,)26 b(the)c(template)i +(\014rst)e(needs)g(to)i(include)e(XTENSION)g(=)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)h(is)g(an)f(ASCI)s(I)g(or)g(binary)g(table,)i(and)f(NAXIS2)g(to)g +(de\014ne)f(the)h(n)m(um)m(b)s(er)f(of)h(ro)m(ws)f(in)h(the)0 +5348 y(table.)50 b(Tw)m(o)34 b(template)g(lines)g(are)g(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,)f(as)h(in)f(this)g(example:) +95 5714 y Fe(xtension)46 b(=)h(bintable)p eop end +%%Page: 111 117 +TeXDict begin 111 116 bop 0 299 a Fg(9.6.)72 b(EXAMPLES)3039 +b Fi(111)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)e(de\014nes)f(a)i(n)m(ull)f +(primary)f(arra)m(y)h(follo)m(w)m(ed)i(b)m(y)e(a)g(40-ro)m(w)h(binary)e +(table)i(extension)g(with)f(3)0 1718 y(columns)h(called)h('Name',)h +('Np)s(oin)m(ts',)f(and)f('Rate',)i(with)e(data)h(formats)f(of)g('10A') +i(\(ASCI)s(I)d(c)m(haracter)i(string\),)0 1831 y('1J')k(\(in)m(teger\)) +i(and)d('1E')i(\(\015oating)f(p)s(oin)m(t\),)h(resp)s(ectiv)m(ely)-8 +b(.)50 b(Note)34 b(that)f(the)g(other)g(required)f(FITS)g(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)j(de\014ned)d(in)i(the)f(template)i(b)s(ecause)f(their) +g(v)-5 b(alues)38 b(can)g(b)s(e)f(inferred)f(from)i(the)f(other)h(k)m +(eyw)m(ords)g(in)0 2170 y(the)d(template.)55 b(This)34 +b(example)i(also)g(illustrates)f(that)h(the)f(templates)h(are)f +(generally)h(case-insensitiv)m(e)h(\(the)0 2283 y(k)m(eyw)m(ord)29 +b(names)g(and)g(TF)m(ORMn)f(v)-5 b(alues)30 b(are)f(con)m(v)m(erted)i +(to)e(upp)s(er-case)g(in)f(the)h(FITS)g(\014le\))g(and)f(that)i(string) +0 2396 y(k)m(eyw)m(ord)h(v)-5 b(alues)31 b(generally)g(do)f(not)h(need) +f(to)h(b)s(e)f(enclosed)h(in)f(quotes.)p eop end +%%Page: 112 118 +TeXDict begin 112 117 bop 0 299 a Fi(112)2295 b Fg(CHAPTER)30 +b(9.)71 b(TEMPLA)-8 b(TE)30 b(FILES)p eop end +%%Page: 113 119 +TeXDict begin 113 118 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)f +(page)h(29)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)h(Op)s(en)e(and)h(Close)h +(Subroutines:)39 b(page)31 b(35)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(113)p +eop end +%%Page: 114 120 +TeXDict begin 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(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)33 b(Op)s(erations:)40 b(page)31 b(38)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)29 b(to)i(sp)s(ecify)f(or)g(mo)s(dify)g(the)g +(structure)g(of)h(the)f(CHDU:)h(page)h(41)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)i(Subroutines:)39 b(page)31 +b(43)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)32 b(Standard)d(Header)i +(Subroutines:)39 b(page)31 b(43)p eop end +%%Page: 115 121 +TeXDict begin 115 120 bop 3764 299 a Fi(115)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)32 +b(Keyw)m(ord)e(Subroutines:)39 b(page)31 b(45)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[JKLS]\(unit,keyword)o +(,ke)o(yval)o(,com)o(men)o(t,)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[JKLS]\(unit,keyroot)o(,st)o(artn)o +(o,no)o(_ke)o(ys,k)o(eyva)o(ls,)o(comm)o(ents)o(,)42 +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:)39 b(page)31 +b(47)382 4408 y Fe(FTIREC\(unit,key_no,card,)41 b(>)47 +b(status\))382 4521 y(FTIKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o +(men)o(t,)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:)39 b(page)31 b(47)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 end +%%Page: 116 122 +TeXDict begin 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)382 555 y Fe(FTGKEY\(unit,keyword,)42 +b(>)48 b(value,comment,status\))382 668 y(FTGKY[EDJKLS]\(unit,keywo)o +(rd,)41 b(>)48 b(keyval,comment,status\))382 781 y +(FTGKN[EDJKLS]\(unit,keyro)o(ot,)o(star)o(tno,)o(max)o(_key)o(s,)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)30 b(Keyw)m(ord)g(Subroutines:)39 +b(page)31 b(49)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[JKLS]\(unit,keyword)o(,ke)o(yval)o +(,com)o(men)o(t,)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:)39 +b(page)32 b(50)382 2822 y Fe(FTUCRD\(unit,keyword,card)o(,)42 +b(>)47 b(status\))382 2935 y(FTUKY[JKLS]\(unit,keyword)o(,ke)o(yval)o +(,com)o(men)o(t,)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)33 b(Keyw)m(ord)d(Subroutines:)39 b(page)31 +b(50)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)f(P)m(arameters)g(and)f(Unde\014ned)f +(Pixel)i(Flags:)42 b(page)31 b(51)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)f(Arra)m(y)i(or)f(IMA)m(GE)i(Extension)e +(I/O)h(Subroutines:)39 b(page)31 b(52)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 +end +%%Page: 117 123 +TeXDict begin 117 122 bop 3764 299 a Fi(117)382 555 y +Fe(FTGIPR\(unit,)44 b(maxdim,)i(>)i(bitpix,naxis,naxes,stat)o(us\))382 +668 y(FTPPR[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o +(valu)o(es,)41 b(>)48 b(status\))382 781 y(FTPPN[BIJKED]\(unit,group)o +(,fp)o(ixel)o(,nel)o(eme)o(nts,)o(valu)o(es,)o(null)o(val)41 +b(>)48 b(status\))382 894 y(FTPPRU\(unit,group,fpixel)o(,ne)o(leme)o +(nts,)41 b(>)47 b(status\))382 1007 y(FTGPV[BIJKED]\(unit,group)o(,fp)o +(ixel)o(,nel)o(eme)o(nts,)o(null)o(val)o(,)42 b(>)47 +b(values,anyf,status\))382 1120 y(FTGPF[BIJKED]\(unit,group)o(,fp)o +(ixel)o(,nel)o(eme)o(nts,)41 b(>)48 b(values,flagvals,anyf,st)o(atu)o +(s\))382 1233 y(FTPGP[BIJKED]\(unit,group)o(,fp)o(arm,)o(npar)o(m,v)o +(alue)o(s,)42 b(>)47 b(status\))382 1346 y(FTGGP[BIJKED]\(unit,group)o +(,fp)o(arm,)o(npar)o(m,)41 b(>)48 b(values,status\))382 +1458 y(FTP2D[BIJKED]\(unit,group)o(,di)o(m1,n)o(axis)o(1,n)o(axis)o +(2,im)o(age)o(,)42 b(>)47 b(status\))382 1571 y +(FTP3D[BIJKED]\(unit,group)o(,di)o(m1,d)o(im2,)o(nax)o(is1,)o(naxi)o +(s2,)o(naxi)o(s3,c)o(ube)o(,)42 b(>)47 b(status\))382 +1684 y(FTG2D[BIJKED]\(unit,group)o(,nu)o(llva)o(l,di)o(m1,)o(naxi)o +(s1,n)o(axi)o(s2,)41 b(>)48 b(image,anyf,status\))382 +1797 y(FTG3D[BIJKED]\(unit,group)o(,nu)o(llva)o(l,di)o(m1,)o(dim2)o +(,nax)o(is1)o(,nax)o(is2,)o(nax)o(is3,)41 b(>)1002 1910 +y(cube,anyf,status\))382 2023 y(FTPSS[BIJKED]\(unit,group)o(,na)o(xis,) +o(naxe)o(s,f)o(pixe)o(ls,l)o(pix)o(els,)o(arra)o(y,)g(>)48 +b(status\))382 2136 y(FTGSV[BIJKED]\(unit,group)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 2249 y(array,anyf,status\))382 2362 y +(FTGSF[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o(ls,l)o +(pix)o(els,)o(incs)o(,)g(>)1002 2475 y(array,flagvals,anyf,statu)o(s\)) +0 2739 y Fi(T)-8 b(able)31 b(Column)e(Information)i(Subroutines:)39 +b(page)31 b(55)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)32 b(T)-8 +b(able)31 b(Access)h(Subroutines:)39 b(page)31 b(58)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)30 +b(Ro)m(ws)h(or)f(Columns)g(page)h(58)p eop end +%%Page: 118 124 +TeXDict begin 118 123 bop 0 299 a Fi(118)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)32 b(Column)e(Data)i(Routines)e +(page)h(60)382 1974 y Fe(FTPCL[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,) +o(fel)o(em,n)o(elem)o(ent)o(s,va)o(lues)o(,)42 b(>)47 +b(status\))382 2087 y(FTPCN[BIJKED]\(unit,colnu)o(m,f)o(row,)o(fele)o +(m,n)o(elem)o(ents)o(,va)o(lues)o(,nul)o(lva)o(l)42 b(>)47 +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[SBIJKEDCM]\(unit,co)o(lnu)o +(m,fr)o(ow,f)o(ele)o(m,ne)o(leme)o(nts)o(,nul)o(lval)o(,)42 +b(>)1098 2651 y(values,anyf,status\))382 2764 y +(FTGCF[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,)o(fel)o(em,n)o(elem)o +(ent)o(s,)g(>)1193 2877 y(values,flagvals,anyf,stat)o(us\))382 +2990 y(FTGSV[BIJKED]\(unit,colnu)o(m,n)o(axis)o(,nax)o(es,)o(fpix)o +(els,)o(lpi)o(xels)o(,inc)o(s,n)o(ullv)o(al,)f(>)1002 +3103 y(array,anyf,status\))382 3216 y(FTGSF[BIJKED]\(unit,colnu)o(m,n)o +(axis)o(,nax)o(es,)o(fpix)o(els,)o(lpi)o(xels)o(,inc)o(s,)g(>)1002 +3329 y(array,flagvals,anyf,statu)o(s\))382 3441 y +(FTGCX\(unit,colnum,frow,f)o(bit)o(,nbi)o(t,)h(>)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)h(and)d(Calculator) +j(Routines:)41 b(page)31 b(64)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)32 b(Co)s(ordinate)f(System)f +(Subroutines:)39 b(page)31 b(65)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 end +%%Page: 119 125 +TeXDict begin 119 124 bop 3764 299 a Fi(119)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)32 b(Chec)m(ksum)d(Subroutines:)40 +b(page)31 b(67)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)30 b(and)g(Date)i(Utilit)m(y)h +(Subroutines:)39 b(page)31 b(68)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)31 b(Utilit)m(y)i(Subroutines:)39 b(page)31 +b(69)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 end +%%Page: 120 126 +TeXDict begin 120 125 bop 0 299 a Fi(120)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 end +%%Page: 121 127 +TeXDict begin 121 126 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(blank)g(-)i(\(integer*8\))d(value)h(used)h +(for)f(undefined)g(pixels)g(in)h(integer)f(primary)g(array)0 +2744 y(blocksize)f(-)j(\(integer\))d(2880-byte)g(logical)h(record)g +(blocking)g(factor)477 2857 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 2970 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 3083 y(blocksizes)e(greater)h(than)h(2880)f(are)h(no)g +(longer)g(supported.)0 3196 y(bscale)f(-)i(\(double)d(precision\))g +(scaling)h(factor)g(for)h(the)g(primary)f(array)0 3309 +y(bytlen)g(-)i(\(integer\))d(length)h(of)h(the)g(data)g(unit,)f(in)h +(bytes)0 3422 y(bzero)f(-)i(\(double)e(precision\))f(zero)h(point)h +(for)g(primary)e(array)i(scaling)0 3535 y(card)g(-)g(\(character*80\))d +(header)i(record)g(to)h(be)h(read)e(or)h(written)0 3648 +y(casesen)f(-)h(\(logical\))f(will)g(string)g(matching)g(be)h(case)g +(sensitive?)0 3760 y(checksum)f(-)h(\(character*16\))d(encoded)i +(checksum)f(string)0 3873 y(colname)h(-)h(\(character\))e(ASCII)h(name) +h(of)g(the)g(column)0 3986 y(colnum)f(-)i(\(integer\))d(number)h(of)h +(the)g(column)f(\(first)g(column)g(=)i(1\))0 4099 y(coltemplate)d(-)i +(\(character\))e(template)g(string)i(to)g(be)g(matched)f(to)h(column)f +(names)0 4212 y(comment)g(-)h(\(character\))e(the)i(keyword)f(comment)g +(field)0 4325 y(comments)g(-)h(\(character)e(array\))h(keyword)g +(comment)g(fields)0 4438 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 +4551 y(complement)g(-)i(\(logical\))f(should)g(the)h(checksum)e(be)i +(complemented?)0 4664 y(coordtype)e(-)j(\(character\))c(type)j(of)g +(coordinate)e(projection)g(\(-SIN,)h(-TAN,)h(-ARC,)477 +4777 y(-NCP,)g(-GLS,)f(-MER,)g(or)i(-AIT\))0 4890 y(cube)f(-)g(3D)g +(data)g(cube)g(of)g(the)g(appropriate)d(datatype)0 5002 +y(curaddr)i(-)h(\(integer\))f(starting)f(address)h(\(in)h(bytes\))f(of) +h(the)g(CHDU)0 5115 y(current)f(-)h(\(integer\))f(if)h(not)g(equal)f +(to)h(0,)g(copy)g(the)g(current)f(HDU)0 5228 y(datacode)g(-)h +(\(integer\))e(symbolic)h(code)g(of)i(the)f(binary)f(table)g(column)g +(datatype)0 5341 y(dataok)g(-)i(\(integer\))d(was)i(the)g(data)f(unit)h +(verification)d(successful)h(\(=1\))i(or)430 5454 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 5567 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 5680 +y(datatype)f(-)h(\(character\))e(datatype)g(\(format\))h(of)h(the)g +(binary)f(table)g(column)1882 5942 y Fi(121)p eop end +%%Page: 122 128 +TeXDict begin 122 127 bop 0 299 a Fi(122)1779 b Fg(CHAPTER)30 +b(11.)112 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y +Fe(datestr)94 b(-)47 b(\(string\))f(FITS)g(date/time)f(string:)h +('YYYY-MM-DDThh:mm:ss.ddd')o(,)525 668 y('YYYY-MM-dd',)e(or)j +('dd/mm/yy')0 781 y(day)g(-)g(\(integer\))f(current)f(day)i(of)h(the)e +(month)0 894 y(dblval)g(-)i(\(double)d(precision\))g(fractional)g(part) +i(of)g(the)g(keyword)f(value)0 1007 y(decimals)g(-)h(\(integer\))e +(number)h(of)i(decimal)d(places)h(to)i(be)f(displayed)0 +1120 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 1233 +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 1346 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 1458 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 +1571 y(C)f(=)h(character)d(string)764 1684 y(L)i(=)h(logical)764 +1797 y(I)f(=)h(integer)764 1910 y(F)f(=)h(floating)d(point)h(number)0 +2023 y(errmsg)g(-)i(\(character*80\))43 b(oldest)k(error)f(message)g +(on)h(the)g(internal)e(stack)0 2136 y(errtext)h(-)h(\(character*30\))d +(descriptive)h(error)h(message)g(corresponding)e(to)j(error)g(number)0 +2249 y(casesen)f(-)h(\(logical\))f(true)g(if)h(column)f(name)h +(matching)f(is)h(case)f(sensitive)0 2362 y(exact)g(-)i(\(logical\))d +(do)i(the)g(strings)f(match)g(exactly,)g(or)h(were)g(wildcards)e(used?) +0 2475 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 2588 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 2700 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 2813 y(extname)g(-)h(\(character\))e(value)h(of)i(the)e(EXTNAME)g +(keyword)g(\(if)h(not)g(blank\))0 2926 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 +3039 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 3152 y(filename)f(-)h +(\(character\))e(name)h(of)i(the)e(FITS)h(file)0 3265 +y(flagvals)f(-)h(\(logical)f(array\))g(True)g(if)h(corresponding)e +(data)h(element)g(is)h(undefined)0 3378 y(following)e(-)j(\(integer\))d +(if)i(not)g(equal)f(to)i(0,)f(copy)f(all)h(following)f(HDUs)g(in)h(the) +g(input)g(file)0 3491 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 +3604 y(fpixel)f(-)i(\(integer\))d(the)i(first)f(pixel)g(position)0 +3717 y(fpixels)g(-)h(\(integer)f(array\))g(the)h(first)f(included)g +(pixel)g(in)h(each)g(dimension)0 3830 y(frow)g(-)g(\(integer\))e +(beginning)h(row)h(number)f(\(first)g(row)h(of)g(table)f(=)i(1\))0 +3942 y(frowll)e(-)i(\(integer*8\))c(beginning)i(row)g(number)h(\(first) +f(row)h(of)g(table)f(=)i(1\))0 4055 y(gcount)e(-)i(\(integer\))d(value) +h(of)h(the)g(GCOUNT)f(keyword)g(\(usually)g(=)h(1\))0 +4168 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 4281 y(hdtype)i(-)i +(\(integer\))d(header)h(record)g(type:)g(-1=delete;)93 +b(0=append)46 b(or)h(replace;)907 4394 y(1=append;)e(2=this)h(is)h(the) +g(END)g(keyword)0 4507 y(hduok)f(-)i(\(integer\))d(was)i(the)g(HDU)g +(verification)d(successful)h(\(=1\))i(or)430 4620 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 4733 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 +4846 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 4959 +y(2)g(=)h(binary)e(table,)g(-1)h(=)h(any)e(HDU)h(type)g(or)g(unknown)f +(type)0 5072 y(history)g(-)h(\(character\))e(the)i(HISTORY)f(keyword)g +(comment)f(string)0 5185 y(hour)i(-)g(\(integer\))e(hour)i(from)g(0)g +(-)h(23)0 5297 y(image)e(-)i(2D)f(image)f(of)i(the)e(appropriate)f +(datatype)0 5410 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 5523 y(incs)g(-)g +(\(integer)f(array\))g(sampling)f(interval)h(for)h(pixels)f(in)h(each)g +(FITS)f(dimension)0 5636 y(intval)g(-)i(\(integer\))d(integer)h(part)g +(of)h(the)g(keyword)f(value)p eop end +%%Page: 123 129 +TeXDict begin 123 128 bop 3764 299 a Fi(123)0 555 y Fe(iounit)46 +b(-)i(\(integer\))d(value)h(of)h(an)h(unused)e(I/O)h(unit)f(number)0 +668 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 781 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 894 y(keylength)g(-)j(\(integer\))d(length)h(of)h +(the)g(keyword)f(name)0 1007 y(keyroot)g(-)h(\(character\))e(root)i +(string)f(for)h(the)g(keyword)e(name)0 1120 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 1233 y(keysexist)e(-)j(\(integer\))d(number)h(of)h(existing)f +(keyword)g(records)f(in)j(the)f(CHU)0 1346 y(keyval)f(-)i(value)e(of)h +(the)g(keyword)f(in)h(the)g(appropriate)e(datatype)0 +1458 y(keyvals)h(-)h(\(array\))f(value)g(of)i(the)f(keywords)e(in)i +(the)g(appropriate)e(datatype)0 1571 y(keyword)h(-)h(\(character*8\))d +(name)j(of)g(a)h(keyword)0 1684 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 1797 y(lpixels)f(-)h(\(integer)f(array\))g(the)h(last)f +(included)g(pixel)g(in)i(each)e(dimension)0 1910 y(match)g(-)i +(\(logical\))d(do)i(the)g(2)h(strings)d(match?)0 2023 +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 2136 y(max_keys)g(-)h +(\(integer\))e(maximum)h(number)g(of)h(keywords)f(to)h(search)f(for)0 +2249 y(minute)g(-)i(\(integer\))d(minute)h(of)h(an)g(hour)g(\(0)g(-)h +(59\))0 2362 y(month)e(-)i(\(integer\))d(current)h(month)g(of)h(the)g +(year)g(\(1)g(-)h(12\))0 2475 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 2588 y(naxes)f(-)i(\(integer)d(array\))h(size)h(of)g(each)g +(dimension)e(in)i(the)g(FITS)g(array)0 2700 y(naxesll)f(-)h +(\(integer*8)e(array\))h(size)h(of)g(each)g(dimension)e(in)i(the)g +(FITS)g(array)0 2813 y(naxis)f(-)i(\(integer\))d(number)h(of)h +(dimensions)e(in)j(the)e(FITS)h(array)0 2926 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 3039 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 3152 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 3265 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 3378 y(nchars)f(-)i(\(integer\))d +(number)h(of)h(characters)e(to)i(read)g(and)g(return)0 +3491 y(ncols)f(-)i(\(integer\))d(number)h(of)h(columns)0 +3604 y(nelements)e(-)j(\(integer\))d(number)h(of)h(data)g(elements)e +(to)j(read)e(or)h(write)0 3717 y(nelementsll)e(-)i(\(integer*8\))e +(number)h(of)h(data)g(elements)e(to)j(read)e(or)h(write)0 +3830 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 3942 y(nhdu)f(-)g(\(integer\))e +(absolute)h(number)g(of)h(the)g(HDU)g(\(1st)g(HDU)g(=)g(1\))0 +4055 y(ninc)142 b(\(integer\))93 b(number)46 b(of)h(names)g(in)g(the)g +(inclusion)e(list)0 4168 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 4281 y(nfound)g(-)i(\(integer\))d(number)h(of)h(keywords)f +(found)g(\(highest)g(keyword)f(number\))0 4394 y(no_keys)h(-)h +(\(integer\))f(number)g(of)h(keywords)e(to)j(write)e(in)h(the)g +(sequence)0 4507 y(nparm)f(-)i(\(integer\))d(number)h(of)h(group)g +(parameters)e(to)i(read)g(or)g(write)0 4620 y(nrows)f(-)i(\(integer\))d +(number)h(of)h(rows)g(in)g(the)g(table)0 4733 y(nrowsll)f(-)h +(\(integer*8\))e(number)h(of)h(rows)g(in)g(the)g(table)0 +4846 y(nullval)f(-)h(value)g(to)g(represent)e(undefined)g(pixels,)h(of) +h(the)g(appropriate)e(datatype)0 4959 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 5072 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 +5185 y(offsetll)f(-)h(\(integer*8\))e(byte)h(offset)g(in)i(the)f(heap)f +(to)h(the)g(first)g(element)e(of)j(the)f(array)0 5297 +y(oldkey)f(-)i(\(character\))c(old)j(name)g(of)g(keyword)f(to)h(be)g +(modified)0 5410 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 +5523 y(pcount)f(-)i(\(integer\))d(value)h(of)h(the)g(PCOUNT)f(keyword)g +(\(usually)g(=)h(0\))0 5636 y(previous)f(-)h(\(integer\))e(if)i(not)g +(equal)g(to)g(0,)g(copy)g(all)g(previous)e(HDUs)i(in)g(the)g(input)f +(file)p eop end +%%Page: 124 130 +TeXDict begin 124 129 bop 0 299 a Fi(124)1779 b Fg(CHAPTER)30 +b(11.)112 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y +Fe(repeat)46 b(-)i(\(integer\))d(length)h(of)h(element)f(vector)g +(\(e.g.)g(12J\);)h(ignored)f(for)g(ASCII)h(table)0 668 +y(rot)g(-)g(\(double)f(precision\))f(celestial)g(coordinate)g(rotation) +h(angle)g(\(degrees\))0 781 y(rowlen)g(-)i(\(integer\))d(length)h(of)h +(a)h(table)e(row,)h(in)g(characters)e(or)i(bytes)0 894 +y(rowlenll)f(-)h(\(integer*8\))e(length)h(of)h(a)g(table)g(row,)f(in)i +(characters)d(or)i(bytes)0 1007 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 1120 y(rownum)h(-)i(\(integer\))d(number)h(of)h(the)g(row)g +(\(first)f(row)h(=)g(1\))0 1233 y(rowrange-)e(\(string\))h(list)g(of)i +(rows)e(or)h(row)g(ranges)f(to)i(be)f(deleted)0 1346 +y(rwmode)f(-)i(\(integer\))d(file)h(access)h(mode:)f(0)h(=)h(readonly,) +d(1)j(=)f(readwrite)0 1458 y(second)142 b(\(double\)-)45 +b(second)h(within)g(minute)g(\(0)h(-)h(60.9999999999\))c(\(leap)i +(second!\))0 1571 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)0 1684 +y(simple)g(-)i(\(logical\))d(does)h(the)h(FITS)g(file)g(conform)e(to)j +(all)f(the)f(FITS)h(standards)0 1797 y(snull)f(-)i(\(character\))d +(value)h(used)h(to)g(represent)e(undefined)g(values)h(in)i(ASCII)e +(table)0 1910 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 2023 +y(startchar)f(-)j(\(integer\))d(first)h(character)g(in)h(the)g(row)g +(to)g(be)g(read)0 2136 y(startno)f(-)h(\(integer\))f(value)g(of)h(the)g +(first)f(keyword)g(sequence)g(number)g(\(usually)f(1\))0 +2249 y(status)h(-)i(\(integer\))d(returned)g(error)i(status)f(code)g +(\(0)i(=)f(OK\))0 2362 y(str_template)d(\(character\))h(template)h +(string)g(to)h(be)g(matched)f(to)h(reference)e(string)0 +2475 y(stream)h(-)i(\(character\))c(output)i(stream)g(for)h(the)g +(report:)f(either)g('STDOUT')g(or)h('STDERR')0 2588 y(string)f(-)i +(\(character\))c(character)i(string)0 2700 y(sum)h(-)g(\(double)f +(precision\))f(32)i(bit)g(unsigned)f(checksum)f(value)0 +2813 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 2926 y(tdisp)g(-)i +(\(character\))d(Fortran)g(type)i(display)f(format)g(for)h(the)g(table) +f(column)0 3039 y(template-\(character\))c(template)k(string)g(for)h(a) +g(FITS)g(header)f(record)0 3152 y(tfields)g(-)h(\(integer\))f(number)g +(of)h(fields)f(\(columns\))f(in)i(the)g(table)0 3265 +y(tform)f(-)i(\(character)d(array\))h(format)g(of)h(the)g(column\(s\);) +e(allowed)h(values)g(are:)430 3378 y(For)g(ASCII)h(tables:)93 +b(Iw,)47 b(Aw,)g(Fww.dd,)f(Eww.dd,)g(or)h(Dww.dd)430 +3491 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 3604 y(where)f('w'=width)f(of)i(the)g +(field,)f('d'=no.)g(of)h(decimals,)f('r'=repeat)f(count)430 +3717 y(Note)h(that)h(the)g('rAw')f(form)h(is)g(non-standard)d +(extension)i(to)h(the)430 3830 y(TFORM)f(keyword)g(syntax)g(that)g(is)i +(not)f(specifically)d(defined)i(in)h(the)430 3942 y(Binary)f(Tables)g +(definition)f(document.)0 4055 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 4168 y(relative)e(to)i(the)g(beginning)e(of)j(the)f(binary)f(table) +g(data)0 4281 y(tnull)g(-)i(\(integer\))d(value)h(used)h(to)g +(represent)f(undefined)f(values)h(in)h(binary)f(table)0 +4394 y(tnullll)g(-)h(\(integer*8\))e(value)h(used)h(to)g(represent)e +(undefined)h(values)g(in)h(binary)f(table)0 4507 y(ttype)g(-)i +(\(character)d(array\))h(label)g(for)h(table)g(column\(s\))0 +4620 y(tscal)f(-)i(\(double)e(precision\))f(scaling)g(factor)i(for)f +(table)h(column)0 4733 y(tunit)f(-)i(\(character)d(array\))h(physical)f +(unit)i(for)g(table)f(column\(s\))0 4846 y(tzero)g(-)i(\(double)e +(precision\))f(scaling)g(zero)i(point)f(for)h(table)g(column)0 +4959 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 +5072 y(units)g(-)i(\(character\))d(the)h(keyword)g(units)h(string)f +(\(e.g.,)g('km/s'\))0 5185 y(value)g(-)i(\(character\))d(the)h(keyword) +g(value)h(string)0 5297 y(values)f(-)i(array)e(of)h(data)g(values)f(of) +h(the)g(appropriate)e(datatype)0 5410 y(varidat)h(-)h(\(integer\))f +(size)g(in)h(bytes)g(of)g(the)g('variable)e(length)h(data)h(area')525 +5523 y(following)e(the)i(binary)f(table)h(data)f(\(usually)g(=)h(0\))0 +5636 y(version)f(-)h(\(real\))f(current)g(revision)g(number)g(of)h(the) +g(library)p eop end +%%Page: 125 131 +TeXDict begin 125 130 bop 3764 299 a Fi(125)0 555 y Fe(width)46 +b(-)i(\(integer\))d(width)h(of)i(the)f(character)e(string)h(field)0 +668 y(xcol)h(-)g(\(integer\))e(number)h(of)i(the)f(column)f(containing) +f(the)i(X)g(coordinate)e(values)0 781 y(xinc)i(-)g(\(double)f +(precision\))f(X)i(axis)g(coordinate)e(increment)g(at)i(reference)f +(pixel)g(\(deg\))0 894 y(xpix)h(-)g(\(double)f(precision\))f(X)i(axis)g +(pixel)f(location)0 1007 y(xpos)h(-)g(\(double)f(precision\))f(X)i +(axis)g(celestial)e(coordinate)g(\(usually)h(RA\))h(\(deg\))0 +1120 y(xrpix)f(-)i(\(double)e(precision\))f(X)i(axis)g(reference)e +(pixel)h(array)h(location)0 1233 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 1346 y(ycol)g(-)g(\(integer\))e(number)h(of)i(the)f(column)f +(containing)f(the)i(X)g(coordinate)e(values)0 1458 y(year)i(-)g +(\(integer\))e(last)i(2)g(digits)g(of)g(the)g(year)f(\(00)h(-)h(99\))0 +1571 y(yinc)f(-)g(\(double)f(precision\))f(Y)i(axis)g(coordinate)e +(increment)g(at)i(reference)f(pixel)g(\(deg\))0 1684 +y(ypix)h(-)g(\(double)f(precision\))f(y)i(axis)g(pixel)f(location)0 +1797 y(ypos)h(-)g(\(double)f(precision\))f(y)i(axis)g(celestial)e +(coordinate)g(\(usually)h(DEC\))g(\(deg\))0 1910 y(yrpix)g(-)i +(\(double)e(precision\))f(Y)i(axis)g(reference)e(pixel)h(array)h +(location)0 2023 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 end +%%Page: 126 132 +TeXDict begin 126 131 bop 0 299 a Fi(126)1779 b Fg(CHAPTER)30 +b(11.)112 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)p eop end +%%Page: 127 133 +TeXDict begin 127 132 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(127)p eop end +%%Page: 128 134 +TeXDict begin 128 133 bop 0 299 a Fi(128)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(206)95 b(illegal)45 +b(indexed)h(keyword)g(name)h(\(e.g.)f('TFORM1000'\))0 +1797 y(207)95 b(illegal)45 b(character)h(in)h(keyword)f(name)g(or)i +(header)e(record)0 1910 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 +2023 y(209)95 b(keyword)45 b(does)i(not)g(have)g(expected)e(integer)h +(value)0 2136 y(210)95 b(could)46 b(not)h(find)g(the)f(required)g(END)h +(header)f(keyword)0 2249 y(211)95 b(illegal)45 b(BITPIX)i(keyword)e +(value)0 2362 y(212)95 b(illegal)45 b(NAXIS)i(keyword)f(value)0 +2475 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 2588 y(214)95 b(illegal)45 +b(PCOUNT)i(keyword)e(value)0 2700 y(215)95 b(illegal)45 +b(GCOUNT)i(keyword)e(value)0 2813 y(216)95 b(illegal)45 +b(TFIELDS)h(keyword)g(value)0 2926 y(217)95 b(negative)45 +b(ASCII)i(or)g(binary)f(table)g(width)h(value)f(\(NAXIS1\))0 +3039 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 3152 y(219)95 b(column)46 +b(name)g(\(TTYPE)g(keyword\))g(not)h(found)0 3265 y(220)95 +b(illegal)45 b(SIMPLE)i(keyword)e(value)0 3378 y(221)95 +b(could)46 b(not)h(find)g(the)f(required)g(SIMPLE)g(header)g(keyword)0 +3491 y(222)95 b(could)46 b(not)h(find)g(the)f(required)g(BITPIX)g +(header)g(keyword)0 3604 y(223)95 b(could)46 b(not)h(find)g(the)f +(required)g(NAXIS)g(header)g(keyword)0 3717 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 3830 y(225)95 b(could)46 b(not)h(find)g(the)f +(required)g(XTENSION)g(header)g(keyword)0 3942 y(226)95 +b(the)47 b(CHDU)f(is)h(not)g(an)g(ASCII)g(table)f(extension)0 +4055 y(227)95 b(the)47 b(CHDU)f(is)h(not)g(a)h(binary)e(table)g +(extension)0 4168 y(228)95 b(could)46 b(not)h(find)g(the)f(required)g +(PCOUNT)g(header)g(keyword)0 4281 y(229)95 b(could)46 +b(not)h(find)g(the)f(required)g(GCOUNT)g(header)g(keyword)0 +4394 y(230)95 b(could)46 b(not)h(find)g(the)f(required)g(TFIELDS)g +(header)g(keyword)0 4507 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 4620 +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 4733 y(233)95 b(the)47 +b(CHDU)f(is)h(not)g(an)g(IMAGE)g(extension)0 4846 y(234)95 +b(illegal)45 b(TBCOL)i(keyword)f(value;)g(out)h(of)g(range)0 +4959 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 5072 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 5185 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 +5297 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 5410 y(251)95 +b(unrecognizable)44 b(type)i(of)h(FITS)g(extension)0 +5523 y(252)95 b(unrecognizable)44 b(FITS)i(record)0 5636 +y(253)95 b(END)47 b(keyword)e(contains)h(non-blank)f(characters)g(in)i +(columns)f(9-80)p eop end +%%Page: 129 135 +TeXDict begin 129 134 bop 3764 299 a Fi(129)0 555 y Fe(254)95 +b(Header)46 b(fill)g(area)h(contains)f(non-blank)f(characters)0 +668 y(255)95 b(Data)46 b(fill)h(area)g(contains)e(non-blank)g(on)j +(non-zero)d(values)0 781 y(261)95 b(unable)46 b(to)h(parse)f(the)h +(TFORM)g(keyword)e(value)i(string)0 894 y(262)95 b(unrecognizable)44 +b(TFORM)i(datatype)f(code)0 1007 y(263)95 b(illegal)45 +b(TDIMn)i(keyword)f(value)0 1233 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 1346 y(302)95 b(column)46 b(number)g(out)h(of)g(range) +f(\(1)h(-)h(999\))0 1458 y(304)95 b(attempt)45 b(to)j(move)e(to)h +(negative)f(file)h(record)f(number)0 1571 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 1684 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 +1797 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 1910 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 2023 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 +2136 y(311)95 b(illegal)45 b(ASCII)i(table)f(TFORM)h(format)f(code)g +(for)h(attempted)e(operation)0 2249 y(312)95 b(illegal)45 +b(binary)i(table)f(TFORM)g(format)g(code)h(for)g(attempted)e(operation) +0 2362 y(314)95 b(value)46 b(for)h(undefined)e(pixels)h(has)h(not)g +(been)g(defined)0 2475 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 +2588 y(320)95 b(number)46 b(of)h(array)f(dimensions)f(out)i(of)g(range) +0 2700 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 2813 y(322)95 b(attempt)45 +b(to)j(set)f(BSCALE)f(or)h(TSCALn)f(scaling)g(parameter)f(=)i(0)0 +2926 y(323)95 b(illegal)45 b(axis)i(length)f(less)h(than)f(1)0 +3152 y(340)h(NOT_GROUP_TABLE)d(340)142 b(Grouping)45 +b(function)h(error)0 3265 y(341)95 b(HDU_ALREADY_MEMBER)0 +3378 y(342)47 b(MEMBER_NOT_FOUND)0 3491 y(343)g(GROUP_NOT_FOUND)0 +3604 y(344)g(BAD_GROUP_ID)0 3717 y(345)g(TOO_MANY_HDUS_TRACKED)0 +3830 y(346)g(HDU_ALREADY_TRACKED)0 3942 y(347)g(BAD_OPTION)0 +4055 y(348)g(IDENTICAL_POINTERS)0 4168 y(349)g(BAD_GROUP_ATTACH)0 +4281 y(350)g(BAD_GROUP_DETACH)0 4507 y(360)g(NGP_NO_MEMORY)665 +b(malloc)46 b(failed)0 4620 y(361)h(NGP_READ_ERR)713 +b(read)46 b(error)h(from)f(file)0 4733 y(362)h(NGP_NUL_PTR)761 +b(null)46 b(pointer)g(passed)g(as)h(an)g(argument.)1575 +4846 y(Passing)f(null)g(pointer)g(as)h(a)h(name)f(of)1575 +4959 y(template)f(file)g(raises)g(this)h(error)0 5072 +y(363)g(NGP_EMPTY_CURLINE)473 b(line)46 b(read)h(seems)f(to)h(be)h +(empty)e(\(used)1575 5185 y(internally\))0 5297 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 5410 y(line)g(twice\))0 5523 +y(365)g(NGP_INC_NESTING)569 b(too)46 b(deep)h(include)f(file)h(nesting) +e(\(infinite)1575 5636 y(loop,)h(template)g(includes)f(itself)i(?\))p +eop end +%%Page: 130 136 +TeXDict begin 130 135 bop 0 299 a Fi(130)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(366)47 b(NGP_ERR_FOPEN)665 b(fopen\(\))45 +b(failed,)h(cannot)g(open)h(template)e(file)0 668 y(367)i(NGP_EOF)953 +b(end)46 b(of)i(file)e(encountered)f(and)i(not)g(expected)0 +781 y(368)g(NGP_BAD_ARG)761 b(bad)46 b(arguments)g(passed.)g(Usually)f +(means)1575 894 y(internal)h(parser)g(error.)g(Should)g(not)h(happen)0 +1007 y(369)g(NGP_TOKEN_NOT_EXPECT)329 b(token)46 b(not)h(expected)e +(here)0 1233 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 +1346 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 1458 +y(403)95 b(cannot)46 b(convert)g(a)h(quoted)f(string)g(keyword)g(to)h +(an)g(integer)0 1571 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 +1684 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 1797 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 +1910 y(407)95 b(error)46 b(attempting)f(to)i(read)g(character)e(string) +h(as)h(an)h(integer)0 2023 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 +2136 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 2249 y(410)95 +b(bad)47 b(keyword)e(datatype)h(code)0 2362 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 2475 y(412)95 b(numerical)45 +b(overflow)g(during)i(implicit)e(datatype)h(conversion)0 +2588 y(413)95 b(error)46 b(compressing)f(image)0 2700 +y(414)95 b(error)46 b(uncompressing)e(image)0 2813 y(420)95 +b(error)46 b(in)h(date)g(or)g(time)g(conversion)0 3039 +y(431)95 b(syntax)46 b(error)g(in)h(parser)f(expression)0 +3152 y(432)95 b(expression)45 b(did)i(not)f(evaluate)g(to)h(desired)f +(type)0 3265 y(433)95 b(vector)46 b(result)g(too)h(large)f(to)h(return) +f(in)i(array)0 3378 y(434)95 b(data)46 b(parser)g(failed)g(not)h(sent)g +(an)g(out)g(column)0 3491 y(435)95 b(bad)47 b(data)f(encounter)f(while) +i(parsing)f(column)0 3604 y(436)95 b(parse)46 b(error:)g(output)g(file) +h(not)g(of)g(proper)f(type)0 3830 y(501)95 b(celestial)45 +b(angle)h(too)h(large)g(for)f(projection)0 3942 y(502)95 +b(bad)47 b(celestial)e(coordinate)g(or)i(pixel)f(value)0 +4055 y(503)95 b(error)46 b(in)h(celestial)e(coordinate)g(calculation)0 +4168 y(504)95 b(unsupported)44 b(type)j(of)g(celestial)e(projection)0 +4281 y(505)95 b(required)45 b(celestial)g(coordinate)g(keywords)h(not)h +(found)0 4394 y(506)95 b(approximate)44 b(wcs)j(keyword)f(values)g +(were)h(returned)p eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF |