%!PS-Adobe-2.0 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software %%Title: fitsio.dvi %%Pages: 132 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -N0 fitsio %DVIPSParameters: dpi=600, compressed %DVIPSSource: TeX output 2004.12.03:1404 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet TeXDict begin 40258431 52099146 1000 600 600 (fitsio.dvi) @start %DVIPSBitmapFont: Fa cmmi10 10.95 1 /Fa 1 63 df<126012F8B4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01 FF9038007FC0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1F F0EE07FCEE01FF9338007FC0EF1FF0EF07F8EF01FCA2EF07F8EF1FF0EF7FC0933801FF00 EE07FCEE1FF0EE7FC04B48C7FCED07FCED1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC049 48C9FCEB07FCEB1FF0EB7FC04848CAFCEA07FCEA1FF0EA7FC048CBFC12FC1270363678B1 47>62 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fb cmbx12 12 58 /Fb 58 122 df12 D45 DII49 DII<163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F 87EC1F07143E147E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A48 5A485A120F5B48C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038 >I<0007150301E0143F01FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0 C9FCAAEC3FF001C1B5FC01C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D 13804915C0497F6C4815E0C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D 6C4815E05B007EC74813C0123E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6C B612F0C65D013F1480010F01FCC7FC010113C02D427BC038>I<4AB47E021F13F0027F13 FC49B6FC01079038807F8090390FFC001FD93FF014C04948137F4948EBFFE048495A5A14 00485A120FA248486D13C0EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000 FF017F13E091B512F89039F9F01FFC9039FBC007FE9039FF8003FF17804A6C13C05B6F13 E0A24915F0A317F85BA4127FA5123FA217F07F121FA2000F4A13E0A26C6C15C06D491380 6C018014006C6D485A6C9038E01FFC6DB55A011F5C010714C0010191C7FC9038003FF02D 427BC038>I<121E121F13FC90B712FEA45A17FC17F817F017E017C0A2481680007EC8EA 3F00007C157E5E00785D15014B5A00F84A5A484A5A5E151FC848C7FC157E5DA24A5A1403 5D14074A5AA2141F5D143FA2147F5D14FFA25BA35B92C8FCA35BA55BAA6D5A6D5A6D5A2F 447AC238>IIII65 DIIIIIIII75 DIII<923807FFC092B512FE0207ECFFC0021F15F091 267FFE0013FC902601FFF0EB1FFF01070180010313C04990C76C7FD91FFC6E6C7E49486F 7E49486F7E01FF8348496F7E48496F1380A248496F13C0A24890C96C13E0A24819F04982 003F19F8A3007F19FC49177FA400FF19FEAD007F19FC6D17FFA3003F19F8A26D5E6C19F0 A26E5D6C19E0A26C6D4B13C06C19806E5D6C6D4B13006C6D4B5A6D6C4B5A6D6C4B5A6D6C 4A5B6D01C001075B6D01F0011F5B010101FE90B5C7FC6D90B65A023F15F8020715C00200 4AC8FC030713C047467AC454>II82 DI<003FBA12E0A59026FE000FEB8003D87FE09338003FF0 49171F90C71607A2007E1803007C1801A300781800A400F819F8481978A5C81700B3B3A2 0107B8FCA545437CC24E>IIII<903801FF E0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F 7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC01000313E0000F 1380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1F FF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 DIIIIIII<137C48 B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFF A512037EB3AFB6FCA518467CC520>I107 DI<90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E002816E48 80913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D 013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7C AC5E>I<90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F801F00 0390399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E> II<90397FC00FF8B590B57E 02C314E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D13804A15C04A 6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913 806E4913006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092C9FCADB6 7EA536407DAC3E>I<90387F807FB53881FFE0028313F0028F13F8ED8FFC91389F1FFE00 0313BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0A5272D7D AC2E>114 D<90391FFC038090B51287000314FF120F381FF003383FC00049133F48C712 1F127E00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14FC6C80 0003806C15806C7E010F14C0EB003F020313E0140000F0143FA26C141F150FA27EA26C15 C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007FEC7FC 232F7CAD2C>IIIIIII E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fc cmsy10 10.95 4 /Fc 4 107 df15 D<153FEC03FFEC0FE0EC3F80EC7E00495A5C495AA2495AB3AA130F5C131F495A91C7FC13 FEEA03F8EA7FE048C8FCEA7FE0EA03F8EA00FE133F806D7E130F801307B3AA6D7EA26D7E 80EB007EEC3F80EC0FE0EC03FFEC003F205B7AC32D>102 D<12FCEAFFC0EA07F0EA01FC EA007E6D7E131F6D7EA26D7EB3AA801303806D7E1300147FEC1FC0EC07FEEC00FFEC07FE EC1FC0EC7F0014FC1301495A5C13075CB3AA495AA2495A133F017EC7FC485AEA07F0EAFF C000FCC8FC205B7AC32D>I<126012F0B3B3B3B3B11260045B76C319>106 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fd cmbx12 14.4 63 /Fd 63 123 df<922601FFFC903801FFE0033F9026FF801F13F84AB6D8E07F13FE020F03 F9B6FC023FD9C00FB500C0138091277FFC0003D9FE0113C0902601FFE049495A49494949 4813E04990C714F049484A13E0495A19C0495A7413C0017F17804A6E6E1380719138007E 007192C7FCAEBCFCA526007FF8C7000301C0C8FCB3B3A7007FB5D8F803B612F0A553547D D34E>11 DI<151E153E157E15FCEC01F8EC07F0EC0FE0EC1FC01580143FEC7F00 14FE1301495A5C1307495AA2495A133F5C137FA2495AA24890C7FCA25A5BA21207A2485A A3121F5BA3123FA25BA3127FA55B12FFB3A3127F7FA5123FA37FA2121FA37F120FA36C7E A21203A27F7EA26C7FA26D7EA2133F80131F6D7EA26D7E1303806D7E1300147FEC3F8014 1F15C0EC0FE0EC07F0EC01F8EC00FC157E153E151E1F7973D934>40 D<127012F8127C127E7EEA1FC06C7E6C7E12037F6C7E6C7E7F6D7E133F806D7EA26D7E80 130780A26D7EA26D7EA215807FA215C0A2EC7FE0A315F0143FA315F8A2141FA315FCA514 0F15FEB3A315FC141FA515F8A3143FA215F0A3147F15E0A3ECFFC0A21580A25B1500A249 5AA2495AA25C130F5C495AA2495A5C137F49C7FC5B485A485A5B1207485A485A48C8FC12 7E127C5A12701F7979D934>I45 DII<913803FFC0023F13 FC91B6FC010315C0010F018113F0903A1FFC003FF849486D7E49486D7E49486D7E48496D 138048496D13C0A24817E04890C813F0A34817F8A24817FC49157FA3007F17FEA600FF17 FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A36C17F0A26C6D4913E0A26C6D4913C0 6C17806E5B6C6D4913006D6C495AD91FFCEB3FF8903A0FFF81FFF06D90B55A01011580D9 003F01FCC7FC020313C0384F7BCD43>I<157815FC14031407141F14FF130F0007B5FCB6 FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>II<91380FFFC091B512FC0107ECFF80011F15E090263FF8077F9026FF8001 13FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15E0A4805CA36C17C06C 5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512 F816E016FCEEFF80DA000713E0030113F89238007FFE707E7013807013C018E07013F0A2 18F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FCA25E18F891C7FC6C17 F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A6CD9F0075BC690B612 F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<177C17FEA2160116031607 160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C15FCEC01F815F0EC03 E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A131F49C7FC133E5B13FC 485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A 4F7CCE43>III<121F7F7FEBFF8091B81280A45A19 00606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A5F4C5A160F4C5A484B5A 4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FFA24A90C9FCA25C5D14 07A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC06E5A395279D043>I< 913807FFC0027F13FC0103B67E010F15E090261FFC0113F8903A3FE0003FFCD97F80EB0F FE49C76C7E48488048486E1380000717C04980120F18E0177FA2121F7FA27F7F6E14FF02 E015C014F802FE4913806C7FDBC00313009238F007FE6C02F85B9238FE1FF86C9138FFBF F06CEDFFE017806C4BC7FC6D806D81010F15E06D81010115FC010781011F81491680EBFF E748018115C048D9007F14E04848011F14F048487F48481303030014F8484880161F4848 020713FC1601824848157F173FA2171FA2170FA218F8A27F007F17F06D151FA26C6CED3F E0001F17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE6C01FCEBFFFC6C6CB612 F06D5D010F1580010102FCC7FCD9000F13C0364F7ACD43>I<91380FFF8091B512F80103 14FE010F6E7E4901037F90267FF8007F4948EB3FF048496D7E484980486F7E4849808248 17805A91C714C05A7013E0A218F0B5FCA318F8A618FCA46C5DA37EA25E6C7F6C5DA26C5D 6C7F6C6D137B6C6D13F390387FF803011FB512E36D14C30103028313F89039007FFE03EC 00401500A218F05EA3D801F816E0487E486C16C0487E486D491380A218005E5F4C5A91C7 FC6C484A5A494A5A49495B6C48495BD803FC010F5B9027FF807FFEC7FC6C90B55A6C6C14 F06D14C0010F49C8FC010013F0364F7ACD43>II<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C 8083047F80167E8304FE804C7E03018116F8830303814C7E03078116E083030F814C7E03 1F81168083033F8293C77E4B82157E8403FE824B800201835D840203834B800207835D84 4AB87EA24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A820103854A 82010785A24A82010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>65 DI<932601FFFCEC01C0047F D9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7 383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F882494982494982494982 4949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA2 98C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D 606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D 6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F 93C8FC030715FCDB007F14E0040101FCC9FC525479D261>IIII<9326 01FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003 EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F88249 49824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181F A3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000A36C7F A36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF6D6C6D 5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033FEE001F03 0703FC1307DB007F02E01301040149CAFC5B5479D26A>III75 DIII<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF 020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1FFF4949 6F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A83481B804A8348 1BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C 1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D 4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F 01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13E0565479D265> II82 D<91260FFF80130791B500F8 5B010702FF5B011FEDC03F49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC48 48C87E48488149150F001F824981123F4981007F82A28412FF84A27FA26D82A27F7F6D93 C7FC14C06C13F014FF15F86CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C83 6D826D82010F821303010082021F16801400030F15C0ED007F040714E01600173F050F13 F08383A200788200F882A3187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01 FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48 C66C14FC48010F14F048D9007F90C8FC3C5479D24B>I<003FBC1280A59126C0003F9038 C0007F49C71607D87FF8060113C001E08449197F49193F90C8171FA2007E1A0FA3007C1A 07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0A553517BD05E>IIII97 DI<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE0001 FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F1300705A48 92C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC 3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49C7FC 020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91 B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F484980 485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C 6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD9 003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C04901 817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C0488191 C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01 F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE 903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>IIII<137F497E 000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3 A6B612E0A51B547BD325>I 107 DIII<913801FFE0021F13FE91B612C0010315F0010F9038 807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890C8 6C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5FA2 6C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF80 7FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<903A3FF001FFE0B5010F 13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9FFE0EB1FFFC602806D7F 92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A0060A36118FFA2615F61 6E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FBFE075B02F8B612E06F14 80031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<90397FE003FEB590380F FF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE78014EF 150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307D81FE0130148487F4980 127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15F86C14FF16C06C15F06C 816C816C81C681013F1580010F15C01300020714E0EC003F030713F015010078EC007F00 F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC7F0001FEEB01FE9039FF C00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB635>I<143EA6147EA414 FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FCB3A9EE 07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B0203 13802A4D7ECB34>IIII<007FB500 F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D495A6D4B5A6F495A6D6D 91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06EEBCFC06EEBFF806E91C9 FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03F87F4A486C7E4A486C7E 020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A49486D7F01076F7E49486E7E 49486E7FEBFFF0B500FE49B612C0A542357EB447>II<001F B8FC1880A3912680007F130001FCC7B5FC01F0495B495D49495B495B4B5B48C75C5D4B5B 5F003E4A90C7FC92B5FC4A5B5E4A5B5CC7485B5E4A5B5C4A5B93C8FC91B5FC495B5D4949 EB0F805B495B5D495B49151F4949140092C7FC495A485E485B5C485E485B4A5C48495B48 15074849495A91C712FFB8FCA37E31357CB43C>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fe cmtt10 10.95 93 /Fe 93 127 df<121C127FEAFF80B3EA7F00B2123EC7FCA8121C127FA2EAFF80A3EA7F00 A2121C09396DB830>33 D<00101304007C131F00FEEB3F80A26C137FA248133FB2007E14 00007C7F003C131E00101304191C75B830>I<903907C007C0A2496C487EA8011F131FA2 02C05BA3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F 90B512FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA2 29387DB730>I<1438147C14FCA4EB03FF011F13E090B512FC4880000780481580261FFE FD13C09039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15F800FE14035A1507A3 6CEC03F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14E0000114F86C6C7F01 1F7F01037F0100148002FD13C09138FC7FE0151FED0FF015070018EC03F8127E1501B4FC A35AA26CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81FFEB512806CB612006C 5C6C5CC614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE30>II II<141E147F14FF5BEB03 FEEB07FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F 5BA2127F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7E EB7F80EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>I<127812 FE7E7F6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB 03F8A214FC1301A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14 E0EB1FC0133F1480137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A12781847 78BE30>I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB3FE001C3137F9038F3F9 FF267FFBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0011F90C7FC017F13C048 B512F04880000F14FE003FECFF80267FFBFB13C026FFF3F913E09038C3F87F0183133FD8 7E03EB0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30>I<143EA2147FAF007FB7 FCA2B81280A36C1600A2C76CC8FCAF143EA229297DAF30>II<007FB612F0A2B712F8A36C15F0A225077B9E30>I<120F EA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A2 1507A2ED0FF0A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA2 4A5AA24A5AA24A5AA24AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249 C8FCA2485AA25B1203A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA22547 7BBE30>I<14FE903807FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F48 48EB3FC04848EB1FE049130F001F15F0491307A24848EB03F8A290C712014815FCA400FE EC00FEAD6C14016C15FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A2 6C6CEB3FC06C6CEB7F806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FE C7FC273A7CB830>IIIII<000FB6128048 15C05AA316800180C8FCAEEB83FF019F13C090B512F015FC8181D9FE0313809039F0007F C049133F0180EB1FE06CC7120F000E15F0C81207A216F81503A31218127EA2B4FC150716 F048140F6C15E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C 6C14E06C6C1380D90FFCC7FC25397BB730>II<127CB712FC16FEA416FC48C7EA 0FF816F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA24A5A A24AC7FCA25C5C13015CA213035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7CB830 >I<49B4FC011F13F0017F13FC90B57E0003ECFF804815C048010113E03A1FF8003FF049 131FD83FC0EB07F8A24848EB03FC90C71201A56D1303003F15F86D13076C6CEB0FF06C6C EB1FE0D807FCEB7FC03A03FF83FF806C90B512006C6C13FC011F13F0497F90B512FE4880 2607FE0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15FC90C712014815 FE481400A66C14016C15FC6D1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01FFE0 6C90B512C06C1580C6ECFE006D5B011F13F0010190C7FC273A7CB830>I<49B4FC010F13 E0013F13F890B57E4880488048010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0F F048481307A290C7EA03F85A4815FC1501A416FEA37E7E6D1303A26C6C13076C6C130F6D 133FD80FFC13FF6CB6FC7E6C14FE6C14F9013FEBE1FC010F138190380060011400ED03F8 A2150716F0150F000F15E0486C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC 90B55A6C5C6C5C6C1480C649C7FCEB3FF0273A7CB830>I<120FEA3FC0EA7FE0A2EAFFF0 A4EA7FE0A2EA3FC0EA0F00C7FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F 000C276EA630>II<16F01503ED07F8151F157FEDFFF0 14034A13C0021F138091383FFE00ECFFF8495B010713C0495BD93FFEC7FC495A3801FFF0 485B000F13804890C8FCEA7FFC5BEAFFE05B7FEA7FF87FEA1FFF6C7F000313E06C7F3800 7FFC6D7E90380FFF806D7F010113F06D7FEC3FFE91381FFF80020713C06E13F01400ED7F F8151F1507ED03F01500252F7BB230>I<007FB7FCA2B81280A36C16006C5DCBFCA7003F B612FE4881B81280A36C1600A229157DA530>I<1278127EB4FC13C07FEA7FF813FEEA1F FF6C13C000037F6C13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E7E91380FFF80 6E13C0020113F080ED3FF8151F153FEDFFF05C020713C04A138091383FFE004A5A903801 FFF0495B010F13804990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7FFE13F8EAFFE0 5B90C9FC127E1278252F7BB230>III<147F4A7EA2497FA4497F14F7A401077F14E3A301 0F7FA314C1A2011F7FA490383F80FEA590387F007FA4498049133F90B6FCA34881A39038 FC001F00038149130FA4000781491307A2D87FFFEB7FFFB56CB51280A46C496C13002939 7DB830>I<007FB512F0B612FE6F7E82826C813A03F8001FF815076F7E1501A26F7EA615 015EA24B5A1507ED1FF0ED7FE090B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E 1500167FA3EE3F80A6167F1700A25E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7 FC29387EB730>I<91387F803C903903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE0 7F48EB801F3903FE000F484813075B48481303A2484813015B123F491300A2127F90C8FC 167C16005A5AAC7E7EA2167C6D14FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13 076C6CEB0FF03901FF801F6C9038E07FE06DB512C06D14806D1400010713FC6D13F09038 007FC0273A7CB830>I<003FB512E04814FCB67E6F7E6C816C813A03F8007FF0ED1FF815 0F6F7E6F7E15016F7EA2EE7F80A2163F17C0161FA4EE0FE0AC161F17C0A3163F1780A216 7F17005E4B5A15034B5A150F4B5AED7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B38 7FB730>I<007FB7FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FC A6EBF800A4157C92C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<00 3FB712804816C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FCA690 38FC007FA4153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I<02FF13F00103 EBC0F8010F13F1013F13FD4913FF90B6FC4813C1EC007F4848133F4848131F49130F485A 491307121F5B123F491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C 6D1400ED03F8A27F003F1407A27F121F6D130F120F7F6C6C131FA2D803FE133F6C6C137F ECC1FF6C90B5FC7F6D13FB010F13F30103EBC1F0010090C8FC293A7DB830>I<3B3FFF80 0FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E0D803F8C7EAFE00B290B6FCA6 01F8C7FCB3A23B3FFF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E02D38 7FB730>I<007FB6FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C1500 213879B730>I<49B512F04914F85BA27F6D14F090C7EAFE00B3B3123C127EB4FCA24A5A 1403EB8007397FF01FF86CB55A5D6C5C00075C000149C7FC38003FF025397AB730>II<383FFFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8 FCA27E6C16802A387EB730>III<90383FFFE048B512FC000714FF4815804815C04815 E0EBF80001E0133FD87F80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A3 6D130FA26D131F6C6CEB3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13 E0253A7BB830>I<007FB512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE1501 6F7EA2821780163FA6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15 F001F8C9FCB0387FFFC0B57EA46C5B29387EB730>I<90383FFFE048B512FC000714FF48 15804815C04815E0EBF80001E0133F4848EB1FF049130F90C71207A44815F8481403B3A8 147E14FE6CEBFF076C15F0EC7F87A2EC3FC7018013CF9038C01FFFD83FE014E0EBF80F90 B6FC6C15C06C15806C1500000114FCD8003F7FEB00016E7EA21680157F16C0153F16E015 1F16F0150FED07E025467BB830>I<003FB57E4814F0B612FC15FF6C816C812603F8017F 9138003FF0151F6F7E15071503821501A515035E1507150F4B5A153F4AB45A90B65A5E93 C7FC5D8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EB FFF8B56C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>I<90390FF803C0D97F FF13E048B512C74814F74814FF5A381FF80F383FE001497E4848137F90C7123F5A48141F A2150FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C8001 1F13FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07F8A2007C140312FEA5 6C140716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8 D8F81F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA43AFE003F800FA8007C ED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I<3B7FFFC007FFFCB56C 4813FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C6C14FE6D13016D5CEC 800390393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038007FFCEC1FF02F3980 B730>III<3A3FFF01FF F84801837F02C77FA202835B6C01015B3A01FC007F806D91C7FC00005C6D5BEB7F01EC81 FCEB3F8314C3011F5B14E7010F5B14FF6D5BA26D5BA26D5BA26D90C8FCA4497FA2497FA2 815B81EB0FE781EB1FC381EB3F8181EB7F0081497F49800001143F49800003141F498000 07140FD87FFEEB7FFFB590B5128080A25C6C486D130029387DB730>II<001FB612 FC4815FE5AA490C7EA03FCED07F816F0150FED1FE016C0153FED7F80003E1500C85A4A5A 5D14034A5A5D140F4A5A5D143F4A5A92C7FC5C495A5C1303495A5C130F495A5C133F495A 91C8FC5B4848147C4914FE1203485A5B120F485A5B123F485A90B6FCB7FCA46C15FC2738 7CB730>I<007FB5FCB61280A4150048C8FCB3B3B3A5B6FC1580A46C140019476DBE30>I< 127CA212FEA27EA26C7EA26C7EA26C7EA26C7EA26C7EA26C7EA212017FA26C7EA26D7EA2 6D7EA26D7EA26D7EA26D7EA26D7EA2130180A26D7EA26E7EA26E7EA26E7EA26E7EA26E7E A26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07F8A21503A2ED01 F0150025477BBE30>I<007FB5FCB61280A47EC7123FB3B3B3A5007FB5FCB6FCA46C1400 19477DBE30>I<1307EB1FC0EB7FF0497E000313FE000FEBFF80003F14E0D87FFD13F039 FFF07FF8EBC01FEB800F38FE0003007CEB01F00010EB00401D0E77B730>I<007FB612F0 A2B712F8A36C15F0A225077B7D30>I97 DII<913801FFE04A7F5C A28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0133F49 131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E6D137F 390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0D907FC C8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E488048018113803A07FC 007FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7FCA516 F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE0 6C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>IIII< 14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003F B612C04815E0B7FCA27E6C15C023397AB830>III<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB7 30>I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F138726 07FE07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80 B548018F13C0A46C486C01071380322881A730>II< 49B4FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3FE0D81F E0EB0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15FCA26D 1303003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B51280 6C15006C6C13FC6D5B010F13E0010190C7FC272A7CA830>II<49B413F8010FEBC1FC013F13F14913FD48B6FC5A4813 81390FFC007F49131F4848130F491307485A491303127F90C7FC15015A5AA77E7E15037F A26C6C1307150F6C6C131F6C6C133F01FC137F3907FF01FF6C90B5FC6C14FD6C14F9013F 13F1010F13C1903803FE0190C7FCAD92B512F84A14FCA46E14F82E3C7DA730>II<90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880A46C143E 007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F9038000FFF02 001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF0090B6FC 5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>III<3B3F FFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D130700005D A26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2ECE0FE0107 5BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3FFFC01FFF E0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157EA56D14FE 00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A3017E13FB A290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3A3FFF81FFFC4801 C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE90383F81FC90381FC3F8EB0FE3EC E7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7E0EB07E790380FE3F0ECC1 F890381F81FC90383F80FE90387F007E017E137F01FE6D7E48486D7E267FFF80B5FCB500 C1148014E3A214C16C0180140029277DA630>I<3B3FFFC07FFF80486DB512C0B515E0A2 6C16C06C496C13803B01FC0003F000A2000014076D5C137E150F017F5C7F151FD91F805B A214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F85DA2EB00F9ECFDF0147D 147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE486C5AEA3FC1EBC3F81387 EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<001FB612FC4815FE5AA316 FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A4A5A4A5A 4A5A4990C7FC495A495A495A495A495A495A4948133E4890C7127F485A485A485A485A48 5A48B7FCB8FCA46C15FE28277DA630>II< 127CA212FEB3B3B3AD127CA207476CBE30>II<017C13 3848B4137C48EB80FE4813C14813C348EBEFFC397FEFFFF0D8FF8713E0010713C0486C13 80D87C0113003838007C1F0C78B730>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ff cmbx12 20.74 17 /Ff 17 117 df48 DI<9238 0FFFE04AB67E020F15F0027F15FE49B87E4917E0010F17F8013F8349D9C01F14FF9027FF FC0001814801E06D6C80480180021F804890C86C8048486F8048486F8001FF6F804801C0 6E8002F081486D18806E816E18C0B5821BE06E81A37214F0A56C5BA36C5B6C5B6C5B0003 13C0C690C9FC90CA15E060A34E14C0A21B80601B0060626295B55A5F624D5C624D5C4D91 C7FC614D5B4D13F04D5B6194B55A4C49C8FC4C5B4C5B4C13E04C5B604C90C9FCEE7FFC4C 5A4B5B4B5B4B0180EC0FF04B90C8FC4B5A4B5A4B48ED1FE0EDFFE04A5B4A5B4A90C9FC4A 48163F4A5ADA3FF017C05D4A48167F4A5A4990CA12FFD903FC160749BAFC5B4919805B5B 90BBFC5A5A5A5A481A005A5ABCFCA462A44C7176F061>I<923801FFFE033FEBFFF84AB7 FC020F16E0023F16F84A16FE49B97E49DA003F80010F01F0010714F04901800101804948 C880D97FF86F7F02E081496C834801FC6F148014FF486E6E14C08181481AE081A96C5C1B C06C4A5C6C5C6D90C815806D5AD90FF85D90CA150062606295B55A4D5C624D5C4D5C4D91 C7FC4D13FC4D5B4CB512E0047F1480037FB548C8FC92B612F818C018F8F0FF806F15F092 C7003F13FC050713FF050114C071807213F8727F727F867214801BC07214E01BF0A27214 F81BFCA37214FEA31BFFEBFF80000313E0487F001F13FC487FA2487FA2B67EA31BFEA360 1BFCA292C8FC6C1AF84A5D4A18F06C494B14E05C6C01C04B14C06C90C915804E14006C6D 4B5B6C01F092B55A6C01FC4A5C27007FFFC001075C6D01FE013F14C0010F90B85A6D4DC7 FC010117F8D9003F16E0020F93C8FC020015F0030749C9FC507378F061>II<0170187001FEEF01F86D6C160F02F8167FDAFF80 EC07FF03FE49B5FC92B85A6262A26297C7FC61616119E061614EC8FC18F86018C095C9FC 17F817C0020701F8CAFC91CDFCB0923801FFFC031FEBFFE092B612FC020315FF020F16C0 4A16F0027FD9003F7FDAFFF0010F13FE038001037F4AC76C8002F86E804A6F7F4A6F7F4A 834A6F7F91C980137E017C707F90CAFC1B80A21BC0A2841BE0A51BF0A313FE3803FF8000 0F7F4813F0487F5A80B5FCA41BE0A44E14C05C7E4A18805C4A5D6C90C9150001E0606C6C 5E6D606C6C4C5B7F000794B55A6C6C6C4A5C6C6D4A5C6E4A5C26007FF8021F49C7FC6DB4 027F5B6DD9F007B55A6D90B712E0010317806D4CC8FC6D6C15F8021F15C002034AC9FCDA 003F13804C7376F061>I<94381FFF800403B512F8043F14FE4BB77E030782031F16F003 7F8292B5D8FC017F02039139C0001FFE4A49C7EA07FF021F01F8804A496E13804A01C014 0F91B548023F13C04991C85A494992B5FC49494A14E0495B495E5D5B495BA290B55A5A5D 487114C0A24891C91480731300735A48F00FF896C8FC485BA45AA44849903803FFE0041F 13FE047FEBFFC04BB612F84B81030F15FFB590261FF8038092273FE0007F13E00480011F 7F4BC76C7F03FE6E7F4B6E7FDAFDF86E7FDAFFF017804B6E14C01BE05D7313F05D1BF8A2 92C914FC85A21BFE5CA31BFFA26C5BA87EA4807EA21BFE7EA37E1BFC6E5E6C1AF8A27E6F 17F06C95B512E06D7F1BC06D6D4A14806D4C1400816D6D4A5B6D6D4A5B6D01FF4A13F001 006E017F5B6ED9F007B55A6E90B7C7FC020F5E020316F86E16E0DA003F1580030702FCC8 FCDB007F1380507378F061>II<93B57E031F14FC92B77E020316F0020F16FC023F16FF4A8349B5D8 800314E04901F8C7003F7F4901C0020F7F4990C800037FD91FFC6F7F49486F6C7E137F4A 7013804948827313C05A4A821BE05AA285487FA38080806E5E8003C017C08103F85D03FE 17806F6C5C6C6F160004F05C04FC4A5A6C6F5D706C13FFDDE0015B6CDCF8035BDDFC0F13 C06DDBFF1F5B6D93B5C7FC19FC6D17F06D5F6D17806D17E06D836D6C16FC6E16FF020F83 6E17E06E83020F83023F8391B97E4984010701F0178049D9C07F16C0013FD9801F16E049 EB00074948010116F048497F4849023F15F84849140F4A6E15FC48160148496E6C14FE4A 151F488391C9120348050014FF193F49838500FF84854983A28586A3861BFEA27FA2007F 1AFC7F1A7F1BF86C7FF2FFF06C7F6E4C13E06C6D4C13C06C6D5E6E4C13806C6D4C13006C 6D6CED7FFE6C02E04A485A013F01FC020F13F06D9026FFC001B55A010791B712806D95C7 FC010017FC021F16F002071680DA007F02FCC8FC030191C9FC507378F061>I<93B5FC03 1F14F092B612FE02076F7E021F16E04A16F891B87E49DAF00713FF0107DA0001804901FC 6D6C7F49496E7F49496E7F49496E7F90B5486E7F484A8048854891C86C7FA2487114805C 481AC0A2487213E0A2484918F0A31BF8A2B5FCA27313FCA51BFEA71BFF61A27EA396B6FC 7EA2806C5FA27E606C7F607E6C6E5C6CEF1FBF6D6DEC3F3F6D6D147F6D6D14FE6D6DEB01 FC6D01FE130701019039FFC01FF86D91B500F014FE023F15C06E15800203ECFE00DA007F 13F8030713C092C9FC4F13FCA41BF8A31BF0D91FF093B5FCEB7FFC496C18E0487F486E17 C06048801B804E1400A26260624E5B4B5C626C91C8485B4A4B5B4A92B55A6C01F04A91C7 FC02804A5B6C01E0020F5B6D6C023F13F002FE91B55A90273FFFE00F5C6D90B7C8FC0107 16FC6D16F0010016C0023F92C9FC020714F09126007FFECAFC507378F061>I<96267FFF E01670063FB6ED01F80503B700F01403053F04FC14074CB96C130F040706E0131F043F72 133F93BA00FC137F0303DC00076D13FF030F03C09039003FFF814B02FCC8000713C3037F 02E0030113F792B600806F6CB5FC02034ACA121F4A02F8834A02E0834A4A1701027F4A83 91B548CC7E494A85495C4C854988494A85494A85495C8A4991CDFC90B54886A2484A1B7F A2481E3F5D481E1F5D5A1F0FA2485CA3481E075DA2F703F0489BC7FCA45DA2B6FCB27EA2 81A47EA2F703F06FF307F87EA36C80A21F0F7E6F1CF07E6F1B1F7E20E06C6E1B3F816DF5 7FC06D80F7FF806D806D6E4F13006D6E616D525A826D6E4F5A6D6E4F5A6E6D6C4E5A021F 6EF0FFE06E6E4D5B6E02F84D5B6E02FE050F90C7FC02006E6CEE3FFE6F02F0EEFFFC031F 02FE03035B6FDAFFC0021F13E0030303FF0103B55A030093B7C8FC043F18FC040718F004 0118C0DC003F94C9FC050316F8DD003F1580DE007F01F0CAFC757A75F78C>67 D<92383FFFF80207B612E0027F15FC49B87E010717E0011F83499026F0007F13FC4948C7 000F7F90B502036D7E486E6D806F6D80727F486E6E7F8486727FA28684A26C5C72806C5C 6D90C8FC6D5AEB0FF8EB03E090CAFCA70507B6FC041FB7FC0303B8FC157F0203B9FC021F ECFE0391B612800103ECF800010F14C04991C7FC017F13FC90B512F04814C0485C4891C8 FC485B5A485B5C5A5CA2B5FC5CA360A36E5DA26C5F6E5D187E6C6D846E4A48806C6D4A48 14FC6C6ED90FF0ECFFFC6C02E090263FE07F14FE00019139FC03FFC06C91B6487E013F4B 487E010F4B1307010303F01301D9003F0280D9003F13FC020101F8CBFC57507ACE5E>97 D<93387FFF80030FB512FC037FECFF804AB712E0020716F8021F16FE027FD9F8077F49B5 D8C000804991C7003F13E04901FC020F7F49496E7F49498049496E7F49496E7F90B55A48 727E92C914804884485B1BC048841BE0485BA27313F05AA25C5AA21BF885A2B5FCA391BA FCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F86C7F1A0F6C6E17F06C191F6F17 E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13006D6D6CEC0FFE6D02E0EC3FFC 6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002034CC7FC020016F8031F15E003 0392C8FCDB000F13E04D507BCE58>101 D<903801FFFCB6FCA8C67E131F7FB3AD95380F FFE095B512FE05036E7E050F15E0053F15F84D81932701FFF01F7F4CD900077FDC07FC6D 80DC0FF06D80DC1FC07F4C48824CC8FC047E6F7F5EEDFDF85E03FF707F5EA25EA25EA293 C9FCA45DB3B3A6B8D8E003B81280A8617879F76C>104 D<902601FFFCEC7FFEB6020FB5 12F0057F14FE4CB712C0040716F0041F82047F16FE93B5C66C7F92B500F0010F14C0C66C 0380010380011F4AC76C806D4A6E8004F06F7F4C6F7F4C6F7F4C8193C915804B7014C086 1DE0A27414F0A27414F8A47513FCA57513FEAF5113FCA598B512F8A31DF0621DE0621DC0 621D806F5E701800704B5B505B704B5B7092B55A04FC4A5C704A5C706C010F5C05E0013F 49C7FC9227FE7FFC01B55A70B712F0040F16C0040393C8FC040015F8053F14C0050301F0 C9FC94CCFCB3A6B812E0A85F6F7ACD6C>112 D<902601FFF8EB07FEB691383FFFC094B5 12F00403804C14FE4C8093261FFC3F138093263FE07F13C0DC7F80B5FCC66C5D011FDAFE 0114E06DEBF9FC16F815FB16F016E015FF16C07114C05E72138095381FFE0093C76C5AF0 01E095C8FCA25DA65DB3B3A2B812F8A8434E7ACD4F>114 D<15FFA75CA55CA45CA25CA2 5CA25CA25C91B5FCA25B5B5B131F5B90B9FC120FBAFCA6D8000791C9FCB3B3A3F01FE0AE 183F7014C07F187F7014806D16FF826D4B13006E6D485AEEFE0F6E90B55A020F5D6E5D02 0115C06E6C5C031F49C7FC030113F03B6E7CEC4B>116 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fg cmsl10 10.95 38 /Fg 38 91 df<007FB5FCA2B512FEA418067C961E>45 D<121EEA3F80EA7FC012FFA413 80EA7F00123C0A0A788919>I<1703EF0780170FA2EF1F00A2173EA25FA25FA24C5AA24C 5AA24C5AA24C5AA24CC7FCA2163E167E167C5EA24B5AA24B5AA24B5AA24B5AA24BC8FCA2 153EA25DA25DA24A5AA24A5AA24A5AA24A5AA24AC9FCA2143EA25CA25CA2495AA2495AA2 495AA2495A131F91CAFC133EA25BA25BA2485AA2485AA2485AA2485AA248CBFCA2123EA2 5AA25AA21270315B7FC32D>II<157015F014011407143F903803FFE0137FEBFF CFEBF80F1300141F15C0A5143F1580A5147F1500A55C5CA513015CA513035CA513075CA5 130F5CA3131F497EB612F8A31D3D78BC2D>III<16 1C163C167CA216FCED01F815031507150FA2151DED3BF0157315E315C31401EC03839138 0707E0140E141CA2143814709138E00FC0EB01C014801303EB0700130E49EB1F805B1330 13705B485A4848EB3F0090C7FC5A120E5A5A48147E1260B8FCA3C73801FE00A25DA41403 A25DA314074A7E0107B512F8A3283E7BBD2D>I<01061403D90780131F90390FF801FE91 B512FC16F816F016E0168049EBFE0015F890381C7FC091C8FCA3133C1338A513781370A2 EC1FE0ECFFF8903873E03E9038FF001F01FCEB0F804914C049EB07E04914F049130390C7 FC16F8A61507A21206EA3F80487EA2150F00FF15F0A24914E090C7121F00FC15C000F014 3F00701580ED7F0012786C14FE4A5A6C495A390F800FE03907E03FC06CB5C7FCC613FCEB 1FE0283F7ABC2D>IIIII<13F0EA01FC1203EA07 FEA313FCA2EA03F8EA01E0C7FCB3121EEA3F80EA7FC012FFA41380EA7F00123C0F2778A6 19>I<17E016011603831607A2160FA2161F83163FA2167F167716F7EEE7FCED01E316C3 150316831507EE03FEED0F01150E151E151C153C03387FED7800157015F05D4A4880177F 4A5AA24AC7FCA2020E81173F5C021FB6FC5CA20270C7EA3FE0171F5CA2495AA249488117 0F49C8FCA2130EA24982013C1507A2137CD801FE4B7E2607FF80EC3FFEB500F00107B512 FC19F85E3E417DC044>65 D<013FB7FC18E018FC903B007FE00007FE6E48903801FF8094 38007FC05DF03FE0F01FF0A3027F16F892C8FCA54A16F04A153F19E0187F19C0F0FF8001 014B13004A4A5A4D5AEF1FF04D5ADC03FFC7FC49B612F8EFFF8002F8C7EA3FE0EF0FF0EF 07FC717E010715014A81711380A319C0130F5CA5011F4B13805C19005F601707013F4B5A 4A4A5A4D5A4D5A017F913801FF8001FF020F90C7FCB812FC17F094C8FC3D3E7DBD40>I< DCFFC01338030F01F01378037F01FC13F0913A01FF803F01913A07FC000781DA1FE0EB03 C3DA7FC0EB01E74AC812FF4948ED7FE0D907FC153F495A4948151F495A4948150F494816 C018074890C9FC485AA2485A000F1880491603121FA248481607A295C7FC485AA412FF5B A75BA2181C183C1838A27F007F1778187018F0003F5F6D150160001F16036C6C4B5A95C7 FC6C6C5D6C6C151E6C6C5D6C6C15F86D6C495A6D6CEB07C0D91FF0EB1F80D907FE01FEC8 FC0101B512F86D6C13E0DA07FEC9FC3D4276BF42>I<013FB7FC18E018F8903B007FF000 0FFE6E48EB01FF9438007FC04B6E7E180F85727E727E147F4B6E7EA2727EA302FF178092 C9FCA54918C05CA41A8013034A5DA41A0013074A5DA261A24E5A130F4A5E180F61181F61 011F4C5A5C4E5A4EC7FC4D5A4D5A013F4B5A4A4A5AEF3FE0EF7F80017F4A48C8FC01FFEC 1FFCB812F0178004FCC9FC423E7DBD45>I<013FB812F8A39026007FF0C7127F6E48140F 18034B14011800A31978147F4B1570A502FF147092C7FCA3190017F0495D4A1301A21607 161F91B6FC495DA29138FC003F160F1607160301075D5CA219E0180119C0010FEC07004A 90C712031980A218071900011F5E5C181EA2183E183C013F167C4A15FC4D5A1707017F15 1F01FF4AB45AB9FCA2603D3E7DBD3E>I<013FB812E0A3903A007FF000016E48EB003F18 0F4B14071803A31801147F4B15C0A514FF92C71270A395C7FC17F0495D5C160116031607 161F49B65AA39138FC003F160F160701075D4A1303A5010F4AC8FC5C93C9FCA4131F5CA5 133F5CA3137FEBFFF0B612F8A33B3E7DBD3B>I<4BB46C1370031F01F013F0037F9038FC 01E0913A03FF807E03913A0FF8000F83DA1FE0EB07C7DA7F80EB01EF4AC812FFD903FE16 C04948157F4948153F495A4948151F495A4948168091C9120F5A485AA2485A000F180049 82121FA248485EA295C7FC485AA412FF5BA6043FB512E05BA29339001FFC00715AA2607F 127FA2171F123F6D5EA2121F7F000F163F6C7E6C6C4B5A7F6C6C15FF6C6DEB01EFD93FC0 EB07C7D91FF0EB1F87D907FE9038FE03800101B5EAF8016D6C01E0C8FCDA07FEC9FC3C42 76BF47>I<013FB5D8F807B6FC04F015FEA29026007FF0C7380FFE006E486E5AA24B5DA4 180F147F4B5DA4181F14FF92C85BA4183F5B4A5EA491B8FC5B6102FCC8127FA318FF1307 4A93C7FCA45F130F4A5DA41703131F4A5DA41707133F4A5DA3017F150F496C4A7EB6D8E0 1FB512FC6115C0483E7DBD44>I<011FB512FC5BA29039003FF8006E5AA25DA5143F5DA5 147F5DA514FF92C7FCA55B5CA513035CA513075CA5130F5CA5131F5CA3133F497E007FB5 12F0A2B6FC263E7EBD21>I<013FB500F8010FB5FC4C5BA29026007FF0C7000313E06E48 6E130019FC4B15F04E5A4E5A4E5A061EC7FC027F5D4B5C4D5A4D5AEF07804DC8FC02FF14 1E92C7127C5FEE01E04C5A4C5A49021FC9FC4A5B5E4C7E5D03077F01035B9139FC1F3FE0 153C4B6C7E15F09139FFE00FF84913C092380007FC5C4A6D7E5C707E130F4A6D7F84177F 717EA2011F6F7E5C717EA2717EA2013F6F7E5C84A2017F83496C4A13E0B600E0017F13FF A24B90B6FC483E7DBD47>75 D<013FB512FEA25E9026007FF8C8FCEC3FE0A25DA5147F5D A514FF92C9FCA55B5CA513035CA513075CA21838A21870130F5CA218E0A3011F15014A15 C01703A21707EF0F80013F151F4A143F177FEFFF00017F140301FF143FB9FC5FA2353E7D BD39>I<90263FFFF093381FFFF85013F0629026007FF8EFF000023F4D5AA2023B933801 DFC0A2DA39FCED039FA2F1073F14790271040E5BEC70FE191C19381A7F02F01670DAE07F 94C7FC19E0A2F001C06201016D6C495A02C05FF00700A2180E6F6C14010103161C028003 385BA218706F7EF0E00313070200DA01C05BA2923907F00380A294380700075B010E9026 03F80E5C5FA25F190F011E6D6C5A011C605FA2EEFDC0DB00FF141F013C5D013860013C92 C7FC017C5C01FE027E143F2607FF80017C4A7EB500FC037FB512E004785E4A1338553E7C BD53>I<90263FFFE0023FB5FC6F16FEA29026003FF8020313C0021F030013004A6C157C 023B163C6F15381439810238167802787FDA707F157082153F82031F15F002F07FDAE00F 5D8215078203031401010180DAC0015D82811780047F1303010315C04A013F5C17E0161F 17F0040F1307010715F891C7000791C7FC17FC160317FE04015B4915FF010E6E130E188E 177F18CEEF3FDE011E16FE011C6F5AA2170FA21707133C01386F5A133C017C150113FE26 07FF801400B512FC18705C483E7DBD44>I<923803FF80031F13F09238FE01FE913903F0 003FDA0FC0EB1FC0DA3F80EB07E0027EC76C7E49486E7E49488149486E7E4948157F495A 013F17804948ED3FC049C9FCA24848EE1FE012035B000718F05B120FA2485A19F8123F5B A2127FA219F04848163FA5F07FE0A35BF0FFC0A219805F19007F4D5A127F4D5A60003F16 0F6D5E001F4C5A4D5A6C6C4B5A95C7FC6C6C15FE00034B5A6C6C4A5A6C6C4A5A017FEC1F C06D6C495AD90FE001FEC8FC903903F807F80100B512C0DA0FFCC9FC3D4276BF47>I<01 3FB612FEEFFFE018F8903B007FF0000FFC6E48EB01FF7113804BEC7FC0183F19E0F01FF0 A2147F5D19F8A402FFED3FF092C8FCA219E0A2F07FC05B4AEDFF8019004D5A4D5AEF0FF8 0103ED3FE04A903801FF8091B648C7FC17F002FCCAFCA213075CA5130F5CA5131F5CA513 3F5CA3137F497EB612E0A25D3D3E7DBD3E>I<013FB612F017FF18E0903B007FF0003FF8 6E48EB07FCEF01FE4B6D7EF07F8019C0183F19E0147F4B15F0A502FFED7FE092C8FCA219 C0F0FF80A2494B13004A5D4D5AEF0FF04D5AEF7F800103DA07FEC7FC91B612F017809139 FC0007E0EE03F8EE00FC0107814A147F717EA284A2130F5CA484011F157F5CA41902013F 17075CA2F0F00F017F170E496C143FB600E0011F131C94380FF83C4B01071378CA3801FF E09438003F8040407DBD43>82 D<9238FF80070207EBE00F021FEBF81E91387F00FE02FC EB1F3ED903F0EB0FFE49481307494813034AEB01FC49C7FC491400133E137E177C491578 A57F1770A26D1500808080EB7FFEECFFE06D13FEEDFFC06D14F06D14FC01038001008014 3F02031480DA003F13C015031500EE7FE0163F161FA2160F121CA31607160F003C16C0A3 1780003E151F1700007E5D007F153E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF8 7F803F8027F01FFFFEC7FCD8E00713F839C0007FC030427BBF33>I<0007B912F0A33C0F FE000FF8003F01F0160F01C04A13034848160190C7FC121EF000E048141F5E1238A21278 1270153F5E5AA3C81600157F5EA515FF93C9FCA55C5DA514035DA514075DA5140F5DA314 1FEC7FFC0003B7FCA33C3D76BC42>IIII<010FB500F090B512F85B5FD9003F902680 003F1300DA0FFEC7EA1FF84BEC0FE00207168096C7FC6E6C141E181C6E6C143C606E6D5B 4D5ADB7FC05B4D5A92383FE0074DC8FC92381FF01E171C6F6C5A5F923807FCF0EEFDE06F B45A5F6F90C9FCA26F7FA2707EA216FF4B7FED03DF9238079FF0ED0F1F92380E0FF8151C 92383C07FC15784B6C7EEC01E04B6C7EEC038002076D7F4AC7FC021E6E7E5C02386E7E5C 02F06E7E495A49486E7E130749486E7E497E017F4B7E2603FFF091383FFF80007F01FC49 B512FEB55CA2453E7EBD44>II<010FB712FEA39239C00007FCD91FFCC7EA0FF814F0 4AEC1FF00280EC3FE091C8EA7FC0013EEDFF80A2013C4A13004C5A494A5A4C5A13704C5A 4C5A494A5A4C5AA290C74890C7FC4B5A4B5A4B5AA24B5A4B5A4B5A4B5AA24A90C8FC4A5A 4A5A4A5AA24A5A4A5A4A48EB01C04A5AEF03804990C7FC495A495A494814071800495A49 485C495A495A171E4890C8123E485A4848157E484815FE4C5A484814074848141F4848EB 01FFB8FC5FA2373E7BBD38>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fh cmbx10 10.95 49 /Fh 49 122 df12 D45 D<161C163E167EA216FE16FC150116F8A2150316F0A21507 16E0150F16C0A2151F1680153F1600A25D157E15FE5DA214015DA214035D14075DA2140F 5D141F5DA2143F92C7FC5C147EA214FE5CA213015C13035CA213075C130F5CA2131F5C13 3F91C8FCA25B137EA213FE5B12015BA212035B12075BA2120F5B121F5BA2123F90C9FCA2 5A127E12FE5AA25A1278275B7AC334>47 DI<14 0F143F5C495A130F48B5FCB6FCA313F7EAFE071200B3B3A8007FB612F0A5243C78BB34> I<903803FF80013F13F890B512FE00036E7E4881260FF80F7F261FC0037F4848C67F486C 6D7E6D6D7E487E6D6D7EA26F1380A46C5A6C5A6C5A0007C7FCC8FC4B1300A25E153F5E4B 5AA24B5A5E4A5B4A5B4A48C7FC5D4A5AEC1FE04A5A4A5A9139FF000F80EB01FC495A4948 EB1F00495AEB1F8049C7FC017E5C5B48B7FC485D5A5A5A5A5AB7FC5EA4293C7BBB34>I< 903801FFE0010F13FE013F6D7E90B612E04801817F3A03FC007FF8D807F06D7E82D80FFC 131F6D80121F7FA56C5A5E6C48133FD801F05CC8FC4B5A5E4B5A4A5B020F5B902607FFFE C7FC15F815FEEDFFC0D9000113F06E6C7E6F7E6F7E6F7E1780A26F13C0A217E0EA0FC048 7E487E487E487EA317C0A25D491580127F49491300D83FC0495A6C6C495A3A0FFE01FFF8 6CB65A6C5DC61580013F49C7FC010313E02B3D7CBB34>II<00071538D80FE0EB01F801FE133F90B6FC5E5E5E5E93 C7FC5D15F85D15C04AC8FC0180C9FCA9ECFFC0018713FC019F13FF90B67E020113E09039 F8007FF0496D7E01C06D7E5B6CC77FC8120F82A31780A21207EA1FC0487E487E12FF7FA2 1700A25B4B5A6C5A01805C6CC7123F6D495AD81FE0495A260FFC075B6CB65A6C92C7FCC6 14FC013F13F0010790C8FC293D7BBB34>II<121F7F13F890B712F0A45A17E017C0178017005E5E5A007EC7EA01F84B5A 007C4A5A4B5A4B5A93C7FC485C157E5DC7485A4A5AA24A5A140F5D141F143F5D147FA214 FF92C8FC5BA25BA3495AA3130FA5131FAA6D5A6D5A6D5A2C3F7ABD34>II<903801FFE0010F13FC013F13FF90B612C04801E07F489038003FF048486D 7E000F6E7E485A6F7E123F48488081178012FFA217C0A517E0A4007F5CA4003F5C6C7E5D 6C7E00075C3903FF80FB6C13FF6C6C13F36D13C3010F018313C090380008031400A24B13 80EA03F0487E486C1500487E4B5AA25E151F4B5A495C6C48EBFFE049485B2607FC0F5B6C B6C7FC6C14FC6C14F06D13C0D90FFEC8FC2B3D7CBB34>I<16FCA24B7EA24B7EA34B7FA2 4B7FA34B7FA24B7FA34B7F157C03FC7FEDF87FA2020180EDF03F0203804B7E02078115C0 82020F814B7E021F811500824A81023E7F027E81027C7FA202FC814A147F49B77EA34982 A2D907E0C7001F7F4A80010F835C83011F8391C87E4983133E83017E83017C81B500FC91 B612FCA5463F7CBE4F>65 DI<922607FFC0130E92B500FC131E020702FF133E023FEDC07E91B7EA E1FE01039138803FFB499039F80003FF4901C01300013F90C8127F4948151FD9FFF8150F 48491507485B4A1503481701485B18004890CAFC197E5A5B193E127FA349170012FFAC12 7F7F193EA2123FA27F6C187E197C6C7F19FC6C6D16F86C6D150119F06C6D15036C6DED07 E0D97FFEED0FC06D6CED3F80010F01C0ECFF006D01F8EB03FE6D9039FF801FFC010091B5 5A023F15E002071580020002FCC7FC030713C03F407ABE4C>II< BAFCA4198026003FFEC7123F1707170183183FA2181FF00FC0A31807EE07C0A3F003E0A3 160F95C7FC161F163F16FF91B6FCA54AC6FC163F161F040F147CA2160719F8A593C71201 A219F01803A21807A2180FF01FE0183F18FF1703173FBAFCA219C0A33E3D7DBC45>II<922607FFC0130E92B500FC131E020702FF133E023FEDC07E91B7EAE1FE01 039138803FFB499039F80003FF4901C01300013F90C8127F4948151FD9FFF8150F484915 07485B4A1503481701485B18004890CAFC197E5A5B193E127FA34994C7FC12FFAB0407B6 12FC127F7FA3003F92C7383FFE00A27F7EA26C7FA26C7F6C7FA26C7F6C7FD97FFE157F6D 6C7E010F01E014FF6D01F813036D9038FF801F010091B512F3023F15C00207ED803E0200 9138FE000E030701E090C7FC46407ABE52>I73 D78 DII82 D<903A03FFC001C0011FEBF803017FEBFE0748B6128F4815DF48010013FFD80FF8130F48 481303497F4848EB007F127F49143F161F12FF160FA27F1607A27F7F01FC91C7FCEBFF80 6C13F8ECFFC06C14FCEDFF806C15E016F86C816C816C816C16806C6C15C07F010715E0EB 007F020714F0EC003F1503030013F8167F163F127800F8151FA2160FA27EA217F07E161F 6C16E06D143F01E015C001F8EC7F8001FEEB01FF9026FFE00713004890B55A486C14F8D8 F81F5CD8F00314C027E0003FFEC7FC2D407ABE3A>I<003FB912FCA5903BFE003FFE003F D87FF0EE0FFE01C0160349160190C71500197E127EA2007C183EA400FC183F48181FA5C8 1600B3AF010FB712F8A5403D7CBC49>II<903807FFC0013F13F848B6FC48812607FE037F260FF8007F6DEB3FF0486C80 6F7EA36F7EA26C5A6C5AEA01E0C8FC153F91B5FC130F137F3901FFFE0F4813E0000F1380 381FFE00485A5B485A12FF5BA4151F7F007F143F6D90387BFF806C6C01FB13FE391FFF07 F36CEBFFE100031480C6EC003FD91FF890C7FC2F2B7DA933>97 D<13FFB5FCA512077EAF EDFFE0020713FC021FEBFF80027F80DAFF8113F09139FC003FF802F06D7E4A6D7E4A1307 4A80701380A218C082A318E0AA18C0A25E1880A218005E6E5C6E495A6E495A02FCEB7FF0 903AFCFF01FFE0496CB55AD9F01F91C7FCD9E00713FCC7000113C033407DBE3A>IIIII<903A03FF8007F0013F9038F83FF8499038 FCFFFC48B712FE48018313F93A07FC007FC34848EB3FE1001FEDF1FC4990381FF0F81700 003F81A7001F5DA26D133F000F5D6C6C495A3A03FF83FF8091B5C7FC4814FC01BF5BD80F 03138090CAFCA2487EA27F13F06CB6FC16F016FC6C15FF17806C16C06C16E01207001F16 F0393FE000034848EB003F49EC1FF800FF150F90C81207A56C6CEC0FF06D141F003F16E0 01F0147FD81FFC903801FFC02707FF800F13006C90B55AC615F8013F14E0010101FCC7FC 2F3D7DA834>I<13FFB5FCA512077EAFED1FF8EDFFFE02036D7E4A80DA0FE07F91381F00 7F023C805C4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5333F7CBE3A>II<13FFB5FCA512077EB3B3AFB512FCA5163F7CBE1D>108 D<01FFD91FF8ECFFC0B5 90B5010713F80203DAC01F13FE4A6E487FDA0FE09026F07F077F91261F003FEBF8010007 013EDAF9F0806C0178ECFBC04A6DB4486C7FA24A92C7FC4A5CA34A5CB3A4B5D8FE07B5D8 F03FEBFF80A551297CA858>I<01FFEB1FF8B5EBFFFE02036D7E4A80DA0FE07F91381F00 7F0007013C806C5B4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A533297CA83A>II<01FFEBFFE0B5000713FC021FEBFF80027F 80DAFF8113F09139FC007FF8000701F06D7E6C496D7E4A130F4A6D7E1880A27013C0A382 18E0AA4C13C0A318805E18005E6E5C6E495A6E495A02FCEBFFF0DAFF035B92B55A029F91 C7FC028713FC028113C00280C9FCACB512FEA5333B7DA83A>I<3901FE01FE00FF903807 FF804A13E04A13F0EC3F1F91387C3FF8000713F8000313F0EBFFE0A29138C01FF0ED0FE0 91388007C092C7FCA391C8FCB3A2B6FCA525297DA82B>114 D<90383FFC1E48B512BE00 0714FE5A381FF00F383F800148C7FC007E147EA200FE143EA27E7F6D90C7FC13F8EBFFE0 6C13FF15C06C14F06C806C806C806C80C61580131F1300020713C014000078147F00F814 3F151F7EA27E16806C143F6D140001E013FF9038F803FE90B55A15F0D8F87F13C026E00F FEC7FC222B7DA929>IIII120 DI E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fi cmr10 10.95 93 /Fi 93 124 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907 F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7 FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11 DIII<121EEA7F80EAFFC0A9EA7F80ACEA3F00AC 121EAB120CC7FCA8121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A4179C019>33 D<001E130F397F803FC000FF137F01C013E0A201E013F0A3007F133F391E600F30000013 00A401E01370491360A3000114E04913C00003130101001380481303000EEB070048130E 0018130C0038131C003013181C1C7DBE2D>I<4B6C130C4B6C131EA20307143EA24C133C A2030F147CA293C71278A24B14F8A2031E5CA2033E1301A2033C5CA3037C1303A203785C A203F81307A24B5CA20201140F007FBAFCBB1280A26C1900C72707C0003EC8FC4B133CA3 020F147CA292C71278A24A14F8A2021E5CA3023E1301007FBAFCBB1280A26C1900C727F8 0007C0C8FC4A5CA20101140FA24A91C9FCA301035CA24A131EA20107143EA24A133CA201 0F147CA291C71278A34914F8A2011E5CA2013E1301A2013C5CA201186D5A41517BBE4C> I<14E0A4EB07FC90383FFF8090B512E03901F8E3F03903E0E0FCD807C0133CD80F807FD8 1F007F003E80003C1580007C140316C00078141F00F8143F157FA47EED3F806CEC0E0092 C7FC127F138013C0EA3FF013FEEA1FFF6C13FC6C13FF6C14C06C806C6C13F8011F7F1303 01007FECE7FF14E102E01380157F153FED1FC0A2003E140F127FD8FF801307A5130000FC 158000F0140F1270007815005D6C141E153E6C5C6C5C3907C0E1F03903F8EFE0C6B51280 D93FFEC7FCEB0FF8EB00E0A422497BC32D>I<013F1603D9FFC04B7E2601E0E0150F2607 C070151F48486C4BC7FC023E157E48486C15FE48D90FC0EB03FC003ED90EF0EB0FF8DA0F 3F13FD007E903A070FFFF1F0007C0200EB03E0160000FC6D6C495A170F604DC8FC5F173E 5F17FC5F4C5A1603007CD907005B4C5A007E150F003E495C020E49C9FC003F5D6C49133E 260F803C5B023813FC6C6C485B3A01E0E001F03800FFC090273F0003E0133F90C70007EC FFC09339C001E0E0923A0F8007C070031F49487E0400143C033E90381F001C037E497F03 7C133E4B150F0201027E7F4B137C4A5A020702FCEB03805D4A5A141F92C7FC143E147E14 7C5CA2495A0103037CEB07005C4948147E010F033E5B4A160E49C8123F496F5B013E9238 0F803C49173801FC6F6C5A49923801E0E0496FB45A0160043FC7FC41497BC34C>II<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312 011380120313005A120E5A1218123812300B1C79BE19>I<1430147014E0EB01C0EB0380 1307EB0F00131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25AA3 123E127EA6127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA212017F 12007F13787F133E131E7FEB07801303EB01C0EB00E014701430145A77C323>I<12C07E 12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA21480130FA214C0 A3130714E0A6130314F0B214E01307A614C0130FA31480A2131F1400A25B133EA25BA213 7813F85B12015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>II<1506150FB3A9 007FB912E0BA12F0A26C18E0C8000FC9FCB3A915063C3C7BB447>I<121EEA7F8012FF13 C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A120E5A121812381230 0B1C798919>II<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A 798919>IIIIII<150E151E153EA2157EA215FE1401A21403 EC077E1406140E141CA214381470A214E0EB01C0A2EB0380EB0700A2130E5BA25B5BA25B 5B1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC4A7E49B6FCA3283E7E BD2D>I<00061403D80780131F01F813FE90B5FC5D5D5D15C092C7FC14FCEB3FE090C9FC ACEB01FE90380FFF8090383E03E090387001F8496C7E49137E497F90C713800006141FC8 13C0A216E0150FA316F0A3120C127F7F12FFA416E090C7121F12FC007015C012780038EC 3F80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6B55A013F90C7FCEB07F8 243F7CBC2D>II<1238123C123F90 B612FCA316F85A16F016E00078C712010070EC03C0ED078016005D48141E151C153C5DC8 127015F04A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8A213015C1303A31307A3 130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>III< 121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EAFFC0A4EA7F80A2EA1E 000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121E127FEAFF80A2 13C0A4127F121E1200A412011380A3120313005A1206120E120C121C5A1230A20A3979A6 19>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCA8120C121EAB123FACEA7F80ACEA FFC0A9EA7F80EA1E000A4179AC19>I<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0 BA12F0A26C18E03C167BA147>IIII<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A291 3801C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D 7EA349486D7E91B6FCA249819138800001A249C87EA24982010E157FA2011E82011C153F A2013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D41 7DC044>III< B712FCEEFF8017E000019039C0001FF86C6C48EB03FEEE00FF717E717EEF0FE084717E71 7E170184717EA21980187F19C0A3F03FE0A519F0AB19E0A5F07FC0A21980A218FF19004D 5AA24D5A6017074D5A4D5AEF7FC04DC7FCEE03FE48486CEB1FF8B85A178004FCC8FC3C3E 7DBD45>IIIIII<011FB512FCA3D9000713006E5A1401B3B3A6 123FEA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A6C495A6C495A2603 E07EC7FC3800FFF8EB3FC026407CBD2F>II< B612F8A3000101E0C9FC38007F80B3B0EF0380A517071800A45FA35FA25F5F5F4C5A1607 48486C133FB8FCA3313E7DBD39>IIIIIIII<003FB91280A3903AF0007FE001018090393F C0003F48C7ED1FC0007E1707127C00781703A300701701A548EF00E0A5C81600B3B14B7E 4B7E0107B612FEA33B3D7DBC42>IIII<007FB5D8C003B512E0A3C6 49C7EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C1470 6D6D13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C 6E6C5A913801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFEED71FF15F103E07F91 3801C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D 7F130149486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC01 03B512FEA33F3E7EBD44>II<003F B712F8A391C7EA1FF013F801E0EC3FE00180EC7FC090C8FC003EEDFF80A2003C4A130000 7C4A5A12784B5A4B5AA200704A5AA24B5A4B5AA2C8485A4A90C7FCA24A5A4A5AA24A5AA2 4A5A4A5AA24A5A4A5AA24990C8FCA2495A4948141CA2495A495AA2495A495A173C495AA2 4890C8FC485A1778485A484815F8A24848140116034848140F4848143FED01FFB8FCA32E 3E7BBD38>II<486C13C000031301 01001380481303000EEB070048130E0018130C0038131C003013180070133800601330A3 00E01370481360A400CFEB678039FFC07FE001E013F0A3007F133FA2003F131F01C013E0 390F0007801C1C73BE2D>II96 DII<49B4FC010F13E090383F00F8017C131E4848131F484813 7F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC 01C07F001F140316806C6C13076C6C14000003140E6C6C131E6C6C137890383F01F09038 0FFFC0D901FEC7FC222A7DA828>IIII<167C903903F801FF903A 1FFF078F8090397E0FDE1F9038F803F83803F001A23B07E000FC0600000F6EC7FC49137E 001F147FA8000F147E6D13FE00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FC EB03F80006CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC000 1FFC48C7EA01FE003E140048157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C 495AD803F0EB0FC0D800FE017FC7FC90383FFFFC010313C0293D7EA82D>III<1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F14 7FB3B3A5123E127F38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF8038 01FC00185185BD1C>III<2701 F801FE14FF00FF902707FFC00313E0913B1E07E00F03F0913B7803F03C01F80007903BE0 01F87000FC2603F9C06D487F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495C B3A6486C496CECFF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807 FFC091381E07E091387803F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13 FF5BA25BB3A6486C497EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890 387E007E01F8131F4848EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15 FCA248C812FEA44815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E0 6C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D >I<3901FC03FC00FF90381FFF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C 90C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D15 80EE7F007F6E13FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FC AD487EB512F8A32D3A7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C01FC 131CD803F8130E4848EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA36C7E A2001F14036C7E15076C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC19038 01FE0190C7FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1 FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F28 7EA724>I<90383FC0603901FFF8E03807C03F381F000F003E1307003C1303127C007813 0112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F 13E0010313F0EB001FEC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB03C0 903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FC A2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03 013F138090381F8700EB07FEEB01F81B397EB723>IIIIII<001FB61280A2EBE0000180140049485A001E495A121C4A5A003C495A14 1F00385C4A5A147F5D4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F80EB FF005A5B484813071207491400485A48485BA248485B4848137F00FF495A90B6FCA22127 7EA628>II E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fj cmr12 14.4 16 /Fj 16 122 df<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F000C0C768B21>46 D48 D50 D<160F5EA25E5EA25E5DA25D5DA25D151E151C153C5D157015F04A5A5D14035D4A5A 5C140E5C143C14385C14F05C495A13035C130749C7FC130E131E5B133813785B5B120148 5A5B120748C8FC120E121E5A123812785AB912F0A4C8000190C7FCAF4B7F4B7F020FB612 E0A434507DCF3B>52 D<000316C001C0140301F8141F903AFFC003FF8091B612005E5E5E 16E016804BC7FC019F13F8018113800180C9FCB0EC0FF0ECFFFE01836D7E903987F01FE0 90399F0007F801BE6D7E01F86D7E496D7E49EC7F805BEE3FC04915E0C9121F17F0A317F8 160FA317FCA5120EEA3F80487E12FF7FA217F85B161F5B48C813F012700078ED3FE0A26C 16C0167F6CEDFF80001F16006C6C495A6C6C13036C6CEB07F8D801F8EB1FF06CB4EB7FE0 6DB51280011F49C7FC010713F8010013C02E517ACE3B>I<49B612FEA490C7003F138092 380FFE001507B3B3B3A21206EA3FC0487E487EA44B5AA25B007F5D0180131F0078C75B6C 143F003E4A5A6C5D6C6C495A2707E003FEC7FC3901FC07FC6CB512F0013F13C0D907FCC8 FC2F547BD13C>74 D86 D101 D<1378EA01FE487E487FA66C90C7FC6C5AEA00 7890C8FCB0EB7F80B5FCA41203C6FC137FB3B3A43801FFE0B61280A419507CCF21>105 D108 D<01FFEB07FCB590383FFF8092B512E0913901F00FF8913903C007FC000349C66C7EC601 0E13016D486D7E5C143002706E7E146014E05CA35CB3AD2601FFE0903801FFE0B600C0B6 12C0A43A347CB341>110 DI<01FFEB1F80B5EB7FF09138 01FFF8913803E1FC91380783FE0003EB0F07C6131EEB7F1C1438143091387003FC913860 00F0160014E05CA45CB3AA8048487EB612F0A427347DB32E>114 DI117 D121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fk cmbx12 17.28 21 /Fk 21 118 df65 D70 D73 D80 D83 D<001FBEFCA64849C79126E0000F148002E0180091C8171F498601F81A0349864986A249 1B7FA2491B3F007F1DC090C9181FA4007E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3 021FBAFCA663617AE070>I<913803FFFE027FEBFFF00103B612FE010F6F7E4916E09027 3FFE001F7FD97FE001077FD9FFF801017F486D6D7F717E486D6E7F85717FA2717FA36C49 6E7FA26C5B6D5AEB1FC090C9FCA74BB6FC157F0207B7FC147F49B61207010F14C0013FEB FE004913F048B512C04891C7FC485B4813F85A5C485B5A5CA2B55AA45FA25F806C5E806C 047D7F6EEB01F96C6DD903F1EBFF806C01FED90FE114FF6C9027FFC07FC01580000191B5 487E6C6C4B7E011F02FC130F010302F001011400D9001F90CBFC49437CC14E>97 D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF80047F14F00381B612FC038715FF 038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02007F03F8824B6F7E4B6F1380 4B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA44F13F8A31BF0A24F13E0A24F 13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C495B9126F83FE0013F13C09127 F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C7001F91C8FC90C8000313E04F65 7BE35A>I<92380FFFF04AB67E020F15F0023F15FC91B77E01039039FE001FFF4901F801 0113804901E0010713C04901804913E0017F90C7FC49484A13F0A2485B485B5A5C5A7113 E0485B7113C048701380943800FE0095C7FC485BA4B5FCAE7EA280A27EA2806C18FCA26C 6D150119F87E6C6D15036EED07F06C18E06C6D150F6D6DEC1FC06D01E0EC7F806D6DECFF 00010701FCEB03FE6D9039FFC03FFC010091B512F0023F5D020F1580020102FCC7FCDA00 0F13C03E437BC148>I<92380FFFC04AB512FC020FECFF80023F15E091B712F80103D9FE 037F499039F0007FFF011F01C0011F7F49496D7F4990C76C7F49486E7F48498048844A80 4884485B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA41A0002C0CBFCA67EA380A2 7EA27E6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17016D6C4B5A6D6D4A5A6D01 E04A5A6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D6C90B55A021F15F8020715 E0020092C8FC030713F041437CC14A>101 DII105 D<903807FF80B6FCA6C6FC 7F7FB3B3B3B3ADB712E0A623647BE32C>108 D<902607FF80D91FFFEEFFF8B691B500F0 0207EBFF80040702FC023F14E0041F02FF91B612F84C6F488193267FE07F6D4801037F92 2781FE001F9027E00FF0007FC6DA83F86D9026F01FC06D7F6DD987F06D4A487F6DD98FC0 DBF87EC7804C6D027C80039FC76E488203BEEEFDF003BC6E4A8003FC04FF834B5FA24B5F A24B94C8FCA44B5EB3B2B7D8F007B7D8803FB612FCA67E417BC087>I<902607FF80EB1F FFB691B512F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FC6DA83F86D7F6D D987F07F6DD98FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F007 B71280A651417BC05A>I<923807FFE092B6FC020715E0021F15F8027F15FE494848C66C 6C7E010701F0010F13E04901C001037F49496D7F4990C87F49486F7E49486F7E48496F13 804819C04A814819E048496F13F0A24819F8A348496F13FCA34819FEA4B518FFAD6C19FE A46C6D4B13FCA36C19F8A26C6D4B13F0A26C19E06C6D4B13C0A26C6D4B13806C6D4B1300 6D6C4B5A6D6D495B6D6D495B010701F0010F13E06D01FE017F5B010090B7C7FC023F15FC 020715E0020092C8FC030713E048437CC151>I 114 D<913A3FFF8007800107B5EAF81F011FECFE7F017F91B5FC48B8FC48EBE0014890C7 121FD80FFC1407D81FF0801600485A007F167F49153FA212FF171FA27F7F7F6D92C7FC13 FF14E014FF6C14F8EDFFC06C15FC16FF6C16C06C16F06C826C826C826C82013F1680010F 16C01303D9007F15E0020315F0EC001F1500041F13F81607007C150100FC81177F6C163F A2171F7EA26D16F0A27F173F6D16E06D157F6D16C001FEEDFF806D0203130002C0EB0FFE 02FCEB7FFC01DFB65A010F5DD8FE0315C026F8007F49C7FC48010F13E035437BC140>I< EC07E0A6140FA5141FA3143FA2147FA214FF5BA25B5B5B5B137F48B5FC000F91B512FEB8 FCA5D8001F01E0C8FCB3AFEF0FC0AC171F6D6D1480A2173F6D16006F5B6D6D137E6D6D5B 6DEBFF836EEBFFF86E5C020F14C002035C9126003FFCC7FC325C7DDA3F>I<902607FFC0 ED3FFEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60183E6D6D147E4E7F6D 6D4948806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F5C020314F8DA003F01 8002F0C7FC51427BC05A>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fl cmbx12 24.88 40 /Fl 40 122 df[<96380FFFFE060FB612E04DB712FC051F16FF94B912C0040784041F18 F8047F9126FC001F7F4BB6008001017F030702F8C8EA3FFF4B02E0030F7F033F02804B7F 4B49C9127F92B54893B57E4A02F05D4A4A4B804A4A5D4A4A84634A91C9FC4A5BA24A5B51 80755C91B5FC5EA3755CA2755C755C755CE23FFEC8FCF40FF899CAFCAF083FB612FCBFFC A9C702FCC912038787B3B3B3B2003FB800F0013FB812F0A9>116 144 123 271 129 12 D[33 70 111 270 65 39 D45 D[<1CFC517E517E1D8063A263A3511300A2515AA3515AA2 515AA3505BA2505BA3505BA2505BA35090C7FCA2505AA3505AA2505AA34F5BA24F5BA34F 5BA26361A24F90C8FCA34F5AA24F5AA34F5AA24E5BA34E5BA24E5BA34E5BA24E90C9FCA3 4E5AA24E5AA34E5AA24D5BA34D5BA2615FA24D5BA34D90CAFCA24D5AA34D5AA24D5AA34C 5BA24C5BA34C5BA24C5BA34C90CBFCA24C5AA34C5AA24C5AA34B5BA25F5DA24B5BA34B5B A24B90CCFCA34B5AA24B5AA34B5AA24A5BA34A5BA24A5BA34A5BA24A90CDFCA34A5AA24A 5AA34A5AA25D5BA2495BA3495BA2495BA34990CEFCA2495AA3495AA2495AA3485BA2485B A3485BA2485BA34890CFFCA2485AA3485AA2485AA35BA25B127F6C5A6C5A>89 207 115 282 116 47 D[158 145 120 272 175 65 D[143 142 120 269 165 I[<0803B500C0EE01F00703B600FEEE03F8077FDBFFE015070607B800FC150F 063F05FF151F4DBA00E0143F050F07F8147F053F07FE14FF94BC5B04039326F8000FECC0 03040F4BC86CEBF007043F03C0030F6D5A93B648C900036D5A4B03F09339007FFF3F0307 03C0051F90B5FC4B92CB7E033F02FC18034B02F08492B648844A0380193F4A92CD7E4A4A 864A4A864A02F0864A4A864A8991B65A494B874992CF7E4C885B494A885E498B494A88A2 495C8D90B65A8D5A5E48217FA24892D1FC223FA25A5DA248211FA3485CFA0FF09FC7FCA2 5AA45DA3B6FCB27EA381A47EA46C80FA07F0FA0FF87EA2817EA36C6F1D1F23F07E827E22 3F6D6E1EE0A26D6E1D7F23C06D6E1DFF7F705213806D806D55130070646D6F646D6F515A 6E6E1B1F6E6E515A6E6E515A6E6E1BFF6E6E505B6E6E505B6E6F4F5B6E03E04F90C7FC6F 6EF13FFE6F02FC4F5A030F02FF4E485A6F03C005075B030103F0051F5B6F03FE057F1380 043FDAFFE00303B5C8FC040F03FE033F13FC0403DBFFF80107B55A040093B812E0053F1A 80050F4FC9FC050119F8DD003F18C0060795CAFCDE007F16F0070393CBFCDF000314C0> 141 146 115 271 168 I[156 142 120 269 178 I[138 141 120 268 153 I[127 141 120 268 146 I[<0803B500C0EE01F00703B600FE4C7E077FDBFFE015070607B800FC150F06 3F05FF151F4DBA00E0143F050F07F8147F053F07FE14FF94BC5B04039326F8000FECC003 040F4BC86CEBF007043F03C0030F6D5A93B648C900036D5A4B03F09339007FFF3F030703 C0051F90B5FC4B92CB7E033F02FC18034B02F08492B648844A0380193F4A92CD7E4A4A86 4A4A864A02F0864A4A864A8991B65A494B874992CF7E4C885B494A885E498B494A88A249 5C8D90B65A8D5A5E48217FA24892D1FC223FA25A5DA248211FA3485C7C5A9FC9FCA25AA4 5DA3B6FCB27EA381A20A0FBB12F8A27EA46C80A36C98C96C02F8C7FCA2817EA36C81A27E 827E827FA26D80A26D806D80A26D806D80A26D816D816E806E806E806E6E97B6FC6E806E 806E03C0606E816F02F8606F02FE60030F6E606F03E0173F030103F85F6F03FF933801FF FC043F03E00307497E040F03FF033F497E040304FC0107B5EAE00F040093B8487E053FF2 0001050F07FCEB007F050107F0141FDD003F06C01407060795C81201DE007F04F8ED0070 0703048093C8FCDF000302E0CDFC>157 146 115 271 183 I[74 142 122 269 87 73 D[165 142 120 269 182 78 D[<97B512F0077FECFFE00607B712FE067FEEFFE00503B912FC05 1FF0FF80057F19E00403BB12FC040F9226E0007F14FF043F02FCC7000315C04C02E0DA00 7F804BB60080031F14F8030702FCC9000314FE4B4A70804B02E0706C80037F0280051F14 E092B6CB6C804A4A72804A4A72804A02F00600804A4A737F4A4A73804A8B4A4A738091B6 CD6C80494A7480A2494A7480494A7480498C4C86498D4C87498D494A7580A290B68B4C87 488EA24892CF6C80A3488E4B88A2488EA3484A761580A34823C0A5484A7615E0A7B621F0 B36C23E0A26F64A56C23C0A46F646C2380A36C23006F64A26C6AA270636C6AA26C6A7063 6C6A70636D69A26D6E98B65AA26D6E505DA26D6E5092C7FC6D6870626D6E505C6D686D6F 4F5C6E6E4F5C6E6E4F5CA26E6E96B65A6E6E4E92C8FC6E6E4E5C020102FF060F14F86E6F 4D5C6F6E4D5C6F02F094B65A030F6E4C92C9FC6F02FE04075C03016E6C031F14F86F03F0 92B65A043F02FE020715C0040FDAFFF090B7CAFC040392B812FC04001AF0051F19800507 4ECBFCDD007F17E0060F94CCFCDE007F15E0070002F0CDFC>148 146 115 271 175 I[137 142 120 269 159 I[163 144 120 269 173 82 D[<93260FFFF8163E4BB600E0153F031F03 FE5D037FDBFFC05C0203B800F05B020F05FC5B4A05FF5B027FF0C00F91B526FE000FECF0 1F010302C0D9007F6D5A4991C800076D5A4901FC030090B6FC4901F0163F4949160F4901 808290B5170192CBFC4849844849181F87484984A2484984874886A248498588A24887A3 88A2B58680A36E85A280A26E8580A2818103F0725A6C6E96C7FC15FE8116E06C15FEEEFF E017FF6C17F0F0FF806C18F8F1FFC06C19FCF2FF806C1AE01BF86C1AFE6C747E6D1AE088 6D866D866D1AFF6D876D87010087806E86020F86020386020086153F030F851501DB001F 19801601DC000F18C0EF007F060717E0F0003F070316F0F1003F1A0F080315F81A00871B 1F877514FCA287007F86486C85A288A388A36D86A31EF87FA37F1EF0A26D626D1CE0A27F 6D5013C0A26E1B806E96B5FC6E1B0002F8606E4E5B6E626E6C5F03E04D5B03F84D5B03FE 057F5BDBFFC093B55A04F803035C496CD9FF80021F91C7FCD9FC1F02FF49B55AD9F80792 B75A496C19F049C66149011F18804901074DC8FC90C817F848031F16C048030003FCC9FC 007C04011480>102 146 115 271 129 I[<000FC312F8A6488EA304C0C7001F4AC71201 03F8C8F0000F03C01C0192C9737E02FC1E1F4A1E0702E08A4A8A4A8A4890CA757EA24920 3F49201FA349200FA2492007A4492003007F8EA4498CA848487A1380A6CC99C7FCB3B3B3 B3AA030FBD12FCA9>145 140 120 267 162 I[162 144 120 269 179 I<93B512FC037FECFFF00207B8FC023F17E091B912F84918FE010772 7E499126C0007F14E04901E0C7000F80496D020380496D020014FE6F6F7F90B570806F6F 8085486E6F807380A27380A28885886C5CA26D4982886D5B6D5B010713C0010190CAFC90 CCFCA90603B7FC050FB8FC0403B9FC167F0307BAFC153F4AB7EA807F020FEDE000023F02 FCC7FC91B612E0010392C8FC4914FC011F14F04914C0495C90B548C9FC485C485C485C48 5C5A5D485CA24891CAFCA3B6FC5CA397B6FCA461806C60F107EF6C6E150F6F16CF6C183F 6FDB7F8F806C6EDBFF0F14E06C02FCDA03FE15FE6C6E91260FFC0791B5FC6C6E6CD93FF8 17806C923AF803FFF003013F91B6487E010FEF8000010394C77E010004FC141F021F03F0 140702010380DA007F1400DA000701F8CDFC695F79DD71>97 D[113 144 121 270 129 I<94387FFFF0041FB612E093B712FE0307707E031F17F092B97E4A18FE020784021F 9126F8000F14804A0280010014C04A49C74814E049B500F85C494A17F0494A5C495C494A 4A14F84991C8FC5D495B90B5FC5D5A485C7314F05A4B6F14E05A7314C0487214804B9338 3FFE00F20FF84896C8FCA4485CA5B6FCB07EA281A37EA36C80A37E6F18FE6CF201FFA26C 6E5F1CFE6C801B076C6EEF0FFC6D7F70EE1FF86DF13FF06D6E167F6D6EEEFFE06D02F84B 13C06D6E5D6D02FF030F13806D03C0023F1300023F02F0903801FFFC6E9126FF801F5B02 0792B65A6E18C0020060033F4CC7FC030716F8030016C0041F4AC8FCDC007F13C0585F78 DD67>I[113 144 120 270 129 I<94387FFFC0040FB6FC93B712E0030716FC031F16FF037F17C04AB912F0 0207DAF80380021F912680003F13FE4A49C7000F7F4A01F802038049B5486E804902C06E 6C7F494A6F7F4991C9FC49727F4949707F4B84498490B548707F5A4B198048855D481CC0 86481CE05D5A871DF05AA25D5AA21DF887A2B6FCA392BBFCA51DF00380CDFCA77EA4817E A37EA2817EA26CF307F06FF00FF87E816C1B1F6F19F06C1B3F6D6DF07FE06D7FF4FFC06D 6E4C13806D6E5E6D02F04C13006D6EEE1FFE6D6E4C5A6D6C01FFEEFFF86E02E002035B6E 02FC021F5B02079126FFC003B55A6E92B7C7FC020060033F17F8030F17E003011780DB00 3F03FCC8FC040315C0DC000F01F8C9FC5D5F7ADD6A>I[<95383FFF80050FB512F094B612 FE040781041F16C0047F824BB87E0307DAF8077F031FDAC00F7F4B49C6487F4B495B92B5 00F0814A4A5B4A5C4A93B612805F4A91C7FC5C5E5C5E5C731400A24C6E5B91B56F5BA273 5B070313E00700138097C8FCB3A4BA12F8A9C702FCCBFCB3B3B3B3A2003FB9FCA9>81 144 121 271 71 II[ 114 143 119 270 129 I[49 144 119 271 65 I[ 50 143 119 270 65 108 DII<94381FFFF00407B612C004 7F15FC0303B87E030F17E0037F17FC4ABAFC4A9126FC007F80020F02C0010714E04A49C8 80027F01F8033F13FC91B5486F7F4902C003077F494A6F804991C96C8049497080494971 7F49874949717FA290B548717F48884B83481D80A2481DC04B83481DE0A2481DF0A3484A 7114F8A4481DFCA5B61BFEAF6C1DFCA56C6E4D14F8A36C1DF0A36C1DE06F5F6C1DC0A26C 6E4D1480A26C1D006F5F6C646D6D4D5B6F94B5FC6D636D6D4C5C6D6E4B5C6D6E4B5C6D02 F0031F5C6D6E4B91C7FC6D6C01FE92B512FC6ED9FFC001075C6E02FC017F5C020791B812 C0020196C8FC6E6C17FC031F17F003031780DB007F03FCC9FC040715C0DC001F01F0CAFC 675F7ADD74>II114 D<92261FFFF814F80203B638C001FC023FEDFC0791B8121F010317FF 130F013F9038F8001F4990C8FCD9FFF8153F4801E0150F484915034849814890CAFC197F 4848173F191F485AA2007F180FA31907487EA27FA28002E0705A6E93C8FC14FC14FF15F0 6CECFF8016FCEEFFF06CEEFF8018F06C17FE727E6C18E0856C18FC6C846C727E6C856D84 011F846D841303010084023F83140F020183EC001FDB007F16801603DC000F15C0170018 3F060F14E0007F1703486C82727E857F85857FA2857F1BC07FA27F1B806D5F7F1B006E5E 6E5F6E163F6E4C5A02FC4C5A6E03035B6E6C4A5B03F0023F5B03FF0107B55A01F991B7C7 FCD9F07F16FCD9E01F16F0D9800716C0D9000193C8FC48D9003F14F8007C020349C9FC4B 5F78DD5C>I[72 132 124 258 90 III<007FB86C49B712FEA9C792C9000F02C0C7FC6E6E 030101F0C8FC715F6E6E4B5B6E6E4B5B6E4E90C9FC6E6E5E71151F6E6E4B5A6E6E4B5A6E 4E5A6F6E495B72495B6F6E495B6F806F6E4990CAFC6F4C5A72495A6F6E495A6F6E495A6F 03815B705E7014C307E75B7091B5CBFC705D705D705D6282705D715C8386718071807180 837180864D814D815F4D81874D814D81DDFFF3804C13E14C01C1804C0180814E6C804C6E 804C487F4C48824C486D804C486D804B496D804B497F73804B49834B90C86C804B486F80 4B48814B486F804B48844C6F804A71804A496F804A49814A90CA814A487180023F728001 0FB500E07080B8031FB812E0A9735C7CDB7B>120 D<007FB800C04AB71280A9D800034A CA000791C7FC6D080013F0775A6D6E4E5AA26E6E6064836E4F90C8FC836E4F5A836E4F5A A26E6E4C5AA26E6E5F1C3F6E6E5F1C7F836E4F5A846F4D5B846F4D90C9FCA26F6E4A5AA2 6F6E5D1B0F846F4D5A846F4D5A846F4D5AA26F6E4A5AA2706E5C627002C091CAFC6219E0 704B5A19F0704B5AA2706E485AA2706E485AA27002FE5B1A7F19FF704B5AA2715DA27192 CBFCA2715CA2715CA3715CA2715CA2715CA2715CA2725BA27290CCFCA3725AA2725AA24E 5AA24E5AA261187FA24E5AA24D5B13FE2603FF804A90CDFC000F13E0486D4A5A487F486D 4A5AA260B56C141F4D5AA24D5A17FF604C5B4A4990CEFC6C5D4C5A6C49EB3FFC4A495A6C 4948485A9026FE80075B270FFFC03F5B6C90B6CFFC6C5D6C15F86C6C5C011F14C0010749 D0FC9038007FE071857CDB7B>I E %EndDVIPSBitmapFont end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 861 1940 a Fl(FITSIO)76 b(User's)g(Guide)356 2399 y Fk(A)54 b(Subroutine)e(In)l(terface)h(to)g(FITS)h(F)-13 b(ormat)53 b(Files)1055 2659 y(for)h(F)-13 b(ortran)53 b(Programmers)1667 3155 y Fj(V)-10 b(ersion)38 b(2.5)1727 4058 y Fi(HEASAR)m(C)1764 4170 y(Co)s(de)30 b(662)1363 4283 y(Go)s(ddard)f(Space)i(Fligh)m(t)f(Cen)m(ter)1522 4396 y(Green)m(b)s(elt,)g(MD)i(20771)1857 4509 y(USA)1704 5298 y Fj(July)38 b(2004)p eop %%Page: 2 2 2 1 bop 0 299 a Fi(ii)p eop %%Page: 3 3 3 2 bop 0 1267 a Fl(Con)-6 b(ten)g(ts)0 1858 y Fh(1)84 b(In)m(tro)s(duction)3136 b(1)0 2118 y(2)119 b(Creating)34 b(FITSIO/CFITSIO)2405 b(3)136 2280 y Fi(2.1)94 b(Building)28 b(the)i(Library)57 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)f(.)131 b(3)136 2442 y(2.2)94 b(T)-8 b(esting)31 b(the)f(Library)i(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(6)136 2604 y(2.3)94 b(Linking)29 b(Programs)h(with)f(FITSIO)40 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(7)136 2766 y(2.4)94 b(Getting)31 b(Started)g(with)e(FITSIO)55 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(8)136 2928 y(2.5)94 b(Example)30 b(Program)86 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) f(.)131 b(8)136 3090 y(2.6)94 b(Legal)31 b(Stu\013)92 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136 3252 y(2.7)94 b(Ac)m(kno)m(wledgemen)m(ts)60 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(10)0 3511 y Fh(3)119 b(A)35 b(FITS)f(Primer)2917 b(13)0 3771 y(4)119 b(Extended)35 b(File)f(Name)g(Syn)m(tax)2330 b(15)136 3933 y Fi(4.1)94 b(Ov)m(erview)83 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(15)136 4095 y(4.2)94 b(Filet)m(yp)s(e)60 b(.)45 b(.)h(.)g(.)g(.)f(.)h (.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)f(.)85 b(18)345 4257 y(4.2.1)106 b(Notes)32 b(ab)s(out)e(HTTP)g(pro) m(xy)g(serv)m(ers)k(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h (.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(18)345 4419 y(4.2.2)106 b(Notes)32 b(ab)s(out)e(the)h(ro)s(ot)f (\014let)m(yp)s(e)67 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(18)345 4581 y(4.2.3)106 b(Notes)32 b(ab)s(out)e(the)h(shmem)e (\014let)m(yp)s(e:)69 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(20)136 4742 y(4.3)94 b(Base)32 b(Filename)88 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)f(.)85 b(21)136 4904 y(4.4)94 b(Output)30 b(File)f(Name)i(when) f(Op)s(ening)e(an)i(Existing)f(File)79 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(23)136 5066 y(4.5)94 b(T)-8 b(emplate)31 b(File)f(Name)h(when)e(Creating)h(a)h (New)f(File)55 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(24)136 5228 y(4.6)94 b(HDU)32 b(Lo)s(cation)e(Sp)s(eci\014cation)45 b(.)g(.)h(.)g(.)f(.)h(.) g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(24)136 5390 y(4.7)94 b(Image)32 b(Section)38 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(25)136 5552 y(4.8)94 b(Column)29 b(and)h(Keyw)m(ord)g(Filtering)e(Sp)s (eci\014cation)89 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(26)136 5714 y(4.9)94 b(Ro)m(w)31 b(Filtering)e(Sp)s(eci\014cation)80 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(28)1912 5942 y(iii)p eop %%Page: 4 4 4 3 bop 0 299 a Fi(iv)3310 b Fg(CONTENTS)345 555 y Fi(4.9.1)106 b(General)31 b(Syn)m(tax)44 b(.)i(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(28)345 716 y(4.9.2)106 b(Bit)31 b(Masks)43 b(.)j(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(30)345 876 y(4.9.3)106 b(V)-8 b(ector)32 b(Columns)91 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(31)345 1037 y(4.9.4)106 b(Go)s(o)s(d)30 b(Time)g(In)m(terv)-5 b(al)30 b(Filtering)59 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(33)345 1197 y(4.9.5)106 b(Spatial)29 b(Region)i(Filtering)56 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(33)345 1358 y(4.9.6)106 b(Example)30 b(Ro)m(w)h(Filters)f(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(36)136 1518 y(4.10)80 b(Binning)28 b(or)i(Histogramming)g(Sp)s (eci\014cation)f(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(37)0 1771 y Fh(5)f(T)-9 b(emplate)34 b(Files)2985 b(41)136 1931 y Fi(5.1)94 b(Detailed)31 b(T)-8 b(emplate)30 b(Line)g(F)-8 b(ormat)48 b(.)e(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(41)136 2092 y(5.2)94 b(Auto-indexing)29 b(of)i(Keyw)m(ords)73 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(42)136 2252 y(5.3)94 b(T)-8 b(emplate)31 b(P)m(arser)g(Directiv)m(es) 85 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(43)136 2412 y(5.4)94 b(F)-8 b(ormal)31 b(T)-8 b(emplate)31 b(Syn)m(tax)j(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)f(.)85 b(43)136 2573 y(5.5)94 b(Errors)63 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(44)136 2733 y(5.6)94 b(Examples)71 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(44)0 2986 y Fh(6)f(FITSIO)34 b(Con)m(v)m(en)m(tions)h(and)g(Guidelines)1993 b(47)136 3146 y Fi(6.1)94 b(CFITSIO)29 b(Size)h(Limitations)39 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(47)136 3307 y(6.2)94 b(Multiple)29 b(Access)i(to)g(the)g(Same)f(FITS) g(File)f(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(48)136 3467 y(6.3)94 b(Curren)m(t)30 b(Header)h(Data)h(Unit)d(\(CHDU\))87 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(48)136 3628 y(6.4)94 b(Subroutine)28 b(Names)79 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(48)136 3788 y(6.5)94 b(Subroutine)28 b(F)-8 b(amilies)30 b(and)f(Datat)m(yp)s (es)44 b(.)i(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(49)136 3949 y(6.6)94 b(Implicit)28 b(Data)k(T)m(yp)s(e)e(Con)m(v)m(ersion)64 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(50)136 4109 y(6.7)94 b(Data)32 b(Scaling)87 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) f(.)h(.)g(.)f(.)85 b(50)136 4270 y(6.8)94 b(Error)30 b(Status)g(V)-8 b(alues)31 b(and)e(the)i(Error)e(Message)j(Stac)m(k)44 b(.)i(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)f(.)85 b(51)136 4430 y(6.9)94 b(V)-8 b(ariable-Length)31 b(Arra)m(y)f(F)-8 b(acilit)m(y)31 b(in)e(Binary)g(T)-8 b(ables)25 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(51)136 4591 y(6.10)49 b(Supp)s(ort)29 b(for)h(IEEE)g(Sp)s(ecial)e(V)-8 b(alues)67 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(52)136 4751 y(6.11)49 b(When)31 b(the)f(Final)f(Size)h(of)h(the)f(FITS)g(HDU)h (is)e(Unkno)m(wn)34 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(53)136 4912 y(6.12)49 b(Lo)s(cal)31 b(FITS)e(Con)m(v)m(en)m(tions)i(supp)s(orted)d(b)m(y)j (FITSIO)72 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(53)345 5072 y(6.12.1)61 b(Supp)s(ort)29 b(for)h(Long)g(String)f(Keyw)m(ord)h(V)-8 b(alues.)61 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)f(.)85 b(54)345 5232 y(6.12.2)61 b(Arra)m(ys)31 b(of)f(Fixed-Length)g(Strings)f(in)g(Binary)h(T)-8 b(ables)69 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)f(.)85 b(54)345 5393 y(6.12.3)61 b(Keyw)m(ord)30 b(Units)g(Strings)i (.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(55)345 5553 y(6.12.4)61 b(HIERAR)m(CH)31 b(Con)m(v)m(en)m(tion)g(for) f(Extended)g(Keyw)m(ord)g(Names)83 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)f(.)85 b(55)136 5714 y(6.13)49 b(Optimizing)28 b(Co)s(de)i(for)g(Maxim)m(um)g(Pro)s(cessing)g(Sp)s(eed)44 b(.)i(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)f(.)85 b(56)p eop %%Page: 5 5 5 4 bop 0 299 a Fg(CONTENTS)3334 b Fi(v)345 555 y(6.13.1)61 b(Bac)m(kground)31 b(Information:)40 b(Ho)m(w)31 b(CFITSIO)e(Manages)j (Data)g(I/O)91 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(57)0 816 y Fh(7)119 b(The)35 b(CFITSIO)e(Iterator)g(F)-9 b(unction)2154 b(61)0 1077 y(8)119 b(Basic)36 b(In)m(terface)e (Routines)2504 b(63)136 1239 y Fi(8.1)94 b(FITSIO)30 b(Error)f(Status)h(Routines)83 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)f(.)85 b(63)136 1401 y(8.2)94 b(File)30 b(I/O)g(Routines)d(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h (.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) g(.)f(.)85 b(64)136 1563 y(8.3)94 b(Keyw)m(ord)31 b(I/O)f(Routines)35 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f (.)85 b(66)136 1725 y(8.4)94 b(Data)32 b(I/O)f(Routines)52 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)f(.)85 b(66)0 1986 y Fh(9)119 b(Adv)-6 b(anced)36 b(In)m(terface)e(Subroutines)2159 b(69)136 2148 y Fi(9.1)94 b(FITS)30 b(File)g(Op)s(en)f(and)g(Close)h(Subroutines:)75 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(69)136 2310 y(9.2)94 b(HDU-Lev)m(el)32 b(Op)s(erations)107 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(72)136 2472 y(9.3)94 b(De\014ne)31 b(or)f(Rede\014ne)g(the)h(structure)f(of)g(the)h (CHDU)99 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(75)136 2634 y(9.4)94 b(FITS)30 b(Header)h(I/O)f(Subroutines)h(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)f(.)85 b(76)345 2796 y(9.4.1)106 b(Header)31 b(Space)g(and)f(P)m(osition)f(Routines)59 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)f(.)85 b(76)345 2958 y(9.4.2)106 b(Read)31 b(or)f(W)-8 b(rite)31 b(Standard)e(Header)i(Routines)66 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)f(.)85 b(77)345 3120 y(9.4.3)106 b(W)-8 b(rite)31 b(Keyw)m(ord)f(Subroutines)115 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) 85 b(78)345 3283 y(9.4.4)106 b(Insert)30 b(Keyw)m(ord)g(Subroutines)107 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(80)345 3445 y(9.4.5)106 b(Read)31 b(Keyw)m(ord)f(Subroutines)63 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(81)345 3607 y(9.4.6)106 b(Mo)s(dify)29 b(Keyw)m(ord)i(Subroutines)54 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(82)345 3769 y(9.4.7)106 b(Up)s(date)31 b(Keyw)m(ord)f(Subroutines)115 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(83)345 3931 y(9.4.8)106 b(Delete)32 b(Keyw)m(ord)e(Subroutines)86 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(84)136 4093 y(9.5)94 b(Data)32 b(Scaling)e(and)f(Unde\014ned)g(Pixel)g(P)m (arameters)113 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(84)136 4255 y(9.6)94 b(FITS)30 b(Primary)f(Arra)m(y)i(or)f(IMA)m(GE)h(Extension)f(I/O)g (Subroutines)116 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f (.)85 b(85)136 4417 y(9.7)94 b(FITS)30 b(ASCI)s(I)f(and)h(Binary)f(T)-8 b(able)30 b(Data)i(I/O)e(Subroutines)c(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(88)345 4579 y(9.7.1)106 b(Column)29 b(Information)g(Subroutines)120 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(88)345 4741 y(9.7.2)106 b(Lo)m(w-Lev)m(el)32 b(T)-8 b(able)30 b(Access)h(Subroutines)59 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)f(.)85 b(91)345 4903 y(9.7.3)106 b(Edit)30 b(Ro)m(ws)g(or)h(Columns)105 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g (.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) g(.)f(.)h(.)g(.)f(.)85 b(92)345 5066 y(9.7.4)106 b(Read)31 b(and)f(W)-8 b(rite)30 b(Column)f(Data)j(Routines)65 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) f(.)h(.)g(.)f(.)85 b(93)136 5228 y(9.8)94 b(Ro)m(w)31 b(Selection)f(and)g(Calculator)g(Routines)94 b(.)46 b(.)g(.)g(.)f(.)h (.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) g(.)f(.)85 b(96)136 5390 y(9.9)94 b(Celestial)30 b(Co)s(ordinate)f (System)h(Subroutines)97 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(98)136 5552 y(9.10)49 b(File)30 b(Chec)m(ksum)g(Subroutines)74 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(99)136 5714 y(9.11)80 b(Date)32 b(and)d(Time)h(Utilit)m(y)f(Routines) 68 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h (.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(101)p eop %%Page: 6 6 6 5 bop 0 299 a Fi(vi)3310 b Fg(CONTENTS)136 555 y Fi(9.12)49 b(General)31 b(Utilit)m(y)e(Subroutines)60 b(.)45 b(.)h(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(102)0 806 y Fh(10)67 b(Summary)34 b(of)h(all)f(FITSIO)g(User-In)m(terface)h(Subroutines)1215 b(109)0 1057 y(11)67 b(P)m(arameter)34 b(De\014nitions)2563 b(117)0 1308 y(12)67 b(FITSIO)33 b(Error)i(Status)g(Co)s(des)2295 b(123)p eop %%Page: 1 7 1 6 bop 0 1225 a Ff(Chapter)65 b(1)0 1687 y Fl(In)-6 b(tro)6 b(duction)0 2180 y Fi(This)32 b(do)s(cumen)m(t)j(describ)s(es)d (the)i(F)-8 b(ortran-callable)35 b(subroutine)d(in)m(terface)j(that)g (is)e(pro)m(vided)g(as)h(part)g(of)h(the)0 2293 y(CFITSIO)f(library)f (\(whic)m(h)i(is)g(written)g(in)f(ANSI)h(C\).)h(This)e(is)h(a)h (companion)f(do)s(cumen)m(t)g(to)i(the)e(CFITSIO)0 2406 y(User's)k(Guide)e(whic)m(h)h(should)e(b)s(e)i(consulted)g(for)g (further)g(information)f(ab)s(out)h(the)h(underlying)c(CFITSIO)0 2518 y(library)-8 b(.)48 b(In)32 b(the)i(remainder)e(of)h(this)g(do)s (cumen)m(t,)h(the)g(terms)f(FITSIO)f(and)h(CFITSIO)f(are)i(in)m(terc)m (hangeable)0 2631 y(and)c(refer)g(to)h(the)g(same)f(library)-8 b(.)0 2791 y(FITSIO/CFITSIO)31 b(is)i(a)g(mac)m(hine-indep)s(enden)m(t) e(library)g(of)j(routines)e(for)h(reading)g(and)g(writing)e(data)j (\014les)0 2904 y(in)29 b(the)h(FITS)g(\(Flexible)f(Image)i(T)-8 b(ransp)s(ort)29 b(System\))h(data)h(format.)41 b(It)31 b(can)f(also)g(read)h(IRAF)f(format)h(image)0 3017 y(\014les)39 b(and)f(ra)m(w)i(binary)e(data)i(arra)m(ys)g(b)m(y)g(con)m(v)m(erting)g (them)f(on)h(the)g(\015y)f(in)m(to)g(a)h(virtual)e(FITS)h(format)h (\014le.)0 3130 y(This)31 b(library)g(w)m(as)i(written)f(to)i(pro)m (vide)e(a)i(p)s(o)m(w)m(erful)e(y)m(et)i(simple)d(in)m(terface)i(for)g (accessing)h(FITS)e(\014les)g(whic)m(h)0 3243 y(will)h(run)h(on)h(most) h(commonly)f(used)f(computers)h(and)g(w)m(orkstations.)56 b(FITSIO)34 b(supp)s(orts)g(all)g(the)i(features)0 3356 y(describ)s(ed)20 b(in)i(the)g(o\016cial)g(NOST)g(de\014nition)e(of)j (the)f(FITS)g(format)h(and)f(can)h(read)f(and)g(write)g(all)f(the)i (curren)m(tly)0 3469 y(de\014ned)40 b(t)m(yp)s(es)h(of)g(extensions,)i (including)38 b(ASCI)s(I)h(tables)i(\(T)-8 b(ABLE\),)42 b(Binary)e(tables)h(\(BINT)-8 b(ABLE\))43 b(and)0 3582 y(IMA)m(GE)36 b(extensions.)55 b(The)34 b(FITSIO)g(subroutines)f (insulate)h(the)h(programmer)g(from)g(ha)m(ving)g(to)h(deal)e(with)0 3695 y(the)25 b(complicated)f(formatting)h(details)e(in)g(the)i(FITS)f (\014le,)h(ho)m(w)m(ev)m(er,)j(it)c(is)f(assumed)h(that)h(users)f(ha)m (v)m(e)i(a)f(general)0 3808 y(kno)m(wledge)30 b(ab)s(out)g(the)h (structure)f(and)g(usage)h(of)f(FITS)g(\014les.)0 3968 y(The)20 b(CFITSIO)f(pac)m(k)-5 b(age)23 b(w)m(as)e(initially)d(dev)m (elop)s(ed)i(b)m(y)g(the)h(HEASAR)m(C)g(\(High)g(Energy)f(Astroph)m (ysics)g(Science)0 4081 y(Arc)m(hiv)m(e)34 b(Researc)m(h)h(Cen)m(ter\)) f(at)h(the)f(NASA)g(Go)s(ddard)e(Space)j(Fligh)m(t)e(Cen)m(ter)h(to)h (con)m(v)m(ert)g(v)-5 b(arious)33 b(existing)0 4194 y(and)25 b(newly)g(acquired)g(astronomical)h(data)g(sets)h(in)m(to)f(FITS)f (format)h(and)f(to)i(further)e(analyze)h(data)h(already)e(in)0 4307 y(FITS)i(format.)41 b(New)28 b(features)g(con)m(tin)m(ue)g(to)h(b) s(e)e(added)h(to)g(CFITSIO)f(in)f(large)i(part)g(due)g(to)g(con)m (tributions)f(of)0 4419 y(ideas)32 b(or)h(actual)g(co)s(de)g(from)f (users)g(of)h(the)g(pac)m(k)-5 b(age.)49 b(The)33 b(In)m(tegral)g (Science)f(Data)i(Cen)m(ter)f(in)f(Switzerland,)0 4532 y(and)h(the)g(XMM/ESTEC)h(pro)5 b(ject)34 b(in)e(The)h(Netherlands)f (made)h(esp)s(ecially)f(signi\014can)m(t)g(con)m(tributions)g(that)0 4645 y(resulted)d(in)g(man)m(y)i(of)f(the)h(new)f(features)g(that)h (app)s(eared)f(in)f(v2.0)j(of)e(CFITSIO.)0 4805 y(The)22 b(latest)h(v)m(ersion)f(of)h(the)f(CFITSIO)f(source)i(co)s(de,)h(do)s (cumen)m(tation,)h(and)c(example)i(programs)f(are)h(a)m(v)-5 b(ailable)0 4918 y(on)30 b(the)h(W)-8 b(orld-Wide)30 b(W)-8 b(eb)31 b(or)f(via)g(anon)m(ymous)g(ftp)g(from:)382 5178 y Fe(http://heasarc.gsfc.nasa)o(.go)o(v/fi)o(tsio)382 5291 y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o(/fi)o(tsio)o(/c) 1927 5942 y Fi(1)p eop %%Page: 2 8 2 7 bop 0 299 a Fi(2)2452 b Fg(CHAPTER)30 b(1.)71 b(INTR)m(ODUCTION)0 555 y Fi(An)m(y)28 b(questions,)f(bug)g(rep)s(orts,)h(or)f(suggested)i (enhancemen)m(ts)f(related)f(to)i(the)e(CFITSIO)f(pac)m(k)-5 b(age)30 b(should)c(b)s(e)0 668 y(sen)m(t)31 b(to)g(the)g(primary)d (author:)382 928 y Fe(Dr.)47 b(William)f(Pence)810 b(Telephone:)92 b(\(301\))47 b(286-4599)382 1041 y(HEASARC,)e(Code)i(662)811 b(E-mail:)45 b(pence@tetra.gsfc.nasa.gov)382 1154 y(NASA/Goddard)f (Space)j(Flight)f(Center)382 1267 y(Greenbelt,)f(MD)i(20771,)f(USA)0 1526 y Fi(This)39 b(User's)j(Guide)e(assumes)h(that)h(readers)f (already)f(ha)m(v)m(e)j(a)f(general)f(understanding)d(of)k(the)f (de\014nition)0 1639 y(and)31 b(structure)g(of)h(FITS)e(format)i (\014les.)43 b(F)-8 b(urther)32 b(information)d(ab)s(out)j(FITS)f (formats)g(is)g(a)m(v)-5 b(ailable)31 b(from)g(the)0 1752 y(FITS)h(Supp)s(ort)f(O\016ce)i(at)g Fe(http://fits.gsfc.nasa.gov) o Fi(.)42 b(In)32 b(particular,)g(the)h('NOST)f(FITS)g(Standard')0 1865 y(giv)m(es)i(the)h(authoritativ)m(e)f(de\014nition)e(of)i(the)g (FITS)g(data)h(format,)g(and)f(the)g(`FITS)g(User's)g(Guide')f(pro)m (vides)0 1978 y(additional)28 b(historical)h(bac)m(kground)h(and)g (practical)g(advice)g(on)g(using)f(FITS)h(\014les.)0 2138 y(CFITSIO)j(users)g(ma)m(y)h(also)g(b)s(e)g(in)m(terested)g(in)f (the)h(FTOOLS)f(pac)m(k)-5 b(age)36 b(of)e(programs)g(that)g(can)h(b)s (e)e(used)g(to)0 2251 y(manipulate)i(and)g(analyze)i(FITS)f(format)g (\014les.)58 b(Information)35 b(ab)s(out)h(FTOOLS)f(can)i(b)s(e)f (obtained)f(on)i(the)0 2364 y(W)-8 b(eb)31 b(or)f(via)g(anon)m(ymous)h (ftp)f(at:)382 2624 y Fe(http://heasarc.gsfc.nasa)o(.go)o(v/ft)o(ools) 382 2737 y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o(/ft)o(ools)o (/rel)o(eas)o(e)p eop %%Page: 3 9 3 8 bop 0 1225 a Ff(Chapter)65 b(2)0 1687 y Fl(Creating)77 b(FITSIO/CFITSIO)0 2216 y Fd(2.1)135 b(Building)45 b(the)h(Library)0 2467 y Fi(T)-8 b(o)43 b(use)g(the)g(FITSIO)f(subroutines)e(one)k(m)m (ust)e(\014rst)g(build)e(the)j(CFITSIO)f(library)-8 b(,)44 b(whic)m(h)e(requires)f(a)i(C)0 2580 y(compiler.)71 b(gcc)43 b(is)d(ideal,)i(or)f(most)h(other)f(ANSI-C)g(compilers)e(will)g(also)i (w)m(ork.)73 b(The)40 b(CFITSIO)g(co)s(de)h(is)0 2692 y(con)m(tained)24 b(in)f(ab)s(out)g(40)i(C)f(source)g(\014les)e (\(*.c\))k(and)d(header)h(\014les)f(\(*.h\).)39 b(On)23 b(V)-10 b(AX/VMS)25 b(systems)f(2)g(assem)m(bly-)0 2805 y(co)s(de)31 b(\014les)e(\(vmsieeed.mar)h(and)g(vmsieeer.mar\))g(are)h (also)f(needed.)0 2965 y(The)45 b(F)-8 b(ortran)46 b(in)m(terface)f (subroutines)e(to)j(the)f(C)g(CFITSIO)f(routines)g(are)h(lo)s(cated)h (in)e(the)h(f77)p 3538 2965 28 4 v 33 w(wrap1.c,)0 3078 y(through)22 b(f77)p 459 3078 V 33 w(wrap4.c)h(\014les.)37 b(These)22 b(are)h(relativ)m(ely)f(simple)e('wrapp)s(ers')h(that)i (translate)g(the)g(argumen)m(ts)g(in)e(the)0 3191 y(F)-8 b(ortran)26 b(subroutine)d(in)m(to)j(the)f(appropriate)g(format)h(for)f (the)g(corresp)s(onding)f(C)h(routine.)38 b(This)23 b(translation)i(is) 0 3304 y(p)s(erformed)19 b(transparen)m(tly)h(to)h(the)g(user)f(b)m(y)g (a)h(set)h(of)e(C)h(macros)g(lo)s(cated)g(in)e(the)i(cfortran.h)f (\014le.)37 b(Unfortunately)0 3417 y(cfortran.h)28 b(do)s(es)g(not)g (supp)s(ort)f(ev)m(ery)h(com)m(bination)g(of)g(C)g(and)f(F)-8 b(ortran)29 b(compilers)e(so)h(the)h(F)-8 b(ortran)28 b(in)m(terface)0 3530 y(is)h(not)i(supp)s(orted)e(on)h(all)f (platforms.)40 b(\(see)31 b(further)e(notes)i(b)s(elo)m(w\).)0 3690 y(A)f(standard)f(com)m(bination)h(of)g(C)f(and)h(F)-8 b(ortran)30 b(compilers)f(will)e(b)s(e)i(assumed)h(b)m(y)f(default,)h (but)f(one)h(ma)m(y)h(also)0 3803 y(sp)s(ecify)e(a)i(particular)d(F)-8 b(ortran)32 b(compiler)c(b)m(y)j(doing:)48 4064 y Fe(>)95 b(setenv)46 b(CFLAGS)g(-DcompilerName=1)0 4324 y Fi(\(where)33 b('compilerName')f(is)g(the)h(name)f(of)h(the)g(compiler\))f(b)s(efore) g(running)e(the)j(con\014gure)f(command.)47 b(The)0 4437 y(curren)m(tly)29 b(recognized)i(compiler)e(names)h(are:)48 4698 y Fe(g77Fortran)48 4811 y(IBMR2Fortran)48 4924 y(CLIPPERFortran)48 5036 y(pgiFortran)48 5149 y(NAGf90Fortran)48 5262 y(f2cFortran)48 5375 y(hpuxFortran)48 5488 y(apolloFortran)48 5601 y(sunFortran)48 5714 y(CRAYFortran)1927 5942 y Fi(3)p eop %%Page: 4 10 4 9 bop 0 299 a Fi(4)1896 b Fg(CHAPTER)30 b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)48 555 y Fe(mipsFortran)48 668 y(DECFortran)48 781 y(vmsFortran)48 894 y(CONVEXFortran)48 1007 y(PowerStationFortran)48 1120 y(AbsoftUNIXFortran)48 1233 y(AbsoftProFortran)48 1346 y(SXFortran)0 1580 y Fi(Alternativ)m(ely)-8 b(,)39 b(one)f(ma)m(y)g(edit)f(the)g(CFLA)m(GS)h (line)d(in)i(the)g(Mak)m(e\014le)h(to)g(add)f(the)h('-DcompilerName')g (\015ag)0 1692 y(after)31 b(running)d(the)i('./con\014gure')h(command.) 0 1853 y(The)f(CFITSIO)f(library)f(is)h(built)f(on)j(Unix)e(systems)h (b)m(y)g(t)m(yping:)48 2087 y Fe(>)95 b(./configure)45 b([--prefix=/target/insta)o(llat)o(ion)o(/pat)o(h])48 2199 y(>)95 b(make)476 b(\(or)95 b('make)46 b(shared'\))48 2312 y(>)95 b(make)47 b(install)93 b(\(this)46 b(step)h(is)g (optional\))0 2546 y Fi(at)24 b(the)g(op)s(erating)f(system)h(prompt.) 38 b(The)23 b(con\014gure)g(command)g(customizes)h(the)g(Mak)m(e\014le) g(for)g(the)g(particular)0 2659 y(system,)g(then)d(the)g(`mak)m(e')i (command)e(compiles)f(the)h(source)h(\014les)e(and)h(builds)d(the)j (library)-8 b(.)36 b(T)m(yp)s(e)21 b(`./con\014gure')0 2772 y(and)34 b(not)h(simply)d(`con\014gure')j(to)h(ensure)e(that)h (the)g(con\014gure)g(script)e(in)h(the)h(curren)m(t)f(directory)g(is)g (run)g(and)0 2885 y(not)29 b(some)g(other)g(system-wide)f(con\014gure)g (script.)39 b(The)29 b(optional)f('pre\014x')g(argumen)m(t)h(to)g (con\014gure)g(giv)m(es)g(the)0 2998 y(path)f(to)i(the)f(directory)f (where)g(the)h(CFITSIO)f(library)e(and)i(include)f(\014les)g(should)g (b)s(e)h(installed)f(via)h(the)h(later)0 3111 y('mak)m(e)j(install')c (command.)41 b(F)-8 b(or)31 b(example,)143 3345 y Fe(>)48 b(./configure)c(--prefix=/usr1/local)0 3579 y Fi(will)22 b(cause)k(the)f('mak)m(e)h(install')d(command)i(to)h(cop)m(y)g(the)f (CFITSIO)e(lib)s(c\014tsio)f(\014le)j(to)g(/usr1/lo)s(cal/lib)e(and)i (the)0 3692 y(necessary)36 b(include)c(\014le)j(to)h(/usr1/lo)s (cal/include)d(\(assuming)h(of)h(course)g(that)h(the)f(pro)s(cess)g (has)g(p)s(ermission)0 3805 y(to)c(write)f(to)h(these)g(directories\).) 0 3965 y(By)d(default)g(this)f(also)h(builds)c(the)29 b(set)f(of)h(F)-8 b(ortran-callable)28 b(wrapp)s(er)e(routines)h(whose) h(calling)e(sequences)j(are)0 4078 y(describ)s(ed)f(later)j(in)e(this)g (do)s(cumen)m(t.)0 4238 y(The)f('mak)m(e)h(shared')f(option)g(builds)d (a)k(shared)e(or)i(dynamic)e(v)m(ersion)h(of)g(the)h(CFITSIO)d(library) -8 b(.)38 b(When)28 b(using)0 4351 y(the)f(shared)f(library)f(the)i (executable)g(co)s(de)g(is)f(not)h(copied)f(in)m(to)h(y)m(our)g (program)g(at)g(link)e(time)h(and)h(instead)f(the)0 4464 y(program)h(lo)s(cates)h(the)g(necessary)g(library)d(co)s(de)j(at)g (run)e(time,)i(normally)e(through)g(LD)p 3065 4464 28 4 v 33 w(LIBRAR)-8 b(Y)p 3514 4464 V 34 w(P)g(A)g(TH)28 b(or)0 4577 y(some)j(other)f(metho)s(d.)41 b(The)29 b(adv)-5 b(an)m(tages)33 b(of)d(using)f(a)i(shared)e(library)f(are:)143 4811 y Fe(1.)95 b(Less)47 b(disk)f(space)h(if)g(you)g(build)f(more)h (than)f(1)i(program)143 4924 y(2.)95 b(Less)47 b(memory)f(if)h(more)g (than)f(one)h(copy)g(of)g(a)g(program)f(using)h(the)g(shared)334 5036 y(library)f(is)h(running)f(at)h(the)g(same)g(time)f(since)h(the)g (system)f(is)h(smart)334 5149 y(enough)f(to)h(share)g(copies)f(of)h (the)g(shared)f(library)g(at)h(run)g(time.)143 5262 y(3.)95 b(Possibly)46 b(easier)g(maintenance)e(since)j(a)g(new)g(version)f(of)h (the)g(shared)334 5375 y(library)f(can)h(be)g(installed)e(without)h (relinking)f(all)i(the)g(software)334 5488 y(that)g(uses)f(it)i(\(as)e (long)h(as)g(the)g(subroutine)e(names)i(and)f(calling)334 5601 y(sequences)f(remain)h(unchanged\).)143 5714 y(4.)95 b(No)47 b(run-time)f(penalty.)p eop %%Page: 5 11 5 10 bop 0 299 a Fg(2.1.)72 b(BUILDING)31 b(THE)f(LIBRAR)-8 b(Y)2507 b Fi(5)0 555 y(The)30 b(disadv)-5 b(an)m(tages)31 b(are:)143 819 y Fe(1.)47 b(More)g(hassle)f(at)h(runtime.)94 b(You)46 b(have)h(to)g(either)f(build)h(the)g(programs)286 932 y(specially)f(or)h(have)f(LD_LIBRARY_PATH)e(set)j(right.)143 1045 y(2.)g(There)g(may)g(be)g(a)g(slight)f(start)h(up)g(penalty,)e (depending)h(on)h(where)f(you)h(are)286 1158 y(reading)f(the)h(shared)f (library)g(and)h(the)g(program)f(from)g(and)h(if)g(your)g(CPU)g(is)286 1271 y(either)f(really)h(slow)f(or)h(really)f(heavily)g(loaded.)0 1535 y Fi(On)30 b(HP/UX)i(systems,)g(the)f(en)m(vironmen)m(t)g(v)-5 b(ariable)30 b(CFLA)m(GS)h(should)e(b)s(e)i(set)g(to)h(-Ae)g(b)s(efore) f(running)d(con-)0 1648 y(\014gure)i(to)h(enable)f("extended)h(ANSI")f (features.)0 1808 y(It)f(ma)m(y)h(not)f(b)s(e)f(p)s(ossible)f(to)i (staticly)g(link)e(programs)i(that)g(use)g(CFITSIO)e(on)i(some)h (platforms)d(\(namely)-8 b(,)30 b(on)0 1921 y(Solaris)k(2.6\))j(due)e (to)i(the)e(net)m(w)m(ork)i(driv)m(ers)d(\(whic)m(h)h(pro)m(vide)g(FTP) g(and)g(HTTP)g(access)i(to)g(FITS)e(\014les\).)56 b(It)0 2034 y(is)32 b(p)s(ossible)e(to)k(mak)m(e)f(b)s(oth)g(a)g(dynamic)e (and)h(a)i(static)f(v)m(ersion)f(of)h(the)g(CFITSIO)e(library)-8 b(,)32 b(but)g(net)m(w)m(ork)i(\014le)0 2147 y(access)e(will)27 b(not)k(b)s(e)f(p)s(ossible)e(using)h(the)h(static)h(v)m(ersion.)0 2307 y(On)d(V)-10 b(AX/VMS)31 b(and)d(ALPHA/VMS)i(systems)f(the)h(mak)m (e)p 2100 2307 28 4 v 34 w(g\015oat.com)h(command)e(\014le)f(ma)m(y)i (b)s(e)f(executed)h(to)0 2420 y(build)j(the)k(c\014tsio.olb)e(ob)5 b(ject)37 b(library)d(using)h(the)h(default)g(G-\015oating)g(p)s(oin)m (t)g(option)f(for)h(double)f(v)-5 b(ariables.)0 2533 y(The)37 b(mak)m(e)p 405 2533 V 33 w(d\015oat.com)i(and)d(mak)m(e)p 1279 2533 V 34 w(ieee.com)i(\014les)f(ma)m(y)g(b)s(e)g(used)f(instead)h (to)h(build)c(the)j(library)e(with)h(the)0 2646 y(other)26 b(\015oating)h(p)s(oin)m(t)e(options.)38 b(Note)28 b(that)f(the)f (getcwd)h(function)e(that)i(is)e(used)g(in)g(the)i(group.c)f(mo)s(dule) e(ma)m(y)0 2758 y(require)43 b(that)j(programs)e(using)f(CFITSIO)g(b)s (e)h(link)m(ed)g(with)f(the)i(ALPHA$LIBRAR)-8 b(Y:V)e(AX)m(CR)i(TL.OLB) 0 2871 y(library)g(.)39 b(See)30 b(the)h(example)f(link)e(line)h(in)g (the)i(next)f(section)h(of)f(this)g(do)s(cumen)m(t.)0 3032 y(On)25 b(Windo)m(ws)g(IBM-PC)h(t)m(yp)s(e)g(platforms)e(the)i (situation)f(is)f(more)i(complicated)g(b)s(ecause)f(of)h(the)g(wide)f (v)-5 b(ariet)m(y)0 3144 y(of)43 b(F)-8 b(ortran)43 b(compilers)f(that) h(are)g(a)m(v)-5 b(ailable)42 b(and)g(b)s(ecause)h(of)g(the)g(inheren)m (t)f(complexities)g(of)g(calling)g(the)0 3257 y(CFITSIO)25 b(C)g(routines)g(from)h(F)-8 b(ortran.)40 b(Tw)m(o)26 b(di\013eren)m(t)g(v)m(ersions)f(of)h(the)h(CFITSIO)d(dll)g(library)g (are)i(a)m(v)-5 b(ailable,)0 3370 y(compiled)26 b(with)f(the)j(Borland) e(C++)g(compiler)g(and)g(the)i(Microsoft)f(Visual)f(C++)g(compiler,)g (resp)s(ectiv)m(ely)-8 b(,)28 b(in)0 3483 y(the)i(\014les)f(c\014tsio)s (dll)p 682 3483 V 30 w(2xxx)p 901 3483 V 34 w(b)s(orland.zip)e(and)i (c\014tsio)s(dll)p 1927 3483 V 30 w(2xxx)p 2146 3483 V 33 w(v)m(cc.zip,)i(where)f('2xxx')h(represen)m(ts)f(the)g(curren)m(t) 0 3596 y(release)43 b(n)m(um)m(b)s(er.)76 b(Both)43 b(these)g(dll)e (libraries)f(con)m(tain)j(a)g(set)g(of)f(F)-8 b(ortran)44 b(wrapp)s(er)d(routines)g(whic)m(h)g(ma)m(y)0 3709 y(b)s(e)c (compatible)g(with)f(some,)k(but)d(probably)f(not)h(all,)i(a)m(v)-5 b(ailable)37 b(F)-8 b(ortran)38 b(compilers.)61 b(T)-8 b(o)38 b(test)g(if)f(they)h(are)0 3822 y(compatible,)27 b(compile)f(the)h(program)g(testf77.f)h(and)f(try)f(linking)f(to)i (these)h(dll)c(libraries.)37 b(If)27 b(these)g(libraries)d(do)0 3935 y(not)29 b(w)m(ork)g(with)e(a)i(particular)e(F)-8 b(ortran)30 b(compiler,)e(then)g(there)h(are)g(2)g(p)s(ossible)e (solutions.)38 b(The)28 b(\014rst)g(solution)0 4048 y(w)m(ould)g(b)s(e) i(to)g(mo)s(dify)e(the)i(\014le)e(cfortran.h)i(for)f(that)i(particular) d(com)m(bination)h(of)h(C)f(and)g(F)-8 b(ortran)30 b(compilers,)0 4161 y(and)k(then)g(rebuild)d(the)k(CFITSIO)d(dll)h(library)-8 b(.)50 b(This)33 b(will)f(require,)i(ho)m(w)m(ev)m(er,)j(a)e(some)f (exp)s(ertise)g(in)f(mixed)0 4274 y(language)e(programming.)39 b(The)30 b(other)h(solution)d(is)i(to)h(use)f(the)g(older)g(v5.03)i(F) -8 b(ortran-77)32 b(implemen)m(tation)d(of)0 4386 y(FITSIO)c(that)h(is) f(still)f(a)m(v)-5 b(ailable)25 b(from)g(the)h(FITSIO)f(w)m(eb-site.)39 b(This)24 b(v)m(ersion)h(is)g(no)h(longer)f(supp)s(orted,)g(but)g(it)0 4499 y(do)s(es)k(pro)m(vide)g(the)h(basic)g(functions)e(for)h(reading)g (and)g(writing)f(FITS)h(\014les)g(and)g(should)f(b)s(e)h(compatible)g (with)0 4612 y(most)i(F)-8 b(ortran)31 b(compilers.)0 4772 y(CFITSIO)e(has)h(curren)m(tly)f(b)s(een)h(tested)h(on)f(the)h (follo)m(wing)e(platforms:)95 5036 y Fe(OPERATING)46 b(SYSTEM)523 b(COMPILER)143 5149 y(Sun)47 b(OS)1002 b(gcc)47 b(and)g(cc)g(\(3.0.1\))143 5262 y(Sun)g(Solaris)762 b(gcc)47 b(and)g(cc)143 5375 y(Silicon)f(Graphics)g(IRIX)285 b(gcc)47 b(and)g(cc)143 5488 y(Silicon)f(Graphics)g(IRIX64)189 b(MIPS)143 5601 y(Dec)47 b(Alpha)f(OSF/1)572 b(gcc)47 b(and)g(cc)143 5714 y(DECstation)93 b(Ultrix)428 b(gcc)p eop %%Page: 6 12 6 11 bop 0 299 a Fi(6)1896 b Fg(CHAPTER)30 b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)143 555 y Fe(Dec)47 b(Alpha)f(OpenVMS)476 b(cc)143 668 y(DEC)47 b(VAX/VMS)762 b(gcc)47 b(and)g(cc)143 781 y(HP-UX)1049 b(gcc)143 894 y(IBM)47 b(AIX)954 b(gcc)143 1007 y(Linux)1049 b(gcc)143 1120 y(MkLinux)953 b(DR3)143 1233 y(Windows)46 b(95/98/NT)523 b(Borland)46 b(C++)h(V4.5)143 1346 y(Windows)f(95/98/NT/ME/XP)235 b(Microsoft/Compaq)43 b(Visual)j(C++)h(v5.0,)g(v6.0)143 1458 y(Windows)f(95/98/NT)523 b(Cygwin)46 b(gcc)143 1571 y(OS/2)1097 b(gcc)47 b(+)g(EMX)143 1684 y(MacOS)g(7.1)f(or)i(greater)332 b(Metrowerks)45 b(10.+)0 1949 y Fi(CFITSIO)26 b(will)g(probably)g(run)g(on)i(most)g (other)h(Unix)d(platforms.)39 b(Cra)m(y)28 b(sup)s(ercomputers)e(are)j (curren)m(tly)e(not)0 2061 y(supp)s(orted.)0 2400 y Fd(2.2)135 b(T)-11 b(esting)46 b(the)f(Library)0 2652 y Fi(The)40 b(CFITSIO)e(library)g(should)g(b)s(e)h(tested)i(b)m(y)f(building)c(and) j(running)f(the)i(testprog.c)h(program)f(that)h(is)0 2765 y(included)28 b(with)h(the)h(release.)41 b(On)30 b(Unix)f(systems)h(t)m(yp)s(e:)191 3029 y Fe(\045)47 b(make)g(testprog)191 3142 y(\045)g(testprog)f(>)h(testprog.lis)191 3255 y(\045)g(diff)g(testprog.lis)d(testprog.out)191 3368 y(\045)j(cmp)g(testprog.fit)e(testprog.std)0 3632 y Fi(On)30 b(VMS)g(systems,)g(\(assuming)g(cc)h(is)e(the)i(name)f(of)h (the)f(C)g(compiler)f(command\),)i(t)m(yp)s(e:)191 3896 y Fe($)47 b(cc)h(testprog.c)191 4009 y($)f(link)g(testprog,)e (cfitsio/lib,)g(alpha$library:vaxcrtl/l)o(ib)191 4122 y($)i(run)g(testprog)0 4386 y Fi(The)30 b(testprog)h(program)g(should)d (pro)s(duce)h(a)i(FITS)f(\014le)f(called)h(`testprog.\014t')i(that)f (is)e(iden)m(tical)h(to)h(the)f(`test-)0 4499 y(prog.std')25 b(FITS)f(\014le)f(included)f(with)h(this)h(release.)39 b(The)24 b(diagnostic)g(messages)i(\(whic)m(h)d(w)m(ere)i(pip)s(ed)e (to)i(the)g(\014le)0 4612 y(testprog.lis)f(in)f(the)i(Unix)e(example\)) i(should)d(b)s(e)i(iden)m(tical)g(to)h(the)g(listing)d(con)m(tained)j (in)e(the)i(\014le)e(testprog.out.)0 4725 y(The)30 b('di\013)7 b(')30 b(and)f('cmp')i(commands)f(sho)m(wn)g(ab)s(o)m(v)m(e)h(should)e (not)h(rep)s(ort)g(an)m(y)h(di\013erences)f(in)f(the)h(\014les.)40 b(\(There)0 4838 y(ma)m(y)35 b(b)s(e)e(some)h(minor)f(formatting)g (di\013erences,)i(suc)m(h)e(as)i(the)f(presence)g(or)g(absence)g(of)g (leading)f(zeros,)j(or)e(3)0 4951 y(digit)29 b(exp)s(onen)m(ts)h(in)f (n)m(um)m(b)s(ers,)h(whic)m(h)f(can)h(b)s(e)g(ignored\).)0 5111 y(The)f(F)-8 b(ortran)31 b(wrapp)s(ers)d(in)g(CFITSIO)g(ma)m(y)j (b)s(e)e(tested)h(with)f(the)h(testf77)h(program.)40 b(On)29 b(Unix)g(systems)h(the)0 5224 y(fortran)g(compilation)f(and)h (link)e(command)i(ma)m(y)h(b)s(e)f(called)f('f77')j(or)e('g77',)j(dep)s (ending)28 b(on)i(the)g(system.)143 5488 y Fe(\045)48 b(f77)f(-o)g(testf77)f(testf77.f)f(-L.)i(-lcfitsio)e(-lnsl)h(-lsocket) 48 5601 y(or)143 5714 y(\045)i(f77)f(-f)g(-o)g(testf77)f(testf77.f)f (-L.)i(-lcfitsio)188 b(\(under)46 b(SUN)h(O/S\))p eop %%Page: 7 13 7 12 bop 0 299 a Fg(2.3.)72 b(LINKING)30 b(PR)m(OGRAMS)h(WITH)f(FITSIO) 2041 b Fi(7)48 555 y Fe(or)143 668 y(\045)48 b(f77)f(-o)g(testf77)f (testf77.f)f(-Wl,-L.)h(-lcfitsio)f(-lm)i(-lnsl)f(-lsocket)g(\(HP/UX\)) 48 781 y(or)143 894 y(\045)i(g77)f(-o)g(testf77)f(-s)h(testf77.f)e (-lcfitsio)g(-lcc_dynamic)g(-lncurses)g(\(Mac)i(OS-X\))143 1120 y(\045)h(testf77)d(>)j(testf77.lis)143 1233 y(\045)g(diff)e (testf77.lis)f(testf77.out)143 1346 y(\045)j(cmp)f(testf77.fit)d (testf77.std)0 1591 y Fi(On)31 b(mac)m(hines)g(running)f(SUN)h(O/S,)h (F)-8 b(ortran)33 b(programs)e(m)m(ust)h(b)s(e)f(compiled)f(with)h(the) h('-f)7 b(')32 b(option)g(to)g(force)0 1704 y(double)24 b(precision)g(v)-5 b(ariables)24 b(to)i(b)s(e)f(aligned)f(on)i(8-b)m (yte)h(b)s(oundarys)c(to)j(mak)m(e)h(the)e(fortran-declared)g(v)-5 b(ariables)0 1817 y(compatible)32 b(with)f(C.)h(A)h(similar)d(compiler) h(option)h(ma)m(y)h(b)s(e)f(required)f(on)h(other)h(platforms.)47 b(F)-8 b(ailing)31 b(to)i(use)0 1930 y(this)25 b(option)g(ma)m(y)h (cause)h(the)f(program)f(to)i(crash)e(on)h(FITSIO)f(routines)f(that)j (read)f(or)f(write)g(double)g(precision)0 2043 y(v)-5 b(ariables.)0 2203 y(Also)30 b(note)h(that)f(on)g(some)h(systems,)f (the)h(output)e(listing)f(of)j(the)f(testf77)i(program)d(ma)m(y)i (di\013er)e(sligh)m(tly)f(from)0 2316 y(the)j(testf77.std)h(template,)f (if)f(leading)f(zeros)i(are)g(not)g(prin)m(ted)e(b)m(y)i(default)f(b)s (efore)g(the)h(decimal)e(p)s(oin)m(t)h(when)0 2429 y(using)f(F)i (format.)0 2589 y(A)f(few)h(other)f(utilit)m(y)f(programs)h(are)h (included)c(with)i(CFITSIO:)191 2835 y Fe(speed)46 b(-)i(measures)d (the)i(maximum)f(throughput)f(\(in)i(MB)g(per)g(second\))668 2947 y(for)g(writing)f(and)h(reading)f(FITS)g(files)h(with)f(CFITSIO) 191 3173 y(listhead)f(-)j(lists)e(all)h(the)g(header)f(keywords)g(in)h (any)g(FITS)f(file)191 3399 y(fitscopy)f(-)j(copies)e(any)h(FITS)g (file)f(\(especially)f(useful)h(in)h(conjunction)811 3512 y(with)g(the)g(CFITSIO's)e(extended)h(input)g(filename)g(syntax\)) 191 3738 y(cookbook)f(-)j(a)f(sample)f(program)g(that)h(peforms)f (common)g(read)g(and)811 3851 y(write)h(operations)e(on)i(a)g(FITS)g (file.)191 4077 y(iter_a,)f(iter_b,)g(iter_c)g(-)h(examples)f(of)h(the) g(CFITSIO)f(iterator)f(routine)0 4322 y Fi(The)30 b(\014rst)f(4)i(of)g (these)g(utilit)m(y)d(programs)i(can)h(b)s(e)f(compiled)f(and)g(link)m (ed)g(b)m(y)h(t)m(yping)143 4568 y Fe(\045)95 b(make)47 b(program_name)0 4899 y Fd(2.3)135 b(Linking)45 b(Programs)h(with)f (FITSIO)0 5149 y Fi(When)31 b(linking)d(applications)i(soft)m(w)m(are)i (with)e(the)h(FITSIO)f(library)-8 b(,)30 b(sev)m(eral)i(system)f (libraries)d(usually)h(need)0 5262 y(to)d(b)s(e)f(sp)s(eci\014ed)f(on)h (the)h(link)e(comman)h(Unix)g(systems,)i(the)e(most)h(reliable)e(w)m(a) m(y)i(to)h(determine)d(what)i(libraries)0 5375 y(are)32 b(required)e(is)g(to)j(t)m(yp)s(e)e('mak)m(e)i(testprog')g(and)e(see)h (what)f(libraries)e(the)j(con\014gure)f(script)g(has)g(added.)43 b(The)0 5488 y(t)m(ypical)23 b(libraries)e(that)j(ma)m(y)g(need)f(to)h (b)s(e)f(added)g(are)g(-lm)g(\(the)h(math)f(library\))f(and)h(-lnsl)e (and)i(-lso)s(c)m(k)m(et)i(\(needed)0 5601 y(only)h(for)g(FTP)g(and)g (HTTP)g(\014le)g(access\).)41 b(These)26 b(latter)h(2)g(libraries)d (are)j(not)g(needed)f(on)g(VMS)h(and)f(Windo)m(ws)0 5714 y(platforms,)k(b)s(ecause)g(FTP)g(\014le)g(access)h(is)f(not)g(curren)m (tly)g(supp)s(orted)e(on)i(those)h(platforms.)p eop %%Page: 8 14 8 13 bop 0 299 a Fi(8)1896 b Fg(CHAPTER)30 b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)0 555 y Fi(Note)36 b(that)f(when)e (upgrading)f(to)j(a)g(new)m(er)f(v)m(ersion)g(of)h(CFITSIO)d(it)i(is)g (usually)e(necessa)m(y)j(to)g(recompile,)g(as)0 668 y(w)m(ell)29 b(as)i(relink,)e(the)h(programs)g(that)h(use)f(CFITSIO,)f(b)s(ecause)i (the)f(de\014nitions)e(in)h(\014tsio.h)h(often)g(c)m(hange.)0 1001 y Fd(2.4)135 b(Getting)46 b(Started)g(with)f(FITSIO)0 1251 y Fi(In)32 b(order)h(to)h(e\013ectiv)m(ely)g(use)f(the)g(FITSIO)f (library)f(as)j(quic)m(kly)e(as)h(p)s(ossible,)f(it)h(is)f(recommended) h(that)g(new)0 1364 y(users)d(follo)m(w)f(these)i(steps:)0 1524 y(1.)62 b(Read)38 b(the)f(follo)m(wing)f(`FITS)h(Primer')f(c)m (hapter)i(for)g(a)f(brief)f(o)m(v)m(erview)i(of)g(the)g(structure)e(of) i(FITS)f(\014les.)0 1637 y(This)24 b(is)h(esp)s(ecially)f(imp)s(ortan)m (t)i(for)f(users)h(who)f(ha)m(v)m(e)i(not)g(previously)c(dealt)j(with)f (the)h(FITS)f(table)h(and)g(image)0 1750 y(extensions.)0 1910 y(2.)41 b(W)-8 b(rite)31 b(a)g(simple)d(program)i(to)h(read)g(or)f (write)f(a)i(FITS)f(\014le)f(using)g(the)i(Basic)f(In)m(terface)i (routines.)0 2071 y(3.)41 b(Refer)28 b(to)i(the)f(co)s(okb)s(o)s(ok.f)g (program)f(that)i(is)e(included)e(with)h(this)h(release)h(for)f (examples)h(of)g(routines)e(that)0 2183 y(p)s(erform)i(v)-5 b(arious)29 b(common)i(FITS)f(\014le)f(op)s(erations.)0 2344 y(4.)52 b(Read)34 b(Chapters)g(4)g(and)f(5)i(to)g(b)s(ecome)f (familiar)e(with)g(the)j(con)m(v)m(en)m(tions)g(and)e(adv)-5 b(anced)34 b(features)h(of)f(the)0 2457 y(FITSIO)29 b(in)m(terface.)0 2617 y(5.)47 b(Scan)32 b(through)f(the)h(more)h(extensiv)m(e)f(set)h (of)g(routines)e(that)h(are)h(pro)m(vided)e(in)g(the)h(`Adv)-5 b(anced)32 b(In)m(terface'.)0 2730 y(These)22 b(routines)e(p)s(erform)h (more)h(sp)s(ecialized)e(functions)g(than)h(are)i(pro)m(vided)d(b)m(y)i (the)g(Basic)g(In)m(terface)h(routines.)0 3063 y Fd(2.5)135 b(Example)46 b(Program)0 3313 y Fi(The)32 b(follo)m(wing)f(listing)f (sho)m(ws)i(an)g(example)h(of)f(ho)m(w)h(to)g(use)f(the)g(FITSIO)g (routines)f(in)g(a)i(F)-8 b(ortran)33 b(program.)0 3426 y(Refer)38 b(to)h(the)g(co)s(okb)s(o)s(ok.f)f(program)g(that)h(is)e (included)e(with)i(the)i(FITSIO)e(distribution)d(for)k(examples)g(of)0 3539 y(other)31 b(FITS)e(programs.)286 3794 y Fe(program)46 b(writeimage)0 4020 y(C)238 b(Create)46 b(a)i(FITS)f(primary)e(array)i (containing)e(a)i(2-D)g(image)286 4246 y(integer)f (status,unit,blocksize,bit)o(pix,)o(nax)o(is,n)o(axes)o(\(2\))286 4359 y(integer)g(i,j,group,fpixel,nelement)o(s,ar)o(ray)o(\(300)o(,200) o(\))286 4472 y(character)g(filename*80)286 4585 y(logical)g (simple,extend)286 4811 y(status=0)0 4924 y(C)238 b(Name)47 b(of)g(the)g(FITS)g(file)f(to)i(be)f(created:)286 5036 y(filename='ATESTFILE.FITS')0 5262 y(C)238 b(Get)47 b(an)g(unused)g (Logical)e(Unit)i(Number)f(to)h(use)g(to)g(create)f(the)h(FITS)g(file) 286 5375 y(call)g(ftgiou\(unit,status\))0 5601 y(C)238 b(create)46 b(the)h(new)g(empty)g(FITS)f(file)286 5714 y(blocksize=1)p eop %%Page: 9 15 9 14 bop 0 299 a Fg(2.6.)72 b(LEGAL)30 b(STUFF)2995 b Fi(9)286 555 y Fe(call)47 b(ftinit\(unit,filename,blo)o(cksi)o(ze,s)o (tat)o(us\))0 781 y(C)238 b(initialize)45 b(parameters)g(about)i(the)g (FITS)f(image)h(\(300)f(x)i(200)f(16-bit)f(integers\))286 894 y(simple=.true.)286 1007 y(bitpix=16)286 1120 y(naxis=2)286 1233 y(naxes\(1\)=300)286 1346 y(naxes\(2\)=200)286 1458 y(extend=.true.)0 1684 y(C)238 b(write)47 b(the)g(required)e(header)h (keywords)286 1797 y(call)h(ftphpr\(unit,simple,bitpi)o(x,na)o(xis,)o (nax)o(es,0)o(,1,e)o(xte)o(nd,s)o(tatu)o(s\))0 2023 y(C)238 b(initialize)45 b(the)i(values)f(in)i(the)e(image)h(with)f(a)i(linear)e (ramp)h(function)286 2136 y(do)h(j=1,naxes\(2\))477 2249 y(do)f(i=1,naxes\(1\))668 2362 y(array\(i,j\)=i+j)477 2475 y(end)g(do)286 2588 y(end)g(do)0 2813 y(C)238 b(write)47 b(the)g(array)f(to)h(the)g(FITS)g(file)286 2926 y(group=1)286 3039 y(fpixel=1)286 3152 y(nelements=naxes\(1\)*naxes\(2)o(\))286 3265 y(call)g(ftpprj\(unit,group,fpixel)o(,nel)o(emen)o(ts,)o(arra)o (y,st)o(atu)o(s\))0 3491 y(C)238 b(write)47 b(another)f(optional)f (keyword)h(to)h(the)g(header)286 3604 y(call)g (ftpkyj\(unit,'EXPOSURE',1)o(500,)o('Tot)o(al)41 b(Exposure)46 b(Time',status\))0 3830 y(C)238 b(close)47 b(the)g(file)f(and)h(free)g (the)g(unit)f(number)286 3942 y(call)h(ftclos\(unit,)d(status\))286 4055 y(call)j(ftfiou\(unit,)d(status\))286 4168 y(end)0 4527 y Fd(2.6)135 b(Legal)46 b(Stu\013)0 4782 y Fi(Cop)m(yrigh)m(t)36 b(\(Unpublished{all)d(righ)m(ts)j(reserv)m(ed)h(under)e(the)i(cop)m (yrigh)m(t)g(la)m(ws)f(of)h(the)g(United)f(States\),)k(U.S.)0 4895 y(Go)m(v)m(ernmen)m(t)30 b(as)g(represen)m(ted)e(b)m(y)h(the)g (Administrator)e(of)i(the)g(National)f(Aeronautics)h(and)f(Space)h (Adminis-)0 5008 y(tration.)41 b(No)31 b(cop)m(yrigh)m(t)f(is)g (claimed)f(in)g(the)i(United)e(States)i(under)e(Title)h(17,)h(U.S.)f (Co)s(de.)0 5168 y(P)m(ermission)e(to)i(freely)e(use,)i(cop)m(y)-8 b(,)31 b(mo)s(dify)-8 b(,)28 b(and)h(distribute)e(this)h(soft)m(w)m (are)j(and)e(its)g(do)s(cumen)m(tation)g(without)0 5281 y(fee)g(is)e(hereb)m(y)h(gran)m(ted,)i(pro)m(vided)d(that)i(this)e(cop) m(yrigh)m(t)i(notice)f(and)g(disclaimer)e(of)i(w)m(arran)m(t)m(y)i(app) s(ears)d(in)g(all)0 5394 y(copies.)41 b(\(Ho)m(w)m(ev)m(er,)33 b(see)e(the)f(restriction)f(on)i(the)f(use)g(of)h(the)f(gzip)g (compression)g(co)s(de,)h(b)s(elo)m(w\).)0 5554 y(DISCLAIMER:)0 5714 y(THE)i(SOFTW)-10 b(ARE)32 b(IS)g(PR)m(O)m(VIDED)i('AS)f(IS')g (WITHOUT)f(ANY)i(W)-10 b(ARRANTY)33 b(OF)g(ANY)h(KIND,)f(EI-)p eop %%Page: 10 16 10 15 bop 0 299 a Fi(10)1851 b Fg(CHAPTER)30 b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)0 555 y Fi(THER)42 b(EXPRESSED,)f(IMPLIED,)i(OR)e(ST)-8 b(A)g(TUTOR)g(Y,)43 b(INCLUDING,)f(BUT)h(NOT)e(LIMITED)h(TO,)0 668 y(ANY)33 b(W)-10 b(ARRANTY)33 b(THA)-8 b(T)32 b(THE)g(SOFTW)-10 b(ARE)32 b(WILL)g(CONF)m(ORM)g(TO)g(SPECIFICA)-8 b(TIONS,)30 b(ANY)0 781 y(IMPLIED)38 b(W)-10 b(ARRANTIES)37 b(OF)h(MER)m(CHANT)-8 b(ABILITY,)38 b(FITNESS)f(F)m(OR)h(A)g(P)-8 b(AR)g(TICULAR)38 b(PUR-)0 894 y(POSE,)24 b(AND)i(FREEDOM)f(FR)m(OM)h(INFRINGEMENT,)g (AND)f(ANY)h(W)-10 b(ARRANTY)25 b(THA)-8 b(T)25 b(THE)g(DOC-)0 1007 y(UMENT)-8 b(A)g(TION)31 b(WILL)f(CONF)m(ORM)h(TO)e(THE)h(SOFTW) -10 b(ARE,)30 b(OR)g(ANY)h(W)-10 b(ARRANTY)31 b(THA)-8 b(T)30 b(THE)0 1120 y(SOFTW)-10 b(ARE)31 b(WILL)h(BE)g(ERR)m(OR)g (FREE.)g(IN)g(NO)f(EVENT)h(SHALL)f(NASA)h(BE)g(LIABLE)g(F)m(OR)g(ANY)0 1233 y(D)m(AMA)m(GES,)26 b(INCLUDING,)e(BUT)f(NOT)g(LIMITED)h(TO,)f (DIRECT,)g(INDIRECT,)g(SPECIAL)f(OR)h(CON-)0 1346 y(SEQUENTIAL)28 b(D)m(AMA)m(GES,)k(ARISING)d(OUT)g(OF,)h(RESUL)-8 b(TING)29 b(FR)m(OM,)h(OR)f(IN)h(ANY)g(W)-10 b(A)i(Y)30 b(CON-)0 1458 y(NECTED)25 b(WITH)g(THIS)f(SOFTW)-10 b(ARE,)25 b(WHETHER)g(OR)g(NOT)g(BASED)g(UPON)g(W)-10 b(ARRANTY,)26 b(CON-)0 1571 y(TRA)m(CT,)d(TOR)-8 b(T)23 b(,)g(OR)g(OTHER)-10 b(WISE,)22 b(WHETHER)i(OR)f(NOT)f(INJUR)-8 b(Y)24 b(W)-10 b(AS)23 b(SUST)-8 b(AINED)23 b(BY)h(PER-)0 1684 y(SONS)h(OR)i(PR)m (OPER)-8 b(TY)26 b(OR)g(OTHER)-10 b(WISE,)26 b(AND)h(WHETHER)g(OR)f (NOT)g(LOSS)f(W)-10 b(AS)26 b(SUST)-8 b(AINED)0 1797 y(FR)m(OM,)37 b(OR)e(AR)m(OSE)h(OUT)f(OF)h(THE)g(RESUL)-8 b(TS)35 b(OF,)h(OR)f(USE)h(OF,)g(THE)g(SOFTW)-10 b(ARE)35 b(OR)g(SER-)0 1910 y(VICES)29 b(PR)m(O)m(VIDED)j(HEREUNDER.")0 2070 y(The)i(\014le)h(compress.c)g(con)m(tains)g(\(sligh)m(tly)f(mo)s (di\014ed\))f(source)i(co)s(de)g(that)h(originally)c(came)k(from)f (gzip-1.2.4,)0 2183 y(cop)m(yrigh)m(t)26 b(\(C\))g(1992-1993)k(b)m(y)c (Jean-loup)f(Gailly)-8 b(.)38 b(This)24 b(gzip)h(co)s(de)h(is)f (distributed)e(under)i(the)h(GNU)g(General)0 2296 y(Public)k(License)i (and)f(th)m(us)h(requires)f(that)i(an)m(y)f(soft)m(w)m(are)i(that)f (uses)f(the)g(CFITSIO)f(library)f(\(whic)m(h)h(in)g(turn)0 2409 y(uses)e(the)g(gzip)g(co)s(de\))h(m)m(ust)f(conform)g(to)h(the)f (pro)m(visions)e(in)h(the)i(GNU)g(General)f(Public)e(License.)40 b(A)29 b(cop)m(y)h(of)0 2522 y(the)h(GNU)g(license)e(is)g(included)f (at)j(the)g(b)s(eginning)c(of)k(compress.c)g(\014le.)0 2682 y(An)h(alternate)i(v)m(ersion)e(of)h(the)g(compress.c)g(\014le)f (\(called)g(compress)p 2381 2682 28 4 v 33 w(alternate.c\))i(is)e(pro)m (vided)f(for)i(users)e(who)0 2795 y(w)m(an)m(t)24 b(to)g(use)e(the)i (CFITSIO)d(library)g(but)h(are)h(un)m(willing)d(or)j(unable)e(to)j (publicly)c(release)j(their)f(soft)m(w)m(are)i(under)0 2908 y(the)i(terms)g(of)g(the)g(GNU)h(General)e(Public)f(License.)39 b(This)24 b(alternate)i(v)m(ersion)g(con)m(tains)g(non-functional)e (stubs)0 3021 y(for)g(the)h(\014le)e(compression)h(and)f(uncompression) g(routines)g(used)h(b)m(y)g(CFITSIO.)f(Replace)i(the)f(\014le)g (`compress.c')0 3134 y(with)32 b(`compress)p 600 3134 V 33 w(alternate.c')j(b)s(efore)e(compiling)e(the)i(CFITSIO)f(library) -8 b(.)48 b(This)31 b(will)g(pro)s(duce)h(a)i(v)m(ersion)f(of)0 3247 y(CFITSIO)20 b(whic)m(h)h(do)s(es)g(not)h(supp)s(ort)e(reading)h (or)h(writing)e(compressed)h(FITS)g(\014les)g(but)g(is)g(otherwise)g (iden)m(tical)0 3360 y(to)31 b(the)g(standard)e(v)m(ersion.)0 3733 y Fd(2.7)135 b(Ac)l(kno)l(wledgemen)l(ts)0 3991 y Fi(The)29 b(dev)m(elopmen)m(t)g(of)h(man)m(y)f(of)h(the)f(p)s(o)m(w)m (erful)f(features)h(in)f(CFITSIO)g(w)m(as)i(made)f(p)s(ossible)e (through)h(collab-)0 4104 y(orations)34 b(with)f(man)m(y)i(p)s(eople)e (or)i(organizations)f(from)g(around)f(the)i(w)m(orld.)51 b(The)34 b(follo)m(wing,)g(in)f(particular,)0 4217 y(ha)m(v)m(e)f(made) e(esp)s(ecially)f(signi\014can)m(t)g(con)m(tributions:)0 4377 y(Programmers)c(from)h(the)f(In)m(tegral)h(Science)g(Data)h(Cen)m (ter,)g(Switzerland)d(\(namely)-8 b(,)27 b(Jurek)d(Bork)m(o)m(wski,)k (Bruce)0 4490 y(O'Neel,)33 b(and)f(Don)h(Jennings\),)e(designed)g(the)i (concept)g(for)f(the)h(plug-in)d(I/O)i(driv)m(ers)f(that)i(w)m(as)g(in) m(tro)s(duced)0 4603 y(with)h(CFITSIO)f(2.0.)56 b(The)34 b(use)h(of)g(`driv)m(ers')f(greatly)h(simpli\014ed)d(the)j(lo)m(w-lev)m (el)g(I/O,)g(whic)m(h)e(in)h(turn)g(made)0 4716 y(other)40 b(new)f(features)i(in)d(CFITSIO)g(\(e.g.,)45 b(supp)s(ort)38 b(for)h(compressed)h(FITS)f(\014les)g(and)g(supp)s(ort)f(for)i(IRAF)0 4829 y(format)32 b(image)f(\014les\))g(m)m(uc)m(h)g(easier)h(to)g (implemen)m(t.)42 b(Jurek)31 b(Bork)m(o)m(wski)g(wrote)h(the)g(Shared)e (Memory)i(driv)m(er,)0 4942 y(and)23 b(Bruce)i(O'Neel)f(wrote)g(the)g (driv)m(ers)f(for)g(accessing)i(FITS)e(\014les)g(o)m(v)m(er)i(the)f (net)m(w)m(ork)h(using)d(the)j(FTP)-8 b(,)24 b(HTTP)-8 b(,)0 5055 y(and)30 b(R)m(OOT)g(proto)s(cols.)0 5215 y(The)45 b(ISDC)g(also)g(pro)m(vided)f(the)i(template)g(parsing)e (routines)g(\(written)h(b)m(y)g(Jurek)g(Bork)m(o)m(wski\))h(and)f(the)0 5328 y(hierarc)m(hical)36 b(grouping)f(routines)h(\(written)h(b)m(y)g (Don)h(Jennings\).)59 b(The)37 b(ISDC)f(D)m(AL)i(\(Data)h(Access)f(La)m (y)m(er\))0 5441 y(routines)29 b(are)i(la)m(y)m(ered)g(on)f(top)h(of)f (CFITSIO)f(and)h(mak)m(e)h(extensiv)m(e)g(use)f(of)h(these)g(features.) 0 5601 y(Uw)m(e)25 b(Lammers)e(\(XMM/ESA/ESTEC,)h(The)g(Netherlands\))f (designed)g(the)h(high-p)s(erformance)e(lexical)h(pars-)0 5714 y(ing)41 b(algorithm)g(that)h(is)f(used)g(to)i(do)e(on-the-\015y)h (\014ltering)e(of)i(FITS)f(tables.)75 b(This)40 b(algorithm)h(essen)m (tially)p eop %%Page: 11 17 11 16 bop 0 299 a Fg(2.7.)72 b(A)m(CKNO)m(WLEDGEMENTS)2515 b Fi(11)0 555 y(pre-compiles)34 b(the)i(user-supplied)c(selection)k (expression)e(in)m(to)i(a)g(form)g(that)g(can)g(b)s(e)f(rapidly)e(ev)-5 b(aluated)36 b(for)0 668 y(eac)m(h)31 b(ro)m(w.)40 b(P)m(eter)31 b(Wilson)d(\(RSTX,)h(NASA/GSF)m(C\))i(then)e(wrote)h(the)g(parsing)e (routines)g(used)h(b)m(y)g(CFITSIO)0 781 y(based)i(on)f(Lammers')h (design,)f(com)m(bined)g(with)g(other)h(tec)m(hniques)f(suc)m(h)h(as)g (the)g(CFITSIO)f(iterator)h(routine)0 894 y(to)h(further)e(enhance)h (the)h(data)g(pro)s(cessing)e(throughput.)42 b(This)30 b(e\013ort)i(also)f(b)s(ene\014ted)f(from)h(a)h(m)m(uc)m(h)f(earlier)0 1007 y(lexical)22 b(parsing)h(routine)f(that)i(w)m(as)g(dev)m(elop)s (ed)f(b)m(y)h(Ken)m(t)g(Blac)m(kburn)e(\(NASA/GSF)m(C\).)j(More)g (recen)m(tly)-8 b(,)26 b(Craig)0 1120 y(Markw)m(ardt)j(\(NASA/GSF)m (C\))g(implemen)m(ted)e(additional)f(functions)h(\(median,)h(a)m(v)m (erage,)k(stddev\))c(and)g(other)0 1233 y(enhancemen)m(ts)j(to)g(the)g (lexical)e(parser.)0 1393 y(The)40 b(CFITSIO)g(iterator)h(function)e (is)h(lo)s(osely)g(based)h(on)f(similar)f(ideas)h(dev)m(elop)s(ed)g (for)h(the)g(XMM)g(Data)0 1506 y(Access)31 b(La)m(y)m(er.)0 1666 y(P)m(eter)25 b(Wilson)e(\(RSTX,)h(NASA/GSF)m(C\))h(wrote)g(the)f (complete)h(set)f(of)h(F)-8 b(ortran-callable)24 b(wrapp)s(ers)e(for)i (all)f(the)0 1779 y(CFITSIO)29 b(routines,)g(whic)m(h)g(in)g(turn)h (rely)f(on)i(the)f(CF)m(OR)-8 b(TRAN)31 b(macro)g(dev)m(elop)s(ed)f(b)m (y)g(Burkhard)f(Buro)m(w.)0 1939 y(The)h(syn)m(tax)i(used)e(b)m(y)h (CFITSIO)f(for)g(\014ltering)g(or)h(binning)c(input)i(FITS)i(\014les)f (is)g(based)g(on)h(ideas)g(dev)m(elop)s(ed)0 2052 y(for)41 b(the)g(AXAF)h(Science)f(Cen)m(ter)h(Data)h(Mo)s(del)d(b)m(y)h (Jonathan)g(McDo)m(w)m(ell,)k(An)m(tonella)c(F)-8 b(ruscione,)44 b(Aneta)0 2165 y(Siemigino)m(wsk)-5 b(a)24 b(and)h(Bill)f(Jo)m(y)m(e.) 41 b(See)26 b(h)m(ttp://heasarc.gsfc.nasa.go)m(v/do)s (cs/journal/axaf7.h)m(t)q(ml)31 b(for)25 b(further)0 2278 y(description)j(of)j(the)g(AXAF)g(Data)h(Mo)s(del.)0 2438 y(The)j(\014le)f(decompression)g(co)s(de)h(w)m(ere)h(tak)m(en)g (directly)e(from)g(the)i(gzip)e(\(GNU)i(zip\))f(program)g(dev)m(elop)s (ed)f(b)m(y)0 2551 y(Jean-loup)29 b(Gailly)g(and)h(others.)0 2711 y(Doug)h(Mink,)f(SA)m(O,)g(pro)m(vided)f(the)i(routines)e(for)h (con)m(v)m(erting)h(IRAF)g(format)g(images)f(in)m(to)g(FITS)g(format.)0 2871 y(In)d(addition,)g(man)m(y)h(other)g(p)s(eople)f(ha)m(v)m(e)i (made)f(v)-5 b(aluable)27 b(con)m(tributions)f(to)j(the)f(dev)m (elopmen)m(t)g(of)g(CFITSIO.)0 2984 y(These)i(include)e(\(with)i(ap)s (ologies)g(to)h(others)f(that)h(ma)m(y)g(ha)m(v)m(e)h(inadv)m(erten)m (tly)e(b)s(een)f(omitted\):)0 3144 y(Stev)m(e)g(Allen,)e(Carl)g(Ak)m (erlof,)h(Keith)f(Arnaud,)h(Morten)g(Krabb)s(e)e(Barfo)s(ed,)j(Ken)m(t) f(Blac)m(kburn,)g(G)g(Bo)s(dammer,)0 3257 y(Romk)m(e)h(Bon)m(tek)m(o)s (e,)i(Lucio)c(Chiapp)s(etti,)f(Keith)h(Costorf,)h(Robin)f(Corb)s(et,)h (John)e(Da)m(vis,)j(Ric)m(hard)e(Fink,)h(Ning)0 3370 y(Gan,)h(Emily)c(Greene,)k(Jo)s(e)f(Harrington,)g(Cheng)f(Ho,)i(Phil)c (Ho)s(dge,)k(Jim)e(Ingham,)h(Y)-8 b(oshitak)j(a)28 b(Ishisaki,)e(Diab)0 3483 y(Jerius,)k(Mark)i(Levine,)f(T)-8 b(o)s(dd)30 b(Karak)-5 b(askian,)31 b(Edw)m(ard)g(King,)f(Scott)j(Ko)s(c)m(h,)e(Claire)f (Larkin,)g(Rob)i(Managan,)0 3596 y(Eric)37 b(Mandel,)i(John)e(Matto)m (x,)43 b(Carsten)37 b(Mey)m(er,)42 b(Emi)36 b(Miy)m(ata,)42 b(Stefan)c(Mo)s(c)m(hnac)m(ki,)i(Mik)m(e)f(Noble,)g(Oliv)m(er)0 3709 y(Ob)s(erdorf,)d(Cliv)m(e)g(P)m(age,)k(Arvind)34 b(P)m(armar,)k(Je\013)f(P)m(edelt)m(y)-8 b(,)39 b(Tim)c(P)m(earson,)k (Maren)e(Purv)m(es,)h(Scott)f(Randall,)0 3822 y(Chris)c(Rogers,)k (Arnold)d(Rots,)j(Barry)f(Sc)m(hlesinger,)f(Robin)f(Stebbins,)g(Andrew) g(Szymk)m(o)m(wiak,)j(Allyn)d(T)-8 b(en-)0 3934 y(nan)m(t,)31 b(P)m(eter)g(T)-8 b(eub)s(en,)30 b(James)g(Theiler,)f(Doug)i(T)-8 b(o)s(dy)g(,)31 b(Shiro)d(Ueno,)k(Stev)m(e)f(W)-8 b(alton,)32 b(Arc)m(hie)e(W)-8 b(arno)s(c)m(k,)32 b(Alan)0 4047 y(W)-8 b(atson,)32 b(Dan)f(Whipple,)d(Wim)i(Wimmers,)g(P)m(eter)h(Y)-8 b(oung,)31 b(Jianjun)d(Xu,)i(and)g(Nelson)g(Zarate.)p eop %%Page: 12 18 12 17 bop 0 299 a Fi(12)1851 b Fg(CHAPTER)30 b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)p eop %%Page: 13 19 13 18 bop 0 1225 a Ff(Chapter)65 b(3)0 1687 y Fl(A)78 b(FITS)f(Primer)0 2180 y Fi(This)22 b(section)j(giv)m(es)f(a)h(brief)d (o)m(v)m(erview)j(of)f(the)h(structure)e(of)i(FITS)e(\014les.)37 b(Users)24 b(should)f(refer)g(to)i(the)g(do)s(cumen-)0 2293 y(tation)i(a)m(v)-5 b(ailable)27 b(from)g(the)g(NOST,)f(as)i (describ)s(ed)d(in)h(the)h(in)m(tro)s(duction,)f(for)h(more)g(detailed) g(information)e(on)0 2406 y(FITS)30 b(formats.)0 2566 y(FITS)37 b(w)m(as)g(\014rst)g(dev)m(elop)s(ed)g(in)f(the)h(late)h (1970's)h(as)f(a)f(standard)g(data)h(in)m(terc)m(hange)g(format)g(b)s (et)m(w)m(een)g(v)-5 b(ar-)0 2679 y(ious)37 b(astronomical)g(observ)-5 b(atories.)63 b(Since)36 b(then)h(FITS)g(has)h(b)s(ecome)g(the)g (defacto)g(standard)f(data)i(format)0 2791 y(supp)s(orted)29 b(b)m(y)h(most)h(astronomical)f(data)h(analysis)e(soft)m(w)m(are)i(pac) m(k)-5 b(ages.)0 2952 y(A)34 b(FITS)f(\014le)f(consists)h(of)h(one)g (or)g(more)g(Header)g(+)f(Data)i(Units)e(\(HDUs\),)j(where)d(the)h (\014rst)f(HDU)h(is)f(called)0 3065 y(the)k(`Primary)e(HDU',)j(or)f (`Primary)e(Arra)m(y'.)60 b(The)36 b(primary)f(arra)m(y)i(con)m(tains)g (an)f(N-dimensional)f(arra)m(y)i(of)0 3177 y(pixels,)28 b(suc)m(h)g(as)h(a)h(1-D)g(sp)s(ectrum,)e(a)h(2-D)h(image,)g(or)f(a)g (3-D)h(data)g(cub)s(e.)39 b(Fiv)m(e)30 b(di\013eren)m(t)e(primary)f (datat)m(yp)s(es)0 3290 y(are)f(supp)s(orted:)37 b(Unsigned)24 b(8-bit)i(b)m(ytes,)h(16)g(and)e(32-bit)h(signed)e(in)m(tegers,)j(and)f (32)g(and)f(64-bit)h(\015oating)g(p)s(oin)m(t)0 3403 y(reals.)40 b(FITS)29 b(also)h(has)g(a)g(con)m(v)m(en)m(tion)i(for)d (storing)h(16)h(and)e(32-bit)h(unsigned)e(in)m(tegers)j(\(see)g(the)f (later)g(section)0 3516 y(en)m(titled)d(`Unsigned)g(In)m(tegers')i(for) e(more)h(details\).)39 b(The)27 b(primary)f(HDU)j(ma)m(y)f(also)g (consist)f(of)h(only)f(a)h(header)0 3629 y(with)h(a)i(n)m(ull)d(arra)m (y)j(con)m(taining)f(no)g(data)h(pixels.)0 3789 y(An)m(y)i(n)m(um)m(b)s (er)e(of)h(additional)f(HDUs)i(ma)m(y)g(follo)m(w)f(the)g(primary)f (arra)m(y;)j(these)f(additional)e(HDUs)i(are)g(called)0 3902 y(FITS)d(`extensions'.)40 b(There)30 b(are)h(curren)m(tly)e(3)i(t) m(yp)s(es)g(of)f(extensions)g(de\014ned)f(b)m(y)h(the)h(FITS)f (standard:)136 4171 y Fc(\017)46 b Fi(Image)31 b(Extension)f(-)h(a)f (N-dimensional)e(arra)m(y)j(of)g(pixels,)e(lik)m(e)g(in)g(a)i(primary)d (arra)m(y)136 4368 y Fc(\017)46 b Fi(ASCI)s(I)29 b(T)-8 b(able)30 b(Extension)g(-)g(ro)m(ws)h(and)e(columns)g(of)i(data)g(in)e (ASCI)s(I)g(c)m(haracter)j(format)136 4564 y Fc(\017)46 b Fi(Binary)30 b(T)-8 b(able)30 b(Extension)f(-)i(ro)m(ws)f(and)g (columns)f(of)i(data)g(in)e(binary)f(represen)m(tation)0 4833 y(In)33 b(eac)m(h)i(case)g(the)f(HDU)h(consists)f(of)g(an)g(ASCI)s (I)e(Header)i(Unit)g(follo)m(w)m(ed)f(b)m(y)h(an)g(optional)f(Data)i (Unit.)51 b(F)-8 b(or)0 4946 y(historical)34 b(reasons,)j(eac)m(h)f (Header)g(or)g(Data)h(unit)d(m)m(ust)h(b)s(e)g(an)g(exact)i(m)m (ultiple)c(of)j(2880)h(8-bit)e(b)m(ytes)h(long.)0 5059 y(An)m(y)30 b(un)m(used)g(space)g(is)g(padded)f(with)g(\014ll)f(c)m (haracters)k(\(ASCI)s(I)d(blanks)g(or)i(zeros\).)0 5219 y(Eac)m(h)i(Header)f(Unit)g(consists)g(of)g(an)m(y)g(n)m(um)m(b)s(er)f (of)i(80-c)m(haracter)i(k)m(eyw)m(ord)d(records)g(or)g(`card)h(images') f(whic)m(h)0 5332 y(ha)m(v)m(e)g(the)e(general)h(form:)95 5601 y Fe(KEYNAME)46 b(=)i(value)e(/)i(comment)d(string)95 5714 y(NULLKEY)h(=)334 b(/)48 b(comment:)d(This)i(keyword)f(has)g(no)i (value)1905 5942 y Fi(13)p eop %%Page: 14 20 14 19 bop 0 299 a Fi(14)2398 b Fg(CHAPTER)30 b(3.)112 b(A)30 b(FITS)g(PRIMER)0 555 y Fi(The)35 b(k)m(eyw)m(ord)i(names)f(ma)m (y)g(b)s(e)g(up)f(to)h(8)h(c)m(haracters)g(long)f(and)f(can)h(only)g (con)m(tain)g(upp)s(ercase)f(letters,)j(the)0 668 y(digits)23 b(0-9,)k(the)e(h)m(yphen,)g(and)f(the)h(underscore)e(c)m(haracter.)41 b(The)24 b(k)m(eyw)m(ord)h(name)g(is)e(\(usually\))g(follo)m(w)m(ed)i (b)m(y)f(an)0 781 y(equals)k(sign)g(and)g(a)g(space)i(c)m(haracter)g (\(=)e(\))h(in)e(columns)h(9)h(-)f(10)i(of)f(the)f(record,)h(follo)m(w) m(ed)g(b)m(y)f(the)h(v)-5 b(alue)28 b(of)h(the)0 894 y(k)m(eyw)m(ord)34 b(whic)m(h)f(ma)m(y)h(b)s(e)f(either)g(an)h(in)m (teger,)h(a)f(\015oating)f(p)s(oin)m(t)g(n)m(um)m(b)s(er,)h(a)g(c)m (haracter)h(string)d(\(enclosed)i(in)0 1007 y(single)26 b(quotes\),)k(or)e(a)g(b)s(o)s(olean)f(v)-5 b(alue)27 b(\(the)h(letter)g(T)g(or)f(F\).)i(A)f(k)m(eyw)m(ord)g(ma)m(y)h(also)e (ha)m(v)m(e)i(a)g(n)m(ull)c(or)j(unde\014ned)0 1120 y(v)-5 b(alue)30 b(if)f(there)i(is)e(no)h(sp)s(eci\014ed)f(v)-5 b(alue)30 b(string,)g(as)g(in)f(the)i(second)f(example.)0 1280 y(The)42 b(last)g(k)m(eyw)m(ord)h(in)e(the)i(header)f(is)f(alw)m (a)m(ys)i(the)g(`END')g(k)m(eyw)m(ord)g(whic)m(h)e(has)h(no)h(v)-5 b(alue)41 b(or)i(commen)m(t)0 1393 y(\014elds.)c(There)30 b(are)h(man)m(y)f(rules)f(go)m(v)m(erning)i(the)f(exact)i(format)f(of)f (a)h(k)m(eyw)m(ord)f(record)h(\(see)g(the)f(NOST)g(FITS)0 1506 y(Standard\))h(so)h(it)f(is)f(b)s(etter)i(to)g(rely)f(on)g (standard)g(in)m(terface)h(soft)m(w)m(are)h(lik)m(e)e(FITSIO)f(to)j (correctly)f(construct)0 1619 y(or)e(to)h(parse)g(the)f(k)m(eyw)m(ord)h (records)f(rather)g(than)h(try)f(to)h(deal)f(directly)f(with)g(the)h (ra)m(w)h(FITS)f(formats.)0 1779 y(Eac)m(h)37 b(Header)g(Unit)e(b)s (egins)g(with)g(a)h(series)g(of)g(required)f(k)m(eyw)m(ords)h(whic)m(h) f(dep)s(end)g(on)h(the)g(t)m(yp)s(e)h(of)f(HDU.)0 1892 y(These)31 b(required)f(k)m(eyw)m(ords)i(sp)s(ecify)f(the)g(size)h(and) f(format)h(of)g(the)g(follo)m(wing)e(Data)j(Unit.)44 b(The)31 b(header)g(ma)m(y)0 2005 y(con)m(tain)g(other)g(optional)e(k)m (eyw)m(ords)i(to)h(describ)s(e)d(other)h(asp)s(ects)h(of)g(the)g(data,) g(suc)m(h)g(as)g(the)f(units)f(or)i(scaling)0 2118 y(v)-5 b(alues.)43 b(Other)31 b(COMMENT)g(or)g(HISTOR)-8 b(Y)30 b(k)m(eyw)m(ords)i(are)g(also)f(frequen)m(tly)g(added)f(to)i(further)e (do)s(cumen)m(t)0 2230 y(the)h(data)g(\014le.)0 2391 y(The)36 b(optional)f(Data)j(Unit)e(immediately)e(follo)m(ws)i(the)g (last)g(2880-b)m(yte)j(blo)s(c)m(k)d(in)f(the)h(Header)h(Unit.)58 b(Some)0 2503 y(HDUs)31 b(do)f(not)h(ha)m(v)m(e)g(a)g(Data)h(Unit)e (and)g(only)f(consist)h(of)h(the)f(Header)h(Unit.)0 2664 y(If)24 b(there)i(is)e(more)h(than)f(one)h(HDU)h(in)e(the)h(FITS)f (\014le,)h(then)g(the)g(Header)h(Unit)e(of)h(the)g(next)g(HDU)h (immediately)0 2777 y(follo)m(ws)e(the)g(last)h(2880-b)m(yte)i(blo)s(c) m(k)d(of)h(the)f(previous)f(Data)k(Unit)c(\(or)i(Header)g(Unit)f(if)f (there)i(is)f(no)g(Data)i(Unit\).)0 2937 y(The)k(main)f(required)g(k)m (eyw)m(ords)h(in)f(FITS)h(primary)f(arra)m(ys)h(or)h(image)f (extensions)g(are:)136 3172 y Fc(\017)46 b Fi(BITPIX)25 b({)h(de\014nes)f(the)g(datat)m(yp)s(e)i(of)e(the)h(arra)m(y:)39 b(8,)27 b(16,)g(32,)h(-32,)g(-64)e(for)f(unsigned)f(8{bit)h(b)m(yte,)j (16{bit)227 3284 y(signed)38 b(in)m(teger,)j(32{bit)e(signed)e(in)m (teger,)k(32{bit)e(IEEE)f(\015oating)g(p)s(oin)m(t,)i(and)e(64{bit)h (IEEE)e(double)227 3397 y(precision)29 b(\015oating)h(p)s(oin)m(t,)g (resp)s(ectiv)m(ely)-8 b(.)136 3585 y Fc(\017)46 b Fi(NAXIS)30 b({)h(the)g(n)m(um)m(b)s(er)e(of)h(dimensions)e(in)h(the)i(arra)m(y)-8 b(,)31 b(usually)d(0,)j(1,)g(2,)g(3,)g(or)g(4.)136 3773 y Fc(\017)46 b Fi(NAXISn)30 b({)h(\(n)f(ranges)g(from)g(1)h(to)g (NAXIS\))g(de\014nes)e(the)i(size)f(of)h(eac)m(h)g(dimension.)0 4008 y(FITS)e(tables)h(start)h(with)e(the)h(k)m(eyw)m(ord)g(XTENSION)g (=)f(`T)-8 b(ABLE')31 b(\(for)f(ASCI)s(I)f(tables\))h(or)g(XTENSION)f (=)0 4120 y(`BINT)-8 b(ABLE')32 b(\(for)e(binary)f(tables\))h(and)g(ha) m(v)m(e)i(the)e(follo)m(wing)f(main)g(k)m(eyw)m(ords:)136 4355 y Fc(\017)46 b Fi(TFIELDS)30 b({)h(n)m(um)m(b)s(er)e(of)h (\014elds)f(or)i(columns)e(in)g(the)h(table)136 4543 y Fc(\017)46 b Fi(NAXIS2)31 b({)g(n)m(um)m(b)s(er)e(of)h(ro)m(ws)h(in)e (the)h(table)136 4731 y Fc(\017)46 b Fi(TTYPEn)29 b({)i(for)f(eac)m(h)i (column)d(\(n)h(ranges)h(from)f(1)g(to)h(TFIELDS\))g(giv)m(es)f(the)h (name)f(of)h(the)f(column)136 4918 y Fc(\017)46 b Fi(TF)m(ORMn)31 b({)f(the)h(datat)m(yp)s(e)g(of)g(the)f(column)136 5106 y Fc(\017)46 b Fi(TUNITn)30 b({)g(the)h(ph)m(ysical)e(units)g(of)h(the) h(column)e(\(optional\))0 5341 y(Users)e(should)e(refer)i(to)g(the)h (FITS)e(Supp)s(ort)f(O\016ce)i(at)h Fe(http://fits.gsfc.nasa.go)o(v)21 b Fi(for)27 b(futher)f(informa-)0 5454 y(tion)k(ab)s(out)g(the)h(FITS)e (format)i(and)f(related)g(soft)m(w)m(are)i(pac)m(k)-5 b(ages.)p eop %%Page: 15 21 15 20 bop 0 1225 a Ff(Chapter)65 b(4)0 1687 y Fl(Extended)77 b(File)g(Name)g(Syn)-6 b(tax)0 2216 y Fd(4.1)135 b(Ov)l(erview)0 2466 y Fi(CFITSIO)30 b(supp)s(orts)f(an)j(extended)f(syn)m(tax)h(when)f (sp)s(ecifying)e(the)j(name)f(of)h(the)g(data)g(\014le)e(to)i(b)s(e)f (op)s(ened)g(or)0 2579 y(created)g(that)g(includes)d(the)j(follo)m (wing)e(features:)136 2813 y Fc(\017)46 b Fi(CFITSIO)40 b(can)i(read)f(IRAF)h(format)g(images)f(whic)m(h)f(ha)m(v)m(e)j(header) e(\014le)g(names)g(that)h(end)f(with)f(the)227 2926 y('.imh')d (extension,)i(as)f(w)m(ell)e(as)i(reading)e(and)h(writing)e(FITS)i (\014les,)h(This)e(feature)i(is)e(implemen)m(ted)g(in)227 3039 y(CFITSIO)29 b(b)m(y)i(\014rst)e(con)m(v)m(erting)j(the)e(IRAF)h (image)g(in)m(to)f(a)h(temp)s(orary)f(FITS)g(format)h(\014le)e(in)g (memory)-8 b(,)227 3152 y(then)35 b(op)s(ening)e(the)i(FITS)f(\014le.) 53 b(An)m(y)35 b(of)g(the)g(usual)e(CFITSIO)h(routines)f(then)i(ma)m(y) g(b)s(e)f(used)g(to)i(read)227 3265 y(the)31 b(image)f(header)g(or)h (data.)41 b(Similarly)-8 b(,)27 b(ra)m(w)j(binary)f(data)i(arra)m(ys)f (can)h(b)s(e)f(read)g(b)m(y)g(con)m(v)m(erting)h(them)227 3378 y(on)g(the)f(\015y)g(in)m(to)g(virtual)f(FITS)h(images.)136 3557 y Fc(\017)46 b Fi(FITS)37 b(\014les)g(on)g(the)h(in)m(ternet)g (can)g(b)s(e)f(read)g(\(and)g(sometimes)h(written\))f(using)f(the)i (FTP)-8 b(,)38 b(HTTP)-8 b(,)38 b(or)227 3670 y(R)m(OOT)30 b(proto)s(cols.)136 3849 y Fc(\017)46 b Fi(FITS)30 b(\014les)f(can)i(b) s(e)f(pip)s(ed)e(b)s(et)m(w)m(een)j(tasks)f(on)h(the)f(stdin)f(and)h (stdout)g(streams.)136 4028 y Fc(\017)46 b Fi(FITS)20 b(\014les)g(can)h(b)s(e)f(read)g(and)g(written)g(in)f(shared)h(memory) -8 b(.)38 b(This)19 b(can)i(p)s(oten)m(tially)e(ac)m(hiev)m(e)j(m)m(uc) m(h)f(b)s(etter)227 4141 y(data)26 b(I/O)e(p)s(erformance)g(compared)h (to)h(reading)e(and)g(writing)e(the)j(same)h(FITS)e(\014les)f(on)i (magnetic)g(disk.)136 4320 y Fc(\017)46 b Fi(Compressed)30 b(FITS)f(\014les)h(in)f(gzip)h(or)g(Unix)f(COMPRESS)g(format)h(can)h(b) s(e)f(directly)f(read.)136 4499 y Fc(\017)46 b Fi(Output)28 b(FITS)h(\014les)f(can)h(b)s(e)g(written)f(directly)g(in)f(compressed)i (gzip)g(format,)h(th)m(us)e(sa)m(ving)h(disk)f(space.)136 4678 y Fc(\017)46 b Fi(FITS)26 b(table)g(columns)f(can)i(b)s(e)f (created,)i(mo)s(di\014ed,)e(or)g(deleted)g('on-the-\015y')h(as)g(the)g (table)f(is)f(op)s(ened)h(b)m(y)227 4791 y(CFITSIO.)32 b(This)g(creates)j(a)e(virtual)f(FITS)h(\014le)f(con)m(taining)h(the)h (mo)s(di\014cations)d(that)j(is)f(then)g(op)s(ened)227 4904 y(b)m(y)e(the)f(application)f(program.)136 5083 y Fc(\017)46 b Fi(T)-8 b(able)28 b(ro)m(ws)f(ma)m(y)i(b)s(e)e (selected,)i(or)f(\014ltered)f(out,)h(on)g(the)g(\015y)f(when)g(the)h (table)g(is)f(op)s(ened)g(b)m(y)g(CFITSIO,)227 5196 y(based)f(on)h(an)f (arbitrary)g(user-sp)s(eci\014ed)e(expression.)38 b(Only)25 b(ro)m(ws)i(for)f(whic)m(h)f(the)i(expression)e(ev)-5 b(aluates)227 5309 y(to)31 b('TR)m(UE')g(are)g(retained)f(in)f(the)h (cop)m(y)i(of)e(the)h(table)f(that)h(is)e(op)s(ened)h(b)m(y)g(the)h (application)d(program.)136 5488 y Fc(\017)46 b Fi(Histogram)27 b(images)g(ma)m(y)g(b)s(e)f(created)h(on)f(the)h(\015y)f(b)m(y)g (binning)e(the)i(v)-5 b(alues)26 b(in)f(table)i(columns,)f(resulting) 227 5601 y(in)35 b(a)h(virtual)f(N-dimensional)e(FITS)j(image.)58 b(The)35 b(application)f(program)i(then)g(only)f(sees)h(the)h(FITS)227 5714 y(image)31 b(\(in)e(the)i(primary)d(arra)m(y\))k(instead)d(of)i (the)f(original)f(FITS)g(table.)1905 5942 y(15)p eop %%Page: 16 22 16 21 bop 0 299 a Fi(16)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(The)43 b(latter)h(3)g(features)g(in)e(particular)g(add)h(v)m(ery)h(p)s(o)m(w)m (erful)e(data)i(pro)s(cessing)e(capabilities)g(directly)g(in)m(to)0 668 y(CFITSIO,)29 b(and)g(hence)h(in)m(to)g(ev)m(ery)g(task)h(that)f (uses)g(CFITSIO)e(to)j(read)f(or)g(write)f(FITS)g(\014les.)39 b(F)-8 b(or)31 b(example,)0 781 y(these)d(features)f(transform)f(a)i(v) m(ery)f(simple)e(program)i(that)h(just)f(copies)g(an)g(input)e(FITS)h (\014le)g(to)i(a)g(new)e(output)0 894 y(\014le)35 b(\(lik)m(e)g(the)h (`\014tscop)m(y')h(program)f(that)g(is)f(distributed)e(with)h (CFITSIO\))h(in)m(to)h(a)g(m)m(ultipurp)s(ose)d(FITS)i(\014le)0 1007 y(pro)s(cessing)23 b(to)s(ol.)39 b(By)25 b(app)s(ending)e(fairly)f (simple)h(quali\014ers)g(on)m(to)i(the)g(name)g(of)g(the)g(input)e (FITS)h(\014le,)h(the)g(user)0 1120 y(can)37 b(p)s(erform)f(quite)h (complex)g(table)g(editing)f(op)s(erations)g(\(e.g.,)41 b(create)e(new)d(columns,)i(or)f(\014lter)g(out)g(ro)m(ws)0 1233 y(in)f(a)h(table\))g(or)g(create)h(FITS)f(images)g(b)m(y)g (binning)c(or)k(histogramming)f(the)h(v)-5 b(alues)36 b(in)g(table)h(columns.)59 b(In)0 1346 y(addition,)31 b(these)i(functions)d(ha)m(v)m(e)k(b)s(een)d(co)s(ded)h(using)e(new)i (state-of-the)i(art)f(algorithms)e(that)i(are,)g(in)e(some)0 1458 y(cases,)h(10)f(-)f(100)i(times)e(faster)h(than)f(previous)f (widely)f(used)i(implemen)m(tations.)0 1619 y(Before)k(describing)d (the)j(complete)g(syn)m(tax)g(for)f(the)h(extended)f(FITS)g(\014le)f (names)h(in)f(the)i(next)g(section,)g(here)0 1732 y(are)d(a)g(few)f (examples)g(of)g(FITS)g(\014le)f(names)i(that)f(giv)m(e)h(a)g(quic)m(k) f(o)m(v)m(erview)h(of)g(the)f(allo)m(w)m(ed)g(syn)m(tax:)136 1960 y Fc(\017)46 b Fe('myfile.fits')p Fi(:)37 b(the)31 b(simplest)d(case)k(of)e(a)h(FITS)f(\014le)f(on)i(disk)d(in)i(the)g (curren)m(t)g(directory)-8 b(.)136 2137 y Fc(\017)46 b Fe('myfile.imh')p Fi(:)37 b(op)s(ens)28 b(an)h(IRAF)g(format)g(image) h(\014le)e(and)g(con)m(v)m(erts)i(it)f(on)g(the)g(\015y)f(in)m(to)h(a)g (temp)s(orary)227 2250 y(FITS)h(format)h(image)f(in)f(memory)i(whic)m (h)e(can)h(then)g(b)s(e)g(read)g(with)f(an)m(y)i(other)g(CFITSIO)e (routine.)136 2427 y Fc(\017)46 b Fe(rawfile.dat[i512,512])p Fi(:)35 b(op)s(ens)30 b(a)g(ra)m(w)h(binary)d(data)j(arra)m(y)g(\(a)g (512)g(x)f(512)i(short)e(in)m(teger)g(arra)m(y)h(in)227 2540 y(this)h(case\))j(and)d(con)m(v)m(erts)j(it)d(on)h(the)g(\015y)g (in)m(to)g(a)g(temp)s(orary)g(FITS)f(format)h(image)h(in)d(memory)i (whic)m(h)227 2652 y(can)e(then)f(b)s(e)g(read)g(with)f(an)m(y)i(other) f(CFITSIO)f(routine.)136 2830 y Fc(\017)46 b Fe(myfile.fits.gz)p Fi(:)d(if)32 b(this)g(is)g(the)h(name)g(of)h(a)f(new)g(output)g (\014le,)g(the)g('.gz')i(su\016x)d(will)e(cause)k(it)f(to)h(b)s(e)227 2942 y(compressed)c(in)f(gzip)h(format)h(when)e(it)h(is)g(written)f(to) i(disk.)136 3120 y Fc(\017)46 b Fe('myfile.fits.gz[events,)c(2]')p Fi(:)59 b(op)s(ens)40 b(and)f(uncompresses)g(the)i(gzipp)s(ed)d(\014le) i(m)m(y\014le.\014ts)f(then)227 3232 y(mo)m(v)m(es)34 b(to)f(the)f(extension)g(whic)m(h)f(has)g(the)i(k)m(eyw)m(ords)f (EXTNAME)g(=)g('EVENTS')g(and)g(EXTVER)f(=)227 3345 y(2.)136 3522 y Fc(\017)46 b Fe('-')p Fi(:)40 b(a)31 b(dash)f(\(min)m(us)f (sign\))h(signi\014es)e(that)j(the)g(input)e(\014le)g(is)h(to)h(b)s(e)f (read)g(from)g(the)h(stdin)e(\014le)g(stream,)227 3635 y(or)i(that)g(the)f(output)g(\014le)g(is)f(to)i(b)s(e)f(written)f(to)i (the)g(stdout)f(stream.)136 3812 y Fc(\017)46 b Fe ('ftp://legacy.gsfc.nasa.g)o(ov/t)o(est/)o(vel)o(a.fi)o(ts')p Fi(:)33 b(FITS)28 b(\014les)f(in)g(an)m(y)h(ftp)g(arc)m(hiv)m(e)h(site) f(on)g(the)227 3925 y(in)m(ternet)i(ma)m(y)h(b)s(e)f(directly)f(op)s (ened)h(with)f(read-only)h(access.)136 4102 y Fc(\017)46 b Fe('http://legacy.gsfc.nasa.)o(gov/)o(soft)o(war)o(e/te)o(st.f)o(its) o(')p Fi(:)d(an)m(y)34 b(v)-5 b(alid)33 b(URL)h(to)h(a)f(FITS)g(\014le) f(on)227 4215 y(the)e(W)-8 b(eb)31 b(ma)m(y)g(b)s(e)f(op)s(ened)f(with) g(read-only)h(access.)136 4392 y Fc(\017)46 b Fe ('root://legacy.gsfc.nasa.)o(gov/)o(test)o(/ve)o(la.f)o(its')o Fi(:)32 b(similar)21 b(to)j(ftp)f(access)i(except)g(that)f(it)f(pro-) 227 4505 y(vides)29 b(write)h(as)g(w)m(ell)f(as)i(read)f(access)h(to)g (the)f(\014les)g(across)g(the)h(net)m(w)m(ork.)41 b(This)28 b(uses)i(the)h(ro)s(ot)f(proto)s(col)227 4618 y(dev)m(elop)s(ed)g(at)h (CERN.)136 4795 y Fc(\017)46 b Fe('shmem://h2[events]')p Fi(:)35 b(op)s(ens)30 b(the)g(FITS)f(\014le)h(in)f(a)h(shared)f(memory) i(segmen)m(t)g(and)e(mo)m(v)m(es)j(to)f(the)227 4908 y(EVENTS)f(extension.)136 5085 y Fc(\017)46 b Fe('mem://')p Fi(:)52 b(creates)39 b(a)e(scratc)m(h)i(output)d(\014le)h(in)e(core)j (computer)f(memory)-8 b(.)62 b(The)37 b(resulting)e('\014le')i(will)227 5198 y(disapp)s(ear)24 b(when)g(the)i(program)f(exits,)h(so)g(this)e (is)h(mainly)e(useful)h(for)h(testing)h(purp)s(oses)d(when)i(one)g(do)s (es)227 5311 y(not)31 b(w)m(an)m(t)g(a)g(p)s(ermanen)m(t)f(cop)m(y)h (of)f(the)h(output)f(\014le.)136 5488 y Fc(\017)46 b Fe('myfile.fits[3;)e(Images\(10\)]')p Fi(:)49 b(op)s(ens)35 b(a)i(cop)m(y)g(of)f(the)g(image)h(con)m(tained)f(in)f(the)i(10th)f(ro) m(w)h(of)227 5601 y(the)26 b('Images')i(column)c(in)h(the)h(binary)f (table)g(in)g(the)h(3th)h(extension)e(of)h(the)h(FITS)e(\014le.)38 b(The)26 b(application)227 5714 y(just)k(sees)h(this)e(single)g(image)i (as)f(the)h(primary)d(arra)m(y)-8 b(.)p eop %%Page: 17 23 17 22 bop 0 299 a Fg(4.1.)72 b(O)m(VER)-10 b(VIEW)3086 b Fi(17)136 555 y Fc(\017)46 b Fe('myfile.fits[1:512:2,)c(1:512:2]')p Fi(:)49 b(op)s(ens)35 b(a)h(section)g(of)f(the)h(input)e(image)i (ranging)f(from)g(the)227 668 y(1st)26 b(to)g(the)f(512th)h(pixel)e(in) f(X)j(and)e(Y,)i(and)e(selects)i(ev)m(ery)f(second)h(pixel)d(in)h(b)s (oth)g(dimensions,)g(resulting)227 781 y(in)29 b(a)i(256)h(x)e(256)i (pixel)c(image)j(in)e(this)g(case.)136 981 y Fc(\017)46 b Fe('myfile.fits[EVENTS][col)41 b(Rad)47 b(=)h(sqrt\(X**2)d(+)j (Y**2\)]')p Fi(:)38 b(creates)30 b(and)f(op)s(ens)f(a)h(temp)s(orary) 227 1094 y(\014le)e(on)g(the)g(\015y)g(\(in)f(memory)h(or)g(on)h (disk\))e(that)h(is)g(iden)m(tical)f(to)i(m)m(y\014le.\014ts)e(except)i (that)g(it)f(will)e(con)m(tain)227 1207 y(a)41 b(new)f(column)f(in)h (the)g(EVENTS)g(extension)g(called)g('Rad')h(whose)f(v)-5 b(alue)40 b(is)f(computed)i(using)e(the)227 1320 y(indicated)29 b(expresson)h(whic)m(h)f(is)h(a)g(function)f(of)i(the)g(v)-5 b(alues)29 b(in)g(the)i(X)f(and)g(Y)h(columns.)136 1520 y Fc(\017)46 b Fe('myfile.fits[EVENTS][PHA)41 b(>)48 b(5]')p Fi(:)37 b(creates)27 b(and)e(op)s(ens)g(a)h(temp)s(orary)f (FITS)g(\014les)f(that)i(is)f(iden)m(ti-)227 1633 y(cal)k(to)h('m)m (y\014le.\014ts')e(except)i(that)f(the)g(EVENTS)f(table)h(will)d(only)i (con)m(tain)h(the)g(ro)m(ws)g(that)h(ha)m(v)m(e)g(v)-5 b(alues)227 1746 y(of)28 b(the)g(PHA)f(column)f(greater)j(than)e(5.)40 b(In)27 b(general,)h(an)m(y)g(arbitrary)e(b)s(o)s(olean)h(expression)f (using)g(a)i(C)f(or)227 1859 y(F)-8 b(ortran-lik)m(e)29 b(syn)m(tax,)g(whic)m(h)e(ma)m(y)i(com)m(bine)f(AND)h(and)f(OR)f(op)s (erators,)i(ma)m(y)g(b)s(e)f(used)f(to)i(select)g(ro)m(ws)227 1972 y(from)h(a)h(table.)136 2172 y Fc(\017)46 b Fe ('myfile.fits[EVENTS][bin)41 b(\(X,Y\)=1,2048,4]')p Fi(:)46 b(creates)37 b(a)e(temp)s(orary)g(FITS)f(primary)f(arra)m(y)227 2285 y(image)c(whic)m(h)f(is)g(computed)g(on)h(the)g(\015y)f(b)m(y)g (binning)e(\(i.e,)k(computing)d(the)i(2-dimensional)e(histogram\))227 2398 y(of)34 b(the)f(v)-5 b(alues)33 b(in)f(the)i(X)g(and)e(Y)i (columns)e(of)i(the)f(EVENTS)g(extension.)49 b(In)33 b(this)f(case)j(the)e(X)h(and)f(Y)227 2511 y(co)s(ordinates)g(range)h (from)f(1)h(to)g(2048)h(and)e(the)h(image)f(pixel)f(size)h(is)g(4)g (units)f(in)g(b)s(oth)h(dimensions,)f(so)227 2624 y(the)f(resulting)d (image)j(is)e(512)j(x)e(512)i(pixels)d(in)g(size.)136 2824 y Fc(\017)46 b Fi(The)31 b(\014nal)f(example)i(com)m(bines)f(man)m (y)g(of)h(these)g(feature)g(in)m(to)f(one)h(complex)f(expression)f (\(it)i(is)e(brok)m(en)227 2937 y(in)m(to)h(sev)m(eral)f(lines)f(for)h (clarit)m(y\):)323 3206 y Fe('ftp://legacy.gsfc.nasa)o(.gov)o(/dat)o (a/s)o(ampl)o(e.fi)o(ts.)o(gz[E)o(VENT)o(S])370 3319 y([col)47 b(phacorr)f(=)h(pha)g(*)h(1.1)f(-)g(0.3][phacorr)e(>=)i(5.0)g (&&)g(phacorr)f(<=)h(14.0])370 3432 y([bin)g(\(X,Y\)=32]')227 3701 y Fi(In)37 b(this)g(case,)k(CFITSIO)36 b(\(1\))j(copies)f(and)f (uncompresses)g(the)h(FITS)f(\014le)g(from)g(the)h(ftp)f(site)h(on)g (the)227 3814 y(legacy)f(mac)m(hine,)h(\(2\))f(mo)m(v)m(es)g(to)g(the)g ('EVENTS')f(extension,)h(\(3\))g(calculates)g(a)f(new)g(column)f (called)227 3927 y('phacorr',)30 b(\(4\))f(selects)g(the)g(ro)m(ws)g (in)e(the)i(table)g(that)g(ha)m(v)m(e)h(phacorr)e(in)f(the)i(range)g(5) g(to)h(14,)g(and)e(\014nally)227 4040 y(\(5\))35 b(bins)c(the)i (remaining)e(ro)m(ws)i(on)h(the)f(X)g(and)g(Y)g(column)f(co)s (ordinates,)i(using)d(a)j(pixel)d(size)i(=)g(32)h(to)227 4153 y(create)d(a)f(2D)g(image.)41 b(All)28 b(this)g(pro)s(cessing)g (is)h(completely)g(transparen)m(t)g(to)i(the)e(application)f(program,) 227 4266 y(whic)m(h)h(simply)f(sees)j(the)g(\014nal)e(2-D)i(image)g(in) e(the)h(primary)f(arra)m(y)i(of)f(the)h(op)s(ened)f(\014le.)0 4538 y(The)c(full)f(extended)i(CFITSIO)e(FITS)h(\014le)g(name)h(can)g (con)m(tain)g(sev)m(eral)g(di\013eren)m(t)g(comp)s(onen)m(ts)g(dep)s (ending)d(on)0 4651 y(the)31 b(con)m(text.)42 b(These)30 b(comp)s(onen)m(ts)h(are)g(describ)s(ed)d(in)h(the)h(follo)m(wing)f (sections:)0 4924 y Fe(When)47 b(creating)e(a)j(new)f(file:)143 5036 y(filetype://BaseFilename\(t)o(empl)o(ate)o(Name)o(\))0 5262 y(When)g(opening)e(an)j(existing)d(primary)h(array)g(or)i(image)e (HDU:)143 5375 y(filetype://BaseFilename\(o)o(utNa)o(me\))o([HDU)o (loca)o(tio)o(n][I)o(mage)o(Sec)o(tion)o(])0 5601 y(When)h(opening)e (an)j(existing)d(table)i(HDU:)143 5714 y(filetype://BaseFilename\(o)o (utNa)o(me\))o([HDU)o(loca)o(tio)o(n][c)o(olFi)o(lte)o(r][r)o(owFi)o (lte)o(r][b)o(inSp)o(ec])p eop %%Page: 18 24 18 23 bop 0 299 a Fi(18)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(The)41 b(\014let)m(yp)s(e,)j(BaseFilename,)h(outName,)g(HDUlo)s(cation,)g(and) c(ImageSection)h(comp)s(onen)m(ts,)j(if)c(presen)m(t,)0 668 y(m)m(ust)30 b(b)s(e)g(giv)m(en)h(in)e(that)i(order,)g(but)f(the)g (colFilter,)g(ro)m(wFilter,)h(and)e(binSp)s(ec)g(sp)s(eci\014ers)f(ma)m (y)k(follo)m(w)d(in)h(an)m(y)0 781 y(order.)39 b(Regardless)28 b(of)h(the)f(order,)g(ho)m(w)m(ev)m(er,)i(the)f(colFilter)e(sp)s (eci\014er,)g(if)g(presen)m(t,)i(will)d(b)s(e)h(pro)s(cessed)h(\014rst) f(b)m(y)0 894 y(CFITSIO,)i(follo)m(w)m(ed)h(b)m(y)g(the)h(ro)m(wFilter) f(sp)s(eci\014er,)f(and)g(\014nally)g(b)m(y)h(the)g(binSp)s(ec)e(sp)s (eci\014er.)0 1221 y Fd(4.2)135 b(Filet)l(yp)t(e)0 1471 y Fi(The)37 b(t)m(yp)s(e)g(of)g(\014le)f(determines)g(the)h(medium)e (on)i(whic)m(h)f(the)h(\014le)f(is)h(lo)s(cated)g(\(e.g.,)j(disk)c(or)h (net)m(w)m(ork\))h(and,)0 1584 y(hence,)f(whic)m(h)d(in)m(ternal)g (device)h(driv)m(er)f(is)g(used)g(b)m(y)h(CFITSIO)f(to)i(read)f(and/or) g(write)f(the)h(\014le.)55 b(Curren)m(tly)0 1697 y(supp)s(orted)29 b(t)m(yp)s(es)h(are)382 1913 y Fe(file://)93 b(-)48 b(file)e(on)i (local)e(magnetic)g(disk)g(\(default\))382 2026 y(ftp://)141 b(-)48 b(a)f(readonly)f(file)g(accessed)g(with)h(the)g(anonymous)e(FTP) i(protocol.)907 2139 y(It)g(also)g(supports)93 b (ftp://username:password@)o(host)o(nam)o(e/..)o(.)907 2252 y(for)47 b(accessing)e(password-protected)e(ftp)k(sites.)382 2365 y(http://)93 b(-)48 b(a)f(readonly)f(file)g(accessed)g(with)h(the) g(HTTP)f(protocol.)93 b(It)907 2478 y(does)46 b(not)95 b(support)46 b(username:password)d(like)k(the)g(ftp)f(driver.)907 2591 y(Proxy)g(HTTP)h(servers)f(are)h(supported)e(using)h(the)h (http_proxy)907 2704 y(environment)e(variable.)382 2817 y(root://)93 b(-)48 b(uses)e(the)h(CERN)g(root)g(protocol)e(for)i (writing)f(as)h(well)g(as)907 2930 y(reading)f(files)g(over)h(the)g (network.)382 3042 y(shmem://)e(-)j(opens)e(or)h(creates)f(a)i(file)e (which)h(persists)e(in)i(the)g(computer's)907 3155 y(shared)f(memory.) 382 3268 y(mem://)141 b(-)48 b(opens)e(a)i(temporary)d(file)i(in)g (core)f(memory.)94 b(The)47 b(file)907 3381 y(disappears)e(when)h(the)h (program)f(exits)h(so)g(this)f(is)i(mainly)907 3494 y(useful)e(for)h (test)f(purposes)g(when)h(a)g(permanent)e(output)h(file)907 3607 y(is)h(not)g(desired.)0 3824 y Fi(If)35 b(the)h(\014let)m(yp)s(e)f (is)f(not)i(sp)s(eci\014ed,)g(then)f(t)m(yp)s(e)h(\014le://)g(is)e (assumed.)56 b(The)35 b(double)f(slashes)h('//')i(are)f(optional)0 3937 y(and)30 b(ma)m(y)h(b)s(e)e(omitted)i(in)e(most)i(cases.)0 4220 y Fb(4.2.1)112 b(Notes)37 b(ab)s(out)i(HTTP)d(pro)m(xy)i(serv)m (ers)0 4439 y Fi(A)32 b(pro)m(xy)g(HTTP)f(serv)m(er)h(ma)m(y)h(b)s(e)e (used)g(b)m(y)h(de\014ning)e(the)i(address)f(\(URL\))i(and)e(p)s(ort)g (n)m(um)m(b)s(er)g(of)h(the)g(pro)m(xy)0 4552 y(serv)m(er)f(with)e(the) h(h)m(ttp)p 801 4552 28 4 v 33 w(pro)m(xy)g(en)m(vironmen)m(t)g(v)-5 b(ariable.)40 b(F)-8 b(or)31 b(example)191 4769 y Fe(setenv)46 b(http_proxy)f(http://heasarc.gsfc.nasa)o(.gov)o(:312)o(8)0 4985 y Fi(will)35 b(cause)j(CFITSIO)f(to)h(use)g(p)s(ort)f(3128)i(on)f (the)g(heasarc)g(pro)m(xy)g(serv)m(er)g(whenev)m(er)g(reading)f(a)h (FITS)f(\014le)0 5098 y(with)29 b(HTTP)-8 b(.)0 5382 y Fb(4.2.2)112 b(Notes)37 b(ab)s(out)i(the)e(ro)s(ot)g(\014let)m(yp)s (e)0 5601 y Fi(The)20 b(original)g(ro)s(otd)g(serv)m(er)h(can)h(b)s(e)e (obtained)g(from:)36 b Fe(ftp://root.cern.ch/root)o(/roo)o(td.t)o(ar.)o (gz)15 b Fi(but,)22 b(for)0 5714 y(it)32 b(to)i(w)m(ork)f(correctly)g (with)e(CFITSIO)h(one)h(has)f(to)i(use)e(a)i(mo)s(di\014ed)c(v)m (ersion)j(whic)m(h)e(supp)s(orts)g(a)i(command)p eop %%Page: 19 25 19 24 bop 0 299 a Fg(4.2.)72 b(FILETYPE)3128 b Fi(19)0 555 y(to)41 b(return)d(the)j(length)e(of)h(the)g(\014le.)69 b(This)38 b(mo)s(di\014ed)f(v)m(ersion)j(is)f(a)m(v)-5 b(ailable)39 b(in)g(ro)s(otd)g(sub)s(directory)f(in)h(the)0 668 y(CFITSIO)29 b(ftp)h(area)h(at)286 928 y Fe (ftp://legacy.gsfc.nasa.gov)o(/so)o(ftwa)o(re/f)o(its)o(io/c)o(/roo)o (t/r)o(ootd)o(.tar)o(.gz)o(.)0 1187 y Fi(This)i(small)f(serv)m(er)j(is) f(started)g(either)g(b)m(y)h(inetd)e(when)g(a)i(clien)m(t)f(requests)g (a)h(connection)g(to)g(a)f(ro)s(otd)h(serv)m(er)0 1300 y(or)30 b(b)m(y)g(hand)f(\(i.e.)41 b(from)30 b(the)g(command)g(line\).) 40 b(The)29 b(ro)s(otd)h(serv)m(er)h(w)m(orks)f(with)f(the)h(R)m(OOT)g (TNetFile)g(class.)0 1413 y(It)g(allo)m(ws)e(remote)j(access)f(to)h(R)m (OOT)e(database)h(\014les)e(in)g(either)h(read)h(or)f(write)g(mo)s(de.) 40 b(By)30 b(default)e(TNetFile)0 1526 y(assumes)38 b(p)s(ort)g(432)h (\(whic)m(h)e(requires)g(ro)s(otd)h(to)h(b)s(e)f(started)h(as)f(ro)s (ot\).)65 b(T)-8 b(o)39 b(run)e(ro)s(otd)h(via)g(inetd)f(add)h(the)0 1639 y(follo)m(wing)29 b(line)g(to)i(/etc/services:)95 1898 y Fe(rootd)238 b(432/tcp)0 2158 y Fi(and)30 b(to)h (/etc/inetd.conf,)h(add)e(the)g(follo)m(wing)f(line:)95 2417 y Fe(rootd)47 b(stream)f(tcp)h(nowait)f(root)h (/user/rdm/root/bin/root)o(d)42 b(rootd)k(-i)0 2677 y Fi(F)-8 b(orce)34 b(inetd)d(to)j(reread)e(its)g(conf)g(\014le)g(with)f ("kill)f(-HUP)j(".)46 b(Y)-8 b(ou)33 b(can)g(also)f(start) h(ro)s(otd)g(b)m(y)f(hand)0 2790 y(running)i(directly)h(under)f(y)m (our)j(priv)-5 b(ate)36 b(accoun)m(t)h(\(no)g(ro)s(ot)g(system)f (privileges)e(needed\).)59 b(F)-8 b(or)37 b(example)f(to)0 2903 y(start)f(ro)s(otd)e(listening)f(on)i(p)s(ort)f(5151)j(just)d(t)m (yp)s(e:)49 b Fe(rootd)d(-p)h(5151)33 b Fi(Notice:)49 b(no)34 b(&)f(is)g(needed.)51 b(Ro)s(otd)35 b(will)0 3016 y(go)c(in)m(to)g(bac)m(kground)f(b)m(y)g(itself.)95 3275 y Fe(Rootd)47 b(arguments:)191 3388 y(-i)763 b(says)47 b(we)g(were)f(started)g(by)h(inetd)191 3501 y(-p)g(port#)476 b(specifies)45 b(a)j(different)d(port)i(to)g(listen)f(on)191 3614 y(-d)h(level)476 b(level)46 b(of)i(debug)e(info)h(written)e(to)j (syslog)1050 3727 y(0)f(=)h(no)f(debug)f(\(default\))1050 3840 y(1)h(=)h(minimum)1050 3953 y(2)f(=)h(medium)1050 4066 y(3)f(=)h(maximum)0 4325 y Fi(Ro)s(otd)29 b(can)f(also)g(b)s(e)g (con\014gured)g(for)g(anon)m(ymous)g(usage)h(\(lik)m(e)f(anon)m(ymous)g (ftp\).)40 b(T)-8 b(o)29 b(setup)f(ro)s(otd)g(to)h(accept)0 4438 y(anon)m(ymous)h(logins)f(do)i(the)f(follo)m(wing)f(\(while)g(b)s (eing)g(logged)i(in)e(as)h(ro)s(ot\):)143 4698 y Fe(-)48 b(Add)f(the)f(following)g(line)g(to)i(/etc/passwd:)239 4924 y(rootd:*:71:72:Anonymous)41 b(rootd:/var/spool/rootd:/b)o(in/)o (fals)o(e)239 5149 y(where)46 b(you)h(may)g(modify)f(the)h(uid,)f(gid)h (\(71,)g(72\))g(and)g(the)g(home)f(directory)239 5262 y(to)h(suite)f(your)h(system.)143 5488 y(-)h(Add)f(the)f(following)g (line)g(to)i(/etc/group:)239 5714 y(rootd:*:72:rootd)p eop %%Page: 20 26 20 25 bop 0 299 a Fi(20)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)239 668 y Fe(where)46 b(the)h(gid)g(must)f(match)h(the)g(gid)g(in)g(/etc/passwd.) 143 894 y(-)h(Create)e(the)h(directories:)239 1120 y(mkdir)f (/var/spool/rootd)239 1233 y(mkdir)g(/var/spool/rootd/tmp)239 1346 y(chmod)g(777)h(/var/spool/rootd/tmp)239 1571 y(Where)f (/var/spool/rootd)d(must)k(match)f(the)h(rootd)g(home)f(directory)g(as) 239 1684 y(specified)f(in)i(the)g(rootd)f(/etc/passwd)f(entry.)143 1910 y(-)j(To)f(make)f(writeable)g(directories)e(for)j(anonymous)f(do,) h(for)f(example:)239 2136 y(mkdir)g(/var/spool/rootd/pub)239 2249 y(chown)g(rootd:rootd)f(/var/spool/rootd/pub)0 2492 y Fi(That's)d(all.)74 b(Sev)m(eral)42 b(additional)e(remarks:)64 b(y)m(ou)42 b(can)g(login)f(to)i(an)f(anon)m(ymous)f(serv)m(er)i (either)e(with)g(the)0 2605 y(names)31 b("anon)m(ymous")h(or)f("ro)s (otd".)43 b(The)31 b(passw)m(ord)f(should)f(b)s(e)i(of)g(t)m(yp)s(e)g (user@host.do.main.)42 b(Only)29 b(the)i(@)0 2718 y(is)d(enforced)g (for)h(the)f(time)h(b)s(eing.)38 b(In)28 b(anon)m(ymous)h(mo)s(de)f (the)g(top)h(of)g(the)g(\014le)e(tree)j(is)d(set)i(to)h(the)e(ro)s(otd) h(home)0 2831 y(directory)-8 b(,)38 b(therefore)f(only)e(\014les)h(b)s (elo)m(w)f(the)i(home)f(directory)g(can)g(b)s(e)g(accessed.)60 b(Anon)m(ymous)36 b(mo)s(de)g(only)0 2944 y(w)m(orks)30 b(when)g(the)g(serv)m(er)h(is)e(started)i(via)f(inetd.)0 3232 y Fb(4.2.3)112 b(Notes)37 b(ab)s(out)i(the)e(shmem)g(\014let)m(yp) s(e:)0 3451 y Fi(Shared)d(memory)h(\014les)f(are)h(curren)m(tly)f(supp) s(orted)f(on)i(most)h(Unix)e(platforms,)h(where)g(the)g(shared)f (memory)0 3564 y(segmen)m(ts)d(are)g(managed)g(b)m(y)f(the)g(op)s (erating)g(system)h(k)m(ernel)e(and)h(`liv)m(e')g(indep)s(enden)m(tly)d (of)k(pro)s(cesses.)40 b(They)0 3677 y(are)34 b(not)g(deleted)g(\(b)m (y)g(default\))f(when)g(the)h(pro)s(cess)f(whic)m(h)g(created)i(them)f (terminates,)g(although)g(they)g(will)0 3790 y(disapp)s(ear)d(if)h(the) i(system)f(is)f(reb)s(o)s(oted.)49 b(Applications)31 b(can)j(create)h(shared)d(memory)h(\014les)f(in)g(CFITSIO)g(b)m(y)0 3903 y(calling:)143 4146 y Fe(fit_create_file\(&fitsfile)o(ptr,)41 b("shmem://h2",)j(&status\);)0 4389 y Fi(where)22 b(the)g(ro)s(ot)h (`\014le')f(names)g(are)g(curren)m(tly)g(restricted)g(to)h(b)s(e)e ('h0',)k('h1',)f('h2',)h('h3',)f(etc.,)i(up)21 b(to)i(a)g(maxim)m(umn)0 4502 y(n)m(um)m(b)s(er)d(de\014ned)f(b)m(y)i(the)g(the)g(v)-5 b(alue)21 b(of)g(SHARED)p 1746 4502 28 4 v 33 w(MAXSEG)g(\(equal)g(to)g (16)h(b)m(y)f(default\).)37 b(This)19 b(is)h(a)h(protot)m(yp)s(e)0 4615 y(implemen)m(tation)27 b(of)i(the)g(shared)f(memory)g(in)m (terface)h(and)f(a)h(more)g(robust)f(in)m(terface,)i(whic)m(h)d(will)f (ha)m(v)m(e)k(few)m(er)0 4728 y(restrictions)f(on)h(the)h(n)m(um)m(b)s (er)e(of)i(\014les)e(and)h(on)g(their)f(names,)i(ma)m(y)g(b)s(e)f(dev)m (elop)s(ed)f(in)g(the)i(future.)0 4888 y(When)23 b(op)s(ening)g(an)g (already)g(existing)g(FITS)g(\014le)g(in)f(shared)h(memory)h(one)g (calls)e(the)i(usual)f(CFITSIO)f(routine:)143 5132 y Fe(fits_open_file\(&fitsfilep)o(tr,)41 b("shmem://h7",)j(mode,)j (&status\))0 5375 y Fi(The)26 b(\014le)g(mo)s(de)h(can)g(b)s(e)f(READ)m (WRITE)h(or)g(READONL)-8 b(Y)28 b(just)e(as)h(with)e(disk)h(\014les.)38 b(More)28 b(than)e(one)h(pro)s(cess)0 5488 y(can)35 b(op)s(erate)g(on)f (READONL)-8 b(Y)35 b(mo)s(de)f(\014les)g(at)h(the)f(same)h(time.)53 b(CFITSIO)33 b(supp)s(orts)f(prop)s(er)h(\014le)h(lo)s(c)m(king)0 5601 y(\(b)s(oth)27 b(in)g(READONL)-8 b(Y)29 b(and)e(READ)m(WRITE)h(mo) s(des\),)h(so)f(calls)f(to)h(\014ts)p 2572 5601 V 33 w(op)s(en)p 2795 5601 V 32 w(\014le)f(ma)m(y)h(b)s(e)f(lo)s(c)m(k)m(ed) i(out)f(un)m(til)0 5714 y(another)j(other)f(pro)s(cess)g(closes)h(the)f (\014le.)p eop %%Page: 21 27 21 26 bop 0 299 a Fg(4.3.)72 b(BASE)30 b(FILENAME)2830 b Fi(21)0 555 y(When)30 b(an)g(application)f(is)g(\014nished)f (accessing)j(a)f(FITS)g(\014le)f(in)g(a)i(shared)e(memory)h(segmen)m (t,)i(it)e(ma)m(y)h(close)f(it)0 668 y(\(and)k(the)g(\014le)f(will)e (remain)h(in)h(the)h(system\))g(with)f(\014ts)p 1955 668 28 4 v 32 w(close)p 2174 668 V 33 w(\014le,)h(or)g(delete)g(it)g (with)e(\014ts)p 3191 668 V 33 w(delete)p 3456 668 V 33 w(\014le.)50 b(Ph)m(ys-)0 781 y(ical)34 b(deletion)g(is)g(p)s(ostp)s (oned)f(un)m(til)h(the)h(last)f(pro)s(cess)h(calls)f (\013clos/\013delt.)54 b(\014ts)p 2801 781 V 32 w(delete)p 3065 781 V 33 w(\014le)34 b(tries)h(to)g(obtain)g(a)0 894 y(READ)m(WRITE)f(lo)s(c)m(k)f(on)g(the)g(\014le)g(to)h(b)s(e)e (deleted,)i(th)m(us)f(it)g(can)g(b)s(e)g(blo)s(c)m(k)m(ed)g(if)f(the)i (ob)5 b(ject)34 b(w)m(as)f(not)h(op)s(ened)0 1007 y(in)29 b(READ)m(WRITE)i(mo)s(de.)0 1167 y(A)i(shared)f(memory)h(managemen)m(t) h(utilit)m(y)d(program)i(called)f(`smem',)h(is)f(included)e(with)i(the) h(CFITSIO)e(dis-)0 1280 y(tribution.)37 b(It)27 b(can)g(b)s(e)f(built)f (b)m(y)i(t)m(yping)f(`mak)m(e)i(smem';)g(then)f(t)m(yp)s(e)g(`smem)f (-h')h(to)h(get)g(a)f(list)e(of)i(v)-5 b(alid)25 b(options.)0 1393 y(Executing)36 b(smem)g(without)f(an)m(y)i(options)f(causes)g(it)g (to)h(list)e(all)g(the)i(shared)e(memory)i(segmen)m(ts)g(curren)m(tly)0 1506 y(residing)31 b(in)h(the)h(system)h(and)e(managed)i(b)m(y)f(the)h (shared)e(memory)h(driv)m(er.)48 b(T)-8 b(o)34 b(get)g(a)g(list)e(of)h (all)f(the)i(shared)0 1619 y(memory)c(ob)5 b(jects,)32 b(run)d(the)h(system)h(utilit)m(y)d(program)i(`ip)s(cs)g([-a]'.)0 1978 y Fd(4.3)135 b(Base)46 b(Filename)0 2233 y Fi(The)31 b(base)g(\014lename)g(is)f(the)i(name)f(of)h(the)f(\014le)g(optionally) e(including)f(the)k(director/sub)s(directory)d(path,)j(and)0 2346 y(in)d(the)i(case)g(of)g(`ftp',)f(`h)m(ttp',)i(and)d(`ro)s(ot')j (\014let)m(yp)s(es,)d(the)i(mac)m(hine)f(iden)m(ti\014er.)39 b(Examples:)191 2628 y Fe(myfile.fits)191 2741 y(!data.fits)191 2854 y(/data/myfile.fits)191 2967 y(fits.gsfc.nasa.gov/ftp/s)o(ampl)o (eda)o(ta/m)o(yfil)o(e.f)o(its.)o(gz)0 3248 y Fi(When)29 b(creating)g(a)g(new)f(output)h(\014le)f(on)h(magnetic)g(disk)e(\(of)j (t)m(yp)s(e)f(\014le://\))g(if)f(the)h(base)g(\014lename)f(b)s(egins)f (with)0 3361 y(an)34 b(exclamation)h(p)s(oin)m(t)e(\(!\))54 b(then)34 b(an)m(y)g(existing)g(\014le)f(with)g(that)i(same)g(basename) g(will)d(b)s(e)h(deleted)h(prior)f(to)0 3474 y(creating)h(the)g(new)g (FITS)f(\014le.)50 b(Otherwise)33 b(if)g(the)h(\014le)f(to)h(b)s(e)g (created)h(already)e(exists,)i(then)e(CFITSIO)g(will)0 3587 y(return)g(an)h(error)f(and)g(will)f(not)i(o)m(v)m(erwrite)g(the)g (existing)f(\014le.)51 b(Note)35 b(that)g(the)f(exclamation)g(p)s(oin)m (t,)g(')10 b(!',)36 b(is)d(a)0 3700 y(sp)s(ecial)26 b(UNIX)i(c)m (haracter,)j(so)d(if)e(it)i(is)f(used)g(on)g(the)h(command)g(line)e (rather)i(than)f(en)m(tered)h(at)h(a)f(task)h(prompt,)0 3813 y(it)i(m)m(ust)g(b)s(e)g(preceded)g(b)m(y)h(a)g(bac)m(kslash)f(to) h(force)g(the)g(UNIX)g(shell)d(to)j(pass)f(it)h(v)m(erbatim)f(to)h(the) g(application)0 3926 y(program.)0 4086 y(If)24 b(the)i(output)e(disk)g (\014le)g(name)h(ends)f(with)f(the)i(su\016x)f('.gz',)k(then)d(CFITSIO) e(will)f(compress)j(the)g(\014le)f(using)g(the)0 4199 y(gzip)g(compression)f(algorithm)g(b)s(efore)h(writing)e(it)i(to)h (disk.)37 b(This)22 b(can)j(reduce)f(the)g(amoun)m(t)h(of)f(disk)f (space)i(used)0 4312 y(b)m(y)34 b(the)h(\014le.)52 b(Note)36 b(that)f(this)f(feature)h(requires)e(that)i(the)f(uncompressed)g (\014le)f(b)s(e)h(constructed)h(in)e(memory)0 4425 y(b)s(efore)d(it)g (is)f(compressed)h(and)g(written)g(to)h(disk,)e(so)h(it)g(can)h(fail)e (if)g(there)i(is)e(insu\016cien)m(t)g(a)m(v)-5 b(ailable)30 b(memory)-8 b(.)0 4585 y(An)45 b(input)f(FITS)g(\014le)h(ma)m(y)h(b)s (e)f(compressed)g(with)g(the)g(gzip)g(or)h(Unix)e(compress)i (algorithms,)i(in)c(whic)m(h)0 4698 y(case)38 b(CFITSIO)e(will)f (uncompress)h(the)i(\014le)f(on)g(the)h(\015y)e(in)m(to)i(a)g(temp)s (orary)f(\014le)f(\(in)h(memory)g(or)g(on)h(disk\).)0 4811 y(Compressed)32 b(\014les)h(ma)m(y)h(only)e(b)s(e)h(op)s(ened)f (with)g(read-only)h(p)s(ermission.)47 b(When)33 b(sp)s(ecifying)e(the)j (name)f(of)h(a)0 4924 y(compressed)h(FITS)g(\014le)g(it)g(is)g(not)h (necessary)g(to)g(app)s(end)e(the)i(\014le)f(su\016x)f(\(e.g.,)39 b(`.gz')e(or)f(`.Z'\).)g(If)f(CFITSIO)0 5036 y(cannot)24 b(\014nd)e(the)h(input)e(\014le)i(name)g(without)f(the)h(su\016x,)h (then)f(it)g(will)e(automatically)i(searc)m(h)h(for)f(a)g(compressed)0 5149 y(\014le)35 b(with)f(the)i(same)g(ro)s(ot)g(name.)57 b(In)35 b(the)h(case)h(of)f(reading)f(ftp)g(and)g(h)m(ttp)h(t)m(yp)s(e) g(\014les,)g(CFITSIO)f(generally)0 5262 y(lo)s(oks)i(for)h(a)g (compressed)g(v)m(ersion)f(of)h(the)g(\014le)f(\014rst,)i(b)s(efore)e (trying)g(to)i(op)s(en)e(the)h(uncompressed)e(\014le.)63 b(By)0 5375 y(default,)36 b(CFITSIO)f(copies)g(\(and)h(uncompressed)e (if)h(necessary\))h(the)g(ftp)f(or)h(h)m(ttp)g(FITS)f(\014le)f(in)m(to) i(memory)0 5488 y(on)g(the)g(lo)s(cal)f(mac)m(hine)g(b)s(efore)h(op)s (ening)e(it.)57 b(This)34 b(will)f(fail)h(if)h(the)h(lo)s(cal)f(mac)m (hine)h(do)s(es)f(not)h(ha)m(v)m(e)h(enough)0 5601 y(memory)g(to)h (hold)e(the)h(whole)g(FITS)f(\014le,)j(so)e(in)f(this)g(case,)41 b(the)c(output)g(\014lename)f(sp)s(eci\014er)g(\(see)i(the)g(next)0 5714 y(section\))31 b(can)g(b)s(e)e(used)h(to)h(further)e(con)m(trol)i (ho)m(w)f(CFITSIO)f(reads)h(ftp)g(and)g(h)m(ttp)g(\014les.)p eop %%Page: 22 28 22 27 bop 0 299 a Fi(22)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(If)32 b(the)h(input)e(\014le)h(is)g(an)h(IRAF)g(image)g(\014le)f(\(*.imh)g (\014le\))h(then)f(CFITSIO)f(will)g(automatically)h(con)m(v)m(ert)j(it) d(on)0 668 y(the)27 b(\015y)g(in)m(to)g(a)h(virtual)d(FITS)h(image)i(b) s(efore)f(it)f(is)g(op)s(ened)h(b)m(y)g(the)g(application)f(program.)39 b(IRAF)27 b(images)h(can)0 781 y(only)h(b)s(e)h(op)s(ened)g(with)f (READONL)-8 b(Y)31 b(\014le)e(access.)0 941 y(Similarly)-8 b(,)28 b(if)i(the)h(input)e(\014le)i(is)f(a)h(ra)m(w)g(binary)e(data)j (arra)m(y)-8 b(,)33 b(then)d(CFITSIO)g(will)e(con)m(v)m(ert)33 b(it)d(on)h(the)h(\015y)e(in)m(to)0 1054 y(a)38 b(virtual)e(FITS)i (image)g(with)e(the)i(basic)g(set)g(of)g(required)e(header)i(k)m(eyw)m (ords)g(b)s(efore)g(it)f(is)g(op)s(ened)g(b)m(y)h(the)0 1167 y(application)29 b(program)i(\(with)f(READONL)-8 b(Y)31 b(access\).)44 b(In)30 b(this)g(case)i(the)f(data)g(t)m(yp)s(e)g (and)g(dimensions)d(of)j(the)0 1280 y(image)c(m)m(ust)g(b)s(e)f(sp)s (eci\014ed)f(in)h(square)h(brac)m(k)m(ets)h(follo)m(wing)d(the)i (\014lename)f(\(e.g.)41 b(ra)m(w\014le.dat[ib512,512]\).)h(The)0 1393 y(\014rst)30 b(c)m(haracter)i(\(case)f(insensitiv)m(e\))e (de\014nes)h(the)g(datat)m(yp)s(e)h(of)g(the)g(arra)m(y:)239 1671 y Fe(b)429 b(8-bit)46 b(unsigned)g(byte)239 1784 y(i)381 b(16-bit)46 b(signed)g(integer)239 1897 y(u)381 b(16-bit)46 b(unsigned)g(integer)239 2010 y(j)381 b(32-bit)46 b(signed)g(integer)239 2123 y(r)h(or)g(f)143 b(32-bit)46 b(floating)g(point)239 2235 y(d)381 b(64-bit)46 b(floating)g(point)0 2514 y Fi(An)40 b(optional)f(second)h(c)m(haracter)i(sp)s(eci\014es)d (the)i(b)m(yte)f(order)g(of)g(the)h(arra)m(y)g(v)-5 b(alues:)59 b(b)40 b(or)g(B)h(indicates)e(big)0 2626 y(endian)g(\(as)i(in)e(FITS)g (\014les)h(and)g(the)g(nativ)m(e)h(format)f(of)h(SUN)f(UNIX)h(w)m (orkstations)f(and)g(Mac)i(PCs\))e(and)0 2739 y(l)g(or)h(L)g(indicates) e(little)h(endian)g(\(nativ)m(e)h(format)h(of)f(DEC)f(OSF)h(w)m (orkstations)g(and)f(IBM)i(PCs\).)72 b(If)40 b(this)0 2852 y(c)m(haracter)32 b(is)d(omitted)i(then)f(the)g(arra)m(y)h(is)f (assumed)f(to)i(ha)m(v)m(e)h(the)f(nativ)m(e)f(b)m(yte)h(order)f(of)h (the)f(lo)s(cal)g(mac)m(hine.)0 2965 y(These)f(datat)m(yp)s(e)h(c)m (haracters)h(are)e(then)g(follo)m(w)m(ed)g(b)m(y)g(a)h(series)e(of)h (one)h(or)f(more)g(in)m(teger)h(v)-5 b(alues)28 b(separated)i(b)m(y)0 3078 y(commas)h(whic)m(h)f(de\014ne)f(the)i(size)g(of)f(eac)m(h)i (dimension)c(of)j(the)g(ra)m(w)f(arra)m(y)-8 b(.)43 b(Arra)m(ys)30 b(with)g(up)f(to)j(5)f(dimensions)0 3191 y(are)f(curren)m(tly)f(supp)s (orted.)38 b(Finally)-8 b(,)29 b(a)h(b)m(yte)g(o\013set)g(to)h(the)e(p) s(osition)f(of)i(the)g(\014rst)e(pixel)g(in)h(the)g(data)i(\014le)d(ma) m(y)0 3304 y(b)s(e)e(sp)s(eci\014ed)f(b)m(y)i(separating)g(it)f(with)g (a)h(':')39 b(from)27 b(the)g(last)f(dimension)f(v)-5 b(alue.)39 b(If)26 b(omitted,)i(it)e(is)g(assumed)g(that)0 3417 y(the)35 b(o\013set)h(=)f(0.)54 b(This)34 b(parameter)h(ma)m(y)h (b)s(e)e(used)g(to)i(skip)d(o)m(v)m(er)j(an)m(y)g(header)e(information) g(in)f(the)i(\014le)f(that)0 3530 y(precedes)c(the)h(binary)e(data.)41 b(F)-8 b(urther)30 b(examples:)95 3808 y Fe(raw.dat[b10000])521 b(1-dimensional)45 b(10000)h(pixel)g(byte)h(array)95 3921 y(raw.dat[rb400,400,12])233 b(3-dimensional)45 b(floating)g(point) h(big-endian)f(array)95 4034 y(img.fits[ib512,512:2880])89 b(reads)47 b(the)g(512)g(x)g(512)g(short)f(integer)g(array)g(in)1336 4147 y(a)i(FITS)e(file,)h(skipping)e(over)i(the)g(2880)g(byte)f(header) 0 4425 y Fi(One)25 b(sp)s(ecial)e(case)j(of)f(input)e(\014le)h(is)g (where)h(the)g(\014lename)f(=)h(`-')h(\(a)f(dash)g(or)g(min)m(us)e (sign\))h(or)h('stdin')f(or)h('stdout',)0 4538 y(whic)m(h)c (signi\014es)g(that)j(the)f(input)d(\014le)i(is)g(to)i(b)s(e)e(read)g (from)h(the)g(stdin)e(stream,)k(or)e(written)e(to)j(the)f(stdout)g (stream)0 4650 y(if)33 b(a)h(new)g(output)f(\014le)g(is)g(b)s(eing)g (created.)52 b(In)33 b(the)h(case)h(of)f(reading)g(from)f(stdin,)g (CFITSIO)g(\014rst)g(copies)h(the)0 4763 y(whole)g(stream)i(in)m(to)f (a)g(temp)s(orary)g(FITS)f(\014le)h(\(in)f(memory)h(or)g(on)g(disk\),)g (and)g(subsequen)m(t)f(reading)g(of)i(the)0 4876 y(FITS)c(\014le)g(o)s (ccurs)h(in)e(this)h(cop)m(y)-8 b(.)49 b(When)33 b(writing)e(to)i (stdout,)h(CFITSIO)d(\014rst)h(constructs)h(the)g(whole)f(\014le)g(in)0 4989 y(memory)i(\(since)h(random)e(access)j(is)d(required\),)i(then)f (\015ushes)f(it)h(out)h(to)g(the)f(stdout)h(stream)g(when)e(the)i (\014le)0 5102 y(is)29 b(closed.)41 b(In)29 b(addition,)g(if)g(the)h (output)g(\014lename)f(=)h('-.gz')i(or)e('stdout.gz')h(then)f(it)g (will)d(b)s(e)j(gzip)f(compressed)0 5215 y(b)s(efore)h(b)s(eing)f (written)g(to)i(stdout.)0 5375 y(This)24 b(abilit)m(y)h(to)h(read)g (and)f(write)g(on)h(the)g(stdin)f(and)g(stdout)h(steams)g(allo)m(ws)g (FITS)f(\014les)g(to)h(b)s(e)g(pip)s(ed)d(b)s(et)m(w)m(een)0 5488 y(tasks)42 b(in)e(memory)h(rather)g(than)h(ha)m(ving)f(to)h (create)h(temp)s(orary)e(in)m(termediate)g(FITS)f(\014les)h(on)g(disk.) 72 b(F)-8 b(or)0 5601 y(example)27 b(if)e(task1)j(creates)h(an)e (output)f(FITS)g(\014le,)h(and)g(task2)g(reads)g(an)g(input)e(FITS)h (\014le,)h(the)g(FITS)f(\014le)g(ma)m(y)0 5714 y(b)s(e)k(pip)s(ed)e(b)s (et)m(w)m(een)j(the)f(2)h(tasks)g(b)m(y)f(sp)s(ecifying)p eop %%Page: 23 29 23 28 bop 0 299 a Fg(4.4.)72 b(OUTPUT)30 b(FILE)g(NAME)h(WHEN)g (OPENING)f(AN)h(EXISTING)e(FILE)967 b Fi(23)143 555 y Fe(task1)47 b(-)g(|)g(task2)g(-)0 793 y Fi(where)30 b(the)h(v)m (ertical)g(bar)g(is)e(the)i(Unix)f(piping)e(sym)m(b)s(ol.)41 b(This)29 b(assumes)h(that)i(the)f(2)g(tasks)g(read)g(the)g(name)g(of)0 906 y(the)g(FITS)e(\014le)h(o\013)g(of)h(the)g(command)f(line.)0 1236 y Fd(4.4)135 b(Output)45 b(File)g(Name)h(when)f(Op)t(ening)g(an)g (Existing)h(File)0 1486 y Fi(An)36 b(optional)g(output)g(\014lename)g (ma)m(y)i(b)s(e)e(sp)s(eci\014ed)f(in)g(paren)m(theses)i(immediately)e (follo)m(wing)g(the)i(base)g(\014le)0 1599 y(name)28 b(to)h(b)s(e)f(op)s(ened.)39 b(This)27 b(is)g(mainly)f(useful)h(in)g (those)h(cases)i(where)d(CFITSIO)g(creates)j(a)e(temp)s(orary)g(cop)m (y)0 1712 y(of)i(the)f(input)f(FITS)g(\014le)h(b)s(efore)g(it)g(is)f (op)s(ened)h(and)f(passed)h(to)h(the)g(application)e(program.)40 b(This)27 b(happ)s(ens)h(b)m(y)0 1825 y(default)h(when)h(op)s(ening)f (a)h(net)m(w)m(ork)h(FTP)g(or)f(HTTP-t)m(yp)s(e)g(\014le,)g(when)f (reading)g(a)i(compressed)f(FITS)g(\014le)f(on)0 1938 y(a)36 b(lo)s(cal)f(disk,)h(when)f(reading)g(from)h(the)g(stdin)e (stream,)k(or)d(when)g(a)i(column)d(\014lter,)j(ro)m(w)f(\014lter,)g (or)g(binning)0 2051 y(sp)s(eci\014er)28 b(is)g(included)f(as)j(part)f (of)g(the)h(input)e(\014le)g(sp)s(eci\014cation.)39 b(By)30 b(default)f(this)f(temp)s(orary)h(\014le)f(is)h(created)0 2164 y(in)g(memory)-8 b(.)41 b(If)29 b(there)h(is)f(not)h(enough)g (memory)g(to)h(create)g(the)g(\014le)e(cop)m(y)-8 b(,)31 b(then)f(CFITSIO)e(will)f(exit)j(with)f(an)0 2277 y(error.)45 b(In)32 b(these)g(cases)h(one)g(can)f(force)h(a)f(p)s(ermanen)m(t)g (\014le)f(to)i(b)s(e)e(created)i(on)f(disk,)f(instead)h(of)g(a)g(temp)s (orary)0 2390 y(\014le)37 b(in)f(memory)-8 b(,)40 b(b)m(y)d(supplying)d (the)k(name)g(in)e(paren)m(theses)i(immediately)e(follo)m(wing)g(the)h (base)h(\014le)f(name.)0 2503 y(The)30 b(output)g(\014lename)f(can)i (include)d(the)j(')10 b(!')41 b(clobb)s(er)29 b(\015ag.)0 2663 y(Th)m(us,)48 b(if)c(the)h(input)e(\014lename)h(to)h(CFITSIO)f (is:)69 b Fe(file1.fits.gz\(file2.fit)o(s\))39 b Fi(then)44 b(CFITSIO)g(will)0 2776 y(uncompress)39 b(`\014le1.\014ts.gz')i(in)m (to)f(the)g(lo)s(cal)f(disk)f(\014le)h(`\014le2.\014ts')h(b)s(efore)g (op)s(ening)e(it.)69 b(CFITSIO)38 b(do)s(es)i(not)0 2889 y(automatically)30 b(delete)h(the)f(output)g(\014le,)g(so)h(it)f(will)d (still)i(exist)h(after)h(the)f(application)f(program)h(exits.)0 3049 y(In)35 b(some)i(cases,)h(sev)m(eral)e(di\013eren)m(t)g(temp)s (orary)f(FITS)h(\014les)f(will)e(b)s(e)i(created)i(in)e(sequence,)j (for)e(instance,)h(if)0 3162 y(one)g(op)s(ens)g(a)g(remote)h(\014le)e (using)g(FTP)-8 b(,)37 b(then)g(\014lters)f(ro)m(ws)h(in)f(a)i(binary)d (table)i(extension,)i(then)d(create)j(an)0 3275 y(image)e(b)m(y)g (binning)d(a)j(pair)f(of)h(columns.)59 b(In)36 b(this)g(case,)k(the)d (remote)h(\014le)e(will)e(b)s(e)i(copied)g(to)i(a)f(temp)s(orary)0 3388 y(lo)s(cal)h(\014le,)i(then)e(a)h(second)f(temp)s(orary)h(\014le)e (will)f(b)s(e)i(created)i(con)m(taining)e(the)g(\014ltered)g(ro)m(ws)g (of)h(the)g(table,)0 3500 y(and)c(\014nally)e(a)j(third)d(temp)s(orary) i(\014le)g(con)m(taining)f(the)i(binned)d(image)i(will)e(b)s(e)i (created.)57 b(In)34 b(cases)i(lik)m(e)f(this)0 3613 y(where)28 b(m)m(ultiple)e(\014les)h(are)i(created,)h(the)e(out\014le)g (sp)s(eci\014er)f(will)e(b)s(e)j(in)m(terpreted)g(the)g(name)g(of)h (the)f(\014nal)f(\014le)h(as)0 3726 y(describ)s(ed)g(b)s(elo)m(w,)i(in) f(descending)g(priorit)m(y:)136 3964 y Fc(\017)46 b Fi(as)29 b(the)g(name)g(of)g(the)g(\014nal)e(image)i(\014le)f(if)f(an)i(image)g (within)d(a)j(single)e(binary)g(table)i(cell)f(is)f(op)s(ened)h(or)h (if)227 4077 y(an)i(image)f(is)g(created)h(b)m(y)f(binning)e(a)i(table) h(column.)136 4257 y Fc(\017)46 b Fi(as)33 b(the)f(name)h(of)f(the)h (\014le)e(con)m(taining)h(the)g(\014ltered)f(table)i(if)e(a)i(column)e (\014lter)g(and/or)h(a)h(ro)m(w)f(\014lter)g(are)227 4370 y(sp)s(eci\014ed.)136 4551 y Fc(\017)46 b Fi(as)31 b(the)f(name)h(of)f(the)h(lo)s(cal)f(cop)m(y)h(of)f(the)h(remote)g(FTP) f(or)h(HTTP)e(\014le.)136 4731 y Fc(\017)46 b Fi(as)31 b(the)g(name)g(of)g(the)f(uncompressed)g(v)m(ersion)g(of)h(the)f(FITS)g (\014le,)g(if)g(a)h(compressed)f(FITS)g(\014le)g(on)h(lo)s(cal)227 4844 y(disk)e(has)h(b)s(een)g(op)s(ened.)136 5024 y Fc(\017)46 b Fi(otherwise,)30 b(the)h(output)f(\014lename)f(is)h(ignored.)0 5262 y(The)f(output)f(\014le)g(sp)s(eci\014er)g(is)g(useful)f(when)h (reading)g(FTP)h(or)g(HTTP-t)m(yp)s(e)g(FITS)f(\014les)g(since)g(it)h (can)g(b)s(e)g(used)0 5375 y(to)34 b(create)i(a)e(lo)s(cal)f(disk)f (cop)m(y)j(of)f(the)g(\014le)e(that)j(can)f(b)s(e)f(reused)g(in)f(the)i (future.)50 b(If)33 b(the)h(output)g(\014le)e(name)i(=)0 5488 y(`*')i(then)f(a)g(lo)s(cal)f(\014le)g(with)g(the)h(same)g(name)g (as)g(the)h(net)m(w)m(ork)f(\014le)f(will)f(b)s(e)h(created.)56 b(Note)36 b(that)f(CFITSIO)0 5601 y(will)27 b(b)s(eha)m(v)m(e)j (di\013eren)m(tly)f(dep)s(ending)e(on)j(whether)f(the)h(remote)g (\014le)f(is)g(compressed)g(or)h(not)g(as)g(sho)m(wn)f(b)m(y)h(the)0 5714 y(follo)m(wing)f(examples:)p eop %%Page: 24 30 24 29 bop 0 299 a Fi(24)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)136 555 y Fc(\017)46 b Fi(`ftp://remote.mac)m(hine/tmp/m)m (y\014le.\014ts.gz\(*\)')i(-)43 b(the)g(remote)h(compressed)f(\014le)f (is)g(copied)h(to)h(the)227 668 y(lo)s(cal)24 b(compressed)g(\014le)f (`m)m(y\014le.\014ts.gz',)k(whic)m(h)c(is)g(then)i(uncompressed)e(in)g (lo)s(cal)g(memory)h(b)s(efore)g(b)s(eing)227 781 y(op)s(ened)30 b(and)g(passed)g(to)h(the)f(application)f(program.)136 979 y Fc(\017)46 b Fi(`ftp://remote.mac)m(hine/tmp/m)m (y\014le.\014ts.gz\(m)m(y\014le.\014ts\)')40 b(-)d(the)g(remote)g (compressed)f(\014le)g(is)f(copied)227 1092 y(and)i(uncompressed)g(in)m (to)g(the)h(lo)s(cal)f(\014le)g(`m)m(y\014le.\014ts'.)63 b(This)35 b(example)j(requires)e(less)h(lo)s(cal)g(memory)227 1205 y(than)30 b(the)h(previous)e(example)h(since)g(the)g(\014le)g(is)f (uncompressed)g(on)h(disk)f(instead)h(of)g(in)g(memory)-8 b(.)136 1403 y Fc(\017)46 b Fi(`ftp://remote.mac)m(hine/tmp/m)m (y\014le.\014ts\(m)m(y\014le.\014ts.gz\)')25 b(-)c(this)f(will)f (usually)g(pro)s(duce)h(an)h(error)g(since)227 1516 y(CFITSIO)29 b(itself)g(cannot)i(compress)f(\014les.)0 1759 y(The)36 b(exact)i(b)s(eha)m(vior)d(of)i(CFITSIO)e(in)g(the)i(latter)f(case)i (dep)s(ends)c(on)j(the)f(t)m(yp)s(e)h(of)g(ftp)f(serv)m(er)g(running)e (on)0 1872 y(the)d(remote)g(mac)m(hine)f(and)g(ho)m(w)g(it)g(is)f (con\014gured.)40 b(In)30 b(some)h(cases,)g(if)e(the)i(\014le)e(`m)m (y\014le.\014ts.gz')j(exists)e(on)g(the)0 1985 y(remote)38 b(mac)m(hine,)g(then)f(the)g(serv)m(er)g(will)e(cop)m(y)i(it)g(to)g (the)h(lo)s(cal)e(mac)m(hine.)60 b(In)36 b(other)h(cases)h(the)f(ftp)g (serv)m(er)0 2098 y(will)c(automatically)j(create)h(and)f(transmit)f(a) h(compressed)g(v)m(ersion)f(of)h(the)g(\014le)f(if)g(only)g(the)h (uncompressed)0 2211 y(v)m(ersion)26 b(exists.)40 b(This)25 b(can)i(get)h(rather)f(confusing,)g(so)g(users)f(should)f(use)i(a)g (certain)g(amoun)m(t)h(of)f(caution)g(when)0 2324 y(using)33 b(the)i(output)f(\014le)g(sp)s(eci\014er)f(with)h(FTP)g(or)h(HTTP)f (\014le)g(t)m(yp)s(es,)i(to)f(mak)m(e)h(sure)e(they)h(get)h(the)f(b)s (eha)m(vior)0 2437 y(that)c(they)g(exp)s(ect.)0 2783 y Fd(4.5)135 b(T)-11 b(emplate)46 b(File)g(Name)f(when)g(Creating)h(a)g (New)f(File)0 3035 y Fi(When)38 b(a)h(new)f(FITS)g(\014le)g(is)g (created)h(with)f(a)g(call)g(to)i(\014ts)p 2101 3035 28 4 v 32 w(create)p 2369 3035 V 35 w(\014le,)f(the)g(name)g(of)g(a)g (template)g(\014le)e(ma)m(y)0 3148 y(b)s(e)i(supplied)e(in)i(paren)m (theses)h(immediately)e(follo)m(wing)g(the)j(name)f(of)g(the)g(new)f (\014le)g(to)i(b)s(e)e(created.)71 b(This)0 3261 y(template)26 b(is)e(used)h(to)h(de\014ne)f(the)h(structure)f(of)h(one)f(or)h(more)g (HDUs)g(in)e(the)i(new)f(\014le.)38 b(The)25 b(template)h(\014le)e(ma)m (y)0 3374 y(b)s(e)32 b(another)h(FITS)f(\014le,)h(in)f(whic)m(h)f(case) j(the)f(newly)f(created)i(\014le)e(will)e(ha)m(v)m(e)k(exactly)g(the)f (same)g(k)m(eyw)m(ords)g(in)0 3487 y(eac)m(h)25 b(HDU)g(as)g(in)e(the)h (template)h(FITS)e(\014le,)i(but)e(all)h(the)g(data)h(units)d(will)g(b) s(e)i(\014lled)e(with)g(zeros.)40 b(The)24 b(template)0 3600 y(\014le)h(ma)m(y)i(also)f(b)s(e)f(an)h(ASCI)s(I)e(text)j(\014le,) f(where)g(eac)m(h)h(line)d(\(in)h(general\))i(describ)s(es)d(one)i (FITS)f(k)m(eyw)m(ord)i(record.)0 3713 y(The)j(format)h(of)f(the)h (ASCI)s(I)e(template)h(\014le)g(is)f(describ)s(ed)f(b)s(elo)m(w.)0 4059 y Fd(4.6)135 b(HDU)46 b(Lo)t(cation)f(Sp)t(eci\014cation)0 4312 y Fi(The)c(optional)f(HDU)j(lo)s(cation)e(sp)s(eci\014er)e (de\014nes)i(whic)m(h)f(HDU)i(\(Header-Data)i(Unit,)g(also)d(kno)m(wn)g (as)h(an)0 4425 y(`extension'\))35 b(within)c(the)k(FITS)e(\014le)g(to) i(initially)c(op)s(en.)51 b(It)34 b(m)m(ust)g(immediately)f(follo)m(w)g (the)h(base)h(\014le)e(name)0 4538 y(\(or)h(the)g(output)g(\014le)f (name)g(if)g(presen)m(t\).)52 b(If)33 b(it)g(is)g(not)h(sp)s(eci\014ed) f(then)g(the)h(\014rst)f(HDU)i(\(the)f(primary)e(arra)m(y\))0 4650 y(is)g(op)s(ened.)46 b(The)32 b(HDU)h(lo)s(cation)f(sp)s (eci\014er)f(is)h(required)f(if)g(the)i(colFilter,)f(ro)m(wFilter,)h (or)g(binSp)s(ec)d(sp)s(eci\014ers)0 4763 y(are)g(presen)m(t,)f(b)s (ecause)h(the)f(primary)e(arra)m(y)j(is)e(not)i(a)f(v)-5 b(alid)28 b(HDU)i(for)f(these)g(op)s(erations.)40 b(The)29 b(HDU)h(ma)m(y)g(b)s(e)0 4876 y(sp)s(eci\014ed)d(either)i(b)m(y)f (absolute)h(p)s(osition)e(n)m(um)m(b)s(er,)h(starting)h(with)e(0)j(for) e(the)h(primary)e(arra)m(y)-8 b(,)31 b(or)e(b)m(y)f(reference)0 4989 y(to)h(the)g(HDU)g(name,)g(and)f(optionally)-8 b(,)28 b(the)h(v)m(ersion)f(n)m(um)m(b)s(er)f(and)h(the)h(HDU)g(t)m(yp)s(e)g (of)f(the)h(desired)e(extension.)0 5102 y(The)32 b(lo)s(cation)f(of)h (an)g(image)h(within)c(a)k(single)d(cell)i(of)g(a)g(binary)f(table)h (ma)m(y)g(also)g(b)s(e)g(sp)s(eci\014ed,)f(as)h(describ)s(ed)0 5215 y(b)s(elo)m(w.)0 5375 y(The)26 b(absolute)g(p)s(osition)e(of)i (the)h(extension)f(is)f(sp)s(eci\014ed)f(either)i(b)m(y)g(enclosed)g (the)h(n)m(um)m(b)s(er)e(in)g(square)g(brac)m(k)m(ets)0 5488 y(\(e.g.,)k(`[1]')g(=)d(the)h(\014rst)f(extension)g(follo)m(wing)g (the)h(primary)d(arra)m(y\))k(or)f(b)m(y)f(preceded)h(the)g(n)m(um)m(b) s(er)e(with)h(a)h(plus)0 5601 y(sign)36 b(\(`+1'\).)63 b(T)-8 b(o)38 b(sp)s(ecify)e(the)h(HDU)h(b)m(y)g(name,)h(giv)m(e)f(the) f(name)h(of)f(the)h(desired)e(HDU)i(\(the)f(v)-5 b(alue)37 b(of)h(the)0 5714 y(EXTNAME)e(or)g(HDUNAME)h(k)m(eyw)m(ord\))g(and)f (optionally)e(the)i(extension)g(v)m(ersion)f(n)m(um)m(b)s(er)g(\(v)-5 b(alue)36 b(of)g(the)p eop %%Page: 25 31 25 30 bop 0 299 a Fg(4.7.)72 b(IMA)m(GE)31 b(SECTION)2835 b Fi(25)0 555 y(EXTVER)27 b(k)m(eyw)m(ord\))i(and)e(the)h(extension)g (t)m(yp)s(e)f(\(v)-5 b(alue)28 b(of)g(the)g(XTENSION)f(k)m(eyw)m(ord:) 40 b(IMA)m(GE,)29 b(ASCI)s(I)d(or)0 668 y(T)-8 b(ABLE,)36 b(or)f(BINT)-8 b(ABLE\),)36 b(separated)f(b)m(y)g(commas)h(and)e(all)g (enclosed)h(in)f(square)h(brac)m(k)m(ets.)56 b(If)34 b(the)h(v)-5 b(alue)0 781 y(of)34 b(EXTVER)f(and)f(XTENSION)h(are)h (not)f(sp)s(eci\014ed,)g(then)g(the)h(\014rst)e(extension)i(with)e(the) h(correct)i(v)-5 b(alue)33 b(of)0 894 y(EXTNAME)39 b(is)f(op)s(ened.)67 b(The)38 b(extension)h(name)g(and)f(t)m(yp)s(e)i(are)f(not)h(case)g (sensitiv)m(e,)h(and)d(the)h(extension)0 1007 y(t)m(yp)s(e)29 b(ma)m(y)g(b)s(e)f(abbreviated)g(to)h(a)g(single)e(letter)i(\(e.g.,)i (I)d(=)g(IMA)m(GE)i(extension)e(or)g(primary)f(arra)m(y)-8 b(,)30 b(A)f(or)f(T)g(=)0 1120 y(ASCI)s(I)d(table)h(extension,)h(and)f (B)h(=)f(binary)f(table)h(BINT)-8 b(ABLE)27 b(extension\).)40 b(If)26 b(the)g(HDU)h(lo)s(cation)g(sp)s(eci\014er)0 1233 y(is)i(equal)h(to)h(`[PRIMAR)-8 b(Y]')32 b(or)f(`[P]',)g(then)f (the)h(primary)d(arra)m(y)j(\(the)g(\014rst)f(HDU\))h(will)d(b)s(e)i (op)s(ened.)0 1393 y(FITS)k(images)h(are)g(most)h(commonly)e(stored)h (in)f(the)h(primary)e(arra)m(y)i(or)g(an)g(image)g(extension,)h(but)e (images)0 1506 y(can)d(also)g(b)s(e)f(stored)h(as)h(a)f(v)m(ector)h(in) e(a)h(single)f(cell)g(of)h(a)h(binary)d(table)i(\(i.e.)42 b(eac)m(h)32 b(ro)m(w)f(of)g(the)h(v)m(ector)g(column)0 1619 y(con)m(tains)c(a)h(di\013eren)m(t)e(image\).)41 b(Suc)m(h)27 b(an)h(image)h(can)f(b)s(e)g(op)s(ened)f(with)g(CFITSIO)f (b)m(y)i(sp)s(ecifying)e(the)i(desired)0 1732 y(column)j(name)h(and)f (the)h(ro)m(w)g(n)m(um)m(b)s(er)f(after)h(the)g(binary)e(table)i(HDU)h (sp)s(eci\014er)d(as)i(sho)m(wn)g(in)e(the)i(follo)m(wing)0 1844 y(examples.)70 b(The)40 b(column)f(name)i(is)e(separated)i(from)f (the)h(HDU)g(sp)s(eci\014er)e(b)m(y)h(a)h(semicolon)e(and)h(the)h(ro)m (w)0 1957 y(n)m(um)m(b)s(er)29 b(is)g(enclosed)h(in)e(paren)m(theses.) 41 b(In)30 b(this)f(case)i(CFITSIO)d(copies)i(the)g(image)h(from)e(the) i(table)f(cell)f(in)m(to)0 2070 y(a)j(temp)s(orary)e(primary)g(arra)m (y)h(b)s(efore)g(it)g(is)f(op)s(ened.)43 b(The)30 b(application)g (program)h(then)g(just)g(sees)g(the)h(image)0 2183 y(in)h(the)i (primary)d(arra)m(y)-8 b(,)37 b(without)c(an)m(y)i(extensions.)52 b(The)34 b(particular)e(ro)m(w)j(to)g(b)s(e)e(op)s(ened)h(ma)m(y)h(b)s (e)f(sp)s(eci\014ed)0 2296 y(either)27 b(b)m(y)g(giving)f(an)h (absolute)g(in)m(teger)h(ro)m(w)g(n)m(um)m(b)s(er)e(\(starting)h(with)f (1)i(for)f(the)g(\014rst)g(ro)m(w\),)i(or)e(b)m(y)g(sp)s(ecifying)0 2409 y(a)33 b(b)s(o)s(olean)e(expression)g(that)i(ev)-5 b(aluates)33 b(to)g(TR)m(UE)g(for)f(the)g(desired)f(ro)m(w.)47 b(The)32 b(\014rst)f(ro)m(w)i(that)g(satis\014es)f(the)0 2522 y(expression)27 b(will)e(b)s(e)j(used.)39 b(The)28 b(ro)m(w)g(selection)g(expression)f(has)h(the)g(same)g(syn)m(tax)h(as)f (describ)s(ed)e(in)h(the)h(Ro)m(w)0 2635 y(Filter)i(Sp)s(eci\014er)e (section,)j(b)s(elo)m(w.)0 2795 y(Examples:)143 3051 y Fe(myfile.fits[3])44 b(-)k(open)e(the)h(3rd)g(HDU)g(following)e(the)i (primary)f(array)143 3164 y(myfile.fits+3)92 b(-)48 b(same)e(as)h (above,)f(but)h(using)g(the)g(FTOOLS-style)d(notation)143 3277 y(myfile.fits[EVENTS])f(-)k(open)g(the)g(extension)e(that)i(has)g (EXTNAME)e(=)j('EVENTS')143 3390 y(myfile.fits[EVENTS,)43 b(2])95 b(-)47 b(same)g(as)g(above,)f(but)h(also)g(requires)e(EXTVER)h (=)i(2)143 3503 y(myfile.fits[events,2,b])42 b(-)47 b(same,)f(but)h (also)g(requires)f(XTENSION)f(=)j('BINTABLE')143 3616 y(myfile.fits[3;)c(images\(17\)])h(-)i(opens)g(the)g(image)f(in)h(row)g (17)g(of)g(the)g('images')1527 3728 y(column)f(in)i(the)e(3rd)h (extension)f(of)h(the)g(file.)143 3841 y(myfile.fits[3;)d (images\(exposure)g(>)j(100\)])g(-)g(as)g(above,)f(but)h(opens)g(the)f (image)907 3954 y(in)h(the)g(first)f(row)h(that)g(has)g(an)g ('exposure')e(column)h(value)907 4067 y(greater)g(than)g(100.)0 4400 y Fd(4.7)135 b(Image)46 b(Section)0 4650 y Fi(A)41 b(virtual)e(\014le)g(con)m(taining)h(a)h(rectangular)g(subsection)e(of) i(an)g(image)f(can)h(b)s(e)f(extracted)i(and)e(op)s(ened)g(b)m(y)0 4763 y(sp)s(ecifying)30 b(the)j(range)g(of)g(pixels)e(\(start:end\))i (along)g(eac)m(h)h(axis)e(to)h(b)s(e)f(extracted)i(from)e(the)h (original)d(image.)0 4876 y(One)g(can)h(also)g(sp)s(ecify)e(an)i (optional)f(pixel)f(incremen)m(t)h(\(start:end:step\))i(for)f(eac)m(h)h (axis)e(of)h(the)g(input)d(image.)0 4989 y(A)g(pixel)d(step)j(=)f(1)h (will)d(b)s(e)i(assumed)f(if)h(it)g(is)f(not)i(sp)s(eci\014ed.)38 b(If)27 b(the)h(start)g(pixel)e(is)g(larger)i(then)f(the)h(end)e (pixel,)0 5102 y(then)32 b(the)g(image)g(will)d(b)s(e)i(\015ipp)s(ed)e (\(pro)s(ducing)h(a)i(mirror)f(image\))h(along)g(that)g(dimension.)43 b(An)32 b(asterisk,)g('*',)0 5215 y(ma)m(y)39 b(b)s(e)e(used)h(to)h(sp) s(ecify)e(the)h(en)m(tire)g(range)h(of)f(an)h(axis,)h(and)d('-*')j (will)35 b(\015ip)i(the)h(en)m(tire)g(axis.)64 b(The)38 b(input)0 5328 y(image)30 b(can)g(b)s(e)f(in)f(the)i(primary)e(arra)m (y)-8 b(,)31 b(in)d(an)h(image)h(extension,)g(or)g(con)m(tained)f(in)g (a)h(v)m(ector)h(cell)e(of)h(a)g(binary)0 5441 y(table.)39 b(In)25 b(the)h(later)g(2)g(cases)h(the)f(extension)g(name)g(or)f(n)m (um)m(b)s(er)g(m)m(ust)h(b)s(e)f(sp)s(eci\014ed)f(b)s(efore)i(the)g (image)g(section)0 5554 y(sp)s(eci\014er.)0 5714 y(Examples:)p eop %%Page: 26 32 26 31 bop 0 299 a Fi(26)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)95 555 y Fe (myfile.fits[1:512:2,)43 b(2:512:2])i(-)95 b(open)47 b(a)h(256x256)d(pixel)i(image)668 668 y(consisting)e(of)i(the)g(odd)g (numbered)f(columns)g(\(1st)g(axis\))h(and)668 781 y(the)g(even)g (numbered)e(rows)i(\(2nd)g(axis\))f(of)h(the)g(image)f(in)i(the)668 894 y(primary)e(array)g(of)i(the)e(file.)95 1120 y(myfile.fits[*,)e (512:256])i(-)h(open)g(an)g(image)g(consisting)e(of)i(all)g(the)g (columns)668 1233 y(in)g(the)g(input)g(image,)f(but)h(only)f(rows)h (256)g(through)f(512.)668 1346 y(The)h(image)f(will)h(be)g(flipped)f (along)g(the)h(2nd)g(axis)g(since)668 1458 y(the)g(starting)f(pixel)g (is)h(greater)f(than)h(the)g(ending)f(pixel.)95 1684 y(myfile.fits[*:2,)e(512:256:2])h(-)i(same)g(as)g(above)f(but)h (keeping)f(only)668 1797 y(every)h(other)f(row)h(and)g(column)f(in)h (the)g(input)f(image.)95 2023 y(myfile.fits[-*,)e(*])j(-)h(copy)e(the)h (entire)f(image,)g(flipping)g(it)h(along)668 2136 y(the)g(first)f (axis.)95 2362 y(myfile.fits[3][1:256,1:256)o(])c(-)47 b(opens)g(a)g(subsection)e(of)i(the)g(image)g(that)668 2475 y(is)g(in)h(the)e(3rd)h(extension)f(of)h(the)g(file.)95 2700 y(myfile.fits[4;)d(images\(12\)][1:10,1:10])e(-)48 b(open)e(an)h(image)g(consisting)286 2813 y(of)h(the)e(first)h(10)g (pixels)f(in)h(both)g(dimensions.)e(The)i(original)286 2926 y(image)g(resides)f(in)h(the)g(12th)f(row)h(of)g(the)g('images')f (vector)286 3039 y(column)g(in)i(the)f(table)f(in)h(the)g(4th)g (extension)e(of)i(the)g(file.)0 3336 y Fi(When)23 b(CFITSIO)f(op)s(ens) h(an)g(image)g(section)h(it)f(\014rst)g(creates)h(a)g(temp)s(orary)f (\014le)g(con)m(taining)g(the)g(image)h(section)0 3449 y(plus)31 b(a)j(cop)m(y)g(of)g(an)m(y)g(other)f(HDUs)h(in)e(the)i (\014le.)49 b(This)31 b(temp)s(orary)i(\014le)g(is)f(then)h(op)s(ened)g (b)m(y)g(the)h(application)0 3562 y(program,)28 b(so)g(it)f(is)f(not)i (p)s(ossible)d(to)j(write)f(to)h(or)g(mo)s(dify)e(the)h(input)f(\014le) g(when)h(sp)s(ecifying)e(an)j(image)g(section.)0 3675 y(Note)39 b(that)f(CFITSIO)e(automatically)h(up)s(dates)g(the)g(w)m (orld)g(co)s(ordinate)g(system)h(k)m(eyw)m(ords)f(in)f(the)i(header)0 3788 y(of)33 b(the)h(image)f(section,)h(if)e(they)i(exist,)g(so)f(that) h(the)f(co)s(ordinate)g(asso)s(ciated)h(with)e(eac)m(h)i(pixel)d(in)h (the)i(image)0 3901 y(section)d(will)c(b)s(e)j(computed)g(correctly)-8 b(.)0 4279 y Fd(4.8)135 b(Column)45 b(and)g(Keyw)l(ord)h(Filtering)g (Sp)t(eci\014cation)0 4538 y Fi(The)27 b(optional)g(column/k)m(eyw)m (ord)h(\014ltering)e(sp)s(eci\014er)g(is)h(used)g(to)i(mo)s(dify)d(the) i(column)f(structure)g(and/or)h(the)0 4650 y(header)38 b(k)m(eyw)m(ords)h(in)e(the)i(HDU)g(that)h(w)m(as)f(selected)g(with)e (the)i(previous)e(HDU)i(lo)s(cation)f(sp)s(eci\014er.)64 b(This)0 4763 y(\014ltering)40 b(sp)s(eci\014er)g(m)m(ust)i(b)s(e)f (enclosed)h(in)e(square)i(brac)m(k)m(ets)h(and)e(can)h(b)s(e)f (distinguished)d(from)k(a)g(general)0 4876 y(ro)m(w)d(\014lter)f(sp)s (eci\014er)f(\(describ)s(ed)g(b)s(elo)m(w\))h(b)m(y)h(the)g(fact)h (that)f(it)f(b)s(egins)f(with)h(the)h(string)f('col)h(')g(and)f(is)g (not)0 4989 y(immediately)27 b(follo)m(w)m(ed)h(b)m(y)g(an)g(equals)g (sign.)39 b(The)28 b(original)e(\014le)h(is)h(not)g(c)m(hanged)h(b)m(y) f(this)g(\014ltering)e(op)s(eration,)0 5102 y(and)40 b(instead)g(the)h(mo)s(di\014cations)e(are)i(made)f(on)h(a)g(cop)m(y)g (of)g(the)g(input)e(FITS)h(\014le)f(\(usually)g(in)g(memory\),)0 5215 y(whic)m(h)32 b(also)h(con)m(tains)g(a)g(cop)m(y)h(of)f(all)f(the) i(other)f(HDUs)h(in)d(the)i(\014le.)48 b(This)32 b(temp)s(orary)g (\014le)g(is)g(passed)h(to)h(the)0 5328 y(application)c(program)i(and)f (will)e(p)s(ersist)h(only)h(un)m(til)f(the)i(\014le)f(is)g(closed)h(or) g(un)m(til)e(the)i(program)f(exits,)i(unless)0 5441 y(the)e(out\014le)e (sp)s(eci\014er)g(\(see)i(ab)s(o)m(v)m(e\))h(is)e(also)g(supplied.)0 5601 y(The)h(column/k)m(eyw)m(ord)g(\014lter)f(can)h(b)s(e)g(used)f(to) i(p)s(erform)e(the)i(follo)m(wing)d(op)s(erations.)43 b(More)32 b(than)f(one)g(op)s(er-)0 5714 y(ation)f(ma)m(y)h(b)s(e)f(sp) s(eci\014ed)f(b)m(y)h(separating)g(them)g(with)g(semi-colons.)p eop %%Page: 27 33 27 32 bop 0 299 a Fg(4.8.)72 b(COLUMN)30 b(AND)h(KEYW)m(ORD)g(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1120 b Fi(27)136 555 y Fc(\017)46 b Fi(Cop)m(y)36 b(only)f(a)h(sp)s(eci\014ed)f(list)f(of)i (columns)f(columns)f(to)j(the)f(\014ltered)f(input)f(\014le.)56 b(The)36 b(list)e(of)i(column)227 668 y(name)c(should)e(b)s(e)i (separated)g(b)m(y)g(semi-colons.)46 b(Wild)30 b(card)i(c)m(haracters)i (ma)m(y)e(b)s(e)g(used)f(in)g(the)h(column)227 781 y(names)37 b(to)h(matc)m(h)g(m)m(ultiple)d(columns.)60 b(If)37 b(the)g(expression) f(con)m(tains)i(b)s(oth)e(a)i(list)d(of)j(columns)e(to)i(b)s(e)227 894 y(included)f(and)h(columns)g(to)h(b)s(e)g(deleted,)i(then)d(all)g (the)h(columns)f(in)g(the)h(original)e(table)i(except)h(the)227 1007 y(explicitly)28 b(deleted)i(columns)f(will)e(app)s(ear)j(in)f(the) h(\014ltered)f(table)h(\(i.e.,)h(there)f(is)g(no)g(need)f(to)i (explicitly)227 1120 y(list)e(the)i(columns)e(to)i(b)s(e)f(included)d (if)j(an)m(y)g(columns)f(are)i(b)s(eing)e(deleted\).)136 1295 y Fc(\017)46 b Fi(Delete)31 b(a)e(column)f(or)h(k)m(eyw)m(ord)h(b) m(y)f(listing)e(the)i(name)g(preceded)g(b)m(y)g(a)g(min)m(us)f(sign)g (or)h(an)g(exclamation)227 1408 y(mark)c(\(!\),)h(e.g.,)i('-TIME')d (will)d(delete)j(the)f(TIME)h(column)e(if)g(it)i(exists,)g(otherwise)f (the)h(TIME)f(k)m(eyw)m(ord.)227 1520 y(An)35 b(error)f(is)g(returned)f (if)h(neither)f(a)j(column)d(nor)h(k)m(eyw)m(ord)h(with)f(this)f(name)i (exists.)53 b(Note)36 b(that)g(the)227 1633 y(exclamation)25 b(p)s(oin)m(t,)h(')10 b(!',)27 b(is)d(a)h(sp)s(ecial)f(UNIX)h(c)m (haracter,)j(so)d(if)f(it)h(is)f(used)g(on)h(the)g(command)g(line)e (rather)227 1746 y(than)33 b(en)m(tered)h(at)g(a)g(task)g(prompt,)f(it) g(m)m(ust)g(b)s(e)g(preceded)g(b)m(y)g(a)h(bac)m(kslash)f(to)h(force)g (the)f(UNIX)h(shell)227 1859 y(to)d(ignore)f(it.)136 2034 y Fc(\017)46 b Fi(Rename)29 b(an)g(existing)e(column)g(or)i(k)m (eyw)m(ord)g(with)e(the)i(syn)m(tax)g('NewName)h(==)e(OldName'.)39 b(An)28 b(error)227 2147 y(is)i(returned)f(if)g(neither)h(a)g(column)f (nor)h(k)m(eyw)m(ord)h(with)e(this)h(name)g(exists.)136 2322 y Fc(\017)46 b Fi(App)s(end)37 b(a)j(new)f(column)e(or)j(k)m(eyw)m (ord)f(to)h(the)f(table.)67 b(T)-8 b(o)40 b(create)g(a)g(column,)g(giv) m(e)g(the)f(new)g(name,)227 2435 y(optionally)34 b(follo)m(w)m(ed)h(b)m (y)g(the)g(datat)m(yp)s(e)h(in)e(paren)m(theses,)j(follo)m(w)m(ed)e(b)m (y)g(a)h(single)e(equals)g(sign)g(and)h(an)227 2548 y(expression)f(to)i (b)s(e)e(used)g(to)i(compute)f(the)g(v)-5 b(alue)34 b(\(e.g.,)k('new)m (col\(1J\))e(=)f(0')g(will)e(create)j(a)f(new)g(32-bit)227 2661 y(in)m(teger)j(column)e(called)h('new)m(col')g(\014lled)f(with)g (zeros\).)62 b(The)37 b(datat)m(yp)s(e)h(is)f(sp)s(eci\014ed)e(using)h (the)i(same)227 2774 y(syn)m(tax)28 b(that)h(is)d(allo)m(w)m(ed)i(for)f (the)h(v)-5 b(alue)27 b(of)h(the)g(FITS)f(TF)m(ORMn)g(k)m(eyw)m(ord)h (\(e.g.,)i('I',)f('J',)f('E',)g('D',)h(etc.)227 2886 y(for)37 b(binary)e(tables,)k(and)d('I8',)k(F12.3',)h('E20.12',)g(etc.) 62 b(for)37 b(ASCI)s(I)e(tables\).)61 b(If)37 b(the)g(datat)m(yp)s(e)h (is)e(not)227 2999 y(sp)s(eci\014ed)23 b(then)g(an)h(appropriate)g (datat)m(yp)s(e)h(will)c(b)s(e)j(c)m(hosen)g(dep)s(ending)e(on)i(the)g (form)g(of)g(the)g(expression)227 3112 y(\(ma)m(y)f(b)s(e)d(a)i(c)m (haracter)h(string,)g(logical,)f(bit,)h(long)e(in)m(teger,)j(or)d (double)f(column\).)37 b(An)21 b(appropriate)f(v)m(ector)227 3225 y(coun)m(t)31 b(\(in)f(the)g(case)i(of)e(binary)f(tables\))h(will) e(also)i(b)s(e)g(added)g(if)f(not)i(explicitly)d(sp)s(eci\014ed.)227 3369 y(When)e(creating)g(a)g(new)f(k)m(eyw)m(ord,)j(the)e(k)m(eyw)m (ord)g(name)g(m)m(ust)g(b)s(e)f(preceded)g(b)m(y)h(a)g(p)s(ound)e(sign) g('#',)k(and)227 3482 y(the)h(expression)e(m)m(ust)h(ev)-5 b(aluate)29 b(to)g(a)g(scalar)f(\(i.e.,)h(cannot)g(ha)m(v)m(e)h(a)f (column)e(name)h(in)f(the)i(expression\).)227 3595 y(The)j(commen)m(t)i (string)e(for)g(the)h(k)m(eyw)m(ord)h(ma)m(y)f(b)s(e)f(sp)s(eci\014ed)f (in)g(paren)m(theses)i(immediately)e(follo)m(wing)227 3708 y(the)e(k)m(eyw)m(ord)f(name)g(\(instead)g(of)g(supplying)d(a)j (datat)m(yp)s(e)h(as)g(in)d(the)j(case)g(of)f(creating)g(a)h(new)f (column\).)136 3883 y Fc(\017)46 b Fi(Recompute)f(\(o)m(v)m(erwrite\))h (the)e(v)-5 b(alues)43 b(in)g(an)h(existing)g(column)f(or)h(k)m(eyw)m (ord)g(b)m(y)g(giving)g(the)g(name)227 3996 y(follo)m(w)m(ed)30 b(b)m(y)h(an)f(equals)g(sign)f(and)h(an)g(arithmetic)g(expression.)0 4217 y(The)23 b(expression)f(that)j(is)d(used)h(when)g(app)s(ending)e (or)i(recomputing)g(columns)f(or)i(k)m(eyw)m(ords)g(can)g(b)s(e)f (arbitrarily)0 4330 y(complex)35 b(and)h(ma)m(y)g(b)s(e)f(a)h(function) f(of)h(other)g(header)g(k)m(eyw)m(ord)g(v)-5 b(alues)35 b(and)g(other)h(columns)f(\(in)g(the)h(same)0 4443 y(ro)m(w\).)63 b(The)37 b(full)e(syn)m(tax)k(and)e(a)m(v)-5 b(ailable)37 b(functions)f(for)h(the)h(expression)e(are)i(describ)s(ed)e(b)s(elo)m (w)h(in)f(the)i(ro)m(w)0 4556 y(\014lter)29 b(sp)s(eci\014cation)h (section.)0 4716 y(If)d(the)h(expression)f(con)m(tains)g(b)s(oth)g(a)h (list)f(of)h(columns)e(to)i(b)s(e)g(included)c(and)k(columns)e(to)i(b)s (e)f(deleted,)i(then)e(all)0 4829 y(the)34 b(columns)f(in)g(the)h (original)e(table)i(except)h(the)f(explicitly)e(deleted)i(columns)e (will)g(app)s(ear)h(in)g(the)h(\014ltered)0 4942 y(table.)0 5102 y(F)-8 b(or)30 b(complex)g(or)f(commonly)g(used)g(op)s(erations,)h (one)f(can)h(also)g(place)g(the)f(op)s(erations)g(in)m(to)h(an)f (external)h(text)0 5215 y(\014le)g(and)g(imp)s(ort)f(it)h(in)m(to)h (the)g(column)f(\014lter)f(using)h(the)h(syn)m(tax)g('[col)g (@\014lename.txt]'.)42 b(The)31 b(op)s(erations)f(can)0 5328 y(extend)c(o)m(v)m(er)i(m)m(ultiple)c(lines)h(of)h(the)h(\014le,)g (but)e(m)m(ultiple)f(op)s(erations)i(m)m(ust)g(still)f(b)s(e)g (separated)i(b)m(y)g(semicolons.)0 5441 y(An)m(y)h(lines)f(in)g(the)h (external)h(text)g(\014le)e(that)i(b)s(egin)e(with)g(2)i(slash)e(c)m (haracters)j(\('//'\))g(will)c(b)s(e)h(ignored)h(and)f(ma)m(y)0 5554 y(b)s(e)j(used)f(to)i(add)f(commen)m(ts)h(in)m(to)g(the)f(\014le.) 0 5714 y(Examples:)p eop %%Page: 28 34 28 33 bop 0 299 a Fi(28)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)143 555 y Fe([col)47 b(Time;rate])713 b(-)47 b(only)g(the)g(Time)g(and)g(rate)f (columns)g(will)1670 668 y(appear)h(in)g(the)g(filtered)e(input)i (file.)143 894 y([col)g(Time;*raw])713 b(-)47 b(include)f(the)h(Time)g (column)f(and)h(any)g(other)1670 1007 y(columns)f(whose)h(name)f(ends)h (with)g('raw'.)143 1233 y([col)g(-TIME;)f(Good)h(==)g(STATUS])141 b(-)47 b(deletes)f(the)h(TIME)g(column)f(and)1670 1346 y(renames)g(the)h(status)f(column)g(to)i('Good')143 1571 y([col)f(PI=PHA)f(*)h(1.1)g(+)h(0.2])285 b(-)47 b(creates)f(new)h(PI)g (column)f(from)h(PHA)g(values)143 1797 y([col)g(rate)f(=)i (rate/exposure])139 b(-)48 b(recomputes)d(the)i(rate)f(column)g(by)i (dividing)1670 1910 y(it)g(by)f(the)g(EXPOSURE)e(keyword)h(value.)0 2252 y Fd(4.9)135 b(Ro)l(w)46 b(Filtering)g(Sp)t(eci\014cation)0 2503 y Fi(When)29 b(en)m(tering)g(the)g(name)g(of)g(a)g(FITS)f(table)h (that)h(is)d(to)j(b)s(e)e(op)s(ened)h(b)m(y)f(a)i(program,)f(an)g (optional)f(ro)m(w)h(\014lter)0 2616 y(ma)m(y)i(b)s(e)g(sp)s(eci\014ed) e(to)i(select)g(a)h(subset)e(of)h(the)g(ro)m(ws)f(in)g(the)h(table.)42 b(A)31 b(temp)s(orary)f(new)g(FITS)g(\014le)g(is)g(created)0 2729 y(on)25 b(the)h(\015y)e(whic)m(h)g(con)m(tains)h(only)g(those)h (ro)m(ws)f(for)g(whic)m(h)f(the)h(ro)m(w)g(\014lter)g(expression)f(ev) -5 b(aluates)25 b(to)h(true.)39 b(\(The)0 2842 y(primary)25 b(arra)m(y)i(and)f(an)m(y)g(other)h(extensions)f(in)f(the)i(input)e (\014le)g(are)i(also)g(copied)f(to)h(the)f(temp)s(orary)h(\014le\).)38 b(The)0 2955 y(original)27 b(FITS)i(\014le)f(is)g(closed)h(and)f(the)i (new)e(virtual)g(\014le)g(is)g(op)s(ened)g(b)m(y)h(the)h(application)d (program.)40 b(The)29 b(ro)m(w)0 3068 y(\014lter)36 b(expression)g(is)h (enclosed)g(in)f(square)h(brac)m(k)m(ets)i(follo)m(wing)d(the)h(\014le) g(name)g(and)g(extension)g(name)g(\(e.g.,)0 3181 y('\014le.\014ts[ev)m (en)m(ts][GRADE==50]')28 b(selects)d(only)f(those)i(ro)m(ws)f(where)f (the)h(GRADE)h(column)e(v)-5 b(alue)24 b(equals)g(50\).)0 3294 y(When)33 b(dealing)f(with)g(tables)g(where)h(eac)m(h)h(ro)m(w)f (has)g(an)g(asso)s(ciated)h(time)f(and/or)g(2D)g(spatial)g(p)s (osition,)f(the)0 3407 y(ro)m(w)g(\014lter)g(expression)e(can)j(also)f (b)s(e)g(used)f(to)i(select)g(ro)m(ws)f(based)g(on)g(the)g(times)g(in)f (a)h(Go)s(o)s(d)g(Time)f(In)m(terv)-5 b(als)0 3520 y(\(GTI\))31 b(extension,)f(or)g(on)h(spatial)e(p)s(osition)g(as)h(giv)m(en)h(in)e (a)h(SA)m(O-st)m(yle)h(region)f(\014le.)0 3818 y Fb(4.9.1)112 b(General)38 b(Syn)m(tax)0 4039 y Fi(The)32 b(ro)m(w)h(\014ltering)e (expression)h(can)h(b)s(e)f(an)h(arbitrarily)d(complex)i(series)g(of)h (op)s(erations)f(p)s(erformed)g(on)g(con-)0 4152 y(stan)m(ts,)39 b(k)m(eyw)m(ord)e(v)-5 b(alues,)37 b(and)f(column)f(data)j(tak)m(en)f (from)f(the)h(sp)s(eci\014ed)d(FITS)i(T)-8 b(ABLE)37 b(extension.)58 b(The)0 4264 y(expression)36 b(m)m(ust)i(ev)-5 b(aluate)38 b(to)h(a)f(b)s(o)s(olean)f(v)-5 b(alue)37 b(for)g(eac)m(h)i(ro)m(w)f(of)g(the)f(table,)j(where)d(a)h(v)-5 b(alue)38 b(of)f(F)-10 b(ALSE)0 4377 y(means)30 b(that)h(the)g(ro)m(w)f (will)e(b)s(e)i(excluded.)0 4538 y(F)-8 b(or)34 b(complex)f(or)h (commonly)e(used)h(\014lters,)g(one)h(can)g(place)f(the)h(expression)e (in)m(to)h(a)h(text)g(\014le)f(and)g(imp)s(ort)e(it)0 4650 y(in)m(to)37 b(the)f(ro)m(w)h(\014lter)f(using)f(the)i(syn)m(tax)g ('[@\014lename.txt]'.)60 b(The)36 b(expression)g(can)g(b)s(e)g (arbitrarily)e(complex)0 4763 y(and)27 b(extend)i(o)m(v)m(er)g(m)m (ultiple)d(lines)g(of)i(the)h(\014le.)39 b(An)m(y)28 b(lines)e(in)h(the)h(external)g(text)h(\014le)e(that)i(b)s(egin)e(with) g(2)h(slash)0 4876 y(c)m(haracters)k(\('//'\))g(will)c(b)s(e)i(ignored) f(and)h(ma)m(y)h(b)s(e)f(used)f(to)i(add)f(commen)m(ts)h(in)m(to)g(the) f(\014le.)0 5036 y(Keyw)m(ord)37 b(and)f(column)f(data)j(are)f (referenced)g(b)m(y)g(name.)60 b(An)m(y)37 b(string)e(of)i(c)m (haracters)i(not)e(surrounded)d(b)m(y)0 5149 y(quotes)41 b(\(ie,)i(a)e(constan)m(t)h(string\))e(or)g(follo)m(w)m(ed)g(b)m(y)h (an)f(op)s(en)g(paren)m(theses)h(\(ie,)i(a)e(function)e(name\))i(will)d (b)s(e)0 5262 y(initially)33 b(in)m(terpreted)i(as)i(a)g(column)e(name) h(and)g(its)g(con)m(ten)m(ts)i(for)e(the)h(curren)m(t)f(ro)m(w)g (inserted)f(in)m(to)i(the)f(ex-)0 5375 y(pression.)j(If)28 b(no)h(suc)m(h)g(column)f(exists,)h(a)h(k)m(eyw)m(ord)f(of)h(that)f (name)g(will)e(b)s(e)h(searc)m(hed)i(for)f(and)f(its)h(v)-5 b(alue)28 b(used,)0 5488 y(if)35 b(found.)55 b(T)-8 b(o)36 b(force)g(the)g(name)g(to)h(b)s(e)e(in)m(terpreted)g(as)h(a)g(k)m(eyw)m (ord)g(\(in)f(case)h(there)g(is)f(b)s(oth)g(a)h(column)f(and)0 5601 y(k)m(eyw)m(ord)41 b(with)d(the)j(same)f(name\),)j(precede)d(the)h (k)m(eyw)m(ord)f(name)g(with)f(a)i(single)d(p)s(ound)g(sign,)k('#',)h (as)d(in)0 5714 y('#NAXIS2'.)g(Due)27 b(to)g(the)f(generalities)g(of)g (FITS)g(column)f(and)h(k)m(eyw)m(ord)h(names,)g(if)e(the)i(column)e(or) h(k)m(eyw)m(ord)p eop %%Page: 29 35 29 34 bop 0 299 a Fg(4.9.)72 b(R)m(O)m(W)31 b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)2072 b Fi(29)0 555 y(name)34 b(con)m(tains)g(a)g(space)h(or)e(a)i(c)m(haracter)g(whic)m(h) e(migh)m(t)g(app)s(ear)g(as)i(an)e(arithmetic)g(term)h(then)g(inclose)f (the)0 668 y(name)d(in)f('$')j(c)m(haracters)g(as)e(in)f($MAX)j(PHA$)f (or)f(#$MAX-PHA$.)43 b(Names)31 b(are)f(case)i(insensitiv)m(e.)0 828 y(T)-8 b(o)32 b(access)g(a)g(table)f(en)m(try)h(in)e(a)i(ro)m(w)f (other)h(than)f(the)g(curren)m(t)g(one,)h(follo)m(w)f(the)g(column's)g (name)g(with)f(a)i(ro)m(w)0 941 y(o\013set)37 b(within)c(curly)h (braces.)57 b(F)-8 b(or)36 b(example,)h('PHA)p Fc(f)p Fi(-3)p Fc(g)p Fi(')h(will)33 b(ev)-5 b(aluate)37 b(to)f(the)g(v)-5 b(alue)35 b(of)h(column)e(PHA,)j(3)0 1054 y(ro)m(ws)28 b(ab)s(o)m(v)m(e)i(the)e(ro)m(w)h(curren)m(tly)e(b)s(eing)g(pro)s (cessed.)40 b(One)28 b(cannot)h(sp)s(ecify)e(an)h(absolute)g(ro)m(w)g (n)m(um)m(b)s(er,)g(only)g(a)0 1167 y(relativ)m(e)i(o\013set.)42 b(Ro)m(ws)31 b(that)g(fall)e(outside)h(the)g(table)g(will)e(b)s(e)i (treated)h(as)g(unde\014ned,)d(or)j(NULLs.)0 1327 y(Bo)s(olean)g(op)s (erators)g(can)g(b)s(e)f(used)f(in)h(the)g(expression)g(in)f(either)h (their)g(F)-8 b(ortran)31 b(or)f(C)h(forms.)40 b(The)30 b(follo)m(wing)0 1440 y(b)s(o)s(olean)f(op)s(erators)i(are)g(a)m(v)-5 b(ailable:)191 1666 y Fe("equal")428 b(.eq.)46 b(.EQ.)h(==)95 b("not)46 b(equal")476 b(.ne.)94 b(.NE.)h(!=)191 1779 y("less)46 b(than")238 b(.lt.)46 b(.LT.)h(<)143 b("less)46 b(than/equal")188 b(.le.)94 b(.LE.)h(<=)47 b(=<)191 1892 y("greater)e(than")95 b(.gt.)46 b(.GT.)h(>)143 b("greater)45 b(than/equal")g(.ge.)94 b(.GE.)h(>=)47 b(=>)191 2005 y("or")572 b(.or.)46 b(.OR.)h(||)95 b("and")762 b(.and.)46 b(.AND.)h(&&)191 2118 y("negation")236 b(.not.)46 b(.NOT.)h(!)95 b("approx.)45 b(equal\(1e-7\)")92 b(~)0 2344 y Fi(Note)32 b(that)g(the)f(exclamation)g(p)s(oin)m(t,)f(')10 b(!',)33 b(is)d(a)h(sp)s(ecial)e(UNIX)j(c)m(haracter,)h(so)e(if)f(it)g(is)g (used)g(on)h(the)g(command)0 2457 y(line)g(rather)h(than)h(en)m(tered)g (at)g(a)g(task)g(prompt,)g(it)f(m)m(ust)g(b)s(e)g(preceded)h(b)m(y)f(a) h(bac)m(kslash)f(to)i(force)f(the)g(UNIX)0 2570 y(shell)c(to)i(ignore)f (it.)0 2730 y(The)i(expression)f(ma)m(y)j(also)e(include)e(arithmetic)i (op)s(erators)h(and)f(functions.)46 b(T)-8 b(rigonometric)32 b(functions)f(use)0 2843 y(radians,)22 b(not)h(degrees.)38 b(The)22 b(follo)m(wing)e(arithmetic)h(op)s(erators)i(and)e(functions)f (can)j(b)s(e)e(used)g(in)g(the)h(expression)0 2956 y(\(function)37 b(names)g(are)h(case)g(insensitiv)m(e\).)61 b(A)37 b(n)m(ull)f(v)-5 b(alue)37 b(will)d(b)s(e)j(returned)g(in)f(case)i(of)g(illegal)e(op)s (erations)0 3069 y(suc)m(h)30 b(as)h(divide)d(b)m(y)i(zero,)i (sqrt\(negativ)m(e\))g(log\(negativ)m(e\),)g(log10\(negativ)m(e\),)i (arccos\(.gt.)43 b(1\),)32 b(arcsin\(.gt.)41 b(1\).)191 3295 y Fe("addition")522 b(+)477 b("subtraction")d(-)191 3408 y("multiplication")234 b(*)477 b("division")618 b(/)191 3521 y("negation")522 b(-)477 b("exponentiation")330 b(**)143 b(^)191 3634 y("absolute)45 b(value")237 b(abs\(x\))g ("cosine")714 b(cos\(x\))191 3747 y("sine")g(sin\(x\))237 b("tangent")666 b(tan\(x\))191 3860 y("arc)47 b(cosine")427 b(arccos\(x\))93 b("arc)47 b(sine")619 b(arcsin\(x\))191 3973 y("arc)47 b(tangent")379 b(arctan\(x\))93 b("arc)47 b(tangent")475 b(arctan2\(x,y\))191 4085 y("hyperbolic)45 b(cos")237 b(cosh\(x\))189 b("hyperbolic)45 b(sin")333 b(sinh\(x\))191 4198 y("hyperbolic)45 b(tan")237 b(tanh\(x\))189 b("round)46 b(to)h(nearest)f(int")h(round\(x\))191 4311 y("round)f(down)h(to)g(int")94 b(floor\(x\))141 b("round)46 b(up)h(to)h(int")285 b(ceil\(x\))191 4424 y("exponential")378 b(exp\(x\))237 b("square)46 b(root")476 b(sqrt\(x\))191 4537 y("natural)45 b(log")381 b(log\(x\))237 b("common)46 b(log")524 b(log10\(x\))191 4650 y("modulus")570 b(i)48 b(\045)f(j)286 b("random)46 b(#)h([0.0,1.0\)")141 b(random\(\))191 4763 y("minimum")570 b(min\(x,y\))141 b("maximum")666 b(max\(x,y\))191 4876 y("cumulative)45 b(sum")189 b(accum\(x\))141 b("sequential)45 b(difference")g(seqdiff\(x\))191 4989 y("if-then-else")330 b(b?x:y)0 5215 y Fi(An)31 b(alternate)h(syn)m(tax) g(for)f(the)g(min)f(and)h(max)g(functions)f(has)h(only)f(a)i(single)e (argumen)m(t)i(whic)m(h)e(should)f(b)s(e)i(a)0 5328 y(v)m(ector)g(v)-5 b(alue)29 b(\(see)h(b)s(elo)m(w\).)40 b(The)29 b(result)f(will)f(b)s(e) h(the)i(minim)m(um/maxim)m(um)c(elemen)m(t)j(con)m(tained)h(within)d (the)0 5441 y(v)m(ector.)0 5601 y(The)35 b(accum\(x\))i(function)e (forms)g(the)h(cum)m(ulativ)m(e)g(sum)f(of)h(x,)h(elemen)m(t)g(b)m(y)f (elemen)m(t.)57 b(V)-8 b(ector)38 b(columns)d(are)0 5714 y(supp)s(orted)i(simply)f(b)m(y)i(p)s(erforming)e(the)j(summation)f (pro)s(cess)g(through)f(all)h(the)h(v)-5 b(alues.)64 b(Null)37 b(v)-5 b(alues)38 b(are)p eop %%Page: 30 36 30 35 bop 0 299 a Fi(30)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(treated)30 b(as)f(0.)41 b(The)29 b(seqdi\013\(x\))g(function)e(forms)i(the)g (sequen)m(tial)g(di\013erence)f(of)i(x,)f(elemen)m(t)h(b)m(y)f(elemen)m (t.)40 b(The)0 668 y(\014rst)c(v)-5 b(alue)37 b(of)g(seqdi\013)f(is)g (the)h(\014rst)g(v)-5 b(alue)36 b(of)h(x.)61 b(A)37 b(single)f(n)m(ull) f(v)-5 b(alue)37 b(in)e(x)i(causes)h(a)f(pair)f(of)h(n)m(ulls)e(in)h (the)0 781 y(output.)55 b(The)35 b(seqdi\013)f(and)h(accum)g(functions) f(are)i(functional)d(in)m(v)m(erses,)k(i.e.,)g(seqdi\013\(accum\(x\)\)) f(==)f(x)g(as)0 894 y(long)30 b(as)h(no)f(n)m(ull)e(v)-5 b(alues)30 b(are)h(presen)m(t.)0 1054 y(The)38 b(follo)m(wing)f(t)m(yp) s(e)i(casting)g(op)s(erators)g(are)g(a)m(v)-5 b(ailable,)41 b(where)d(the)h(inclosing)e(paren)m(theses)i(are)g(required)0 1167 y(and)30 b(tak)m(en)h(from)f(the)h(C)f(language)g(usage.)42 b(Also,)30 b(the)h(in)m(teger)f(to)i(real)e(casts)h(v)-5 b(alues)29 b(to)j(double)d(precision:)764 1398 y Fe("real)46 b(to)h(integer")189 b(\(int\))46 b(x)239 b(\(INT\))46 b(x)764 1510 y("integer)f(to)i(real")190 b(\(float\))46 b(i)143 b(\(FLOAT\))45 b(i)0 1741 y Fi(In)30 b(addition,)e(sev)m(eral)j (constan)m(ts)h(are)f(built)d(in)h(for)h(use)g(in)f(n)m(umerical)g (expressions:)382 1972 y Fe(#pi)667 b(3.1415...)284 b(#e)620 b(2.7182...)382 2085 y(#deg)f(#pi/180)380 b(#row)524 b(current)46 b(row)h(number)382 2197 y(#null)428 b(undefined)45 b(value)142 b(#snull)428 b(undefined)45 b(string)0 2428 y Fi(A)40 b(string)e(constan)m(t)j(m)m(ust)e(b)s(e)g(enclosed)g(in)g (quotes)h(as)f(in)g('Crab'.)67 b(The)39 b("n)m(ull")g(constan)m(ts)h (are)g(useful)e(for)0 2541 y(conditionally)d(setting)j(table)g(v)-5 b(alues)37 b(to)h(a)g(NULL,)g(or)g(unde\014ned,)f(v)-5 b(alue)38 b(\(eg.,)j("col1==-99)e(?)62 b(#NULL)38 b(:)0 2654 y(col1"\).)0 2814 y(There)27 b(is)f(also)i(a)f(function)f(for)i (testing)f(if)f(t)m(w)m(o)j(v)-5 b(alues)27 b(are)h(close)f(to)i(eac)m (h)f(other,)h(i.e.,)f(if)e(they)i(are)g("near")g(eac)m(h)0 2927 y(other)c(to)h(within)c(a)j(user)g(sp)s(eci\014ed)e(tolerance.)39 b(The)24 b(argumen)m(ts,)h(v)-5 b(alue)p 2503 2927 28 4 v 33 w(1)24 b(and)f(v)-5 b(alue)p 2980 2927 V 32 w(2)25 b(can)f(b)s(e)f(in)m(teger)h(or)g(real)0 3040 y(and)32 b(represen)m(t)h(the)g(t)m(w)m(o)h(v)-5 b(alues)32 b(who's)g(pro)m (ximit)m(y)g(is)g(b)s(eing)f(tested)i(to)h(b)s(e)e(within)e(the)j(sp)s (eci\014ed)e(tolerance,)0 3153 y(also)f(an)h(in)m(teger)f(or)h(real:) 955 3383 y Fe(near\(value_1,)44 b(value_2,)h(tolerance\))0 3614 y Fi(When)24 b(a)i(NULL,)e(or)h(unde\014ned,)f(v)-5 b(alue)24 b(is)g(encoun)m(tered)h(in)f(the)g(FITS)g(table,)i(the)f (expression)f(will)e(ev)-5 b(aluate)25 b(to)0 3727 y(NULL)31 b(unless)e(the)i(unde\014ned)e(v)-5 b(alue)30 b(is)g(not)h(actually)f (required)f(for)i(ev)-5 b(aluation,)31 b(e.g.)43 b("TR)m(UE)31 b(.or.)43 b(NULL")0 3840 y(ev)-5 b(aluates)31 b(to)g(TR)m(UE.)g(The)f (follo)m(wing)e(t)m(w)m(o)k(functions)d(allo)m(w)h(some)h(NULL)f (detection)h(and)f(handling:)430 4070 y Fe("a)47 b(null)f(value?")667 b(ISNULL\(x\))430 4183 y("define)45 b(a)j(value)e(for)h(null")190 b(DEFNULL\(x,y\))0 4414 y Fi(The)36 b(former)h(returns)e(a)i(b)s(o)s (olean)f(v)-5 b(alue)36 b(of)h(TR)m(UE)g(if)f(the)h(argumen)m(t)g(x)g (is)f(NULL.)h(The)f(later)h("de\014nes")g(a)0 4527 y(v)-5 b(alue)34 b(to)h(b)s(e)e(substituted)g(for)h(NULL)g(v)-5 b(alues;)36 b(it)e(returns)f(the)h(v)-5 b(alue)34 b(of)g(x)g(if)f(x)i (is)e(not)h(NULL,)h(otherwise)e(it)0 4640 y(returns)c(the)i(v)-5 b(alue)30 b(of)g(y)-8 b(.)0 4926 y Fb(4.9.2)112 b(Bit)36 b(Masks)0 5145 y Fi(Bit)f(masks)g(can)h(b)s(e)f(used)f(to)i(select)g (out)f(ro)m(ws)h(from)e(bit)h(columns)f(\(TF)m(ORMn)h(=)g(#X\))h(in)e (FITS)g(\014les.)54 b(T)-8 b(o)0 5257 y(represen)m(t)30 b(the)h(mask,)g(binary)-8 b(,)29 b(o)s(ctal,)i(and)f(hex)g(formats)g (are)h(allo)m(w)m(ed:)811 5488 y Fe(binary:)142 b (b0110xx1010000101xxxx00)o(01)811 5601 y(octal:)190 b(o720x1)46 b(->)h(\(b111010000xxx001\))811 5714 y(hex:)286 b(h0FxD)94 b(->)47 b(\(b00001111xxxx1101\))p eop %%Page: 31 37 31 36 bop 0 299 a Fg(4.9.)72 b(R)m(O)m(W)31 b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)2072 b Fi(31)0 555 y(In)22 b(all)g(the)h(represen)m(tations,)i(an)d(x)h(or)g(X)g(is)f (allo)m(w)m(ed)h(in)e(the)i(mask)g(as)g(a)h(wild)c(card.)38 b(Note)25 b(that)e(the)g(x)g(represen)m(ts)0 668 y(a)k(di\013eren)m(t)g (n)m(um)m(b)s(er)f(of)h(wild)d(card)j(bits)f(in)g(eac)m(h)i(represen)m (tation.)40 b(All)25 b(represen)m(tations)i(are)h(case)g(insensitiv)m (e.)0 828 y(T)-8 b(o)28 b(construct)g(the)g(b)s(o)s(olean)e(expression) h(using)f(the)i(mask)f(as)h(the)g(b)s(o)s(olean)e(equal)h(op)s(erator)h (describ)s(ed)e(ab)s(o)m(v)m(e)0 941 y(on)34 b(a)h(bit)f(table)h (column.)52 b(F)-8 b(or)35 b(example,)h(if)d(y)m(ou)i(had)f(a)h(7)g (bit)f(column)f(named)h(\015ags)h(in)e(a)i(FITS)f(table)h(and)0 1054 y(w)m(an)m(ted)c(all)e(ro)m(ws)i(ha)m(ving)f(the)g(bit)g(pattern)g (0010011,)k(the)c(selection)h(expression)e(w)m(ould)g(b)s(e:)1336 1301 y Fe(flags)47 b(==)g(b0010011)191 1414 y(or)1336 1526 y(flags)g(.eq.)f(b10011)0 1773 y Fi(It)35 b(is)f(also)h(p)s (ossible)d(to)k(test)g(if)e(a)h(range)g(of)g(bits)f(is)g(less)g(than,)i (less)e(than)h(equal,)h(greater)g(than)e(and)h(greater)0 1886 y(than)30 b(equal)g(to)h(a)g(particular)e(b)s(o)s(olean)g(v)-5 b(alue:)1336 2132 y Fe(flags)47 b(<=)g(bxxx010xx)1336 2245 y(flags)g(.gt.)f(bxxx100xx)1336 2358 y(flags)h(.le.)f(b1xxxxxxx)0 2605 y Fi(Notice)31 b(the)g(use)f(of)h(the)f(x)g(bit)g(v)-5 b(alue)30 b(to)h(limit)d(the)i(range)h(of)g(bits)e(b)s(eing)g (compared.)0 2765 y(It)j(is)g(not)g(necessary)h(to)g(sp)s(ecify)e(the)i (leading)e(\(most)i(signi\014can)m(t\))f(zero)h(\(0\))g(bits)e(in)g (the)i(mask,)g(as)g(sho)m(wn)e(in)0 2878 y(the)g(second)f(expression)f (ab)s(o)m(v)m(e.)0 3038 y(Bit)43 b(wise)f(AND,)i(OR)e(and)g(NOT)h(op)s (erations)f(are)h(also)g(p)s(ossible)d(on)j(t)m(w)m(o)h(or)f(more)g (bit)f(\014elds)f(using)h(the)0 3151 y('&'\(AND\),)35 b(')p Fc(j)p Fi('\(OR\),)g(and)e(the)h(')10 b(!'\(NOT\))34 b(op)s(erators.)51 b(All)32 b(of)h(these)h(op)s(erators)g(result)e(in)h (a)h(bit)e(\014eld)g(whic)m(h)0 3264 y(can)f(then)f(b)s(e)f(used)h (with)f(the)i(equal)f(op)s(erator.)41 b(F)-8 b(or)31 b(example:)1241 3510 y Fe(\(!flags\))45 b(==)j(b1101100)1241 3623 y(\(flags)e(&)h(b1000001\))f(==)h(bx000001)0 3870 y Fi(Bit)34 b(\014elds)f(can)h(b)s(e)f(app)s(ended)g(as)h(w)m(ell)f (using)g(the)h('+')g(op)s(erator.)53 b(Strings)32 b(can)j(b)s(e)e (concatenated)j(this)d(w)m(a)m(y)-8 b(,)0 3983 y(to)s(o.)0 4271 y Fb(4.9.3)112 b(V)-9 b(ector)36 b(Columns)0 4490 y Fi(V)-8 b(ector)37 b(columns)d(can)i(also)f(b)s(e)g(used)f(in)g (building)e(the)j(expression.)55 b(No)36 b(sp)s(ecial)e(syn)m(tax)h(is) g(required)e(if)i(one)0 4603 y(w)m(an)m(ts)46 b(to)f(op)s(erate)h(on)f (all)f(elemen)m(ts)h(of)g(the)h(v)m(ector.)86 b(Simply)42 b(use)j(the)g(column)f(name)h(as)g(for)g(a)g(scalar)0 4716 y(column.)c(V)-8 b(ector)32 b(columns)e(can)h(b)s(e)f(freely)g(in) m(termixed)g(with)f(scalar)i(columns)e(or)i(constan)m(ts)h(in)e (virtually)e(all)0 4829 y(expressions.)39 b(The)29 b(result)f(will)e(b) s(e)j(of)g(the)g(same)h(dimension)c(as)k(the)f(v)m(ector.)42 b(Tw)m(o)29 b(v)m(ectors)i(in)d(an)h(expression,)0 4942 y(though,)f(need)e(to)i(ha)m(v)m(e)g(the)f(same)g(n)m(um)m(b)s(er)f(of) h(elemen)m(ts)g(and)f(ha)m(v)m(e)j(the)e(same)g(dimensions.)37 b(The)26 b(only)g(places)0 5055 y(a)35 b(v)m(ector)h(column)d(cannot)i (b)s(e)f(used)f(\(for)i(no)m(w,)g(an)m(yw)m(a)m(y\))h(are)f(the)g(SA)m (O)f(region)g(functions)f(and)g(the)i(NEAR)0 5168 y(b)s(o)s(olean)29 b(function.)0 5328 y(Arithmetic)22 b(and)g(logical)h(op)s(erations)f (are)i(all)e(p)s(erformed)f(on)i(an)g(elemen)m(t)g(b)m(y)g(elemen)m(t)h (basis.)37 b(Comparing)22 b(t)m(w)m(o)0 5441 y(v)m(ector)32 b(columns,)d(eg)i("COL1)f(==)g(COL2",)g(th)m(us)g(results)f(in)g (another)h(v)m(ector)i(of)e(b)s(o)s(olean)g(v)-5 b(alues)29 b(indicating)0 5554 y(whic)m(h)g(elemen)m(ts)i(of)f(the)h(t)m(w)m(o)h (v)m(ectors)f(are)g(equal.)0 5714 y(Eigh)m(t)f(functions)f(are)i(a)m(v) -5 b(ailable)30 b(that)h(op)s(erate)g(on)f(a)h(v)m(ector)h(and)d (return)h(a)g(scalar)h(result:)p eop %%Page: 32 38 32 37 bop 0 299 a Fi(32)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191 555 y Fe("minimum")284 b(MIN\(V\))475 b("maximum")714 b(MAX\(V\))191 668 y("average")284 b(AVERAGE\(V\))f("median")762 b(MEDIAN\(V\))191 781 y("sumation")236 b(SUM\(V\))475 b("standard)46 b(deviation")188 b(STDDEV\(V\))191 894 y("#)47 b(of)g(values")94 b(NELEM\(V\))379 b("#)48 b(of)f(non-null)e(values")94 b(NVALID\(V\))0 1217 y Fi(where)40 b(V)h(represen)m(ts)g(the)g(name)g(of)h(a)f(v)m (ector)h(column)e(or)h(a)h(man)m(ually)d(constructed)i(v)m(ector)i (using)c(curly)0 1330 y(brac)m(k)m(ets)27 b(as)f(describ)s(ed)d(b)s (elo)m(w.)38 b(The)25 b(\014rst)g(6)h(of)g(these)g(functions)e(ignore)h (an)m(y)h(n)m(ull)d(v)-5 b(alues)25 b(in)f(the)i(v)m(ector)h(when)0 1443 y(computing)i(the)i(result.)0 1603 y(The)h(SUM)h(function)e (literally)g(sums)g(all)h(the)h(elemen)m(ts)g(in)f(x,)h(returning)e(a)i (scalar)g(v)-5 b(alue.)47 b(If)32 b(x)h(is)f(a)h(b)s(o)s(olean)0 1716 y(v)m(ector,)40 b(SUM)c(returns)f(the)h(n)m(um)m(b)s(er)f(of)i(TR) m(UE)f(elemen)m(ts.)59 b(The)36 b(NELEM)g(function)f(returns)g(the)h(n) m(um)m(b)s(er)0 1829 y(of)i(elemen)m(ts)g(in)f(v)m(ector)i(x)f(whereas) f(NV)-10 b(ALID)39 b(return)d(the)i(n)m(um)m(b)s(er)f(of)h(non-n)m(ull) d(elemen)m(ts)k(in)d(the)i(v)m(ector.)0 1942 y(\(NELEM)28 b(also)g(op)s(erates)g(on)g(bit)e(and)h(string)g(columns,)g(returning)f (their)h(column)f(widths.\))39 b(As)27 b(an)h(example,)0 2055 y(to)42 b(test)g(whether)f(all)f(elemen)m(ts)i(of)g(t)m(w)m(o)g(v) m(ectors)h(satisfy)e(a)h(giv)m(en)f(logical)g(comparison,)i(one)f(can)g (use)f(the)0 2168 y(expression)668 2492 y Fe(SUM\()47 b(COL1)f(>)i(COL2)f(\))g(==)g(NELEM\()f(COL1)h(\))0 2815 y Fi(whic)m(h)31 b(will)e(return)i(TR)m(UE)h(if)f(all)g(elemen)m(ts)h (of)g(COL1)g(are)g(greater)h(than)f(their)f(corresp)s(onding)f(elemen)m (ts)i(in)0 2928 y(COL2.)0 3088 y(T)-8 b(o)32 b(sp)s(ecify)e(a)j(single) d(elemen)m(t)i(of)g(a)g(v)m(ector,)i(giv)m(e)e(the)g(column)e(name)i (follo)m(w)m(ed)f(b)m(y)h(a)g(comma-separated)h(list)0 3201 y(of)c(co)s(ordinates)f(enclosed)h(in)e(square)i(brac)m(k)m(ets.) 41 b(F)-8 b(or)30 b(example,)f(if)e(a)i(v)m(ector)i(column)c(named)i (PHAS)f(exists)g(in)0 3314 y(the)f(table)f(as)h(a)g(one)g(dimensional,) e(256)j(comp)s(onen)m(t)f(list)e(of)i(n)m(um)m(b)s(ers)e(from)h(whic)m (h)g(y)m(ou)h(w)m(an)m(ted)g(to)g(select)h(the)0 3427 y(57th)k(comp)s(onen)m(t)g(for)f(use)g(in)f(the)i(expression,)e(then)i (PHAS[57])g(w)m(ould)e(do)i(the)f(tric)m(k.)44 b(Higher)31 b(dimensional)0 3540 y(arra)m(ys)41 b(of)h(data)f(ma)m(y)h(app)s(ear)f (in)e(a)j(column.)72 b(But)41 b(in)f(order)g(to)i(in)m(terpret)e(them,) k(the)e(TDIMn)e(k)m(eyw)m(ord)0 3653 y(m)m(ust)34 b(app)s(ear)g(in)f (the)h(header.)52 b(Assuming)33 b(that)i(a)f(\(4,4,4,4\))k(arra)m(y)c (is)g(pac)m(k)m(ed)h(in)m(to)f(eac)m(h)i(ro)m(w)e(of)g(a)h(column)0 3766 y(named)26 b(ARRA)-8 b(Y4D,)28 b(the)f(\(1,2,3,4\))i(comp)s(onen)m (t)e(elemen)m(t)f(of)h(eac)m(h)g(ro)m(w)g(is)e(accessed)j(b)m(y)e(ARRA) -8 b(Y4D[1,2,3,4].)0 3878 y(Arra)m(ys)33 b(up)e(to)j(dimension)c(5)j (are)f(curren)m(tly)g(supp)s(orted.)46 b(Eac)m(h)33 b(v)m(ector)h (index)d(can)i(itself)e(b)s(e)h(an)h(expression,)0 3991 y(although)38 b(it)g(m)m(ust)h(ev)-5 b(aluate)39 b(to)g(an)g(in)m (teger)g(v)-5 b(alue)38 b(within)e(the)j(b)s(ounds)d(of)j(the)g(v)m (ector.)67 b(V)-8 b(ector)40 b(columns)0 4104 y(whic)m(h)30 b(con)m(tain)h(spaces)h(or)f(arithmetic)f(op)s(erators)i(m)m(ust)f(ha)m (v)m(e)h(their)e(names)h(enclosed)g(in)f("$")i(c)m(haracters)h(as)0 4217 y(with)c($ARRA)-8 b(Y-4D$[1,2,3,4].)0 4377 y(A)45 b(more)f(C-lik)m(e)g(syn)m(tax)i(for)e(sp)s(ecifying)e(v)m(ector)47 b(indices)42 b(is)i(also)h(a)m(v)-5 b(ailable.)82 b(The)45 b(elemen)m(t)g(used)e(in)h(the)0 4490 y(preceding)27 b(example)h(alternativ)m(ely)g(could)f(b)s(e)h(sp)s(eci\014ed)f(with)f (the)j(syn)m(tax)g(ARRA)-8 b(Y4D[4][3][2][1].)45 b(Note)30 b(the)0 4603 y(rev)m(erse)40 b(order)f(of)h(indices)d(\(as)j(in)e(C\),) i(as)f(w)m(ell)g(as)g(the)h(fact)g(that)g(the)g(v)-5 b(alues)39 b(are)g(still)f(ones-based)h(\(as)h(in)0 4716 y(F)-8 b(ortran)39 b({)g(adopted)g(to)g(a)m(v)m(oid)g(am)m(biguit)m(y)f (for)h(1D)g(v)m(ectors\).)67 b(With)38 b(this)g(syn)m(tax,)j(one)e(do)s (es)f(not)h(need)f(to)0 4829 y(sp)s(ecify)29 b(all)g(of)i(the)f (indices.)39 b(T)-8 b(o)31 b(extract)h(a)f(3D)g(slice)e(of)i(this)e(4D) i(arra)m(y)-8 b(,)32 b(use)e(ARRA)-8 b(Y4D[4].)0 4989 y(V)g(ariable-length)30 b(v)m(ector)i(columns)d(are)h(not)h(supp)s (orted.)0 5149 y(V)-8 b(ectors)24 b(can)e(b)s(e)f(man)m(ually)f (constructed)j(within)c(the)j(expression)f(using)f(a)i(comma-separated) i(list)d(of)h(elemen)m(ts)0 5262 y(surrounded)35 b(b)m(y)j(curly)f (braces)i(\(')p Fc(fg)p Fi('\).)66 b(F)-8 b(or)38 b(example,)i(')p Fc(f)p Fi(1,3,6,1)p Fc(g)p Fi(')i(is)c(a)g(4-elemen)m(t)h(v)m(ector)h (con)m(taining)e(the)0 5375 y(v)-5 b(alues)25 b(1,)i(3,)g(6,)g(and)e (1.)40 b(The)25 b(v)m(ector)i(can)f(con)m(tain)g(only)f(b)s(o)s(olean,) g(in)m(teger,)j(and)d(real)g(v)-5 b(alues)25 b(\(or)h(expressions\).)0 5488 y(The)e(elemen)m(ts)g(will)e(b)s(e)i(promoted)g(to)h(the)g (highest)e(datat)m(yp)s(e)i(presen)m(t.)39 b(An)m(y)24 b(elemen)m(ts)h(whic)m(h)e(are)i(themselv)m(es)0 5601 y(v)m(ectors,)40 b(will)34 b(b)s(e)i(expanded)g(out)h(with)f(eac)m(h)h (of)g(its)f(elemen)m(ts)i(b)s(ecoming)d(an)i(elemen)m(t)g(in)f(the)h (constructed)0 5714 y(v)m(ector.)p eop %%Page: 33 39 33 38 bop 0 299 a Fg(4.9.)72 b(R)m(O)m(W)31 b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)2072 b Fi(33)0 555 y Fb(4.9.4)112 b(Go)s(o)s(d)38 b(Time)e(In)m(terv)-6 b(al)37 b(Filtering)0 774 y Fi(A)44 b(common)g(\014ltering)f(metho)s(d) g(in)m(v)m(olv)m(es)h(selecting)g(ro)m(ws)g(whic)m(h)e(ha)m(v)m(e)k(a)e (time)g(v)-5 b(alue)43 b(whic)m(h)g(lies)f(within)0 887 y(what)37 b(is)f(called)h(a)h(Go)s(o)s(d)f(Time)f(In)m(terv)-5 b(al)37 b(or)g(GTI.)g(The)g(time)g(in)m(terv)-5 b(als)36 b(are)i(de\014ned)e(in)g(a)h(separate)i(FITS)0 1000 y(table)h (extension)g(whic)m(h)e(con)m(tains)i(2)h(columns)e(giving)f(the)j (start)f(and)g(stop)g(time)f(of)h(eac)m(h)i(go)s(o)s(d)e(in)m(terv)-5 b(al.)0 1113 y(The)34 b(\014ltering)f(op)s(eration)i(accepts)h(only)d (those)j(ro)m(ws)e(of)h(the)g(input)e(table)i(whic)m(h)e(ha)m(v)m(e)j (an)f(asso)s(ciated)g(time)0 1226 y(whic)m(h)f(falls)h(within)e(one)j (of)g(the)g(time)f(in)m(terv)-5 b(als)35 b(de\014ned)g(in)f(the)i(GTI)g (extension.)56 b(A)36 b(high)f(lev)m(el)g(function,)0 1339 y(gti\014lter\(a,b,c,d\),)42 b(is)d(a)m(v)-5 b(ailable)39 b(whic)m(h)f(ev)-5 b(aluates)40 b(eac)m(h)h(ro)m(w)e(of)h(the)f(input)f (table)h(and)g(returns)f(TR)m(UE)i(or)0 1452 y(F)-10 b(ALSE)30 b(dep)s(ending)e(whether)i(the)g(ro)m(w)h(is)e(inside)f(or)i (outside)g(the)h(go)s(o)s(d)f(time)g(in)m(terv)-5 b(al.)40 b(The)30 b(syn)m(tax)h(is)286 1696 y Fe(gtifilter\()45 b([)j("gtifile")d([,)i(expr)g([,)g("STARTCOL",)e("STOPCOL")g(])j(])f(]) g(\))0 1941 y Fi(where)20 b(eac)m(h)h("[]")h(demarks)e(optional)f (parameters.)38 b(Note)21 b(that)g(the)g(quotes)f(around)g(the)g (gti\014le)g(and)f(ST)-8 b(AR)g(T/STOP)0 2054 y(column)32 b(are)i(required.)49 b(Either)33 b(single)f(or)i(double)e(quotes)i(ma)m (y)g(b)s(e)f(used.)50 b(In)33 b(cases)h(where)g(this)e(expression)0 2167 y(is)d(en)m(tered)h(on)g(the)g(Unix)f(command)h(line,)e(enclose)i (the)g(en)m(tire)g(expression)f(in)f(double)h(quotes,)h(and)g(then)f (use)0 2280 y(single)23 b(quotes)i(within)c(the)k(expression)e(to)i (enclose)f(the)h('gti\014le')f(and)f(other)i(terms.)38 b(It)25 b(is)e(also)h(usually)e(p)s(ossible)0 2393 y(to)38 b(do)e(the)h(rev)m(erse,)j(and)c(enclose)h(the)g(whole)f(expression)g (in)f(single)h(quotes)h(and)f(then)h(use)f(double)f(quotes)0 2506 y(within)c(the)i(expression.)49 b(The)33 b(gti\014le,)g(if)g(sp)s (eci\014ed,)f(can)i(b)s(e)f(blank)f(\(""\))j(whic)m(h)d(will)e(mean)k (to)g(use)f(the)h(\014rst)0 2619 y(extension)f(with)g(the)g(name)h ("*GTI*")h(in)e(the)g(curren)m(t)h(\014le,)g(a)g(plain)d(extension)i (sp)s(eci\014er)f(\(eg,)k("+2",)g("[2]",)0 2731 y(or)30 b("[STDGTI]"\))i(whic)m(h)d(will)f(b)s(e)i(used)f(to)j(select)f(an)f (extension)g(in)f(the)i(curren)m(t)f(\014le,)g(or)g(a)h(regular)f (\014lename)0 2844 y(with)f(or)i(without)e(an)i(extension)f(sp)s (eci\014er)f(whic)m(h)g(in)g(the)i(latter)g(case)g(will)d(mean)i(to)i (use)e(the)h(\014rst)e(extension)0 2957 y(with)36 b(an)h(extension)f (name)i("*GTI*".)62 b(Expr)36 b(can)h(b)s(e)g(an)m(y)g(arithmetic)g (expression,)g(including)d(simply)h(the)0 3070 y(time)g(column)g(name.) 57 b(A)36 b(v)m(ector)h(time)f(expression)e(will)f(pro)s(duce)i(a)h(v)m (ector)h(b)s(o)s(olean)e(result.)56 b(ST)-8 b(AR)g(TCOL)0 3183 y(and)27 b(STOPCOL)f(are)i(the)g(names)g(of)g(the)g(ST)-8 b(AR)g(T/STOP)26 b(columns)h(in)f(the)i(GTI)g(extension.)40 b(If)27 b(one)h(of)g(them)0 3296 y(is)h(sp)s(eci\014ed,)g(they)i(b)s (oth)f(m)m(ust)g(b)s(e.)0 3456 y(In)21 b(its)g(simplest)f(form,)k(no)d (parameters)h(need)g(to)h(b)s(e)e(pro)m(vided)f({)i(default)f(v)-5 b(alues)21 b(will)f(b)s(e)h(used.)37 b(The)21 b(expression)0 3569 y("gti\014lter\(\)")31 b(is)f(equiv)-5 b(alen)m(t)29 b(to)334 3814 y Fe(gtifilter\()45 b("",)i(TIME,)f("*START*",)f ("*STOP*")h(\))0 4059 y Fi(This)30 b(will)e(searc)m(h)k(the)g(curren)m (t)f(\014le)f(for)h(a)h(GTI)f(extension,)g(\014lter)g(the)g(TIME)g (column)f(in)g(the)i(curren)m(t)f(table,)0 4172 y(using)i(ST)-8 b(AR)g(T/STOP)34 b(times)h(tak)m(en)g(from)g(columns)e(in)h(the)h(GTI)g (extension)f(with)g(names)g(con)m(taining)h(the)0 4284 y(strings)c("ST)-8 b(AR)g(T")33 b(and)e("STOP".)46 b(The)32 b(wildcards)d(\('*'\))34 b(allo)m(w)e(sligh)m(t)f(v)-5 b(ariations)31 b(in)g(naming)g(con)m(v)m(en)m(tions)0 4397 y(suc)m(h)38 b(as)g("TST)-8 b(AR)g(T")39 b(or)f("ST)-8 b(AR)g(TTIME".)65 b(The)37 b(same)i(default)f(v)-5 b(alues)37 b(apply)g(for)h(unsp)s(eci\014ed)e(parame-)0 4510 y(ters)g(when)f(the)h (\014rst)f(one)i(or)f(t)m(w)m(o)h(parameters)f(are)h(sp)s(eci\014ed.)55 b(The)36 b(function)e(automatically)i(searc)m(hes)h(for)0 4623 y(TIMEZER)m(O/I/F)g(k)m(eyw)m(ords)f(in)f(the)i(curren)m(t)f(and)g (GTI)g(extensions,)h(applying)e(a)h(relativ)m(e)h(time)f(o\013set,)j (if)0 4736 y(necessary)-8 b(.)0 5024 y Fb(4.9.5)112 b(Spatial)37 b(Region)g(Filtering)0 5243 y Fi(Another)h(common)g(\014ltering)e (metho)s(d)h(selects)h(ro)m(ws)g(based)g(on)f(whether)h(the)g(spatial)f (p)s(osition)e(asso)s(ciated)0 5356 y(with)c(eac)m(h)j(ro)m(w)e(is)g (lo)s(cated)h(within)d(a)j(giv)m(en)f(2-dimensional)e(region.)47 b(The)32 b(syn)m(tax)h(for)f(this)g(high-lev)m(el)f(\014lter)0 5469 y(is)334 5714 y Fe(regfilter\()45 b("regfilename")f([)k(,)f (Xexpr,)f(Yexpr)h([)g(,)h("wcs)e(cols")h(])g(])g(\))p eop %%Page: 34 40 34 39 bop 0 299 a Fi(34)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(where)22 b(eac)m(h)i("[]")g(demarks)e(optional)g(parameters.)38 b(The)22 b(region)g(\014le)g(name)g(is)g(required)f(and)h(m)m(ust)g(b)s (e)g(enclosed)0 668 y(in)38 b(quotes.)70 b(The)39 b(remaining)f (parameters)i(are)g(optional.)68 b(The)39 b(region)g(\014le)g(is)g(an)g (ASCI)s(I)g(text)h(\014le)f(whic)m(h)0 781 y(con)m(tains)30 b(a)f(list)f(of)i(one)f(or)h(more)f(geometric)i(shap)s(es)d(\(circle,)i (ellipse,)d(b)s(o)m(x,)j(etc.\))42 b(whic)m(h)28 b(de\014nes)g(a)i (region)f(on)0 894 y(the)i(celestial)f(sphere)g(or)h(an)g(area)g (within)d(a)j(particular)f(2D)h(image.)42 b(The)30 b(region)h(\014le)f (is)f(t)m(ypically)h(generated)0 1007 y(using)21 b(an)i(image)g(displa) m(y)e(program)i(suc)m(h)f(as)h(fv/PO)m(W)h(\(distribute)c(b)m(y)j(the)g (HEASAR)m(C\),)g(or)g(ds9)g(\(distributed)0 1120 y(b)m(y)k(the)g (Smithsonian)d(Astroph)m(ysical)i(Observ)-5 b(atory\).)39 b(Users)27 b(should)e(refer)h(to)i(the)f(do)s(cumen)m(tation)f(pro)m (vided)0 1233 y(with)j(these)i(programs)f(for)g(more)h(details)e(on)h (the)h(syn)m(tax)g(used)e(in)g(the)i(region)f(\014les.)0 1393 y(In)44 b(its)g(simpliest)e(form,)47 b(\(e.g.,)j (reg\014lter\("region.reg"\))c(\))f(the)g(co)s(ordinates)f(in)f(the)i (default)e('X')i(and)f('Y')0 1506 y(columns)32 b(will)e(b)s(e)i(used)g (to)i(determine)e(if)f(eac)m(h)j(ro)m(w)f(is)f(inside)f(or)i(outside)f (the)h(area)h(sp)s(eci\014ed)d(in)g(the)i(region)0 1619 y(\014le.)40 b(Alternate)31 b(p)s(osition)d(column)h(names,)i(or)f (expressions,)f(ma)m(y)i(b)s(e)f(en)m(tered)h(if)e(needed,)i(as)f(in) 382 1867 y Fe(regfilter\("region.reg",)41 b(XPOS,)47 b(YPOS\))0 2116 y Fi(Region)36 b(\014ltering)e(can)i(b)s(e)f(applied)e (most)j(unam)m(biguously)d(if)i(the)h(p)s(ositions)e(in)g(the)i(region) f(\014le)g(and)g(in)g(the)0 2229 y(table)g(to)h(b)s(e)e(\014ltered)g (are)i(b)s(oth)e(giv)m(e)i(in)e(terms)h(of)g(absolute)g(celestial)g(co) s(ordinate)g(units.)53 b(In)35 b(this)f(case)i(the)0 2342 y(lo)s(cations)24 b(and)f(sizes)h(of)h(the)f(geometric)h(shap)s (es)f(in)f(the)h(region)g(\014le)f(are)i(sp)s(eci\014ed)e(in)g(angular) g(units)g(on)h(the)g(sky)0 2455 y(\(e.g.,)32 b(p)s(ositions)c(giv)m(en) j(in)e(R.A.)h(and)g(Dec.)42 b(and)30 b(sizes)g(in)f(arcseconds)h(or)h (arcmin)m(utes\).)40 b(Similarly)-8 b(,)27 b(eac)m(h)32 b(ro)m(w)0 2568 y(of)h(the)h(\014ltered)e(table)h(will)d(ha)m(v)m(e)35 b(a)e(celestial)g(co)s(ordinate)g(asso)s(ciated)g(with)f(it.)49 b(This)31 b(asso)s(ciation)i(is)f(usually)0 2681 y(implemen)m(ted)37 b(using)f(a)j(set)g(of)f(so-called)g('W)-8 b(orld)38 b(Co)s(ordinate)g(System')g(\(or)h(W)m(CS\))f(FITS)g(k)m(eyw)m(ords)g (that)0 2794 y(de\014ne)27 b(the)g(co)s(ordinate)g(transformation)g (that)h(m)m(ust)f(b)s(e)f(applied)f(to)j(the)g(v)-5 b(alues)26 b(in)g(the)i('X')g(and)e('Y')i(columns)0 2906 y(to)j(calculate)g(the)f (co)s(ordinate.)0 3067 y(Alternativ)m(ely)-8 b(,)27 b(one)g(can)g(p)s (erform)e(spatial)h(\014ltering)e(using)h(unitless)g('pixel')g(co)s (ordinates)i(for)f(the)h(regions)f(and)0 3180 y(ro)m(w)33 b(p)s(ositions.)47 b(In)33 b(this)f(case)i(the)f(user)g(m)m(ust)g(b)s (e)f(careful)g(to)i(ensure)f(that)g(the)h(p)s(ositions)d(in)h(the)h(2)g (\014les)g(are)0 3292 y(self-consisten)m(t.)52 b(A)34 b(t)m(ypical)g(problem)e(is)h(that)i(the)f(region)g(\014le)f(ma)m(y)i (b)s(e)e(generated)j(using)c(a)j(binned)c(image,)0 3405 y(but)h(the)h(un)m(binned)d(co)s(ordinates)i(are)h(giv)m(en)g(in)e(the) i(ev)m(en)m(t)i(table.)47 b(The)32 b(R)m(OSA)-8 b(T)33 b(ev)m(en)m(ts)h(\014les,)f(for)f(example,)0 3518 y(ha)m(v)m(e)f(X)f (and)f(Y)g(pixel)f(co)s(ordinates)h(that)i(range)f(from)f(1)h(-)g (15360.)42 b(These)30 b(co)s(ordinates)f(are)h(t)m(ypically)e(binned)0 3631 y(b)m(y)33 b(a)h(factor)g(of)f(32)h(to)g(pro)s(duce)e(a)i(480x480) i(pixel)31 b(image.)50 b(If)32 b(one)i(then)f(uses)g(a)g(region)g (\014le)f(generated)i(from)0 3744 y(this)29 b(image)i(\(in)f(image)g (pixel)f(units\))h(to)h(\014lter)e(the)i(R)m(OSA)-8 b(T)30 b(ev)m(en)m(ts)i(\014le,)e(then)g(the)h(X)g(and)f(Y)g(column)g(v)-5 b(alues)0 3857 y(m)m(ust)30 b(b)s(e)g(con)m(v)m(erted)i(to)f(corresp)s (onding)d(pixel)h(units)g(as)h(in:)382 4106 y Fe (regfilter\("rosat.reg",)42 b(X/32.+.5,)j(Y/32.+.5\))0 4354 y Fi(Note)h(that)f(this)e(binning)e(con)m(v)m(ersion)k(is)e(not)i (necessary)g(if)e(the)i(region)f(\014le)f(is)h(sp)s(eci\014ed)e(using)h (celestial)0 4467 y(co)s(ordinate)h(units)f(instead)g(of)h(pixel)f (units)g(b)s(ecause)h(CFITSIO)e(is)i(then)f(able)h(to)h(directly)e (compare)i(the)0 4580 y(celestial)27 b(co)s(ordinate)h(of)f(eac)m(h)i (ro)m(w)f(in)e(the)i(table)f(with)g(the)g(celestial)h(co)s(ordinates)f (in)f(the)i(region)f(\014le)g(without)0 4693 y(ha)m(ving)j(to)h(kno)m (w)f(an)m(ything)g(ab)s(out)g(ho)m(w)h(the)f(image)h(ma)m(y)g(ha)m(v)m (e)g(b)s(een)f(binned.)0 4853 y(The)f(last)g("w)m(cs)h(cols")g (parameter)g(should)d(rarely)h(b)s(e)h(needed.)40 b(If)29 b(supplied,)d(this)j(string)f(con)m(tains)i(the)f(names)0 4966 y(of)37 b(the)g(2)h(columns)e(\(space)i(or)f(comma)g(separated\))h (whic)m(h)e(ha)m(v)m(e)i(the)g(asso)s(ciated)f(W)m(CS)g(k)m(eyw)m (ords.)61 b(If)37 b(not)0 5079 y(supplied,)d(the)i(\014lter)f(will)f (scan)i(the)g(X)g(and)f(Y)h(expressions)f(for)h(column)e(names.)58 b(If)35 b(only)g(one)i(is)e(found)f(in)0 5192 y(eac)m(h)e(expression,)d (those)i(columns)e(will)f(b)s(e)h(used,)h(otherwise)g(an)g(error)g (will)e(b)s(e)i(returned.)0 5352 y(These)g(region)g(shap)s(es)g(are)g (supp)s(orted)f(\(names)h(are)h(case)h(insensitiv)m(e\):)334 5601 y Fe(Point)428 b(\()48 b(X1,)f(Y1)g(\))715 b(<-)48 b(One)f(pixel)f(square)g(region)334 5714 y(Line)476 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2)i(\))333 b(<-)48 b(One)f(pixel)f(wide)h(region)p eop %%Page: 35 41 35 40 bop 0 299 a Fg(4.9.)72 b(R)m(O)m(W)31 b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)2072 b Fi(35)334 555 y Fe(Polygon)332 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(...)g(\))95 b(<-)48 b(Rest)e(are)h(interiors)e(with)334 668 y(Rectangle)236 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(A)h(\))334 b(|)47 b(boundaries)e (considered)334 781 y(Box)524 b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i (\))143 b(V)47 b(within)f(the)h(region)334 894 y(Diamond)332 b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i(\))334 1007 y(Circle)380 b(\()48 b(Xc,)f(Yc,)g(R)g(\))334 1120 y(Annulus)332 b(\()48 b(Xc,)f(Yc,)g(Rin,)f(Rout)h(\))334 1233 y(Ellipse)332 b(\()48 b(Xc,)f(Yc,)g(Rx,)f(Ry,)h(A)h(\))334 1346 y(Elliptannulus)c(\() k(Xc,)f(Yc,)g(Rinx,)f(Riny,)g(Routx,)g(Routy,)g(Ain,)h(Aout)g(\))334 1458 y(Sector)380 b(\()48 b(Xc,)f(Yc,)g(Amin,)f(Amax)h(\))0 1732 y Fi(where)28 b(\(Xc,Yc\))j(is)c(the)i(co)s(ordinate)g(of)f(the)h (shap)s(e's)f(cen)m(ter;)j(\(X#,Y#\))e(are)g(the)g(co)s(ordinates)f(of) h(the)g(shap)s(e's)0 1845 y(edges;)39 b(Rxxx)c(are)g(the)h(shap)s(es')f (v)-5 b(arious)34 b(Radii)g(or)h(semima)5 b(jor/minor)34 b(axes;)k(and)d(Axxx)g(are)h(the)g(angles)f(of)0 1958 y(rotation)d(\(or)f(b)s(ounding)e(angles)i(for)g(Sector\))h(in)e (degrees.)44 b(F)-8 b(or)32 b(rotated)h(shap)s(es,)e(the)g(rotation)h (angle)f(can)h(b)s(e)0 2071 y(left)f(o\013,)i(indicating)c(no)i (rotation.)45 b(Common)31 b(alternate)h(names)f(for)h(the)f(regions)g (can)h(also)g(b)s(e)e(used:)43 b(rotb)s(o)m(x)0 2184 y(=)29 b(b)s(o)m(x;)g(rotrectangle)h(=)f(rectangle;)h(\(rot\)rhom)m (bus)f(=)f(\(rot\)diamond;)i(and)e(pie)g(=)g(sector.)42 b(When)28 b(a)i(shap)s(e's)0 2297 y(name)e(is)f(preceded)g(b)m(y)h(a)g (min)m(us)f(sign,)g('-',)j(the)e(de\014ned)e(region)i(is)f(instead)g (the)h(area)h(*outside*)f(its)f(b)s(oundary)0 2410 y(\(ie,)35 b(the)f(region)g(is)f(in)m(v)m(erted\).)52 b(All)32 b(the)i(shap)s(es)f (within)f(a)i(single)f(region)g(\014le)h(are)g(OR'd)f(together)j(to)e (create)0 2523 y(the)29 b(region,)h(and)e(the)i(order)f(is)f (signi\014can)m(t.)39 b(The)29 b(o)m(v)m(erall)g(w)m(a)m(y)i(of)e(lo)s (oking)f(at)i(region)f(\014les)f(is)g(that)i(if)e(the)i(\014rst)0 2636 y(region)e(is)g(an)h(excluded)f(region)g(then)g(a)i(dumm)m(y)d (included)f(region)j(of)g(the)g(whole)f(detector)i(is)e(inserted)f(in)h (the)0 2749 y(fron)m(t.)40 b(Then)25 b(eac)m(h)j(region)e(sp)s (eci\014cation)g(as)h(it)f(is)g(pro)s(cessed)g(o)m(v)m(errides)g(an)m (y)h(selections)g(inside)d(of)j(that)g(region)0 2861 y(sp)s(eci\014ed)35 b(b)m(y)h(previous)f(regions.)58 b(Another)37 b(w)m(a)m(y)g(of)g(thinking)d(ab)s(out)i(this)f(is)h(that) h(if)e(a)i(previous)e(excluded)0 2974 y(region)30 b(is)f(completely)h (inside)f(of)h(a)h(subsequen)m(t)e(included)f(region)i(the)h(excluded)e (region)h(is)f(ignored.)0 3135 y(The)44 b(p)s(ositional)f(co)s (ordinates)i(ma)m(y)g(b)s(e)g(giv)m(en)g(either)f(in)g(pixel)f(units,)k (decimal)d(degrees)i(or)f(hh:mm:ss.s,)0 3247 y(dd:mm:ss.s)25 b(units.)37 b(The)26 b(shap)s(e)f(sizes)h(ma)m(y)g(b)s(e)g(giv)m(en)g (in)e(pixels,)i(degrees,)h(arcmin)m(utes,)g(or)f(arcseconds.)40 b(Lo)s(ok)0 3360 y(at)31 b(examples)f(of)g(region)g(\014le)g(pro)s (duced)e(b)m(y)i(fv/PO)m(W)h(or)g(ds9)f(for)g(further)f(details)g(of)i (the)f(region)g(\014le)f(format.)0 3521 y(There)37 b(are)g(three)g (functions)f(that)h(are)h(primarily)c(for)i(use)h(with)f(SA)m(O)h (region)f(\014les)g(and)h(the)g(FSA)m(OI)g(task,)0 3633 y(but)e(they)h(can)h(b)s(e)e(used)g(directly)-8 b(.)57 b(They)36 b(return)f(a)h(b)s(o)s(olean)f(true)h(or)g(false)f(dep)s (ending)f(on)i(whether)f(a)i(t)m(w)m(o)0 3746 y(dimensional)28 b(p)s(oin)m(t)h(is)g(in)g(the)i(region)f(or)g(not:)191 4020 y Fe("point)46 b(in)h(a)h(circular)d(region")477 4133 y(circle\(xcntr,ycntr,radius)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 4359 y("point)h(in)h(an)g(elliptical)e(region")430 4472 y(ellipse\(xcntr,ycntr,xhl)o(f_w)o(dth,)o(yhlf)o(_wd)o(th,r)o(otat)o (ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 4698 y("point)h(in)h(a)h (rectangular)c(region")620 4811 y(box\(xcntr,ycntr,xfll_wdth,)o(yfll)o (_wd)o(th,r)o(otat)o(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 5036 y(where)334 5149 y(\(xcntr,ycntr\))g(are)j(the)g(\(x,y\))f (position)g(of)h(the)g(center)f(of)h(the)g(region)334 5262 y(\(xhlf_wdth,yhlf_wdth\))42 b(are)47 b(the)g(\(x,y\))f(half)h (widths)f(of)h(the)g(region)334 5375 y(\(xfll_wdth,yfll_wdth\))42 b(are)47 b(the)g(\(x,y\))f(full)h(widths)f(of)h(the)g(region)334 5488 y(\(radius\))f(is)h(half)f(the)h(diameter)f(of)h(the)g(circle)334 5601 y(\(rotation\))e(is)i(the)g(angle\(degrees\))d(that)j(the)g (region)f(is)h(rotated)f(with)620 5714 y(respect)g(to)h (\(xcntr,ycntr\))p eop %%Page: 36 42 36 41 bop 0 299 a Fi(36)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)334 555 y Fe(\(Xcoord,Ycoord\))44 b(are)j(the)g(\(x,y\))f(coordinates)f(to)i (test,)f(usually)g(column)620 668 y(names)334 781 y(NOTE:)g(each)h (parameter)e(can)i(itself)f(be)i(an)f(expression,)d(not)j(merely)f(a) 620 894 y(column)h(name)f(or)h(constant.)0 1201 y Fb(4.9.6)112 b(Example)37 b(Ro)m(w)g(Filters)191 1423 y Fe([)47 b(binary)f(&&)i(mag) f(<=)g(5.0])380 b(-)48 b(Extract)e(all)h(binary)f(stars)g(brighter)1766 1536 y(than)94 b(fifth)47 b(magnitude)e(\(note)h(that)1766 1649 y(the)h(initial)f(space)g(is)h(necessary)e(to)1766 1762 y(prevent)h(it)h(from)g(being)f(treated)g(as)h(a)1766 1875 y(binning)f(specification\))191 2101 y([#row)g(>=)h(125)g(&&)h (#row)e(<=)h(175])142 b(-)48 b(Extract)e(row)h(numbers)e(125)i(through) f(175)191 2327 y([IMAGE[4,5])f(.gt.)h(100])476 b(-)48 b(Extract)e(all)h(rows)f(that)h(have)g(the)1766 2439 y(\(4,5\))f(component)g(of)h(the)g(IMAGE)f(column)1766 2552 y(greater)g(than)g(100)191 2778 y([abs\(sin\(theta)e(*)j(#deg\)\)) f(<)i(0.5])e(-)i(Extract)e(all)h(rows)f(having)g(the)1766 2891 y(absolute)f(value)i(of)g(the)g(sine)g(of)g(theta)1766 3004 y(less)94 b(than)47 b(a)g(half)g(where)f(the)h(angles)1766 3117 y(are)g(tabulated)e(in)i(degrees)191 3343 y([SUM\()f(SPEC)h(>)g (3*BACKGRND)e(\)>=1])94 b(-)48 b(Extract)e(all)h(rows)f(containing)f(a) 1766 3456 y(spectrum,)g(held)i(in)g(vector)f(column)1766 3569 y(SPEC,)g(with)h(at)g(least)f(one)h(value)g(3)1766 3681 y(times)f(greater)g(than)h(the)g(background)1766 3794 y(level)f(held)h(in)g(a)h(keyword,)d(BACKGRND)191 4020 y([VCOL=={1,4,2}])759 b(-)48 b(Extract)e(all)h(rows)f(whose)h (vector)f(column)1766 4133 y(VCOL)h(contains)e(the)i(3-elements)e(1,)i (4,)g(and)1766 4246 y(2.)191 4472 y([@rowFilter.txt])711 b(-)48 b(Extract)e(rows)g(using)h(the)g(expression)1766 4585 y(contained)e(within)h(the)h(text)g(file)1766 4698 y(rowFilter.txt)191 4924 y([gtifilter\(\)])855 b(-)48 b(Search)e(the)h(current)f(file)g(for)h(a)h(GTI)239 5036 y(extension,)92 b(filter)i(the)47 b(TIME)239 5149 y(column)f(in)h(the)g (current)f(table,)g(using)239 5262 y(START/STOP)f(times)h(taken)g(from) 239 5375 y(columns)f(in)j(the)f(GTI)94 b(extension)191 5601 y([regfilter\("pow.reg"\)])423 b(-)48 b(Extract)e(rows)g(which)h (have)f(a)i(coordinate)1766 5714 y(\(as)f(given)f(in)h(the)g(X)h(and)f (Y)g(columns\))p eop %%Page: 37 43 37 42 bop 0 299 a Fg(4.10.)113 b(BINNING)31 b(OR)f(HISTOGRAMMING)h (SPECIFICA)-8 b(TION)1313 b Fi(37)1766 555 y Fe(within)46 b(the)h(spatial)f(region)g(specified)1766 668 y(in)h(the)g(pow.reg)f (region)g(file.)191 894 y([regfilter\("pow.reg",)c(Xs,)47 b(Ys\)])f(-)i(Same)f(as)g(above,)f(except)g(that)h(the)1766 1007 y(Xs)g(and)g(Ys)g(columns)f(will)h(be)g(used)f(to)1766 1120 y(determine)f(the)i(coordinate)e(of)i(each)1766 1233 y(row)g(in)g(the)g(table.)0 1560 y Fd(4.10)180 b(Binning)45 b(or)g(Histogramming)i(Sp)t(eci\014cation)0 1810 y Fi(The)22 b(optional)g(binning)e(sp)s(eci\014er)h(is)h(enclosed)h(in)f(square)g (brac)m(k)m(ets)j(and)d(can)h(b)s(e)f(distinguished)d(from)k(a)g (general)0 1923 y(ro)m(w)32 b(\014lter)g(sp)s(eci\014cation)f(b)m(y)h (the)h(fact)g(that)g(it)f(b)s(egins)f(with)g(the)h(k)m(eyw)m(ord)h ('bin')e(not)i(immediately)d(follo)m(w)m(ed)0 2036 y(b)m(y)41 b(an)f(equals)h(sign.)71 b(When)41 b(binning)c(is)j(sp)s(eci\014ed,)i (a)f(temp)s(orary)g(N-dimensional)d(FITS)i(primary)f(arra)m(y)0 2149 y(is)j(created)i(b)m(y)f(computing)g(the)g(histogram)g(of)g(the)g (v)-5 b(alues)43 b(in)e(the)j(sp)s(eci\014ed)d(columns)h(of)h(a)h(FITS) e(table)0 2262 y(extension.)e(After)30 b(the)f(histogram)g(is)g (computed)g(the)h(input)d(FITS)i(\014le)g(con)m(taining)g(the)g(table)h (is)e(then)h(closed)0 2375 y(and)34 b(the)h(temp)s(orary)f(FITS)g (primary)f(arra)m(y)i(is)f(op)s(ened)g(and)g(passed)g(to)h(the)g (application)e(program.)54 b(Th)m(us,)0 2488 y(the)39 b(application)e(program)i(nev)m(er)g(sees)g(the)g(original)e(FITS)h (table)h(and)f(only)g(sees)i(the)f(image)g(in)e(the)i(new)0 2601 y(temp)s(orary)32 b(\014le)g(\(whic)m(h)g(has)g(no)h(additional)d (extensions\).)48 b(Ob)m(viously)-8 b(,)32 b(the)h(application)e (program)h(m)m(ust)h(b)s(e)0 2714 y(exp)s(ecting)d(to)h(op)s(en)f(a)h (FITS)e(image)i(and)f(not)g(a)h(FITS)f(table)g(in)f(this)g(case.)0 2874 y(The)h(data)h(t)m(yp)s(e)f(of)h(the)f(FITS)g(histogram)f(image)i (ma)m(y)g(b)s(e)f(sp)s(eci\014ed)e(b)m(y)i(app)s(ending)e('b')i(\(for)h (8-bit)f(b)m(yte\),)h('i')0 2987 y(\(for)g(16-bit)f(in)m(tegers\),)h ('j')g(\(for)g(32-bit)f(in)m(teger\),)i('r')e(\(for)h(32-bit)f (\015oating)h(p)s(oin)m(ts\),)e(or)i('d')f(\(for)h(64-bit)f(double)0 3100 y(precision)c(\015oating)i(p)s(oin)m(t\))g(to)g(the)h('bin')d(k)m (eyw)m(ord)j(\(e.g.)41 b('[binr)27 b(X]')h(creates)i(a)e(real)g (\015oating)g(p)s(oin)m(t)f(image\).)40 b(If)0 3212 y(the)26 b(datat)m(yp)s(e)h(is)e(not)h(explicitly)e(sp)s(eci\014ed)g(then)i(a)g (32-bit)g(in)m(teger)h(image)f(will)d(b)s(e)i(created)i(b)m(y)f (default,)h(unless)0 3325 y(the)i(w)m(eigh)m(ting)f(option)g(is)g(also) h(sp)s(eci\014ed)e(in)g(whic)m(h)h(case)h(the)g(image)g(will)d(ha)m(v)m (e)k(a)f(32-bit)g(\015oating)g(p)s(oin)m(t)e(data)0 3438 y(t)m(yp)s(e)k(b)m(y)f(default.)0 3598 y(The)24 b(histogram)f(image)i (ma)m(y)g(ha)m(v)m(e)g(from)f(1)g(to)h(4)g(dimensions)c(\(axes\),)27 b(dep)s(ending)22 b(on)i(the)g(n)m(um)m(b)s(er)f(of)h(columns)0 3711 y(that)31 b(are)g(sp)s(eci\014ed.)39 b(The)30 b(general)g(form)g (of)g(the)h(binning)c(sp)s(eci\014cation)i(is:)48 3931 y Fe([bin{bijrd})92 b(Xcol=min:max:binsize,)42 b(Ycol=)47 b(...,)f(Zcol=...,)f(Tcol=...;)h(weight])0 4152 y Fi(in)38 b(whic)m(h)g(up)g(to)i(4)g(columns,)g(eac)m(h)g(corresp)s(onding)d(to)j (an)g(axis)e(of)i(the)f(image,)j(are)e(listed.)65 b(The)39 b(column)0 4264 y(names)27 b(are)h(case)h(insensitiv)m(e,)d(and)h(the)h (column)e(n)m(um)m(b)s(er)g(ma)m(y)i(b)s(e)f(giv)m(en)g(instead)g(of)h (the)g(name,)g(preceded)f(b)m(y)0 4377 y(a)32 b(p)s(ound)e(sign)h (\(e.g.,)j([bin)c(#4=1:512]\).)47 b(If)31 b(the)h(column)f(name)h(is)e (not)i(sp)s(eci\014ed,)f(then)g(CFITSIO)g(will)e(\014rst)0 4490 y(try)37 b(to)h(use)f(the)g('preferred)f(column')h(as)g(sp)s (eci\014ed)f(b)m(y)h(the)g(CPREF)g(k)m(eyw)m(ord)h(if)e(it)g(exists)h (\(e.g.,)k('CPREF)0 4603 y(=)i('DETX,DETY'\),)h(otherwise)f(column)f (names)h('X',)h('Y',)g('Z',)f(and)f('T')i(will)c(b)s(e)i(assumed)h(for) g(eac)m(h)h(of)0 4716 y(the)37 b(4)h(axes,)i(resp)s(ectiv)m(ely)-8 b(.)60 b(In)37 b(cases)h(where)e(the)i(column)e(name)h(could)f(b)s(e)g (confused)h(with)f(an)h(arithmetic)0 4829 y(expression,)29 b(enclose)i(the)g(column)e(name)h(in)f(paren)m(theses)i(to)g(force)g (the)f(name)h(to)g(b)s(e)f(in)m(terpreted)f(literally)-8 b(.)0 4989 y(Eac)m(h)33 b(column)e(name)h(ma)m(y)h(b)s(e)f(follo)m(w)m (ed)f(b)m(y)i(an)f(equals)f(sign)h(and)f(then)h(the)g(lo)m(w)m(er)h (and)f(upp)s(er)e(range)i(of)h(the)0 5102 y(histogram,)e(and)f(the)h (size)g(of)g(the)g(histogram)g(bins,)e(separated)i(b)m(y)g(colons.)42 b(Spaces)31 b(are)g(allo)m(w)m(ed)g(b)s(efore)g(and)0 5215 y(after)e(the)g(equals)f(sign)f(but)h(not)h(within)d(the)j ('min:max:binsize')d(string.)39 b(The)29 b(min,)e(max)i(and)f(binsize)f (v)-5 b(alues)0 5328 y(ma)m(y)32 b(b)s(e)e(in)m(teger)h(or)g (\015oating)g(p)s(oin)m(t)f(n)m(um)m(b)s(ers,)g(or)h(they)g(ma)m(y)g(b) s(e)g(the)g(names)g(of)g(k)m(eyw)m(ords)g(in)f(the)h(header)g(of)0 5441 y(the)g(table.)40 b(If)30 b(the)h(latter,)g(then)f(the)g(v)-5 b(alue)30 b(of)h(that)g(k)m(eyw)m(ord)f(is)g(substituted)f(in)m(to)h (the)h(expression.)0 5601 y(Default)36 b(v)-5 b(alues)35 b(for)h(the)g(min,)g(max)g(and)g(binsize)e(quan)m(tities)h(will)e(b)s (e)i(used)h(if)e(not)j(explicitly)c(giv)m(en)j(in)f(the)0 5714 y(binning)27 b(expression)i(as)i(sho)m(wn)f(in)f(these)i (examples:)p eop %%Page: 38 44 38 43 bop 0 299 a Fi(38)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191 555 y Fe([bin)47 b(x)g(=)g(:512:2])94 b(-)47 b(use)g(default)f(minimum)g (value)191 668 y([bin)h(x)g(=)g(1::2])190 b(-)47 b(use)g(default)f (maximum)g(value)191 781 y([bin)h(x)g(=)g(1:512])142 b(-)47 b(use)g(default)f(bin)h(size)191 894 y([bin)g(x)g(=)g(1:])286 b(-)47 b(use)g(default)f(maximum)g(value)g(and)h(bin)g(size)191 1007 y([bin)g(x)g(=)g(:512])190 b(-)47 b(use)g(default)f(minimum)g (value)g(and)h(bin)g(size)191 1120 y([bin)g(x)g(=)g(2])334 b(-)47 b(use)g(default)f(minimum)g(and)h(maximum)f(values)191 1233 y([bin)h(x])524 b(-)47 b(use)g(default)f(minimum,)g(maximum)g(and) g(bin)h(size)191 1346 y([bin)g(4])524 b(-)47 b(default)f(2-D)h(image,)f (bin)h(size)g(=)g(4)h(in)f(both)g(axes)191 1458 y([bin])619 b(-)47 b(default)f(2-D)h(image)0 1713 y Fi(CFITSIO)31 b(will)f(use)i(the)h(v)-5 b(alue)32 b(of)h(the)g(TLMINn,)f(TLMAXn,)h (and)f(TDBINn)h(k)m(eyw)m(ords,)h(if)d(they)i(exist,)g(for)0 1826 y(the)k(default)e(min,)i(max,)h(and)e(binsize,)g(resp)s(ectiv)m (ely)-8 b(.)59 b(If)36 b(they)h(do)f(not)h(exist)f(then)g(CFITSIO)f (will)f(use)i(the)0 1939 y(actual)c(minim)m(um)d(and)j(maxim)m(um)f(v) -5 b(alues)31 b(in)g(the)h(column)e(for)i(the)g(histogram)g(min)e(and)i (max)g(v)-5 b(alues.)44 b(The)0 2052 y(default)33 b(binsize)e(will)g(b) s(e)i(set)h(to)h(1,)g(or)e(\(max)h(-)g(min\))e(/)i(10.,)i(whic)m(hev)m (er)d(is)g(smaller,)g(so)g(that)i(the)e(histogram)0 2165 y(will)28 b(ha)m(v)m(e)j(at)g(least)g(10)g(bins)e(along)h(eac)m(h)i (axis.)0 2325 y(A)41 b(shortcut)g(notation)g(is)f(allo)m(w)m(ed)h(if)f (all)g(the)h(columns/axes)g(ha)m(v)m(e)h(the)f(same)g(binning)d(sp)s (eci\014cation.)72 b(In)0 2438 y(this)32 b(case)h(all)f(the)h(column)e (names)i(ma)m(y)g(b)s(e)f(listed)f(within)f(paren)m(theses,)k(follo)m (w)m(ed)f(b)m(y)f(the)h(\(single\))f(binning)0 2551 y(sp)s (eci\014cation,)d(as)i(in:)191 2805 y Fe([bin)47 b(\(X,Y\)=1:512:2])191 2918 y([bin)g(\(X,Y\))f(=)h(5])0 3172 y Fi(The)31 b(optional)g(w)m (eigh)m(ting)h(factor)g(is)f(the)h(last)f(item)h(in)e(the)i(binning)d (sp)s(eci\014er)h(and,)i(if)e(presen)m(t,)j(is)d(separated)0 3285 y(from)38 b(the)g(list)f(of)h(columns)f(b)m(y)h(a)h(semi-colon.)63 b(As)39 b(the)f(histogram)g(is)f(accum)m(ulated,)k(this)c(w)m(eigh)m(t) i(is)e(used)0 3398 y(to)e(incremen)m(ted)e(the)h(v)-5 b(alue)34 b(of)g(the)g(appropriated)e(bin)h(in)f(the)i(histogram.)51 b(If)34 b(the)g(w)m(eigh)m(ting)g(factor)h(is)e(not)0 3511 y(sp)s(eci\014ed,)23 b(then)g(the)g(default)f(w)m(eigh)m(t)i(=)e (1)i(is)e(assumed.)37 b(The)23 b(w)m(eigh)m(ting)g(factor)h(ma)m(y)f(b) s(e)g(a)g(constan)m(t)i(in)m(teger)e(or)0 3624 y(\015oating)29 b(p)s(oin)m(t)f(n)m(um)m(b)s(er,)g(or)h(the)g(name)g(of)g(a)g(k)m(eyw)m (ord)h(con)m(taining)e(the)i(w)m(eigh)m(ting)e(v)-5 b(alue.)40 b(Or)28 b(the)h(w)m(eigh)m(ting)0 3737 y(factor)g(ma)m(y)g(b)s(e)e(the) h(name)g(of)h(a)f(table)g(column)f(in)g(whic)m(h)f(case)k(the)e(v)-5 b(alue)27 b(in)g(that)i(column,)e(on)h(a)h(ro)m(w)f(b)m(y)g(ro)m(w)0 3850 y(basis,)h(will)f(b)s(e)i(used.)0 4010 y(In)35 b(some)h(cases,)i (the)d(column)g(or)g(k)m(eyw)m(ord)h(ma)m(y)g(giv)m(e)g(the)g(recipro)s (cal)e(of)i(the)g(actual)g(w)m(eigh)m(t)g(v)-5 b(alue)35 b(that)h(is)0 4123 y(needed.)49 b(In)32 b(this)g(case,)j(precede)e(the) h(w)m(eigh)m(t)f(k)m(eyw)m(ord)h(or)f(column)f(name)h(b)m(y)g(a)g (slash)f('/')i(to)g(tell)e(CFITSIO)0 4236 y(to)f(use)f(the)h(recipro)s (cal)e(of)h(the)h(v)-5 b(alue)30 b(when)f(constructing)h(the)h (histogram.)0 4396 y(F)-8 b(or)35 b(complex)e(or)h(commonly)f(used)g (histograms,)i(one)f(can)g(also)g(place)g(its)f(description)f(in)m(to)i (a)g(text)h(\014le)e(and)0 4509 y(imp)s(ort)43 b(it)g(in)m(to)i(the)f (binning)d(sp)s(eci\014cation)i(using)g(the)i(syn)m(tax)f('[bin)f (@\014lename.txt]'.)83 b(The)44 b(\014le's)f(con-)0 4622 y(ten)m(ts)37 b(can)e(extend)h(o)m(v)m(er)h(m)m(ultiple)c(lines,)j (although)f(it)g(m)m(ust)g(still)f(conform)i(to)g(the)g(no-spaces)g (rule)e(for)i(the)0 4735 y(min:max:binsize)e(syn)m(tax)k(and)e(eac)m(h) i(axis)f(sp)s(eci\014cation)f(m)m(ust)h(still)d(b)s(e)j (comma-separated.)62 b(An)m(y)37 b(lines)e(in)0 4848 y(the)d(external)g(text)h(\014le)e(that)i(b)s(egin)d(with)h(2)h(slash)f (c)m(haracters)i(\('//'\))h(will)29 b(b)s(e)j(ignored)f(and)g(ma)m(y)i (b)s(e)e(used)g(to)0 4961 y(add)f(commen)m(ts)h(in)m(to)f(the)h (\014le.)0 5121 y(Examples:)191 5375 y Fe([bini)46 b(detx,)h(dety])762 b(-)47 b(2-D,)g(16-bit)f(integer)g(histogram)1861 5488 y(of)i(DETX)e(and)h(DETY)g(columns,)e(using)1861 5601 y(default)h(values)g(for)h(the)g(histogram)1861 5714 y(range)g(and)g(binsize)p eop %%Page: 39 45 39 44 bop 0 299 a Fg(4.10.)113 b(BINNING)31 b(OR)f(HISTOGRAMMING)h (SPECIFICA)-8 b(TION)1313 b Fi(39)191 668 y Fe([bin)47 b(\(detx,)f(dety\)=16;)f(/exposure])g(-)i(2-D,)g(32-bit)f(real)h (histogram)e(of)i(DETX)1861 781 y(and)g(DETY)g(columns)f(with)g(a)i (bin)f(size)f(=)i(16)1861 894 y(in)g(both)e(axes.)h(The)f(histogram)g (values)1861 1007 y(are)h(divided)f(by)h(the)g(EXPOSURE)f(keyword)1861 1120 y(value.)191 1346 y([bin)h(time=TSTART:TSTOP:0.1])280 b(-)47 b(1-D)g(lightcurve,)e(range)h(determined)f(by)1861 1458 y(the)i(TSTART)f(and)h(TSTOP)g(keywords,)1861 1571 y(with)g(0.1)g(unit)g(size)f(bins.)191 1797 y([bin)h(pha,)f (time=8000.:8100.:0.1])90 b(-)47 b(2-D)g(image)g(using)f(default)g (binning)1861 1910 y(of)i(the)e(PHA)h(column)f(for)h(the)g(X)h(axis,) 1861 2023 y(and)f(1000)g(bins)g(in)g(the)g(range)1861 2136 y(8000.)g(to)g(8100.)f(for)h(the)g(Y)h(axis.)191 2362 y([bin)f(@binFilter.txt])616 b(-)47 b(Use)g(the)g(contents)f(of)h (the)g(text)f(file)1861 2475 y(binFilter.txt)f(for)h(the)h(binning)1861 2588 y(specifications.)p eop %%Page: 40 46 40 45 bop 0 299 a Fi(40)1618 b Fg(CHAPTER)30 b(4.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)p eop %%Page: 41 47 41 46 bop 0 1225 a Ff(Chapter)65 b(5)0 1687 y Fl(T)-19 b(emplate)76 b(Files)0 2180 y Fi(When)38 b(a)h(new)f(FITS)g(\014le)g (is)g(created)h(with)f(a)g(call)g(to)i(\014ts)p 2101 2180 28 4 v 32 w(create)p 2369 2180 V 35 w(\014le,)f(the)g(name)g(of)g (a)g(template)g(\014le)e(ma)m(y)0 2293 y(b)s(e)i(supplied)e(in)i(paren) m(theses)h(immediately)e(follo)m(wing)g(the)j(name)f(of)g(the)g(new)f (\014le)g(to)i(b)s(e)e(created.)71 b(This)0 2406 y(template)26 b(is)e(used)h(to)h(de\014ne)f(the)h(structure)f(of)h(one)f(or)h(more)g (HDUs)g(in)e(the)i(new)f(\014le.)38 b(The)25 b(template)h(\014le)e(ma)m (y)0 2518 y(b)s(e)32 b(another)h(FITS)f(\014le,)h(in)f(whic)m(h)f(case) j(the)f(newly)f(created)i(\014le)e(will)e(ha)m(v)m(e)k(exactly)g(the)f (same)g(k)m(eyw)m(ords)g(in)0 2631 y(eac)m(h)25 b(HDU)g(as)g(in)e(the)h (template)h(FITS)e(\014le,)i(but)e(all)h(the)g(data)h(units)d(will)g(b) s(e)i(\014lled)e(with)g(zeros.)40 b(The)24 b(template)0 2744 y(\014le)h(ma)m(y)i(also)f(b)s(e)f(an)h(ASCI)s(I)e(text)j(\014le,) f(where)g(eac)m(h)h(line)d(\(in)h(general\))i(describ)s(es)d(one)i (FITS)f(k)m(eyw)m(ord)i(record.)0 2857 y(The)j(format)h(of)f(the)h (ASCI)s(I)e(template)h(\014le)g(is)f(describ)s(ed)f(in)i(the)g(follo)m (wing)f(sections.)0 3188 y Fd(5.1)135 b(Detailed)47 b(T)-11 b(emplate)46 b(Line)f(F)-11 b(ormat)0 3438 y Fi(The)30 b(format)h(of)f(eac)m(h)i(ASCI)s(I)c(template)j(line)e(closely)h(follo) m(ws)f(the)i(format)g(of)f(a)h(FITS)f(k)m(eyw)m(ord)g(record:)95 3682 y Fe(KEYWORD)46 b(=)i(KEYVALUE)d(/)j(COMMENT)0 3926 y Fi(except)22 b(that)g(free)g(format)f(ma)m(y)h(b)s(e)f(used)f (\(e.g.,)25 b(the)d(equals)e(sign)h(ma)m(y)g(app)s(ear)g(at)h(an)m(y)g (p)s(osition)d(in)h(the)i(line\))e(and)0 4039 y(T)-8 b(AB)34 b(c)m(haracters)g(are)g(allo)m(w)m(ed)f(and)g(are)g(treated)h (the)g(same)f(as)h(space)f(c)m(haracters.)51 b(The)33 b(KEYV)-10 b(ALUE)33 b(and)0 4152 y(COMMENT)d(\014elds)f(are)i (optional.)41 b(The)30 b(equals)g(sign)f(c)m(haracter)k(is)c(also)i (optional,)f(but)g(it)g(is)f(recommended)0 4264 y(that)42 b(it)e(b)s(e)h(included)d(for)j(clarit)m(y)-8 b(.)73 b(An)m(y)41 b(template)h(line)d(that)j(b)s(egins)e(with)f(the)j(p)s (ound)d('#')i(c)m(haracter)i(is)0 4377 y(ignored)29 b(b)m(y)i(the)f (template)h(parser)f(and)g(ma)m(y)h(b)s(e)e(use)h(to)h(insert)f(commen) m(ts)h(in)m(to)f(the)h(template)g(\014le)e(itself.)0 4538 y(The)d(KEYW)m(ORD)g(name)g(\014eld)f(is)g(limited)f(to)j(8)f(c)m (haracters)h(in)e(length)h(and)f(only)g(the)h(letters)h(A-Z,)f(digits)f (0-9,)0 4650 y(and)j(the)g(h)m(yphen)f(and)h(underscore)g(c)m (haracters)h(ma)m(y)g(b)s(e)f(used,)g(without)g(an)m(y)g(em)m(b)s (edded)g(spaces.)40 b(Lo)m(w)m(ercase)0 4763 y(letters)21 b(in)f(the)i(template)f(k)m(eyw)m(ord)h(name)f(will)d(b)s(e)j(con)m(v)m (erted)i(to)f(upp)s(ercase.)36 b(Leading)21 b(spaces)g(in)f(the)i (template)0 4876 y(line)i(preceding)h(the)g(k)m(eyw)m(ord)h(name)g(are) g(generally)f(ignored,)h(except)g(if)f(the)h(\014rst)f(8)h(c)m (haracters)h(of)f(a)g(template)0 4989 y(line)d(are)j(all)e(blank,)h (then)g(the)g(en)m(tire)g(line)f(is)g(treated)i(as)f(a)h(FITS)e(commen) m(t)i(k)m(eyw)m(ord)g(\(with)e(a)i(blank)d(k)m(eyw)m(ord)0 5102 y(name\))31 b(and)f(is)f(copied)h(v)m(erbatim)g(in)m(to)g(the)h (FITS)e(header.)0 5262 y(The)37 b(KEYV)-10 b(ALUE)37 b(\014eld)f(ma)m(y)i(ha)m(v)m(e)g(an)m(y)g(allo)m(w)m(ed)f(FITS)g(data) h(t)m(yp)s(e:)54 b(c)m(haracter)39 b(string,)g(logical,)f(in)m(teger,)0 5375 y(real,)33 b(complex)f(in)m(teger,)i(or)e(complex)h(real.)46 b(The)32 b(c)m(haracter)j(string)c(v)-5 b(alues)32 b(need)g(not)h(b)s (e)f(enclosed)g(in)f(single)0 5488 y(quote)e(c)m(haracters)h(unless)d (they)h(are)h(necessary)g(to)g(distinguish)24 b(the)29 b(string)e(from)h(a)h(di\013eren)m(t)f(data)h(t)m(yp)s(e)f(\(e.g.)0 5601 y(2.0)h(is)d(a)i(real)g(but)f('2.0')i(is)e(a)h(string\).)39 b(The)27 b(k)m(eyw)m(ord)h(has)f(an)h(unde\014ned)d(\(n)m(ull\))h(v)-5 b(alue)28 b(if)e(the)i(template)g(record)0 5714 y(only)h(con)m(tains)i (blanks)e(follo)m(wing)g(the)h("=")h(or)g(b)s(et)m(w)m(een)g(the)f("=") h(and)f(the)g("/")i(commen)m(t)g(\014eld)c(delimiter.)1905 5942 y(41)p eop %%Page: 42 48 42 47 bop 0 299 a Fi(42)2340 b Fg(CHAPTER)30 b(5.)71 b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Fi(String)25 b(k)m(eyw)m(ord)i(v)-5 b(alues)26 b(longer)g(than)g(68)h(c)m(haracters)h(\(the)f(maxim)m(um)e (length)h(that)h(will)d(\014t)i(in)f(a)i(single)e(FITS)0 668 y(k)m(eyw)m(ord)41 b(record\))g(are)g(p)s(ermitted)e(using)g(the)i (CFITSIO)e(long)h(string)g(con)m(v)m(en)m(tion.)73 b(They)40 b(can)h(either)f(b)s(e)0 781 y(sp)s(eci\014ed)27 b(as)j(a)f(single)f (long)g(line)g(in)f(the)j(template,)g(or)f(b)m(y)f(using)g(m)m(ultiple) f(lines)g(where)h(the)i(con)m(tin)m(uing)e(lines)0 894 y(con)m(tain)j(the)f('CONTINUE')g(k)m(eyw)m(ord,)h(as)g(in)e(this)g (example:)95 1139 y Fe(LONGKEY)46 b(=)i('This)e(is)h(a)h(long)e(string) g(value)h(that)f(is)i(contin&')95 1252 y(CONTINUE)94 b('ued)46 b(over)h(2)g(records')f(/)h(comment)f(field)h(goes)f(here)0 1497 y Fi(The)29 b(format)h(of)g(template)g(lines)d(with)i(CONTINUE)f (k)m(eyw)m(ord)i(is)f(v)m(ery)h(strict:)40 b(3)30 b(spaces)g(m)m(ust)f (follo)m(w)g(CON-)0 1610 y(TINUE)h(and)g(the)g(rest)h(of)f(the)h(line)e (is)g(copied)h(v)m(erbatim)g(to)h(the)g(FITS)e(\014le.)0 1771 y(The)i(start)h(of)g(the)f(optional)g(COMMENT)g(\014eld)f(m)m(ust) i(b)s(e)e(preceded)i(b)m(y)f("/",)i(whic)m(h)d(is)h(used)g(to)h (separate)g(it)0 1883 y(from)e(the)g(k)m(eyw)m(ord)h(v)-5 b(alue)29 b(\014eld.)40 b(Exceptions)29 b(are)i(if)e(the)i(KEYW)m(ORD)g (name)f(\014eld)f(con)m(tains)h(COMMENT,)0 1996 y(HISTOR)-8 b(Y,)30 b(CONTINUE,)g(or)g(if)f(the)i(\014rst)f(8)g(c)m(haracters)i(of) f(the)f(template)h(line)e(are)i(blanks.)0 2157 y(More)c(than)f(one)h (Header-Data)i(Unit)d(\(HDU\))h(ma)m(y)g(b)s(e)f(de\014ned)f(in)g(the)i (template)g(\014le.)38 b(The)26 b(start)h(of)g(an)f(HDU)0 2269 y(de\014nition)i(is)h(denoted)i(with)e(a)i(SIMPLE)e(or)i(XTENSION) e(template)i(line:)0 2430 y(1\))j(SIMPLE)f(b)s(egins)f(a)i(Primary)f (HDU)h(de\014nition.)48 b(SIMPLE)33 b(ma)m(y)h(only)f(app)s(ear)g(as)h (the)g(\014rst)f(k)m(eyw)m(ord)h(in)0 2543 y(the)e(template)h(\014le.) 44 b(If)32 b(the)g(template)h(\014le)e(b)s(egins)f(with)h(XTENSION)g (instead)g(of)h(SIMPLE,)g(then)f(a)i(default)0 2655 y(empt)m(y)d (Primary)d(HDU)j(is)f(created,)i(and)d(the)i(template)g(is)e(then)h (assumed)f(to)i(de\014ne)f(the)h(k)m(eyw)m(ords)f(starting)0 2768 y(with)g(the)i(\014rst)e(extension)h(follo)m(wing)f(the)i(Primary) e(HDU.)0 2928 y(2\))35 b(XTENSION)e(marks)g(the)i(b)s(eginning)c(of)j (a)h(new)e(extension)h(HDU)g(de\014nition.)50 b(The)33 b(previous)g(HDU)i(will)0 3041 y(b)s(e)30 b(closed)g(at)h(this)e(p)s (oin)m(t)h(and)f(pro)s(cessing)h(of)g(the)h(next)f(extension)g(b)s (egins.)0 3373 y Fd(5.2)135 b(Auto-indexing)45 b(of)h(Keyw)l(ords)0 3623 y Fi(If)31 b(a)h(template)f(k)m(eyw)m(ord)h(name)f(ends)g(with)f (a)h("#")h(c)m(haracter,)i(it)d(is)f(said)g(to)i(b)s(e)f ('auto-indexed'.)43 b(Eac)m(h)32 b("#")0 3736 y(c)m(haracter)i(will)c (b)s(e)i(replaced)h(b)m(y)f(the)h(curren)m(t)g(in)m(teger)g(index)e(v) -5 b(alue,)33 b(whic)m(h)f(gets)h(reset)h(=)e(1)h(at)h(the)e(start)i (of)0 3849 y(eac)m(h)h(new)f(HDU)g(in)f(the)h(\014le)f(\(or)h(7)h(in)d (the)i(sp)s(ecial)f(case)i(of)f(a)g(GR)m(OUP)h(de\014nition\).)49 b(The)33 b(FIRST)g(indexed)0 3962 y(k)m(eyw)m(ord)c(in)e(eac)m(h)i (template)g(HDU)g(de\014nition)d(is)h(used)g(as)i(the)f('incremen)m (tor';)i(eac)m(h)f(subsequen)m(t)f(o)s(ccurrence)0 4075 y(of)k(this)e(SAME)h(k)m(eyw)m(ord)h(will)d(cause)j(the)g(index)e(v)-5 b(alue)31 b(to)h(b)s(e)f(incremen)m(ted.)43 b(This)30 b(b)s(eha)m(vior)g(can)i(b)s(e)f(rather)0 4188 y(subtle,)c(as)h (illustrated)e(in)g(the)i(follo)m(wing)e(examples)h(in)f(whic)m(h)h (the)h(TTYPE)e(k)m(eyw)m(ord)i(is)f(the)h(incremen)m(tor)f(in)0 4300 y(b)s(oth)j(cases:)95 4546 y Fe(TTYPE#)47 b(=)g(TIME)95 4659 y(TFORM#)g(=)g(1D)95 4772 y(TTYPE#)g(=)g(RATE)95 4884 y(TFORM#)g(=)g(1E)0 5130 y Fi(will)23 b(create)28 b(TTYPE1,)e(TF)m(ORM1,)i(TTYPE2,)f(and)e(TF)m(ORM2)i(k)m(eyw)m(ords.)40 b(But)26 b(if)f(the)h(template)g(lo)s(oks)f(lik)m(e,)95 5375 y Fe(TTYPE#)47 b(=)g(TIME)95 5488 y(TTYPE#)g(=)g(RATE)95 5601 y(TFORM#)g(=)g(1D)95 5714 y(TFORM#)g(=)g(1E)p eop %%Page: 43 49 43 48 bop 0 299 a Fg(5.3.)72 b(TEMPLA)-8 b(TE)30 b(P)-8 b(ARSER)30 b(DIRECTIVES)2073 b Fi(43)0 555 y(this)30 b(results)f(in)h(a)h(FITS)f(\014les)g(with)f(TTYPE1,)i(TTYPE2,)g(TF)m (ORM2,)h(and)e(TF)m(ORM2,)i(whic)m(h)e(is)g(probably)0 668 y(not)h(what)f(w)m(as)h(in)m(tended!)0 1000 y Fd(5.3)135 b(T)-11 b(emplate)46 b(P)l(arser)g(Directiv)l(es)0 1251 y Fi(In)29 b(addition)g(to)h(the)g(template)h(lines)d(whic)m(h)h (de\014ne)g(individual)d(k)m(eyw)m(ords,)k(the)g(template)h(parser)e (recognizes)0 1363 y(3)h(sp)s(ecial)f(directiv)m(es)g(whic)m(h)g(are)h (eac)m(h)h(preceded)f(b)m(y)f(the)h(bac)m(kslash)g(c)m(haracter:)90 b Fe(\\include,)45 b(\\group)p Fi(,)29 b(and)48 1476 y Fe(\\end)p Fi(.)0 1637 y(The)37 b('include')f(directiv)m(e)i(m)m(ust) f(b)s(e)h(follo)m(w)m(ed)f(b)m(y)h(a)g(\014lename.)62 b(It)38 b(forces)g(the)g(parser)f(to)i(temp)s(orarily)d(stop)0 1749 y(reading)e(the)h(curren)m(t)g(template)g(\014le)f(and)g(b)s(egin) g(reading)g(the)h(include)d(\014le.)54 b(Once)35 b(the)g(parser)f(reac) m(hes)i(the)0 1862 y(end)f(of)h(the)g(include)d(\014le)i(it)g(con)m (tin)m(ues)g(parsing)g(the)g(curren)m(t)h(template)g(\014le.)55 b(Include)34 b(\014les)h(can)h(b)s(e)f(nested,)0 1975 y(and)30 b(HDU)h(de\014nitions)d(can)i(span)g(m)m(ultiple)e(template)j (\014les.)0 2135 y(The)g(start)h(of)g(a)g(GR)m(OUP)h(de\014nition)c(is) i(denoted)h(with)e(the)i('group')g(directiv)m(e,)f(and)h(the)f(end)h (of)f(a)i(GR)m(OUP)0 2248 y(de\014nition)i(is)i(denoted)g(with)f(the)i ('end')f(directiv)m(e.)61 b(Eac)m(h)39 b(GR)m(OUP)e(con)m(tains)h(0)g (or)f(more)h(mem)m(b)s(er)f(blo)s(c)m(ks)0 2361 y(\(HDUs)44 b(or)f(GR)m(OUPs\).)79 b(Mem)m(b)s(er)42 b(blo)s(c)m(ks)h(of)g(t)m(yp)s (e)g(GR)m(OUP)g(can)g(con)m(tain)g(their)f(o)m(wn)h(mem)m(b)s(er)f(blo) s(c)m(ks.)0 2474 y(The)32 b(GR)m(OUP)g(de\014nition)e(itself)h(o)s (ccupies)h(one)g(FITS)g(\014le)f(HDU)i(of)f(sp)s(ecial)f(t)m(yp)s(e)h (\(GR)m(OUP)h(HDU\),)h(so)e(if)g(a)0 2587 y(template)f(sp)s(eci\014es)e (1)i(group)e(with)g(1)i(mem)m(b)s(er)f(HDU)h(lik)m(e:)0 2838 y Fe(\\group)0 2951 y(grpdescr)46 b(=)h('demo')0 3064 y(xtension)f(bintable)0 3177 y(#)h(this)g(bintable)f(has)h(0)g (cols,)f(0)i(rows)0 3290 y(\\end)0 3541 y Fi(then)30 b(the)h(parser)e(creates)j(a)f(FITS)f(\014le)f(with)g(3)i(HDUs)g(:)0 3792 y Fe(1\))47 b(dummy)g(PHDU)0 3905 y(2\))g(GROUP)g(HDU)f(\(has)h(1) h(member,)d(which)i(is)g(bintable)e(in)j(HDU)f(number)f(3\))0 4018 y(3\))h(bintable)f(\(member)g(of)h(GROUP)f(in)h(HDU)g(number)f (2\))0 4269 y Fi(T)-8 b(ec)m(hnically)29 b(sp)s(eaking,)g(the)g(GR)m (OUP)i(HDU)f(is)f(a)h(BINT)-8 b(ABLE)30 b(with)f(6)h(columns.)39 b(Applications)28 b(can)i(de\014ne)0 4382 y(additional)20 b(columns)h(in)f(a)j(GR)m(OUP)f(HDU)h(using)e(TF)m(ORMn)g(and)h(TTYPEn) f(\(where)g(n)h(is)f(7,)j(8,)h(....\))39 b(k)m(eyw)m(ords)0 4494 y(or)30 b(their)g(auto-indexing)f(equiv)-5 b(alen)m(ts.)0 4655 y(F)d(or)26 b(a)f(more)g(complicated)f(example)g(of)h(a)h (template)f(\014le)f(using)f(the)i(group)f(directiv)m(es,)i(lo)s(ok)e (at)h(the)g(sample.tpl)0 4767 y(\014le)k(that)i(is)f(included)d(in)j (the)g(CFITSIO)f(distribution.)0 5100 y Fd(5.4)135 b(F)-11 b(ormal)46 b(T)-11 b(emplate)45 b(Syn)l(tax)0 5350 y Fi(The)30 b(template)h(syn)m(tax)g(can)f(formally)f(b)s(e)h(de\014ned)f (as)i(follo)m(ws:)191 5601 y Fe(TEMPLATE)45 b(=)j(BLOCK)e([)i(BLOCK)e (...)h(])p eop %%Page: 44 50 44 49 bop 0 299 a Fi(44)2340 b Fg(CHAPTER)30 b(5.)71 b(TEMPLA)-8 b(TE)30 b(FILES)334 555 y Fe(BLOCK)46 b(=)i({)f(HDU)g(|)h (GROUP)e(})334 781 y(GROUP)g(=)i(\\GROUP)e([)h(BLOCK)g(...)g(])g(\\END) 430 1007 y(HDU)f(=)i(XTENSION)d([)j(LINE)f(...)f(])i({)f(XTENSION)f(|)h (\\GROUP)f(|)i(\\END)f(|)g(EOF)g(})382 1233 y(LINE)f(=)i([)f(KEYWORD)f ([)i(=)f(])h(])f([)g(VALUE)g(])g([)h(/)f(COMMENT)f(])191 1458 y(X)h(...)238 b(-)48 b(X)f(can)g(be)g(present)f(1)h(or)h(more)e (times)191 1571 y({)h(X)h(|)f(Y)h(})f(-)h(X)f(or)g(Y)191 1684 y([)g(X)h(])238 b(-)48 b(X)f(is)g(optional)0 1937 y Fi(A)m(t)34 b(the)f(topmost)g(lev)m(el,)g(the)g(template)h(de\014nes) d(1)j(or)e(more)h(template)g(blo)s(c)m(ks.)48 b(Blo)s(c)m(ks)33 b(can)g(b)s(e)f(either)g(HDU)0 2050 y(\(Header)27 b(Data)h(Unit\))f(or) f(a)h(GR)m(OUP)-8 b(.)28 b(F)-8 b(or)27 b(eac)m(h)g(blo)s(c)m(k)f(the)h (parser)f(creates)i(1)f(\(or)g(more)f(for)h(GR)m(OUPs\))g(FITS)0 2163 y(\014le)i(HDUs.)0 2495 y Fd(5.5)135 b(Errors)0 2745 y Fi(In)24 b(general)g(the)g(\014ts)p 692 2745 28 4 v 33 w(execute)p 1019 2745 V 34 w(template\(\))h(function)e(tries)h (to)h(b)s(e)f(as)g(atomic)h(as)g(p)s(ossible,)e(so)h(either)g(ev)m (erything)0 2858 y(is)f(done)h(or)g(nothing)e(is)h(done.)39 b(If)23 b(an)h(error)f(o)s(ccurs)h(during)e(parsing)g(of)i(the)g (template,)i(\014ts)p 3125 2858 V 33 w(execute)p 3452 2858 V 34 w(template\(\))0 2971 y(will)i(\(try)j(to\))h(delete)f(the)g (top)g(lev)m(el)f(BLOCK)g(\(with)g(all)f(its)i(c)m(hildren)d(if)i(an)m (y\))h(in)f(whic)m(h)f(the)i(error)f(o)s(ccurred,)0 3084 y(then)g(it)g(will)e(stop)i(reading)g(the)g(template)h(\014le)e(and)h (it)g(will)e(return)h(with)g(an)h(error.)0 3417 y Fd(5.6)135 b(Examples)0 3667 y Fi(1.)54 b(This)33 b(template)i(\014le)f(will)e (create)k(a)f(200)h(x)e(300)i(pixel)d(image,)k(with)c(4-b)m(yte)j(in)m (teger)f(pixel)e(v)-5 b(alues,)35 b(in)f(the)0 3780 y(primary)28 b(HDU:)95 4032 y Fe(SIMPLE)47 b(=)g(T)95 4145 y(BITPIX)g(=)g(32)95 4258 y(NAXIS)g(=)g(2)239 b(/)47 b(number)f(of)h(dimensions)95 4371 y(NAXIS1)g(=)g(100)95 b(/)47 b(length)f(of)h(first)g(axis)95 4484 y(NAXIS2)g(=)g(200)95 b(/)47 b(length)f(of)h(second)f(axis)95 4597 y(OBJECT)h(=)g(NGC)g(253)g(/)g(name)g(of)g(observed)f(object)0 4850 y Fi(The)35 b(allo)m(w)m(ed)g(v)-5 b(alues)35 b(of)g(BITPIX)g(are) h(8,)h(16,)h(32,)g(-32,)g(or)d(-64,)j(represen)m(ting,)e(resp)s(ectiv)m (ely)-8 b(,)37 b(8-bit)e(in)m(teger,)0 4962 y(16-bit)c(in)m(teger,)g (32-bit)f(in)m(teger,)h(32-bit)g(\015oating)f(p)s(oin)m(t,)g(or)g(64)h (bit)f(\015oating)g(p)s(oin)m(t)f(pixels.)0 5123 y(2.)39 b(T)-8 b(o)23 b(create)h(a)f(FITS)e(table,)k(the)d(template)h(\014rst)f (needs)g(to)i(include)c(XTENSION)i(=)g(T)-8 b(ABLE)23 b(or)f(BINT)-8 b(ABLE)0 5235 y(to)31 b(de\014ne)e(whether)g(it)g(is)g (an)g(ASCI)s(I)g(or)g(binary)f(table,)i(and)g(NAXIS2)g(to)g(de\014ne)f (the)h(n)m(um)m(b)s(er)f(of)h(ro)m(ws)f(in)g(the)0 5348 y(table.)49 b(Tw)m(o)34 b(template)f(lines)f(are)i(then)f(needed)f(to)i (de\014ne)f(the)g(name)h(\(TTYPEn\))e(and)h(FITS)g(data)h(format)0 5461 y(\(TF)m(ORMn\))d(of)f(the)h(columns,)e(as)i(in)e(this)g(example:) 95 5714 y Fe(xtension)46 b(=)h(bintable)p eop %%Page: 45 51 45 50 bop 0 299 a Fg(5.6.)72 b(EXAMPLES)3084 b Fi(45)95 555 y Fe(naxis2)47 b(=)g(40)95 668 y(ttype#)g(=)g(Name)95 781 y(tform#)g(=)g(10a)95 894 y(ttype#)g(=)g(Npoints)95 1007 y(tform#)g(=)g(j)95 1120 y(ttype#)g(=)g(Rate)95 1233 y(tunit#)g(=)g(counts/s)95 1346 y(tform#)g(=)g(e)0 1605 y Fi(The)26 b(ab)s(o)m(v)m(e)j(example)d(de\014nes)g(a)i(n)m(ull)d (primary)g(arra)m(y)i(follo)m(w)m(ed)g(b)m(y)g(a)g(40-ro)m(w)h(binary)d (table)i(extension)g(with)f(3)0 1718 y(columns)h(called)g('Name',)j ('Np)s(oin)m(ts',)e(and)g('Rate',)i(with)d(data)i(formats)f(of)g('10A') i(\(ASCI)s(I)d(c)m(haracter)i(string\),)0 1831 y('1J')k(\(in)m(teger\)) h(and)e('1E')i(\(\015oating)e(p)s(oin)m(t\),)h(resp)s(ectiv)m(ely)-8 b(.)48 b(Note)34 b(that)f(the)g(other)g(required)e(FITS)h(k)m(eyw)m (ords)0 1944 y(\(BITPIX,)37 b(NAXIS,)g(NAXIS1,)h(PCOUNT,)e(GCOUNT,)h (TFIELDS,)f(and)g(END\))h(do)g(not)g(need)f(to)h(b)s(e)f(ex-)0 2057 y(plicitly)f(de\014ned)h(in)h(the)g(template)h(b)s(ecause)g(their) f(v)-5 b(alues)37 b(can)h(b)s(e)f(inferred)e(from)j(the)f(other)h(k)m (eyw)m(ords)g(in)0 2170 y(the)d(template.)54 b(This)33 b(example)i(also)g(illustrates)d(that)k(the)f(templates)g(are)g (generally)f(case-insensitiv)m(e)g(\(the)0 2283 y(k)m(eyw)m(ord)29 b(names)g(and)g(TF)m(ORMn)f(v)-5 b(alues)29 b(are)g(con)m(v)m(erted)i (to)e(upp)s(er-case)g(in)e(the)i(FITS)g(\014le\))f(and)g(that)i(string) 0 2396 y(k)m(eyw)m(ord)h(v)-5 b(alues)30 b(generally)f(do)h(not)h(need) f(to)h(b)s(e)f(enclosed)g(in)f(quotes.)p eop %%Page: 46 52 46 51 bop 0 299 a Fi(46)2340 b Fg(CHAPTER)30 b(5.)71 b(TEMPLA)-8 b(TE)30 b(FILES)p eop %%Page: 47 53 47 52 bop 0 1225 a Ff(Chapter)65 b(6)0 1687 y Fl(FITSIO)76 b(Con)-6 b(v)g(en)g(tions)76 b(and)h(Guidelines)0 2216 y Fd(6.1)135 b(CFITSIO)44 b(Size)h(Limitations)0 2476 y Fi(CFITSIO)31 b(places)h(few)h(restrictions)e(on)i(the)f(size)h(of)f (FITS)g(\014les)g(that)h(it)f(reads)g(or)h(writes.)46 b(There)32 b(are)h(a)g(few)0 2589 y(limits,)28 b(ho)m(w)m(ev)m(er,)k (whic)m(h)d(ma)m(y)i(a\013ect)h(some)f(extreme)g(cases:)0 2749 y(1.)43 b(The)31 b(maxim)m(um)f(n)m(um)m(b)s(er)g(of)h(FITS)f (\014les)g(that)i(ma)m(y)g(b)s(e)e(sim)m(ultaneously)f(op)s(ened)i(b)m (y)g(CFITSIO)e(is)h(set)i(b)m(y)0 2862 y(NMAXFILES)i(as)g(de\014ned)f (in)g(\014tsio2.h.)51 b(It)34 b(is)f(curren)m(tly)g(set)i(=)f(300)h(b)m (y)f(default.)51 b(CFITSIO)32 b(will)f(allo)s(cate)0 2975 y(ab)s(out)i(80)g(*)h(NMAXFILES)f(b)m(ytes)g(of)g(memory)g(for)g (in)m(ternal)e(use.)48 b(Note)34 b(that)g(the)f(underlying)d(C)i (compiler)0 3088 y(or)39 b(op)s(erating)g(system,)k(ma)m(y)d(ha)m(v)m (e)g(a)g(smaller)e(limit)g(on)h(the)h(n)m(um)m(b)s(er)e(of)i(op)s(ened) e(\014les.)67 b(The)39 b(C)h(sym)m(b)s(olic)0 3201 y(constan)m(t)31 b(F)m(OPEN)p 690 3201 28 4 v 34 w(MAX)f(is)f(in)m(tended)g(to)i (de\014ne)e(the)i(maxim)m(um)e(n)m(um)m(b)s(er)f(of)j(\014les)e(that)h (ma)m(y)h(op)s(en)e(at)i(once)0 3314 y(\(including)d(an)m(y)j(other)g (text)h(or)f(binary)e(\014les)h(that)i(ma)m(y)f(b)s(e)g(op)s(en,)f(not) h(just)g(FITS)f(\014les\).)42 b(On)30 b(some)h(systems)0 3427 y(it)f(has)g(b)s(een)g(found)f(that)i(gcc)g(supp)s(orts)e(a)h (maxim)m(um)g(of)g(255)i(op)s(ened)e(\014les.)0 3587 y(Note)d(that)e(op)s(ening)f(and)h(op)s(erating)g(on)g(man)m(y)g(FITS)g (\014les)f(sim)m(ultaneously)f(in)h(parallel)f(ma)m(y)j(b)s(e)f(less)f (e\016cien)m(t)0 3700 y(than)k(op)s(erating)g(on)g(smaller)f(groups)h (of)h(\014les)e(in)g(series.)40 b(CFITSIO)27 b(only)g(has)h(NIOBUF)h(n) m(um)m(b)s(er)f(of)g(in)m(ternal)0 3813 y(bu\013ers)j(\(set)j(=)e(40)i (b)m(y)e(default\))h(that)g(are)g(used)f(for)g(temp)s(orary)g(storage)i (of)f(the)g(most)g(recen)m(t)h(data)f(records)0 3926 y(that)40 b(ha)m(v)m(e)g(b)s(een)e(read)h(or)g(written)f(in)f(the)i (FITS)f(\014les.)66 b(If)38 b(the)h(n)m(um)m(b)s(er)f(of)h(op)s(ened)f (\014les)g(is)g(greater)i(than)0 4039 y(NIOBUF,)j(then)f(CFITSIO)e(ma)m (y)j(w)m(aste)h(more)e(time)g(\015ushing)d(and)j(re-reading)g(or)g (re-writing)e(the)j(same)0 4152 y(records)30 b(in)f(the)i(FITS)e (\014les.)0 4312 y(2.)54 b(By)35 b(default,)g(CFITSIO)e(can)i(handle)f (FITS)g(\014les)f(up)h(to)h(2.1)h(GB)g(in)d(size)i(\(2**31)i(b)m (ytes\).)54 b(This)33 b(\014le)h(size)0 4425 y(limit)k(is)i(often)g (imp)s(osed)f(b)m(y)h(32-bit)h(op)s(erating)e(systems.)71 b(More)41 b(recen)m(tly)-8 b(,)44 b(as)d(64-bit)f(op)s(erating)g (systems)0 4538 y(b)s(ecome)33 b(more)g(common,)g(an)g(industry-wide)c (standard)j(\(at)i(least)e(on)h(Unix)e(systems\))i(has)g(b)s(een)f(dev) m(elop)s(ed)0 4650 y(to)39 b(supp)s(ort)d(larger)h(sized)h(\014les)f (\(see)h(h)m(ttp://ftp.sas.com/standards/large.\014le/\).)66 b(Starting)38 b(with)e(v)m(ersion)0 4763 y(2.1)45 b(of)e(CFITSIO,)f (larger)h(FITS)g(\014les)f(up)h(to)h(6)g(terab)m(ytes)h(in)d(size)h(ma) m(y)h(b)s(e)f(read)g(and)g(written)g(on)g(sup-)0 4876 y(p)s(orted)f(platforms.)75 b(In)42 b(order)g(to)h(supp)s(ort)e(these)h (larger)g(\014les,)j(CFITSIO)c(m)m(ust)h(b)s(e)g(compiled)f(with)g(the) 0 4989 y('-D)p 129 4989 V 34 w(LAR)m(GEFILE)p 696 4989 V 33 w(SOUR)m(CE')h(and)g(`-D)p 1491 4989 V 34 w(FILE)p 1736 4989 V 33 w(OFFSET)p 2137 4989 V 32 w(BITS=64')h(compiler)e (\015ags.)78 b(Some)43 b(platforms)0 5102 y(ma)m(y)c(also)f(require)f (the)h(`-D)p 1002 5102 V 34 w(LAR)m(GE)p 1358 5102 V 33 w(FILES')g(compiler)f(\015ag.)64 b(This)37 b(causes)h(the)h (compiler)e(to)i(allo)s(cate)f(8-)0 5215 y(b)m(ytes)44 b(instead)f(of)h(4-b)m(ytes)h(for)f(the)g(`o\013)p 1473 5215 V 33 w(t')g(datat)m(yp)s(e)h(whic)m(h)e(is)f(used)h(to)i(store)f (\014le)f(o\013set)i(p)s(ositions.)79 b(It)0 5328 y(app)s(ears)31 b(that)i(in)d(most)j(cases)g(it)e(is)g(not)h(necessary)h(to)f(also)g (include)e(these)i(compiler)f(\015ags)h(when)f(compiling)0 5441 y(programs)f(that)h(link)d(to)j(the)g(CFITSIO)e(library)-8 b(.)0 5601 y(If)21 b(CFITSIO)e(is)h(compiled)g(with)g(the)h(-D)p 1386 5601 V 33 w(LAR)m(GEFILE)p 1952 5601 V 34 w(SOUR)m(CE)f(and)g(-D)p 2654 5601 V 34 w(FILE)p 2899 5601 V 33 w(OFFSET)p 3300 5601 V 32 w(BITS=64)h(\015ags)0 5714 y(on)36 b(a)g(platform)f(that)h (supp)s(orts)e(large)i(\014les,)h(then)e(it)h(can)g(read)g(and)f(write) g(FITS)g(\014les)g(that)h(con)m(tain)g(up)f(to)1905 5942 y(47)p eop %%Page: 48 54 48 53 bop 0 299 a Fi(48)1277 b Fg(CHAPTER)29 b(6.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y Fi(2**31)39 b(2880-b)m(yte)g(FITS)d(records,)j(or)d(appro)m(ximately)g (6)h(terab)m(ytes)h(in)e(size.)59 b(It)37 b(is)f(still)f(required)f (that)k(the)0 668 y(v)-5 b(alue)29 b(of)g(the)g(NAXISn)f(and)h(PCOUNT)f (k)m(eyw)m(ords)h(in)f(eac)m(h)i(extension)f(b)s(e)f(within)f(the)i (range)h(of)f(a)g(signed)f(4-)0 781 y(b)m(yte)d(in)m(teger)g(\(max)g(v) -5 b(alue)25 b(=)f(2,147,483,648\).)44 b(Th)m(us,)25 b(eac)m(h)h(dimension)c(of)j(an)f(image)h(\(giv)m(en)g(b)m(y)g(the)g (NAXISn)0 894 y(k)m(eyw)m(ords\),)32 b(the)f(total)h(width)d(of)i(a)g (table)g(\(NAXIS1)h(k)m(eyw)m(ord\),)g(the)f(n)m(um)m(b)s(er)f(of)h(ro) m(ws)g(in)e(a)i(table)g(\(NAXIS2)0 1007 y(k)m(eyw)m(ord\),)d(and)d(the) h(total)h(size)f(of)g(the)g(v)-5 b(ariable-length)25 b(arra)m(y)h(heap)g(in)f(binary)f(tables)i(\(PCOUNT)f(k)m(eyw)m(ord\))0 1120 y(m)m(ust)30 b(b)s(e)g(less)g(than)g(this)f(limit.)0 1280 y(Curren)m(tly)-8 b(,)30 b(supp)s(ort)f(for)i(large)g(\014les)f (within)e(CFITSIO)h(has)i(b)s(een)f(tested)i(on)f(the)g(Lin)m(ux,)f (Solaris,)f(and)h(IBM)0 1393 y(AIX)g(op)s(erating)g(systems.)0 1750 y Fd(6.2)135 b(Multiple)46 b(Access)e(to)i(the)f(Same)g(FITS)f (File)0 2005 y Fi(CFITSIO)35 b(supp)s(orts)g(sim)m(ultaneous)g(read)h (and)g(write)g(access)h(to)h(m)m(ultiple)c(HDUs)j(in)e(the)i(same)g (FITS)f(\014le.)0 2118 y(Th)m(us,)43 b(one)e(can)h(op)s(en)e(the)h (same)h(FITS)e(\014le)g(t)m(wice)i(within)c(a)k(single)d(program)i(and) g(mo)m(v)m(e)h(to)g(2)f(di\013eren)m(t)0 2231 y(HDUs)30 b(in)e(the)i(\014le,)f(and)g(then)g(read)h(and)e(write)h(data)h(or)g(k) m(eyw)m(ords)g(to)g(the)g(2)f(extensions)h(just)e(as)i(if)f(one)g(w)m (ere)0 2344 y(accessing)e(2)g(completely)f(separate)h(FITS)f(\014les.) 38 b(Since)26 b(in)f(general)h(it)g(is)g(not)h(p)s(ossible)d(to)j(ph)m (ysically)d(op)s(en)i(the)0 2457 y(same)36 b(\014le)f(t)m(wice)h(and)f (then)g(exp)s(ect)h(to)g(b)s(e)f(able)g(to)i(sim)m(ultaneously)c(\(or)j (in)e(alternating)h(succession\))h(write)0 2570 y(to)f(2)f(di\013eren)m (t)g(lo)s(cations)g(in)e(the)j(\014le,)f(CFITSIO)f(recognizes)i(when)e (the)h(\014le)f(to)i(b)s(e)f(op)s(ened)f(\(in)g(the)i(call)e(to)0 2683 y(\014ts)p 127 2683 28 4 v 32 w(op)s(en)p 349 2683 V 33 w(\014le\))28 b(has)g(already)g(b)s(een)g(op)s(ened)g(and)g (instead)g(of)h(actually)f(op)s(ening)f(the)i(\014le)f(again,)h(just)f (logically)0 2796 y(links)g(the)j(new)f(\014le)g(to)h(the)g(old)e (\014le.)41 b(\(This)29 b(only)h(applies)e(if)i(the)h(\014le)e(is)h(op) s(ened)g(more)g(than)g(once)i(within)c(the)0 2908 y(same)g(program,)g (and)f(do)s(es)h(not)f(prev)m(en)m(t)i(the)f(same)g(\014le)e(from)h(b)s (eing)g(sim)m(ultaneously)e(op)s(ened)i(b)m(y)g(more)h(than)0 3021 y(one)h(program\).)40 b(Then)28 b(b)s(efore)g(CFITSIO)f(reads)h (or)h(writes)f(to)h(either)f(\(logical\))h(\014le,)f(it)g(mak)m(es)i (sure)d(that)j(an)m(y)0 3134 y(mo)s(di\014cations)g(made)h(to)h(the)g (other)g(\014le)e(ha)m(v)m(e)j(b)s(een)e(completely)g(\015ushed)e(from) i(the)h(in)m(ternal)e(bu\013ers)h(to)h(the)0 3247 y(\014le.)43 b(Th)m(us,)30 b(in)g(principle,)f(one)i(could)f(op)s(en)h(a)h(\014le)e (t)m(wice,)i(in)e(one)i(case)g(p)s(oin)m(ting)e(to)i(the)f(\014rst)g (extension)g(and)0 3360 y(in)i(the)i(other)g(p)s(oin)m(ting)d(to)k(the) e(2nd)g(extension)h(and)e(then)i(write)e(data)j(to)f(b)s(oth)f (extensions,)h(in)e(an)m(y)i(order,)0 3473 y(without)24 b(danger)i(of)f(corrupting)g(the)g(\014le,)h(There)f(ma)m(y)h(b)s(e)f (some)h(e\016ciency)f(p)s(enalties)f(in)g(doing)h(this)f(ho)m(w)m(ev)m (er,)0 3586 y(since)j(CFITSIO)g(has)h(to)h(\015ush)d(all)h(the)h(in)m (ternal)f(bu\013ers)g(related)h(to)h(one)f(\014le)f(b)s(efore)h(switc)m (hing)e(to)j(the)f(other,)0 3699 y(so)i(it)g(w)m(ould)f(still)f(b)s(e)i (pruden)m(t)f(to)i(minimize)d(the)i(n)m(um)m(b)s(er)f(of)i(times)e(one) i(switc)m(hes)f(bac)m(k)h(and)e(forth)h(b)s(et)m(w)m(een)0 3812 y(doing)f(I/O)i(to)g(di\013eren)m(t)f(HDUs)h(in)e(the)h(same)h (\014le.)0 4169 y Fd(6.3)135 b(Curren)l(t)46 b(Header)f(Data)h(Unit)g (\(CHDU\))0 4424 y Fi(In)32 b(general,)i(a)g(FITS)e(\014le)h(can)g(con) m(tain)g(m)m(ultiple)e(Header)j(Data)h(Units,)e(also)g(called)f (extensions.)48 b(CFITSIO)0 4537 y(only)37 b(op)s(erates)i(within)d (one)i(HDU)h(at)g(an)m(y)g(giv)m(en)f(time,)i(and)e(the)g(curren)m(tly) f(selected)i(HDU)g(is)e(called)h(the)0 4650 y(Curren)m(t)h(Header)h (Data)h(Unit)e(\(CHDU\).)i(When)f(a)g(FITS)f(\014le)g(is)f(\014rst)h (created)i(or)f(op)s(ened)f(the)h(CHDU)g(is)0 4763 y(automatically)25 b(de\014ned)e(to)j(b)s(e)e(the)h(\014rst)f(HDU)i(\(i.e.,)g(the)f (primary)e(arra)m(y\).)40 b(CFITSIO)23 b(routines)h(are)h(pro)m(vided)0 4876 y(to)36 b(mo)m(v)m(e)h(to)g(and)e(op)s(en)g(an)m(y)h(other)g (existing)e(HDU)j(within)c(the)j(FITS)f(\014le)f(or)i(to)g(app)s(end)e (or)i(insert)e(a)i(new)0 4989 y(HDU)31 b(in)e(the)i(FITS)e(\014le)h (whic)m(h)f(then)h(b)s(ecomes)h(the)f(CHDU.)0 5346 y Fd(6.4)135 b(Subroutine)45 b(Names)0 5601 y Fi(All)24 b(FITSIO)h(subroutine)f(names)i(b)s(egin)e(with)h(the)h(letters)g('ft') g(to)h(distinguish)22 b(them)k(from)f(other)h(subroutines)0 5714 y(and)34 b(are)h(5)g(or)f(6)h(c)m(haracters)h(long.)53 b(Users)34 b(should)f(not)h(name)h(their)f(o)m(wn)g(subroutines)e(b)s (eginning)g(with)h('ft')p eop %%Page: 49 55 49 54 bop 0 299 a Fg(6.5.)72 b(SUBR)m(OUTINE)30 b(F)-10 b(AMILIES)30 b(AND)h(D)m(A)-8 b(T)g(A)g(TYPES)1697 b Fi(49)0 555 y(to)32 b(a)m(v)m(oid)h(con\015icts.)44 b(\(The)32 b(SPP)f(in)m(terface)h(routines)e(all)h(b)s(egin)f(with)h('fs'\).)45 b(Subroutines)29 b(whic)m(h)h(read)i(or)g(get)0 668 y(information)c (from)i(the)h(FITS)e(\014le)g(ha)m(v)m(e)j(names)e(b)s(eginning)d(with) i('ftg...'.)43 b(Subroutines)27 b(whic)m(h)i(write)g(or)i(put)0 781 y(information)e(in)m(to)h(the)h(FITS)e(\014le)h(ha)m(v)m(e)h(names) g(b)s(eginning)c(with)i('ftp...'.)0 1274 y Fd(6.5)135 b(Subroutine)45 b(F)-11 b(amilies)46 b(and)f(Datat)l(yp)t(es)0 1556 y Fi(Man)m(y)h(of)g(the)g(subroutines)d(come)k(in)d(families)f (whic)m(h)i(di\013er)f(only)h(in)f(the)i(datat)m(yp)s(e)g(of)g(the)f (asso)s(ciated)0 1669 y(parameter\(s\))34 b(.)47 b(The)32 b(datat)m(yp)s(e)i(of)f(these)g(subroutines)d(is)i(indicated)f(b)m(y)i (the)g(last)f(letter)h(of)g(the)g(subroutine)0 1781 y(name)d(\(e.g.,)j ('j')d(in)f('ftpkyj'\))i(as)f(follo)m(ws:)382 2176 y Fe(x)47 b(-)h(bit)382 2289 y(b)f(-)h(character*1)c(\(unsigned)i(byte\)) 382 2402 y(i)h(-)h(short)e(integer)g(\(I*2\))382 2515 y(j)h(-)h(integer)e(\(I*4\))382 2628 y(e)h(-)h(real)e(exponential)f (floating)h(point)g(\(R*4\))382 2741 y(f)h(-)h(real)e(fixed-format)f (floating)g(point)i(\(R*4\))382 2854 y(d)g(-)h(double)e(precision)f (real)i(floating-point)d(\(R*8\))382 2967 y(g)j(-)h(double)e(precision) f(fixed-format)g(floating)g(point)h(\(R*8\))382 3079 y(c)h(-)h(complex)e(reals)g(\(pairs)g(of)h(R*4)g(values\))382 3192 y(m)g(-)h(double)e(precision)f(complex)h(\(pairs)g(of)h(R*8)g (values\))382 3305 y(l)g(-)h(logical)e(\(L*4\))382 3418 y(s)h(-)h(character)d(string)0 3813 y Fi(When)23 b(dealing)f(with)g (the)h(FITS)g(b)m(yte)g(datat)m(yp)s(e,)j(it)d(is)f(imp)s(ortan)m(t)h (to)g(remem)m(b)s(er)g(that)h(the)f(ra)m(w)g(v)-5 b(alues)23 b(\(b)s(efore)0 3926 y(an)m(y)i(scaling)e(b)m(y)h(the)h(BSCALE)e(and)h (BZER)m(O,)g(or)h(TSCALn)d(and)i(TZER)m(On)f(k)m(eyw)m(ord)i(v)-5 b(alues\))24 b(in)f(b)m(yte)i(arra)m(ys)0 4039 y(\(BITPIX)37 b(=)f(8\))h(or)f(b)m(yte)i(columns)d(\(TF)m(ORMn)i(=)f('B'\))h(are)g (in)m(terpreted)f(as)h(unsigned)d(b)m(ytes)j(with)f(v)-5 b(alues)0 4152 y(ranging)39 b(from)g(0)i(to)f(255.)71 b(Some)40 b(F)-8 b(ortran)40 b(compilers)f(supp)s(ort)f(a)i (non-standard)f(b)m(yte)h(datat)m(yp)s(e)h(suc)m(h)f(as)0 4264 y(INTEGER*1,)34 b(LOGICAL*1,)g(or)f(BYTE,)g(whic)m(h)e(can)i (sometimes)g(b)s(e)f(used)g(instead)g(of)h(CHARA)m(CTER*1)0 4377 y(v)-5 b(ariables.)37 b(Man)m(y)23 b(mac)m(hines)f(p)s(ermit)g (passing)f(a)i(n)m(umeric)f(datat)m(yp)s(e)h(\(suc)m(h)g(as)g (INTEGER*1\))h(to)f(the)g(FITSIO)0 4490 y(subroutines)40 b(whic)m(h)i(are)h(exp)s(ecting)f(a)h(CHARA)m(CTER*1)h(datat)m(yp)s(e,) j(but)42 b(this)f(tec)m(hnically)h(violates)h(the)0 4603 y(F)-8 b(ortran-77)29 b(standard)d(and)g(is)g(not)h(supp)s(orted)e(on)i (all)f(mac)m(hines)g(\(e.g.,)k(on)c(a)i(V)-10 b(AX/VMS)27 b(mac)m(hine)g(one)g(m)m(ust)0 4716 y(use)j(the)h(V)-10 b(AX-sp)s(eci\014c)30 b(\045DESCR)f(function\).)0 4876 y(One)22 b(feature)h(of)g(the)g(CFITSIO)e(routines)h(is)f(that)j(they)f (can)g(op)s(erate)g(on)f(a)h(`X')h(\(bit\))e(column)g(in)f(a)i(binary)e (table)0 4989 y(as)35 b(though)e(it)h(w)m(ere)h(a)g(`B')g(\(b)m(yte\))g (column.)52 b(F)-8 b(or)35 b(example)f(a)g(`11X')i(datat)m(yp)s(e)f (column)e(can)i(b)s(e)f(in)m(terpreted)0 5102 y(the)28 b(same)h(as)f(a)g(`2B')i(column)d(\(i.e.,)i(2)f(unsigned)e(8-bit)i(b)m (ytes\).)41 b(In)27 b(some)i(instances,)f(it)f(can)i(b)s(e)e(more)h (e\016cien)m(t)0 5215 y(to)j(read)f(and)g(write)g(whole)f(b)m(ytes)i (at)g(a)g(time,)f(rather)h(than)f(reading)f(or)i(writing)d(eac)m(h)k (individual)25 b(bit.)0 5375 y(The)41 b(double)g(precision)f(complex)h (datat)m(yp)s(e)i(is)e(not)h(a)g(standard)f(F)-8 b(ortran-77)43 b(datat)m(yp)s(e.)76 b(If)41 b(a)i(particular)0 5488 y(F)-8 b(ortran)35 b(compiler)e(do)s(es)h(not)h(directly)e(supp)s(ort)g (this)h(datat)m(yp)s(e,)i(then)f(one)f(ma)m(y)h(instead)f(pass)g(an)h (arra)m(y)g(of)0 5601 y(pairs)c(of)i(double)e(precision)g(v)-5 b(alues)31 b(to)j(these)f(subroutines.)44 b(The)33 b(\014rst)e(v)-5 b(alue)32 b(in)f(eac)m(h)j(pair)d(is)h(the)h(real)f(part,)0 5714 y(and)e(the)g(second)h(is)e(the)i(imaginary)e(part.)p eop %%Page: 50 56 50 55 bop 0 299 a Fi(50)1277 b Fg(CHAPTER)29 b(6.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y Fd(6.6)135 b(Implicit)46 b(Data)g(T)l(yp)t(e)f(Con)l(v)l(ersion)0 816 y Fi(The)22 b(FITSIO)g(routines)g(that)i(read)e(and)h(write)f(n)m (umerical)f(data)j(can)f(p)s(erform)f(implicit)e(data)j(t)m(yp)s(e)g (con)m(v)m(ersion.)0 929 y(This)h(means)h(that)h(the)g(data)g(t)m(yp)s (e)g(of)g(the)g(v)-5 b(ariable)24 b(or)i(arra)m(y)g(in)e(the)i(program) f(do)s(es)g(not)h(need)g(to)g(b)s(e)f(the)h(same)0 1042 y(as)i(the)f(data)h(t)m(yp)s(e)g(of)f(the)h(v)-5 b(alue)27 b(in)f(the)h(FITS)g(\014le.)39 b(Data)28 b(t)m(yp)s(e)g(con)m(v)m (ersion)g(is)e(supp)s(orted)g(for)h(n)m(umerical)f(and)0 1155 y(string)32 b(data)i(t)m(yp)s(es)f(\(if)g(the)h(string)e(con)m (tains)h(a)h(v)-5 b(alid)31 b(n)m(um)m(b)s(er)h(enclosed)h(in)f (quotes\))i(when)f(reading)f(a)i(FITS)0 1268 y(header)d(k)m(eyw)m(ord)g (v)-5 b(alue)30 b(and)h(for)f(n)m(umeric)g(v)-5 b(alues)30 b(when)g(reading)g(or)h(writing)e(v)-5 b(alues)30 b(in)f(the)i(primary) e(arra)m(y)0 1381 y(or)40 b(a)h(table)g(column.)69 b(CFITSIO)39 b(returns)h(status)g(=)h(NUM)p 2185 1381 28 4 v 33 w(O)m(VERFLO)m(W)g (if)f(the)g(con)m(v)m(erted)i(data)f(v)-5 b(alue)0 1493 y(exceeds)33 b(the)g(range)g(of)g(the)f(output)g(data)i(t)m(yp)s(e.)47 b(Implicit)30 b(data)j(t)m(yp)s(e)g(con)m(v)m(ersion)g(is)e(not)i(supp) s(orted)d(within)0 1606 y(binary)f(tables)h(for)g(string,)f(logical,)i (complex,)f(or)g(double)f(complex)h(data)h(t)m(yp)s(es.)0 1767 y(In)g(addition,)f(an)m(y)h(table)g(column)f(ma)m(y)i(b)s(e)f (read)g(as)h(if)e(it)h(con)m(tained)g(string)f(v)-5 b(alues.)43 b(In)31 b(the)g(case)i(of)e(n)m(umeric)0 1879 y(columns)e(the)i (returned)e(string)g(will)f(b)s(e)i(formatted)h(using)d(the)j(TDISPn)e (displa)m(y)g(format)h(if)g(it)g(exists.)0 2266 y Fd(6.7)135 b(Data)46 b(Scaling)0 2527 y Fi(When)38 b(reading)e(n)m(umerical)h (data)h(v)-5 b(alues)37 b(in)f(the)i(primary)e(arra)m(y)i(or)g(a)g (table)g(column,)h(the)e(v)-5 b(alues)37 b(will)f(b)s(e)0 2640 y(scaled)h(automatically)h(b)m(y)f(the)h(BSCALE)f(and)g(BZER)m(O)h (\(or)g(TSCALn)d(and)i(TZER)m(On\))g(header)g(k)m(eyw)m(ord)0 2753 y(v)-5 b(alues)32 b(if)f(they)h(are)h(presen)m(t)g(in)e(the)h (header.)47 b(The)31 b(scaled)i(data)g(that)g(is)e(returned)g(to)i(the) g(reading)e(program)0 2866 y(will)d(ha)m(v)m(e)382 3171 y Fe(output)46 b(value)g(=)i(\(FITS)e(value\))g(*)i(BSCALE)e(+)h(BZERO) 0 3476 y Fi(\(a)30 b(corresp)s(onding)d(form)m(ula)h(using)g(TSCALn)f (and)i(TZER)m(On)e(is)h(used)h(when)f(reading)g(from)h(table)g (columns\).)0 3589 y(In)i(the)i(case)g(of)f(in)m(teger)g(output)g(v)-5 b(alues)31 b(the)i(\015oating)f(p)s(oin)m(t)f(scaled)g(v)-5 b(alue)32 b(is)f(truncated)h(to)h(an)f(in)m(teger)g(\(not)0 3702 y(rounded)38 b(to)i(the)g(nearest)g(in)m(teger\).)69 b(The)39 b(ftpscl)f(and)h(fttscl)h(subroutines)d(ma)m(y)j(b)s(e)f(used) g(to)h(o)m(v)m(erride)g(the)0 3815 y(scaling)28 b(parameters)h (de\014ned)e(in)g(the)i(header)f(\(e.g.,)j(to)e(turn)f(o\013)h(the)f (scaling)g(so)h(that)g(the)g(program)f(can)h(read)0 3928 y(the)i(ra)m(w)f(unscaled)f(v)-5 b(alues)30 b(from)g(the)g(FITS)g (\014le\).)0 4088 y(When)44 b(writing)f(n)m(umerical)g(data)i(to)g(the) g(primary)e(arra)m(y)i(or)f(to)h(a)g(table)g(column)e(the)i(data)g(v)-5 b(alues)44 b(will)0 4201 y(generally)27 b(b)s(e)h(automatically)g(in)m (v)m(ersely)g(scaled)g(b)m(y)g(the)g(v)-5 b(alue)28 b(of)g(the)h (BSCALE)e(and)h(BZER)m(O)g(\(or)h(TSCALn)0 4314 y(and)h(TZER)m(On\))g (header)g(k)m(eyw)m(ord)h(v)-5 b(alues)30 b(if)g(they)h(they)g(exist)f (in)f(the)i(header.)42 b(These)30 b(k)m(eyw)m(ords)h(m)m(ust)g(ha)m(v)m (e)0 4426 y(b)s(een)f(written)g(to)i(the)g(header)e(b)s(efore)h(an)m(y) h(data)f(is)f(written)h(for)f(them)i(to)f(ha)m(v)m(e)i(an)m(y)e (e\013ect.)44 b(Otherwise,)31 b(one)0 4539 y(ma)m(y)j(use)f(the)g (ftpscl)f(and)h(fttscl)g(subroutines)d(to)k(de\014ne)f(or)g(o)m(v)m (erride)g(the)g(scaling)g(k)m(eyw)m(ords)g(in)f(the)h(header)0 4652 y(\(e.g.,)h(to)f(turn)d(o\013)j(the)f(scaling)f(so)h(that)g(the)g (program)g(can)g(write)f(the)h(ra)m(w)g(unscaled)f(v)-5 b(alues)31 b(in)m(to)h(the)g(FITS)0 4765 y(\014le\).)42 b(If)30 b(scaling)g(is)g(p)s(erformed,)f(the)i(in)m(v)m(erse)g(scaled)g (output)f(v)-5 b(alue)31 b(that)g(is)f(written)g(in)m(to)h(the)g(FITS)f (\014le)g(will)0 4878 y(ha)m(v)m(e)430 5183 y Fe(FITS)46 b(value)h(=)g(\(\(input)f(value\))g(-)h(BZERO\))f(/)i(BSCALE)0 5488 y Fi(\(a)39 b(corresp)s(onding)c(form)m(ula)i(using)g(TSCALn)f (and)h(TZER)m(On)g(is)g(used)g(when)f(writing)g(to)j(table)f (columns\).)0 5601 y(Rounding)18 b(to)j(the)g(nearest)g(in)m(teger,)h (rather)f(than)f(truncation,)i(is)d(p)s(erformed)g(when)g(writing)f(in) m(teger)j(datat)m(yp)s(es)0 5714 y(to)31 b(the)g(FITS)e(\014le.)p eop %%Page: 51 57 51 56 bop 0 299 a Fg(6.8.)72 b(ERR)m(OR)30 b(ST)-8 b(A)g(TUS)30 b(V)-10 b(ALUES)30 b(AND)h(THE)f(ERR)m(OR)g(MESSA)m(GE)h(ST)-8 b(A)m(CK)848 b Fi(51)0 555 y Fd(6.8)135 b(Error)46 b(Status)f(V)-11 b(alues)45 b(and)g(the)g(Error)g(Message)h(Stac)l(k)0 809 y Fi(The)33 b(last)h(parameter)g(in)f(nearly)g(ev)m(ery)h(FITSIO)f (subroutine)f(is)h(the)h(error)f(status)h(v)-5 b(alue)34 b(whic)m(h)e(is)h(b)s(oth)g(an)0 922 y(input)i(and)g(an)i(output)f (parameter.)60 b(A)36 b(returned)f(p)s(ositiv)m(e)h(v)-5 b(alue)36 b(for)g(this)g(parameter)h(indicates)e(an)h(error)0 1035 y(w)m(as)31 b(detected.)42 b(A)30 b(listing)e(of)j(all)e(the)i (FITSIO)e(status)i(co)s(de)f(v)-5 b(alues)30 b(is)f(giv)m(en)i(at)g (the)f(end)g(of)h(this)e(do)s(cumen)m(t.)0 1195 y(The)22 b(FITSIO)g(library)e(uses)j(an)f(`inherited)f(status')i(con)m(v)m(en)m (tion)h(for)f(the)g(status)g(parameter)g(whic)m(h)f(means)g(that)0 1308 y(if)h(a)i(subroutine)e(is)g(called)h(with)f(a)i(p)s(ositiv)m(e)e (input)g(v)-5 b(alue)24 b(of)h(the)f(status)h(parameter,)h(then)f(the)f (subroutine)f(will)0 1421 y(exit)i(immediately)d(without)i(c)m(hanging) h(the)f(v)-5 b(alue)24 b(of)h(the)g(status)g(parameter.)39 b(Th)m(us,)25 b(if)f(one)g(passes)h(the)g(status)0 1533 y(v)-5 b(alue)30 b(returned)f(from)h(eac)m(h)i(FITSIO)d(routine)g(as)i (input)e(to)i(the)f(next)h(FITSIO)e(subroutine,)g(then)h(whenev)m(er)0 1646 y(an)39 b(error)g(is)g(detected)h(all)f(further)f(FITSIO)g(pro)s (cessing)g(will)f(cease.)69 b(This)38 b(con)m(v)m(en)m(tion)i(can)g (simplify)c(the)0 1759 y(error)30 b(c)m(hec)m(king)i(in)d(application)g (programs)i(b)s(ecause)g(it)f(is)g(not)h(necessary)g(to)g(c)m(hec)m(k)i (the)e(v)-5 b(alue)30 b(of)h(the)g(status)0 1872 y(parameter)j(after)g (ev)m(ery)g(single)f(FITSIO)f(subroutine)f(call.)50 b(If)33 b(a)h(program)f(con)m(tains)h(a)g(sequence)g(of)g(sev)m(eral)0 1985 y(FITSIO)23 b(calls,)h(one)g(can)g(just)g(c)m(hec)m(k)h(the)f (status)g(v)-5 b(alue)23 b(after)i(the)f(last)f(call.)38 b(Since)23 b(the)h(returned)e(status)j(v)-5 b(alues)0 2098 y(are)36 b(generally)f(distinctiv)m(e,)h(it)f(should)f(b)s(e)h(p)s (ossible)e(to)j(determine)f(whic)m(h)f(subroutine)g(originally)f (returned)0 2211 y(the)e(error)f(status.)0 2371 y(FITSIO)i(also)h(main) m(tains)e(an)i(in)m(ternal)f(stac)m(k)i(of)f(error)g(messages)h(\(80-c) m(haracter)i(maxim)m(um)c(length\))g(whic)m(h)0 2484 y(in)j(man)m(y)h(cases)h(pro)m(vide)e(a)h(more)g(detailed)g (explanation)f(of)h(the)g(cause)h(of)f(the)g(error)g(than)f(is)g(pro)m (vided)g(b)m(y)0 2597 y(the)40 b(error)e(status)i(n)m(um)m(b)s(er)e (alone.)68 b(It)39 b(is)g(recommended)g(that)g(the)h(error)f(message)h (stac)m(k)h(b)s(e)e(prin)m(ted)f(out)0 2710 y(whenev)m(er)31 b(a)h(program)g(detects)g(a)g(FITSIO)e(error.)44 b(T)-8 b(o)32 b(do)f(this,)g(call)g(the)h(FTGMSG)g(routine)e(rep)s(eatedly)h (to)0 2823 y(get)i(the)g(successiv)m(e)f(messages)i(on)e(the)g(stac)m (k.)48 b(When)32 b(the)h(stac)m(k)g(is)f(empt)m(y)g(FTGMSG)h(will)d (return)h(a)h(blank)0 2936 y(string.)40 b(Note)31 b(that)g(this)e(is)g (a)h(`First)g(In)f({)i(First)e(Out')h(stac)m(k,)i(so)e(the)h(oldest)f (error)f(message)j(is)d(returned)g(\014rst)0 3049 y(b)m(y)h(ftgmsg.)0 3399 y Fd(6.9)135 b(V)-11 b(ariable-Length)46 b(Arra)l(y)f(F)-11 b(acilit)l(y)46 b(in)f(Binary)g(T)-11 b(ables)0 3653 y Fi(FITSIO)38 b(pro)m(vides)h(easy-to-use)i(supp)s(ort)d(for)h (reading)f(and)h(writing)f(data)i(in)e(v)-5 b(ariable)38 b(length)h(\014elds)f(of)i(a)0 3766 y(binary)34 b(table.)55 b(The)35 b(v)-5 b(ariable)34 b(length)g(columns)g(ha)m(v)m(e)j(TF)m (ORMn)e(k)m(eyw)m(ord)h(v)-5 b(alues)34 b(of)i(the)f(form)g (`1Pt\(len\)')0 3878 y(where)27 b(`t')g(is)f(the)i(datat)m(yp)s(e)g(co) s(de)f(\(e.g.,)j(I,)d(J,)g(E,)g(D,)g(etc.\))41 b(and)27 b(`len')f(is)h(an)f(in)m(teger)i(sp)s(ecifying)d(the)i(maxim)m(um)0 3991 y(length)f(of)h(the)h(v)m(ector)g(in)e(the)h(table.)39 b(If)27 b(the)g(v)-5 b(alue)26 b(of)h(`len')g(is)f(not)h(sp)s (eci\014ed)e(when)h(the)h(table)g(is)f(created)i(\(e.g.,)0 4104 y(if)e(the)i(TF)m(ORM)f(k)m(eyw)m(ord)h(v)-5 b(alue)27 b(is)f(simply)f(sp)s(eci\014ed)h(as)h('1PE')h(instead)f(of)g ('1PE\(400\))j(\),)e(then)f(FITSIO)g(will)0 4217 y(automatically)i (scan)g(the)g(table)g(when)f(it)h(is)f(closed)h(to)h(determine)e(the)h (maxim)m(um)f(length)g(of)i(the)f(v)m(ector)i(and)0 4330 y(will)d(app)s(end)g(this)i(v)-5 b(alue)30 b(to)h(the)f(TF)m(ORMn)g(v) -5 b(alue.)0 4490 y(The)25 b(same)h(routines)f(whic)m(h)f(read)i(and)f (write)g(data)h(in)e(an)i(ordinary)e(\014xed)h(length)g(binary)f(table) h(extension)h(are)0 4603 y(also)k(used)f(for)h(v)-5 b(ariable)29 b(length)h(\014elds,)e(ho)m(w)m(ev)m(er,)k(the)e(subroutine)e (parameters)j(tak)m(e)h(on)e(a)g(sligh)m(tly)e(di\013eren)m(t)0 4716 y(in)m(terpretation)i(as)g(describ)s(ed)f(b)s(elo)m(w.)0 4876 y(All)35 b(the)h(data)h(in)e(a)i(v)-5 b(ariable)35 b(length)g(\014eld)g(is)g(written)h(in)m(to)g(an)g(area)h(called)f(the) g(`heap')g(whic)m(h)f(follo)m(ws)h(the)0 4989 y(main)25 b(\014xed-length)g(FITS)g(binary)g(table.)39 b(The)25 b(size)h(of)h(the)f(heap,)h(in)e(b)m(ytes,)i(is)e(sp)s(eci\014ed)g (with)f(the)j(PCOUNT)0 5102 y(k)m(eyw)m(ord)21 b(in)e(the)i(FITS)f (header.)37 b(When)20 b(creating)h(a)g(new)f(binary)f(table,)j(the)f (initial)d(v)-5 b(alue)20 b(of)g(PCOUNT)g(should)0 5215 y(usually)29 b(b)s(e)h(set)i(to)g(zero.)44 b(FITSIO)30 b(will)e(recompute)k(the)f(size)g(of)h(the)f(heap)g(as)g(the)h(data)g (is)e(written)g(and)h(will)0 5328 y(automatically)25 b(up)s(date)f(the)i(PCOUNT)e(k)m(eyw)m(ord)h(v)-5 b(alue)25 b(when)f(the)h(table)g(is)f(closed.)39 b(When)25 b(writing)e(v)-5 b(ariable)0 5441 y(length)33 b(data)h(to)g(a)g(table,)h(CFITSIO)d(will) e(automatically)k(extend)f(the)h(size)f(of)h(the)g(heap)f(area)h(if)f (necessary)-8 b(,)0 5554 y(so)31 b(that)g(an)m(y)f(follo)m(wing)f(HDUs) i(do)f(not)h(get)h(o)m(v)m(erwritten.)0 5714 y(By)e(default)e(the)i (heap)f(data)i(area)f(starts)g(immediately)e(after)i(the)f(last)h(ro)m (w)f(of)h(the)g(\014xed-length)e(table.)41 b(This)p eop %%Page: 52 58 52 57 bop 0 299 a Fi(52)1277 b Fg(CHAPTER)29 b(6.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y Fi(default)26 b(starting)g(lo)s(cation)h(ma)m(y)g(b)s(e)f(o)m(v)m (erridden)g(b)m(y)h(the)g(THEAP)f(k)m(eyw)m(ord,)i(but)f(this)e(is)h (not)h(recommended.)0 668 y(If)34 b(additional)e(ro)m(ws)i(of)g(data)h (are)g(added)e(to)i(the)f(table,)i(CFITSIO)c(will)g(automatically)i (shift)e(the)j(the)f(heap)0 781 y(do)m(wn)g(to)i(mak)m(e)f(ro)s(om)g (for)f(the)h(new)f(ro)m(ws,)i(but)e(it)h(is)e(ob)m(viously)h(b)s(e)g (more)h(e\016cien)m(t)g(to)g(initially)c(create)37 b(the)0 894 y(table)30 b(with)e(the)i(necessary)g(n)m(um)m(b)s(er)f(of)h(blank) e(ro)m(ws,)i(so)g(that)g(the)g(heap)g(do)s(es)f(not)h(needed)g(to)g(b)s (e)f(constan)m(tly)0 1007 y(mo)m(v)m(ed.)0 1167 y(When)40 b(writing)f(to)i(a)g(v)-5 b(ariable)39 b(length)h(\014eld,)i(the)f(en)m (tire)g(arra)m(y)g(of)f(v)-5 b(alues)40 b(for)g(a)h(giv)m(en)g(ro)m(w)g (of)f(the)h(table)0 1280 y(m)m(ust)36 b(b)s(e)g(written)f(with)g(a)h (single)f(call)h(to)h(FTPCLx.)57 b(The)36 b(total)h(length)f(of)g(the)g (arra)m(y)h(is)e(calculated)h(from)0 1393 y(\(NELEM+FELEM-1\).)44 b(One)30 b(cannot)i(app)s(end)d(more)i(elemen)m(ts)g(to)h(an)e (existing)g(\014eld)g(at)h(a)h(later)f(time;)g(an)m(y)0 1506 y(attempt)k(to)f(do)g(so)g(will)d(simply)g(o)m(v)m(erwrite)k(all)d (the)i(data)h(whic)m(h)d(w)m(as)i(previously)e(written.)50 b(Note)35 b(also)e(that)0 1619 y(the)h(new)g(data)g(will)e(b)s(e)h (written)g(to)i(a)f(new)g(area)g(of)g(the)h(heap)e(and)h(the)g(heap)g (space)g(used)f(b)m(y)h(the)g(previous)0 1732 y(write)i(cannot)i(b)s(e) e(reclaimed.)60 b(F)-8 b(or)38 b(this)e(reason)h(it)g(is)f(advised)g (that)i(eac)m(h)g(ro)m(w)f(of)h(a)f(v)-5 b(ariable)36 b(length)g(\014eld)0 1844 y(only)c(b)s(e)h(written)f(once.)50 b(An)33 b(exception)g(to)h(this)e(general)h(rule)f(o)s(ccurs)h(when)f (setting)h(elemen)m(ts)h(of)f(an)g(arra)m(y)0 1957 y(as)38 b(unde\014ned.)63 b(One)37 b(m)m(ust)i(\014rst)e(write)g(a)i(dumm)m(y)e (v)-5 b(alue)38 b(in)m(to)g(the)h(arra)m(y)f(with)f(FTPCLx,)j(and)e (then)g(call)0 2070 y(FTPCLU)33 b(to)i(\015ag)f(the)f(desired)g(elemen) m(ts)h(as)f(unde\014ned.)49 b(\(Do)35 b(not)f(use)f(the)h(FTPCNx)f (family)f(of)i(routines)0 2183 y(with)27 b(v)-5 b(ariable)28 b(length)g(\014elds\).)39 b(Note)30 b(that)f(the)g(ro)m(ws)g(of)g(a)g (table,)g(whether)f(\014xed)g(or)h(v)-5 b(ariable)27 b(length,)i(do)g(not)0 2296 y(ha)m(v)m(e)j(to)f(b)s(e)e(written)h (consecutiv)m(ely)g(and)g(ma)m(y)h(b)s(e)f(written)f(in)g(an)m(y)i (order.)0 2456 y(When)40 b(writing)f(to)i(a)g(v)-5 b(ariable)39 b(length)h(ASCI)s(I)f(c)m(haracter)j(\014eld)d(\(e.g.,)45 b(TF)m(ORM)c(=)f('1P)-8 b(A'\))43 b(only)c(a)i(single)0 2569 y(c)m(haracter)33 b(string)e(written.)43 b(FTPCLS)30 b(writes)h(the)h(whole)e(length)h(of)h(the)g(input)d(string)i(\(min)m (us)f(an)m(y)i(trailing)0 2682 y(blank)k(c)m(haracters\),)42 b(th)m(us)37 b(the)h(NELEM)f(and)g(FELEM)h(parameters)g(are)g(ignored.) 61 b(If)37 b(the)h(input)d(string)i(is)0 2795 y(completely)26 b(blank)g(then)g(FITSIO)g(will)e(write)i(one)h(blank)e(c)m(haracter)k (to)e(the)g(FITS)f(\014le.)39 b(Similarly)-8 b(,)24 b(FTGCVS)0 2908 y(and)35 b(FTGCFS)g(read)g(the)h(en)m(tire)f(string)g(\(truncated) g(to)i(the)e(width)f(of)h(the)h(c)m(haracter)h(string)d(argumen)m(t)i (in)0 3021 y(the)31 b(subroutine)d(call\))i(and)g(also)g(ignore)g(the)g (NELEM)h(and)f(FELEM)g(parameters.)0 3181 y(The)35 b(FTPDES)h (subroutine)d(is)i(useful)f(in)g(situations)h(where)g(m)m(ultiple)f(ro) m(ws)h(of)h(a)g(v)-5 b(ariable)35 b(length)g(column)0 3294 y(ha)m(v)m(e)d(the)e(iden)m(tical)f(arra)m(y)i(of)g(v)-5 b(alues.)40 b(One)30 b(can)g(simply)e(write)i(the)g(arra)m(y)h(once)g (for)g(the)f(\014rst)g(ro)m(w,)g(and)g(then)0 3407 y(use)36 b(FTPDES)g(to)h(write)f(the)g(same)h(descriptor)f(v)-5 b(alues)35 b(in)m(to)i(the)f(other)h(ro)m(ws)f(\(use)h(the)f(FTGDES)h (routine)0 3520 y(to)f(read)f(the)h(\014rst)f(descriptor)f(v)-5 b(alue\);)38 b(all)c(the)i(ro)m(ws)f(will)e(then)i(p)s(oin)m(t)f(to)i (the)g(same)f(storage)i(lo)s(cation)e(th)m(us)0 3633 y(sa)m(ving)30 b(disk)f(space.)0 3793 y(When)35 b(reading)f(from)g(a)i (v)-5 b(ariable)33 b(length)i(arra)m(y)g(\014eld)f(one)h(can)g(only)g (read)f(as)i(man)m(y)f(elemen)m(ts)g(as)g(actually)0 3906 y(exist)h(in)e(that)j(ro)m(w)e(of)h(the)g(table;)j(reading)c(do)s (es)h(not)g(automatically)f(con)m(tin)m(ue)h(with)f(the)h(next)g(ro)m (w)g(of)g(the)0 4019 y(table)28 b(as)g(o)s(ccurs)g(when)f(reading)g(an) h(ordinary)f(\014xed)g(length)g(table)h(\014eld.)39 b(A)m(ttempts)29 b(to)g(read)f(more)g(than)g(this)0 4131 y(will)h(cause)k(an)e(error)h (status)g(to)g(b)s(e)f(returned.)44 b(One)32 b(can)g(determine)f(the)h (n)m(um)m(b)s(er)e(of)i(elemen)m(ts)g(in)f(eac)m(h)i(ro)m(w)0 4244 y(of)e(a)f(v)-5 b(ariable)29 b(column)h(with)f(the)h(FTGDES)h (subroutine.)0 4657 y Fd(6.10)136 b(Supp)t(ort)44 b(for)h(IEEE)g(Sp)t (ecial)h(V)-11 b(alues)0 4924 y Fi(The)26 b(ANSI/IEEE-754)h (\015oating-p)s(oin)m(t)f(n)m(um)m(b)s(er)f(standard)g(de\014nes)h (certain)g(sp)s(ecial)f(v)-5 b(alues)25 b(that)i(are)g(used)e(to)0 5036 y(represen)m(t)j(suc)m(h)g(quan)m(tities)f(as)h(Not-a-Num)m(b)s (er)h(\(NaN\),)h(denormalized,)d(under\015o)m(w,)g(o)m(v)m(er\015o)m (w,)j(and)d(in\014nit)m(y)-8 b(.)0 5149 y(\(See)29 b(the)f(App)s(endix) d(in)i(the)h(NOST)g(FITS)f(standard)g(or)h(the)g(NOST)g(FITS)f(User's)h (Guide)f(for)h(a)g(list)f(of)h(these)0 5262 y(v)-5 b(alues\).)40 b(The)30 b(FITSIO)f(subroutines)f(that)j(read)f(\015oating)h(p)s(oin)m (t)e(data)i(in)e(FITS)g(\014les)h(recognize)h(these)g(IEEE)0 5375 y(sp)s(ecial)38 b(v)-5 b(alues)38 b(and)h(b)m(y)g(default)f(in)m (terpret)h(the)g(o)m(v)m(er\015o)m(w)i(and)d(in\014nit)m(y)f(v)-5 b(alues)39 b(as)g(b)s(eing)f(equiv)-5 b(alen)m(t)39 b(to)h(a)0 5488 y(NaN,)35 b(and)e(con)m(v)m(ert)i(the)f(under\015o)m(w)e(and)h (denormalized)f(v)-5 b(alues)33 b(in)m(to)h(zeros.)51 b(In)33 b(some)h(cases)h(programmers)0 5601 y(ma)m(y)d(w)m(an)m(t)g (access)g(to)g(the)g(ra)m(w)f(IEEE)g(v)-5 b(alues,)31 b(without)f(an)m(y)i(mo)s(di\014cation)d(b)m(y)i(FITSIO.)g(This)e(can)j (b)s(e)e(done)0 5714 y(b)m(y)k(calling)g(the)g(FTGPVx)h(or)g(FTGCVx)g (routines)e(while)g(sp)s(ecifying)f(0.0)k(as)f(the)f(v)-5 b(alue)34 b(of)h(the)g(NULL)-10 b(V)g(AL)p eop %%Page: 53 59 53 58 bop 0 299 a Fg(6.11.)73 b(WHEN)31 b(THE)f(FINAL)g(SIZE)f(OF)i (THE)f(FITS)f(HDU)i(IS)f(UNKNO)m(WN)978 b Fi(53)0 555 y(parameter.)72 b(This)38 b(will)g(force)j(FITSIO)e(to)j(simply)c(pass) i(the)g(IEEE)g(v)-5 b(alues)40 b(through)g(to)h(the)g(application)0 668 y(program,)30 b(without)f(an)m(y)h(mo)s(di\014cation.)39 b(This)29 b(do)s(es)g(not)h(w)m(ork)g(for)g(double)f(precision)f(v)-5 b(alues)29 b(on)h(V)-10 b(AX/VMS)0 781 y(mac)m(hines,)37 b(ho)m(w)m(ev)m(er,)i(where)d(there)g(is)f(no)h(easy)g(w)m(a)m(y)h(to)g (b)m(ypass)f(the)g(default)f(in)m(terpretation)g(of)h(the)h(IEEE)0 894 y(sp)s(ecial)29 b(v)-5 b(alues.)0 1393 y Fd(6.11)136 b(When)44 b(the)h(Final)h(Size)f(of)g(the)g(FITS)f(HDU)h(is)g(Unkno)l (wn)0 1676 y Fi(It)27 b(is)g(not)g(required)e(to)j(kno)m(w)f(the)h (total)g(size)f(of)g(a)h(FITS)e(data)i(arra)m(y)g(or)f(table)g(b)s (efore)g(b)s(eginning)d(to)k(write)f(the)0 1789 y(data)32 b(to)f(the)g(FITS)f(\014le.)42 b(In)30 b(the)h(case)h(of)f(the)g (primary)e(arra)m(y)i(or)g(an)f(image)i(extension,)e(one)i(should)c (initially)0 1902 y(create)j(the)e(arra)m(y)h(with)d(the)j(size)f(of)g (the)g(highest)f(dimension)f(\(largest)j(NAXISn)e(k)m(eyw)m(ord\))i (set)g(to)g(a)f(dumm)m(y)0 2015 y(v)-5 b(alue,)25 b(suc)m(h)f(as)g(1.) 39 b(Then)23 b(after)i(all)e(the)i(data)f(ha)m(v)m(e)i(b)s(een)d (written)g(and)h(the)g(true)g(dimensions)e(are)i(kno)m(wn,)h(then)0 2128 y(the)31 b(NAXISn)e(v)-5 b(alue)30 b(should)f(b)s(e)h(up)s(dated)f (using)g(the)i(\014ts)p 2051 2128 28 4 v 62 w(up)s(date)p 2389 2128 V 32 w(k)m(ey)h(routine)d(b)s(efore)h(mo)m(ving)h(to)g (another)0 2240 y(extension)f(or)g(closing)g(the)g(FITS)g(\014le.)0 2401 y(When)f(writing)e(to)i(FITS)g(tables,)g(CFITSIO)e(automatically)i (k)m(eeps)h(trac)m(k)g(of)f(the)g(highest)g(ro)m(w)g(n)m(um)m(b)s(er)e (that)0 2514 y(is)k(written)g(to,)i(and)e(will)e(increase)j(the)g(size) g(of)g(the)g(table)f(if)g(necessary)-8 b(.)46 b(CFITSIO)30 b(will)f(also)j(automatically)0 2626 y(insert)j(space)i(in)e(the)h (FITS)f(\014le)h(if)f(necessary)-8 b(,)39 b(to)e(ensure)e(that)i(the)f (data)h('heap',)h(if)d(it)h(exists,)h(and/or)g(an)m(y)0 2739 y(additional)26 b(HDUs)j(that)g(follo)m(w)e(the)i(table)f(do)g (not)h(get)g(o)m(v)m(erwritten)g(as)f(new)g(ro)m(ws)g(are)h(written)e (to)i(the)g(table.)0 2900 y(As)37 b(a)h(general)f(rule)f(it)h(is)f(b)s (est)h(to)h(sp)s(ecify)e(the)i(initial)c(n)m(um)m(b)s(er)i(of)i(ro)m (ws)f(=)g(0)g(when)g(the)g(table)g(is)g(created,)0 3012 y(then)h(let)g(CFITSIO)f(k)m(eep)i(trac)m(k)g(of)g(the)f(n)m(um)m(b)s (er)f(of)i(ro)m(ws)f(that)h(are)f(actually)g(written.)64 b(The)38 b(application)0 3125 y(program)e(should)e(not)j(man)m(ually)e (up)s(date)g(the)i(n)m(um)m(b)s(er)e(of)h(ro)m(ws)g(in)f(the)i(table)f (\(as)h(giv)m(en)f(b)m(y)g(the)h(NAXIS2)0 3238 y(k)m(eyw)m(ord\))j (since)e(CFITSIO)f(do)s(es)i(this)f(automatically)-8 b(.)66 b(If)38 b(a)i(table)e(is)g(initially)e(created)k(with)d(more)i (than)0 3351 y(zero)i(ro)m(ws,)j(then)c(this)g(will)d(usually)i(b)s(e)h (considered)f(as)i(the)g(minim)m(um)d(size)i(of)h(the)g(table,)i(ev)m (en)e(if)f(few)m(er)0 3464 y(ro)m(ws)30 b(are)g(actually)f(written)g (to)i(the)f(table.)40 b(Th)m(us,)30 b(if)e(a)j(table)e(is)g(initially)d (created)31 b(with)e(NAXIS2)h(=)f(20,)j(and)0 3577 y(CFITSIO)f(only)h (writes)f(10)j(ro)m(ws)e(of)h(data)g(b)s(efore)f(closing)g(the)h (table,)g(then)f(NAXIS2)h(will)d(remain)h(equal)h(to)0 3690 y(20.)50 b(If)33 b(ho)m(w)m(ev)m(er,)i(30)g(ro)m(ws)e(of)g(data)h (are)g(written)e(to)i(this)e(table,)i(then)f(NAXIS2)h(will)c(b)s(e)j (increased)f(from)h(20)0 3803 y(to)f(30.)44 b(The)31 b(one)g(exception)h(to)g(this)e(automatic)i(up)s(dating)d(of)i(the)h (NAXIS2)f(k)m(eyw)m(ord)h(is)e(if)g(the)i(application)0 3916 y(program)c(directly)e(mo)s(di\014es)g(the)j(v)-5 b(alue)27 b(of)h(NAXIS2)g(\(up)f(or)h(do)m(wn\))g(itself)f(just)g(b)s (efore)h(closing)f(the)h(table.)40 b(In)0 4029 y(this)27 b(case,)j(CFITSIO)d(do)s(es)h(not)h(up)s(date)e(NAXIS2)i(again,)g (since)f(it)g(assumes)g(that)h(the)f(application)f(program)0 4142 y(m)m(ust)32 b(ha)m(v)m(e)h(had)f(a)g(go)s(o)s(d)g(reason)h(for)f (c)m(hanging)g(the)g(v)-5 b(alue)32 b(directly)-8 b(.)45 b(This)30 b(is)h(not)i(recommended,)f(ho)m(w)m(ev)m(er,)0 4254 y(and)j(is)g(only)g(pro)m(vided)g(for)g(bac)m(kw)m(ard)h (compatibilit)m(y)e(with)h(soft)m(w)m(are)i(that)g(initially)32 b(creates)37 b(a)f(table)g(with)0 4367 y(a)e(large)g(n)m(um)m(b)s(er)f (of)h(ro)m(ws,)h(than)f(decreases)g(the)h(NAXIS2)f(v)-5 b(alue)33 b(to)i(the)f(actual)g(smaller)f(v)-5 b(alue)33 b(just)g(b)s(efore)0 4480 y(closing)c(the)i(table.)0 4979 y Fd(6.12)136 b(Lo)t(cal)45 b(FITS)e(Con)l(v)l(en)l(tions)k(supp)t (orted)d(b)l(y)h(FITSIO)0 5262 y Fi(CFITSIO)25 b(supp)s(orts)g(sev)m (eral)i(lo)s(cal)e(FITS)h(con)m(v)m(en)m(tions)i(whic)m(h)d(are)i(not)g (de\014ned)e(in)g(the)i(o\016cial)f(NOST)g(FITS)0 5375 y(standard)k(and)g(whic)m(h)g(are)h(not)g(necessarily)e(recognized)i (or)g(supp)s(orted)e(b)m(y)i(other)g(FITS)f(soft)m(w)m(are)i(pac)m(k)-5 b(ages.)0 5488 y(Programmers)36 b(should)e(b)s(e)h(cautious)h(ab)s(out) f(using)g(these)h(features,)i(esp)s(ecially)c(if)h(the)h(FITS)f (\014les)g(that)i(are)0 5601 y(pro)s(duced)31 b(are)i(exp)s(ected)g(to) g(b)s(e)f(pro)s(cessed)g(b)m(y)h(other)f(soft)m(w)m(are)i(systems)f (whic)m(h)e(do)i(not)f(use)h(the)f(CFITSIO)0 5714 y(in)m(terface.)p eop %%Page: 54 60 54 59 bop 0 299 a Fi(54)1277 b Fg(CHAPTER)29 b(6.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y Fb(6.12.1)113 b(Supp)s(ort)37 b(for)h(Long)g(String)e(Keyw)m(ord)i(V)-9 b(alues.)0 774 y Fi(The)23 b(length)h(of)g(a)g(standard)f(FITS)g (string)g(k)m(eyw)m(ord)h(is)f(limited)f(to)i(68)h(c)m(haracters)g(b)s (ecause)f(it)f(m)m(ust)h(\014t)g(en)m(tirely)0 887 y(within)33 b(a)j(single)f(FITS)g(header)h(k)m(eyw)m(ord)g(record.)57 b(In)35 b(some)h(instances)f(it)h(is)e(necessary)j(to)f(enco)s(de)g (strings)0 1000 y(longer)26 b(than)g(this)f(limit,)g(so)h(FITSIO)f (supp)s(orts)f(a)j(lo)s(cal)e(con)m(v)m(en)m(tion)i(in)e(whic)m(h)g (the)h(string)f(v)-5 b(alue)26 b(is)f(con)m(tin)m(ued)0 1113 y(o)m(v)m(er)34 b(m)m(ultiple)d(k)m(eyw)m(ords.)49 b(This)31 b(con)m(tin)m(uation)i(con)m(v)m(en)m(tion)i(uses)d(an)h(amp) s(ersand)f(c)m(haracter)i(at)g(the)f(end)g(of)0 1226 y(eac)m(h)c(substring)c(to)j(indicate)f(that)h(it)f(is)g(con)m(tin)m (ued)g(on)g(the)h(next)g(k)m(eyw)m(ord,)h(and)d(the)i(con)m(tin)m (uation)g(k)m(eyw)m(ords)0 1339 y(all)42 b(ha)m(v)m(e)j(the)f(name)f (CONTINUE)g(without)f(an)i(equal)f(sign)f(in)g(column)h(9.)80 b(The)43 b(string)g(v)-5 b(alue)42 b(ma)m(y)j(b)s(e)0 1452 y(con)m(tin)m(ued)28 b(in)f(this)h(w)m(a)m(y)h(o)m(v)m(er)h(as)e (man)m(y)h(additional)d(CONTINUE)i(k)m(eyw)m(ords)g(as)h(is)e (required.)39 b(The)27 b(follo)m(wing)0 1564 y(lines)i(illustrate)f (this)h(con)m(tin)m(uation)i(con)m(v)m(en)m(tion)g(whic)m(h)e(is)h (used)f(in)g(the)i(v)-5 b(alue)30 b(of)g(the)h(STRKEY)e(k)m(eyw)m(ord:) 0 1802 y Fe(LONGSTRN=)45 b('OGIP)i(1.0')524 b(/)47 b(The)g(OGIP)g(Long) f(String)g(Convention)f(may)i(be)g(used.)0 1915 y(STRKEY)94 b(=)47 b('This)g(is)g(a)g(very)g(long)g(string)f(keyword&')93 b(/)47 b(Optional)f(Comment)0 2028 y(CONTINUE)93 b(')48 b(value)e(that)h(is)g(continued)e(over)i(3)g(keywords)f(in)h(the)g(&)95 b(')0 2141 y(CONTINUE)e('FITS)47 b(header.')e(/)j(This)e(is)h(another)f (optional)g(comment.)0 2379 y Fi(It)29 b(is)f(recommended)g(that)h(the) g(LONGSTRN)f(k)m(eyw)m(ord,)i(as)f(sho)m(wn)f(here,)h(alw)m(a)m(ys)h(b) s(e)e(included)e(in)h(an)m(y)i(HDU)0 2492 y(that)f(uses)e(this)g (longstring)g(con)m(v)m(en)m(tion.)41 b(A)27 b(subroutine)e(called)h (FTPLSW)h(has)g(b)s(een)f(pro)m(vided)g(in)f(CFITSIO)0 2605 y(to)31 b(write)f(this)f(k)m(eyw)m(ord)i(if)e(it)h(do)s(es)g(not)h (already)f(exist.)0 2765 y(This)22 b(long)i(string)g(con)m(v)m(en)m (tion)h(is)e(supp)s(orted)g(b)m(y)h(the)g(follo)m(wing)f(FITSIO)g (subroutines)f(that)j(deal)f(with)f(string-)0 2878 y(v)-5 b(alued)29 b(k)m(eyw)m(ords:)286 3116 y Fe(ftgkys)46 b(-)i(read)f(a)g(string)f(keyword)286 3229 y(ftpkls)g(-)i(write)e (\(append\))g(a)h(string)f(keyword)286 3342 y(ftikls)g(-)i(insert)e(a)h (string)g(keyword)286 3455 y(ftmkls)f(-)i(modify)e(the)h(value)f(of)h (an)h(existing)d(string)h(keyword)286 3568 y(ftukls)g(-)i(update)e(an)h (existing)f(keyword,)f(or)i(write)g(a)g(new)g(keyword)286 3681 y(ftdkey)f(-)i(delete)e(a)h(keyword)0 3919 y Fi(These)41 b(routines)e(will)f(transparen)m(tly)i(read,)k(write,)f(or)e(delete)g (a)g(long)f(string)g(v)-5 b(alue)40 b(in)g(the)h(FITS)f(\014le,)j(so)0 4031 y(programmers)36 b(in)f(general)h(do)g(not)h(ha)m(v)m(e)g(to)g(b)s (e)f(concerned)g(ab)s(out)g(the)g(details)g(of)g(the)h(con)m(v)m(en)m (tion)g(that)g(is)0 4144 y(used)32 b(to)i(enco)s(de)f(the)g(long)f (string)g(in)g(the)h(FITS)f(header.)48 b(When)33 b(reading)f(a)h(long)g (string,)g(one)g(m)m(ust)g(ensure)0 4257 y(that)h(the)f(c)m(haracter)i (string)e(parameter)h(used)e(in)g(these)i(subroutine)d(calls)i(has)g(b) s(een)f(declared)h(long)g(enough)0 4370 y(to)e(hold)e(the)i(en)m(tire)f (string,)g(otherwise)f(the)i(returned)e(string)g(v)-5 b(alue)30 b(will)e(b)s(e)i(truncated.)0 4530 y(Note)d(that)e(the)h (more)f(commonly)g(used)f(FITSIO)g(subroutine)g(to)i(write)e(string)g (v)-5 b(alued)24 b(k)m(eyw)m(ords)i(\(FTPKYS\))0 4643 y(do)s(es)38 b(NOT)g(supp)s(ort)f(this)g(long)h(string)g(con)m(v)m(en)m (tion)h(and)f(only)g(supp)s(orts)e(strings)h(up)h(to)h(68)g(c)m (haracters)h(in)0 4756 y(length.)h(This)29 b(has)h(b)s(een)g(done)h (delib)s(erately)d(to)k(prev)m(en)m(t)f(programs)g(from)f(inadv)m (erten)m(tly)g(writing)f(k)m(eyw)m(ords)0 4869 y(using)37 b(this)h(non-standard)f(con)m(v)m(en)m(tion)j(without)e(the)g(explicit) f(in)m(ten)m(t)i(of)g(the)g(programmer)f(or)h(user.)64 b(The)0 4982 y(FTPKLS)28 b(subroutine)f(m)m(ust)i(b)s(e)g(called)f (instead)h(to)h(write)e(long)h(strings.)39 b(This)27 b(routine)i(can)g(also)g(b)s(e)g(used)f(to)0 5095 y(write)i(ordinary)e (string)i(v)-5 b(alues)29 b(less)h(than)g(68)h(c)m(haracters)h(in)d (length.)0 5382 y Fb(6.12.2)113 b(Arra)m(ys)37 b(of)g(Fixed-Length)i (Strings)e(in)f(Binary)h(T)-9 b(ables)0 5601 y Fi(The)29 b(de\014nition)e(of)j(the)f(FITS)g(binary)e(table)j(extension)f(format) g(do)s(es)h(not)f(pro)m(vide)g(a)g(simple)f(w)m(a)m(y)i(to)g(sp)s (ecify)0 5714 y(that)f(a)f(c)m(haracter)i(column)d(con)m(tains)h(an)g (arra)m(y)h(of)f(\014xed-length)f(strings.)39 b(T)-8 b(o)29 b(supp)s(ort)d(this)h(feature,)i(FITSIO)p eop %%Page: 55 61 55 60 bop 0 299 a Fg(6.12.)73 b(LOCAL)29 b(FITS)h(CONVENTIONS)f(SUPPOR) -8 b(TED)29 b(BY)i(FITSIO)1168 b Fi(55)0 555 y(uses)31 b(a)h(lo)s(cal)f(con)m(v)m(en)m(tion)h(for)f(the)h(format)g(of)g(the)f (TF)m(ORMn)g(k)m(eyw)m(ord)h(v)-5 b(alue)31 b(of)h(the)g(form)f('rAw')g (where)g('r')0 668 y(is)c(an)g(in)m(teger)h(sp)s(ecifying)d(the)j (total)g(width)e(in)g(c)m(haracters)j(of)f(the)g(column,)f(and)g('w')g (is)g(an)g(in)m(teger)h(sp)s(ecifying)0 781 y(the)c(\(\014xed\))g (length)g(of)g(an)g(individual)19 b(unit)k(string)g(within)e(the)j(v)m (ector.)41 b(F)-8 b(or)24 b(example,)i(TF)m(ORM1)e(=)g('120A10')0 894 y(w)m(ould)k(indicate)g(that)h(the)h(binary)d(table)i(column)f(is)g (120)i(c)m(haracters)g(wide)e(and)h(consists)f(of)h(12)h(10-c)m (haracter)0 1007 y(length)e(strings.)39 b(This)27 b(con)m(v)m(en)m (tion)j(is)d(recognized)i(b)m(y)g(the)f(FITSIO)g(subroutines)e(that)j (read)g(or)f(write)g(strings)0 1120 y(in)37 b(binary)f(tables.)64 b(The)37 b(Binary)g(T)-8 b(able)38 b(de\014nition)e(do)s(cumen)m(t)i (sp)s(eci\014es)e(that)j(other)f(optional)f(c)m(haracters)0 1233 y(ma)m(y)f(follo)m(w)f(the)g(datat)m(yp)s(e)i(co)s(de)e(in)g(the)g (TF)m(ORM)h(k)m(eyw)m(ord,)i(so)d(this)g(lo)s(cal)f(con)m(v)m(en)m (tion)j(is)d(in)h(compliance)0 1346 y(with)23 b(the)i(FITS)f(standard,) i(although)e(other)h(FITS)f(readers)g(are)h(not)g(required)e(to)i (recognize)h(this)e(con)m(v)m(en)m(tion.)0 1506 y(The)h(Binary)g(T)-8 b(able)26 b(de\014nition)d(do)s(cumen)m(t)j(that)h(w)m(as)f(appro)m(v)m (ed)g(b)m(y)g(the)g(IA)m(U)g(in)f(1994)j(con)m(tains)e(an)f(app)s (endix)0 1619 y(describing)20 b(an)j(alternate)g(con)m(v)m(en)m(tion)h (for)f(sp)s(ecifying)d(arra)m(ys)j(of)g(\014xed)f(or)h(v)-5 b(ariable)22 b(length)g(strings)f(in)h(a)h(binary)0 1732 y(table)34 b(c)m(haracter)h(column)e(\(with)g(the)i(form)e ('rA:SSTRw/nnn\)'.)50 b(This)32 b(app)s(endix)f(w)m(as)k(not)f (o\016cially)f(v)m(oted)0 1844 y(on)d(b)m(y)h(the)f(IA)m(U)h(and)f (hence)g(is)g(still)e(pro)m(visional.)39 b(FITSIO)29 b(do)s(es)h(not)h(curren)m(tly)e(supp)s(ort)g(this)g(prop)s(osal.)0 2147 y Fb(6.12.3)113 b(Keyw)m(ord)37 b(Units)g(Strings)0 2368 y Fi(One)g(de\014ciency)g(of)h(the)g(curren)m(t)g(FITS)f(Standard) f(is)h(that)i(it)e(do)s(es)g(not)h(de\014ne)f(a)i(sp)s(eci\014c)d(con)m (v)m(en)m(tion)j(for)0 2481 y(recording)29 b(the)h(ph)m(ysical)f(units) g(of)h(a)g(k)m(eyw)m(ord)h(v)-5 b(alue.)40 b(The)30 b(TUNITn)f(k)m(eyw) m(ord)h(can)g(b)s(e)g(used)f(to)i(sp)s(ecify)e(the)0 2594 y(ph)m(ysical)34 b(units)g(of)h(the)h(v)-5 b(alues)35 b(in)f(a)h(table)h(column,)f(but)g(there)g(is)g(no)g(analogous)h(con)m (v)m(en)m(tion)g(for)f(k)m(eyw)m(ord)0 2707 y(v)-5 b(alues.)41 b(The)30 b(commen)m(t)h(\014eld)f(of)g(the)h(k)m(eyw)m(ord)g(is)f (often)h(used)f(for)g(this)f(purp)s(ose,)h(but)f(the)i(units)e(are)i (usually)0 2819 y(not)g(sp)s(eci\014ed)d(in)h(a)i(w)m(ell)e(de\014ned)h (format)g(that)h(FITS)f(readers)g(can)h(easily)e(recognize)i(and)f (extract.)0 2980 y(T)-8 b(o)28 b(solv)m(e)g(this)e(de\014ciency)-8 b(,)29 b(FITSIO)d(uses)h(a)h(lo)s(cal)f(con)m(v)m(en)m(tion)i(in)d (whic)m(h)g(the)i(k)m(eyw)m(ord)g(units)e(are)i(enclosed)f(in)0 3093 y(square)20 b(brac)m(k)m(ets)j(as)e(the)f(\014rst)g(tok)m(en)i(in) e(the)g(k)m(eyw)m(ord)i(commen)m(t)f(\014eld;)i(more)e(sp)s (eci\014cally)-8 b(,)21 b(the)g(op)s(ening)e(square)0 3205 y(brac)m(k)m(et)28 b(immediately)d(follo)m(ws)g(the)i(slash)e('/') i(commen)m(t)h(\014eld)d(delimiter)f(and)i(a)g(single)f(space)i(c)m (haracter.)41 b(The)0 3318 y(follo)m(wing)29 b(examples)h(illustrate)e (k)m(eyw)m(ords)j(that)g(use)f(this)f(con)m(v)m(en)m(tion:)0 3588 y Fe(EXPOSURE=)713 b(1800.0)47 b(/)g([s])g(elapsed)f(exposure)f (time)0 3701 y(V_HELIO)h(=)763 b(16.23)47 b(/)g([km)g(s**\(-1\)])e (heliocentric)g(velocity)0 3814 y(LAMBDA)94 b(=)763 b(5400.)47 b(/)g([angstrom])e(central)h(wavelength)0 3927 y(FLUX)190 b(=)47 b(4.9033487787637465E-30)42 b(/)47 b([J/cm**2/s])e(average)h (flux)0 4196 y Fi(In)28 b(general,)g(the)h(units)d(named)i(in)f(the)i (IA)m(U\(1988\))i(St)m(yle)d(Guide)f(are)i(recommended,)f(with)f(the)i (main)e(excep-)0 4309 y(tion)j(that)h(the)f(preferred)g(unit)e(for)j (angle)f(is)f('deg')j(for)e(degrees.)0 4469 y(The)24 b(FTPUNT)g(and)g(FTGUNT)h(subroutines)e(in)g(FITSIO)g(write)h(and)g (read,)i(resp)s(ectiv)m(ely)-8 b(,)26 b(the)e(k)m(eyw)m(ord)h(unit)0 4582 y(strings)k(in)g(an)i(existing)e(k)m(eyw)m(ord.)0 4884 y Fb(6.12.4)113 b(HIERAR)m(CH)34 b(Con)m(v)m(en)m(tion)j(for)g (Extended)h(Keyw)m(ord)f(Names)0 5106 y Fi(CFITSIO)k(supp)s(orts)g(the) i(HIERAR)m(CH)g(k)m(eyw)m(ord)g(con)m(v)m(en)m(tion)h(whic)m(h)e(allo)m (ws)g(k)m(eyw)m(ord)h(names)g(that)h(are)0 5218 y(longer)33 b(then)f(8)i(c)m(haracters)g(and)f(ma)m(y)h(con)m(tain)f(the)g(full)e (range)i(of)h(prin)m(table)d(ASCI)s(I)g(text)j(c)m(haracters.)51 b(This)0 5331 y(con)m(v)m(en)m(tion)38 b(w)m(as)g(dev)m(elop)s(ed)e(at) i(the)f(Europ)s(ean)f(Southern)g(Observ)-5 b(atory)37 b(\(ESO\))f(to)i(supp)s(ort)d(hierarc)m(hical)0 5444 y(FITS)30 b(k)m(eyw)m(ord)g(suc)m(h)h(as:)0 5714 y Fe(HIERARCH)46 b(ESO)g(INS)h(FOCU)g(POS)g(=)g(-0.00002500)e(/)j(Focus)e(position)p eop %%Page: 56 62 56 61 bop 0 299 a Fi(56)1277 b Fg(CHAPTER)29 b(6.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y Fi(Basically)-8 b(,)52 b(this)46 b(con)m(v)m(en)m(tion)j(uses)e(the)h (FITS)f(k)m(eyw)m(ord)h('HIERAR)m(CH')h(to)f(indicate)f(that)h(this)e (con)m(v)m(en-)0 668 y(tion)e(is)f(b)s(eing)g(used,)k(then)d(the)g (actual)h(k)m(eyw)m(ord)f(name)h(\()p Fe('ESO)i(INS)f(FOCU)h(POS')c Fi(in)g(this)g(example\))h(b)s(e-)0 781 y(gins)39 b(in)f(column)g(10)j (and)e(can)h(con)m(tain)f(an)m(y)h(prin)m(table)e(ASCI)s(I)g(text)j(c)m (haracters,)i(including)37 b(spaces.)68 b(The)0 894 y(equals)43 b(sign)h(marks)f(the)h(end)g(of)g(the)g(k)m(eyw)m(ord)h(name)f(and)f (is)h(follo)m(w)m(ed)f(b)m(y)h(the)g(usual)f(v)-5 b(alue)44 b(and)f(com-)0 1007 y(men)m(t)31 b(\014elds)e(just)h(as)h(in)e (standard)h(FITS)g(k)m(eyw)m(ords.)41 b(F)-8 b(urther)30 b(details)g(of)h(this)e(con)m(v)m(en)m(tion)j(are)f(describ)s(ed)d(at)0 1120 y(h)m(ttp://arcdev.hq.eso.org/dicb/dicd/dic-1-1.4.h)m(tml)33 b(\(searc)m(h)f(for)e(HIERAR)m(CH\).)0 1280 y(This)42 b(con)m(v)m(en)m(tion)k(allo)m(ws)e(a)g(m)m(uc)m(h)h(broader)e(range)i (of)f(k)m(eyw)m(ord)h(names)f(than)h(is)e(allo)m(w)m(ed)h(b)m(y)g(the)h (FITS)0 1393 y(Standard.)40 b(Here)30 b(are)h(more)g(examples)f(of)g (suc)m(h)g(k)m(eyw)m(ords:)0 1655 y Fe(HIERARCH)46 b(LongKeyword)e(=)k (47.5)e(/)i(Keyword)e(has)h(>)g(8)g(characters,)e(and)i(mixed)f(case)0 1768 y(HIERARCH)g(XTE$TEMP)f(=)j(98.6)e(/)i(Keyword)d(contains)h(the)h ('$')g(character)0 1881 y(HIERARCH)f(Earth)g(is)h(a)h(star)e(=)i(F)f(/) h(Keyword)d(contains)h(embedded)f(spaces)0 2143 y Fi(CFITSIO)40 b(will)f(transparen)m(tly)i(read)h(and)f(write)f(these)j(k)m(eyw)m (ords,)i(so)d(application)e(programs)h(do)g(not)h(in)0 2256 y(general)32 b(need)g(to)h(kno)m(w)f(an)m(ything)g(ab)s(out)g(the) g(sp)s(eci\014c)f(implemen)m(tation)g(details)g(of)i(the)f(HIERAR)m(CH) g(con-)0 2369 y(v)m(en)m(tion.)49 b(In)32 b(particular,)h(application)e (programs)h(do)h(not)h(need)e(to)i(sp)s(ecify)e(the)h(`HIERAR)m(CH')h (part)f(of)g(the)0 2482 y(k)m(eyw)m(ord)g(name)f(when)g(reading)f(or)h (writing)f(k)m(eyw)m(ords)h(\(although)g(it)g(ma)m(y)h(b)s(e)f (included)d(if)j(desired\).)45 b(When)0 2595 y(writing)33 b(a)i(k)m(eyw)m(ord,)h(CFITSIO)d(\014rst)h(c)m(hec)m(ks)i(to)f(see)g (if)f(the)h(k)m(eyw)m(ord)g(name)f(is)g(legal)g(as)h(a)g(standard)f (FITS)0 2708 y(k)m(eyw)m(ord)k(\(no)g(more)f(than)h(8)g(c)m(haracters)h (long)e(and)g(con)m(taining)g(only)f(letters,)k(digits,)e(or)g(a)g(min) m(us)d(sign)i(or)0 2821 y(underscore\).)68 b(If)39 b(so)h(it)f(writes)g (it)g(as)g(a)h(standard)f(FITS)g(k)m(eyw)m(ord,)k(otherwise)c(it)g (uses)g(the)h(hierarc)m(h)e(con-)0 2934 y(v)m(en)m(tion)33 b(to)g(write)f(the)g(k)m(eyw)m(ord.)48 b(The)32 b(maxim)m(um)f(k)m(eyw) m(ord)i(name)f(length)g(is)g(67)h(c)m(haracters,)i(whic)m(h)c(lea)m(v)m (es)0 3047 y(only)c(1)i(space)g(for)f(the)h(v)-5 b(alue)28 b(\014eld.)38 b(A)29 b(more)f(practical)g(limit)e(is)i(ab)s(out)g(40)h (c)m(haracters,)i(whic)m(h)c(lea)m(v)m(es)i(enough)0 3160 y(ro)s(om)f(for)h(most)f(k)m(eyw)m(ord)h(v)-5 b(alues.)40 b(CFITSIO)27 b(returns)g(an)h(error)h(if)e(there)i(is)e(not)i(enough)f (ro)s(om)h(for)f(b)s(oth)g(the)0 3273 y(k)m(eyw)m(ord)k(name)f(and)f (the)i(k)m(eyw)m(ord)f(v)-5 b(alue)31 b(on)g(the)h(80-c)m(haracter)h (card,)f(except)g(for)f(string-v)-5 b(alued)30 b(k)m(eyw)m(ords)0 3385 y(whic)m(h)i(are)h(simply)d(truncated)j(so)g(that)h(the)f(closing) f(quote)i(c)m(haracter)g(falls)d(in)h(column)g(80.)49 b(In)32 b(the)h(curren)m(t)0 3498 y(implemen)m(tation,)28 b(CFITSIO)f(preserv)m(es)i(the)g(case)h(of)f(the)g(letters)g(when)f (writing)f(the)i(k)m(eyw)m(ord)g(name,)g(but)f(it)0 3611 y(is)c(case-insensitiv)m(e)g(when)g(reading)g(or)h(searc)m(hing)g(for)g (a)g(k)m(eyw)m(ord.)40 b(The)24 b(curren)m(t)h(implemen)m(tation)e (allo)m(ws)i(an)m(y)0 3724 y(ASCI)s(I)k(text)j(c)m(haracter)h(\(ASCI)s (I)c(32)j(to)f(ASCI)s(I)f(126\))i(in)e(the)h(k)m(eyw)m(ord)g(name)g (except)h(for)e(the)h('=')g(c)m(haracter.)0 3837 y(A)f(space)h(is)f (also)g(required)f(on)h(either)g(side)f(of)i(the)f(equal)g(sign.)0 4174 y Fd(6.13)136 b(Optimizing)45 b(Co)t(de)g(for)h(Maxim)l(um)f(Pro)t (cessing)g(Sp)t(eed)0 4425 y Fi(CFITSIO)22 b(has)h(b)s(een)f(carefully) g(designed)g(to)i(obtain)f(the)g(highest)g(p)s(ossible)d(sp)s(eed)j (when)f(reading)g(and)h(writing)0 4538 y(FITS)33 b(\014les.)50 b(In)33 b(order)h(to)g(ac)m(hiev)m(e)h(the)f(b)s(est)g(p)s(erformance,) g(ho)m(w)m(ev)m(er,)i(application)d(programmers)g(m)m(ust)h(b)s(e)0 4650 y(careful)23 b(to)i(call)e(the)h(CFITSIO)f(routines)f (appropriately)h(and)g(in)g(an)g(e\016cien)m(t)i(sequence;)i (inappropriate)21 b(usage)0 4763 y(of)31 b(CFITSIO)d(routines)i(can)g (greatly)h(slo)m(w)f(do)m(wn)g(the)h(execution)f(sp)s(eed)g(of)g(a)h (program.)0 4924 y(The)f(maxim)m(um)g(p)s(ossible)e(I/O)j(sp)s(eed)f (of)h(CFITSIO)e(dep)s(ends)g(of)i(course)g(on)f(the)h(t)m(yp)s(e)g(of)g (computer)g(system)0 5036 y(that)g(it)e(is)g(running)e(on.)41 b(As)30 b(a)g(rough)g(guide,)f(the)h(curren)m(t)g(generation)g(of)g(w)m (orkstations)g(can)h(ac)m(hiev)m(e)g(sp)s(eeds)0 5149 y(of)k(2)g({)g(10)g(MB/s)h(when)e(reading)g(or)g(writing)f(FITS)h (images)h(and)f(similar,)f(or)i(sligh)m(tly)e(slo)m(w)m(er)i(sp)s(eeds) e(with)0 5262 y(FITS)c(binary)g(tables.)40 b(Reading)30 b(of)g(FITS)g(\014les)f(can)i(o)s(ccur)f(at)h(ev)m(en)f(higher)f(rates) i(\(30MB/s)i(or)d(more\))h(if)e(the)0 5375 y(FITS)d(\014le)g(is)f (still)g(cac)m(hed)j(in)d(system)i(memory)f(follo)m(wing)g(a)h (previous)e(read)h(or)h(write)f(op)s(eration)g(on)h(the)g(same)0 5488 y(\014le.)43 b(T)-8 b(o)32 b(more)g(accurately)g(predict)e(the)i (b)s(est)f(p)s(erformance)g(that)h(is)e(p)s(ossible)f(on)j(an)m(y)g (particular)d(system,)k(a)0 5601 y(diagnostic)f(program)h(called)f (\\sp)s(eed.c")h(is)f(included)e(with)i(the)h(CFITSIO)e(distribution)e (whic)m(h)j(can)h(b)s(e)f(run)0 5714 y(to)f(appro)m(ximately)f(measure) g(the)h(maxim)m(um)e(p)s(ossible)f(sp)s(eed)h(of)i(writing)d(and)i (reading)g(a)g(test)i(FITS)d(\014le.)p eop %%Page: 57 63 57 62 bop 0 299 a Fg(6.13.)73 b(OPTIMIZING)29 b(CODE)h(F)m(OR)h (MAXIMUM)g(PR)m(OCESSING)f(SPEED)971 b Fi(57)0 555 y(The)33 b(follo)m(wing)e(2)j(sections)f(pro)m(vide)g(some)g(bac)m(kground)g(on) h(ho)m(w)f(CFITSIO)f(in)m(ternally)f(manages)j(the)f(data)0 668 y(I/O)g(and)g(describ)s(es)e(some)j(strategies)g(that)g(ma)m(y)g(b) s(e)e(used)h(to)h(optimize)e(the)i(pro)s(cessing)e(sp)s(eed)g(of)h (soft)m(w)m(are)0 781 y(that)e(uses)f(CFITSIO.)0 1080 y Fb(6.13.1)113 b(Bac)m(kground)38 b(Information:)48 b(Ho)m(w)37 b(CFITSIO)h(Manages)h(Data)f(I/O)0 1300 y Fi(Man)m(y)22 b(CFITSIO)e(op)s(erations)h(in)m(v)m(olv)m(e)h (transferring)e(only)h(a)h(small)e(n)m(um)m(b)s(er)h(of)h(b)m(ytes)g (to)g(or)g(from)f(the)h(FITS)f(\014le)0 1413 y(\(e.g,)31 b(reading)d(a)h(k)m(eyw)m(ord,)h(or)f(writing)e(a)i(ro)m(w)g(in)e(a)i (table\);)h(it)f(w)m(ould)e(b)s(e)h(v)m(ery)i(ine\016cien)m(t)e(to)h (ph)m(ysically)e(read)0 1526 y(or)32 b(write)g(suc)m(h)g(small)e(blo)s (c)m(ks)i(of)g(data)h(directly)e(in)g(the)h(FITS)g(\014le)f(on)h(disk,) g(therefore)g(CFITSIO)f(main)m(tains)0 1639 y(a)38 b(set)g(of)g(in)m (ternal)f(Input{Output)e(\(IO\))j(bu\013ers)f(in)f(RAM)i(memory)g(that) g(eac)m(h)h(con)m(tain)f(one)g(FITS)f(blo)s(c)m(k)0 1752 y(\(2880)27 b(b)m(ytes\))f(of)f(data.)40 b(Whenev)m(er)25 b(CFITSIO)f(needs)g(to)i(access)g(data)g(in)e(the)h(FITS)f(\014le,)i (it)e(\014rst)g(transfers)h(the)0 1865 y(FITS)30 b(blo)s(c)m(k)g(con)m (taining)g(those)h(b)m(ytes)g(in)m(to)f(one)h(of)f(the)h(IO)f (bu\013ers)f(in)g(memory)-8 b(.)42 b(The)30 b(next)g(time)g(CFITSIO)0 1977 y(needs)36 b(to)g(access)i(b)m(ytes)e(in)f(the)h(same)h(blo)s(c)m (k)e(it)h(can)g(then)g(go)h(to)f(the)h(fast)f(IO)f(bu\013er)g(rather)h (than)g(using)f(a)0 2090 y(m)m(uc)m(h)d(slo)m(w)m(er)h(system)f(disk)f (access)i(routine.)45 b(The)32 b(n)m(um)m(b)s(er)f(of)h(a)m(v)-5 b(ailable)32 b(IO)g(bu\013ers)f(is)g(determined)g(b)m(y)h(the)0 2203 y(NIOBUF)f(parameter)g(\(in)e(\014tsio2.h\))h(and)g(is)g(curren)m (tly)f(set)i(to)g(40.)0 2363 y(Whenev)m(er)24 b(CFITSIO)f(reads)g(or)h (writes)f(data)h(it)g(\014rst)f(c)m(hec)m(ks)i(to)g(see)f(if)f(that)h (blo)s(c)m(k)g(of)g(the)g(FITS)f(\014le)f(is)h(already)0 2476 y(loaded)32 b(in)m(to)g(one)g(of)g(the)g(IO)g(bu\013ers.)44 b(If)32 b(not,)h(and)e(if)g(there)h(is)f(an)h(empt)m(y)h(IO)e(bu\013er) g(a)m(v)-5 b(ailable,)32 b(then)g(it)g(will)0 2589 y(load)g(that)i(blo) s(c)m(k)e(in)m(to)g(the)h(IO)g(bu\013er)e(\(when)h(reading)g(a)h(FITS)f (\014le\))g(or)h(will)d(initialize)g(a)j(new)f(blo)s(c)m(k)h(\(when)0 2702 y(writing)i(to)j(a)g(FITS)f(\014le\).)61 b(If)37 b(all)f(the)i(IO)e(bu\013ers)h(are)g(already)g(full,)g(it)g(m)m(ust)h (decide)e(whic)m(h)g(one)i(to)g(reuse)0 2815 y(\(generally)32 b(the)h(one)g(that)g(has)f(b)s(een)g(accessed)i(least)e(recen)m(tly\),) i(and)e(\015ush)f(the)i(con)m(ten)m(ts)h(bac)m(k)g(to)f(disk)e(if)g(it) 0 2928 y(has)f(b)s(een)g(mo)s(di\014ed)e(b)s(efore)i(loading)f(the)i (new)f(blo)s(c)m(k.)0 3088 y(The)g(one)g(ma)5 b(jor)30 b(exception)h(to)g(the)f(ab)s(o)m(v)m(e)h(pro)s(cess)f(o)s(ccurs)g (whenev)m(er)g(a)g(large)h(con)m(tiguous)f(set)h(of)f(b)m(ytes)h(are)0 3201 y(accessed,)37 b(as)d(migh)m(t)h(o)s(ccur)f(when)f(reading)h(or)g (writing)e(a)j(FITS)f(image.)53 b(In)34 b(this)f(case)i(CFITSIO)e(b)m (ypasses)0 3314 y(the)i(in)m(ternal)f(IO)h(bu\013ers)f(and)g(simply)f (reads)i(or)g(writes)g(the)g(desired)f(b)m(ytes)h(directly)f(in)g(the)h (disk)f(\014le)g(with)0 3427 y(a)j(single)e(call)g(to)i(a)g(lo)m(w-lev) m(el)f(\014le)f(read)h(or)h(write)e(routine.)57 b(The)36 b(minim)m(um)e(threshold)g(for)i(the)h(n)m(um)m(b)s(er)e(of)0 3540 y(b)m(ytes)40 b(to)g(read)f(or)g(write)f(this)h(w)m(a)m(y)h(is)e (set)i(b)m(y)f(the)g(MINDIRECT)g(parameter)h(and)e(is)h(curren)m(tly)f (set)i(to)g(3)0 3653 y(FITS)28 b(blo)s(c)m(ks)f(=)h(8640)i(b)m(ytes.)41 b(This)27 b(is)g(the)h(most)h(e\016cien)m(t)g(w)m(a)m(y)g(to)g(read)g (or)f(write)g(large)g(c)m(h)m(unks)g(of)g(data)i(and)0 3766 y(can)37 b(ac)m(hiev)m(e)h(IO)e(transfer)g(rates)h(of)g(5)g({)g (10MB/s)i(or)d(greater.)61 b(Note)38 b(that)f(this)f(fast)h(direct)f (IO)g(pro)s(cess)g(is)0 3878 y(not)29 b(applicable)d(when)h(accessing)i (columns)f(of)g(data)h(in)e(a)i(FITS)f(table)g(b)s(ecause)h(the)f(b)m (ytes)h(are)g(generally)f(not)0 3991 y(con)m(tiguous)h(since)f(they)h (are)h(in)m(terlea)m(v)m(ed)f(b)m(y)g(the)g(other)g(columns)f(of)h (data)g(in)f(the)h(table.)40 b(This)27 b(explains)g(wh)m(y)0 4104 y(the)k(sp)s(eed)e(for)h(accessing)h(FITS)f(tables)g(is)f (generally)h(slo)m(w)m(er)g(than)h(accessing)f(FITS)g(images.)0 4264 y(Giv)m(en)h(this)g(bac)m(kground)g(information,)f(the)i(general)f (strategy)i(for)e(e\016cien)m(tly)g(accessing)h(FITS)f(\014les)f (should)0 4377 y(no)m(w)36 b(b)s(e)g(apparen)m(t:)52 b(when)35 b(dealing)g(with)g(FITS)h(images,)i(read)e(or)g(write)f (large)i(c)m(h)m(unks)f(of)g(data)h(at)g(a)f(time)0 4490 y(so)30 b(that)h(the)f(direct)g(IO)f(mec)m(hanism)g(will)f(b)s(e)h(in)m (v)m(ok)m(ed;)i(when)e(accessing)i(FITS)e(headers)h(or)g(FITS)f (tables,)h(on)0 4603 y(the)35 b(other)g(hand,)g(once)g(a)g(particular)f (FITS)g(blo)s(c)m(k)g(has)g(b)s(een)g(loading)g(in)m(to)h(one)g(of)g (the)f(IO)h(bu\013ers,)g(try)f(to)0 4716 y(access)39 b(all)d(the)h(needed)g(information)f(in)g(that)i(blo)s(c)m(k)f(b)s (efore)g(it)g(gets)h(\015ushed)d(out)j(of)g(the)f(IO)g(bu\013er.)60 b(It)38 b(is)0 4829 y(imp)s(ortan)m(t)30 b(to)i(a)m(v)m(oid)f(the)g (situation)f(where)h(the)g(same)g(FITS)f(blo)s(c)m(k)h(is)f(b)s(eing)f (read)i(then)g(\015ushed)e(from)h(a)h(IO)0 4942 y(bu\013er)e(m)m (ultiple)f(times.)0 5102 y(The)i(follo)m(wing)f(section)h(giv)m(es)h (more)f(sp)s(eci\014c)g(suggestions)g(for)g(optimizing)f(the)h(use)g (of)h(CFITSIO.)0 5262 y(1.)54 b(When)34 b(dealing)f(with)h(a)h(FITS)e (primary)g(arra)m(y)i(or)g(IMA)m(GE)g(extension,)h(it)e(is)f(more)i (e\016cien)m(t)g(to)g(read)g(or)0 5375 y(write)30 b(large)g(c)m(h)m (unks)g(of)g(the)h(image)f(at)i(a)e(time)g(\(at)i(least)e(3)h(FITS)f (blo)s(c)m(ks)f(=)h(8640)i(b)m(ytes\))f(so)g(that)g(the)f(direct)0 5488 y(IO)j(mec)m(hanism)g(will)d(b)s(e)j(used)g(as)g(describ)s(ed)f (in)g(the)h(previous)f(section.)50 b(Smaller)32 b(c)m(h)m(unks)h(of)g (data)h(are)g(read)0 5601 y(or)d(written)f(via)h(the)g(IO)f(bu\013ers,) g(whic)m(h)g(is)g(somewhat)h(less)f(e\016cien)m(t)i(b)s(ecause)f(of)g (the)g(extra)h(cop)m(y)f(op)s(eration)0 5714 y(and)26 b(additional)e(b)s(o)s(okk)m(eeping)i(steps)h(that)g(are)g(required.)38 b(In)26 b(principle)d(it)j(is)g(more)g(e\016cien)m(t)h(to)h(read)e(or)h (write)p eop %%Page: 58 64 58 63 bop 0 299 a Fi(58)1277 b Fg(CHAPTER)29 b(6.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y Fi(as)e(big)f(an)h(arra)m(y)h(of)f(image)g(pixels)e(at)j(one)f(time)f (as)i(p)s(ossible,)d(ho)m(w)m(ev)m(er,)j(if)e(the)i(arra)m(y)f(b)s (ecomes)g(so)g(large)g(that)0 668 y(the)j(op)s(erating)f(system)g (cannot)h(store)g(it)f(all)g(in)f(RAM,)i(then)f(the)h(p)s(erformance)f (ma)m(y)h(b)s(e)f(degraded)g(b)s(ecause)0 781 y(of)g(the)f(increased)g (sw)m(apping)f(of)h(virtual)f(memory)h(to)h(disk.)0 941 y(2.)51 b(When)33 b(dealing)g(with)f(FITS)h(tables,)i(the)f(most)g(imp) s(ortan)m(t)f(e\016ciency)g(factor)i(in)d(the)i(soft)m(w)m(are)h (design)e(is)0 1054 y(to)k(read)f(or)g(write)f(the)h(data)h(in)e(the)h (FITS)g(\014le)f(in)g(a)h(single)f(pass)h(through)f(the)h(\014le.)57 b(An)36 b(example)g(of)g(p)s(o)s(or)0 1167 y(program)g(design)g(w)m (ould)f(b)s(e)h(to)h(read)g(a)f(large,)j(3-column)d(table)g(b)m(y)h (sequen)m(tially)e(reading)h(the)g(en)m(tire)h(\014rst)0 1280 y(column,)24 b(then)g(going)g(bac)m(k)g(to)h(read)e(the)h(2nd)g (column,)g(and)f(\014nally)f(the)i(3rd)f(column;)i(this)e(ob)m(viously) f(requires)0 1393 y(3)j(passes)f(through)f(the)i(\014le)e(whic)m(h)g (could)h(triple)e(the)j(execution)f(time)g(of)h(an)f(I/O)g(limited)e (program.)38 b(F)-8 b(or)25 b(small)0 1506 y(tables)30 b(this)f(is)h(not)g(imp)s(ortan)m(t,)g(but)g(when)f(reading)g(m)m (ulti-megab)m(yte)i(sized)f(tables)g(these)h(ine\016ciencies)e(can)0 1619 y(b)s(ecome)g(signi\014can)m(t.)39 b(The)28 b(more)h(e\016cien)m (t)g(pro)s(cedure)e(in)h(this)f(case)j(is)d(to)j(read)e(or)h(write)f (only)f(as)i(man)m(y)g(ro)m(ws)0 1732 y(of)g(the)g(table)g(as)g(will)e (\014t)h(in)m(to)h(the)h(a)m(v)-5 b(ailable)28 b(in)m(ternal)g(I/O)h (bu\013ers,)f(then)h(access)h(all)e(the)h(necessary)g(columns)0 1844 y(of)i(data)h(within)c(that)k(range)f(of)g(ro)m(ws.)43 b(Then)29 b(after)j(the)f(program)g(is)f(completely)g(\014nished)f (with)g(the)j(data)f(in)0 1957 y(those)i(ro)m(ws)e(it)h(can)g(mo)m(v)m (e)i(on)e(to)g(the)h(next)f(range)g(of)g(ro)m(ws)g(that)h(will)c(\014t) j(in)f(the)h(bu\013ers,)f(con)m(tin)m(uing)g(in)g(this)0 2070 y(w)m(a)m(y)d(un)m(til)d(the)h(en)m(tire)h(\014le)f(has)g(b)s(een) g(pro)s(cessed.)39 b(By)27 b(using)e(this)h(pro)s(cedure)f(of)i (accessing)g(all)f(the)g(columns)g(of)0 2183 y(a)k(table)f(in)f (parallel)f(rather)i(than)g(sequen)m(tially)-8 b(,)29 b(eac)m(h)h(blo)s(c)m(k)f(of)h(the)f(FITS)g(\014le)f(will)e(only)j(b)s (e)f(read)i(or)f(written)0 2296 y(once.)0 2456 y(The)g(optimal)f(n)m (um)m(b)s(er)g(of)i(ro)m(ws)f(to)i(read)e(or)g(write)g(at)h(one)g(time) f(in)f(a)i(giv)m(en)f(table)h(dep)s(ends)d(on)j(the)f(width)f(of)0 2569 y(the)k(table)g(ro)m(w,)h(on)f(the)g(n)m(um)m(b)s(er)f(of)h(I/O)g (bu\013ers)f(that)i(ha)m(v)m(e)g(b)s(een)e(allo)s(cated)h(in)f(FITSIO,) g(and)h(also)g(on)g(the)0 2682 y(n)m(um)m(b)s(er)27 b(of)i(other)f (FITS)g(\014les)f(that)i(are)g(op)s(en)f(at)h(the)g(same)g(time)f (\(since)g(one)h(I/O)f(bu\013er)f(is)h(alw)m(a)m(ys)h(reserv)m(ed)0 2795 y(for)34 b(eac)m(h)h(op)s(en)f(FITS)f(\014le\).)52 b(F)-8 b(ortunately)g(,)36 b(a)f(FITSIO)e(routine)g(is)h(a)m(v)-5 b(ailable)33 b(that)i(will)c(return)j(the)g(optimal)0 2908 y(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(for)g(a)g(giv)m(en)f(table:)48 b(call)33 b(ftgrsz\(unit,)h(nro)m(ws,)g(status\).)52 b(It)34 b(is)f(not)h(critical)e(to)j(use)e(exactly)0 3021 y(the)f(v)-5 b(alue)31 b(of)g(nro)m(ws)g(returned)g(b)m(y)g(this)f (routine,)h(as)h(long)f(as)h(one)g(do)s(es)f(not)h(exceed)g(it.)44 b(Using)31 b(a)h(v)m(ery)f(small)0 3134 y(v)-5 b(alue)31 b(ho)m(w)m(ev)m(er)j(can)e(also)g(lead)f(to)i(p)s(o)s(or)e(p)s (erformance)g(b)s(ecause)h(of)g(the)g(o)m(v)m(erhead)h(from)f(the)g (larger)f(n)m(um)m(b)s(er)0 3247 y(of)g(subroutine)d(calls.)0 3407 y(The)36 b(optimal)f(n)m(um)m(b)s(er)h(of)g(ro)m(ws)h(returned)e (b)m(y)h(ftgrsz)h(is)f(v)-5 b(alid)35 b(only)g(as)i(long)f(as)h(the)f (application)f(program)0 3520 y(is)e(only)h(reading)g(or)g(writing)e (data)j(in)f(the)g(sp)s(eci\014ed)f(table.)53 b(An)m(y)34 b(other)h(calls)e(to)i(access)h(data)f(in)e(the)i(table)0 3633 y(header)e(or)h(in)e(an)m(y)i(other)g(FITS)f(\014le)g(w)m(ould)f (cause)i(additional)e(blo)s(c)m(ks)h(of)h(data)g(to)g(b)s(e)f(loaded)h (in)m(to)f(the)h(I/O)0 3745 y(bu\013ers)i(displacing)f(data)j(from)f (the)g(original)f(table,)j(and)e(should)e(b)s(e)i(a)m(v)m(oided)g (during)e(the)j(critical)e(p)s(erio)s(d)0 3858 y(while)28 b(the)j(table)f(is)g(b)s(eing)f(read)h(or)g(written.)0 4019 y(Occasionally)f(it)g(is)f(necessary)i(to)h(sim)m(ultaneously)c (access)k(more)f(than)f(one)h(FITS)f(table,)h(for)g(example)f(when)0 4131 y(transferring)41 b(v)-5 b(alues)42 b(from)g(an)h(input)d(table)j (to)g(an)g(output)f(table.)78 b(In)42 b(cases)h(lik)m(e)f(this,)j(one)e (should)e(call)0 4244 y(ftgrsz)28 b(to)h(get)g(the)f(optimal)f(n)m(um)m (b)s(er)g(of)h(ro)m(ws)g(for)f(eac)m(h)j(table)d(separately)-8 b(,)30 b(than)d(reduce)h(the)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)0 4357 y(prop)s(ortionally)-8 b(.)42 b(F)-8 b(or)33 b(example,)f(if)f (the)h(optimal)f(n)m(um)m(b)s(er)f(of)i(ro)m(ws)g(in)e(the)i(input)e (table)i(is)f(3600)i(and)e(is)g(1400)0 4470 y(in)h(the)h(output)f (table,)i(then)f(these)g(v)-5 b(alues)33 b(should)e(b)s(e)h(cut)h(in)f (half)g(to)i(1800)g(and)f(700,)i(resp)s(ectiv)m(ely)-8 b(,)34 b(if)e(b)s(oth)0 4583 y(tables)e(are)h(going)f(to)h(b)s(e)f (accessed)i(at)f(the)f(same)h(time.)0 4743 y(3.)39 b(Use)24 b(binary)e(table)h(extensions)g(rather)g(than)h(ASCI)s(I)e(table)h (extensions)g(for)g(b)s(etter)h(e\016ciency)g(when)e(dealing)0 4856 y(with)36 b(tabular)h(data.)62 b(The)37 b(I/O)g(to)h(ASCI)s(I)e (tables)h(is)g(slo)m(w)m(er)g(b)s(ecause)h(of)f(the)h(o)m(v)m(erhead)h (in)d(formatting)h(or)0 4969 y(parsing)29 b(the)i(ASCI)s(I)f(data)h (\014elds,)f(and)g(b)s(ecause)h(ASCI)s(I)e(tables)h(are)h(ab)s(out)g(t) m(wice)g(as)g(large)g(as)g(binary)e(tables)0 5082 y(with)g(the)i(same)f (information)f(con)m(ten)m(t.)0 5242 y(4.)64 b(Design)38 b(soft)m(w)m(are)h(so)g(that)f(it)g(reads)g(the)g(FITS)f(header)h(k)m (eyw)m(ords)g(in)f(the)h(same)h(order)e(in)g(whic)m(h)g(they)0 5355 y(o)s(ccur)c(in)f(the)h(\014le.)48 b(When)32 b(reading)h(k)m(eyw)m (ords,)h(FITSIO)e(searc)m(hes)i(forw)m(ard)e(starting)h(from)f(the)i(p) s(osition)d(of)0 5468 y(the)e(last)h(k)m(eyw)m(ord)f(that)h(w)m(as)g (read.)40 b(If)29 b(it)f(reac)m(hes)j(the)e(end)g(of)g(the)h(header)f (without)f(\014nding)f(the)i(k)m(eyw)m(ord,)h(it)0 5581 y(then)j(go)s(es)h(bac)m(k)g(to)h(the)e(start)h(of)g(the)g(header)f (and)g(con)m(tin)m(ues)g(the)h(searc)m(h)g(do)m(wn)f(to)h(the)g(p)s (osition)d(where)i(it)0 5694 y(started.)41 b(In)30 b(practice,)h(as)f (long)g(as)h(the)f(en)m(tire)h(FITS)e(header)h(can)h(\014t)f(at)h(one)g (time)f(in)f(the)h(a)m(v)-5 b(ailable)30 b(in)m(ternal)p eop %%Page: 59 65 59 64 bop 0 299 a Fg(6.13.)73 b(OPTIMIZING)29 b(CODE)h(F)m(OR)h (MAXIMUM)g(PR)m(OCESSING)f(SPEED)971 b Fi(59)0 555 y(I/O)33 b(bu\013ers,)h(then)f(the)h(header)f(k)m(eyw)m(ord)h(access)h(will)30 b(b)s(e)j(v)m(ery)h(fast)g(and)f(it)g(mak)m(es)h(little)e(di\013erence) h(whic)m(h)0 668 y(order)d(they)g(are)h(accessed.)0 828 y(5.)40 b(Av)m(oid)28 b(the)f(use)h(of)f(scaling)g(\(b)m(y)h(using)e (the)i(BSCALE)e(and)h(BZER)m(O)h(or)f(TSCAL)g(and)g(TZER)m(O)f(k)m(eyw) m(ords\))0 941 y(in)34 b(FITS)g(\014les)f(since)i(the)g(scaling)f(op)s (erations)g(add)g(to)i(the)f(pro)s(cessing)e(time)i(needed)f(to)i(read) f(or)g(write)f(the)0 1054 y(data.)60 b(In)36 b(some)i(cases)f(it)f(ma)m (y)i(b)s(e)e(more)h(e\016cien)m(t)g(to)g(temp)s(orarily)e(turn)h(o\013) h(the)g(scaling)f(\(using)f(ftpscl)h(or)0 1167 y(fttscl\))31 b(and)e(then)h(read)h(or)f(write)g(the)g(ra)m(w)h(unscaled)e(v)-5 b(alues)30 b(in)f(the)h(FITS)g(\014le.)0 1327 y(6.)40 b(Av)m(oid)26 b(using)g(the)h('implicit)d(datat)m(yp)s(e)j(con)m(v)m (ersion')g(capabilit)m(y)f(in)f(FITSIO.)h(F)-8 b(or)28 b(instance,)f(when)f(reading)0 1440 y(a)f(FITS)e(image)i(with)e(BITPIX) h(=)g(-32)i(\(32-bit)f(\015oating)f(p)s(oin)m(t)f(pixels\),)i(read)f (the)h(data)g(in)m(to)f(a)h(single)e(precision)0 1553 y(\015oating)f(p)s(oin)m(t)e(data)j(arra)m(y)f(in)f(the)h(program.)37 b(F)-8 b(orcing)22 b(FITSIO)f(to)h(con)m(v)m(ert)i(the)e(data)g(to)h(a) f(di\013eren)m(t)f(datat)m(yp)s(e)0 1666 y(can)31 b(signi\014can)m(tly) d(slo)m(w)i(the)h(program.)0 1826 y(7.)57 b(Where)36 b(feasible,)g(design)f(FITS)g(binary)f(tables)h(using)f(v)m(ector)k (column)c(elemen)m(ts)i(so)g(that)g(the)g(data)h(are)0 1939 y(written)29 b(as)h(a)g(con)m(tiguous)g(set)g(of)g(b)m(ytes,)g (rather)g(than)f(as)h(single)e(elemen)m(ts)i(in)f(m)m(ultiple)e(ro)m (ws.)41 b(F)-8 b(or)30 b(example,)0 2052 y(it)35 b(is)g(faster)h(to)g (access)h(the)f(data)h(in)d(a)i(table)g(that)g(con)m(tains)g(a)g (single)e(ro)m(w)i(and)f(2)h(columns)e(with)h(TF)m(ORM)0 2165 y(k)m(eyw)m(ords)e(equal)g(to)h('10000E')h(and)e('10000J',)j(than) d(it)f(is)g(to)i(access)g(the)g(same)f(amoun)m(t)h(of)f(data)h(in)e(a)h (table)0 2278 y(with)39 b(10000)k(ro)m(ws)d(whic)m(h)g(has)g(columns)f (with)g(the)i(TF)m(ORM)g(k)m(eyw)m(ords)g(equal)f(to)h('1E')h(and)e ('1J'.)h(In)f(the)0 2391 y(former)27 b(case)i(the)f(10000)i(\015oating) e(p)s(oin)m(t)f(v)-5 b(alues)27 b(in)g(the)h(\014rst)f(column)g(are)h (all)f(written)g(in)f(a)i(con)m(tiguous)g(blo)s(c)m(k)0 2503 y(of)e(the)f(\014le)g(whic)m(h)f(can)i(b)s(e)f(read)g(or)g (written)g(quic)m(kly)-8 b(,)26 b(whereas)f(in)f(the)i(second)f(case)i (eac)m(h)g(\015oating)e(p)s(oin)m(t)f(v)-5 b(alue)0 2616 y(in)33 b(the)h(\014rst)f(column)f(is)h(in)m(terlea)m(v)m(ed)i(with)d (the)i(in)m(teger)h(v)-5 b(alue)33 b(in)g(the)h(second)g(column)e(of)i (the)g(same)h(ro)m(w)f(so)0 2729 y(CFITSIO)29 b(has)h(to)h(explicitly)d (mo)m(v)m(e)k(to)f(the)g(p)s(osition)d(of)j(eac)m(h)g(elemen)m(t)g(to)g (b)s(e)f(read)g(or)g(written.)0 2889 y(8.)52 b(Av)m(oid)34 b(the)h(use)e(of)i(v)-5 b(ariable)32 b(length)i(v)m(ector)i(columns)c (in)h(binary)g(tables,)i(since)e(an)m(y)i(reading)e(or)h(writing)0 3002 y(of)f(these)g(data)g(requires)e(that)i(CFITSIO)f(\014rst)f(lo)s (ok)i(up)e(or)i(compute)g(the)f(starting)h(address)f(of)g(eac)m(h)i(ro) m(w)f(of)0 3115 y(data)e(in)e(the)i(heap.)0 3275 y(9.)40 b(When)26 b(cop)m(ying)g(data)i(from)e(one)g(FITS)g(table)g(to)h (another,)h(it)e(is)g(faster)g(to)i(transfer)e(the)g(ra)m(w)h(b)m(ytes) g(instead)0 3388 y(of)f(reading)f(then)h(writing)e(eac)m(h)j(column)d (of)j(the)f(table.)39 b(The)25 b(FITSIO)g(subroutines)f(FTGTBS)h(and)h (FTPTBS)0 3501 y(\(for)i(ASCI)s(I)f(tables\),)i(and)e(FTGTBB)i(and)e (FTPTBB)i(\(for)f(binary)e(tables\))i(will)e(p)s(erform)g(lo)m(w-lev)m (el)i(reads)g(or)0 3614 y(writes)33 b(of)i(an)m(y)f(con)m(tiguous)h (range)g(of)f(b)m(ytes)h(in)e(a)i(table)f(extension.)52 b(These)34 b(routines)f(can)i(b)s(e)e(used)h(to)h(read)0 3727 y(or)29 b(write)f(a)h(whole)f(ro)m(w)g(\(or)i(m)m(ultiple)c(ro)m (ws\))j(of)g(a)g(table)g(with)e(a)i(single)e(subroutine)g(call.)39 b(These)29 b(routines)f(are)0 3840 y(fast)38 b(b)s(ecause)f(they)h(b)m (ypass)f(all)f(the)i(usual)e(data)i(scaling,)h(error)e(c)m(hec)m(king)h (and)f(mac)m(hine)g(dep)s(enden)m(t)f(data)0 3953 y(con)m(v)m(ersion)k (that)h(is)d(normally)h(done)g(b)m(y)h(FITSIO,)f(and)g(they)h(allo)m(w) f(the)h(program)g(to)h(write)e(the)h(data)g(to)0 4066 y(the)34 b(output)g(\014le)f(in)g(exactly)i(the)f(same)h(b)m(yte)g (order.)51 b(F)-8 b(or)35 b(these)g(same)f(reasons,)i(use)e(of)g(these) h(routines)e(can)0 4179 y(b)s(e)g(somewhat)h(risky)e(b)s(ecause)h(no)g (v)-5 b(alidation)32 b(or)i(mac)m(hine)f(dep)s(enden)m(t)f(con)m(v)m (ersion)i(is)e(p)s(erformed)g(b)m(y)h(these)0 4292 y(routines.)39 b(In)27 b(general)g(these)i(routines)d(are)i(only)f(recommended)g(for)h (optimizing)e(critical)g(pieces)i(of)g(co)s(de)g(and)0 4405 y(should)d(only)i(b)s(e)g(used)f(b)m(y)i(programmers)e(who)h (thoroughly)g(understand)e(the)j(in)m(ternal)e(b)m(yte)i(structure)f (of)h(the)0 4517 y(FITS)i(tables)g(they)g(are)h(reading)f(or)g (writing.)0 4678 y(10.)41 b(Another)30 b(strategy)g(for)g(impro)m(ving) d(the)j(sp)s(eed)e(of)i(writing)e(a)h(FITS)g(table,)h(similar)d(to)j (the)f(previous)f(one,)0 4791 y(is)j(to)h(directly)f(construct)h(the)f (en)m(tire)h(b)m(yte)g(stream)g(for)g(a)g(whole)f(table)g(ro)m(w)h (\(or)g(m)m(ultiple)e(ro)m(ws\))i(within)d(the)0 4903 y(application)j(program)i(and)g(then)f(write)h(it)f(to)i(the)f(FITS)f (\014le)h(with)e(ftptbb.)51 b(This)32 b(a)m(v)m(oids)j(all)e(the)h(o)m (v)m(erhead)0 5016 y(normally)e(presen)m(t)i(in)e(the)i(column-orien)m (ted)f(CFITSIO)f(write)h(routines.)50 b(This)32 b(tec)m(hnique)h (should)f(only)h(b)s(e)0 5129 y(used)26 b(for)h(critical)f (applications,)g(b)s(ecause)g(it)h(mak)m(es)h(the)f(co)s(de)g(more)g (di\016cult)e(to)i(understand)e(and)i(main)m(tain,)0 5242 y(and)d(it)g(mak)m(es)i(the)f(co)s(de)g(more)f(system)h(dep)s (enden)m(t)f(\(e.g.,)k(do)c(the)h(b)m(ytes)g(need)g(to)g(b)s(e)f(sw)m (app)s(ed)g(b)s(efore)g(writing)0 5355 y(to)31 b(the)g(FITS)e (\014le?\).)0 5515 y(11.)53 b(Finally)-8 b(,)34 b(external)g(factors)i (suc)m(h)e(as)g(the)h(t)m(yp)s(e)f(of)h(magnetic)f(disk)f(con)m (troller)h(\(SCSI)f(or)i(IDE\),)g(the)f(size)0 5628 y(of)h(the)g(disk)f (cac)m(he,)k(the)d(a)m(v)m(erage)i(seek)f(sp)s(eed)e(of)h(the)g(disk,)g (the)g(amoun)m(t)h(of)f(disk)e(fragmen)m(tation,)k(and)e(the)p eop %%Page: 60 66 60 65 bop 0 299 a Fi(60)1277 b Fg(CHAPTER)29 b(6.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y Fi(amoun)m(t)e(of)g(RAM)f(a)m(v)-5 b(ailable)28 b(on)h(the)f(system)h (can)g(all)e(ha)m(v)m(e)j(a)f(signi\014can)m(t)e(impact)i(on)f(o)m(v)m (erall)h(I/O)f(e\016ciency)-8 b(.)0 668 y(F)g(or)36 b(critical)e (applications,)g(a)i(system)f(administrator)e(should)g(review)h(the)i (prop)s(osed)d(system)j(hardw)m(are)e(to)0 781 y(iden)m(tify)29 b(an)m(y)i(p)s(oten)m(tial)e(I/O)i(b)s(ottlenec)m(ks.)p eop %%Page: 61 67 61 66 bop 0 1225 a Ff(Chapter)65 b(7)0 1687 y Fl(The)77 b(CFITSIO)f(Iterator)i(F)-19 b(unction)0 2180 y Fi(The)41 b(\014ts)p 325 2180 28 4 v 33 w(iterate)p 615 2180 V 33 w(data)i(function)d(in)h(CFITSIO)f(pro)m(vides)h(a)h(unique)d(metho) s(d)j(of)g(executing)g(an)f(arbitrary)0 2293 y(user-supplied)33 b(`w)m(ork')k(function)e(that)i(op)s(erates)g(on)g(ro)m(ws)f(of)h(data) g(in)e(FITS)h(tables)g(or)g(on)h(pixels)d(in)i(FITS)0 2406 y(images.)i(Rather)24 b(than)e(explicitly)f(reading)h(and)h (writing)e(the)i(FITS)g(images)g(or)g(columns)f(of)h(data,)i(one)f (instead)0 2518 y(calls)34 b(the)i(CFITSIO)d(iterator)j(routine,)g (passing)e(to)i(it)f(the)g(name)g(of)h(the)f(user's)g(w)m(ork)g (function)f(that)i(is)e(to)0 2631 y(b)s(e)c(executed)h(along)f(with)f (a)i(list)e(of)h(all)f(the)i(table)f(columns)f(or)h(image)g(arra)m(ys)h (that)g(are)f(to)h(b)s(e)f(passed)g(to)h(the)0 2744 y(w)m(ork)37 b(function.)60 b(The)37 b(CFITSIO)e(iterator)j(function)e(then)h(do)s (es)g(all)f(the)h(w)m(ork)g(of)h(allo)s(cating)e(memory)h(for)0 2857 y(the)28 b(arra)m(ys,)h(reading)e(the)h(input)d(data)k(from)e(the) h(FITS)f(\014le,)g(passing)g(them)h(to)g(the)g(w)m(ork)g(function,)f (and)g(then)0 2970 y(writing)34 b(an)m(y)j(output)f(data)h(bac)m(k)h (to)f(the)f(FITS)g(\014le)f(after)i(the)g(w)m(ork)g(function)e(exits.) 58 b(Because)38 b(it)e(is)g(often)0 3083 y(more)h(e\016cien)m(t)h(to)g (pro)s(cess)f(only)f(a)i(subset)f(of)g(the)g(total)h(table)g(ro)m(ws)f (at)h(one)f(time,)i(the)f(iterator)f(function)0 3196 y(can)f(determine)f(the)i(optim)m(um)e(amoun)m(t)h(of)g(data)h(to)g (pass)e(in)g(eac)m(h)i(iteration)f(and)f(rep)s(eatly)g(call)h(the)g(w)m (ork)0 3309 y(function)29 b(un)m(til)g(the)h(en)m(tire)h(table)f(b)s (een)f(pro)s(cessed.)0 3469 y(F)-8 b(or)37 b(man)m(y)f(applications)e (this)g(single)h(CFITSIO)f(iterator)j(function)d(can)i(e\013ectiv)m (ely)h(replace)f(all)f(the)h(other)0 3582 y(CFITSIO)g(routines)h(for)g (reading)g(or)g(writing)f(data)i(in)e(FITS)h(images)h(or)f(tables.)63 b(Using)36 b(the)i(iterator)g(has)0 3695 y(sev)m(eral)31 b(imp)s(ortan)m(t)e(adv)-5 b(an)m(tages)32 b(o)m(v)m(er)g(the)f (traditional)d(metho)s(d)i(of)h(reading)e(and)h(writing)e(FITS)i(data)h (\014les:)136 3961 y Fc(\017)46 b Fi(It)33 b(cleanly)f(separates)i(the) f(data)h(I/O)f(from)f(the)h(routine)f(that)i(op)s(erates)f(on)g(the)g (data.)49 b(This)31 b(leads)h(to)227 4074 y(a)f(more)g(mo)s(dular)d (and)i(`ob)5 b(ject)31 b(orien)m(ted')g(programming)e(st)m(yle.)136 4268 y Fc(\017)46 b Fi(It)27 b(simpli\014es)c(the)k(application)e (program)i(b)m(y)f(eliminating)e(the)j(need)g(to)g(allo)s(cate)g (memory)g(for)f(the)h(data)227 4381 y(arra)m(ys)e(and)f(eliminates)f (most)h(of)h(the)f(calls)g(to)h(the)g(CFITSIO)d(routines)i(that)h (explicitly)d(read)i(and)g(write)227 4494 y(the)31 b(data.)136 4689 y Fc(\017)46 b Fi(It)32 b(ensures)e(that)i(the)g(data)g(are)g(pro) s(cessed)f(as)h(e\016cien)m(tly)f(as)g(p)s(ossible.)42 b(This)30 b(is)g(esp)s(ecially)g(imp)s(ortan)m(t)227 4801 y(when)44 b(pro)s(cessing)f(tabular)h(data)i(since)e(the)h (iterator)g(function)e(will)f(calculate)j(the)g(most)g(e\016cien)m(t) 227 4914 y(n)m(um)m(b)s(er)36 b(of)i(ro)m(ws)g(in)e(the)i(table)f(to)h (b)s(e)f(passed)g(at)i(one)e(time)h(to)g(the)g(user's)e(w)m(ork)i (function)e(on)i(eac)m(h)227 5027 y(iteration.)136 5222 y Fc(\017)46 b Fi(Mak)m(es)39 b(it)d(p)s(ossible)f(for)i(larger)g(pro)5 b(jects)37 b(to)h(dev)m(elop)f(a)h(library)c(of)k(w)m(ork)f(functions)f (that)h(all)f(ha)m(v)m(e)j(a)227 5335 y(uniform)28 b(calling)h (sequence)i(and)f(are)h(all)e(indep)s(enden)m(t)f(of)j(the)f(details)g (of)g(the)h(FITS)e(\014le)h(format.)0 5601 y(There)g(are)h(basically)e (2)j(steps)e(in)g(using)f(the)i(CFITSIO)e(iterator)i(function.)41 b(The)30 b(\014rst)g(step)h(is)f(to)h(design)f(the)0 5714 y(w)m(ork)c(function)e(itself)g(whic)m(h)g(m)m(ust)i(ha)m(v)m(e)g (a)g(prescrib)s(ed)d(set)j(of)g(input)e(parameters.)39 b(One)25 b(of)h(these)g(parameters)1905 5942 y(61)p eop %%Page: 62 68 62 67 bop 0 299 a Fi(62)1455 b Fg(CHAPTER)30 b(7.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0 555 y Fi(is)e(a)h(structure)g(con)m(taining)g(p)s(oin)m(ters)e(to)j(the)f (arra)m(ys)h(of)f(data;)h(the)f(w)m(ork)h(function)d(can)j(p)s(erform)d (an)m(y)i(desired)0 668 y(op)s(erations)j(on)i(these)f(arra)m(ys)h(and) e(do)s(es)h(not)g(need)g(to)h(w)m(orry)f(ab)s(out)g(ho)m(w)g(the)h (input)d(data)j(w)m(ere)f(read)g(from)0 781 y(the)e(\014le)e(or)h(ho)m (w)h(the)f(output)g(data)h(get)h(written)d(bac)m(k)i(to)h(the)e (\014le.)0 941 y(The)24 b(second)h(step)g(is)e(to)j(design)d(the)i (driv)m(er)f(routine)f(that)j(op)s(ens)e(all)f(the)i(necessary)g(FITS)f (\014les)g(and)g(initializes)0 1054 y(the)41 b(input)f(parameters)h(to) h(the)g(iterator)f(function.)72 b(The)41 b(driv)m(er)f(program)h(calls) f(the)i(CFITSIO)e(iterator)0 1167 y(function)29 b(whic)m(h)g(then)h (reads)g(the)h(data)g(and)f(passes)g(it)g(to)h(the)g(user's)e(w)m(ork)i (function.)0 1327 y(F)-8 b(urther)41 b(details)g(on)h(using)e(the)i (iterator)g(function)f(can)h(b)s(e)f(found)f(in)h(the)h(companion)f (CFITSIO)f(User's)0 1440 y(Guide,)30 b(and)f(in)g(the)i(iter)p 875 1440 28 4 v 32 w(a.f,)g(iter)p 1198 1440 V 33 w(b.f)f(and)f(iter)p 1678 1440 V 33 w(c.f)h(example)g(programs.)p eop %%Page: 63 69 63 68 bop 0 1225 a Ff(Chapter)65 b(8)0 1687 y Fl(Basic)77 b(In)-6 b(terface)77 b(Routines)0 2180 y Fi(This)26 b(section)h (de\014nes)g(a)h(basic)f(set)h(of)g(subroutines)d(that)j(can)g(b)s(e)f (used)g(to)h(p)s(erform)e(the)i(most)g(common)g(t)m(yp)s(es)0 2293 y(of)d(read)g(and)f(write)g(op)s(erations)g(on)h(FITS)f(\014les.) 38 b(New)25 b(users)f(should)f(start)i(with)f(these)h(subroutines)e (and)h(then,)0 2406 y(as)33 b(needed,)h(explore)e(the)i(more)f(adv)-5 b(ance)33 b(routines)f(describ)s(ed)f(in)h(the)h(follo)m(wing)f(c)m (hapter)h(to)h(p)s(erform)e(more)0 2518 y(complex)e(or)g(sp)s (ecialized)f(op)s(erations.)0 2679 y(A)h(righ)m(t)f(arro)m(w)h(sym)m(b) s(ol)e(\()p Fa(>)p Fi(\))i(is)f(used)g(to)h(separate)h(the)e(input)f (parameters)i(from)f(the)h(output)f(parameters)h(in)0 2791 y(the)i(de\014nition)d(of)i(eac)m(h)i(routine.)43 b(This)29 b(sym)m(b)s(ol)i(is)f(not)i(actually)f(part)g(of)h(the)f (calling)f(sequence.)45 b(Note)32 b(that)0 2904 y(the)f(status)h (parameter)g(is)e(b)s(oth)h(an)g(input)e(and)i(an)g(output)g(parameter) h(and)e(m)m(ust)h(b)s(e)g(initialized)d(=)j(0)h(prior)0 3017 y(to)f(calling)e(the)i(FITSIO)e(subroutines.)0 3177 y(Refer)h(to)i(Chapter)d(9)i(for)f(the)h(de\014nition)d(of)i(all)g(the) g(parameters)h(used)e(b)m(y)i(these)g(in)m(terface)f(routines.)0 3525 y Fd(8.1)135 b(FITSIO)44 b(Error)h(Status)h(Routines)0 3773 y Fh(1)81 b Fi(Return)24 b(the)i(curren)m(t)f(v)m(ersion)g(n)m(um) m(b)s(er)f(of)i(the)f(\014tsio)g(library)-8 b(.)37 b(The)25 b(v)m(ersion)g(n)m(um)m(b)s(er)f(will)f(b)s(e)h(incremen)m(ted)227 3886 y(with)29 b(eac)m(h)j(new)e(release)g(of)h(CFITSIO.)382 4157 y Fe(FTVERS\()46 b(>)h(version\))0 4429 y Fh(2)81 b Fi(Return)45 b(the)i(descriptiv)m(e)e(text)i(string)f(corresp)s (onding)e(to)j(a)g(FITSIO)e(error)h(status)h(co)s(de.)89 b(The)46 b(30-)227 4541 y(c)m(haracter)32 b(length)e(string)f(con)m (tains)i(a)g(brief)e(description)f(of)i(the)h(cause)g(of)f(the)h (error.)382 4813 y Fe(FTGERR\(status,)44 b(>)j(errtext\))0 5084 y Fh(3)81 b Fi(Return)40 b(the)h(top)g(\(oldest\))g(80-c)m (haracter)j(error)c(message)i(from)f(the)g(in)m(ternal)e(FITSIO)h(stac) m(k)i(of)f(error)227 5197 y(messages)29 b(and)f(shift)f(an)m(y)h (remaining)e(messages)j(on)f(the)g(stac)m(k)i(up)d(one)h(lev)m(el.)40 b(An)m(y)28 b(FITSIO)f(error)h(will)227 5310 y(generate)h(one)e(or)g (more)h(messages)g(on)f(the)g(stac)m(k.)41 b(Call)26 b(this)g(routine)g(rep)s(eatedly)g(to)i(get)h(eac)m(h)f(message)227 5422 y(in)h(sequence.)41 b(The)30 b(error)g(stac)m(k)i(is)e(empt)m(y)g (when)g(a)g(blank)f(string)h(is)f(returned.)382 5694 y Fe(FTGMSG\()46 b(>)h(errmsg\))1905 5942 y Fi(63)p eop %%Page: 64 70 64 69 bop 0 299 a Fi(64)1747 b Fg(CHAPTER)30 b(8.)111 b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0 555 y Fh(4)81 b Fi(The)33 b(FTPMRK)h(routine)f(puts)h(an)g(in)m(visible)d (mark)m(er)j(on)g(the)h(CFITSIO)d(error)i(stac)m(k.)54 b(The)33 b(FTCMRK)227 668 y(routine)40 b(can)h(then)g(b)s(e)f(used)g (to)h(delete)g(an)m(y)g(more)g(recen)m(t)h(error)e(messages)i(on)f(the) g(stac)m(k,)k(bac)m(k)c(to)227 781 y(the)32 b(p)s(osition)d(of)i(the)g (mark)m(er.)43 b(This)30 b(preserv)m(es)h(an)m(y)g(older)g(error)f (messages)i(on)f(the)h(stac)m(k.)44 b(FTCMSG)227 894 y(simply)21 b(clears)h(the)h(en)m(tire)g(error)f(message)i(stac)m(k.)40 b(These)23 b(routines)e(are)i(called)f(without)g(an)m(y)h(argumen)m (ts.)382 1152 y Fe(FTPMRK)382 1265 y(FTCMRK)382 1378 y(FTCMSG)0 1637 y Fh(5)81 b Fi(Prin)m(t)29 b(out)i(the)g(error)f (message)i(corresp)s(onding)d(to)i(the)g(input)e(status)i(v)-5 b(alue)30 b(and)g(all)g(the)h(error)f(messages)227 1750 y(on)g(the)h(FITSIO)e(stac)m(k)i(to)g(the)g(sp)s(eci\014ed)d(\014le)i (stream)g(\(stream)h(can)g(b)s(e)e(either)h(the)g(string)f('STDOUT')227 1863 y(or)i('STDERR'\).)f(If)g(the)h(input)d(status)j(v)-5 b(alue)30 b(=)g(0)h(then)f(this)f(routine)g(do)s(es)h(nothing.)334 2121 y Fe(FTRPRT)46 b(\(stream,)g(>)h(status\))0 2380 y Fh(6)81 b Fi(W)-8 b(rite)38 b(an)g(80-c)m(haracter)j(message)e(to)g (the)f(FITSIO)f(error)h(stac)m(k.)65 b(Application)36 b(programs)i(should)e(not)227 2493 y(normally)29 b(write)g(to)j(the)e (stac)m(k,)i(but)e(there)g(ma)m(y)h(b)s(e)f(some)h(situations)e(where)h (this)f(is)h(desirable.)382 2751 y Fe(FTPMSG\(errmsg\))0 3085 y Fd(8.2)135 b(File)46 b(I/O)f(Routines)0 3325 y Fh(1)81 b Fi(Op)s(en)34 b(an)h(existing)g(FITS)f(\014le)h(with)f (readonly)h(or)g(readwrite)g(access.)58 b(This)33 b(routine)i(alw)m(a)m (ys)h(op)s(ens)f(the)227 3438 y(primary)29 b(arra)m(y)j(\(the)f (\014rst)f(HDU\))i(of)f(the)h(\014le,)e(and)g(do)s(es)h(not)g(mo)m(v)m (e)h(to)g(a)f(follo)m(wing)f(extension,)h(if)f(one)227 3551 y(w)m(as)d(sp)s(eci\014ed)e(as)h(part)h(of)f(the)h(\014lename.)38 b(Use)27 b(the)g(FTNOPN)f(routine)f(to)i(automatically)g(mo)m(v)m(e)h (to)f(the)227 3664 y(extension.)43 b(This)30 b(routine)g(will)f(also)i (op)s(en)g(IRAF)g(images)h(\(.imh)e(format)i(\014les\))f(and)f(ra)m(w)i (binary)d(data)227 3776 y(arra)m(ys)f(with)e(READONL)-8 b(Y)28 b(access)h(b)m(y)e(\014rst)g(con)m(v)m(erting)h(them)f(on)g(the) h(\015y)f(in)m(to)g(virtual)f(FITS)h(images.)227 3889 y(See)36 b(the)g(`Extended)f(File)g(Name)i(Syn)m(tax')f(c)m(hapter)g (for)f(more)h(details.)56 b(The)35 b(second)h(routine)e(simply)227 4002 y(op)s(ens)e(the)g(sp)s(eci\014ed)f(\014le)h(without)f(trying)h (to)h(in)m(terpret)f(the)g(\014lename)g(using)f(the)h(extended)h (\014lename)227 4115 y(syn)m(tax.)382 4374 y Fe (FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(blocksize,status\))382 4487 y(FTDKOPEN\(unit,filename,r)o(wmo)o(de,)41 b(>)48 b(blocksize,status\))0 4745 y Fh(2)81 b Fi(Op)s(en)24 b(an)i(existing)f(FITS)g(\014le)g(with)f(readonly)h(or)h(readwrite)f (access)i(and)f(mo)m(v)m(e)h(to)f(a)h(follo)m(wing)d(extension,)227 4858 y(if)37 b(one)h(w)m(as)g(sp)s(eci\014ed)f(as)h(part)f(of)h(the)h (\014lename.)62 b(\(e.g.,)42 b('\014lename.\014ts+2')37 b(or)h('\014lename.\014ts[2]')h(will)227 4971 y(mo)m(v)m(e)f(to)g(the)e (3rd)g(HDU)i(in)d(the)i(\014le\).)59 b(Note)37 b(that)h(this)d(routine) h(di\013ers)f(from)h(FTOPEN)g(in)f(that)i(it)227 5084 y(do)s(es)30 b(not)h(ha)m(v)m(e)h(the)e(redundan)m(t)f(blo)s(c)m(ksize) h(argumen)m(t.)382 5342 y Fe(FTNOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))0 5601 y Fh(3)81 b Fi(Op)s(en)31 b(an)h(existing)f (FITS)h(\014le)f(with)g(readonly)h(or)g(readwrite)g(access)h(and)f (then)g(mo)m(v)m(e)i(to)f(the)g(\014rst)e(HDU)227 5714 y(con)m(taining)25 b(signi\014can)m(t)g(data,)i(if)d(a\))j(an)e(HDU)h (name)g(or)f(n)m(um)m(b)s(er)f(to)i(op)s(en)f(w)m(as)h(not)g (explicitly)d(sp)s(eci\014ed)p eop %%Page: 65 71 65 70 bop 0 299 a Fg(8.2.)72 b(FILE)30 b(I/O)h(R)m(OUTINES)2693 b Fi(65)227 555 y(as)31 b(part)g(of)g(the)g(\014lename,)g(and)f(b\))h (if)f(the)h(FITS)f(\014le)g(con)m(tains)h(a)h(n)m(ull)c(primary)h(arra) m(y)j(\(i.e.,)g(NAXIS)e(=)227 668 y(0\).)41 b(In)26 b(this)h(case,)i (it)e(will)e(lo)s(ok)i(for)g(the)h(\014rst)e(IMA)m(GE)j(HDU)f(with)e (NAXIS)h(>)h(0,)g(or)g(the)f(\014rst)g(table)g(that)227 781 y(do)s(es)h(not)g(con)m(tain)f(the)h(strings)f(`GTI')h(\(Go)s(o)s (d)f(Time)g(In)m(terv)-5 b(al\))28 b(or)g(`OBST)-8 b(ABLE')28 b(in)e(the)i(EXTNAME)227 894 y(k)m(eyw)m(ord)37 b(v)-5 b(alue.)60 b(FTTOPN)36 b(is)f(similar,)h(except)i(it)e(will)e(mo)m(v)m (e)39 b(to)e(the)g(\014rst)f(signi\014can)m(t)g(table)g(HDU)227 1007 y(\(skipping)24 b(o)m(v)m(er)i(an)m(y)g(image)g(HDUs\))h(in)d(the) i(\014le)f(if)f(a)i(sp)s(eci\014c)f(HDU)h(name)g(or)g(n)m(um)m(b)s(er)e (is)h(not)g(sp)s(eci\014ed.)227 1120 y(FTIOPN)30 b(will)e(mo)m(v)m(e)k (to)f(the)f(\014rst)g(non-n)m(ull)e(image)j(HDU,)g(skipping)d(o)m(v)m (er)j(an)m(y)g(tables.)382 1372 y Fe(FTDOPN\(unit,filename,rwm)o(ode)o (,)42 b(>)47 b(status\))382 1485 y(FTTOPN\(unit,filename,rwm)o(ode)o(,) 42 b(>)47 b(status\))382 1598 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))0 1851 y Fh(4)81 b Fi(Op)s(en)30 b(and)h(initialize)e (a)j(new)f(empt)m(y)h(FITS)e(\014le.)44 b(A)31 b(template)h(\014le)f (ma)m(y)h(also)g(b)s(e)f(sp)s(eci\014ed)f(to)i(de\014ne)f(the)227 1964 y(structure)h(of)h(the)g(new)f(\014le)f(\(see)j(section)e (4.2.4\).)50 b(The)32 b(second)g(routine)g(simply)e(creates)k(the)f(sp) s(eci\014ed)227 2077 y(\014le)d(without)f(trying)h(to)h(in)m(terpret)e (the)i(\014lename)f(using)e(the)j(extended)f(\014lename)g(syn)m(tax.) 382 2330 y Fe(FTINIT\(unit,filename,blo)o(cks)o(ize,)41 b(>)48 b(status\))382 2442 y(FTDKINIT\(unit,filename,b)o(loc)o(ksiz)o (e,)42 b(>)47 b(status\))0 2695 y Fh(5)81 b Fi(Close)30 b(a)g(FITS)g(\014le)f(previously)f(op)s(ened)i(with)f(ftop)s(en)h(or)g (ftinit)382 2948 y Fe(FTCLOS\(unit,)44 b(>)k(status\))0 3201 y Fh(6)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)e (\(absolute\))h(HDU)h(in)f(the)g(FITS)g(\014le)f(\(nhdu)g(=)h(1)h(for)f (the)g(FITS)g(primary)e(arra)m(y\))382 3453 y Fe(FTMAHD\(unit,nhdu,)43 b(>)k(hdutype,status\))0 3706 y Fh(7)81 b Fi(Create)30 b(a)f(primary)e(arra)m(y)j(\(if)f(none)g(already)f(exists\),)i(or)f (insert)f(a)i(new)f(IMA)m(GE)h(extension)f(immediately)227 3819 y(follo)m(wing)22 b(the)h(CHDU,)g(or)g(insert)f(a)h(new)g(Primary) e(Arra)m(y)i(at)h(the)f(b)s(eginning)d(of)j(the)g(\014le.)37 b(An)m(y)23 b(follo)m(wing)227 3932 y(extensions)28 b(in)g(the)h (\014le)e(will)f(b)s(e)i(shifted)g(do)m(wn)g(to)h(mak)m(e)h(ro)s(om)e (for)h(the)g(new)f(extension.)39 b(If)29 b(the)g(CHDU)227 4045 y(is)g(the)h(last)f(HDU)h(in)f(the)g(\014le)g(then)g(the)h(new)f (image)h(extension)f(will)e(simply)g(b)s(e)i(app)s(ended)f(to)i(the)g (end)227 4158 y(of)k(the)h(\014le.)51 b(One)33 b(can)h(force)h(a)g(new) e(primary)f(arra)m(y)j(to)g(b)s(e)e(inserted)g(at)i(the)f(b)s(eginning) d(of)j(the)h(FITS)227 4271 y(\014le)29 b(b)m(y)g(setting)g(status)h(=)f (-9)h(prior)e(to)i(calling)d(the)j(routine.)39 b(In)29 b(this)f(case)i(the)g(old)e(primary)g(arra)m(y)i(will)227 4384 y(b)s(e)c(con)m(v)m(erted)j(to)e(an)g(IMA)m(GE)g(extension.)39 b(The)27 b(new)f(extension)g(\(or)h(primary)e(arra)m(y\))j(will)c(b)s (ecome)j(the)227 4496 y(CHDU.)382 4749 y Fe(FTIIMG\(unit,bitpix,naxis)o (,na)o(xes,)41 b(>)48 b(status\))0 5002 y Fh(8)81 b Fi(Insert)30 b(a)i(new)f(ASCI)s(I)f(T)-8 b(ABLE)31 b(extension)g(immediately)f (follo)m(wing)f(the)j(CHDU.)g(An)m(y)f(follo)m(wing)f(exten-)227 5115 y(sions)25 b(will)e(b)s(e)i(shifted)f(do)m(wn)h(to)h(mak)m(e)h(ro) s(om)e(for)h(the)f(new)g(extension.)39 b(If)25 b(there)h(are)g(no)g (other)f(follo)m(wing)227 5228 y(extensions)31 b(then)g(the)h(new)f (table)g(extension)g(will)e(simply)g(b)s(e)i(app)s(ended)f(to)i(the)f (end)g(of)h(the)f(\014le.)43 b(The)227 5341 y(new)30 b(extension)g(will)e(b)s(ecome)j(the)f(CHDU.)382 5593 y Fe(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o(ol,t) o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 5706 y(status\))p eop %%Page: 66 72 66 71 bop 0 299 a Fi(66)1747 b Fg(CHAPTER)30 b(8.)111 b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0 555 y Fh(9)81 b Fi(Insert)26 b(a)h(new)g(binary)e(table)h(extension)h (immediately)e(follo)m(wing)h(the)h(CHDU.)g(An)m(y)g(follo)m(wing)e (extensions)227 668 y(will)36 b(b)s(e)i(shifted)f(do)m(wn)h(to)h(mak)m (e)g(ro)s(om)g(for)f(the)g(new)g(extension.)65 b(If)38 b(there)h(are)f(no)h(other)f(follo)m(wing)227 781 y(extensions)e(then)h (the)f(new)g(bin)m(table)f(extension)i(will)d(simply)g(b)s(e)i(app)s (ended)e(to)k(the)e(end)g(of)h(the)g(\014le.)227 894 y(The)30 b(new)g(extension)g(will)e(b)s(ecome)j(the)f(CHDU.)382 1137 y Fe(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o(rm,)o(tuni)o (t,ex)o(tna)o(me,v)o(arid)o(at)41 b(>)48 b(status\))0 1468 y Fd(8.3)135 b(Keyw)l(ord)46 b(I/O)f(Routines)0 1705 y Fh(1)81 b Fi(Put)30 b(\(app)s(end\))f(an)h(80-c)m(haracter)j (record)e(in)m(to)f(the)h(CHU.)382 1948 y Fe(FTPREC\(unit,card,)43 b(>)k(status\))0 2191 y Fh(2)81 b Fi(Put)28 b(\(app)s(end\))g(a)h(new)g (k)m(eyw)m(ord)g(of)g(the)g(appropriate)f(datat)m(yp)s(e)i(in)m(to)f (the)g(CHU.)g(The)f(E)h(and)f(D)i(v)m(ersions)227 2304 y(of)24 b(this)e(routine)g(ha)m(v)m(e)i(the)g(added)e(feature)i(that)g (if)e(the)h('decimals')g(parameter)h(is)e(negativ)m(e,)k(then)d(the)g ('G')227 2417 y(displa)m(y)28 b(format)i(rather)f(then)g(the)h('E')f (format)h(will)d(b)s(e)i(used)f(when)h(constructing)g(the)g(k)m(eyw)m (ord)h(v)-5 b(alue,)227 2530 y(taking)26 b(the)h(absolute)f(v)-5 b(alue)25 b(of)i('decimals')e(for)h(the)h(precision.)37 b(This)25 b(will)e(suppress)h(trailing)h(zeros,)j(and)227 2643 y(will)34 b(use)j(a)g(\014xed)f(format)h(rather)g(than)f(an)h(exp) s(onen)m(tial)e(format,)k(dep)s(ending)34 b(on)j(the)g(magnitude)f(of) 227 2755 y(the)31 b(v)-5 b(alue.)382 2998 y Fe (FTPKY[JLS]\(unit,keyword,)o(key)o(val,)o(comm)o(ent)o(,)42 b(>)47 b(status\))382 3111 y(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o (,dec)o(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0 3354 y Fh(3)81 b Fi(Get)37 b(the)f(n)m(th)f(80-c)m(haracter)k(header)d (record)g(from)f(the)h(CHU.)h(The)e(\014rst)g(k)m(eyw)m(ord)i(in)d(the) i(header)g(is)f(at)227 3467 y(k)m(ey)p 365 3467 28 4 v 34 w(no)42 b(=)f(1;)49 b(if)41 b(k)m(ey)p 996 3467 V 34 w(no)h(=)f(0)i(then)e(this)g(subroutine)f(simple)g(mo)m(v)m(es)k (the)e(in)m(ternal)f(p)s(oin)m(ter)g(to)i(the)227 3580 y(b)s(eginning)33 b(of)j(the)g(header)f(so)h(that)g(subsequen)m(t)f(k)m (eyw)m(ord)h(op)s(erations)f(will)e(start)j(at)g(the)g(top)g(of)g(the) 227 3693 y(header;)31 b(it)f(also)g(returns)f(a)i(blank)e(card)h(v)-5 b(alue)30 b(in)f(this)g(case.)382 3936 y Fe(FTGREC\(unit,key_no,)42 b(>)48 b(card,status\))0 4178 y Fh(4)81 b Fi(Get)31 b(a)g(k)m(eyw)m (ord)g(v)-5 b(alue)29 b(\(with)h(the)g(appropriate)g(datat)m(yp)s(e\))h (and)f(commen)m(t)i(from)e(the)g(CHU)382 4421 y Fe (FTGKY[EDJLS]\(unit,keywor)o(d,)41 b(>)48 b(keyval,comment,status\))0 4664 y Fh(5)81 b Fi(Delete)31 b(an)f(existing)g(k)m(eyw)m(ord)h (record.)382 4907 y Fe(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 5238 y Fd(8.4)135 b(Data)46 b(I/O)g(Routines)0 5488 y Fi(The)32 b(follo)m(wing)f(routines)g(read)i(or)f(write)g(data)h (v)-5 b(alues)32 b(in)f(the)i(curren)m(t)f(HDU)i(of)e(the)h(FITS)f (\014le.)46 b(Automatic)0 5601 y(datat)m(yp)s(e)28 b(con)m(v)m(ersion)g (will)c(b)s(e)j(attempted)h(for)g(n)m(umerical)d(datat)m(yp)s(es)k(if)d (the)h(sp)s(eci\014ed)f(datat)m(yp)s(e)i(is)e(di\013eren)m(t)0 5714 y(from)k(the)g(actual)h(datat)m(yp)s(e)h(of)e(the)h(FITS)e(arra)m (y)i(or)f(table)h(column.)p eop %%Page: 67 73 67 72 bop 0 299 a Fg(8.4.)72 b(D)m(A)-8 b(T)g(A)32 b(I/O)f(R)m(OUTINES) 2650 b Fi(67)0 555 y Fh(1)81 b Fi(W)-8 b(rite)30 b(elemen)m(ts)h(in)m (to)f(the)h(primary)d(data)k(arra)m(y)e(or)h(image)f(extension.)382 771 y Fe(FTPPR[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o(ts,v)o (alue)o(s,)41 b(>)48 b(status\))0 987 y Fh(2)81 b Fi(Read)30 b(elemen)m(ts)i(from)e(the)h(primary)d(data)k(arra)m(y)f(or)g(image)g (extension.)41 b(Unde\014ned)29 b(arra)m(y)j(elemen)m(ts)f(will)227 1100 y(b)s(e)g(returned)f(with)g(a)i(v)-5 b(alue)30 b(=)h(n)m(ullv)-5 b(al,)30 b(unless)f(n)m(ullv)-5 b(al)29 b(=)i(0)h(in)e(whic)m(h)g(case) i(no)f(c)m(hec)m(ks)i(for)e(unde\014ned)227 1213 y(pixels)f(will)e(b)s (e)i(p)s(erformed.)42 b(The)30 b(an)m(yf)i(parameter)f(is)f(set)i(to)g (true)f(\(=)g(.true.\))43 b(if)30 b(an)m(y)i(of)f(the)g(returned)227 1326 y(elemen)m(ts)g(w)m(ere)g(unde\014ned.)382 1542 y Fe(FTGPV[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o(ts,n)o(ullv) o(al,)41 b(>)48 b(values,anyf,status\))0 1758 y Fh(3)81 b Fi(W)-8 b(rite)35 b(elemen)m(ts)h(in)m(to)f(an)g(ASCI)s(I)e(or)i (binary)f(table)h(column.)53 b(The)35 b(`felem')g(parameter)h(applies)d (only)h(to)227 1871 y(v)m(ector)e(columns)d(in)g(binary)g(tables)h(and) g(is)f(ignored)h(when)f(writing)g(to)i(ASCI)s(I)d(tables.)382 2087 y Fe(FTPCL[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)o(ele)o(m,ne)o (leme)o(nts)o(,val)o(ues,)41 b(>)47 b(status\))0 2303 y Fh(4)81 b Fi(Read)22 b(elemen)m(ts)g(from)f(an)g(ASCI)s(I)g(or)g (binary)f(table)i(column.)37 b(Unde\014ned)20 b(arra)m(y)i(elemen)m(ts) g(will)d(b)s(e)i(returned)227 2416 y(with)31 b(a)i(v)-5 b(alue)32 b(=)g(n)m(ullv)-5 b(al,)31 b(unless)g(n)m(ullv)-5 b(al)29 b(=)k(0)f(\(or)h(=)f(')h(')f(for)g(ftgcvs\))i(in)d(whic)m(h)g (case)j(no)e(c)m(hec)m(king)h(for)227 2529 y(unde\014ned)23 b(v)-5 b(alues)24 b(will)e(b)s(e)j(p)s(erformed.)37 b(The)24 b(ANYF)i(parameter)f(is)f(set)i(to)f(true)g(if)f(an)m(y)h(of)g(the)g (returned)227 2642 y(elemen)m(ts)31 b(are)g(unde\014ned.)227 2785 y(An)m(y)d(column,)g(regardless)f(of)h(it's)g(in)m(trinsic)d (datat)m(yp)s(e,)30 b(ma)m(y)e(b)s(e)f(read)h(as)g(a)h(string.)39 b(It)28 b(should)d(b)s(e)j(noted)227 2898 y(ho)m(w)m(ev)m(er)k(that)f (reading)e(a)i(n)m(umeric)e(column)g(as)i(a)g(string)e(is)g(10)j(-)e (100)i(times)e(slo)m(w)m(er)g(than)g(reading)g(the)227 3011 y(same)36 b(column)e(as)i(a)g(n)m(um)m(b)s(er)e(due)g(to)j(the)e (large)h(o)m(v)m(erhead)g(in)e(constructing)h(the)h(formatted)g (strings.)227 3124 y(The)i(displa)m(y)e(format)i(of)g(the)g(returned)f (strings)f(will)f(b)s(e)j(determined)e(b)m(y)i(the)g(TDISPn)f(k)m(eyw)m (ord,)j(if)227 3237 y(it)c(exists,)h(otherwise)f(b)m(y)g(the)g(datat)m (yp)s(e)h(of)f(the)h(column.)56 b(The)36 b(length)f(of)i(the)f (returned)f(strings)g(can)227 3350 y(b)s(e)29 b(determined)e(with)h (the)h(ftgcdw)g(routine.)39 b(The)28 b(follo)m(wing)g(TDISPn)f(displa)m (y)h(formats)h(are)g(curren)m(tly)227 3463 y(supp)s(orted:)418 3661 y Fe(Iw.m)142 b(Integer)418 3774 y(Ow.m)g(Octal)47 b(integer)418 3887 y(Zw.m)142 b(Hexadecimal)45 b(integer)418 4000 y(Fw.d)142 b(Fixed)47 b(floating)e(point)418 4113 y(Ew.d)142 b(Exponential)45 b(floating)h(point)418 4226 y(Dw.d)142 b(Exponential)45 b(floating)h(point)418 4339 y(Gw.d)142 b(General;)46 b(uses)g(Fw.d)h(if)g(significance)e(not)i (lost,)f(else)h(Ew.d)227 4538 y Fi(where)24 b(w)h(is)e(the)i(width)e (in)g(c)m(haracters)j(of)f(the)g(displa)m(y)m(ed)e(v)-5 b(alues,)26 b(m)e(is)g(the)g(minim)m(um)e(n)m(um)m(b)s(er)i(of)g (digits)227 4651 y(displa)m(y)m(ed,)29 b(and)g(d)h(is)e(the)j(n)m(um)m (b)s(er)d(of)i(digits)e(to)j(the)f(righ)m(t)g(of)g(the)g(decimal.)39 b(The)29 b(.m)h(\014eld)f(is)g(optional.)382 4867 y Fe (FTGCV[SBIJEDCM]\(unit,col)o(num)o(,fro)o(w,fe)o(lem)o(,nel)o(emen)o (ts,)o(null)o(val,)41 b(>)1098 4980 y(values,anyf,status\))0 5196 y Fh(5)81 b Fi(Get)42 b(the)g(table)g(column)e(n)m(um)m(b)s(er)h (and)g(full)e(name)j(of)g(the)f(column)g(whose)g(name)h(matc)m(hes)h (the)f(input)227 5309 y(template)34 b(string.)47 b(See)33 b(the)h(`Adv)-5 b(anced)33 b(In)m(terface)h(Routines')e(c)m(hapter)i (for)f(a)g(full)e(description)g(of)i(this)227 5422 y(routine.)382 5638 y Fe(FTGCNN\(unit,casesen,colt)o(emp)o(late)o(,)42 b(>)47 b(colname,colnum,status\))p eop %%Page: 68 74 68 73 bop 0 299 a Fi(68)1747 b Fg(CHAPTER)30 b(8.)111 b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)p eop %%Page: 69 75 69 74 bop 0 1225 a Ff(Chapter)65 b(9)0 1687 y Fl(Adv)-13 b(anced)78 b(In)-6 b(terface)77 b(Subroutines)0 2180 y Fi(This)30 b(c)m(hapter)i(de\014nes)f(all)f(the)i(a)m(v)-5 b(ailable)31 b(subroutines)f(in)g(the)i(FITSIO)e(user)h(in)m(terface.) 45 b(F)-8 b(or)33 b(completeness,)0 2293 y(the)43 b(basic)f (subroutines)e(describ)s(ed)g(in)i(the)g(previous)g(c)m(hapter)h(are)g (also)f(rep)s(eated)h(here.)77 b(A)43 b(righ)m(t)f(arro)m(w)0 2406 y(sym)m(b)s(ol)28 b(is)f(used)h(here)h(to)g(separate)h(the)f (input)e(parameters)i(from)f(the)h(output)g(parameters)g(in)e(the)i (de\014nition)0 2518 y(of)k(eac)m(h)h(subroutine.)46 b(This)31 b(sym)m(b)s(ol)h(is)g(not)h(actually)g(part)f(of)h(the)h (calling)d(sequence.)49 b(An)32 b(alphab)s(etical)f(list)0 2631 y(and)f(de\014nition)e(of)i(all)g(the)g(parameters)h(is)e(giv)m (en)i(at)g(the)f(end)g(of)h(this)e(section.)0 2961 y Fd(9.1)135 b(FITS)44 b(File)i(Op)t(en)e(and)h(Close)h(Subroutines:)0 3197 y Fh(1)81 b Fi(Op)s(en)39 b(an)h(existing)f(FITS)h(\014le)f(with)g (readonly)h(or)g(readwrite)g(access.)72 b(FTDOPN)41 b(also)f(mo)m(v)m (es)i(to)f(the)227 3310 y(\014rst)30 b(HDU)h(con)m(taining)f (signi\014can)m(t)f(data,)j(if)d(no)h(sp)s(eci\014c)f(HDU)i(is)f(sp)s (eci\014ed)f(as)h(part)g(of)h(the)f(\014lename.)227 3423 y(FTTOPN)39 b(and)h(FTIOPN)f(are)h(similar)d(except)k(that)g(they)f (will)d(mo)m(v)m(e)k(to)g(the)f(\014rst)f(table)g(HDU)i(or)227 3536 y(image)31 b(HDU,)g(resp)s(ectiv)m(ely)-8 b(,)31 b(if)e(a)i(HDU)g(name)f(or)h(n)m(um)m(b)s(er)e(is)g(not)i(sp)s (eci\014ed)d(as)j(part)f(of)h(the)f(\014lename.)382 3770 y Fe(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b (blocksize,status\))382 3883 y(FTDOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))382 3996 y(FTTOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))382 4108 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))0 4343 y Fh(2)81 b Fi(Op)s(en)24 b(an)i(existing)f (FITS)g(\014le)g(with)f(readonly)h(or)h(readwrite)f(access)i(and)f(mo)m (v)m(e)h(to)f(a)h(follo)m(wing)d(extension,)227 4455 y(if)37 b(one)h(w)m(as)g(sp)s(eci\014ed)f(as)h(part)f(of)h(the)h (\014lename.)62 b(\(e.g.,)42 b('\014lename.\014ts+2')37 b(or)h('\014lename.\014ts[2]')h(will)227 4568 y(mo)m(v)m(e)f(to)g(the)e (3rd)g(HDU)i(in)d(the)i(\014le\).)59 b(Note)37 b(that)h(this)d(routine) h(di\013ers)f(from)h(FTOPEN)g(in)f(that)i(it)227 4681 y(do)s(es)30 b(not)h(ha)m(v)m(e)h(the)e(redundan)m(t)f(blo)s(c)m(ksize) h(argumen)m(t.)382 4915 y Fe(FTNOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))0 5149 y Fh(3)81 b Fi(Reop)s(en)38 b(a)i(FITS)e(\014le)h(that)g(w)m(as)h(previously)d(op)s(ened)h(with)g (FTOPEN,)h(FTNOPN,)g(or)h(FTINIT.)e(The)227 5262 y(newunit)e(n)m(um)m (b)s(er)g(ma)m(y)j(then)e(b)s(e)g(treated)i(as)f(a)g(separate)g (\014le,)h(and)e(one)h(ma)m(y)h(sim)m(ultaneously)c(read)227 5375 y(or)h(write)f(to)h(2)g(\(or)g(more\))g(di\013eren)m(t)f (extensions)g(in)f(the)i(same)g(\014le.)55 b(The)35 b(FTOPEN)g(and)g (FTNOPN)227 5488 y(routines)e(\(ab)s(o)m(v)m(e\))i(automatically)e (detects)i(cases)g(where)e(a)g(previously)f(op)s(ened)g(\014le)h(is)g (b)s(eing)f(op)s(ened)227 5601 y(again,)c(and)f(then)g(in)m(ternally)e (call)h(FTREOPEN,)h(so)h(programs)e(should)g(rarely)g(need)h(to)h (explicitly)d(call)227 5714 y(this)30 b(routine.)1905 5942 y(69)p eop %%Page: 70 76 70 75 bop 0 299 a Fi(70)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)334 555 y Fe(FTREOPEN\(unit,)44 b(>)j(newunit,)f(status\))0 804 y Fh(4)81 b Fi(Op)s(en)29 b(and)g(initialize)f(a)j(new)f(empt)m(y)g (FITS)g(\014le)334 1054 y Fe(FTINIT\(unit,filename,bloc)o(ksi)o(ze,)41 b(>)48 b(status\))0 1303 y Fh(5)81 b Fi(Create)24 b(a)g(new)f(FITS)g (\014le,)h(using)e(a)i(template)g(\014le)e(to)j(de\014ne)d(its)h (initial)e(size)j(and)f(structure.)37 b(The)24 b(template)227 1416 y(ma)m(y)39 b(b)s(e)f(another)h(FITS)e(HDU)i(or)g(an)f(ASCI)s(I)f (template)i(\014le.)63 b(If)38 b(the)h(input)d(template)j(\014le)e (name)i(is)227 1529 y(blank,)27 b(then)g(this)f(routine)g(b)s(eha)m(v)m (es)i(the)f(same)h(as)f(FTINIT.)g(The)f(curren)m(tly)h(supp)s(orted)e (format)i(of)h(the)227 1641 y(ASCI)s(I)c(template)i(\014le)f(is)f (describ)s(ed)g(under)g(the)i(\014ts)p 2037 1641 28 4 v 32 w(parse)p 2277 1641 V 33 w(template)f(routine)g(\(in)g(the)g (general)h(Utilities)227 1754 y(section\),)31 b(but)f(this)f(ma)m(y)i (c)m(hange)h(sligh)m(tly)d(later)h(releases)g(of)h(CFITSIO.)334 2004 y Fe(FTTPLT\(unit,)45 b(filename,)g(tplfilename,)f(>)k(status\))0 2253 y Fh(6)81 b Fi(Flush)32 b(in)m(ternal)g(bu\013ers)h(of)h(data)g (to)g(the)g(output)g(FITS)f(\014le)g(previously)e(op)s(ened)i(with)f (ftop)s(en)i(or)f(ftinit.)227 2366 y(The)j(routine)g(usually)e(nev)m (er)j(needs)f(to)i(b)s(e)e(called,)h(but)f(doing)g(so)h(will)d(ensure)i (that)h(if)e(the)i(program)227 2479 y(subsequen)m(tly)29 b(ab)s(orts,)h(then)h(the)f(FITS)g(\014le)f(will)f(ha)m(v)m(e)k(at)f (least)f(b)s(een)g(closed)g(prop)s(erly)-8 b(.)382 2728 y Fe(FTFLUS\(unit,)44 b(>)k(status\))0 2977 y Fh(7)81 b Fi(Close)30 b(a)g(FITS)g(\014le)f(previously)f(op)s(ened)i(with)f (ftop)s(en)h(or)g(ftinit)382 3226 y Fe(FTCLOS\(unit,)44 b(>)k(status\))0 3475 y Fh(8)81 b Fi(Close)33 b(and)g(DELETE)g(a)h (FITS)f(\014le)g(previously)e(op)s(ened)i(with)f(ftop)s(en)h(or)h (ftinit.)49 b(This)32 b(routine)g(ma)m(y)j(b)s(e)227 3588 y(useful)28 b(in)h(cases)h(where)g(a)g(FITS)f(\014le)f(is)h (created,)i(but)e(an)h(error)f(o)s(ccurs)h(whic)m(h)e(prev)m(en)m(ts)j (the)e(complete)227 3701 y(\014le)h(from)g(b)s(eing)f(written.)382 3950 y Fe(FTDELT\(unit,)44 b(>)k(status\))0 4199 y Fh(9)81 b Fi(Get)31 b(the)g(v)-5 b(alue)30 b(of)g(an)g(un)m(used)g(I/O)g(unit)f (n)m(um)m(b)s(er)g(whic)m(h)g(ma)m(y)i(then)f(b)s(e)g(used)g(as)g (input)f(to)i(FTOPEN)f(or)227 4312 y(FTINIT.)36 b(This)e(routine)h (searc)m(hes)i(for)f(the)g(\014rst)f(un)m(used)g(unit)f(n)m(um)m(b)s (er)h(in)f(the)j(range)f(from)f(with)g(99)227 4425 y(do)m(wn)e(to)h (50.)50 b(This)31 b(routine)h(just)h(k)m(eeps)h(an)f(in)m(ternal)f (list)f(of)j(the)f(allo)s(cated)g(unit)f(n)m(um)m(b)s(ers)g(and)g(do)s (es)227 4538 y(not)26 b(ph)m(ysically)d(c)m(hec)m(k)j(that)g(the)g(F)-8 b(ortran)25 b(unit)f(is)g(a)m(v)-5 b(ailable)25 b(\(to)h(b)s(e)f (compatible)f(with)g(the)h(SPP)f(v)m(ersion)227 4651 y(of)35 b(FITSIO\).)g(Th)m(us)f(users)g(m)m(ust)h(not)g(indep)s(enden)m (tly)d(allo)s(cate)j(an)m(y)h(unit)d(n)m(um)m(b)s(ers)h(in)g(the)h (range)g(50)227 4764 y(-)42 b(99)g(if)e(this)g(routine)g(is)g(also)h (to)h(b)s(e)f(used)f(in)g(the)h(same)h(program.)73 b(This)39 b(routine)h(is)g(pro)m(vided)g(for)227 4877 y(con)m(v)m(enience)33 b(only)-8 b(,)31 b(and)f(it)h(is)f(not)i(required)d(that)j(the)f(unit)f (n)m(um)m(b)s(ers)g(used)g(b)m(y)h(FITSIO)f(b)s(e)h(allo)s(cated)227 4990 y(b)m(y)g(this)e(routine.)382 5239 y Fe(FTGIOU\()46 b(>)h(iounit,)f(status\))0 5488 y Fh(10)g Fi(F)-8 b(ree)34 b(\(deallo)s(cate\))g(an)f(I/O)g(unit)e(n)m(um)m(b)s(er)h(whic)m(h)f(w) m(as)i(previously)e(allo)s(cated)i(with)f(FTGIOU.)h(All)e(pre-)227 5601 y(viously)26 b(allo)s(cated)i(unit)e(n)m(um)m(b)s(ers)g(ma)m(y)i (b)s(e)f(deallo)s(cated)h(at)g(once)h(b)m(y)e(calling)f(FTFIOU)i(with)e (iounit)g(=)227 5714 y(-1.)p eop %%Page: 71 77 71 76 bop 0 299 a Fg(9.1.)72 b(FITS)30 b(FILE)g(OPEN)g(AND)h(CLOSE)e (SUBR)m(OUTINES:)1561 b Fi(71)382 555 y Fe(FTFIOU\(iounit,)44 b(>)j(status\))0 788 y Fh(11)f Fi(Return)30 b(the)h(F)-8 b(ortran)31 b(unit)f(n)m(um)m(b)s(er)f(that)i(corresp)s(onds)f(to)h (the)g(C)g(\014ts\014le)e(p)s(oin)m(ter)h(v)-5 b(alue,)31 b(or)f(vice)h(v)m(ersa.)227 901 y(These)37 b(2)h(C)f(routines)f(ma)m(y) h(b)s(e)g(useful)e(in)h(mixed)g(language)i(programs)f(where)f(b)s(oth)h (C)g(and)f(F)-8 b(ortran)227 1014 y(subroutines)24 b(need)h(to)i (access)g(the)f(same)g(\014le.)39 b(F)-8 b(or)26 b(example,)h(if)e(a)h (FITS)f(\014le)g(is)g(op)s(ened)g(with)f(unit)g(12)j(b)m(y)227 1127 y(a)k(F)-8 b(ortran)31 b(subroutine,)e(then)h(a)h(C)f(routine)g (within)e(the)i(same)h(program)g(could)e(get)j(the)e(\014t\014le)g(p)s (oin)m(ter)227 1240 y(v)-5 b(alue)38 b(to)g(access)h(the)f(same)h (\014le)e(b)m(y)g(calling)g('fptr)g(=)h(CUnit2FITS\(12\)'.)63 b(These)38 b(routines)f(return)g(a)227 1353 y(v)-5 b(alue)30 b(of)h(zero)g(if)e(an)h(error)g(o)s(ccurs.)286 1586 y Fe(int)334 b(CFITS2Unit\(fitsfile)42 b(*ptr\);)286 1698 y(fitsfile*)k(CUnit2FITS\(int)e(unit\);)0 1931 y Fh(11)i Fi(P)m(arse)32 b(the)g(input)d(\014lename)i(and)g(return)f(the)i(HDU)g (n)m(um)m(b)s(er)e(that)i(w)m(ould)e(b)s(e)h(mo)m(v)m(ed)i(to)f(if)e (the)i(\014le)e(w)m(ere)227 2044 y(op)s(ened)j(with)f(FTNOPN.)h(The)f (returned)g(HDU)i(n)m(um)m(b)s(er)e(b)s(egins)g(with)g(1)h(for)g(the)g (primary)f(arra)m(y)-8 b(,)35 b(so)227 2157 y(for)d(example,)f(if)g (the)h(input)e(\014lename)g(=)i(`m)m(y\014le.\014ts[2]')g(then)f(hdun)m (um)e(=)j(3)g(will)d(b)s(e)i(returned.)43 b(FIT-)227 2270 y(SIO)35 b(do)s(es)h(not)g(op)s(en)g(the)g(\014le)f(to)i(c)m(hec)m (k)h(if)d(the)h(extension)g(actually)g(exists)f(if)h(an)f(extension)h (n)m(um)m(b)s(er)227 2383 y(is)42 b(sp)s(eci\014ed.)74 b(If)42 b(an)g(extension)g(*name*)h(is)e(included)f(in)h(the)h(\014le)f (name)i(sp)s(eci\014cation)e(\(e.g.)77 b(`m)m(y-)227 2496 y(\014le.\014ts[EVENTS]')29 b(then)g(this)g(routine)g(will)e(ha)m (v)m(e)k(to)f(op)s(en)f(the)h(FITS)f(\014le)g(and)g(lo)s(ok)g(for)h (the)g(p)s(osition)227 2609 y(of)38 b(the)h(named)e(extension,)j(then)e (close)g(\014le)f(again.)63 b(This)37 b(is)g(not)h(p)s(ossible)d(if)i (the)h(\014le)f(is)g(b)s(eing)g(read)227 2722 y(from)f(the)g(stdin)e (stream,)k(and)d(an)h(error)f(will)e(b)s(e)j(returned)e(in)h(this)g (case.)58 b(If)35 b(the)h(\014lename)f(do)s(es)h(not)227 2835 y(sp)s(ecify)28 b(an)h(explicit)e(extension)i(\(e.g.)42 b('m)m(y\014le.\014ts'\))29 b(then)g(hdun)m(um)e(=)h(-99)j(will)26 b(b)s(e)j(returned,)f(whic)m(h)g(is)227 2948 y(functionally)j(equiv)-5 b(alen)m(t)33 b(to)i(hdun)m(um)c(=)i(1.)50 b(This)32 b(routine)g(is)h(mainly)f(used)g(for)i(bac)m(kw)m(ard)g(compati-)227 3060 y(bilit)m(y)d(in)g(the)h(fto)s(ols)g(soft)m(w)m(are)i(pac)m(k)-5 b(age)34 b(and)e(is)f(not)h(recommended)g(for)g(general)h(use.)46 b(It)32 b(is)g(generally)227 3173 y(b)s(etter)j(and)g(more)g(e\016cien) m(t)g(to)h(\014rst)e(op)s(en)g(the)h(FITS)f(\014le)g(with)g(FTNOPN,)h (then)g(use)f(FTGHDN)i(to)227 3286 y(determine)29 b(whic)m(h)g(HDU)h (in)e(the)i(\014le)f(has)h(b)s(een)f(op)s(ened,)g(rather)g(than)h (calling)e(FTEXTN)i(follo)m(w)m(ed)f(b)m(y)227 3399 y(a)i(call)f(to)h (FTNOPN.)382 3632 y Fe(FTEXTN\(filename,)43 b(>)48 b(nhdu,)e(status\))0 3865 y Fh(12)g Fi(Return)30 b(the)g(name)h(of)f(the)h(op)s(ened)e(FITS) h(\014le.)382 4098 y Fe(FTFLNM\(unit,)44 b(>)k(filename,)d(status\))0 4331 y Fh(13)h Fi(Return)30 b(the)g(I/O)g(mo)s(de)g(of)h(the)g(op)s(en) e(FITS)h(\014le)f(\(READONL)-8 b(Y)32 b(=)e(0,)h(READ)m(WRITE)g(=)f (1\).)382 4564 y Fe(FTFLMD\(unit,)44 b(>)k(iomode,)e(status\))0 4796 y Fh(14)g Fi(Return)30 b(the)g(\014le)g(t)m(yp)s(e)g(of)h(the)f (op)s(ened)g(FITS)g(\014le)f(\(e.g.)42 b('\014le://',)31 b('ftp://',)h(etc.\).)382 5029 y Fe(FTURLT\(unit,)44 b(>)k(urltype,)d(status\))0 5262 y Fh(15)h Fi(P)m(arse)27 b(the)f(input)e(\014lename)i(or)g(URL)g(in)m(to)g(its)g(comp)s(onen)m (t)g(parts:)39 b(the)26 b(\014le)f(t)m(yp)s(e)i(\(\014le://,)g(ftp://,) h(h)m(ttp://,)227 5375 y(etc\),)34 b(the)e(base)g(input)d(\014le)i (name,)h(the)g(name)g(of)g(the)g(output)f(\014le)g(that)h(the)g(input)e (\014le)g(is)h(to)h(b)s(e)f(copied)227 5488 y(to)38 b(prior)d(to)i(op)s (ening,)g(the)g(HDU)g(or)f(extension)h(sp)s(eci\014cation,)g(the)g (\014ltering)d(sp)s(eci\014er,)j(the)g(binning)227 5601 y(sp)s(eci\014er,)d(and)f(the)i(column)e(sp)s(eci\014er.)50 b(Blank)33 b(strings)g(will)f(b)s(e)h(returned)g(for)h(an)m(y)g(comp)s (onen)m(ts)g(that)227 5714 y(are)d(not)g(presen)m(t)f(in)f(the)i(input) d(\014le)i(name.)p eop %%Page: 72 78 72 77 bop 0 299 a Fi(72)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)334 555 y Fe(FTIURL\(filename,)43 b(>)48 b(filetype,)d(infile,)h(outfile,)g (extspec,)f(filter,)716 668 y(binspec,)g(colspec,)h(status\))0 913 y Fh(16)g Fi(P)m(arse)e(the)g(input)e(\014le)h(name)g(and)g(return) g(the)h(ro)s(ot)g(\014le)e(name.)81 b(The)43 b(ro)s(ot)h(name)g (includes)d(the)j(\014le)227 1025 y(t)m(yp)s(e)35 b(if)f(sp)s (eci\014ed,)h(\(e.g.)56 b('ftp://')37 b(or)e('h)m(ttp://'\))i(and)d (the)h(full)e(path)i(name,)h(to)g(the)f(exten)m(t)i(that)e(it)g(is)227 1138 y(sp)s(eci\014ed)25 b(in)f(the)j(input)d(\014lename.)38 b(It)26 b(do)s(es)g(not)g(include)e(the)i(HDU)h(name)f(or)g(n)m(um)m(b) s(er,)g(or)g(an)m(y)h(\014ltering)227 1251 y(sp)s(eci\014cations.)334 1496 y Fe(FTRTNM\(filename,)43 b(>)48 b(rootname,)d(status\))0 1740 y Fh(16)h Fi(T)-8 b(est)36 b(if)f(the)h(input)e(\014le)h(or)g(a)i (compressed)e(v)m(ersion)g(of)h(the)g(\014le)f(\(with)g(a)h(.gz,)i(.Z,) e(.z,)i(or)e(.zip)f(extension\))227 1853 y(exists)j(on)g(disk.)62 b(The)37 b(returned)g(v)-5 b(alue)37 b(of)h(the)h('exists')f(parameter) g(will)d(ha)m(v)m(e)40 b(1)e(of)g(the)g(4)g(follo)m(wing)227 1966 y(v)-5 b(alues:)370 2198 y Fe(2:)95 b(the)47 b(file)g(does)g(not)f (exist,)h(but)f(a)i(compressed)d(version)h(does)g(exist)370 2311 y(1:)95 b(the)47 b(disk)g(file)g(does)f(exist)370 2424 y(0:)95 b(neither)46 b(the)h(file)g(nor)g(a)g(compressed)e (version)h(of)h(the)g(file)g(exist)323 2537 y(-1:)94 b(the)47 b(input)g(file)f(name)h(is)g(not)g(a)g(disk)g(file)g(\(could)f (be)h(a)g(ftp,)g(http,)561 2650 y(smem,)g(or)g(mem)g(file,)f(or)h(a)h (file)e(piped)h(in)g(on)g(the)g(STDIN)f(stream\))286 2894 y(FTEXIST\(filename,)d(>)48 b(exists,)e(status\);)0 3225 y Fd(9.2)135 b(HDU-Lev)l(el)47 b(Op)t(erations)0 3475 y Fi(When)30 b(a)h(FITS)f(\014le)f(is)h(\014rst)f(op)s(ened)h(or)g (created,)i(the)f(in)m(ternal)e(bu\013ers)g(in)g(FITSIO)g (automatically)i(p)s(oin)m(t)e(to)0 3588 y(the)h(\014rst)g(HDU)h(in)e (the)h(\014le.)40 b(The)29 b(follo)m(wing)g(routines)g(ma)m(y)i(b)s(e)e (used)h(to)h(mo)m(v)m(e)g(to)g(another)f(HDU)h(in)e(the)i(\014le.)0 3701 y(Note)j(that)f(the)g(HDU)g(n)m(um)m(b)s(ering)e(con)m(v)m(en)m (tion)i(used)f(in)f(FITSIO)h(denotes)h(the)f(primary)f(arra)m(y)i(as)g (the)g(\014rst)0 3814 y(HDU,)e(the)g(\014rst)f(extension)g(in)f(a)h (FITS)g(\014le)f(is)h(the)g(second)h(HDU,)g(and)f(so)h(on.)0 4059 y Fh(1)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)e (\(absolute\))h(HDU)h(in)f(the)g(FITS)g(\014le)f(\(nhdu)g(=)h(1)h(for)f (the)g(FITS)g(primary)e(arra)m(y\))382 4303 y Fe(FTMAHD\(unit,nhdu,)43 b(>)k(hdutype,status\))0 4548 y Fh(2)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(new)f(\(existing\))g(HDU)h(forw)m(ard)f(or)g(bac)m(kw)m (ards)h(relativ)m(e)f(to)h(the)g(CHDU)382 4792 y Fe (FTMRHD\(unit,nmove,)43 b(>)k(hdutype,status\))0 5036 y Fh(3)81 b Fi(Mo)m(v)m(e)22 b(to)f(the)f(\(\014rst\))h(HDU)g(whic)m(h) e(has)h(the)g(sp)s(eci\014ed)f(extension)h(t)m(yp)s(e)g(and)g(EXTNAME)g (\(or)h(HDUNAME\))227 5149 y(and)32 b(EXTVER)g(k)m(eyw)m(ord)h(v)-5 b(alues.)47 b(The)32 b(hdut)m(yp)s(e)f(parameter)i(ma)m(y)h(ha)m(v)m(e) f(a)g(v)-5 b(alue)32 b(of)h(IMA)m(GE)p 3640 5149 28 4 v 34 w(HDU,)227 5262 y(ASCI)s(I)p 486 5262 V 32 w(TBL,)f(BINAR)-8 b(Y)p 1122 5262 V 34 w(TBL,)32 b(or)h(ANY)p 1718 5262 V 33 w(HDU)g(where)f(ANY)p 2458 5262 V 33 w(HDU)i(means)e(that)h(only)f (the)g(extname)227 5375 y(and)k(extv)m(er)h(v)-5 b(alues)35 b(will)e(b)s(e)i(used)g(to)i(lo)s(cate)g(the)f(correct)h(extension.)57 b(If)35 b(the)h(input)e(v)-5 b(alue)36 b(of)g(extv)m(er)227 5488 y(is)c(0)h(then)f(the)g(EXTVER)h(k)m(eyw)m(ord)g(is)e(ignored)h (and)g(the)g(\014rst)g(HDU)h(with)e(a)i(matc)m(hing)g(EXTNAME)227 5601 y(\(or)j(HDUNAME\))h(k)m(eyw)m(ord)f(will)c(b)s(e)j(found.)55 b(If)34 b(no)i(matc)m(hing)f(HDU)h(is)f(found)f(in)g(the)h(\014le)g (then)g(the)227 5714 y(curren)m(t)27 b(HDU)g(will)d(remain)h(unc)m (hanged)i(and)f(a)h(status)g(=)f(BAD)p 2501 5714 V 34 w(HDU)p 2740 5714 V 33 w(NUM)h(\(301\))i(will)24 b(b)s(e)i(returned.)p eop %%Page: 73 79 73 78 bop 0 299 a Fg(9.2.)72 b(HDU-LEVEL)31 b(OPERA)-8 b(TIONS)2414 b Fi(73)382 555 y Fe(FTMNHD\(unit,)44 b(hdutype,)i (extname,)f(extver,)h(>)i(status\))0 804 y Fh(4)81 b Fi(Get)31 b(the)g(n)m(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(HDU)h(in)e (the)i(FITS)e(\014le)h(\(primary)f(arra)m(y)h(=)g(1\))382 1054 y Fe(FTGHDN\(unit,)44 b(>)k(nhdu\))0 1303 y Fh(5)81 b Fi(Return)39 b(the)i(t)m(yp)s(e)g(of)g(the)g(curren)m(t)f(HDU)i(in)d (the)i(FITS)f(\014le.)70 b(The)41 b(p)s(ossible)d(v)-5 b(alues)40 b(for)g(hdut)m(yp)s(e)g(are)227 1416 y(IMA)m(GE)p 546 1416 28 4 v 34 w(HDU)31 b(\(0\),)h(ASCI)s(I)p 1242 1416 V 31 w(TBL)e(\(1\),)i(or)e(BINAR)-8 b(Y)p 2133 1416 V 34 w(TBL)30 b(\(2\).)382 1665 y Fe(FTGHDT\(unit,)44 b(>)k(hdutype,)d(status\))0 1914 y Fh(6)81 b Fi(Return)29 b(the)i(total)g(n)m(um)m(b)s(er)e(of)i(HDUs)f(in)g(the)g(FITS)g (\014le.)40 b(The)29 b(CHDU)i(remains)e(unc)m(hanged.)382 2163 y Fe(FTTHDU\(unit,)44 b(>)k(hdunum,)e(status\))0 2412 y Fh(7)81 b Fi(Create)36 b(\(app)s(end\))e(a)h(new)g(empt)m(y)g (HDU)h(follo)m(wing)e(the)h(last)g(extension)g(that)h(has)f(b)s(een)f (previously)f(ac-)227 2525 y(cessed)41 b(b)m(y)f(the)g(program.)70 b(This)39 b(will)e(o)m(v)m(erwrite)k(an)m(y)g(extensions)f(in)e(an)j (existing)e(FITS)g(\014le)h(if)f(the)227 2638 y(program)31 b(has)g(not)g(already)g(mo)m(v)m(ed)h(to)f(that)h(\(or)f(a)h(later\))f (extension)g(using)e(the)i(FTMAHD)h(or)f(FTM-)227 2751 y(RHD)24 b(routines.)37 b(F)-8 b(or)25 b(example,)f(if)f(an)g(existing) f(FITS)h(\014le)f(con)m(tains)i(a)g(primary)d(arra)m(y)j(and)f(5)g (extensions)227 2864 y(and)31 b(a)h(program)f(\(1\))h(op)s(ens)f(the)g (FITS)g(\014le,)g(\(2\))h(mo)m(v)m(es)h(to)f(extension)f(4,)h(\(3\))g (mo)m(v)m(es)h(bac)m(k)f(to)g(the)f(pri-)227 2977 y(mary)36 b(arra)m(y)-8 b(,)38 b(and)e(\(4\))h(then)e(calls)g(FTCRHD,)h(then)g (the)g(new)g(extension)f(will)e(b)s(e)j(written)e(follo)m(wing)227 3090 y(the)d(4th)f(extension,)h(o)m(v)m(erwriting)f(the)g(existing)f (5th)i(extension.)382 3339 y Fe(FTCRHD\(unit,)44 b(>)k(status\))0 3588 y Fh(8)81 b Fi(Insert)41 b(a)h(new)f(IMA)m(GE)i(extension)f (immediately)e(follo)m(wing)g(the)i(CHDU.)g(An)m(y)g(follo)m(wing)e (extensions)227 3701 y(will)c(b)s(e)i(shifted)f(do)m(wn)h(to)h(mak)m(e) g(ro)s(om)g(for)f(the)g(new)g(extension.)65 b(If)38 b(there)h(are)f(no) h(other)f(follo)m(wing)227 3814 y(extensions)29 b(then)g(the)h(new)e (image)i(extension)f(will)e(simply)f(b)s(e)j(app)s(ended)f(to)i(the)f (end)g(of)g(the)h(\014le.)39 b(The)227 3927 y(new)30 b(extension)g(will)e(b)s(ecome)j(the)f(CHDU.)382 4176 y Fe(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))0 4425 y Fh(9)81 b Fi(Insert)30 b(a)i(new)f(ASCI)s(I)f(T)-8 b(ABLE)31 b(extension)g(immediately)f(follo)m(wing)f(the)j(CHDU.)g(An)m (y)f(follo)m(wing)f(exten-)227 4538 y(sions)25 b(will)e(b)s(e)i (shifted)f(do)m(wn)h(to)h(mak)m(e)h(ro)s(om)e(for)h(the)f(new)g (extension.)39 b(If)25 b(there)h(are)g(no)g(other)f(follo)m(wing)227 4651 y(extensions)31 b(then)g(the)h(new)f(table)g(extension)g(will)e (simply)g(b)s(e)i(app)s(ended)f(to)i(the)f(end)g(of)h(the)f(\014le.)43 b(The)227 4764 y(new)30 b(extension)g(will)e(b)s(ecome)j(the)f(CHDU.) 382 5013 y Fe(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o (,tbc)o(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 5126 y(status\))0 5375 y Fh(10)k Fi(Insert)25 b(a)h(new)f(binary)e(table)j(extension)f(immediately)e(follo)m(wing)h (the)i(CHDU.)g(An)m(y)g(follo)m(wing)d(extensions)227 5488 y(will)36 b(b)s(e)i(shifted)f(do)m(wn)h(to)h(mak)m(e)g(ro)s(om)g (for)f(the)g(new)g(extension.)65 b(If)38 b(there)h(are)f(no)h(other)f (follo)m(wing)227 5601 y(extensions)e(then)h(the)f(new)g(bin)m(table)f (extension)i(will)d(simply)g(b)s(e)i(app)s(ended)e(to)k(the)e(end)g(of) h(the)g(\014le.)227 5714 y(The)30 b(new)g(extension)g(will)e(b)s(ecome) j(the)f(CHDU.)p eop %%Page: 74 80 74 79 bop 0 299 a Fi(74)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o(rm,)o(tuni)o (t,ex)o(tna)o(me,v)o(arid)o(at)41 b(>)48 b(status\))0 777 y Fh(11)e Fi(Resize)25 b(an)f(image)h(b)m(y)f(mo)s(di\014ng)e(the)j (size,)h(dimensions,)d(and/or)h(datat)m(yp)s(e)h(of)g(the)g(curren)m(t) f(primary)e(arra)m(y)227 890 y(or)29 b(image)h(extension.)39 b(If)29 b(the)g(new)g(image,)h(as)f(sp)s(eci\014ed)e(b)m(y)i(the)g (input)e(argumen)m(ts,)j(is)e(larger)h(than)g(the)227 1003 y(curren)m(t)34 b(existing)f(image)h(in)f(the)h(FITS)f(\014le)g (then)g(zero)i(\014ll)d(data)j(will)c(b)s(e)i(inserted)g(at)h(the)g (end)g(of)g(the)227 1116 y(curren)m(t)25 b(image)g(and)f(an)m(y)i (follo)m(wing)d(extensions)i(will)d(b)s(e)i(mo)m(v)m(ed)i(further)e (bac)m(k)h(in)f(the)h(\014le.)38 b(Similarly)-8 b(,)23 b(if)227 1229 y(the)28 b(new)e(image)i(is)e(smaller)g(than)h(the)g (curren)m(t)g(image)g(then)g(an)m(y)h(follo)m(wing)e(extensions)g(will) f(b)s(e)h(shifted)227 1342 y(up)32 b(to)m(w)m(ards)i(the)g(b)s (eginning)c(of)j(the)h(FITS)e(\014le)g(and)h(the)g(image)g(data)h(will) d(b)s(e)h(truncated)h(to)h(the)f(new)227 1455 y(size.)40 b(This)24 b(routine)h(rewrites)h(the)g(BITPIX,)h(NAXIS,)f(and)g(NAXISn) g(k)m(eyw)m(ords)g(with)f(the)i(appropriate)227 1567 y(v)-5 b(alues)30 b(for)g(new)g(image.)382 1789 y Fe (FTRSIM\(unit,bitpix,naxis)o(,na)o(xes,)o(stat)o(us\))0 2011 y Fh(12)46 b Fi(Delete)33 b(the)g(CHDU)g(in)e(the)h(FITS)f (\014le.)46 b(An)m(y)32 b(follo)m(wing)f(HDUs)i(will)d(b)s(e)h(shifted) g(forw)m(ard)h(in)f(the)h(\014le,)g(to)227 2124 y(\014ll)k(in)g(the)h (gap)h(created)g(b)m(y)g(the)f(deleted)g(HDU.)i(In)d(the)i(case)g(of)g (deleting)e(the)i(primary)d(arra)m(y)j(\(the)227 2237 y(\014rst)30 b(HDU)h(in)e(the)i(\014le\))f(then)g(the)h(curren)m(t)f (primary)e(arra)m(y)j(will)d(b)s(e)i(replace)g(b)m(y)h(a)g(n)m(ull)d (primary)g(arra)m(y)227 2350 y(con)m(taining)j(the)h(minim)m(um)c(set)k (of)g(required)d(k)m(eyw)m(ords)j(and)e(no)i(data.)44 b(If)31 b(there)g(are)h(more)f(extensions)227 2463 y(in)e(the)h(\014le) f(follo)m(wing)g(the)h(one)g(that)h(is)e(deleted,)h(then)g(the)g(the)g (CHDU)h(will)c(b)s(e)j(rede\014ned)e(to)j(p)s(oin)m(t)e(to)227 2576 y(the)e(follo)m(wing)e(extension.)40 b(If)26 b(there)h(are)g(no)g (follo)m(wing)e(extensions)h(then)h(the)g(CHDU)g(will)d(b)s(e)i (rede\014ned)227 2689 y(to)35 b(p)s(oin)m(t)e(to)i(the)f(previous)e (HDU.)j(The)e(output)h(HDUTYPE)g(parameter)h(indicates)d(the)j(t)m(yp)s (e)f(of)g(the)227 2802 y(new)c(CHDU)h(after)g(the)f(previous)f(CHDU)i (has)f(b)s(een)g(deleted.)382 3024 y Fe(FTDHDU\(unit,)44 b(>)k(hdutype,status\))0 3245 y Fh(13)e Fi(Cop)m(y)36 b(all)f(or)h(part)g(of)g(the)g(input)e(FITS)h(\014le)g(and)h(app)s(end) e(it)h(to)i(the)f(end)g(of)g(the)g(output)g(FITS)f(\014le.)56 b(If)227 3358 y('previous')27 b(is)g(true)h(\(not)g(0\),)i(then)d(an)m (y)h(HDUs)h(preceding)e(the)h(curren)m(t)f(HDU)i(in)d(the)i(input)e (\014le)h(will)f(b)s(e)227 3471 y(copied)33 b(to)h(the)g(output)f (\014le.)50 b(Similarly)-8 b(,)31 b('curren)m(t')j(and)e('follo)m (wing')h(determine)g(whether)f(the)i(curren)m(t)227 3584 y(HDU,)g(and/or)e(an)m(y)h(follo)m(wing)e(HDUs)i(in)e(the)h(input)f (\014le)g(will)f(b)s(e)i(copied)g(to)h(the)f(output)g(\014le.)46 b(If)32 b(all)g(3)227 3697 y(parameters)j(are)h(true,)g(then)e(the)h (en)m(tire)g(input)e(\014le)h(will)e(b)s(e)i(copied.)54 b(On)33 b(return,)j(the)f(curren)m(t)f(HDU)227 3810 y(in)29 b(the)g(input)f(\014le)h(will)e(b)s(e)i(unc)m(hanged,)h(and)f(the)h (last)f(copied)g(HDU)i(will)c(b)s(e)i(the)h(curren)m(t)f(HDU)h(in)f (the)227 3923 y(output)h(\014le.)382 4145 y Fe(FTCPFL\(iunit,)44 b(ounit,)i(previous,)f(current,)h(following,)f(>)i(status\))0 4367 y Fh(14)f Fi(Cop)m(y)35 b(the)f(en)m(tire)h(CHDU)g(from)f(the)g (FITS)g(\014le)g(asso)s(ciated)h(with)e(IUNIT)h(to)i(the)e(CHDU)h(of)g (the)g(FITS)227 4480 y(\014le)f(asso)s(ciated)h(with)e(OUNIT.)h(The)g (output)g(HDU)h(m)m(ust)f(b)s(e)g(empt)m(y)h(and)e(not)i(already)f(con) m(tain)h(an)m(y)227 4593 y(k)m(eyw)m(ords.)41 b(Space)29 b(will)d(b)s(e)j(reserv)m(ed)g(for)g(MOREKEYS)f(additional)e(k)m(eyw)m (ords)k(in)d(the)j(output)e(header)227 4706 y(if)i(there)g(is)g(not)g (already)g(enough)g(space.)382 4927 y Fe(FTCOPY\(iunit,ounit,morek)o (eys)o(,)42 b(>)47 b(status\))0 5149 y Fh(15)f Fi(Cop)m(y)27 b(the)h(header)f(\(and)g(not)g(the)g(data\))i(from)d(the)i(CHDU)g(asso) s(ciated)f(with)f(in)m(unit)f(to)j(the)f(CHDU)h(asso-)227 5262 y(ciated)e(with)e(outunit.)38 b(If)25 b(the)g(curren)m(t)h(output) f(HDU)h(is)e(not)i(completely)f(empt)m(y)-8 b(,)27 b(then)e(the)h(CHDU) g(will)227 5375 y(b)s(e)e(closed)h(and)f(a)i(new)e(HDU)h(will)e(b)s(e)h (app)s(ended)f(to)j(the)f(output)f(\014le.)38 b(This)23 b(routine)h(will)e(automatically)227 5488 y(transform)31 b(the)g(necessary)h(k)m(eyw)m(ords)f(when)g(cop)m(ying)g(a)g(primary)f (arra)m(y)i(to)f(and)g(image)h(extension,)f(or)227 5601 y(an)c(image)g(extension)f(to)h(a)h(primary)c(arra)m(y)-8 b(.)41 b(An)26 b(empt)m(y)h(output)f(data)i(unit)d(will)f(b)s(e)i (created)i(\(all)e(v)-5 b(alues)227 5714 y(=)30 b(0\).)p eop %%Page: 75 81 75 80 bop 0 299 a Fg(9.3.)72 b(DEFINE)31 b(OR)f(REDEFINE)h(THE)f(STR)m (UCTURE)f(OF)h(THE)g(CHDU)1042 b Fi(75)382 555 y Fe(FTCPHD\(inunit,)44 b(outunit,)h(>)j(status\))0 819 y Fh(16)e Fi(Cop)m(y)d(just)g(the)g (data)h(from)f(the)g(CHDU)h(asso)s(ciated)f(with)f(IUNIT)h(to)h(the)f (CHDU)h(asso)s(ciated)f(with)227 932 y(OUNIT.)26 b(This)e(will)f(o)m(v) m(erwrite)j(an)m(y)g(data)g(previously)e(in)g(the)i(OUNIT)f(CHDU.)h (This)e(lo)m(w)i(lev)m(el)f(routine)227 1045 y(is)h(used)f(b)m(y)i (FTCOPY,)f(but)g(it)f(ma)m(y)j(also)e(b)s(e)g(useful)e(in)i(certain)g (application)f(programs)h(whic)m(h)f(w)m(an)m(t)i(to)227 1158 y(cop)m(y)j(the)f(data)h(from)f(one)g(FITS)f(\014le)g(to)i (another)f(but)g(also)g(w)m(an)m(t)h(to)g(mo)s(dify)d(the)i(header)g(k) m(eyw)m(ords)g(in)227 1271 y(the)j(pro)s(cess.)44 b(all)31 b(the)h(required)e(header)h(k)m(eyw)m(ords)h(m)m(ust)g(b)s(e)f(written) g(to)h(the)g(OUNIT)f(CHDU)h(b)s(efore)227 1383 y(calling)d(this)g (routine)382 1647 y Fe(FTCPDT\(iunit,ounit,)42 b(>)48 b(status\))0 1985 y Fd(9.3)135 b(De\014ne)45 b(or)g(Rede\014ne)h(the)f (structure)g(of)g(the)g(CHDU)0 2237 y Fi(It)32 b(should)e(rarely)h(b)s (e)h(necessary)g(to)h(call)e(the)h(subroutines)e(in)g(this)h(section.) 46 b(FITSIO)30 b(in)m(ternally)g(calls)h(these)0 2350 y(routines)i(whenev)m(er)h(necessary)-8 b(,)36 b(so)e(an)m(y)g(calls)f (to)i(these)f(routines)f(b)m(y)h(application)e(programs)i(will)d(lik)m (ely)i(b)s(e)0 2462 y(redundan)m(t.)0 2726 y Fh(1)81 b Fi(This)35 b(routine)h(forces)i(FITSIO)e(to)i(scan)f(the)g(curren)m (t)g(header)g(k)m(eyw)m(ords)h(that)f(de\014ne)g(the)g(structure)g(of) 227 2839 y(the)31 b(HDU)f(\(suc)m(h)g(as)h(the)f(NAXISn,)g(PCOUNT)f (and)g(GCOUNT)h(k)m(eyw)m(ords\))h(so)f(that)h(it)e(can)i(initialize) 227 2952 y(the)36 b(in)m(ternal)e(bu\013ers)g(that)i(describ)s(e)e(the) i(HDU)g(structure.)55 b(This)34 b(routine)h(ma)m(y)h(b)s(e)e(used)h (instead)g(of)227 3065 y(the)k(more)g(complicated)g(calls)f(to)h(ftp)s (def,)h(ftadef)f(or)g(ftb)s(def.)65 b(This)37 b(routine)h(is)g(also)h (v)m(ery)g(useful)e(for)227 3178 y(reinitializing)30 b(the)k(structure)g(of)g(an)f(HDU,)i(if)e(the)h(n)m(um)m(b)s(er)e(of)i (ro)m(ws)g(in)f(a)h(table,)h(as)f(sp)s(eci\014ed)e(b)m(y)i(the)227 3291 y(NAXIS2)d(k)m(eyw)m(ord,)g(has)f(b)s(een)g(mo)s(di\014ed)e(from)i (its)g(initial)d(v)-5 b(alue.)382 3554 y Fe(FTRDEF\(unit,)44 b(>)k(status\))141 b(\(DEPRECATED\))0 3818 y Fh(2)81 b Fi(De\014ne)27 b(the)g(structure)g(of)g(the)g(primary)e(arra)m(y)j (or)f(IMA)m(GE)h(extension.)39 b(When)27 b(writing)e(GR)m(OUP)m(ed)j (FITS)227 3931 y(\014les)42 b(that)i(b)m(y)e(con)m(v)m(en)m(tion)j(set) e(the)g(NAXIS1)g(k)m(eyw)m(ord)h(equal)e(to)i(0,)i(ftp)s(def)c(m)m(ust) h(b)s(e)f(called)g(with)227 4044 y(naxes\(1\))27 b(=)e(1,)i(NOT)e(0,)i (otherwise)e(FITSIO)f(will)f(rep)s(ort)i(an)g(error)g(status=308)i (when)d(trying)h(to)h(write)227 4157 y(data)31 b(to)g(a)g(group.)40 b(Note:)i(it)30 b(is)g(usually)e(simpler)g(to)j(call)f(FTRDEF)g(rather) h(than)f(this)f(routine.)382 4421 y Fe(FTPDEF\(unit,bitpix,naxis)o(,na) o(xes,)o(pcou)o(nt,)o(gcou)o(nt,)41 b(>)48 b(status\))93 b(\(DEPRECATED\))0 4684 y Fh(3)81 b Fi(De\014ne)32 b(the)h(structure)f (of)g(an)h(ASCI)s(I)e(table)h(\(T)-8 b(ABLE\))33 b(extension.)47 b(Note:)f(it)32 b(is)f(usually)f(simpler)g(to)k(call)227 4797 y(FTRDEF)d(rather)f(than)h(this)e(routine.)382 5061 y Fe(FTADEF\(unit,rowlen,tfiel)o(ds,)o(tbco)o(l,tf)o(orm)o(,nro)o(ws)42 b(>)47 b(status\))f(\(DEPRECATED\))0 5325 y Fh(4)81 b Fi(De\014ne)35 b(the)h(structure)f(of)g(a)h(binary)e(table)h(\(BINT)-8 b(ABLE\))37 b(extension.)55 b(Note:)e(it)35 b(is)f(usually)f(simpler)g (to)227 5438 y(call)d(FTRDEF)h(rather)f(than)g(this)f(routine.)382 5701 y Fe(FTBDEF\(unit,tfields,tfor)o(m,v)o(arid)o(at,n)o(row)o(s)42 b(>)47 b(status\))f(\(DEPRECATED\))p eop %%Page: 76 82 76 81 bop 0 299 a Fi(76)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 555 y Fh(5)81 b Fi(De\014ne)34 b(the)g(size)g(of)g(the)g(Curren)m(t)f (Data)i(Unit,)g(o)m(v)m(erriding)d(the)i(length)g(of)g(the)g(data)h (unit)d(as)i(previously)227 668 y(de\014ned)e(b)m(y)h(ftp)s(def,)g (ftadef,)i(or)e(ftb)s(def.)48 b(This)32 b(is)g(useful)f(if)i(one)g(do)s (es)g(not)h(kno)m(w)f(the)g(total)h(size)f(of)h(the)227 781 y(data)f(unit)e(un)m(til)g(after)h(the)h(data)g(ha)m(v)m(e)g(b)s (een)f(written.)45 b(The)32 b(size)g(\(in)f(b)m(ytes\))i(of)g(an)f (ASCI)s(I)f(or)h(Binary)227 894 y(table)26 b(is)f(giv)m(en)g(b)m(y)h (NAXIS1)g(*)g(NAXIS2.)40 b(\(Note)27 b(that)f(to)h(determine)e(the)g(v) -5 b(alue)26 b(of)g(NAXIS1)f(it)h(is)f(often)227 1007 y(more)32 b(con)m(v)m(enien)m(t)g(to)g(read)f(the)g(v)-5 b(alue)31 b(of)g(the)h(NAXIS1)f(k)m(eyw)m(ord)h(from)e(the)i(output)e (\014le,)h(rather)g(than)227 1120 y(computing)e(the)h(ro)m(w)g(length)g (directly)e(from)h(all)g(the)h(TF)m(ORM)h(k)m(eyw)m(ord)f(v)-5 b(alues\).)40 b(Note:)i(it)29 b(is)g(usually)227 1233 y(simpler)f(to)j(call)f(FTRDEF)h(rather)f(than)g(this)f(routine.)382 1454 y Fe(FTDDEF\(unit,bytlen,)42 b(>)48 b(status\))e(\(DEPRECATED\))0 1676 y Fh(6)81 b Fi(De\014ne)22 b(the)g(zero)i(indexed)c(b)m(yte)j (o\013set)g(of)g(the)f('heap')h(measured)e(from)h(the)h(start)g(of)f (the)g(binary)f(table)h(data.)227 1789 y(By)30 b(default)f(the)g(heap)h (is)e(assumed)h(to)h(start)g(immediately)e(follo)m(wing)g(the)i (regular)e(table)i(data,)g(i.e.,)g(at)227 1902 y(lo)s(cation)36 b(NAXIS1)h(x)g(NAXIS2.)59 b(This)35 b(routine)g(is)h(only)f(relev)-5 b(an)m(t)37 b(for)f(binary)f(tables)h(whic)m(h)g(con)m(tain)227 2015 y(v)-5 b(ariable)34 b(length)h(arra)m(y)g(columns)f(\(with)h(TF)m (ORMn)g(=)f('Pt'\).)57 b(This)33 b(subroutine)g(also)i(automatically) 227 2128 y(writes)22 b(the)h(v)-5 b(alue)22 b(of)h(theap)g(to)h(a)f(k)m (eyw)m(ord)g(in)f(the)h(extension)f(header.)38 b(This)21 b(subroutine)g(m)m(ust)i(b)s(e)f(called)227 2241 y(after)27 b(the)f(required)e(k)m(eyw)m(ords)j(ha)m(v)m(e)g(b)s(een)e(written)g (\(with)g(ftph)m(bn\))g(and)h(after)g(the)h(table)f(structure)f(has)227 2354 y(b)s(een)30 b(de\014ned)f(\(with)g(ftb)s(def)7 b(\))30 b(but)g(b)s(efore)g(an)m(y)g(data)h(is)f(written)f(to)i(the)g (table.)382 2575 y Fe(FTPTHP\(unit,theap,)43 b(>)k(status\))0 2903 y Fd(9.4)135 b(FITS)44 b(Header)i(I/O)f(Subroutines)0 3156 y Fb(9.4.1)112 b(Header)38 b(Space)h(and)f(P)m(osition)d(Routines) 0 3359 y Fh(1)81 b Fi(Reserv)m(e)37 b(space)g(in)e(the)i(CHU)f(for)h (MOREKEYS)e(more)i(header)f(k)m(eyw)m(ords.)59 b(This)35 b(subroutine)f(ma)m(y)k(b)s(e)227 3472 y(called)c(to)i(reserv)m(e)g (space)f(for)g(k)m(eyw)m(ords)g(whic)m(h)f(are)h(to)h(b)s(e)e(written)g (at)h(a)h(later)f(time,)h(after)f(the)g(data)227 3585 y(unit)g(or)h(subsequen)m(t)f(extensions)g(ha)m(v)m(e)i(b)s(een)e (written)g(to)i(the)f(FITS)f(\014le.)57 b(If)35 b(this)g(subroutine)f (is)h(not)227 3698 y(explicitly)25 b(called,)i(then)g(the)g(initial)e (size)h(of)i(the)f(FITS)f(header)h(will)e(b)s(e)h(limited)f(to)j(the)f (space)h(a)m(v)-5 b(ailable)227 3811 y(at)24 b(the)g(time)f(that)h(the) g(\014rst)f(data)h(is)f(written)f(to)i(the)g(asso)s(ciated)g(data)g (unit.)37 b(FITSIO)22 b(has)i(the)f(abilit)m(y)f(to)227 3924 y(dynamically)g(add)h(more)h(space)h(to)g(the)f(header)g(if)f (needed,)i(ho)m(w)m(ev)m(er)g(it)f(is)f(more)h(e\016cien)m(t)g(to)h (preallo)s(cate)227 4037 y(the)31 b(required)d(space)j(if)f(the)g(size) g(is)g(kno)m(wn)g(in)f(adv)-5 b(ance.)382 4258 y Fe (FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))0 4480 y Fh(2)81 b Fi(Return)23 b(the)i(n)m(um)m(b)s(er)e(of)h(existing)g(k)m (eyw)m(ords)g(in)g(the)g(CHU)g(\(NOT)h(including)c(the)j(END)h(k)m(eyw) m(ord)g(whic)m(h)e(is)227 4593 y(not)h(considered)e(a)h(real)g(k)m(eyw) m(ord\))h(and)f(the)g(remaining)f(space)h(a)m(v)-5 b(ailable)23 b(to)h(write)e(additional)g(k)m(eyw)m(ords)227 4706 y(in)38 b(the)i(CHU.)f(\(returns)f(KEYSADD)i(=)f(-1)h(if)e(the)h(header)g(has)g (not)h(y)m(et)g(b)s(een)e(closed\).)68 b(Note)40 b(that)227 4819 y(FITSIO)23 b(will)f(attempt)j(to)g(dynamically)d(add)h(space)i (for)f(more)g(k)m(eyw)m(ords)h(if)e(required)f(when)h(app)s(ending)227 4932 y(new)30 b(k)m(eyw)m(ords)h(to)g(a)g(header.)382 5153 y Fe(FTGHSP\(iunit,)44 b(>)j(keysexist,keysadd,status\))0 5375 y Fh(3)81 b Fi(Return)38 b(the)i(n)m(um)m(b)s(er)e(of)h(k)m(eyw)m (ords)h(in)e(the)h(header)g(and)g(the)g(curren)m(t)h(p)s(osition)d(in)h (the)h(header.)68 b(This)227 5488 y(returns)37 b(the)g(n)m(um)m(b)s(er) f(of)i(the)g(k)m(eyw)m(ord)g(record)f(that)h(will)d(b)s(e)i(read)g (next)h(\(or)g(one)g(greater)g(than)g(the)227 5601 y(p)s(osition)27 b(of)h(the)h(last)f(k)m(eyw)m(ord)h(that)g(w)m(as)f(read)g(or)h (written\).)39 b(A)29 b(v)-5 b(alue)27 b(of)i(1)g(is)e(returned)g(if)g (the)i(p)s(oin)m(ter)227 5714 y(is)h(p)s(ositioned)e(at)j(the)g(b)s (eginning)c(of)k(the)g(header.)p eop %%Page: 77 83 77 82 bop 0 299 a Fg(9.4.)72 b(FITS)30 b(HEADER)h(I/O)f(SUBR)m(OUTINES) 2086 b Fi(77)382 555 y Fe(FTGHPS\(iunit,)44 b(>)j (keysexist,key_no,status\))0 845 y Fb(9.4.2)112 b(Read)38 b(or)f(W)-9 b(rite)36 b(Standard)j(Header)e(Routines)0 1064 y Fi(These)31 b(subroutines)d(pro)m(vide)i(a)h(simple)e(metho)s(d) h(of)h(reading)f(or)h(writing)e(most)i(of)g(the)g(k)m(eyw)m(ord)g(v)-5 b(alues)30 b(that)0 1177 y(are)e(normally)e(required)g(in)h(a)h(FITS)f (\014les.)39 b(These)27 b(subroutines)f(are)i(pro)m(vided)e(for)i(con)m (v)m(enience)g(only)f(and)h(are)0 1290 y(not)36 b(required)d(to)j(b)s (e)f(used.)55 b(If)35 b(preferred,)h(users)e(ma)m(y)i(call)f(the)h(lo)m (w)m(er-lev)m(el)f(subroutines)e(describ)s(ed)h(in)g(the)0 1402 y(previous)29 b(section)i(to)h(individually)26 b(read)k(or)h (write)f(the)h(required)e(k)m(eyw)m(ords.)43 b(Note)32 b(that)g(in)d(most)j(cases,)g(the)0 1515 y(required)25 b(k)m(eyw)m(ords)i(suc)m(h)g(as)g(NAXIS,)f(TFIELD,)h(TTYPEn,)g(etc,)i (whic)m(h)c(de\014ne)h(the)h(structure)f(of)h(the)g(HDU)0 1628 y(m)m(ust)j(b)s(e)g(written)f(to)j(the)e(header)g(b)s(efore)g(an)m (y)h(data)g(can)g(b)s(e)e(written)h(to)h(the)g(image)f(or)h(table.)0 1881 y Fh(1)81 b Fi(Put)37 b(the)i(primary)d(header)i(or)g(IMA)m(GE)h (extension)e(k)m(eyw)m(ords)i(in)m(to)f(the)g(CHU.)g(There)g(are)g(2)h (a)m(v)-5 b(ailable)227 1994 y(routines:)38 b(The)27 b(simpler)d(FTPHPS)j(routine)f(is)g(equiv)-5 b(alen)m(t)27 b(to)g(calling)f(ftphpr)f(with)h(the)h(default)g(v)-5 b(alues)227 2107 y(of)35 b(SIMPLE)f(=)g(true,)i(p)s(coun)m(t)e(=)g(0,)i (gcoun)m(t)g(=)e(1,)i(and)e(EXTEND)h(=)f(true.)53 b(PCOUNT,)34 b(GCOUNT)227 2220 y(and)23 b(EXTEND)h(k)m(eyw)m(ords)g(are)h(not)f (required)e(in)g(the)i(primary)e(header)h(and)h(are)g(only)f(written)g (if)f(p)s(coun)m(t)227 2333 y(is)30 b(not)h(equal)g(to)h(zero,)g(gcoun) m(t)g(is)e(not)h(equal)f(to)i(zero)g(or)f(one,)g(and)g(if)f(extend)h (is)f(TR)m(UE,)h(resp)s(ectiv)m(ely)-8 b(.)227 2446 y(When)30 b(writing)f(to)i(an)f(IMA)m(GE)i(extension,)e(the)g(SIMPLE)g(and)g (EXTEND)g(parameters)h(are)g(ignored.)382 2699 y Fe (FTPHPS\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382 2925 y(FTPHPR\(unit,simple,bitpi)o(x,n)o(axis)o(,nax)o(es,)o(pcou)o (nt,g)o(cou)o(nt,e)o(xten)o(d,)41 b(>)48 b(status\))0 3178 y Fh(2)81 b Fi(Get)44 b(primary)d(header)i(or)h(IMA)m(GE)g (extension)f(k)m(eyw)m(ords)h(from)f(the)g(CHU.)h(When)f(reading)f (from)h(an)227 3291 y(IMA)m(GE)32 b(extension)e(the)g(SIMPLE)g(and)f (EXTEND)i(parameters)g(are)f(ignored.)382 3544 y Fe (FTGHPR\(unit,maxdim,)42 b(>)48 b(simple,bitpix,naxis,naxe)o(s,p)o (coun)o(t,gc)o(oun)o(t,ex)o(tend)o(,)716 3657 y(status\))0 3911 y Fh(3)81 b Fi(Put)34 b(the)h(ASCI)s(I)f(table)h(header)g(k)m(eyw) m(ords)g(in)m(to)g(the)g(CHU.)h(The)e(optional)g(TUNITn)g(and)h (EXTNAME)227 4024 y(k)m(eyw)m(ords)c(are)g(written)e(only)h(if)f(the)i (input)d(string)h(v)-5 b(alues)30 b(are)h(not)f(blank.)382 4277 y Fe(FTPHTB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o (ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 4390 y(status\))0 4643 y Fh(4)81 b Fi(Get)31 b(the)g(ASCI)s(I)d(table)j (header)f(k)m(eyw)m(ords)h(from)e(the)i(CHU)382 4896 y Fe(FTGHTB\(unit,maxdim,)42 b(>)48 b(rowlen,nrows,tfields,tty)o(pe,)o (tbco)o(l,tf)o(orm)o(,tun)o(it,)716 5009 y(extname,status\))0 5262 y Fh(5)81 b Fi(Put)34 b(the)h(binary)e(table)i(header)f(k)m(eyw)m (ords)i(in)m(to)e(the)h(CHU.)g(The)g(optional)f(TUNITn)g(and)g(EXTNAME) 227 5375 y(k)m(eyw)m(ords)i(are)g(written)e(only)g(if)h(the)g(input)e (string)i(v)-5 b(alues)34 b(are)i(not)f(blank.)54 b(The)35 b(p)s(coun)m(t)g(parameter,)227 5488 y(whic)m(h)e(sp)s(eci\014es)g(the) i(size)f(of)h(the)f(v)-5 b(ariable)33 b(length)h(arra)m(y)h(heap,)g (should)e(initially)d(=)k(0;)j(FITSIO)d(will)227 5601 y(automatically)24 b(up)s(date)f(the)h(PCOUNT)f(k)m(eyw)m(ord)h(v)-5 b(alue)23 b(if)g(an)m(y)h(v)-5 b(ariable)23 b(length)g(arra)m(y)i(data) f(is)f(written)227 5714 y(to)31 b(the)e(heap.)41 b(The)29 b(TF)m(ORM)g(k)m(eyw)m(ord)h(v)-5 b(alue)29 b(for)h(v)-5 b(ariable)28 b(length)h(v)m(ector)i(columns)d(should)g(ha)m(v)m(e)j (the)p eop %%Page: 78 84 78 83 bop 0 299 a Fi(78)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)227 555 y Fi(form)d('Pt\(len\)')i(or)e('1Pt\(len\)')i(where)e(`t')h(is)f (the)h(data)g(t)m(yp)s(e)g(co)s(de)f(letter)h(\(A,I,J,E,D,)h(etc.\))42 b(and)27 b(`len')g(is)227 668 y(an)h(in)m(teger)h(sp)s(ecifying)d(the)i (maxim)m(um)f(length)g(of)i(the)f(v)m(ectors)h(in)e(that)i(column)e (\(len)g(m)m(ust)h(b)s(e)g(greater)227 781 y(than)j(or)h(equal)e(to)j (the)e(longest)h(v)m(ector)g(in)e(the)i(column\).)43 b(If)30 b(`len')h(is)g(not)g(sp)s(eci\014ed)f(when)g(the)i(table)f(is) 227 894 y(created)c(\(e.g.,)i(the)d(input)e(TF)m(ORMn)i(v)-5 b(alue)25 b(is)g(just)g('1Pt'\))j(then)d(FITSIO)g(will)e(scan)j(the)g (column)f(when)227 1007 y(the)30 b(table)f(is)f(\014rst)h(closed)g(and) g(will)d(app)s(end)i(the)h(maxim)m(um)g(length)f(to)i(the)g(TF)m(ORM)f (k)m(eyw)m(ord)h(v)-5 b(alue.)227 1120 y(Note)28 b(that)e(if)f(the)h (table)g(is)f(subsequen)m(tly)g(mo)s(di\014ed)f(to)j(increase)e(the)i (maxim)m(um)e(length)g(of)h(the)g(v)m(ectors)227 1233 y(then)k(the)h(mo)s(difying)d(program)i(is)f(resp)s(onsible)f(for)i (also)g(up)s(dating)e(the)j(TF)m(ORM)g(k)m(eyw)m(ord)g(v)-5 b(alue.)382 1462 y Fe(FTPHBN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o (rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at,)41 b(>)48 b(status\))0 1691 y Fh(6)81 b Fi(Get)31 b(the)g(binary)d(table)i (header)h(k)m(eyw)m(ords)f(from)g(the)h(CHU)382 1921 y Fe(FTGHBN\(unit,maxdim,)42 b(>)48 b(nrows,tfields,ttype,tfor)o(m,t)o (unit)o(,ext)o(nam)o(e,va)o(rida)o(t,)716 2034 y(status\))0 2320 y Fb(9.4.3)112 b(W)-9 b(rite)36 b(Keyw)m(ord)h(Subroutines)0 2524 y Fh(1)81 b Fi(Put)30 b(\(app)s(end\))f(an)h(80-c)m(haracter)j (record)e(in)m(to)f(the)h(CHU.)382 2753 y Fe(FTPREC\(unit,card,)43 b(>)k(status\))0 2982 y Fh(2)81 b Fi(Put)36 b(\(app)s(end\))g(a)i (COMMENT)f(k)m(eyw)m(ord)g(in)m(to)g(the)h(CHU.)f(Multiple)e(COMMENT)i (k)m(eyw)m(ords)g(will)e(b)s(e)227 3095 y(written)30 b(if)f(the)i(input)d(commen)m(t)j(string)f(is)f(longer)h(than)g(72)i(c) m(haracters.)382 3325 y Fe(FTPCOM\(unit,comment,)42 b(>)48 b(status\))0 3554 y Fh(3)81 b Fi(Put)24 b(\(app)s(end\))g(a)h(HISTOR)-8 b(Y)25 b(k)m(eyw)m(ord)g(in)m(to)g(the)g(CHU.)g(Multiple)e(HISTOR)-8 b(Y)24 b(k)m(eyw)m(ords)h(will)e(b)s(e)h(written)227 3667 y(if)30 b(the)g(input)f(history)g(string)g(is)h(longer)g(than)g (72)h(c)m(haracters.)382 3897 y Fe(FTPHIS\(unit,history,)42 b(>)48 b(status\))0 4126 y Fh(4)81 b Fi(Put)36 b(\(app)s(end\))f(the)h (D)m(A)-8 b(TE)38 b(k)m(eyw)m(ord)f(in)m(to)f(the)g(CHU.)h(The)f(k)m (eyw)m(ord)g(v)-5 b(alue)36 b(will)e(con)m(tain)j(the)f(curren)m(t)227 4239 y(system)c(date)g(as)g(a)f(c)m(haracter)i(string)e(in)f ('dd/mm/yy')h(format.)44 b(If)31 b(a)h(D)m(A)-8 b(TE)32 b(k)m(eyw)m(ord)g(already)f(exists)227 4352 y(in)j(the)h(header,)i (then)d(this)g(subroutine)f(will)g(simply)f(up)s(date)j(the)g(k)m(eyw)m (ord)g(v)-5 b(alue)35 b(in-place)f(with)g(the)227 4465 y(curren)m(t)c(date.)382 4694 y Fe(FTPDAT\(unit,)44 b(>)k(status\))0 4924 y Fh(5)81 b Fi(Put)22 b(\(app)s(end\))f(a)i(new)f(k)m(eyw)m(ord)h (of)g(the)f(appropriate)g(datat)m(yp)s(e)h(in)m(to)g(the)f(CHU.)h(Note) h(that)f(FTPKYS)f(will)227 5036 y(only)32 b(write)g(string)f(v)-5 b(alues)32 b(up)f(to)j(68)f(c)m(haracters)h(in)d(length;)i(longer)f (strings)g(will)d(b)s(e)j(truncated.)47 b(The)227 5149 y(FTPKLS)27 b(routine)g(can)i(b)s(e)f(used)f(to)i(write)e(longer)h (strings,)g(using)e(a)j(non-standard)e(FITS)h(con)m(v)m(en)m(tion.)227 5262 y(The)23 b(E)h(and)f(D)h(v)m(ersions)f(of)h(this)e(routine)h(ha)m (v)m(e)i(the)f(added)f(feature)h(that)g(if)f(the)h('decimals')f (parameter)h(is)227 5375 y(negativ)m(e,)h(then)20 b(the)i('G')g(displa) m(y)d(format)i(rather)g(then)g(the)g('E')h(format)f(will)e(b)s(e)h (used)g(when)g(constructing)227 5488 y(the)25 b(k)m(eyw)m(ord)f(v)-5 b(alue,)25 b(taking)f(the)h(absolute)f(v)-5 b(alue)23 b(of)i('decimals')e(for)h(the)g(precision.)37 b(This)22 b(will)g(suppress)227 5601 y(trailing)32 b(zeros,)k(and)d(will)f(use)h (a)i(\014xed)e(format)h(rather)g(than)f(an)h(exp)s(onen)m(tial)f (format,)j(dep)s(ending)31 b(on)227 5714 y(the)g(magnitude)e(of)i(the)f (v)-5 b(alue.)p eop %%Page: 79 85 79 84 bop 0 299 a Fg(9.4.)72 b(FITS)30 b(HEADER)h(I/O)f(SUBR)m(OUTINES) 2086 b Fi(79)382 555 y Fe(FTPKY[JLS]\(unit,keyword,)o(key)o(val,)o (comm)o(ent)o(,)42 b(>)47 b(status\))382 668 y (FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o (nt,)41 b(>)48 b(status\))0 915 y Fh(6)81 b Fi(Put)33 b(\(app)s(end\))h(a)g(string)f(v)-5 b(alued)33 b(k)m(eyw)m(ord)i(in)m (to)f(the)h(CHU)f(whic)m(h)f(ma)m(y)h(b)s(e)g(longer)g(than)f(68)i(c)m (haracters)227 1028 y(in)i(length.)63 b(This)36 b(uses)i(the)g(Long)g (String)f(Keyw)m(ord)h(con)m(v)m(en)m(tion)h(that)f(is)f(describ)s(ed)f (in)h(the)h("Usage)227 1141 y(Guidelines)30 b(and)h(Suggestions")i (section)f(of)h(this)e(do)s(cumen)m(t.)46 b(Since)32 b(this)f(uses)h(a)g(non-standard)g(FITS)227 1254 y(con)m(v)m(en)m(tion) 37 b(to)e(enco)s(de)h(the)f(long)g(k)m(eyw)m(ord)g(string,)h(programs)e (whic)m(h)g(use)h(this)f(routine)g(should)f(also)227 1367 y(call)d(the)g(FTPLSW)g(routine)g(to)h(add)e(some)i(COMMENT)f(k)m (eyw)m(ords)h(to)g(w)m(arn)f(users)f(of)i(the)f(FITS)g(\014le)227 1480 y(that)36 b(this)e(con)m(v)m(en)m(tion)j(is)d(b)s(eing)g(used.)55 b(FTPLSW)35 b(also)g(writes)g(a)g(k)m(eyw)m(ord)h(called)f(LONGSTRN)f (to)227 1593 y(record)c(the)h(v)m(ersion)e(of)i(the)f(longstring)f(con) m(v)m(en)m(tion)i(that)g(has)f(b)s(een)g(used,)f(in)g(case)i(a)g(new)f (con)m(v)m(en)m(tion)227 1705 y(is)e(adopted)h(at)g(some)g(p)s(oin)m(t) e(in)h(the)g(future.)40 b(If)28 b(the)g(LONGSTRN)g(k)m(eyw)m(ord)h(is)f (already)g(presen)m(t)g(in)g(the)227 1818 y(header,)j(then)f(FTPLSW)g (will)d(simply)h(return)i(and)f(will)f(not)j(write)e(duplicate)g(k)m (eyw)m(ords.)382 2065 y Fe(FTPKLS\(unit,keyword,keyv)o(al,)o(comm)o (ent,)41 b(>)47 b(status\))382 2178 y(FTPLSW\(unit,)d(>)k(status\))0 2425 y Fh(7)81 b Fi(Put)30 b(\(app)s(end\))g(a)h(new)f(k)m(eyw)m(ord)h (with)e(an)i(unde\014ned,)e(or)h(n)m(ull,)f(v)-5 b(alue)30 b(in)m(to)h(the)g(CHU.)g(The)f(v)-5 b(alue)30 b(string)227 2538 y(of)h(the)f(k)m(eyw)m(ord)h(is)f(left)g(blank)f(in)g(this)g (case.)382 2785 y Fe(FTPKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 3032 y Fh(8)81 b Fi(Put)41 b(\(app)s(end\))g(a)i(n) m(um)m(b)s(ered)d(sequence)j(of)f(k)m(eyw)m(ords)g(in)m(to)g(the)h (CHU.)f(One)f(ma)m(y)i(app)s(end)d(the)j(same)227 3145 y(commen)m(t)37 b(to)g(ev)m(ery)g(k)m(eyw)m(ord)g(\(and)f(eliminate)e (the)j(need)f(to)h(ha)m(v)m(e)g(an)f(arra)m(y)h(of)f(iden)m(tical)f (commen)m(t)227 3258 y(strings,)i(one)f(for)g(eac)m(h)h(k)m(eyw)m (ord\))g(b)m(y)f(including)d(the)j(amp)s(ersand)e(c)m(haracter)k(as)e (the)h(last)f(non-blank)227 3371 y(c)m(haracter)h(in)d(the)i (\(\014rst\))f(COMMENTS)f(string)g(parameter.)56 b(This)34 b(same)h(string)g(will)d(then)j(b)s(e)g(used)227 3484 y(for)30 b(the)g(commen)m(t)h(\014eld)e(in)f(all)h(the)h(k)m(eyw)m (ords.)41 b(\(Note)32 b(that)e(the)g(SPP)f(v)m(ersion)h(of)g(these)g (routines)f(only)227 3597 y(supp)s(orts)g(a)i(single)e(commen)m(t)i (string\).)382 3844 y Fe(FTPKN[JLS]\(unit,keyroot,)o(sta)o(rtno)o(,no_) o(key)o(s,ke)o(yval)o(s,c)o(omme)o(nts,)41 b(>)47 b(status\))382 3957 y(FTPKN[EDFG]\(unit,keyroot)o(,st)o(artn)o(o,no)o(_ke)o(ys,k)o (eyva)o(ls,)o(deci)o(mals)o(,co)o(mmen)o(ts,)41 b(>)907 4070 y(status\))0 4317 y Fh(9)81 b Fi(Cop)m(y)21 b(an)h(indexed)e(k)m (eyw)m(ord)j(from)e(one)h(HDU)h(to)f(another,)i(mo)s(difying)c(the)i (index)e(n)m(um)m(b)s(er)g(of)i(the)g(k)m(eyw)m(ord)227 4430 y(name)37 b(in)e(the)h(pro)s(cess.)58 b(F)-8 b(or)37 b(example,)h(this)d(routine)h(could)f(read)h(the)h(TLMIN3)f(k)m(eyw)m (ord)h(from)f(the)227 4542 y(input)27 b(HDU)i(\(b)m(y)f(giving)f(k)m (eyro)s(ot)j(=)d("TLMIN")i(and)f(inn)m(um)e(=)i(3\))h(and)f(write)f(it) h(to)h(the)f(output)g(HDU)227 4655 y(with)35 b(the)h(k)m(eyw)m(ord)h (name)f(TLMIN4)g(\(b)m(y)g(setting)h(outn)m(um)e(=)h(4\).)58 b(If)36 b(the)g(input)e(k)m(eyw)m(ord)j(do)s(es)f(not)227 4768 y(exist,)31 b(then)f(this)f(routine)g(simply)f(returns)h(without)h (indicating)e(an)i(error.)382 5015 y Fe(FTCPKYinunit,)44 b(outunit,)i(innum,)g(outnum,)f(keyroot,)h(>)h(status\))0 5262 y Fh(10)f Fi(Put)33 b(\(app)s(end\))f(a)h('triple)f(precision')g (k)m(eyw)m(ord)h(in)m(to)g(the)h(CHU)f(in)f(F28.16)j(format.)49 b(The)33 b(\015oating)g(p)s(oin)m(t)227 5375 y(k)m(eyw)m(ord)d(v)-5 b(alue)29 b(is)f(constructed)i(b)m(y)f(concatenating)i(the)e(input)f (in)m(teger)i(v)-5 b(alue)28 b(with)g(the)i(input)d(double)227 5488 y(precision)20 b(fraction)i(v)-5 b(alue)22 b(\(whic)m(h)f(m)m(ust) h(ha)m(v)m(e)h(a)f(v)-5 b(alue)22 b(b)s(et)m(w)m(een)h(0.0)g(and)e (1.0\).)40 b(The)21 b(FTGKYT)h(routine)227 5601 y(should)34 b(b)s(e)i(used)f(to)i(read)f(this)e(k)m(eyw)m(ord)j(v)-5 b(alue,)37 b(b)s(ecause)f(the)g(other)h(k)m(eyw)m(ord)f(reading)f (subroutines)227 5714 y(will)28 b(not)j(preserv)m(e)f(the)h(full)d (precision)g(of)j(the)f(v)-5 b(alue.)p eop %%Page: 80 86 80 85 bop 0 299 a Fi(80)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTPKYT\(unit,keyword,intv)o(al,)o(dblv)o(al,c)o(omm)o(ent,)41 b(>)48 b(status\))0 850 y Fh(11)e Fi(W)-8 b(rite)35 b(k)m(eyw)m(ords)h (to)f(the)h(CHDU)f(that)h(are)f(de\014ned)f(in)f(an)i(ASCI)s(I)f (template)h(\014le.)54 b(The)34 b(format)i(of)f(the)227 963 y(template)c(\014le)f(is)f(describ)s(ed)f(under)h(the)i(ftgthd)f (routine)f(b)s(elo)m(w.)382 1258 y Fe(FTPKTP\(unit,)44 b(filename,)i(>)h(status\))0 1552 y Fh(12)f Fi(App)s(end)28 b(the)i(ph)m(ysical)e(units)h(string)g(to)h(an)g(existing)f(k)m(eyw)m (ord.)41 b(This)28 b(routine)h(uses)g(a)h(lo)s(cal)g(con)m(v)m(en)m (tion,)227 1665 y(sho)m(wn)i(in)f(the)i(follo)m(wing)e(example,)i(in)e (whic)m(h)g(the)i(k)m(eyw)m(ord)g(units)e(are)i(enclosed)f(in)f(square) h(brac)m(k)m(ets)227 1778 y(in)d(the)i(b)s(eginning)d(of)i(the)h(k)m (eyw)m(ord)g(commen)m(t)g(\014eld.)239 2073 y Fe(VELOCITY=)809 b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382 2299 y (FTPUNT\(unit,keyword,unit)o(s,)41 b(>)48 b(status\))0 2630 y Fb(9.4.4)112 b(Insert)38 b(Keyw)m(ord)f(Subroutines)0 2865 y Fh(1)81 b Fi(Insert)26 b(a)h(new)f(k)m(eyw)m(ord)h(record)g(in)m (to)f(the)h(CHU)g(at)g(the)g(sp)s(eci\014ed)e(p)s(osition)g(\(i.e.,)j (immediately)d(preceding)227 2978 y(the)34 b(\(k)m(eyno\)th)g(k)m(eyw)m (ord)g(in)e(the)i(header.\))49 b(This)32 b('insert)g(record')i (subroutine)d(is)h(somewhat)i(less)f(e\016-)227 3091 y(cien)m(t)27 b(then)g(the)g('app)s(end)e(record')i(subroutine)e (\(FTPREC\))h(describ)s(ed)f(ab)s(o)m(v)m(e)j(b)s(ecause)f(the)g (remaining)227 3204 y(k)m(eyw)m(ords)k(in)e(the)i(header)f(ha)m(v)m(e)h (to)g(b)s(e)f(shifted)f(do)m(wn)h(one)h(slot.)382 3499 y Fe(FTIREC\(unit,key_no,card,)41 b(>)47 b(status\))0 3793 y Fh(2)81 b Fi(Insert)36 b(a)h(new)f(k)m(eyw)m(ord)i(in)m(to)f (the)g(CHU.)g(The)f(new)g(k)m(eyw)m(ord)i(is)e(inserted)f(immediately)g (follo)m(wing)h(the)227 3906 y(last)26 b(k)m(eyw)m(ord)h(that)f(has)g (b)s(een)g(read)g(from)f(the)h(header.)40 b(The)25 b(FTIKLS)g (subroutine)f(w)m(orks)i(the)g(same)h(as)227 4019 y(the)h(FTIKYS)e (subroutine,)g(except)j(it)e(also)g(supp)s(orts)f(long)h(string)f(v)-5 b(alues)27 b(greater)h(than)f(68)h(c)m(haracters)227 4132 y(in)35 b(length.)58 b(These)36 b('insert)f(k)m(eyw)m(ord')i (subroutines)d(are)j(somewhat)g(less)e(e\016cien)m(t)i(then)f(the)g ('app)s(end)227 4245 y(k)m(eyw)m(ord')30 b(subroutines)d(describ)s(ed)g (ab)s(o)m(v)m(e)j(b)s(ecause)f(the)g(remaining)f(k)m(eyw)m(ords)h(in)f (the)h(header)g(ha)m(v)m(e)h(to)227 4358 y(b)s(e)g(shifted)f(do)m(wn)h (one)h(slot.)382 4653 y Fe(FTIKEY\(unit,)44 b(card,)j(>)g(status\))382 4766 y(FTIKY[JLS]\(unit,keyword,)o(key)o(val,)o(comm)o(ent)o(,)42 b(>)47 b(status\))382 4878 y(FTIKLS\(unit,keyword,keyv)o(al,)o(comm)o (ent,)41 b(>)47 b(status\))382 4991 y(FTIKY[EDFG]\(unit,keyword)o(,ke)o (yval)o(,dec)o(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0 5286 y Fh(3)81 b Fi(Insert)32 b(a)i(new)f(k)m(eyw)m(ord)h(with)e(an)h (unde\014ned,)g(or)g(n)m(ull,)f(v)-5 b(alue)33 b(in)m(to)h(the)f(CHU.)h (The)f(v)-5 b(alue)33 b(string)f(of)i(the)227 5399 y(k)m(eyw)m(ord)d (is)f(left)g(blank)f(in)g(this)g(case.)382 5694 y Fe (FTIKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))p eop %%Page: 81 87 81 86 bop 0 299 a Fg(9.4.)72 b(FITS)30 b(HEADER)h(I/O)f(SUBR)m(OUTINES) 2086 b Fi(81)0 555 y Fb(9.4.5)112 b(Read)38 b(Keyw)m(ord)g(Subroutines) 0 774 y Fi(These)29 b(routines)e(return)h(the)h(v)-5 b(alue)28 b(of)h(the)g(sp)s(eci\014ed)e(k)m(eyw)m(ord\(s\).)41 b(Wild)28 b(card)g(c)m(haracters)i(\(*,)h(?,)e(or)g(#\))f(ma)m(y)0 887 y(b)s(e)f(used)h(when)f(sp)s(ecifying)f(the)i(name)g(of)g(the)g(k)m (eyw)m(ord)h(to)g(b)s(e)e(read:)39 b(a)29 b(')10 b(?')40 b(will)25 b(matc)m(h)k(an)m(y)g(single)d(c)m(haracter)0 1000 y(at)38 b(that)g(p)s(osition)d(in)h(the)i(k)m(eyw)m(ord)g(name)f (and)g(a)g('*')i(will)34 b(matc)m(h)k(an)m(y)g(length)f(\(including)d (zero\))k(string)f(of)0 1113 y(c)m(haracters.)65 b(The)37 b('#')h(c)m(haracter)h(will)c(matc)m(h)k(an)m(y)f(consecutiv)m(e)h (string)e(of)h(decimal)f(digits)f(\(0)j(-)f(9\).)64 b(Note)0 1226 y(that)30 b(when)f(a)g(wild)e(card)j(is)e(used)h(in)f(the)i(input) d(k)m(eyw)m(ord)j(name,)g(the)g(routine)e(will)f(only)i(searc)m(h)h (for)f(a)h(matc)m(h)0 1339 y(from)h(the)h(curren)m(t)g(header)g(p)s (osition)e(to)i(the)h(end)e(of)h(the)g(header.)45 b(It)32 b(will)d(not)j(resume)g(the)g(searc)m(h)g(from)g(the)0 1452 y(top)i(of)h(the)f(header)g(bac)m(k)h(to)g(the)f(original)e (header)i(p)s(osition)e(as)j(is)e(done)h(when)f(no)h(wildcards)d(are)k (included)0 1564 y(in)e(the)h(k)m(eyw)m(ord)h(name.)52 b(If)33 b(the)h(desired)f(k)m(eyw)m(ord)i(string)e(is)g(8-c)m (haracters)j(long)e(\(the)g(maxim)m(um)f(length)h(of)0 1677 y(a)i(k)m(eyw)m(ord)g(name\))g(then)g(a)g('*')g(ma)m(y)h(b)s(e)e (app)s(ended)f(as)h(the)h(nin)m(th)f(c)m(haracter)i(of)f(the)f(input)f (name)i(to)g(force)0 1790 y(the)31 b(k)m(eyw)m(ord)g(searc)m(h)h(to)f (stop)g(at)g(the)g(end)f(of)h(the)g(header)g(\(e.g.,)i('COMMENT)d(*')i (will)c(searc)m(h)j(for)g(the)g(next)0 1903 y(COMMENT)37 b(k)m(eyw)m(ord\).)64 b(The)37 b(\013grec)i(routine)e(ma)m(y)h(b)s(e)f (used)g(to)i(set)f(the)g(starting)f(p)s(osition)f(when)h(doing)0 2016 y(wild)28 b(card)i(searc)m(hes.)0 2264 y Fh(1)81 b Fi(Get)37 b(the)f(n)m(th)f(80-c)m(haracter)k(header)d(record)g(from)f (the)h(CHU.)h(The)e(\014rst)g(k)m(eyw)m(ord)i(in)d(the)i(header)g(is)f (at)227 2377 y(k)m(ey)p 365 2377 28 4 v 34 w(no)42 b(=)f(1;)49 b(if)41 b(k)m(ey)p 996 2377 V 34 w(no)h(=)f(0)i(then)e(this)g (subroutine)f(simple)g(mo)m(v)m(es)k(the)e(in)m(ternal)f(p)s(oin)m(ter) g(to)i(the)227 2490 y(b)s(eginning)33 b(of)j(the)g(header)f(so)h(that)g (subsequen)m(t)f(k)m(eyw)m(ord)h(op)s(erations)f(will)e(start)j(at)g (the)g(top)g(of)g(the)227 2603 y(header;)31 b(it)f(also)g(returns)f(a)i (blank)e(card)h(v)-5 b(alue)30 b(in)f(this)g(case.)382 2850 y Fe(FTGREC\(unit,key_no,)42 b(>)48 b(card,status\))0 3098 y Fh(2)81 b Fi(Get)31 b(the)g(name,)f(v)-5 b(alue)30 b(\(as)h(a)g(string\),)f(and)g(commen)m(t)i(of)e(the)h(n)m(th)f(k)m (eyw)m(ord)h(in)e(CHU.)i(This)e(routine)g(also)227 3211 y(c)m(hec)m(ks)i(that)f(the)g(returned)e(k)m(eyw)m(ord)i(name)f(\(KEYW) m(ORD\))i(con)m(tains)f(only)e(legal)h(ASCI)s(I)f(c)m(haracters.)227 3324 y(Call)h(FTGREC)h(and)g(FTPSV)m(C)g(to)h(b)m(ypass)f(this)f(error) h(c)m(hec)m(k.)382 3572 y Fe(FTGKYN\(unit,key_no,)42 b(>)48 b(keyword,value,comment,st)o(atu)o(s\))0 3819 y Fh(3)81 b Fi(Get)31 b(the)g(80-c)m(haracter)i(header)d(record)g(for)g (the)h(named)f(k)m(eyw)m(ord)382 4067 y Fe(FTGCRD\(unit,keyword,)42 b(>)48 b(card,status\))0 4315 y Fh(4)81 b Fi(Get)26 b(the)f(next)h(k)m (eyw)m(ord)f(whose)g(name)h(matc)m(hes)g(one)f(of)h(the)f(strings)f(in) g('inclist')g(but)g(do)s(es)h(not)g(matc)m(h)i(an)m(y)227 4428 y(of)32 b(the)f(strings)f(in)g('exclist'.)43 b(The)30 b(strings)g(in)g(inclist)f(and)i(exclist)f(ma)m(y)i(con)m(tain)g(wild)c (card)j(c)m(haracters)227 4541 y(\(*,)38 b(?,)e(and)e(#\))i(as)f (describ)s(ed)e(at)j(the)f(b)s(eginning)d(of)k(this)e(section.)55 b(This)33 b(routine)h(searc)m(hes)i(from)f(the)227 4654 y(curren)m(t)28 b(header)f(p)s(osition)f(to)i(the)g(end)f(of)h(the)g (header,)g(only)-8 b(,)28 b(and)f(do)s(es)g(not)h(con)m(tin)m(ue)g(the) g(searc)m(h)g(from)227 4767 y(the)41 b(top)g(of)g(the)g(header)g(bac)m (k)h(to)f(the)g(original)e(p)s(osition.)71 b(The)40 b(curren)m(t)h (header)f(p)s(osition)f(ma)m(y)j(b)s(e)227 4880 y(reset)33 b(with)d(the)i(ftgrec)h(routine.)43 b(Note)33 b(that)g(nexc)f(ma)m(y)g (b)s(e)f(set)h(=)g(0)g(if)e(there)i(are)g(no)g(k)m(eyw)m(ords)g(to)h(b) s(e)227 4993 y(excluded.)40 b(This)28 b(routine)i(returns)f(status)i(=) f(202)h(if)f(a)g(matc)m(hing)h(k)m(eyw)m(ord)g(is)e(not)i(found.)382 5240 y Fe(FTGNXK\(unit,inclist,ninc)o(,ex)o(clis)o(t,ne)o(xc,)41 b(>)48 b(card,status\))0 5488 y Fh(5)81 b Fi(Get)30 b(the)g(literal)f (k)m(eyw)m(ord)h(v)-5 b(alue)29 b(as)h(a)g(c)m(haracter)i(string.)39 b(Regardless)30 b(of)g(the)g(datat)m(yp)s(e)g(of)g(the)g(k)m(eyw)m (ord,)227 5601 y(this)36 b(routine)g(simply)f(returns)h(the)h(string)f (of)h(c)m(haracters)i(in)c(the)j(v)-5 b(alue)36 b(\014eld)g(of)h(the)g (k)m(eyw)m(ord)h(along)227 5714 y(with)29 b(the)i(commen)m(t)g (\014eld.)p eop %%Page: 82 88 82 87 bop 0 299 a Fi(82)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTGKEY\(unit,keyword,)42 b(>)48 b(value,comment,status\))0 817 y Fh(6)81 b Fi(Get)31 b(a)g(k)m(eyw)m(ord)g(v)-5 b(alue)29 b(\(with)h(the)g(appropriate)g(datat)m(yp)s(e\))h(and)f (commen)m(t)i(from)e(the)g(CHU)382 1079 y Fe(FTGKY[EDJLS]\(unit,keywor) o(d,)41 b(>)48 b(keyval,comment,status\))0 1341 y Fh(7)81 b Fi(Get)24 b(a)g(sequence)g(of)g(n)m(um)m(b)s(ered)e(k)m(eyw)m(ord)i (v)-5 b(alues.)37 b(These)24 b(routines)e(do)h(not)h(supp)s(ort)e(wild) f(card)i(c)m(haracters)227 1454 y(in)29 b(the)i(ro)s(ot)g(name.)382 1716 y Fe(FTGKN[EDJLS]\(unit,keyroo)o(t,s)o(tart)o(no,m)o(ax_)o(keys)o (,)42 b(>)47 b(keyvals,nfound,status\))0 1977 y Fh(8)81 b Fi(Get)27 b(the)f(v)-5 b(alue)25 b(of)i(a)f(\015oating)g(p)s(oin)m(t) f(k)m(eyw)m(ord,)j(returning)c(the)i(in)m(teger)g(and)g(fractional)f (parts)h(of)g(the)g(v)-5 b(alue)227 2090 y(in)31 b(separate)h (subroutine)e(argumen)m(ts.)45 b(This)30 b(subroutine)f(ma)m(y)k(b)s(e) e(used)g(to)h(read)g(an)m(y)g(k)m(eyw)m(ord)g(but)f(is)227 2203 y(esp)s(ecially)e(useful)f(for)j(reading)e(the)i('triple)e (precision')f(k)m(eyw)m(ords)j(written)f(b)m(y)g(FTPKYT.)382 2465 y Fe(FTGKYT\(unit,keyword,)42 b(>)48 b(intval,dblval,comment,s)o (tat)o(us\))0 2727 y Fh(9)81 b Fi(Get)24 b(the)g(ph)m(ysical)f(units)f (string)g(in)h(an)g(existing)g(k)m(eyw)m(ord.)39 b(This)22 b(routine)h(uses)g(a)h(lo)s(cal)f(con)m(v)m(en)m(tion,)k(sho)m(wn)227 2840 y(in)32 b(the)i(follo)m(wing)d(example,)j(in)e(whic)m(h)g(the)h(k) m(eyw)m(ord)h(units)e(are)h(enclosed)g(in)f(square)h(brac)m(k)m(ets)i (in)d(the)227 2953 y(b)s(eginning)g(of)j(the)g(k)m(eyw)m(ord)g(commen)m (t)h(\014eld.)52 b(A)35 b(blank)f(string)f(is)h(returned)g(if)f(no)i (units)e(are)i(de\014ned)227 3066 y(for)30 b(the)h(k)m(eyw)m(ord.)191 3328 y Fe(VELOCITY=)809 b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382 3553 y(FTGUNT\(unit,keyword,)c(>)48 b(units,status\))0 3846 y Fb(9.4.6)112 b(Mo)s(dify)38 b(Keyw)m(ord)f(Subroutines)0 4066 y Fi(Wild)30 b(card)h(c)m(haracters,)j(as)e(describ)s(ed)d(in)h (the)i(Read)g(Keyw)m(ord)f(section,)h(ab)s(o)m(v)m(e,)h(ma)m(y)g(b)s(e) d(used)h(when)g(sp)s(eci-)0 4179 y(fying)e(the)i(name)f(of)h(the)f(k)m (eyw)m(ord)h(to)g(b)s(e)f(mo)s(di\014ed.)0 4441 y Fh(1)81 b Fi(Mo)s(dify)29 b(\(o)m(v)m(erwrite\))i(the)g(n)m(th)f(80-c)m (haracter)j(header)d(record)h(in)e(the)h(CHU)382 4702 y Fe(FTMREC\(unit,key_no,card,)41 b(>)47 b(status\))0 4964 y Fh(2)81 b Fi(Mo)s(dify)36 b(\(o)m(v)m(erwrite\))j(the)f(80-c)m (haracter)j(header)c(record)h(for)f(the)h(named)f(k)m(eyw)m(ord)h(in)f (the)h(CHU.)g(This)227 5077 y(can)31 b(b)s(e)f(used)f(to)i(o)m(v)m (erwrite)g(the)g(name)f(of)h(the)f(k)m(eyw)m(ord)h(as)g(w)m(ell)e(as)i (its)f(v)-5 b(alue)29 b(and)h(commen)m(t)i(\014elds.)382 5339 y Fe(FTMCRD\(unit,keyword,card)o(,)42 b(>)47 b(status\))0 5601 y Fh(3)81 b Fi(Mo)s(dify)32 b(\(o)m(v)m(erwrite\))k(the)e(name)g (of)h(an)f(existing)f(k)m(eyw)m(ord)h(in)f(the)i(CHU)f(preserving)e (the)j(curren)m(t)e(v)-5 b(alue)227 5714 y(and)30 b(commen)m(t)h (\014elds.)p eop %%Page: 83 89 83 88 bop 0 299 a Fg(9.4.)72 b(FITS)30 b(HEADER)h(I/O)f(SUBR)m(OUTINES) 2086 b Fi(83)382 555 y Fe(FTMNAM\(unit,oldkey,keywo)o(rd,)41 b(>)48 b(status\))0 823 y Fh(4)81 b Fi(Mo)s(dify)29 b(\(o)m(v)m (erwrite\))i(the)g(commen)m(t)g(\014eld)e(of)i(an)f(existing)f(k)m(eyw) m(ord)i(in)e(the)i(CHU)382 1091 y Fe(FTMCOM\(unit,keyword,comm)o(ent)o (,)42 b(>)47 b(status\))0 1358 y Fh(5)81 b Fi(Mo)s(dify)23 b(the)i(v)-5 b(alue)24 b(and)g(commen)m(t)i(\014elds)d(of)i(an)f (existing)g(k)m(eyw)m(ord)h(in)e(the)i(CHU.)g(The)f(FTMKLS)g(subrou-) 227 1471 y(tine)34 b(w)m(orks)f(the)h(same)h(as)f(the)g(FTMKYS)f (subroutine,)g(except)i(it)f(also)f(supp)s(orts)f(long)i(string)f(v)-5 b(alues)227 1584 y(greater)38 b(than)f(68)h(c)m(haracters)g(in)e (length.)59 b(Optionally)-8 b(,)37 b(one)g(ma)m(y)h(mo)s(dify)d(only)h (the)h(v)-5 b(alue)36 b(\014eld)g(and)227 1697 y(lea)m(v)m(e)31 b(the)e(commen)m(t)i(\014eld)d(unc)m(hanged)h(b)m(y)g(setting)g(the)h (input)d(COMMENT)i(parameter)h(equal)f(to)h(the)227 1810 y(amp)s(ersand)f(c)m(haracter)k(\(&\).)42 b(The)30 b(E)g(and)g(D)h(v)m (ersions)f(of)h(this)f(routine)f(ha)m(v)m(e)j(the)f(added)f(feature)h (that)227 1923 y(if)25 b(the)i('decimals')e(parameter)i(is)e(negativ)m (e,)k(then)d(the)g('G')h(displa)m(y)d(format)j(rather)f(then)g(the)g ('E')h(format)227 2036 y(will)f(b)s(e)i(used)f(when)h(constructing)g (the)g(k)m(eyw)m(ord)h(v)-5 b(alue,)29 b(taking)f(the)h(absolute)f(v)-5 b(alue)28 b(of)g('decimals')g(for)227 2149 y(the)37 b(precision.)58 b(This)34 b(will)g(suppress)h(trailing)f(zeros,)39 b(and)d(will)e(use)j (a)g(\014xed)e(format)i(rather)g(than)f(an)227 2262 y(exp)s(onen)m (tial)30 b(format,)h(dep)s(ending)c(on)k(the)f(magnitude)g(of)g(the)h (v)-5 b(alue.)382 2530 y Fe(FTMKY[JLS]\(unit,keyword,)o(key)o(val,)o (comm)o(ent)o(,)42 b(>)47 b(status\))382 2642 y (FTMKLS\(unit,keyword,keyv)o(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 2755 y(FTMKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o (ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0 3023 y Fh(6)81 b Fi(Mo)s(dify)21 b(the)h(v)-5 b(alue)22 b(of)g(an)g (existing)g(k)m(eyw)m(ord)g(to)h(b)s(e)f(unde\014ned,)g(or)g(n)m(ull.) 36 b(The)22 b(v)-5 b(alue)21 b(string)h(of)g(the)g(k)m(eyw)m(ord)227 3136 y(is)29 b(set)i(to)g(blank.)39 b(Optionally)-8 b(,)28 b(one)i(ma)m(y)h(lea)m(v)m(e)g(the)g(commen)m(t)g(\014eld)d(unc)m (hanged)i(b)m(y)g(setting)g(the)g(input)227 3249 y(COMMENT)g(parameter) h(equal)f(to)h(the)g(amp)s(ersand)e(c)m(haracter)j(\(&\).)382 3517 y Fe(FTMKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 3817 y Fb(9.4.7)112 b(Up)s(date)39 b(Keyw)m(ord)e (Subroutines)0 4032 y Fh(1)81 b Fi(Up)s(date)36 b(an)g(80-c)m(haracter) j(record)d(in)f(the)i(CHU.)f(If)g(the)g(sp)s(eci\014ed)f(k)m(eyw)m(ord) i(already)e(exists)h(then)g(that)227 4144 y(header)j(record)f(will)e(b) s(e)i(replaced)h(with)e(the)i(input)e(CARD)h(string.)65 b(If)38 b(it)h(do)s(es)f(not)h(exist)f(then)h(the)227 4257 y(new)f(record)g(will)d(b)s(e)i(added)h(to)g(the)g(header.)64 b(The)37 b(FTUKLS)g(subroutine)f(w)m(orks)i(the)g(same)h(as)f(the)227 4370 y(FTUKYS)28 b(subroutine,)f(except)j(it)e(also)h(supp)s(orts)d (long)i(string)g(v)-5 b(alues)28 b(greater)i(than)e(68)h(c)m(haracters) h(in)227 4483 y(length.)382 4751 y Fe(FTUCRD\(unit,keyword,card)o(,)42 b(>)47 b(status\))0 5019 y Fh(2)81 b Fi(Up)s(date)44 b(the)i(v)-5 b(alue)44 b(and)h(commen)m(t)h(\014elds)d(of)i(a)h(k)m (eyw)m(ord)f(in)f(the)h(CHU.)h(The)e(sp)s(eci\014ed)f(k)m(eyw)m(ord)j (is)227 5132 y(mo)s(di\014ed)37 b(if)g(it)h(already)g(exists)g(\(b)m(y) h(calling)e(FTMKYx\))i(otherwise)e(a)i(new)f(k)m(eyw)m(ord)h(is)f (created)h(b)m(y)227 5245 y(calling)c(FTPKYx.)58 b(The)36 b(E)g(and)f(D)i(v)m(ersions)e(of)i(this)e(routine)g(ha)m(v)m(e)i(the)g (added)e(feature)i(that)g(if)e(the)227 5357 y('decimals')30 b(parameter)i(is)e(negativ)m(e,)i(then)e(the)h('G')h(displa)m(y)d (format)i(rather)g(then)f(the)h('E')g(format)h(will)227 5470 y(b)s(e)41 b(used)f(when)h(constructing)g(the)g(k)m(eyw)m(ord)h(v) -5 b(alue,)44 b(taking)d(the)g(absolute)g(v)-5 b(alue)41 b(of)h('decimals')e(for)227 5583 y(the)d(precision.)58 b(This)34 b(will)g(suppress)h(trailing)f(zeros,)39 b(and)d(will)e(use)j (a)g(\014xed)e(format)i(rather)g(than)f(an)227 5696 y(exp)s(onen)m (tial)30 b(format,)h(dep)s(ending)c(on)k(the)f(magnitude)g(of)g(the)h (v)-5 b(alue.)p eop %%Page: 84 90 84 89 bop 0 299 a Fi(84)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTUKY[JLS]\(unit,keyword,)o(key)o(val,)o(comm)o(ent)o(,)42 b(>)47 b(status\))382 668 y(FTUKLS\(unit,keyword,keyv)o(al,)o(comm)o (ent,)41 b(>)47 b(status\))382 781 y(FTUKY[EDFG]\(unit,keyword)o(,ke)o (yval)o(,dec)o(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0 1044 y Fh(3)81 b Fi(Up)s(date)23 b(the)g(v)-5 b(alue)23 b(of)h(an)f(existing)g(k)m(eyw)m(ord)h(to)g(b)s(e)f(unde\014ned,)f(or)i (n)m(ull,)f(or)g(insert)g(a)g(new)g(unde\014ned-v)-5 b(alue)227 1157 y(k)m(eyw)m(ord)30 b(if)e(it)h(do)s(esn't)g(already)g (exist.)40 b(The)29 b(v)-5 b(alue)29 b(string)f(of)h(the)h(k)m(eyw)m (ord)f(is)g(left)g(blank)f(in)f(this)i(case.)382 1420 y Fe(FTUKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 1715 y Fb(9.4.8)112 b(Delete)37 b(Keyw)m(ord)g(Subroutines)0 1927 y Fh(1)81 b Fi(Delete)31 b(an)f(existing)f(k)m(eyw)m(ord)i (record.)40 b(The)30 b(space)h(previously)d(o)s(ccupied)h(b)m(y)h(the)g (k)m(eyw)m(ord)h(is)e(reclaimed)227 2040 y(b)m(y)d(mo)m(ving)g(all)f (the)h(follo)m(wing)f(header)h(records)g(up)f(one)h(ro)m(w)h(in)d(the)j (header.)39 b(The)25 b(\014rst)h(routine)f(deletes)227 2153 y(a)34 b(k)m(eyw)m(ord)f(at)h(a)g(sp)s(eci\014ed)d(p)s(osition)g (in)h(the)h(header)g(\(the)h(\014rst)e(k)m(eyw)m(ord)i(is)e(at)i(p)s (osition)d(1\),)k(whereas)227 2266 y(the)d(second)g(routine)f(deletes)h (a)g(sp)s(eci\014cally)d(named)i(k)m(eyw)m(ord.)46 b(Wild)30 b(card)h(c)m(haracters,)j(as)e(describ)s(ed)227 2378 y(in)e(the)h(Read)g(Keyw)m(ord)f(section,)h(ab)s(o)m(v)m(e,)h(ma)m(y)g (b)s(e)e(used)g(when)f(sp)s(ecifying)g(the)i(name)g(of)g(the)f(k)m(eyw) m(ord)227 2491 y(to)h(b)s(e)f(deleted)g(\(b)s(e)g(careful!\).)382 2755 y Fe(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382 2867 y(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 3205 y Fd(9.5)135 b(Data)46 b(Scaling)g(and)e(Unde\014ned)h(Pixel)h(P)l (arameters)0 3456 y Fi(These)24 b(subroutines)e(de\014ne)i(or)h(mo)s (dify)d(the)j(in)m(ternal)e(parameters)i(used)f(b)m(y)g(FITSIO)g(to)h (either)f(scale)h(the)f(data)0 3569 y(or)33 b(to)i(represen)m(t)e (unde\014ned)e(pixels.)48 b(Generally)33 b(FITSIO)f(will)f(scale)i(the) h(data)g(according)f(to)h(the)g(v)-5 b(alues)33 b(of)0 3682 y(the)f(BSCALE)g(and)f(BZER)m(O)h(\(or)h(TSCALn)d(and)i(TZER)m (On\))f(k)m(eyw)m(ords,)i(ho)m(w)m(ev)m(er)h(these)e(subroutines)e(ma)m (y)0 3795 y(b)s(e)i(used)h(to)h(o)m(v)m(erride)f(the)g(k)m(eyw)m(ord)h (v)-5 b(alues.)48 b(This)31 b(ma)m(y)j(b)s(e)f(useful)e(when)h(one)i(w) m(an)m(ts)f(to)h(read)f(or)g(write)g(the)0 3908 y(ra)m(w)d(unscaled)e (v)-5 b(alues)28 b(in)h(the)g(FITS)g(\014le.)39 b(Similarly)-8 b(,)27 b(FITSIO)h(generally)h(uses)g(the)g(v)-5 b(alue)29 b(of)h(the)f(BLANK)h(or)0 4021 y(TNULLn)35 b(k)m(eyw)m(ord)h(to)g (signify)d(an)j(unde\014ned)d(pixel,)i(but)g(these)h(routines)f(ma)m(y) h(b)s(e)e(used)h(to)h(o)m(v)m(erride)g(this)0 4134 y(v)-5 b(alue.)40 b(These)30 b(subroutines)e(do)j(not)f(create)i(or)f(mo)s (dify)d(the)j(corresp)s(onding)d(header)i(k)m(eyw)m(ord)h(v)-5 b(alues.)0 4397 y Fh(1)81 b Fi(Reset)26 b(the)g(scaling)e(factors)i(in) e(the)i(primary)e(arra)m(y)i(or)f(image)h(extension;)h(do)s(es)e(not)g (c)m(hange)i(the)f(BSCALE)227 4510 y(and)i(BZER)m(O)g(k)m(eyw)m(ord)h (v)-5 b(alues)27 b(and)h(only)f(a\013ects)j(the)e(automatic)i(scaling)d (p)s(erformed)g(when)g(the)h(data)227 4623 y(elemen)m(ts)e(are)g (written/read)f(to/from)h(the)g(FITS)f(\014le.)38 b(When)25 b(reading)g(from)g(a)h(FITS)f(\014le)f(the)i(returned)227 4736 y(data)i(v)-5 b(alue)27 b(=)g(\(the)h(v)-5 b(alue)27 b(giv)m(en)h(in)e(the)h(FITS)g(arra)m(y\))h(*)g(BSCALE)f(+)g(BZER)m(O.) g(The)g(in)m(v)m(erse)h(form)m(ula)227 4849 y(is)33 b(used)g(when)g (writing)f(data)j(v)-5 b(alues)33 b(to)h(the)g(FITS)g(\014le.)50 b(\(NOTE:)34 b(BSCALE)f(and)g(BZER)m(O)h(m)m(ust)g(b)s(e)227 4962 y(declared)c(as)h(Double)f(Precision)f(v)-5 b(ariables\).)382 5225 y Fe(FTPSCL\(unit,bscale,bzero)o(,)42 b(>)47 b(status\))0 5488 y Fh(2)81 b Fi(Reset)39 b(the)f(scaling)g(parameters)g(for)h(a)f (table)g(column;)k(do)s(es)c(not)g(c)m(hange)i(the)e(TSCALn)f(or)h (TZER)m(On)227 5601 y(k)m(eyw)m(ord)29 b(v)-5 b(alues)28 b(and)f(only)h(a\013ects)h(the)g(automatic)g(scaling)e(p)s(erformed)g (when)g(the)i(data)g(elemen)m(ts)g(are)227 5714 y(written/read)i (to/from)h(the)g(FITS)f(\014le.)43 b(When)31 b(reading)f(from)h(a)h (FITS)f(\014le)f(the)i(returned)e(data)i(v)-5 b(alue)p eop %%Page: 85 91 85 90 bop 0 299 a Fg(9.6.)72 b(FITS)30 b(PRIMAR)-8 b(Y)31 b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)e(I/O)i(SUBR)m(OUTINES)589 b Fi(85)227 555 y(=)40 b(\(the)h(v)-5 b(alue)39 b(giv)m(en)h(in)f(the)h (FITS)g(arra)m(y\))g(*)h(TSCAL)e(+)g(TZER)m(O.)h(The)f(in)m(v)m(erse)h (form)m(ula)g(is)f(used)227 668 y(when)33 b(writing)f(data)j(v)-5 b(alues)34 b(to)g(the)h(FITS)e(\014le.)51 b(\(NOTE:)34 b(TSCAL)f(and)g(TZER)m(O)g(m)m(ust)h(b)s(e)f(declared)227 781 y(as)e(Double)f(Precision)f(v)-5 b(ariables\).)382 1041 y Fe(FTTSCL\(unit,colnum,tscal)o(,tz)o(ero,)41 b(>)48 b(status\))0 1300 y Fh(3)81 b Fi(De\014ne)36 b(the)g(in)m(teger)h(v)-5 b(alue)35 b(to)i(b)s(e)e(used)h(to)h(signify)d(unde\014ned)g(pixels)g (in)h(the)h(primary)e(arra)m(y)j(or)f(image)227 1413 y(extension.)53 b(This)33 b(is)g(only)h(used)g(if)f(BITPIX)h(=)h(8,)h (16,)g(or)f(32.)54 b(This)33 b(do)s(es)h(not)h(create)h(or)e(c)m(hange) i(the)227 1526 y(v)-5 b(alue)30 b(of)h(the)f(BLANK)h(k)m(eyw)m(ord)g (in)e(the)h(header.)382 1786 y Fe(FTPNUL\(unit,blank,)43 b(>)k(status\))0 2046 y Fh(4)81 b Fi(De\014ne)36 b(the)g(string)f(to)h (b)s(e)f(used)g(to)i(signify)d(unde\014ned)g(pixels)g(in)g(a)i(column)f (in)g(an)g(ASCI)s(I)g(table.)57 b(This)227 2158 y(do)s(es)30 b(not)h(create)h(or)e(c)m(hange)i(the)e(v)-5 b(alue)30 b(of)h(the)f(TNULLn)g(k)m(eyw)m(ord.)382 2418 y Fe (FTSNUL\(unit,colnum,snull)41 b(>)47 b(status\))0 2678 y Fh(5)81 b Fi(De\014ne)34 b(the)h(v)-5 b(alue)33 b(to)i(b)s(e)f(used)g (to)h(signify)d(unde\014ned)g(pixels)h(in)g(an)h(in)m(teger)h(column)e (in)g(a)h(binary)f(table)227 2791 y(\(where)c(TF)m(ORMn)f(=)g('B',)i ('I',)f(or)f('J'\).)i(This)c(do)s(es)j(not)f(create)j(or)d(c)m(hange)i (the)e(v)-5 b(alue)28 b(of)h(the)g(TNULLn)227 2904 y(k)m(eyw)m(ord.)382 3163 y Fe(FTTNUL\(unit,colnum,tnull)41 b(>)47 b(status\))0 3497 y Fd(9.6)135 b(FITS)44 b(Primary)h(Arra)l(y)g(or)g(IMA)l(GE)g (Extension)h(I/O)f(Subroutines)0 3747 y Fi(These)26 b(subroutines)e (put)i(or)h(get)g(data)h(v)-5 b(alues)25 b(in)h(the)g(primary)f(data)i (arra)m(y)g(\(i.e.,)h(the)f(\014rst)f(HDU)h(in)e(the)i(FITS)0 3860 y(\014le\))34 b(or)h(an)f(IMA)m(GE)i(extension.)53 b(The)34 b(data)i(arra)m(y)f(is)e(represen)m(ted)i(as)g(a)g(single)e (one-dimensional)g(arra)m(y)i(of)0 3973 y(pixels)f(regardless)i(of)g (the)g(actual)g(dimensionalit)m(y)d(of)k(the)f(arra)m(y)-8 b(,)38 b(and)e(the)g(FPIXEL)g(parameter)g(giv)m(es)h(the)0 4086 y(p)s(osition)26 b(within)e(this)j(1-D)h(arra)m(y)g(of)g(the)g (\014rst)e(pixel)g(to)i(read)g(or)f(write.)39 b(Automatic)28 b(data)g(t)m(yp)s(e)g(con)m(v)m(ersion)g(is)0 4199 y(p)s(erformed)h (for)i(n)m(umeric)f(data)h(\(except)i(for)d(complex)h(data)g(t)m(yp)s (es\))h(if)e(the)h(data)g(t)m(yp)s(e)g(of)g(the)g(primary)e(arra)m(y)0 4312 y(\(de\014ned)f(b)m(y)g(the)h(BITPIX)f(k)m(eyw)m(ord\))h (di\013ers)f(from)g(the)g(data)i(t)m(yp)s(e)e(of)h(the)g(arra)m(y)g(in) e(the)i(calling)e(subroutine.)0 4425 y(The)41 b(data)i(v)-5 b(alues)41 b(are)h(also)g(scaled)f(b)m(y)h(the)g(BSCALE)f(and)g(BZER)m (O)h(header)f(v)-5 b(alues)41 b(as)h(they)g(are)g(b)s(eing)0 4538 y(written)31 b(or)h(read)g(from)g(the)g(FITS)g(arra)m(y)-8 b(.)47 b(The)31 b(ftpscl)h(subroutine)e(MUST)h(b)s(e)h(called)f(to)i (de\014ne)e(the)i(scaling)0 4650 y(parameters)h(when)e(writing)g(data)i (to)g(the)g(FITS)f(arra)m(y)h(or)f(to)h(o)m(v)m(erride)g(the)g(default) e(scaling)h(v)-5 b(alue)33 b(giv)m(en)g(in)0 4763 y(the)e(header)f (when)f(reading)h(the)g(FITS)g(arra)m(y)-8 b(.)0 4924 y(Tw)m(o)41 b(sets)f(of)h(subroutines)d(are)j(pro)m(vided)e(to)i(read)g (the)f(data)i(arra)m(y)f(whic)m(h)e(di\013er)g(in)g(the)i(w)m(a)m(y)g (unde\014ned)0 5036 y(pixels)33 b(are)j(handled.)54 b(The)35 b(\014rst)f(set)i(of)g(routines)e(\(FTGPVx\))i(simply)d(return)h(an)h (arra)m(y)h(of)g(data)g(elemen)m(ts)0 5149 y(in)31 b(whic)m(h)g (unde\014ned)f(pixels)g(are)j(set)f(equal)g(to)h(a)g(v)-5 b(alue)31 b(sp)s(eci\014ed)g(b)m(y)h(the)g(user)g(in)f(the)h('n)m(ullv) -5 b(al')30 b(parameter.)0 5262 y(An)k(additional)f(feature)i(of)f (these)h(subroutines)e(is)g(that)j(if)d(the)i(user)f(sets)h(n)m(ullv)-5 b(al)32 b(=)i(0,)i(then)f(no)f(c)m(hec)m(ks)i(for)0 5375 y(unde\014ned)d(pixels)h(will)f(b)s(e)h(p)s(erformed,)i(th)m(us)f (increasing)f(the)i(sp)s(eed)e(of)i(the)g(program.)55 b(The)35 b(second)h(set)g(of)0 5488 y(routines)30 b(\(FTGPFx\))j (returns)d(the)i(data)g(elemen)m(t)g(arra)m(y)g(and,)f(in)g(addition,)f (a)i(logical)f(arra)m(y)h(whic)m(h)e(de\014nes)0 5601 y(whether)40 b(the)g(corresp)s(onding)e(data)j(pixel)e(is)g (unde\014ned.)69 b(The)39 b(latter)i(set)g(of)f(subroutines)e(ma)m(y)j (b)s(e)f(more)0 5714 y(con)m(v)m(enien)m(t)32 b(to)h(use)e(in)f(some)h (circumstances,)h(ho)m(w)m(ev)m(er,)h(it)e(requires)f(an)h(additional)e (arra)m(y)j(of)g(logical)f(v)-5 b(alues)p eop %%Page: 86 92 86 91 bop 0 299 a Fi(86)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 555 y Fi(whic)m(h)35 b(can)h(b)s(e)g(un)m(wieldy)d(when)j(w)m(orking)f (with)g(large)h(data)h(arra)m(ys.)58 b(Also)36 b(for)g(programmer)g (con)m(v)m(enience,)0 668 y(sets)j(of)g(subroutines)e(to)i(directly)f (read)g(or)h(write)f(2)h(and)g(3)g(dimensional)d(arra)m(ys)j(ha)m(v)m (e)h(b)s(een)e(pro)m(vided,)i(as)0 781 y(w)m(ell)29 b(as)h(a)g(set)g (of)g(subroutines)d(to)j(read)g(or)g(write)e(an)m(y)i(con)m(tiguous)g (rectangular)g(subset)f(of)h(pixels)e(within)f(the)0 894 y(n-dimensional)g(arra)m(y)-8 b(.)0 1150 y Fh(1)81 b Fi(Get)30 b(the)g(data)g(t)m(yp)s(e)f(of)h(the)g(image)f(\(=)h (BITPIX)f(v)-5 b(alue\).)40 b(P)m(ossible)28 b(returned)g(v)-5 b(alues)29 b(are:)41 b(8,)30 b(16,)h(32,)g(-32,)227 1263 y(or)f(-64)h(corresp)s(onding)d(to)j(unsigned)d(b)m(yte,)j(signed)e (2-b)m(yte)i(in)m(teger,)g(signed)e(4-b)m(yte)i(in)m(teger,)g(real,)f (and)227 1376 y(double.)227 1525 y(The)c(second)f(subroutine)f(is)h (similar)e(to)j(FTGIDT,)h(except)f(that)h(if)e(the)g(image)i(pixel)d(v) -5 b(alues)25 b(are)h(scaled,)227 1638 y(with)g(non-default)g(v)-5 b(alues)26 b(for)h(the)h(BZER)m(O)f(and)f(BSCALE)g(k)m(eyw)m(ords,)j (then)e(this)f(routine)g(will)e(return)227 1751 y(the)32 b('equiv)-5 b(alen)m(t')31 b(data)g(t)m(yp)s(e)h(that)f(is)f(needed)h (to)h(store)g(the)f(scaled)g(v)-5 b(alues.)42 b(F)-8 b(or)32 b(example,)f(if)f(BITPIX)227 1864 y(=)39 b(16)g(and)g(BSCALE)f (=)g(0.1)i(then)f(the)g(equiv)-5 b(alen)m(t)38 b(data)h(t)m(yp)s(e)g (is)f(\015oating)h(p)s(oin)m(t,)h(and)e(-32)i(will)d(b)s(e)227 1977 y(returned.)65 b(There)39 b(are)g(2)g(sp)s(ecial)f(cases:)58 b(if)38 b(the)h(image)g(con)m(tains)g(unsigned)e(2-b)m(yte)j(in)m (teger)f(v)-5 b(alues,)227 2090 y(with)39 b(BITPIX)h(=)f(16,)44 b(BSCALE)39 b(=)h(1,)j(and)c(BZER)m(O)h(=)g(32768,)45 b(then)39 b(this)g(routine)g(will)f(return)h(a)227 2203 y(non-standard)26 b(v)-5 b(alue)26 b(of)h(20)h(for)f(the)g(bitpix)e(v) -5 b(alue.)39 b(Similarly)23 b(if)i(the)j(image)f(con)m(tains)g (unsigned)e(4-b)m(yte)227 2316 y(in)m(tegers,)31 b(then)f(bitpix)e (will)g(b)s(e)i(returned)f(with)g(a)i(v)-5 b(alue)30 b(of)g(40.)382 2571 y Fe(FTGIDT\(unit,)44 b(>)k(bitpix,status\))382 2684 y(FTGIET\(unit,)c(>)k(bitpix,status\))0 2940 y Fh(2)81 b Fi(Get)31 b(the)g(dimension)c(\(n)m(um)m(b)s(er)j(of)g(axes)h(=)f (NAXIS\))h(of)f(the)h(image)382 3196 y Fe(FTGIDM\(unit,)44 b(>)k(naxis,status\))0 3452 y Fh(3)81 b Fi(Get)31 b(the)g(size)f(of)g (all)g(the)g(dimensions)e(of)i(the)h(image)382 3707 y Fe(FTGISZ\(unit,)44 b(maxdim,)i(>)i(naxes,status\))0 3963 y Fh(4)81 b Fi(Get)35 b(the)f(parameters)g(that)h(de\014ne)e(the)h (t)m(yp)s(e)g(and)g(size)f(of)i(the)f(image.)52 b(This)32 b(routine)h(simply)e(com)m(bines)227 4076 y(calls)f(to)h(the)f(ab)s(o)m (v)m(e)i(3)f(routines.)382 4332 y Fe(FTGIPR\(unit,)44 b(maxdim,)i(>)i(bitpix,)d(naxis,)h(naxes,)h(int)f(*status\))0 4588 y Fh(5)81 b Fi(Put)30 b(elemen)m(ts)g(in)m(to)h(the)f(data)h(arra) m(y)382 4843 y Fe(FTPPR[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o (ts,v)o(alue)o(s,)41 b(>)48 b(status\))0 5099 y Fh(6)81 b Fi(Put)30 b(elemen)m(ts)h(in)m(to)f(the)h(data)g(arra)m(y)-8 b(,)32 b(substituting)c(the)i(appropriate)g(FITS)g(n)m(ull)e(v)-5 b(alue)30 b(for)g(all)g(elemen)m(ts)227 5212 y(whic)m(h)d(are)g(equal)h (to)g(the)f(v)-5 b(alue)27 b(of)h(NULL)-10 b(V)g(AL.)28 b(F)-8 b(or)28 b(in)m(teger)g(FITS)f(arra)m(ys,)i(the)e(n)m(ull)f(v)-5 b(alue)27 b(de\014ned)f(b)m(y)227 5325 y(the)k(previous)e(call)h(to)i (FTPNUL)e(will)e(b)s(e)i(substituted;)g(for)g(\015oating)h(p)s(oin)m(t) f(FITS)g(arra)m(ys)h(\(BITPIX)f(=)227 5438 y(-32)j(or)e(-64\))i(then)e (the)h(sp)s(ecial)e(IEEE)g(NaN)i(\(Not-a-Num)m(b)s(er\))h(v)-5 b(alue)30 b(will)e(b)s(e)i(substituted.)382 5694 y Fe (FTPPN[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o(ts,v)o(alue)o (s,n)o(ullv)o(al)42 b(>)47 b(status\))p eop %%Page: 87 93 87 92 bop 0 299 a Fg(9.6.)72 b(FITS)30 b(PRIMAR)-8 b(Y)31 b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)e(I/O)i(SUBR)m(OUTINES)589 b Fi(87)0 555 y Fh(7)81 b Fi(Set)30 b(data)h(arra)m(y)g(elemen)m(ts)g (as)f(unde\014ned)382 808 y Fe(FTPPRU\(unit,group,fpixel)o(,ne)o(leme)o (nts,)41 b(>)47 b(status\))0 1060 y Fh(8)81 b Fi(Get)36 b(elemen)m(ts)f(from)g(the)g(data)h(arra)m(y)-8 b(.)55 b(Unde\014ned)34 b(arra)m(y)h(elemen)m(ts)h(will)c(b)s(e)j(returned)f (with)f(a)j(v)-5 b(alue)34 b(=)227 1173 y(n)m(ullv)-5 b(al,)28 b(unless)h(n)m(ullv)-5 b(al)28 b(=)i(0)h(in)e(whic)m(h)g(case) i(no)g(c)m(hec)m(ks)g(for)g(unde\014ned)d(pixels)g(will)g(b)s(e)i(p)s (erformed.)382 1425 y Fe(FTGPV[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele) o(men)o(ts,n)o(ullv)o(al,)41 b(>)48 b(values,anyf,status\))0 1678 y Fh(9)81 b Fi(Get)32 b(elemen)m(ts)f(and)g(n)m(ull\015ags)e(from) i(data)h(arra)m(y)-8 b(.)44 b(An)m(y)32 b(unde\014ned)d(arra)m(y)i (elemen)m(ts)h(will)c(ha)m(v)m(e)33 b(the)e(corre-)227 1791 y(sp)s(onding)d(\015agv)-5 b(als)30 b(elemen)m(t)h(set)g(equal)f (to)h(.TR)m(UE.)382 2043 y Fe(FTGPF[BIJED]\(unit,group,)o(fpi)o(xel,)o (nele)o(men)o(ts,)41 b(>)48 b(values,flagvals,anyf,sta)o(tus)o(\))0 2295 y Fh(10)e Fi(Put)30 b(v)-5 b(alues)30 b(in)m(to)g(group)g (parameters)382 2548 y Fe(FTPGP[BIJED]\(unit,group,)o(fpa)o(rm,n)o (parm)o(,va)o(lues)o(,)42 b(>)47 b(status\))0 2800 y Fh(11)f Fi(Get)31 b(v)-5 b(alues)30 b(from)g(group)g(parameters)382 3053 y Fe(FTGGP[BIJED]\(unit,group,)o(fpa)o(rm,n)o(parm)o(,)42 b(>)47 b(values,status\))0 3305 y Fi(The)32 b(follo)m(wing)e(4)j (subroutines)d(transfer)h(FITS)h(images)g(with)f(2)h(or)g(3)h (dimensions)c(to)k(or)f(from)g(a)h(data)f(arra)m(y)0 3418 y(whic)m(h)g(has)h(b)s(een)g(declared)f(in)g(the)i(calling)e (program.)49 b(The)33 b(dimensionalit)m(y)d(of)k(the)f(FITS)g(image)g (is)f(passed)0 3531 y(b)m(y)26 b(the)g(naxis1,)g(naxis2,)h(and)e (naxis3)h(parameters)g(and)f(the)h(declared)g(dimensions)d(of)j(the)g (program)g(arra)m(y)h(are)0 3644 y(passed)k(in)e(the)j(dim1)d(and)i (dim2)f(parameters.)43 b(Note)32 b(that)g(the)f(program)g(arra)m(y)g (do)s(es)g(not)g(ha)m(v)m(e)i(to)e(ha)m(v)m(e)i(the)0 3757 y(same)28 b(dimensions)d(as)j(the)g(FITS)e(arra)m(y)-8 b(,)30 b(but)d(m)m(ust)g(b)s(e)g(at)i(least)e(as)h(big.)39 b(F)-8 b(or)29 b(example)e(if)f(a)i(FITS)f(image)h(with)0 3870 y(NAXIS1)j(=)f(NAXIS2)h(=)f(400)i(is)d(read)i(in)m(to)f(a)h (program)f(arra)m(y)h(whic)m(h)e(is)h(dimensioned)e(as)i(512)i(x)f(512) g(pixels,)0 3983 y(then)d(the)g(image)h(will)c(just)j(\014ll)e(the)j (lo)m(w)m(er)f(left)g(corner)g(of)h(the)f(arra)m(y)h(with)e(pixels)f (in)h(the)i(range)f(1)h(-)f(400)i(in)d(the)0 4095 y(X)32 b(an)g(Y)h(directions.)45 b(This)30 b(has)i(the)h(e\013ect)g(of)g (taking)f(a)h(con)m(tiguous)f(set)h(of)f(pixel)f(v)-5 b(alue)32 b(in)e(the)j(FITS)e(arra)m(y)0 4208 y(and)k(writing)e(them)i (to)h(a)g(non-con)m(tiguous)f(arra)m(y)g(in)f(program)h(memory)g (\(i.e.,)i(there)f(are)f(no)m(w)h(some)f(blank)0 4321 y(pixels)29 b(around)g(the)h(edge)i(of)e(the)h(image)f(in)f(the)i (program)f(arra)m(y\).)0 4574 y Fh(11)46 b Fi(Put)30 b(2-D)i(image)e(in)m(to)h(the)f(data)h(arra)m(y)382 4826 y Fe(FTP2D[BIJED]\(unit,group,)o(dim)o(1,na)o(xis1)o(,na)o(xis2)o(,ima) o(ge,)41 b(>)48 b(status\))0 5078 y Fh(12)e Fi(Put)30 b(3-D)i(cub)s(e)d(in)m(to)i(the)f(data)h(arra)m(y)382 5331 y Fe(FTP3D[BIJED]\(unit,group,)o(dim)o(1,di)o(m2,n)o(axi)o(s1,n)o (axis)o(2,n)o(axis)o(3,cu)o(be,)41 b(>)48 b(status\))0 5583 y Fh(13)e Fi(Get)29 b(2-D)f(image)g(from)g(the)f(data)i(arra)m(y) -8 b(.)41 b(Unde\014ned)26 b(pixels)f(in)i(the)h(arra)m(y)g(will)d(b)s (e)i(set)h(equal)f(to)i(the)e(v)-5 b(alue)227 5696 y(of)31 b('n)m(ullv)-5 b(al',)28 b(unless)h(n)m(ullv)-5 b(al=0)28 b(in)h(whic)m(h)g(case)j(no)e(testing)h(for)f(unde\014ned)e(pixels)g (will)g(b)s(e)i(p)s(erformed.)p eop %%Page: 88 94 88 93 bop 0 299 a Fi(88)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTG2D[BIJED]\(unit,group,)o(nul)o(lval)o(,dim)o(1,n)o(axis)o (1,na)o(xis)o(2,)42 b(>)47 b(image,anyf,status\))0 766 y Fh(14)f Fi(Get)31 b(3-D)h(cub)s(e)e(from)g(the)g(data)h(arra)m(y)-8 b(.)42 b(Unde\014ned)29 b(pixels)g(in)g(the)h(arra)m(y)h(will)d(b)s(e)i (set)h(equal)f(to)h(the)f(v)-5 b(alue)227 879 y(of)31 b('n)m(ullv)-5 b(al',)28 b(unless)h(n)m(ullv)-5 b(al=0)28 b(in)h(whic)m(h)g(case)j(no)e(testing)h(for)f(unde\014ned)e(pixels)g (will)g(b)s(e)i(p)s(erformed.)382 1089 y Fe(FTG3D[BIJED]\(unit,group,)o (nul)o(lval)o(,dim)o(1,d)o(im2,)o(naxi)o(s1,)o(naxi)o(s2,n)o(axi)o(s3,) 41 b(>)1002 1202 y(cube,anyf,status\))0 1413 y Fi(The)i(follo)m(wing)e (subroutines)g(transfer)i(a)h(rectangular)f(subset)f(of)i(the)f(pixels) e(in)h(a)i(FITS)e(N-dimensional)0 1525 y(image)30 b(to)h(or)f(from)f (an)h(arra)m(y)g(whic)m(h)f(has)h(b)s(een)f(declared)g(in)g(the)h (calling)f(program.)40 b(The)29 b(fpixels)f(and)h(lpixels)0 1638 y(parameters)e(are)h(in)m(teger)f(arra)m(ys)h(whic)m(h)e(sp)s (ecify)f(the)j(starting)f(and)f(ending)g(pixels)f(in)h(eac)m(h)i (dimension)c(of)k(the)0 1751 y(FITS)36 b(image)h(that)g(are)g(to)h(b)s (e)e(read)g(or)h(written.)59 b(\(Note)38 b(that)g(these)f(are)g(the)g (starting)f(and)g(ending)g(pixels)0 1864 y(in)d(the)i(FITS)f(image,)j (not)e(in)e(the)i(declared)f(arra)m(y\).)55 b(The)34 b(arra)m(y)i(parameter)f(is)f(treated)h(simply)e(as)i(a)g(large)0 1977 y(one-dimensional)28 b(arra)m(y)i(of)h(the)f(appropriate)f(datat)m (yp)s(e)i(con)m(taining)f(the)g(pixel)e(v)-5 b(alues;)30 b(The)f(pixel)g(v)-5 b(alues)29 b(in)0 2090 y(the)d(FITS)f(arra)m(y)i (are)f(read/written)f(from/to)i(this)e(program)g(arra)m(y)i(in)d (strict)i(sequence)g(without)f(an)m(y)i(gaps;)g(it)0 2203 y(is)h(up)f(to)j(the)f(calling)e(routine)h(to)h(correctly)g(in)m (terpret)f(the)h(dimensionalit)m(y)d(of)j(this)f(arra)m(y)-8 b(.)41 b(The)28 b(t)m(w)m(o)i(families)0 2316 y(of)d(FITS)g(reading)f (routines)g(\(FTGSVx)h(and)g(FTGSFx)g(subroutines\))e(also)j(ha)m(v)m (e)g(an)f('incs')g(parameter)g(whic)m(h)0 2429 y(de\014nes)j(the)h (data)h(sampling)c(in)m(terv)-5 b(al)30 b(in)g(eac)m(h)i(dimension)c (of)j(the)g(FITS)f(arra)m(y)-8 b(.)43 b(F)-8 b(or)32 b(example,)f(if)f(incs\(1\)=2)0 2542 y(and)j(incs\(2\)=3)g(when)g (reading)f(a)i(2-dimensional)d(FITS)i(image,)h(then)f(only)g(ev)m(ery)h (other)f(pixel)f(in)g(the)i(\014rst)0 2655 y(dimension)c(and)j(ev)m (ery)h(3rd)e(pixel)g(in)g(the)h(second)g(dimension)d(will)h(b)s(e)h (returned)g(in)g(the)h('arra)m(y')h(parameter.)0 2767 y([Note:)39 b(the)25 b(FTGSSx)f(family)g(of)g(routines)g(whic)m(h)g(w)m (ere)h(presen)m(t)g(in)e(previous)g(v)m(ersions)h(of)h(FITSIO)f(ha)m(v) m(e)i(b)s(een)0 2880 y(sup)s(erseded)i(b)m(y)j(the)f(more)h(general)f (FTGSVx)g(family)f(of)i(routines.])0 3091 y Fh(15)46 b Fi(Put)30 b(an)g(arbitrary)f(data)i(subsection)f(in)m(to)g(the)h (data)g(arra)m(y)-8 b(.)382 3301 y Fe(FTPSS[BIJED]\(unit,group,)o(nax)o (is,n)o(axes)o(,fp)o(ixel)o(s,lp)o(ixe)o(ls,a)o(rray)o(,)42 b(>)47 b(status\))0 3512 y Fh(16)f Fi(Get)30 b(an)e(arbitrary)f(data)j (subsection)d(from)h(the)h(data)g(arra)m(y)-8 b(.)42 b(Unde\014ned)27 b(pixels)f(in)i(the)g(arra)m(y)i(will)25 b(b)s(e)j(set)227 3625 y(equal)j(to)i(the)e(v)-5 b(alue)32 b(of)f('n)m(ullv)-5 b(al',)30 b(unless)g(n)m(ullv)-5 b(al=0)30 b(in)g(whic)m(h)g(case)j(no)e(testing)h(for)f(unde\014ned)f (pixels)227 3738 y(will)e(b)s(e)i(p)s(erformed.)382 3948 y Fe(FTGSV[BIJED]\(unit,group,)o(nax)o(is,n)o(axes)o(,fp)o(ixel)o(s,lp) o(ixe)o(ls,i)o(ncs,)o(nul)o(lval)o(,)42 b(>)1002 4061 y(array,anyf,status\))0 4272 y Fh(17)k Fi(Get)34 b(an)f(arbitrary)f (data)h(subsection)f(from)h(the)g(data)g(arra)m(y)-8 b(.)50 b(An)m(y)33 b(Unde\014ned)e(pixels)g(in)h(the)h(arra)m(y)h(will) 227 4384 y(ha)m(v)m(e)e(the)e(corresp)s(onding)f('\015agv)-5 b(als')30 b(elemen)m(t)h(set)g(equal)f(to)h(.TR)m(UE.)382 4595 y Fe(FTGSF[BIJED]\(unit,group,)o(nax)o(is,n)o(axes)o(,fp)o(ixel)o (s,lp)o(ixe)o(ls,i)o(ncs,)41 b(>)1002 4708 y(array,flagvals,anyf,statu) o(s\))0 5034 y Fd(9.7)135 b(FITS)44 b(ASCI)t(I)g(and)h(Binary)g(T)-11 b(able)45 b(Data)h(I/O)f(Subroutines)0 5287 y Fb(9.7.1)112 b(Column)37 b(Information)f(Subroutines)0 5488 y Fh(1)81 b Fi(Get)30 b(the)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(or)f(columns)f(in) h(the)h(curren)m(t)f(FITS)g(table.)40 b(The)29 b(n)m(um)m(b)s(er)f(of)i (ro)m(ws)g(is)e(giv)m(en)i(b)m(y)227 5601 y(the)k(NAXIS2)f(k)m(eyw)m (ord)h(and)e(the)i(n)m(um)m(b)s(er)e(of)h(columns)f(is)g(giv)m(en)h(b)m (y)g(the)h(TFIELDS)e(k)m(eyw)m(ord)i(in)e(the)227 5714 y(header)e(of)h(the)g(table.)p eop %%Page: 89 95 89 94 bop 0 299 a Fg(9.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES) 979 b Fi(89)382 555 y Fe(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\))382 668 y(FTGNCL\(unit,)e(>)k(ncols,)e(status\))0 921 y Fh(2)81 b Fi(Get)25 b(the)f(table)h(column)e(n)m(um)m(b)s(er)g(\(and)h(name\))h (of)f(the)h(column)e(whose)h(name)g(matc)m(hes)i(an)e(input)f(template) 227 1034 y(name.)38 b(The)21 b(table)h(column)e(names)i(are)g (de\014ned)e(b)m(y)i(the)g(TTYPEn)e(k)m(eyw)m(ords)i(in)e(the)i(FITS)f (header.)37 b(If)22 b(a)227 1147 y(column)h(do)s(es)h(not)g(ha)m(v)m(e) h(a)f(TTYPEn)f(k)m(eyw)m(ord,)j(then)d(these)h(routines)f(assume)h (that)g(the)h(name)e(consists)227 1260 y(of)i(all)f(blank)g(c)m (haracters.)40 b(These)25 b(2)g(subroutines)d(p)s(erform)i(the)h(same)g (function)f(except)i(that)f(FTGCNO)227 1373 y(only)i(returns)f(the)h(n) m(um)m(b)s(er)f(of)h(the)g(matc)m(hing)h(column)e(whereas)h(FTGCNN)g (also)g(returns)f(the)i(name)f(of)227 1486 y(the)k(column.)39 b(If)30 b(CASESEN)f(=)h(.true.)41 b(then)30 b(the)h(column)e(name)h (matc)m(h)i(will)27 b(b)s(e)j(case-sensitiv)m(e.)227 1635 y(The)41 b(input)d(column)i(name)h(template)g(\(COL)-8 b(TEMPLA)g(TE\))41 b(is)f(\(1\))h(either)g(the)g(exact)h(name)f(of)g (the)227 1748 y(column)35 b(to)j(b)s(e)d(searc)m(hed)i(for,)h(or)e (\(2\))i(it)e(ma)m(y)h(con)m(tain)f(wild)e(cards)i(c)m(haracters)i (\(*,)h(?,)f(or)e(#\),)i(or)f(\(3\))227 1861 y(it)c(ma)m(y)h(con)m (tain)f(the)g(n)m(um)m(b)s(er)f(of)h(the)g(desired)f(column)g(\(where)h (the)g(n)m(um)m(b)s(er)f(is)g(expressed)g(as)h(ASCI)s(I)227 1974 y(digits\).)39 b(The)28 b(\014rst)g(2)h(wild)d(cards)i(b)s(eha)m (v)m(e)h(similarly)c(to)k(UNIX)g(\014lename)f(matc)m(hing:)39 b(the)29 b('*')g(c)m(haracter)227 2087 y(matc)m(hes)e(an)m(y)g (sequence)f(of)h(c)m(haracters)g(\(including)c(zero)k(c)m(haracters\))h (and)d(the)i(')10 b(?')39 b(c)m(haracter)28 b(matc)m(hes)227 2199 y(an)m(y)40 b(single)f(c)m(haracter.)71 b(The)39 b(#)h(wildcard)d(will)g(matc)m(h)k(an)m(y)f(consecutiv)m(e)h(string)e (of)h(decimal)e(digits)227 2312 y(\(0-9\).)45 b(As)31 b(an)g(example,)g(the)g(template)g(strings)f('AB?DE',)i('AB*E',)h(and)d ('AB*CDE')j(will)28 b(all)i(matc)m(h)227 2425 y(the)c(string)f ('ABCDE'.)j(If)d(more)h(than)g(one)g(column)f(name)h(in)f(the)h(table)g (matc)m(hes)h(the)f(template)h(string,)227 2538 y(then)33 b(the)h(\014rst)f(matc)m(h)h(is)e(returned)h(and)f(the)i(status)g(v)-5 b(alue)33 b(will)d(b)s(e)j(set)h(to)g(237)h(as)f(a)f(w)m(arning)g(that) h(a)227 2651 y(unique)f(matc)m(h)j(w)m(as)f(not)g(found.)53 b(T)-8 b(o)35 b(\014nd)f(the)h(other)g(cases)g(that)h(matc)m(h)g(the)f (template,)h(simply)d(call)227 2764 y(the)27 b(subroutine)e(again)i (lea)m(ving)g(the)g(input)e(status)i(v)-5 b(alue)27 b(equal)f(to)i(237) g(and)f(the)g(next)g(matc)m(hing)g(name)227 2877 y(will)i(then)j(b)s(e) f(returned.)43 b(Rep)s(eat)32 b(this)f(pro)s(cess)g(un)m(til)f(a)i (status)g(=)g(219)h(\(column)d(name)i(not)g(found\))f(is)227 2990 y(returned.)40 b(If)30 b(these)h(subroutines)d(fail)h(to)i(matc)m (h)g(the)g(template)g(to)g(an)m(y)g(of)f(the)h(columns)e(in)g(the)i (table,)227 3103 y(they)i(lastly)e(c)m(hec)m(k)j(if)e(the)g(template)h (can)g(b)s(e)e(in)m(terpreted)h(as)h(a)g(simple)d(p)s(ositiv)m(e)h(in)m (teger)i(\(e.g.,)i('7',)f(or)227 3216 y('512'\))i(and)d(if)f(so,)j (they)f(return)e(that)j(column)d(n)m(um)m(b)s(er.)49 b(If)33 b(no)g(matc)m(hes)i(are)f(found)e(then)h(a)h(status)g(=)227 3329 y(219)e(error)e(is)f(returned.)227 3478 y(Note)i(that)e(the)h (FITS)e(Standard)g(recommends)g(that)i(only)e(letters,)i(digits,)e(and) h(the)g(underscore)f(c)m(har-)227 3591 y(acter)44 b(b)s(e)e(used)g(in)g (column)f(names)i(\(with)f(no)g(em)m(b)s(edded)g(spaces)h(in)f(the)h (name\).)78 b(T)-8 b(railing)40 b(blank)227 3704 y(c)m(haracters)32 b(are)f(not)g(signi\014can)m(t.)40 b(It)31 b(is)e(recommended)i(that)g (the)g(column)e(names)h(in)g(a)h(giv)m(en)f(table)h(b)s(e)227 3816 y(unique)e(within)f(the)i(\014rst)g(8)h(c)m(haracters.)382 4070 y Fe(FTGCNO\(unit,casesen,colt)o(emp)o(late)o(,)42 b(>)47 b(colnum,status\))382 4182 y(FTGCNN\(unit,casesen,colt)o(emp)o (late)o(,)42 b(>)47 b(colname,colnum,status\))0 4436 y Fh(3)81 b Fi(Get)39 b(the)g(datat)m(yp)s(e)h(of)e(a)h(column)f(in)f (an)h(ASCI)s(I)g(or)g(binary)f(table.)65 b(This)37 b(routine)h(returns) f(an)i(in)m(teger)227 4549 y(co)s(de)34 b(v)-5 b(alue)32 b(corresp)s(onding)f(to)j(the)g(datat)m(yp)s(e)g(of)f(the)g(column.)48 b(\(See)34 b(the)f(FTBNFM)i(and)d(FT)-8 b(ASFM)227 4661 y(subroutines)26 b(in)h(the)h(Utilities)f(section)h(of)g(this)f(do)s (cumen)m(t)h(for)g(a)h(list)e(of)h(the)h(co)s(de)f(v)-5 b(alues\).)40 b(The)27 b(v)m(ector)227 4774 y(rep)s(eat)38 b(coun)m(t)g(\(whic)m(h)f(is)g(alw)m(a)m(y)h(1)g(for)g(ASCI)s(I)e (table)h(columns\))g(is)g(also)g(returned.)62 b(If)37 b(the)h(sp)s(eci\014ed)227 4887 y(column)31 b(has)g(an)g(ASCI)s(I)f(c)m (haracter)j(datat)m(yp)s(e)g(\(co)s(de)f(=)f(16\))i(then)e(the)h(width) d(of)j(a)g(unit)e(string)h(in)f(the)227 5000 y(column)i(is)g(also)h (returned.)48 b(Note)34 b(that)g(this)d(routine)h(supp)s(orts)g(the)h (lo)s(cal)f(con)m(v)m(en)m(tion)i(for)f(sp)s(ecifying)227 5113 y(arra)m(ys)f(of)f(strings)f(within)e(a)k(binary)d(table)i(c)m (haracter)h(column,)f(using)e(the)i(syn)m(tax)h(TF)m(ORM)f(=)g('rAw') 227 5226 y(where)f('r')g(is)g(the)g(total)h(n)m(um)m(b)s(er)e(of)i(c)m (haracters)g(\(=)g(the)f(width)f(of)h(the)g(column\))g(and)g('w')g(is)f (the)i(width)227 5339 y(of)39 b(a)f(unit)f(string)g(within)f(the)i (column.)63 b(Th)m(us)37 b(if)g(the)h(column)f(has)h(TF)m(ORM)h(=)f ('60A12')i(then)e(this)227 5452 y(routine)30 b(will)d(return)j(dataco)s (de)h(=)f(16,)h(rep)s(eat)g(=)f(60,)i(and)d(width)g(=)h(12.)227 5601 y(The)h(second)h(routine,)f(FTEQTY)g(is)f(similar)f(except)k(that) f(in)e(the)i(case)g(of)g(scaled)f(in)m(teger)h(columns)e(it)227 5714 y(returns)23 b(the)h('equiv)-5 b(alen)m(t')23 b(data)h(t)m(yp)s(e) g(that)h(is)d(needed)i(to)g(store)g(the)g(scaled)f(v)-5 b(alues,)25 b(and)e(not)h(necessarily)p eop %%Page: 90 96 90 95 bop 0 299 a Fi(90)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)227 555 y Fi(the)38 b(ph)m(ysical)f(data)h(t)m(yp)s(e)g(of)g(the)g (unscaled)f(v)-5 b(alues)37 b(as)h(stored)g(in)f(the)h(FITS)f(table.)63 b(F)-8 b(or)38 b(example)g(if)227 668 y(a)d('1I')g(column)e(in)g(a)h (binary)f(table)h(has)g(TSCALn)f(=)g(1)i(and)f(TZER)m(On)f(=)g(32768,) 38 b(then)c(this)f(column)227 781 y(e\013ectiv)m(ely)25 b(con)m(tains)f(unsigned)e(short)h(in)m(teger)i(v)-5 b(alues,)24 b(and)g(th)m(us)f(the)h(returned)f(v)-5 b(alue)23 b(of)h(t)m(yp)s(eco)s(de)h(will)227 894 y(b)s(e)32 b(the)h(co)s(de)g (for)g(an)f(unsigned)f(short)h(in)m(teger,)i(not)f(a)g(signed)f(short)g (in)m(teger.)48 b(Similarly)-8 b(,)30 b(if)i(a)h(column)227 1007 y(has)d(TTYPEn)g(=)g('1I')h(and)f(TSCALn)e(=)i(0.12,)j(then)d(the) g(returned)g(t)m(yp)s(eco)s(de)g(will)e(b)s(e)i(the)h(co)s(de)f(for)h (a)227 1120 y('real')g(column.)382 1382 y Fe(FTGTCL\(unit,colnum,)42 b(>)48 b(datacode,repeat,width,st)o(atu)o(s\))382 1495 y(FTEQTY\(unit,colnum,)42 b(>)48 b(datacode,repeat,width,st)o(atu)o (s\))0 1758 y Fh(4)81 b Fi(Return)22 b(the)i(displa)m(y)e(width)g(of)h (a)h(column.)38 b(This)21 b(is)i(the)h(length)f(of)g(the)h(string)f (that)h(will)d(b)s(e)i(returned)f(when)227 1871 y(reading)32 b(the)h(column)f(as)h(a)g(formatted)g(string.)47 b(The)32 b(displa)m(y)f(width)g(is)h(determined)g(b)m(y)g(the)h(TDISPn)227 1984 y(k)m(eyw)m(ord,)e(if)f(presen)m(t,)g(otherwise)g(b)m(y)g(the)h (data)g(t)m(yp)s(e)g(of)f(the)h(column.)382 2246 y Fe(FTGCDW\(unit,)44 b(colnum,)i(>)i(dispwidth,)d(status\))0 2509 y Fh(5)81 b Fi(Get)29 b(information)d(ab)s(out)i(an)g(existing)f(ASCI)s(I)g (table)h(column.)39 b(\(NOTE:)28 b(TSCAL)f(and)g(TZER)m(O)h(m)m(ust)g (b)s(e)227 2622 y(declared)i(as)h(Double)f(Precision)f(v)-5 b(ariables\).)39 b(All)29 b(the)i(returned)e(parameters)i(are)f(scalar) h(quan)m(tities.)382 2884 y Fe(FTGACL\(unit,colnum,)42 b(>)716 2997 y(ttype,tbcol,tunit,tform,)o(tsca)o(l,t)o(zero)o(,snu)o (ll,)o(tdis)o(p,st)o(atu)o(s\))0 3259 y Fh(6)81 b Fi(Get)29 b(information)d(ab)s(out)h(an)h(existing)f(binary)f(table)i(column.)39 b(\(NOTE:)28 b(TSCAL)e(and)i(TZER)m(O)f(m)m(ust)h(b)s(e)227 3372 y(declared)i(as)g(Double)f(Precision)g(v)-5 b(ariables\).)39 b(D)m(A)-8 b(T)g(A)g(TYPE)32 b(is)d(a)h(c)m(haracter)i(string)c(whic)m (h)h(returns)g(the)227 3485 y(datat)m(yp)s(e)35 b(of)g(the)f(column)f (as)h(de\014ned)f(b)m(y)h(the)g(TF)m(ORMn)g(k)m(eyw)m(ord)h(\(e.g.,)i ('I',)e('J','E',)g('D',)g(etc.\).)54 b(In)227 3598 y(the)27 b(case)g(of)g(an)f(ASCI)s(I)f(c)m(haracter)j(column,)e(D)m(A)-8 b(T)g(A)g(TYPE)29 b(will)23 b(ha)m(v)m(e)28 b(a)f(v)-5 b(alue)26 b(of)g(the)h(form)f('An')g(where)227 3711 y('n')34 b(is)f(an)h(in)m(teger)h(expressing)e(the)h(width)e(of)i(the)h(\014eld) d(in)h(c)m(haracters.)53 b(F)-8 b(or)35 b(example,)g(if)e(TF)m(ORM)h(=) 227 3824 y('160A8')39 b(then)e(FTGBCL)f(will)e(return)i(D)m(A)-8 b(T)g(A)g(TYPE='A8')39 b(and)d(REPEA)-8 b(T=20.)60 b(All)35 b(the)i(returned)227 3937 y(parameters)31 b(are)g(scalar)f(quan)m (tities.)382 4199 y Fe(FTGBCL\(unit,colnum,)42 b(>)716 4312 y(ttype,tunit,datatype,rep)o(eat,)o(tsc)o(al,t)o(zero)o(,tn)o (ull,)o(tdis)o(p,s)o(tatu)o(s\))0 4575 y Fh(7)81 b Fi(Put)31 b(\(app)s(end\))g(a)i(TDIMn)f(k)m(eyw)m(ord)g(whose)g(v)-5 b(alue)32 b(has)g(the)g(form)g('\(l,m,n...\)')46 b(where)32 b(l,)g(m,)g(n...)46 b(are)33 b(the)227 4688 y(dimensions)28 b(of)i(a)h(m)m(ultidimension)c(arra)m(y)j(column)g(in)f(a)h(binary)f (table.)382 4950 y Fe(FTPTDM\(unit,colnum,naxis)o(,na)o(xes,)41 b(>)48 b(status\))0 5213 y Fh(8)81 b Fi(Return)29 b(the)h(n)m(um)m(b)s (er)e(of)i(and)g(size)f(of)h(the)g(dimensions)e(of)i(a)g(table)g (column.)39 b(Normally)29 b(this)g(information)227 5326 y(is)h(giv)m(en)h(b)m(y)g(the)g(TDIMn)f(k)m(eyw)m(ord,)i(but)e(if)g (this)g(k)m(eyw)m(ord)h(is)f(not)h(presen)m(t)g(then)g(this)e(routine)h (returns)227 5439 y(NAXIS)g(=)g(1)h(and)f(NAXES\(1\))h(equal)f(to)h (the)g(rep)s(eat)g(coun)m(t)g(in)e(the)h(TF)m(ORM)h(k)m(eyw)m(ord.)382 5701 y Fe(FTGTDM\(unit,colnum,maxdi)o(m,)41 b(>)48 b (naxis,naxes,status\))p eop %%Page: 91 97 91 96 bop 0 299 a Fg(9.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES) 979 b Fi(91)0 555 y Fh(9)81 b Fi(Deco)s(de)33 b(the)g(input)e(TDIMn)i (k)m(eyw)m(ord)g(string)e(\(e.g.)50 b('\(100,200\)'\))37 b(and)32 b(return)g(the)h(n)m(um)m(b)s(er)e(of)i(and)f(size)227 668 y(of)c(the)g(dimensions)d(of)j(a)g(binary)e(table)h(column.)39 b(If)27 b(the)h(input)e(tdimstr)g(c)m(haracter)j(string)e(is)g(n)m (ull,)f(then)227 781 y(this)e(routine)f(returns)g(naxis)g(=)i(1)f(and)g (naxes[0])i(equal)d(to)j(the)e(rep)s(eat)h(coun)m(t)g(in)e(the)h(TF)m (ORM)h(k)m(eyw)m(ord.)227 894 y(This)k(routine)g(is)h(called)f(b)m(y)h (FTGTDM.)382 1147 y Fe(FTDTDM\(unit,tdimstr,coln)o(um,)o(maxd)o(im,)41 b(>)48 b(naxis,naxes,)c(status\))0 1400 y Fh(10)i Fi(Return)32 b(the)h(optimal)f(n)m(um)m(b)s(er)g(of)h(ro)m(ws)g(to)h(read)f(or)g (write)f(at)i(one)f(time)g(for)f(maxim)m(um)g(I/O)h(e\016ciency)-8 b(.)227 1513 y(Refer)31 b(to)g(the)g(\\Optimizing)d(Co)s(de")i(section) h(in)e(Chapter)h(5)g(for)h(more)f(discussion)e(on)i(ho)m(w)h(to)g(use)f (this)227 1626 y(routine.)382 1879 y Fe(FFGRSZ\(unit,)44 b(>)k(nrows,status\))0 2169 y Fb(9.7.2)112 b(Lo)m(w-Lev)m(el)38 b(T)-9 b(able)37 b(Access)g(Subroutines)0 2388 y Fi(The)d(follo)m(wing) e(subroutines)g(pro)m(vide)i(lo)m(w-lev)m(el)g(access)h(to)g(the)g (data)g(in)e(ASCI)s(I)f(or)i(binary)f(tables)h(and)g(are)0 2501 y(mainly)27 b(useful)g(as)j(an)f(e\016cien)m(t)g(w)m(a)m(y)h(to)g (cop)m(y)g(all)e(or)h(part)g(of)g(a)g(table)g(from)g(one)g(lo)s(cation) g(to)h(another.)40 b(These)0 2614 y(routines)23 b(simply)f(read)i(or)h (write)e(the)i(sp)s(eci\014ed)d(n)m(um)m(b)s(er)h(of)i(consecutiv)m(e)g (b)m(ytes)g(in)e(an)h(ASCI)s(I)f(or)h(binary)f(table,)0 2727 y(without)36 b(regard)h(for)f(column)g(b)s(oundaries)e(or)j(the)g (ro)m(w)g(length)g(in)e(the)i(table.)60 b(The)37 b(\014rst)f(t)m(w)m(o) i(subroutines)0 2840 y(read)29 b(or)h(write)f(consecutiv)m(e)h(b)m (ytes)g(in)e(a)i(table)f(to)i(or)e(from)g(a)h(c)m(haracter)h(string)d (v)-5 b(ariable,)29 b(while)f(the)h(last)h(t)m(w)m(o)0 2953 y(subroutines)f(read)j(or)g(write)f(consecutiv)m(e)h(b)m(ytes)h (to)f(or)g(from)f(a)h(v)-5 b(ariable)31 b(declared)g(as)h(a)g(n)m (umeric)e(data)j(t)m(yp)s(e)0 3065 y(\(e.g.,)40 b(INTEGER,)d (INTEGER*2,)i(REAL,)d(DOUBLE)h(PRECISION\).)f(These)g(routines)g(do)g (not)h(p)s(erform)0 3178 y(an)m(y)c(mac)m(hine)f(dep)s(enden)m(t)g (data)i(con)m(v)m(ersion)f(or)f(b)m(yte)i(sw)m(apping,)e(except)i(that) f(con)m(v)m(ersion)g(to/from)g(ASCI)s(I)0 3291 y(format)d(is)f(p)s (erformed)f(b)m(y)h(the)h(FTGTBS)f(and)g(FTPTBS)g(routines)g(on)g(mac)m (hines)g(whic)m(h)g(do)g(not)h(use)f(ASCI)s(I)0 3404 y(c)m(haracter)j(co)s(des)e(in)f(the)i(in)m(ternal)e(data)i(represen)m (tations)g(\(e.g.,)h(on)e(IBM)h(mainframe)e(computers\).)0 3657 y Fh(1)81 b Fi(Read)26 b(a)h(consecutiv)m(e)g(string)f(of)g(c)m (haracters)i(from)e(an)g(ASCI)s(I)f(table)h(in)m(to)h(a)f(c)m(haracter) i(v)-5 b(ariable)26 b(\(spanning)227 3770 y(columns)31 b(and)h(m)m(ultiple)e(ro)m(ws)i(if)f(necessary\))i(This)e(routine)g (should)f(not)j(b)s(e)e(used)h(with)f(binary)f(tables)227 3883 y(b)s(ecause)h(of)f(complications)f(related)i(to)g(passing)e (string)g(v)-5 b(ariables)29 b(b)s(et)m(w)m(een)i(C)f(and)g(F)-8 b(ortran.)382 4136 y Fe(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 b(>)48 b(string,status\))0 4390 y Fh(2)81 b Fi(W)-8 b(rite)30 b(a)h(consecutiv)m(e)g(string)e(of)i(c)m(haracters)g(to)g(an)f(ASCI)s (I)f(table)h(from)g(a)h(c)m(haracter)h(v)-5 b(ariable)29 b(\(spanning)227 4503 y(columns)i(and)h(m)m(ultiple)e(ro)m(ws)i(if)f (necessary\))i(This)e(routine)g(should)f(not)j(b)s(e)e(used)h(with)f (binary)f(tables)227 4615 y(b)s(ecause)h(of)f(complications)f(related)i (to)g(passing)e(string)g(v)-5 b(ariables)29 b(b)s(et)m(w)m(een)i(C)f (and)g(F)-8 b(ortran.)382 4869 y Fe(FTPTBS\(unit,frow,startch)o(ar,)o (ncha)o(rs,s)o(tri)o(ng,)41 b(>)48 b(status\))0 5122 y Fh(3)81 b Fi(Read)27 b(a)h(consecutiv)m(e)h(arra)m(y)f(of)g(b)m(ytes) g(from)f(an)g(ASCI)s(I)f(or)i(binary)d(table)j(in)m(to)f(a)h(n)m (umeric)f(v)-5 b(ariable)26 b(\(span-)227 5235 y(ning)31 b(columns)f(and)i(m)m(ultiple)d(ro)m(ws)j(if)f(necessary\).)46 b(The)32 b(arra)m(y)g(parameter)g(ma)m(y)h(b)s(e)e(declared)g(as)i(an)m (y)227 5348 y(n)m(umerical)g(datat)m(yp)s(e)i(as)g(long)f(as)h(the)f (arra)m(y)h(is)e(at)i(least)g('nc)m(hars')g(b)m(ytes)f(long,)i(e.g.,)g (if)e(nc)m(hars)g(=)g(17,)227 5461 y(then)c(declare)h(the)f(arra)m(y)h (as)g(INTEGER*4)g(ARRA)-8 b(Y\(5\).)382 5714 y Fe (FTGTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 b(>)48 b(array,status\))p eop %%Page: 92 98 92 97 bop 0 299 a Fi(92)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 555 y Fh(4)81 b Fi(W)-8 b(rite)31 b(a)g(consecutiv)m(e)h(arra)m(y)g(of) f(b)m(ytes)g(to)h(an)e(ASCI)s(I)g(or)h(binary)e(table)i(from)f(a)i(n)m (umeric)d(v)-5 b(ariable)30 b(\(span-)227 668 y(ning)k(columns)f(and)h (m)m(ultiple)e(ro)m(ws)j(if)e(necessary\))j(The)e(arra)m(y)h(parameter) g(ma)m(y)h(b)s(e)e(declared)g(as)h(an)m(y)227 781 y(n)m(umerical)e (datat)m(yp)s(e)i(as)g(long)f(as)h(the)f(arra)m(y)h(is)e(at)i(least)g ('nc)m(hars')g(b)m(ytes)f(long,)i(e.g.,)g(if)e(nc)m(hars)g(=)g(17,)227 894 y(then)c(declare)h(the)f(arra)m(y)h(as)g(INTEGER*4)g(ARRA)-8 b(Y\(5\).)382 1161 y Fe(FTPTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,a)o (rra)o(y,)42 b(>)47 b(status\))0 1461 y Fb(9.7.3)112 b(Edit)36 b(Ro)m(ws)h(or)h(Columns)0 1676 y Fh(1)81 b Fi(Insert)26 b(blank)g(ro)m(ws)i(in)m(to)f(an)g(existing)f(ASCI)s(I)g (or)h(binary)f(table)h(\(in)g(the)g(CDU\).)h(All)e(the)i(ro)m(ws)f(F)m (OLLO)m(W-)227 1789 y(ING)32 b(ro)m(w)f(FR)m(O)m(W)i(are)e(shifted)f (do)m(wn)h(b)m(y)g(NR)m(O)m(WS)h(ro)m(ws.)43 b(If)31 b(FR)m(O)m(W)i(=)d(0)i(then)f(the)g(blank)f(ro)m(ws)i(are)227 1902 y(inserted)e(at)i(the)f(b)s(eginning)e(of)i(the)g(table.)43 b(This)29 b(routine)h(mo)s(di\014es)f(the)j(NAXIS2)f(k)m(eyw)m(ord)h (to)f(re\015ect)227 2015 y(the)g(new)f(n)m(um)m(b)s(er)f(of)h(ro)m(ws)h (in)e(the)h(table.)382 2282 y Fe(FTIROW\(unit,frow,nrows,)41 b(>)48 b(status\))0 2550 y Fh(2)81 b Fi(Delete)26 b(ro)m(ws)g(from)f (an)g(existing)g(ASCI)s(I)f(or)h(binary)f(table)h(\(in)g(the)h(CDU\).)g (The)f(NR)m(O)m(WS)h(n)m(um)m(b)s(er)e(of)i(ro)m(ws)227 2663 y(are)k(deleted,)g(starting)f(with)g(ro)m(w)g(FR)m(O)m(W,)j(and)d (an)m(y)h(remaining)d(ro)m(ws)j(in)e(the)i(table)f(are)h(shifted)f(up)f (to)227 2775 y(\014ll)35 b(in)h(the)h(space.)61 b(This)35 b(routine)h(mo)s(di\014es)f(the)j(NAXIS2)f(k)m(eyw)m(ord)g(to)h (re\015ect)f(the)h(new)e(n)m(um)m(b)s(er)g(of)227 2888 y(ro)m(ws)31 b(in)e(the)h(table.)382 3156 y Fe (FTDROW\(unit,frow,nrows,)41 b(>)48 b(status\))0 3423 y Fh(3)81 b Fi(Delete)25 b(a)g(list)e(of)i(ro)m(ws)f(from)g(an)h(ASCI)s (I)e(or)h(binary)f(table)h(\(in)g(the)g(CDU\).)i(In)e(the)g(\014rst)g (routine,)h('ro)m(wrange')227 3536 y(is)i(a)h(c)m(haracter)h(string)e (listing)f(the)i(ro)m(ws)f(or)h(ro)m(w)g(ranges)g(to)g(delete)g (\(e.g.,)j('2-4,)e(5,)g(8-9'\).)42 b(In)27 b(the)h(second)227 3649 y(routine,)36 b('ro)m(wlist')e(is)g(an)g(in)m(teger)i(arra)m(y)f (of)g(ro)m(w)g(n)m(um)m(b)s(ers)e(to)j(b)s(e)e(deleted)h(from)f(the)h (table.)55 b(nro)m(ws)34 b(is)227 3762 y(the)e(n)m(um)m(b)s(er)e(of)h (ro)m(w)h(n)m(um)m(b)s(ers)e(in)g(the)h(list.)43 b(The)31 b(\014rst)f(ro)m(w)i(in)e(the)h(table)h(is)e(1)i(not)f(0.)44 b(The)31 b(list)f(of)i(ro)m(w)227 3875 y(n)m(um)m(b)s(ers)d(m)m(ust)h (b)s(e)g(sorted)h(in)e(ascending)g(order.)382 4142 y Fe(FTDRRG\(unit,rowrange,)42 b(>)47 b(status\))382 4255 y(FTDRWS\(unit,rowlist,nrow)o(s,)41 b(>)48 b(status\))0 4523 y Fh(4)81 b Fi(Insert)43 b(a)i(blank)e(column)h(\(or)g(columns\))g (in)m(to)g(an)g(existing)g(ASCI)s(I)f(or)h(binary)f(table)h(\(in)g(the) g(CDU\).)227 4636 y(COLNUM)c(sp)s(eci\014es)f(the)i(column)e(n)m(um)m (b)s(er)g(that)i(the)f(\(\014rst\))g(new)g(column)f(should)f(o)s(ccup)m (y)j(in)e(the)227 4749 y(table.)57 b(NCOLS)34 b(sp)s(eci\014es)g(ho)m (w)i(man)m(y)g(columns)e(are)i(to)g(b)s(e)f(inserted.)56 b(An)m(y)35 b(existing)g(columns)f(from)227 4862 y(this)k(p)s(osition)e (and)i(higher)f(are)i(mo)m(v)m(ed)g(o)m(v)m(er)h(to)f(allo)m(w)f(ro)s (om)g(for)h(the)f(new)g(column\(s\).)64 b(The)38 b(index)227 4975 y(n)m(um)m(b)s(er)j(on)h(all)f(the)h(follo)m(wing)e(k)m(eyw)m (ords)j(will)c(b)s(e)i(incremen)m(ted)h(if)f(necessary)h(to)h (re\015ect)f(the)g(new)227 5087 y(p)s(osition)30 b(of)h(the)g (column\(s\))g(in)f(the)h(table:)42 b(TBCOLn,)30 b(TF)m(ORMn,)i (TTYPEn,)e(TUNITn,)h(TNULLn,)227 5200 y(TSCALn,)22 b(TZER)m(On,)g (TDISPn,)g(TDIMn,)h(TLMINn,)g(TLMAXn,)f(TDMINn,)i(TDMAXn,)f(TCTYPn,)227 5313 y(TCRPXn,)30 b(TCR)-10 b(VLn,)29 b(TCDL)-8 b(Tn,)30 b(TCR)m(OTn,)f(and)g(TCUNIn.)382 5581 y Fe(FTICOL\(unit,colnum,ttype)o (,tf)o(orm,)41 b(>)48 b(status\))382 5694 y(FTICLS\(unit,colnum,ncols)o (,tt)o(ype,)o(tfor)o(m,)41 b(>)48 b(status\))p eop %%Page: 93 99 93 98 bop 0 299 a Fg(9.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES) 979 b Fi(93)0 555 y Fh(5)81 b Fi(Mo)s(dify)36 b(the)h(v)m(ector)i (length)e(of)g(a)h(binary)d(table)i(column)f(\(e.g.,)41 b(c)m(hange)e(a)e(column)f(from)h(TF)m(ORMn)g(=)227 668 y('1E')31 b(to)h('20E'\).)g(The)e(v)m(ector)i(length)d(ma)m(y)i(b)s(e)f (increased)g(or)g(decreased)h(from)f(the)g(curren)m(t)h(v)-5 b(alue.)382 924 y Fe(FTMVEC\(unit,colnum,newve)o(cle)o(n,)42 b(>)47 b(status\))0 1180 y Fh(6)81 b Fi(Delete)28 b(a)g(column)f(from)g (an)g(existing)g(ASCI)s(I)f(or)i(binary)d(table)j(\(in)f(the)g(CDU\).)i (The)e(index)f(n)m(um)m(b)s(er)g(of)i(all)227 1293 y(the)k(k)m(eyw)m (ords)h(listed)d(ab)s(o)m(v)m(e)k(\(for)e(FTICOL\))f(will)e(b)s(e)j (decremen)m(ted)g(if)f(necessary)i(to)g(re\015ect)f(the)g(new)227 1406 y(p)s(osition)24 b(of)i(the)g(column\(s\))f(in)f(the)i(table.)39 b(Those)26 b(index)e(k)m(eyw)m(ords)i(that)g(refer)f(to)i(the)f (deleted)f(column)227 1519 y(will)30 b(also)i(b)s(e)g(deleted.)46 b(Note)33 b(that)g(the)g(ph)m(ysical)e(size)h(of)g(the)h(FITS)e(\014le) h(will)d(not)k(b)s(e)e(reduced)h(b)m(y)g(this)227 1632 y(op)s(eration,)d(and)f(the)h(empt)m(y)g(FITS)f(blo)s(c)m(ks)g(if)g(an) m(y)h(at)g(the)g(end)f(of)h(the)g(\014le)f(will)e(b)s(e)i(padded)g (with)f(zeros.)382 1888 y Fe(FTDCOL\(unit,colnum,)42 b(>)48 b(status\))0 2144 y Fh(7)81 b Fi(Cop)m(y)30 b(a)g(column)f(from) h(one)g(HDU)h(to)g(another)f(\(or)h(to)g(the)f(same)h(HDU\).)g(If)f (createcol)i(=)d(TR)m(UE,)i(then)f(a)227 2257 y(new)20 b(column)f(will)f(b)s(e)i(inserted)f(in)g(the)i(output)f(table,)j(at)e (p)s(osition)d(`outcolumn',)k(otherwise)e(the)h(existing)227 2370 y(output)29 b(column)e(will)f(b)s(e)i(o)m(v)m(erwritten)h(\(in)f (whic)m(h)f(case)j(it)e(m)m(ust)g(ha)m(v)m(e)i(a)f(compatible)f(datat)m (yp)s(e\).)42 b(Note)227 2483 y(that)31 b(the)g(\014rst)e(column)h(in)f (a)h(table)h(is)e(at)i(coln)m(um)f(=)g(1.)382 2739 y Fe(FTCPCL\(inunit,outunit,in)o(col)o(num,)o(outc)o(oln)o(um,c)o(reat)o (eco)o(l,)42 b(>)47 b(status\);)0 3029 y Fb(9.7.4)112 b(Read)38 b(and)h(W)-9 b(rite)35 b(Column)i(Data)g(Routines)0 3248 y Fi(These)22 b(subroutines)e(put)i(or)g(get)i(data)f(v)-5 b(alues)21 b(in)g(the)i(curren)m(t)f(ASCI)s(I)f(or)h(Binary)f(table)i (extension.)37 b(Automatic)0 3361 y(data)21 b(t)m(yp)s(e)g(con)m(v)m (ersion)f(is)f(p)s(erformed)g(for)h(n)m(umerical)f(data)i(t)m(yp)s(es)g (\(B,I,J,E,D\))h(if)d(the)i(data)g(t)m(yp)s(e)f(of)h(the)f(column)0 3474 y(\(de\014ned)32 b(b)m(y)i(the)f(TF)m(ORM)h(k)m(eyw)m(ord\))g (di\013ers)e(from)g(the)i(data)g(t)m(yp)s(e)f(of)h(the)f(calling)f (subroutine.)47 b(The)33 b(data)0 3587 y(v)-5 b(alues)29 b(are)i(also)f(scaled)f(b)m(y)h(the)g(TSCALn)f(and)g(TZER)m(On)g (header)h(v)-5 b(alues)29 b(as)h(they)g(are)h(b)s(eing)d(written)h(to)i (or)0 3700 y(read)j(from)f(the)h(FITS)f(arra)m(y)-8 b(.)51 b(The)33 b(fttscl)h(subroutine)d(MUST)j(b)s(e)f(used)g(to)h(de\014ne)f (the)h(scaling)f(parameters)0 3813 y(when)f(writing)f(data)j(to)g(the)f (table)g(or)g(to)h(o)m(v)m(erride)f(the)h(default)e(scaling)g(v)-5 b(alues)33 b(giv)m(en)g(in)f(the)h(header)g(when)0 3926 y(reading)c(from)h(the)h(table.)0 4086 y(In)h(the)i(case)g(of)f(binary) f(tables)h(with)f(v)m(ector)i(elemen)m(ts,)h(the)e('felem')g(parameter) h(de\014nes)e(the)i(starting)f(pixel)0 4199 y(within)j(the)i(elemen)m (t)h(v)m(ector.)65 b(This)37 b(parameter)h(is)f(ignored)h(with)e(ASCI)s (I)h(tables.)64 b(Similarly)-8 b(,)37 b(in)g(the)h(case)0 4312 y(of)45 b(binary)d(tables)i(the)h('nelemen)m(ts')g(parameter)g(sp) s(eci\014es)e(the)h(total)h(n)m(um)m(b)s(er)e(of)i(v)m(ector)h(v)-5 b(alues)44 b(read)g(or)0 4425 y(written)35 b(\(con)m(tin)m(uing)g(on)h (subsequen)m(t)f(ro)m(ws)g(if)g(required\))f(and)i(not)g(the)g(n)m(um)m (b)s(er)e(of)i(table)g(elemen)m(ts.)57 b(Tw)m(o)0 4538 y(sets)36 b(of)f(subroutines)f(are)h(pro)m(vided)f(to)j(get)f(the)g (column)e(data)i(whic)m(h)e(di\013er)g(in)h(the)g(w)m(a)m(y)i (unde\014ned)c(pixels)0 4650 y(are)f(handled.)41 b(The)31 b(\014rst)g(set)h(of)f(routines)g(\(FTGCV\))h(simply)d(return)h(an)h (arra)m(y)h(of)f(data)h(elemen)m(ts)g(in)e(whic)m(h)0 4763 y(unde\014ned)41 b(pixels)h(are)i(set)g(equal)f(to)i(a)f(v)-5 b(alue)43 b(sp)s(eci\014ed)f(b)m(y)h(the)h(user)f(in)f(the)i('n)m(ullv) -5 b(al')41 b(parameter.)81 b(An)0 4876 y(additional)41 b(feature)j(of)g(these)g(subroutines)d(is)i(that)h(if)e(the)i(user)e (sets)i(n)m(ullv)-5 b(al)41 b(=)i(0,)48 b(then)43 b(no)g(c)m(hec)m(ks)i (for)0 4989 y(unde\014ned)33 b(pixels)h(will)f(b)s(e)h(p)s(erformed,)i (th)m(us)f(increasing)f(the)i(sp)s(eed)e(of)i(the)g(program.)55 b(The)35 b(second)h(set)g(of)0 5102 y(routines)g(\(FTGCF\))i(returns)d (the)i(data)h(elemen)m(t)f(arra)m(y)h(and)e(in)g(addition)f(a)i (logical)g(arra)m(y)g(of)g(\015ags)g(whic)m(h)0 5215 y(de\014nes)29 b(whether)h(the)h(corresp)s(onding)d(data)j(pixel)e(is)g (unde\014ned.)0 5375 y(An)m(y)41 b(column,)h(regardless)e(of)h(it's)f (in)m(trinsic)e(datat)m(yp)s(e,)45 b(ma)m(y)c(b)s(e)f(read)h(as)g(a)g (string.)70 b(It)41 b(should)e(b)s(e)h(noted)0 5488 y(ho)m(w)m(ev)m(er) 32 b(that)f(reading)e(a)i(n)m(umeric)e(column)g(as)i(a)f(string)g(is)f (10)i(-)g(100)g(times)f(slo)m(w)m(er)h(than)f(reading)f(the)i(same)0 5601 y(column)f(as)i(a)g(n)m(um)m(b)s(er)e(due)h(to)h(the)g(large)g(o)m (v)m(erhead)g(in)f(constructing)g(the)h(formatted)g(strings.)43 b(The)31 b(displa)m(y)0 5714 y(format)26 b(of)g(the)h(returned)d (strings)h(will)e(b)s(e)j(determined)e(b)m(y)i(the)g(TDISPn)f(k)m(eyw)m (ord,)j(if)c(it)i(exists,)h(otherwise)e(b)m(y)p eop %%Page: 94 100 94 99 bop 0 299 a Fi(94)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 555 y Fi(the)e(datat)m(yp)s(e)h(of)g(the)f(column.)39 b(The)28 b(length)f(of)i(the)f(returned)f(strings)g(can)h(b)s(e)g (determined)f(with)f(the)j(ftgcdw)0 668 y(routine.)40 b(The)30 b(follo)m(wing)e(TDISPn)i(displa)m(y)e(formats)j(are)f(curren) m(tly)g(supp)s(orted:)191 923 y Fe(Iw.m)142 b(Integer)191 1036 y(Ow.m)g(Octal)46 b(integer)191 1149 y(Zw.m)142 b(Hexadecimal)45 b(integer)191 1262 y(Fw.d)142 b(Fixed)46 b(floating)g(point)191 1375 y(Ew.d)142 b(Exponential)45 b(floating)g(point)191 1488 y(Dw.d)142 b(Exponential)45 b(floating)g(point)191 1600 y(Gw.d)142 b(General;)46 b(uses)g(Fw.d)h(if)g(significance)d(not)j(lost,)g(else)f(Ew.d)0 1855 y Fi(where)37 b(w)h(is)f(the)h(width)e(in)h(c)m(haracters)i(of)f (the)h(displa)m(y)m(ed)d(v)-5 b(alues,)40 b(m)d(is)g(the)h(minim)m(um)e (n)m(um)m(b)s(er)g(of)i(digits)0 1968 y(displa)m(y)m(ed,)29 b(and)h(d)g(is)f(the)i(n)m(um)m(b)s(er)e(of)h(digits)f(to)i(the)g(righ) m(t)f(of)h(the)f(decimal.)40 b(The)30 b(.m)g(\014eld)f(is)g(optional.)0 2223 y Fh(1)81 b Fi(Put)30 b(elemen)m(ts)h(in)m(to)g(an)f(ASCI)s(I)f (or)i(binary)e(table)i(column)e(\(in)h(the)h(CDU\).)g(\(The)g(SPP)f (FSPCLS)f(routine)227 2336 y(has)38 b(an)f(additional)f(in)m(teger)i (argumen)m(t)g(after)h(the)f(V)-10 b(ALUES)37 b(c)m(haracter)i(string)e (whic)m(h)f(sp)s(eci\014es)h(the)227 2449 y(size)30 b(of)h(the)g(1st)g (dimension)c(of)k(this)e(2-D)j(CHAR)e(arra)m(y\).)382 2704 y Fe(FTPCL[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)o(ele)o(m,ne)o (leme)o(nts)o(,val)o(ues,)41 b(>)47 b(status\))0 2959 y Fh(2)81 b Fi(Put)29 b(elemen)m(ts)h(in)m(to)g(an)g(ASCI)s(I)e(or)i (binary)e(table)i(column)e(\(in)h(the)h(CDU\))g(substituting)e(the)i (appropriate)227 3072 y(FITS)i(n)m(ull)e(v)-5 b(alue)31 b(for)h(an)m(y)h(elemen)m(ts)f(that)h(are)f(equal)g(to)h(NULL)-10 b(V)g(AL.)32 b(This)e(family)h(of)h(routines)f(m)m(ust)227 3185 y(NOT)h(b)s(e)g(used)f(to)i(write)f(to)h(v)-5 b(ariable)31 b(length)g(arra)m(y)i(columns.)45 b(F)-8 b(or)33 b(ASCI)s(I)e(T)-8 b(ABLE)32 b(extensions,)h(the)227 3298 y(n)m(ull)39 b(v)-5 b(alue)41 b(de\014ned)f(b)m(y)h(the)g(previous)f(call)g(to)i(FTSNUL)e (will)f(b)s(e)h(substituted;)45 b(F)-8 b(or)42 b(in)m(teger)g(FITS)227 3410 y(columns,)c(in)e(a)i(binary)e(table)h(the)g(n)m(ull)f(v)-5 b(alue)36 b(de\014ned)h(b)m(y)g(the)g(previous)f(call)h(to)h(FTTNUL)f (will)e(b)s(e)227 3523 y(substituted;)27 b(F)-8 b(or)28 b(\015oating)g(p)s(oin)m(t)e(FITS)g(columns)g(a)i(sp)s(ecial)e(IEEE)h (NaN)h(\(Not-a-Num)m(b)s(er\))h(v)-5 b(alue)27 b(will)227 3636 y(b)s(e)j(substituted.)382 3891 y Fe(FTPCN[BIJED]\(unit,colnum)o (,fr)o(ow,f)o(elem)o(,ne)o(leme)o(nts,)o(val)o(ues,)o(null)o(val)41 b(>)48 b(status\))0 4146 y Fh(3)81 b Fi(Put)37 b(bit)g(v)-5 b(alues)37 b(in)m(to)h(a)g(binary)e(b)m(yte)i(\('B'\))i(or)d(bit)g (\('X'\))i(table)f(column)f(\(in)f(the)i(CDU\).)h(LRA)-8 b(Y)38 b(is)f(an)227 4259 y(arra)m(y)d(of)g(logical)e(v)-5 b(alues)33 b(corresp)s(onding)e(to)j(the)g(sequence)f(of)h(bits)e(to)i (b)s(e)f(written.)48 b(If)33 b(LRA)-8 b(Y)34 b(is)e(true)227 4372 y(then)g(the)g(corresp)s(onding)e(bit)h(is)g(set)h(to)h(1,)g (otherwise)e(the)h(bit)f(is)g(set)i(to)g(0.)45 b(Note)34 b(that)e(in)f(the)h(case)h(of)227 4485 y('X')g(columns,)f(FITSIO)f (will)f(write)h(to)i(all)e(8)i(bits)e(of)h(eac)m(h)i(b)m(yte)f(whether) e(they)i(are)g(formally)d(v)-5 b(alid)31 b(or)227 4598 y(not.)46 b(Th)m(us)31 b(if)g(the)h(column)f(is)f(de\014ned)h(as)h ('4X',)i(and)d(one)h(calls)f(FTPCLX)h(with)e(fbit=1)h(and)g(n)m(bit=8,) 227 4711 y(then)j(all)f(8)h(bits)f(will)e(b)s(e)i(written)g(in)m(to)h (the)g(\014rst)g(b)m(yte)g(\(as)h(opp)s(osed)e(to)i(writing)c(the)k (\014rst)e(4)h(bits)f(in)m(to)227 4824 y(the)e(\014rst)f(ro)m(w)g(and)g (then)g(the)h(next)f(4)h(bits)e(in)m(to)i(the)f(next)h(ro)m(w\),)g(ev)m (en)g(though)f(the)h(last)f(4)h(bits)e(of)i(eac)m(h)227 4937 y(b)m(yte)g(are)g(formally)e(not)i(de\014ned.)382 5191 y Fe(FTPCLX\(unit,colnum,frow,)o(fbi)o(t,nb)o(it,l)o(ray)o(,)42 b(>)47 b(status\))0 5446 y Fh(4)81 b Fi(Set)30 b(table)g(elemen)m(ts)h (in)e(a)i(column)e(as)i(unde\014ned)382 5701 y Fe (FTPCLU\(unit,colnum,frow,)o(fel)o(em,n)o(elem)o(ent)o(s,)42 b(>)47 b(status\))p eop %%Page: 95 101 95 100 bop 0 299 a Fg(9.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES) 979 b Fi(95)0 555 y Fh(5)81 b Fi(Get)34 b(elemen)m(ts)f(from)g(an)g (ASCI)s(I)f(or)h(binary)f(table)h(column)f(\(in)g(the)h(CDU\).)i(These) e(routines)f(return)g(the)227 668 y(v)-5 b(alues)29 b(of)h(the)g(table) g(column)f(arra)m(y)h(elemen)m(ts.)41 b(Unde\014ned)28 b(arra)m(y)j(elemen)m(ts)f(will)d(b)s(e)i(returned)g(with)g(a)227 781 y(v)-5 b(alue)25 b(=)h(n)m(ullv)-5 b(al,)24 b(unless)g(n)m(ullv)-5 b(al)23 b(=)i(0)h(\(or)g(=)f(')h(')g(for)f(ftgcvs\))i(in)d(whic)m(h)g (case)j(no)e(c)m(hec)m(king)i(for)e(unde\014ned)227 894 y(v)-5 b(alues)27 b(will)e(b)s(e)i(p)s(erformed.)39 b(The)27 b(ANYF)h(parameter)g(is)f(set)h(to)g(true)g(if)f(an)m(y)g(of)h(the)g (returned)f(elemen)m(ts)227 1007 y(are)f(unde\014ned.)37 b(\(Note:)i(the)26 b(ftgcl)f(routine)f(simple)f(gets)j(an)g(arra)m(y)f (of)g(logical)g(data)h(v)-5 b(alues)24 b(without)h(an)m(y)227 1120 y(c)m(hec)m(ks)39 b(for)e(unde\014ned)e(v)-5 b(alues;)40 b(use)d(the)g(ftgc\015)h(routine)e(to)i(c)m(hec)m(k)g(for)f (unde\014ned)e(logical)i(elemen)m(ts\).)227 1233 y(\(The)29 b(SPP)f(FSGCVS)g(routine)f(has)i(an)f(additional)f(in)m(teger)i (argumen)m(t)g(after)g(the)g(V)-10 b(ALUES)28 b(c)m(haracter)227 1346 y(string)i(whic)m(h)f(sp)s(eci\014es)g(the)h(size)h(of)f(the)h (1st)g(dimension)c(of)k(this)e(2-D)j(CHAR)e(arra)m(y\).)382 1595 y Fe(FTGCL\(unit,colnum,frow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42 b(>)47 b(values,status\))382 1708 y(FTGCV[SBIJEDCM]\(unit,col)o(num)o (,fro)o(w,fe)o(lem)o(,nel)o(emen)o(ts,)o(null)o(val,)41 b(>)1098 1821 y(values,anyf,status\))0 2071 y Fh(6)81 b Fi(Get)44 b(elemen)m(ts)g(and)e(n)m(ull)g(\015ags)h(from)g(an)h(ASCI) s(I)d(or)j(binary)d(table)j(column)e(\(in)g(the)i(CHDU\).)g(These)227 2184 y(routines)28 b(return)f(the)i(v)-5 b(alues)28 b(of)h(the)g(table) g(column)e(arra)m(y)j(elemen)m(ts.)40 b(An)m(y)29 b(unde\014ned)d(arra) m(y)k(elemen)m(ts)227 2297 y(will)k(ha)m(v)m(e)k(the)f(corresp)s (onding)e(\015agv)-5 b(als)36 b(elemen)m(t)i(set)f(equal)f(to)i(.TR)m (UE.)f(The)f(ANYF)i(parameter)f(is)227 2409 y(set)30 b(to)g(true)g(if)e(an)m(y)i(of)f(the)h(returned)e(elemen)m(ts)i(are)g (unde\014ned.)38 b(\(The)29 b(SPP)f(FSGCFS)h(routine)g(has)g(an)227 2522 y(additional)24 b(in)m(teger)j(argumen)m(t)f(after)h(the)f(V)-10 b(ALUES)26 b(c)m(haracter)i(string)d(whic)m(h)f(sp)s(eci\014es)h(the)i (size)e(of)i(the)227 2635 y(1st)k(dimension)d(of)j(this)e(2-D)i(CHAR)g (arra)m(y\).)382 2885 y Fe(FTGCF[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o (ow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42 b(>)1193 2998 y(values,flagvals,anyf,stat)o(us\))0 3247 y Fh(7)81 b Fi(Get)29 b(an)f(arbitrary)f(data)i(subsection)e(from)h(an)g (N-dimensional)e(arra)m(y)j(in)e(a)h(binary)f(table)h(v)m(ector)i (column.)227 3360 y(Unde\014ned)k(pixels)f(in)h(the)i(arra)m(y)g(will)c (b)s(e)j(set)h(equal)e(to)i(the)g(v)-5 b(alue)35 b(of)g('n)m(ullv)-5 b(al',)35 b(unless)e(n)m(ullv)-5 b(al=0)33 b(in)227 3473 y(whic)m(h)f(case)j(no)e(testing)h(for)f(unde\014ned)e(pixels)h(will)e (b)s(e)j(p)s(erformed.)49 b(The)32 b(\014rst)h(and)g(last)g(ro)m(ws)h (in)e(the)227 3586 y(table)27 b(to)g(b)s(e)f(read)g(are)h(sp)s (eci\014ed)d(b)m(y)j(fpixels\(naxis+1\))d(and)i(lpixels\(naxis+1\),)f (and)h(hence)g(are)h(treated)227 3699 y(as)f(the)f(next)h(higher)e (dimension)f(of)i(the)h(FITS)e(N-dimensional)f(arra)m(y)-8 b(.)40 b(The)25 b(INCS)f(parameter)i(sp)s(eci\014es)227 3812 y(the)31 b(sampling)d(in)m(terv)-5 b(al)30 b(in)f(eac)m(h)i (dimension)d(b)s(et)m(w)m(een)j(the)g(data)g(elemen)m(ts)f(that)h(will) d(b)s(e)i(returned.)382 4062 y Fe(FTGSV[BIJED]\(unit,colnum)o(,na)o (xis,)o(naxe)o(s,f)o(pixe)o(ls,l)o(pix)o(els,)o(incs)o(,nu)o(llva)o(l,) 42 b(>)1002 4175 y(array,anyf,status\))0 4424 y Fh(8)81 b Fi(Get)29 b(an)f(arbitrary)f(data)i(subsection)e(from)h(an)g (N-dimensional)e(arra)m(y)j(in)e(a)h(binary)f(table)h(v)m(ector)i (column.)227 4537 y(An)m(y)39 b(Unde\014ned)e(pixels)g(in)h(the)h(arra) m(y)g(will)d(ha)m(v)m(e)k(the)f(corresp)s(onding)e('\015agv)-5 b(als')39 b(elemen)m(t)g(set)g(equal)227 4650 y(to)d(.TR)m(UE.)f(The)f (\014rst)g(and)g(last)h(ro)m(ws)g(in)e(the)i(table)g(to)g(b)s(e)g(read) f(are)h(sp)s(eci\014ed)e(b)m(y)i(fpixels\(naxis+1\))227 4763 y(and)k(lpixels\(naxis+1\),)g(and)f(hence)i(are)f(treated)i(as)e (the)g(next)h(higher)e(dimension)e(of)k(the)f(FITS)g(N-)227 4876 y(dimensional)d(arra)m(y)-8 b(.)66 b(The)38 b(INCS)g(parameter)h (sp)s(eci\014es)e(the)h(sampling)f(in)m(terv)-5 b(al)38 b(in)f(eac)m(h)j(dimension)227 4989 y(b)s(et)m(w)m(een)31 b(the)g(data)g(elemen)m(ts)g(that)g(will)c(b)s(e)j(returned.)382 5238 y Fe(FTGSF[BIJED]\(unit,colnum)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o (ls,l)o(pix)o(els,)o(incs)o(,)42 b(>)1002 5351 y (array,flagvals,anyf,statu)o(s\))0 5601 y Fh(9)81 b Fi(Get)33 b(bit)f(v)-5 b(alues)33 b(from)f(a)h(b)m(yte)h(\('B'\))g(or)f(bit)f (\(`X`\))i(table)f(column)f(\(in)g(the)h(CDU\).)g(LRA)-8 b(Y)34 b(is)e(an)g(arra)m(y)i(of)227 5714 y(logical)k(v)-5 b(alues)38 b(corresp)s(onding)f(to)i(the)g(sequence)f(of)h(bits)f(to)h (b)s(e)f(read.)65 b(If)38 b(LRA)-8 b(Y)39 b(is)e(true)i(then)f(the)p eop %%Page: 96 102 96 101 bop 0 299 a Fi(96)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)227 555 y Fi(corresp)s(onding)j(bit)g(w)m(as)h(set)h(to)g(1,)h(otherwise)e (the)g(bit)g(w)m(as)g(set)h(to)g(0.)53 b(Note)35 b(that)g(in)e(the)i (case)g(of)f('X')227 668 y(columns,)40 b(FITSIO)e(will)e(read)i(all)g (8)h(bits)f(of)h(eac)m(h)h(b)m(yte)f(whether)f(they)h(are)g(formally)f (v)-5 b(alid)37 b(or)h(not.)227 781 y(Th)m(us)c(if)f(the)i(column)e(is) g(de\014ned)g(as)i('4X',)h(and)d(one)i(calls)f(FTGCX)g(with)f(fbit=1)h (and)f(n)m(bit=8,)i(then)227 894 y(all)28 b(8)i(bits)e(will)e(b)s(e)j (read)g(from)g(the)g(\014rst)f(b)m(yte)i(\(as)g(opp)s(osed)e(to)i (reading)e(the)i(\014rst)e(4)i(bits)e(from)g(the)i(\014rst)227 1007 y(ro)m(w)g(and)e(then)h(the)h(\014rst)e(4)i(bits)e(from)h(the)g (next)g(ro)m(w\),)i(ev)m(en)f(though)f(the)g(last)g(4)h(bits)e(of)h (eac)m(h)i(b)m(yte)f(are)227 1120 y(formally)f(not)i(de\014ned.)382 1385 y Fe(FTGCX\(unit,colnum,frow,f)o(bit)o(,nbi)o(t,)42 b(>)47 b(lray,status\))0 1650 y Fh(10)f Fi(Read)31 b(an)m(y)g (consecutiv)m(e)g(set)g(of)g(bits)f(from)g(an)g('X')i(or)e('B')i (column)d(and)h(in)m(terpret)g(them)h(as)g(an)f(unsigned)227 1763 y(n-bit)j(in)m(teger.)53 b(NBIT)35 b(m)m(ust)f(b)s(e)f(less)h (than)g(or)g(equal)g(to)h(16)g(when)f(calling)e(FTGCXI,)j(and)f(less)f (than)227 1876 y(or)f(equal)f(to)h(32)g(when)e(calling)g(FTGCXJ;)i (there)f(is)g(no)g(limit)e(on)j(the)f(v)-5 b(alue)31 b(of)h(NBIT)f(for)g(FTGCXD,)227 1989 y(but)38 b(the)h(returned)e (double)h(precision)e(v)-5 b(alue)38 b(only)g(has)g(48)i(bits)d(of)i (precision)e(on)h(most)h(32-bit)g(w)m(ord)227 2102 y(mac)m(hines.)63 b(The)37 b(NBITS)g(bits)g(are)h(in)m(terpreted)f(as)h(an)g(unsigned)d (in)m(teger)k(unless)d(NBITS)h(=)g(16)i(\(in)227 2215 y(FTGCXI\))e(or)g(32)g(\(in)f(FTGCXJ\))g(in)f(whic)m(h)h(case)h(the)g (string)f(of)g(bits)g(are)h(in)m(terpreted)e(as)i(16-bit)g(or)227 2328 y(32-bit)j(2's)g(complemen)m(t)g(signed)e(in)m(tegers.)68 b(If)39 b(NR)m(O)m(WS)i(is)d(greater)j(than)e(1)h(then)f(the)h(same)g (set)g(of)227 2441 y(bits)33 b(will)e(b)s(e)i(read)h(from)f(sequen)m (tial)g(ro)m(ws)h(in)e(the)i(table)f(starting)h(with)e(ro)m(w)i(FR)m(O) m(W.)h(Note)g(that)g(the)227 2554 y(n)m(um)m(b)s(ering)26 b(con)m(v)m(en)m(tion)j(used)e(here)g(for)h(the)g(FBIT)f(parameter)i (adopts)e(1)h(for)g(the)g(\014rst)f(elemen)m(t)h(of)g(the)227 2667 y(v)m(ector)k(of)f(bits;)e(this)h(is)f(the)i(Most)g(Signi\014can)m (t)e(Bit)h(of)h(the)f(in)m(teger)h(v)-5 b(alue.)382 2932 y Fe(FTGCX[IJD]\(unit,colnum,f)o(row)o(,nro)o(ws,f)o(bit)o(,nbi)o(t,)42 b(>)47 b(array,status\))0 3197 y Fh(11)f Fi(Get)37 b(the)e(descriptor)g (for)g(a)h(v)-5 b(ariable)35 b(length)g(column)f(in)g(a)i(binary)e (table.)56 b(The)35 b(descriptor)g(consists)g(of)227 3310 y(2)d(in)m(teger)f(parameters:)42 b(the)31 b(n)m(um)m(b)s(er)f(of) h(elemen)m(ts)h(in)d(the)i(arra)m(y)h(and)e(the)h(starting)g(o\013set)h (relativ)m(e)f(to)227 3423 y(the)d(start)f(of)g(the)h(heap.)39 b(The)27 b(\014rst)f(routine)g(returns)g(a)h(single)f(descriptor)g (whereas)h(the)g(second)g(routine)227 3536 y(returns)i(the)i (descriptors)e(for)h(a)h(range)g(of)f(ro)m(ws)h(in)e(the)h(table.)382 3801 y Fe(FTGDES\(unit,colnum,rownu)o(m,)41 b(>)48 b (nelements,offset,status\))382 3914 y(FFGDESSunit,colnum,first)o(row)o (,nro)o(ws)42 b(>)47 b(nelements,offset,)c(status\))0 4179 y Fh(12)j Fi(Put)29 b(the)g(descriptor)f(for)h(a)h(v)-5 b(ariable)28 b(length)h(column)f(in)g(a)h(binary)f(table.)40 b(This)27 b(subroutine)h(can)h(b)s(e)g(used)227 4292 y(in)23 b(conjunction)h(with)f(FTGDES)h(to)h(enable)f(2)h(or)f(more)g (arra)m(ys)h(to)g(p)s(oin)m(t)e(to)i(the)g(same)g(storage)g(lo)s (cation)227 4405 y(to)31 b(sa)m(v)m(e)h(storage)g(space)f(if)e(the)i (arra)m(ys)g(are)g(iden)m(tical.)382 4671 y Fe (FTPDES\(unit,colnum,rownu)o(m,n)o(elem)o(ents)o(,of)o(fset)o(,)42 b(>)47 b(status\))0 5011 y Fd(9.8)135 b(Ro)l(w)46 b(Selection)g(and)f (Calculator)h(Routines)0 5262 y Fi(These)21 b(routines)e(all)h(parse)h (and)f(ev)-5 b(aluate)22 b(an)e(input)f(string)h(con)m(taining)h(a)g (user)f(de\014ned)g(arithmetic)g(expression.)0 5375 y(The)29 b(\014rst)f(3)i(routines)e(select)i(ro)m(ws)f(in)f(a)i(FITS)e(table,)i (based)f(on)g(whether)g(the)g(expression)f(ev)-5 b(aluates)30 b(to)g(true)0 5488 y(\(not)e(equal)e(to)i(zero\))g(or)f(false)g (\(zero\).)41 b(The)27 b(other)g(routines)f(ev)-5 b(aluate)28 b(the)f(expression)f(and)g(calculate)i(a)f(v)-5 b(alue)0 5601 y(for)35 b(eac)m(h)h(ro)m(w)g(of)f(the)h(table.)55 b(The)35 b(allo)m(w)m(ed)g(expression)f(syn)m(tax)h(is)g(describ)s(ed)e (in)h(the)h(ro)m(w)h(\014lter)e(section)h(in)0 5714 y(the)i(earlier)f (`Extended)g(File)g(Name)h(Syn)m(tax')g(c)m(hapter)h(of)f(this)e(do)s (cumen)m(t.)60 b(The)36 b(expression)g(ma)m(y)h(also)g(b)s(e)p eop %%Page: 97 103 97 102 bop 0 299 a Fg(9.8.)72 b(R)m(O)m(W)31 b(SELECTION)e(AND)i (CALCULA)-8 b(TOR)29 b(R)m(OUTINES)1382 b Fi(97)0 555 y(written)27 b(to)j(a)e(text)i(\014le,)e(and)g(the)h(name)f(of)h(the)f (\014le,)g(prep)s(ended)f(with)g(a)i('@')f(c)m(haracter)i(ma)m(y)f(b)s (e)f(supplied)d(for)0 668 y(the)34 b('expr')g(parameter)g(\(e.g.)53 b('@\014lename.txt'\).)e(The)34 b(expression)e(in)h(the)h(\014le)f(can) h(b)s(e)f(arbitrarily)e(complex)0 781 y(and)k(extend)h(o)m(v)m(er)h(m)m (ultiple)c(lines)h(of)i(the)f(\014le.)56 b(Lines)35 b(that)h(b)s(egin)e (with)g(2)i(slash)f(c)m(haracters)i(\('//'\))h(will)33 b(b)s(e)0 894 y(ignored)c(and)h(ma)m(y)h(b)s(e)f(used)g(to)h(add)e (commen)m(ts)j(to)f(the)f(\014le.)0 1171 y Fh(1)81 b Fi(Ev)-5 b(aluate)37 b(a)g(b)s(o)s(olean)f(expression)g(o)m(v)m(er)i (the)g(indicated)d(ro)m(ws,)k(returning)c(an)i(arra)m(y)h(of)f(\015ags) g(indicating)227 1284 y(whic)m(h)29 b(ro)m(ws)i(ev)-5 b(aluated)30 b(to)h(TR)m(UE/F)-10 b(ALSE)430 1560 y Fe (FTFROW\(unit,expr,firstr)o(ow,)41 b(nrows,)46 b(>)i(n_good_rows,)c (row_status,)h(status\))0 1837 y Fh(2)81 b Fi(Find)28 b(the)j(\014rst)f(ro)m(w)g(whic)m(h)f(satis\014es)h(the)h(input)d(b)s (o)s(olean)h(expression)430 2114 y Fe(FTFFRW\(unit,)44 b(expr,)i(>)i(rownum,)e(status\))0 2391 y Fh(3)81 b Fi(Ev)-5 b(aluate)34 b(an)g(expression)g(on)g(all)f(ro)m(ws)i(of)f(a)h(table.)53 b(If)34 b(the)g(input)f(and)h(output)g(\014les)f(are)i(not)g(the)f (same,)227 2503 y(cop)m(y)39 b(the)f(TR)m(UE)g(ro)m(ws)h(to)f(the)h (output)e(\014le.)63 b(If)38 b(the)g(\014les)f(are)i(the)f(same,)j (delete)d(the)g(F)-10 b(ALSE)38 b(ro)m(ws)227 2616 y(\(preserv)m(e)31 b(the)g(TR)m(UE)f(ro)m(ws\).)430 2893 y Fe(FTSROW\(inunit,)43 b(outunit,)j(expr,)g(>)i(status\))0 3170 y Fh(4)81 b Fi(Calculate)26 b(an)h(expression)e(for)i(the)f(indicated)g(ro)m(ws)g (of)h(a)g(table,)h(returning)d(the)i(results,)f(cast)i(as)f(datat)m(yp) s(e)227 3283 y(\(TSHOR)-8 b(T,)32 b(TDOUBLE,)h(etc\),)h(in)d(arra)m(y) -8 b(.)48 b(If)31 b(n)m(ulv)-5 b(al==NULL,)31 b(UNDEFs)i(will)c(b)s(e)j (zero)s(ed)g(out.)47 b(F)-8 b(or)227 3396 y(v)m(ector)37 b(results,)e(the)g(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)h(returned)d(ma)m (y)j(b)s(e)e(less)g(than)h(nelemen)m(ts)f(if)g(nelemen)m(ts)h(is)227 3509 y(not)30 b(an)g(ev)m(en)h(m)m(ultiple)c(of)j(the)g(result)f (dimension.)38 b(Call)28 b(FTTEXP)i(to)g(obtain)g(the)g(dimensions)d (of)j(the)227 3621 y(results.)430 3898 y Fe(FTCROW\(unit,datatype,ex)o (pr,)o(firs)o(trow)o(,ne)o(leme)o(nts,)o(nul)o(val,)41 b(>)620 4011 y(array,anynul,status\))0 4288 y Fh(5)81 b Fi(Ev)-5 b(aluate)32 b(an)h(expression)e(and)i(write)e(the)i(result)f (either)g(to)i(a)f(column)e(\(if)h(the)h(expression)e(is)h(a)h (function)227 4401 y(of)d(other)g(columns)f(in)f(the)i(table\))g(or)g (to)g(a)h(k)m(eyw)m(ord)f(\(if)f(the)h(expression)e(ev)-5 b(aluates)31 b(to)f(a)g(constan)m(t)i(and)227 4514 y(is)e(not)g(a)h (function)e(of)i(other)f(columns)g(in)f(the)h(table\).)41 b(In)30 b(the)h(former)e(case,)j(the)f(parName)f(parameter)227 4627 y(is)39 b(the)h(name)f(of)h(the)g(column)e(\(whic)m(h)h(ma)m(y)h (or)f(ma)m(y)h(not)g(already)f(exist\))h(in)m(to)f(whic)m(h)g(to)h (write)f(the)227 4739 y(results,)e(and)g(parInfo)e(con)m(tains)i(an)g (optional)e(TF)m(ORM)i(k)m(eyw)m(ord)g(v)-5 b(alue)37 b(if)e(a)i(new)f(column)g(is)f(b)s(eing)227 4852 y(created.)42 b(If)28 b(a)h(TF)m(ORM)h(v)-5 b(alue)28 b(is)g(not)h(sp)s(eci\014ed)f (then)g(a)i(default)e(format)h(will)e(b)s(e)h(used,)h(dep)s(ending)d (on)227 4965 y(the)35 b(expression.)53 b(If)34 b(the)h(expression)e(ev) -5 b(aluates)36 b(to)f(a)g(constan)m(t,)i(then)e(the)g(result)e(will)f (b)s(e)i(written)g(to)227 5078 y(the)28 b(k)m(eyw)m(ord)g(name)f(giv)m (en)g(b)m(y)h(the)f(parName)h(parameter,)h(and)d(the)i(parInfo)e (parameter)i(ma)m(y)g(b)s(e)f(used)227 5191 y(to)k(supply)d(an)i (optional)g(commen)m(t)h(for)f(the)g(k)m(eyw)m(ord.)42 b(If)29 b(the)i(k)m(eyw)m(ord)g(do)s(es)f(not)g(already)g(exist,)g (then)227 5304 y(the)g(name)f(of)h(the)g(k)m(eyw)m(ord)g(m)m(ust)f(b)s (e)g(preceded)g(with)f(a)i('#')f(c)m(haracter,)j(otherwise)d(the)g (result)g(will)e(b)s(e)227 5417 y(written)j(to)h(a)g(column)e(with)g (that)i(name.)430 5694 y Fe(FTCALC\(inunit,)43 b(expr,)k(outunit,)e (parName,)h(parInfo,)f(>)j(status\))p eop %%Page: 98 104 98 103 bop 0 299 a Fi(98)1319 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 555 y Fh(6)81 b Fi(This)37 b(calculator)j(routine)f(is)f(similar)f(to)j (the)g(previous)e(routine,)j(except)g(that)f(the)g(expression)e(is)h (only)227 668 y(ev)-5 b(aluated)41 b(o)m(v)m(er)g(the)f(sp)s(eci\014ed) f(ro)m(w)h(ranges.)70 b(nranges)39 b(sp)s(eci\014es)g(the)h(n)m(um)m(b) s(er)f(of)h(ro)m(w)h(ranges,)i(and)227 781 y(\014rstro)m(w)30 b(and)g(lastro)m(w)g(giv)m(e)h(the)g(starting)f(and)g(ending)f(ro)m(w)h (n)m(um)m(b)s(er)f(of)i(eac)m(h)g(range.)430 1031 y Fe (FTCALC_RNG\(inunit,)42 b(expr,)47 b(outunit,)e(parName,)h(parInfo,)573 1144 y(nranges,)f(firstrow,)h(lastrow,)f(>)j(status\))0 1394 y Fh(7)81 b Fi(Ev)-5 b(aluate)30 b(the)h(giv)m(en)f(expression)f (and)h(return)f(information)g(on)h(the)h(result.)430 1643 y Fe(FTTEXP\(unit,)44 b(expr,)i(>)i(datatype,)d(nelem,)h(naxis,)g (naxes,)g(status\))0 1976 y Fd(9.9)135 b(Celestial)48 b(Co)t(ordinate)e(System)f(Subroutines)0 2226 y Fi(The)36 b(FITS)g(comm)m(unit)m(y)g(has)g(adopted)h(a)g(set)g(of)g(k)m(eyw)m (ord)g(con)m(v)m(en)m(tions)g(that)g(de\014ne)f(the)h(transformations)0 2339 y(needed)30 b(to)i(con)m(v)m(ert)g(b)s(et)m(w)m(een)f(pixel)e(lo)s (cations)h(in)f(an)i(image)g(and)f(the)g(corresp)s(onding)f(celestial)h (co)s(ordinates)0 2452 y(on)25 b(the)h(sky)-8 b(,)27 b(or)e(more)g(generally)-8 b(,)27 b(that)f(de\014ne)e(w)m(orld)g(co)s (ordinates)i(that)f(are)h(to)g(b)s(e)f(asso)s(ciated)h(with)e(an)m(y)i (pixel)0 2564 y(lo)s(cation)34 b(in)f(an)i(n-dimensional)c(FITS)j(arra) m(y)-8 b(.)54 b(CFITSIO)33 b(is)g(distributed)f(with)h(a)i(couple)e(of) i(self-con)m(tained)0 2677 y(W)-8 b(orld)27 b(Co)s(ordinate)f(System)g (\(W)m(CS\))i(routines,)f(ho)m(w)m(ev)m(er,)i(these)f(routines)e(DO)h (NOT)f(supp)s(ort)f(all)h(the)h(latest)0 2790 y(W)m(CS)38 b(con)m(v)m(en)m(tions,)j(so)e(it)f(is)f(STR)m(ONGL)-8 b(Y)38 b(RECOMMENDED)h(that)f(soft)m(w)m(are)i(dev)m(elop)s(ers)d(use)h (a)h(more)0 2903 y(robust)30 b(external)g(W)m(CS)g(library)-8 b(.)39 b(Sev)m(eral)30 b(recommended)g(libraries)e(are:)95 3153 y Fe(WCSLIB)47 b(-)95 b(supported)45 b(by)i(Mark)g(Calabretta)95 3266 y(WCSTools)f(-)h(supported)f(by)h(Doug)g(Mink)95 3379 y(AST)g(library)f(-)i(developed)d(by)i(the)g(U.K.)g(Starlink)e (project)0 3629 y Fi(More)30 b(information)d(ab)s(out)i(the)g(W)m(CS)g (k)m(eyw)m(ord)h(con)m(v)m(en)m(tions)g(and)e(links)f(to)j(all)e(of)h (these)g(W)m(CS)g(libraries)e(can)0 3742 y(b)s(e)j(found)f(on)h(the)h (FITS)e(Supp)s(ort)g(O\016ce)h(w)m(eb)g(site)h(at)g(h)m (ttp://\014ts.gsfc.nasa.go)m(v)j(under)29 b(the)h(W)m(CS)h(link.)0 3902 y(The)i(functions)g(pro)m(vided)g(in)f(these)j(external)e(W)m(CS)h (libraries)e(will)f(need)j(access)h(to)g(the)f(W)m(CS)g(information)0 4015 y(con)m(tained)g(in)e(the)i(FITS)f(\014le)g(headers.)51 b(One)33 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)g(to)f(pass)g(this)e (information)g(to)j(the)f(extermal)0 4128 y(library)j(is)i(to)i(use)e (FITSIO)g(to)h(cop)m(y)h(the)f(header)f(k)m(eyw)m(ords)h(in)m(to)g(one) g(long)f(c)m(haracter)j(string,)f(and)e(then)0 4240 y(pass)29 b(this)g(string)g(to)h(an)g(in)m(terface)g(routine)f(in)g(the)h (external)f(library)f(that)i(will)d(extract)32 b(the)e(necessary)g(W)m (CS)0 4353 y(information)f(\(e.g.,)j(see)f(the)f(astFitsChan)g(and)g (astPutCards)g(routines)f(in)g(the)i(Starlink)d(AST)i(library\).)0 4514 y(The)24 b(follo)m(wing)g(FITSIO)f(routines)h(DO)h(NOT)f(supp)s (ort)f(the)i(more)g(recen)m(t)h(W)m(CS)f(con)m(v)m(en)m(tions)h(that)g (ha)m(v)m(e)g(b)s(een)0 4626 y(appro)m(v)m(ed)37 b(as)h(part)f(of)g (the)h(FITS)e(standard.)61 b(Consequen)m(tly)-8 b(,)38 b(the)g(follo)m(wing)d(routines)i(ARE)g(NO)m(W)h(DEP-)0 4739 y(RECA)-8 b(TED.)29 b(It)f(is)g(STR)m(ONGL)-8 b(Y)28 b(RECOMMENDED)h(that)g(soft)m(w)m(are)h(dev)m(elop)s(ers)e(not)h(use)f (these)h(routines,)0 4852 y(and)h(instead)f(use)h(an)h(external)f(W)m (CS)g(library)-8 b(,)29 b(as)i(describ)s(ed)d(ab)s(o)m(v)m(e.)0 5012 y(These)21 b(routines)f(are)h(included)d(mainly)h(for)i(bac)m(kw)m (ard)g(compatibilit)m(y)f(with)f(existing)h(soft)m(w)m(are.)39 b(They)21 b(supp)s(ort)0 5125 y(the)30 b(follo)m(wing)f(standard)g(map) g(pro)5 b(jections:)40 b(-SIN,)30 b(-T)-8 b(AN,)31 b(-AR)m(C,)g(-NCP)-8 b(,)30 b(-GLS,)g(-MER,)h(and)e(-AIT)h(\(these)0 5238 y(are)f(the)g(legal)f(v)-5 b(alues)28 b(for)g(the)h(co)s(ordt)m(yp)s(e) f(parameter\).)41 b(These)28 b(routines)g(are)h(based)f(on)g(similar)e (functions)h(in)0 5351 y(Classic)i(AIPS.)h(All)f(the)i(angular)e(quan)m (tities)h(are)h(giv)m(en)f(in)f(units)g(of)h(degrees.)0 5601 y Fh(1)81 b Fi(Get)22 b(the)g(v)-5 b(alues)20 b(of)i(all)e(the)i (standard)f(FITS)f(celestial)h(co)s(ordinate)h(system)f(k)m(eyw)m(ords) h(from)f(the)h(header)f(of)h(a)227 5714 y(FITS)j(image)h(\(i.e.,)h(the) e(primary)f(arra)m(y)i(or)f(an)h(image)f(extension\).)39 b(These)26 b(v)-5 b(alues)24 b(ma)m(y)i(then)g(b)s(e)e(passed)p eop %%Page: 99 105 99 104 bop 0 299 a Fg(9.10.)73 b(FILE)30 b(CHECKSUM)f(SUBR)m(OUTINES) 2080 b Fi(99)227 555 y(to)39 b(the)e(subroutines)f(that)i(p)s(erform)e (the)i(co)s(ordinate)f(transformations.)62 b(If)37 b(an)m(y)h(or)g(all) e(of)i(the)g(W)m(CS)227 668 y(k)m(eyw)m(ords)32 b(are)f(not)g(presen)m (t,)h(then)f(default)f(v)-5 b(alues)30 b(will)f(b)s(e)h(returned.)41 b(If)31 b(the)g(\014rst)g(co)s(ordinate)f(axis)h(is)227 781 y(the)e(declination-lik)m(e)e(co)s(ordinate,)i(then)f(this)f (routine)h(will)e(sw)m(ap)i(them)h(so)g(that)g(the)g(longitudinal-lik)m (e)227 894 y(co)s(ordinate)h(is)g(returned)f(as)i(the)f(\014rst)g (axis.)227 1045 y(If)35 b(the)h(\014le)e(uses)h(the)g(new)m(er)h('CDj)p 1454 1045 28 4 v 32 w(i')f(W)m(CS)g(transformation)g(matrix)g(k)m(eyw)m (ords)g(instead)g(of)g(old)g(st)m(yle)227 1158 y('CDEL)-8 b(Tn')37 b(and)f('CR)m(OT)-8 b(A2')38 b(k)m(eyw)m(ords,)h(then)e(this)e (routine)h(will)e(calculate)k(and)e(return)g(the)h(v)-5 b(alues)227 1271 y(of)33 b(the)g(equiv)-5 b(alen)m(t)33 b(old-st)m(yle)f(k)m(eyw)m(ords.)49 b(Note)34 b(that)g(the)f(con)m(v)m (ersion)g(from)f(the)i(new-st)m(yle)f(k)m(eyw)m(ords)227 1383 y(to)f(the)f(old-st)m(yle)f(v)-5 b(alues)30 b(is)g(sometimes)g (only)g(an)h(appro)m(ximation,)f(so)g(if)g(the)h(appro)m(ximation)f(is) f(larger)227 1496 y(than)37 b(an)h(in)m(ternally)d(de\014ned)h (threshold)g(lev)m(el,)j(then)e(CFITSIO)f(will)f(still)g(return)h(the)i (appro)m(ximate)227 1609 y(W)m(CS)f(k)m(eyw)m(ord)g(v)-5 b(alues,)38 b(but)e(will)e(also)j(return)e(with)h(status)h(=)f(506,)k (to)e(w)m(arn)e(the)h(calling)e(program)227 1722 y(that)30 b(appro)m(ximations)d(ha)m(v)m(e)j(b)s(een)e(made.)40 b(It)29 b(is)f(then)g(up)g(to)h(the)g(calling)f(program)g(to)h(decide)g (whether)227 1835 y(the)34 b(appro)m(ximations)e(are)i(su\016cien)m (tly)e(accurate)k(for)d(the)h(particular)d(application,)i(or)h(whether) f(more)227 1948 y(precise)d(W)m(CS)g(transformations)g(m)m(ust)g(b)s(e) g(p)s(erformed)f(using)g(new-st)m(yle)h(W)m(CS)h(k)m(eyw)m(ords)f (directly)-8 b(.)382 2209 y Fe(FTGICS\(unit,)44 b(>)k (xrval,yrval,xrpix,yrpix)o(,xin)o(c,yi)o(nc,)o(rot,)o(coor)o(dty)o (pe,s)o(tatu)o(s\))0 2470 y Fh(2)81 b Fi(Get)34 b(the)f(v)-5 b(alues)32 b(of)h(all)f(the)h(standard)f(FITS)h(celestial)f(co)s (ordinate)h(system)g(k)m(eyw)m(ords)g(from)g(the)g(header)227 2583 y(of)j(a)h(FITS)e(table)g(where)h(the)g(X)g(and)f(Y)h(\(or)g(RA)g (and)g(DEC)f(co)s(ordinates)h(are)g(stored)g(in)f(2)h(separate)227 2695 y(columns)31 b(of)h(the)g(table.)45 b(These)31 b(v)-5 b(alues)31 b(ma)m(y)i(then)e(b)s(e)h(passed)f(to)h(the)g(subroutines)e (that)i(p)s(erform)f(the)227 2808 y(co)s(ordinate)f(transformations.) 382 3069 y Fe(FTGTCS\(unit,xcol,ycol,)42 b(>)716 3182 y(xrval,yrval,xrpix,yrpix,)o(xinc)o(,yi)o(nc,r)o(ot,c)o(oor)o(dtyp)o (e,st)o(atu)o(s\))0 3443 y Fh(3)81 b Fi(Calculate)40 b(the)i(celestial)e(co)s(ordinate)h(corresp)s(onding)e(to)j(the)f (input)e(X)i(and)g(Y)g(pixel)e(lo)s(cation)i(in)f(the)227 3556 y(image.)382 3817 y Fe(FTWLDP\(xpix,ypix,xrval,y)o(rva)o(l,xr)o (pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 3929 y(coordtype,)45 b(>)i(xpos,ypos,status\))0 4190 y Fh(4)81 b Fi(Calculate)40 b(the)i(X)f(and)f(Y)h(pixel)f(lo)s(cation)g(corresp)s (onding)f(to)j(the)f(input)e(celestial)i(co)s(ordinate)g(in)f(the)227 4303 y(image.)382 4564 y Fe(FTXYPX\(xpos,ypos,xrval,y)o(rva)o(l,xr)o (pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 4677 y(coordtype,)45 b(>)i(xpix,ypix,status\))0 5012 y Fd(9.10)136 b(File)45 b(Chec)l(ksum)g(Subroutines)0 5262 y Fi(The)33 b(follo)m(wing)e(routines)h(either)h(compute)g(or)h(v)-5 b(alidate)32 b(the)i(c)m(hec)m(ksums)f(for)g(the)h(CHDU.)g(The)e(D)m(A) -8 b(T)g(ASUM)0 5375 y(k)m(eyw)m(ord)33 b(is)e(used)g(to)i(store)f(the) h(n)m(umerical)d(v)-5 b(alue)32 b(of)g(the)g(32-bit,)h(1's)g(complemen) m(t)f(c)m(hec)m(ksum)h(for)f(the)g(data)0 5488 y(unit)25 b(alone.)39 b(If)25 b(there)h(is)g(no)f(data)i(unit)e(then)g(the)h(v)-5 b(alue)26 b(is)f(set)h(to)h(zero.)40 b(The)26 b(n)m(umerical)e(v)-5 b(alue)26 b(is)f(stored)h(as)g(an)0 5601 y(ASCI)s(I)20 b(string)h(of)i(digits,)f(enclosed)g(in)e(quotes,)25 b(b)s(ecause)d(the)g(v)-5 b(alue)22 b(ma)m(y)g(b)s(e)f(to)s(o)i(large)f (to)h(represen)m(t)f(as)g(a)h(32-bit)0 5714 y(signed)k(in)m(teger.)40 b(The)27 b(CHECKSUM)g(k)m(eyw)m(ord)i(is)e(used)g(to)h(store)h(the)f (ASCI)s(I)e(enco)s(ded)i(COMPLEMENT)f(of)p eop %%Page: 100 106 100 105 bop 0 299 a Fi(100)1274 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 555 y Fi(the)c(c)m(hec)m(ksum)h(for)f(the)h(en)m(tire)f(HDU.)h(Storing) e(the)i(complemen)m(t,)g(rather)f(than)g(the)h(actual)f(c)m(hec)m (ksum,)i(forces)0 668 y(the)k(c)m(hec)m(ksum)h(for)f(the)h(whole)e(HDU) i(to)g(equal)f(zero.)47 b(If)31 b(the)i(\014le)e(has)h(b)s(een)f(mo)s (di\014ed)f(since)i(the)g(c)m(hec)m(ksums)0 781 y(w)m(ere)39 b(computed,)i(then)e(the)g(HDU)g(c)m(hec)m(ksum)h(will)c(usually)g(not) j(equal)g(zero.)66 b(These)39 b(c)m(hec)m(ksum)g(k)m(eyw)m(ord)0 894 y(con)m(v)m(en)m(tions)33 b(are)g(based)f(on)g(a)g(pap)s(er)f(b)m (y)h(Rob)g(Seaman)g(published)d(in)i(the)h(pro)s(ceedings)f(of)h(the)h (AD)m(ASS)f(IV)0 1007 y(conference)f(in)e(Baltimore)h(in)g(No)m(v)m(em) m(b)s(er)h(1994)h(and)e(a)h(later)f(revision)f(in)g(June)g(1995.)0 1237 y Fh(1)81 b Fi(Compute)33 b(and)g(write)g(the)h(D)m(A)-8 b(T)g(ASUM)35 b(and)e(CHECKSUM)g(k)m(eyw)m(ord)h(v)-5 b(alues)33 b(for)g(the)h(CHDU)g(in)m(to)g(the)227 1350 y(curren)m(t)25 b(header.)38 b(The)24 b(D)m(A)-8 b(T)g(ASUM)27 b(v)-5 b(alue)24 b(is)f(the)i(32-bit)g(c)m(hec)m(ksum)g(for)f(the)h (data)g(unit,)g(expressed)f(as)h(a)227 1463 y(decimal)30 b(in)m(teger)g(enclosed)g(in)f(single)g(quotes.)41 b(The)30 b(CHECKSUM)g(k)m(eyw)m(ord)g(v)-5 b(alue)30 b(is)f(a)i(16-c)m(haracter) 227 1576 y(string)i(whic)m(h)f(is)h(the)g(ASCI)s(I-enco)s(ded)f(v)-5 b(alue)33 b(for)h(the)f(complemen)m(t)h(of)g(the)f(c)m(hec)m(ksum)i (for)e(the)h(whole)227 1689 y(HDU.)h(If)e(these)g(k)m(eyw)m(ords)h (already)f(exist,)h(their)e(v)-5 b(alues)33 b(will)e(b)s(e)i(up)s (dated)f(only)g(if)g(necessary)i(\(i.e.,)h(if)227 1802 y(the)c(\014le)e(has)h(b)s(een)g(mo)s(di\014ed)e(since)i(the)h (original)d(k)m(eyw)m(ord)j(v)-5 b(alues)30 b(w)m(ere)h(computed\).)382 2033 y Fe(FTPCKS\(unit,)44 b(>)k(status\))0 2263 y Fh(2)81 b Fi(Up)s(date)28 b(the)h(CHECKSUM)e(k)m(eyw)m(ord)i(v)-5 b(alue)28 b(in)f(the)i(CHDU,)g(assuming)e(that)i(the)f(D)m(A)-8 b(T)g(ASUM)30 b(k)m(eyw)m(ord)227 2376 y(exists)35 b(and)g(already)g (has)g(the)h(correct)g(v)-5 b(alue.)55 b(This)34 b(routine)g (calculates)i(the)g(new)f(c)m(hec)m(ksum)h(for)f(the)227 2489 y(curren)m(t)40 b(header)g(unit,)i(adds)d(it)h(to)h(the)f(data)h (unit)e(c)m(hec)m(ksum,)44 b(enco)s(des)c(the)g(v)-5 b(alue)40 b(in)m(to)g(an)g(ASCI)s(I)227 2602 y(string,)30 b(and)g(writes)f(the)i(string)e(to)i(the)g(CHECKSUM)e(k)m(eyw)m(ord.) 382 2833 y Fe(FTUCKS\(unit,)44 b(>)k(status\))0 3063 y Fh(3)81 b Fi(V)-8 b(erify)34 b(the)g(CHDU)h(b)m(y)g(computing)e(the)i (c)m(hec)m(ksums)g(and)f(comparing)g(them)g(with)f(the)i(k)m(eyw)m (ords.)53 b(The)227 3176 y(data)34 b(unit)e(is)g(v)m(eri\014ed)g (correctly)h(if)f(the)i(computed)f(c)m(hec)m(ksum)g(equals)g(the)g(v)-5 b(alue)33 b(of)g(the)g(D)m(A)-8 b(T)g(ASUM)227 3289 y(k)m(eyw)m(ord.)64 b(The)37 b(c)m(hec)m(ksum)i(for)f(the)g(en)m(tire)f(HDU)i(\(header)f (plus)e(data)j(unit\))d(is)h(correct)i(if)e(it)h(equals)227 3402 y(zero.)55 b(The)34 b(output)g(D)m(A)-8 b(T)g(A)m(OK)37 b(and)d(HDUOK)h(parameters)g(in)e(this)h(subroutine)e(are)j(in)m (tegers)g(whic)m(h)227 3515 y(will)24 b(ha)m(v)m(e)j(a)f(v)-5 b(alue)26 b(=)g(1)g(if)f(the)i(data)f(or)g(HDU)h(is)e(v)m(eri\014ed)h (correctly)-8 b(,)28 b(a)e(v)-5 b(alue)26 b(=)f(0)i(if)e(the)h(D)m(A)-8 b(T)g(ASUM)28 b(or)227 3628 y(CHECKSUM)h(k)m(eyw)m(ord)g(is)g(not)g (presen)m(t,)h(or)f(v)-5 b(alue)29 b(=)g(-1)h(if)e(the)i(computed)f(c)m (hec)m(ksum)h(is)e(not)i(correct.)382 3858 y Fe(FTVCKS\(unit,)44 b(>)k(dataok,hduok,status\))0 4089 y Fh(4)81 b Fi(Compute)25 b(and)h(return)f(the)i(c)m(hec)m(ksum)g(v)-5 b(alues)25 b(for)h(the)h(CHDU)f(\(as)h(double)e(precision)g(v)-5 b(ariables\))25 b(without)227 4202 y(creating)45 b(or)f(mo)s(difying)e (the)j(CHECKSUM)e(and)h(D)m(A)-8 b(T)g(ASUM)46 b(k)m(eyw)m(ords.)83 b(This)43 b(routine)g(is)h(used)227 4315 y(in)m(ternally)29 b(b)m(y)h(FTV)m(CKS,)g(but)g(ma)m(y)h(b)s(e)e(useful)g(in)g(other)i (situations)e(as)h(w)m(ell.)382 4545 y Fe(FTGCKS\(unit,)44 b(>)k(datasum,hdusum,status\))0 4776 y Fh(5)81 b Fi(Enco)s(de)33 b(a)h(c)m(hec)m(ksum)h(v)-5 b(alue)33 b(\(stored)h(in)f(a)h(double)f (precision)f(v)-5 b(ariable\))33 b(in)m(to)g(a)i(16-c)m(haracter)h (string.)50 b(If)227 4889 y(COMPLEMENT)30 b(=)g(.true.)41 b(then)30 b(the)g(32-bit)h(sum)e(v)-5 b(alue)30 b(will)e(b)s(e)i (complemen)m(ted)g(b)s(efore)g(enco)s(ding.)382 5120 y Fe(FTESUM\(sum,complement,)42 b(>)47 b(checksum\))0 5350 y Fh(6)81 b Fi(Deco)s(de)39 b(a)f(16)h(c)m(haracter)h(c)m(hec)m (ksum)e(string)f(in)m(to)h(a)h(double)d(precision)g(v)-5 b(alue.)64 b(If)37 b(COMPLEMENT)g(=)227 5463 y(.true.)k(then)30 b(the)h(32-bit)f(sum)g(v)-5 b(alue)30 b(will)d(b)s(e)j(complemen)m(ted) h(after)f(deco)s(ding.)382 5694 y Fe(FTDSUM\(checksum,compleme)o(nt,)41 b(>)48 b(sum\))p eop %%Page: 101 107 101 106 bop 0 299 a Fg(9.11.)113 b(D)m(A)-8 b(TE)31 b(AND)g(TIME)f (UTILITY)g(R)m(OUTINES)1767 b Fi(101)0 555 y Fd(9.11)180 b(Date)46 b(and)f(Time)g(Utilit)l(y)i(Routines)0 805 y Fi(The)29 b(follo)m(wing)f(routines)h(help)f(to)j(construct)f(or)f (parse)h(the)g(FITS)f(date/time)h(strings.)40 b(Starting)29 b(in)f(the)i(y)m(ear)0 918 y(2000,)k(the)d(FITS)g(D)m(A)-8 b(TE)32 b(k)m(eyw)m(ord)g(v)-5 b(alues)30 b(\(and)i(the)f(v)-5 b(alues)31 b(of)g(other)h(`D)m(A)-8 b(TE-')33 b(k)m(eyw)m(ords\))f(m)m (ust)f(ha)m(v)m(e)i(the)0 1031 y(form)j('YYYY-MM-DD')k(\(date)e(only\)) e(or)h('YYYY-MM-DDThh:mm:ss.ddd...')61 b(\(date)38 b(and)e(time\))g (where)0 1144 y(the)30 b(n)m(um)m(b)s(er)f(of)i(decimal)e(places)h(in)f (the)h(seconds)g(v)-5 b(alue)30 b(is)f(optional.)40 b(These)30 b(times)g(are)g(in)f(UTC.)h(The)g(older)0 1257 y('dd/mm/yy')g(date)h (format)g(ma)m(y)g(not)g(b)s(e)e(used)h(for)g(dates)h(after)g(01)g(Jan) m(uary)f(2000.)0 1486 y Fh(1)81 b Fi(Get)31 b(the)g(curren)m(t)f (system)g(date.)42 b(The)29 b(returned)h(y)m(ear)h(has)f(4)h(digits)e (\(1999,)j(2000,)h(etc.\))382 1714 y Fe(FTGSDT\()46 b(>)h(day,)g (month,)f(year,)g(status)g(\))0 1943 y Fh(2)81 b Fi(Get)34 b(the)g(curren)m(t)g(system)f(date)i(and)e(time)g(string)g (\('YYYY-MM-DDThh:mm:ss'\).)53 b(The)33 b(time)h(will)d(b)s(e)227 2056 y(in)25 b(UTC/GMT)h(if)f(a)m(v)-5 b(ailable,)26 b(as)h(indicated)d(b)m(y)i(a)g(returned)f(timeref)g(v)-5 b(alue)26 b(=)f(0.)40 b(If)26 b(the)g(returned)e(v)-5 b(alue)227 2169 y(of)31 b(timeref)f(=)h(1)g(then)f(this)g(indicates)f (that)j(it)e(w)m(as)h(not)g(p)s(ossible)d(to)j(con)m(v)m(ert)i(the)d (lo)s(cal)g(time)h(to)g(UTC,)227 2281 y(and)f(th)m(us)g(the)h(lo)s(cal) e(time)h(w)m(as)h(returned.)382 2510 y Fe(FTGSTM\(>)45 b(datestr,)h(timeref,)f(status\))0 2739 y Fh(3)81 b Fi(Construct)26 b(a)i(date)g(string)e(from)h(the)g(input)e(date)j(v)-5 b(alues.)39 b(If)27 b(the)g(y)m(ear)h(is)f(b)s(et)m(w)m(een)g(1900)i (and)e(1998,)j(inclu-)227 2852 y(siv)m(e,)37 b(then)d(the)i(returned)d (date)j(string)e(will)e(ha)m(v)m(e)37 b(the)e(old)f(FITS)g(format)i (\('dd/mm/yy'\),)h(otherwise)227 2964 y(the)32 b(date)g(string)e(will)e (ha)m(v)m(e)33 b(the)e(new)g(FITS)g(format)g(\('YYYY-MM-DD'\).)36 b(Use)c(FTTM2S)f(instead)f(to)227 3077 y(alw)m(a)m(ys)h(return)e(a)i (date)g(string)f(using)e(the)j(new)f(FITS)g(format.)382 3306 y Fe(FTDT2S\()46 b(year,)g(month,)g(day,)h(>)g(datestr,)f (status\))0 3535 y Fh(4)81 b Fi(Construct)34 b(a)i(new-format)f(date)h (+)f(time)g(string)f(\('YYYY-MM-DDThh:mm:ss.ddd...'\).)57 b(If)34 b(the)i(y)m(ear,)227 3647 y(mon)m(th,)d(and)e(da)m(y)h(v)-5 b(alues)31 b(all)g(=)g(0)h(then)g(only)f(the)h(time)f(is)g(enco)s(ded)g (with)g(format)h('hh:mm:ss.ddd...'.)227 3760 y(The)j(decimals)f (parameter)i(sp)s(eci\014es)d(ho)m(w)j(man)m(y)f(decimal)f(places)h(of) g(fractional)g(seconds)g(to)h(include)227 3873 y(in)29 b(the)i(string.)40 b(If)29 b(`decimals')h(is)g(negativ)m(e,)h(then)g (only)e(the)i(date)g(will)c(b)s(e)j(return)f(\('YYYY-MM-DD'\).)382 4102 y Fe(FTTM2S\()46 b(year,)g(month,)g(day,)h(hour,)f(minute,)g (second,)g(decimals,)764 4215 y(>)h(datestr,)f(status\))0 4443 y Fh(5)81 b Fi(Return)44 b(the)g(date)i(as)f(read)f(from)h(the)g (input)d(string,)48 b(where)c(the)h(string)f(ma)m(y)h(b)s(e)f(in)g (either)g(the)h(old)227 4556 y(\('dd/mm/yy'\))31 b(or)g(new)e (\('YYYY-MM-DDThh:mm:ss')k(or)d('YYYY-MM-DD'\))k(FITS)c(format.)382 4785 y Fe(FTS2DT\(datestr,)43 b(>)48 b(year,)e(month,)g(day,)h (status\))0 5013 y Fh(6)81 b Fi(Return)30 b(the)h(date)h(and)f(time)g (as)g(read)g(from)g(the)h(input)d(string,)h(where)h(the)h(string)e(ma)m (y)i(b)s(e)e(in)g(either)h(the)227 5126 y(old)d(or)g(new)g(FITS)g (format.)40 b(The)28 b(returned)f(hours,)h(min)m(utes,)g(and)g(seconds) g(v)-5 b(alues)28 b(will)d(b)s(e)j(set)h(to)g(zero)227 5239 y(if)j(the)i(input)d(string)h(do)s(es)h(not)h(include)d(the)i (time)g(\('dd/mm/yy')g(or)h('YYYY-MM-DD'\))j(.)c(Similarly)-8 b(,)227 5352 y(the)36 b(returned)e(y)m(ear,)j(mon)m(th,)g(and)d(date)i (v)-5 b(alues)35 b(will)d(b)s(e)j(set)h(to)g(zero)g(if)e(the)h(date)h (is)e(not)i(included)c(in)227 5465 y(the)f(input)d(string)i (\('hh:mm:ss.ddd...'\).)382 5694 y Fe(FTS2TM\(datestr,)43 b(>)48 b(year,)e(month,)g(day,)h(hour,)f(minute,)g(second,)g(status\))p eop %%Page: 102 108 102 107 bop 0 299 a Fi(102)1274 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 555 y Fd(9.12)136 b(General)45 b(Utilit)l(y)i(Subroutines)0 805 y Fi(The)30 b(follo)m(wing)f(utilit)m(y)f(subroutines)h(ma)m(y)i(b) s(e)e(useful)g(for)h(certain)g(applications:)0 1060 y Fh(1)81 b Fi(Return)29 b(the)i(starting)f(b)m(yte)h(address)e(of)i(the) f(CHDU)h(and)f(the)h(next)f(HDU.)382 1315 y Fe(FTGHAD\(iunit,)44 b(>)j(curaddr,nextaddr\))0 1569 y Fh(2)81 b Fi(Con)m(v)m(ert)31 b(a)g(c)m(haracter)h(string)d(to)i(upp)s(ercase)e(\(op)s(erates)j(in)d (place\).)382 1824 y Fe(FTUPCH\(string\))0 2078 y Fh(3)81 b Fi(Compare)43 b(the)i(input)d(template)i(string)f(against)h(the)h (reference)f(string)f(to)i(see)g(if)e(they)h(matc)m(h.)82 b(The)227 2191 y(template)35 b(string)f(ma)m(y)h(con)m(tain)f(wildcard) e(c)m(haracters:)51 b('*')35 b(will)d(matc)m(h)j(an)m(y)g(sequence)g (of)f(c)m(haracters)227 2304 y(\(including)f(zero)j(c)m(haracters\))h (and)e('reference)h(string.)55 b(If)35 b(CASESN)f(=)h(.true.)56 b(then)35 b(the)g(matc)m(h)i(will)227 2417 y(b)s(e)29 b(case)h(sensitiv)m(e.)40 b(The)29 b(returned)f(MA)-8 b(TCH)30 b(parameter)g(will)d(b)s(e)h(.true.)41 b(if)28 b(the)i(2)g(strings)e(matc)m(h,)j(and)227 2530 y(EXA)m(CT)i(will)e(b)s (e)h(.true.)49 b(if)32 b(the)i(matc)m(h)g(is)e(exact)i(\(i.e.,)h(if)d (no)h(wildcard)e(c)m(haracters)j(w)m(ere)g(used)e(in)g(the)227 2643 y(matc)m(h\).)42 b(Both)31 b(strings)e(m)m(ust)i(b)s(e)e(68)j(c)m (haracters)f(or)g(less)f(in)f(length.)382 2898 y Fe (FTCMPS\(str_template,stri)o(ng,)o(case)o(sen,)41 b(>)47 b(match,exact\))0 3152 y Fh(4)81 b Fi(T)-8 b(est)31 b(that)g(the)f(k)m (eyw)m(ord)h(name)f(con)m(tains)h(only)e(legal)i(c)m(haracters:)42 b(A-Z,0-9,)32 b(h)m(yphen,)d(and)h(underscore.)382 3407 y Fe(FTTKEY\(keyword,)43 b(>)48 b(status\))0 3662 y Fh(5)81 b Fi(T)-8 b(est)31 b(that)g(the)f(k)m(eyw)m(ord)h(record)f(con)m(tains) h(only)e(legal)h(prin)m(table)f(ASCI)s(I)g(c)m(haracters)382 3916 y Fe(FTTREC\(card,)44 b(>)k(status\))0 4171 y Fh(6)81 b Fi(T)-8 b(est)25 b(whether)f(the)h(curren)m(t)f(header)h(con)m(tains) f(an)m(y)h(NULL)g(\(ASCI)s(I)e(0\))j(c)m(haracters.)40 b(These)24 b(c)m(haracters)j(are)227 4284 y(illegal)33 b(in)g(the)i(header,)g(but)f(they)g(will)e(go)j(undetected)g(b)m(y)f (most)h(of)g(the)f(CFITSIO)f(k)m(eyw)m(ord)i(header)227 4397 y(routines,)28 b(b)s(ecause)g(the)h(n)m(ull)d(is)h(in)m(terpreted) g(as)i(the)f(normal)f(end-of-string)h(terminator.)40 b(This)26 b(routine)227 4509 y(returns)i(the)g(p)s(osition)f(of)i(the)g (\014rst)f(n)m(ull)e(c)m(haracter)k(in)e(the)g(header,)h(or)g(zero)g (if)f(there)h(are)g(no)f(n)m(ulls.)38 b(F)-8 b(or)227 4622 y(example)36 b(a)g(returned)f(v)-5 b(alue)36 b(of)g(110)h(w)m (ould)e(indicate)g(that)i(the)f(\014rst)f(NULL)h(is)f(lo)s(cated)h(in)f (the)h(30th)227 4735 y(c)m(haracter)28 b(of)f(the)g(second)f(k)m(eyw)m (ord)h(in)e(the)i(header)f(\(recall)g(that)h(eac)m(h)h(header)e(record) h(is)e(80)i(c)m(haracters)227 4848 y(long\).)55 b(Note)36 b(that)g(this)e(is)g(one)h(of)g(the)g(few)g(FITSIO)f(routines)g(in)f (whic)m(h)h(the)h(returned)f(v)-5 b(alue)35 b(is)f(not)227 4961 y(necessarily)c(equal)f(to)j(the)e(status)h(v)-5 b(alue\).)382 5216 y Fe(FTNCHK\(unit,)44 b(>)k(status\))0 5470 y Fh(7)81 b Fi(P)m(arse)27 b(a)f(header)h(k)m(eyw)m(ord)g(record)f (and)g(return)f(the)i(name)f(of)h(the)f(k)m(eyw)m(ord)h(and)f(the)h (length)e(of)i(the)g(name.)227 5583 y(The)34 b(k)m(eyw)m(ord)h(name)f (normally)f(o)s(ccupies)g(the)i(\014rst)e(8)i(c)m(haracters)g(of)g(the) f(record,)i(except)f(under)e(the)227 5696 y(HIERAR)m(CH)e(con)m(v)m(en) m(tion)g(where)f(the)h(name)f(can)h(b)s(e)f(up)f(to)i(70)g(c)m (haracters)h(in)d(length.)p eop %%Page: 103 109 103 108 bop 0 299 a Fg(9.12.)73 b(GENERAL)30 b(UTILITY)g(SUBR)m (OUTINES)1934 b Fi(103)382 555 y Fe(FTGKNM\(card,)44 b(>)k(keyname,)d(keylength,)g(status\))0 811 y Fh(8)81 b Fi(P)m(arse)34 b(a)h(header)f(k)m(eyw)m(ord)h(record.)52 b(This)32 b(subroutine)g(parses)i(the)g(input)f(header)h(record)g(to)h (return)e(the)227 924 y(v)-5 b(alue)26 b(\(as)h(a)g(c)m(haracter)g (string\))f(and)g(commen)m(t)h(strings.)38 b(If)26 b(the)g(k)m(eyw)m (ord)h(has)f(no)g(v)-5 b(alue)26 b(\(columns)f(9-10)227 1037 y(not)i(equal)e(to)i('=)f('\),)i(then)e(the)g(v)-5 b(alue)26 b(string)f(is)g(returned)g(blank)g(and)g(the)h(commen)m(t)i (string)d(is)g(set)h(equal)227 1150 y(to)31 b(column)f(9)g(-)h(80)g(of) g(the)f(input)f(string.)382 1406 y Fe(FTPSVC\(card,)44 b(>)k(value,comment,status\))0 1662 y Fh(9)81 b Fi(Construct)35 b(a)i(sequence)f(k)m(eyw)m(ord)h(name)f(\(R)m(OOT)g(+)g(nnn\).)57 b(This)34 b(subroutine)g(app)s(ends)g(the)j(sequence)227 1775 y(n)m(um)m(b)s(er)29 b(to)i(the)g(ro)s(ot)g(string)e(to)i(create)h (a)f(k)m(eyw)m(ord)g(name)f(\(e.g.,)i('NAXIS')f(+)f(2)h(=)f('NAXIS2'\)) 382 2032 y Fe(FTKEYN\(keyroot,seq_no,)42 b(>)47 b(keyword,status\))0 2288 y Fh(10)f Fi(Construct)30 b(a)g(sequence)g(k)m(eyw)m(ord)h(name)f (\(n)f(+)h(R)m(OOT\).)g(This)e(subroutine)g(concatenates)k(the)f (sequence)227 2401 y(n)m(um)m(b)s(er)20 b(to)j(the)e(fron)m(t)h(of)g (the)f(ro)s(ot)h(string)f(to)h(create)h(a)f(k)m(eyw)m(ord)g(name)g (\(e.g.,)j(1)d(+)f('CTYP')g(=)g('1CTYP'\))382 2657 y Fe(FTNKEY\(seq_no,keyroot,)42 b(>)47 b(keyword,status\))0 2913 y Fh(11)f Fi(Determine)34 b(the)g(datat)m(yp)s(e)g(of)g(a)g(k)m (eyw)m(ord)h(v)-5 b(alue)33 b(string.)49 b(This)32 b(subroutine)g (parses)h(the)h(k)m(eyw)m(ord)g(v)-5 b(alue)227 3026 y(string)30 b(\(usually)e(columns)h(11-30)k(of)d(the)h(header)f (record\))g(to)i(determine)d(its)h(datat)m(yp)s(e.)382 3282 y Fe(FTDTYP\(value,)44 b(>)j(dtype,status\))0 3538 y Fh(11)f Fi(Return)c(the)i(class)f(of)g(input)e(header)i(record.)79 b(The)43 b(record)g(is)f(classi\014ed)f(in)m(to)i(one)h(of)f(the)g (follo)m(wing)227 3651 y(categories)35 b(\(the)f(class)e(v)-5 b(alues)33 b(are)g(de\014ned)f(in)g(\014tsio.h\).)48 b(Note)35 b(that)e(this)f(is)g(one)i(of)f(the)g(few)g(FITSIO)227 3764 y(routines)d(that)g(do)s(es)h(not)f(return)f(a)i(status)g(v)-5 b(alue.)334 4020 y Fe(Class)94 b(Value)619 b(Keywords)95 4133 y(TYP_STRUC_KEY)92 b(10)j(SIMPLE,)46 b(BITPIX,)g(NAXIS,)g(NAXISn,) g(EXTEND,)g(BLOCKED,)1002 4246 y(GROUPS,)g(PCOUNT,)g(GCOUNT,)g(END)1002 4359 y(XTENSION,)g(TFIELDS,)f(TTYPEn,)h(TBCOLn,)g(TFORMn,)g(THEAP,)1002 4472 y(and)h(the)g(first)f(4)i(COMMENT)e(keywords)f(in)i(the)g(primary) f(array)1002 4585 y(that)h(define)f(the)h(FITS)g(format.)95 4698 y(TYP_CMPRS_KEY)92 b(20)j(The)47 b(experimental)e(keywords)g(used) i(in)g(the)g(compressed)1002 4811 y(image)g(format)f(ZIMAGE,)g (ZCMPTYPE,)f(ZNAMEn,)h(ZVALn,)1002 4924 y(ZTILEn,)g(ZBITPIX,)g (ZNAXISn,)f(ZSCALE,)h(ZZERO,)g(ZBLANK)95 5036 y(TYP_SCAL_KEY)140 b(30)95 b(BSCALE,)46 b(BZERO,)g(TSCALn,)g(TZEROn)95 5149 y(TYP_NULL_KEY)140 b(40)95 b(BLANK,)46 b(TNULLn)95 5262 y(TYP_DIM_KEY)188 b(50)95 b(TDIMn)95 5375 y(TYP_RANG_KEY)140 b(60)95 b(TLMINn,)46 b(TLMAXn,)g(TDMINn,)g(TDMAXn,)g(DATAMIN,)f (DATAMAX)95 5488 y(TYP_UNIT_KEY)140 b(70)95 b(BUNIT,)46 b(TUNITn)95 5601 y(TYP_DISP_KEY)140 b(80)95 b(TDISPn)95 5714 y(TYP_HDUID_KEY)d(90)j(EXTNAME,)46 b(EXTVER,)g(EXTLEVEL,)f (HDUNAME,)g(HDUVER,)h(HDULEVEL)p eop %%Page: 104 110 104 109 bop 0 299 a Fi(104)1274 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)95 555 y Fe(TYP_CKSUM_KEY)45 b(100)94 b(CHECKSUM,)46 b(DATASUM)95 668 y(TYP_WCS_KEY)141 b(110)94 b(CTYPEn,)46 b(CUNITn,)g(CRVALn,)g (CRPIXn,)g(CROTAn,)f(CDELTn)1002 781 y(CDj_is,)h(PVj_ms,)g(LONPOLEs,)f (LATPOLEs)1002 894 y(TCTYPn,)h(TCTYns,)g(TCUNIn,)g(TCUNns,)g(TCRVLn,)f (TCRVns,)h(TCRPXn,)1002 1007 y(TCRPks,)g(TCDn_k,)g(TCn_ks,)g(TPVn_m,)g (TPn_ms,)f(TCDLTn,)h(TCROTn)1002 1120 y(jCTYPn,)g(jCTYns,)g(jCUNIn,)g (jCUNns,)g(jCRVLn,)f(jCRVns,)h(iCRPXn,)1002 1233 y(iCRPns,)g(jiCDn,)94 b(jiCDns,)46 b(jPVn_m,)g(jPn_ms,)f(jCDLTn,)h(jCROTn)1002 1346 y(\(i,j,m,n)g(are)h(integers,)e(s)i(is)h(any)f(letter\))95 1458 y(TYP_REFSYS_KEY)d(120)j(EQUINOXs,)f(EPOCH,)g(MJD-OBSs,)f (RADECSYS,)g(RADESYSs)95 1571 y(TYP_COMM_KEY)140 b(130)47 b(COMMENT,)f(HISTORY,)f(\(blank)h(keyword\))95 1684 y(TYP_CONT_KEY)140 b(140)47 b(CONTINUE)95 1797 y(TYP_USER_KEY)140 b(150)47 b(all)g(other)g(keywords)430 2023 y(class)f(=)h(FTGKCL)f(\(char)h (*card\))0 2275 y Fh(12)f Fi(P)m(arse)f(the)g('TF)m(ORM')h(binary)d (table)i(column)e(format)i(string.)83 b(This)43 b(subroutine)g(parses)h (the)h(input)227 2388 y(TF)m(ORM)27 b(c)m(haracter)g(string)e(and)h (returns)f(the)h(in)m(teger)g(datat)m(yp)s(e)h(co)s(de,)h(the)e(rep)s (eat)g(coun)m(t)h(of)f(the)g(\014eld,)227 2501 y(and,)f(in)d(the)i (case)g(of)g(c)m(haracter)h(string)d(\014elds,)i(the)f(length)g(of)h (the)g(unit)e(string.)37 b(The)23 b(follo)m(wing)f(datat)m(yp)s(e)227 2613 y(co)s(des)h(are)h(returned)e(\(the)h(negativ)m(e)h(of)g(the)f(v) -5 b(alue)22 b(is)g(returned)g(if)g(the)h(column)f(con)m(tains)h(v)-5 b(ariable-length)227 2726 y(arra)m(ys\):)764 2978 y Fe(Datatype)761 b(DATACODE)46 b(value)764 3091 y(bit,)g(X)907 b(1)764 3204 y(byte,)46 b(B)811 b(11)764 3317 y(logical,)45 b(L)668 b(14)764 3430 y(ASCII)46 b(character,)f(A)286 b(16)764 3543 y(short)46 b(integer,)g(I)381 b(21)764 3656 y(integer,)45 b(J)668 b(41)764 3768 y(real,)46 b(E)811 b(42)764 3881 y(double)46 b(precision,)f(D)238 b(82)764 3994 y(complex)809 b(83)764 4107 y(double)46 b(complex)475 b(163)382 4333 y(FTBNFM\(tform,)44 b(>)j(datacode,repeat,width,stat)o(us\))0 4585 y Fh(13)f Fi(P)m(arse)38 b(the)f('TF)m(ORM')h(k)m(eyw)m(ord)g(v)-5 b(alue)36 b(that)i(de\014nes)e(the)h(column)f(format)i(in)d(an)i(ASCI)s (I)f(table.)61 b(This)227 4698 y(routine)30 b(parses)h(the)g(input)f (TF)m(ORM)h(c)m(haracter)i(string)d(and)g(returns)g(the)i(datat)m(yp)s (e)g(co)s(de,)f(the)h(width)227 4811 y(of)40 b(the)h(column,)g(and)f (\(if)f(it)g(is)h(a)g(\015oating)g(p)s(oin)m(t)f(column\))g(the)h(n)m (um)m(b)s(er)f(of)h(decimal)f(places)h(to)h(the)227 4924 y(righ)m(t)27 b(of)h(the)f(decimal)f(p)s(oin)m(t.)39 b(The)27 b(returned)f(datat)m(yp)s(e)i(co)s(des)f(are)h(the)g(same)f (as)h(for)f(the)g(binary)f(table,)227 5036 y(listed)39 b(ab)s(o)m(v)m(e,)44 b(with)39 b(the)h(follo)m(wing)f(additional)f (rules:)59 b(in)m(teger)41 b(columns)e(that)h(are)h(b)s(et)m(w)m(een)g (1)g(and)227 5149 y(4)36 b(c)m(haracters)i(wide)c(are)j(de\014ned)d(to) j(b)s(e)e(short)h(in)m(tegers)g(\(co)s(de)g(=)g(21\).)58 b(Wider)35 b(in)m(teger)h(columns)f(are)227 5262 y(de\014ned)k(to)i(b)s (e)e(regular)g(in)m(tegers)i(\(co)s(de)f(=)g(41\).)71 b(Similarly)-8 b(,)39 b(Fixed)g(decimal)g(p)s(oin)m(t)g(columns)g (\(with)227 5375 y(TF)m(ORM)30 b(=)g('Fw.d'\))g(are)g(de\014ned)f(to)h (b)s(e)g(single)e(precision)g(reals)h(\(co)s(de)i(=)e(42\))i(if)e(w)g (is)g(b)s(et)m(w)m(een)h(1)h(and)227 5488 y(7)i(c)m(haracters)h(wide,)e (inclusiv)m(e.)44 b(Wider)31 b('F')i(columns)e(will)f(return)h(a)i (double)e(precision)f(data)j(co)s(de)g(\(=)227 5601 y(82\).)54 b('Ew.d')34 b(format)g(columns)f(will)f(ha)m(v)m(e)j(dataco)s(de)g(=)f (42,)j(and)c('Dw.d')i(format)f(columns)f(will)f(ha)m(v)m(e)227 5714 y(dataco)s(de)g(=)e(82.)p eop %%Page: 105 111 105 110 bop 0 299 a Fg(9.12.)73 b(GENERAL)30 b(UTILITY)g(SUBR)m (OUTINES)1934 b Fi(105)382 555 y Fe(FTASFM\(tform,)44 b(>)j(datacode,width,decimals,st)o(atus)o(\))0 825 y Fh(14)f Fi(Calculate)30 b(the)h(starting)f(column)g(p)s(ositions)e(and) i(total)h(ASCI)s(I)e(table)i(width)d(based)j(on)f(the)h(input)d(arra)m (y)227 938 y(of)f(ASCI)s(I)e(table)h(TF)m(ORM)h(v)-5 b(alues.)39 b(The)26 b(SP)-8 b(A)m(CE)27 b(input)d(parameter)j (de\014nes)f(ho)m(w)h(man)m(y)f(blank)g(spaces)227 1051 y(to)40 b(lea)m(v)m(e)h(b)s(et)m(w)m(een)f(eac)m(h)g(column)f(\(it)g (is)f(recommended)h(to)h(ha)m(v)m(e)h(one)e(space)h(b)s(et)m(w)m(een)g (columns)e(for)227 1164 y(b)s(etter)31 b(h)m(uman)e(readabilit)m(y\).) 382 1434 y Fe(FTGABC\(tfields,tform,spa)o(ce,)41 b(>)48 b(rowlen,tbcol,status\))0 1704 y Fh(15)e Fi(P)m(arse)36 b(a)f(template)g(string)f(and)h(return)f(a)h(formatted)h(80-c)m (haracter)h(string)d(suitable)g(for)h(app)s(ending)d(to)227 1817 y(\(or)40 b(deleting)f(from\))g(a)h(FITS)f(header)h(\014le.)67 b(This)38 b(subroutine)f(is)i(useful)f(for)h(parsing)f(lines)g(from)h (an)227 1930 y(ASCI)s(I)34 b(template)i(\014le)f(and)f(reformatting)i (them)f(in)m(to)h(legal)f(FITS)f(header)i(records.)55 b(The)35 b(formatted)227 2043 y(string)30 b(ma)m(y)h(then)f(b)s(e)g (passed)g(to)i(the)e(FTPREC,)h(FTMCRD,)g(or)f(FTDKEY)h(subroutines)d (to)k(app)s(end)227 2156 y(or)f(mo)s(dify)d(a)j(FITS)f(header)g (record.)382 2426 y Fe(FTGTHD\(template,)43 b(>)48 b (card,hdtype,status\))0 2696 y Fi(The)23 b(input)g(TEMPLA)-8 b(TE)23 b(c)m(haracter)j(string)d(generally)g(should)f(con)m(tain)i(3)h (tok)m(ens:)38 b(\(1\))25 b(the)f(KEYNAME,)h(\(2\))0 2809 y(the)h(V)-10 b(ALUE,)26 b(and)f(\(3\))i(the)f(COMMENT)g(string.) 38 b(The)25 b(TEMPLA)-8 b(TE)26 b(string)f(m)m(ust)g(adhere)h(to)g(the) g(follo)m(wing)0 2922 y(format:)0 3192 y Fh(-)80 b Fi(The)24 b(KEYNAME)g(tok)m(en)h(m)m(ust)e(b)s(egin)g(in)f(columns)h(1-8)i(and)e (b)s(e)h(a)g(maxim)m(um)f(of)h(8)g(c)m(haracters)h(long.)38 b(If)24 b(the)227 3305 y(\014rst)32 b(8)h(c)m(haracters)h(of)e(the)h (template)g(line)d(are)j(blank)e(then)h(the)h(remainder)e(of)h(the)h (line)e(is)g(considered)227 3418 y(to)42 b(b)s(e)e(a)h(FITS)f(commen)m (t)h(\(with)f(a)h(blank)e(k)m(eyw)m(ord)i(name\).)72 b(A)41 b(legal)g(FITS)f(k)m(eyw)m(ord)h(name)f(ma)m(y)227 3531 y(only)34 b(con)m(tain)i(the)f(c)m(haracters)h(A-Z,)f(0-9,)j(and)c ('-')i(\(min)m(us)e(sign\))g(and)g(underscore.)54 b(This)33 b(subroutine)227 3644 y(will)39 b(automatically)i(con)m(v)m(ert)i(an)m (y)f(lo)m(w)m(ercase)h(c)m(haracters)f(to)h(upp)s(ercase)d(in)g(the)i (output)f(string.)72 b(If)227 3757 y(KEYNAME)33 b(=)f('COMMENT')h(or)g ('HISTOR)-8 b(Y')32 b(then)h(the)f(remainder)f(of)i(the)g(line)e(is)h (considered)f(to)227 3870 y(b)s(e)f(a)h(FITS)e(COMMENT)h(or)h(HISTOR)-8 b(Y)30 b(record,)g(resp)s(ectiv)m(ely)-8 b(.)0 4140 y Fh(-)80 b Fi(The)26 b(V)-10 b(ALUE)26 b(tok)m(en)h(m)m(ust)e(b)s(e)h (separated)g(from)f(the)i(KEYNAME)f(tok)m(en)h(b)m(y)f(one)g(or)g(more) g(spaces)g(and/or)227 4253 y(an)i('=')g(c)m(haracter.)41 b(The)27 b(datat)m(yp)s(e)i(of)f(the)g(V)-10 b(ALUE)27 b(tok)m(en)i(\(n)m(umeric,)f(logical,)g(or)g(c)m(haracter)h(string\))e (is)227 4366 y(automatically)32 b(determined)e(and)i(the)g(output)f (CARD)h(string)f(is)g(formatted)h(accordingly)-8 b(.)45 b(The)31 b(v)-5 b(alue)227 4478 y(tok)m(en)34 b(ma)m(y)f(b)s(e)f (forced)g(to)i(b)s(e)e(in)m(terpreted)f(as)i(a)g(string)f(\(e.g.)48 b(if)32 b(it)g(is)f(a)i(string)f(of)g(n)m(umeric)g(digits\))f(b)m(y)227 4591 y(enclosing)f(it)g(in)f(single)g(quotes.)0 4862 y Fh(-)80 b Fi(The)37 b(COMMENT)f(tok)m(en)i(is)e(optional,)i(but)f(if) f(presen)m(t)h(m)m(ust)f(b)s(e)h(separated)g(from)g(the)g(V)-10 b(ALUE)37 b(tok)m(en)227 4974 y(b)m(y)j(at)h(least)g(one)f(blank)f (space.)70 b(A)40 b(leading)f('/')i(c)m(haracter)h(ma)m(y)f(b)s(e)e (used)h(to)g(mark)g(the)h(b)s(eginning)227 5087 y(of)33 b(the)f(commen)m(t)h(\014eld,)f(otherwise)f(the)i(commen)m(t)g(\014eld) e(b)s(egins)f(with)h(the)h(\014rst)g(non-blank)e(c)m(haracter)227 5200 y(follo)m(wing)f(the)i(v)-5 b(alue)30 b(tok)m(en.)0 5470 y Fh(-)80 b Fi(One)32 b(exception)h(to)g(the)g(ab)s(o)m(v)m(e)h (rules)d(is)g(that)i(if)f(the)g(\014rst)g(non-blank)f(c)m(haracter)j (in)d(the)i(template)g(string)227 5583 y(is)h(a)h(min)m(us)e(sign)h (\('-'\))i(follo)m(w)m(ed)e(b)m(y)h(a)g(single)e(tok)m(en,)k(or)e(a)g (single)e(tok)m(en)j(follo)m(w)m(ed)e(b)m(y)h(an)f(equal)h(sign,)227 5696 y(then)29 b(it)f(is)g(in)m(terpreted)f(as)i(the)g(name)g(of)g(a)g (k)m(eyw)m(ord)g(whic)m(h)e(is)h(to)h(b)s(e)f(deleted)h(from)f(the)h (FITS)f(header.)p eop %%Page: 106 112 106 111 bop 0 299 a Fi(106)1274 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0 555 y Fh(-)80 b Fi(The)40 b(second)g(exception)g(is)f(that)i(if)e(the)h (template)g(string)f(starts)h(with)f(a)i(min)m(us)d(sign)h(and)g(is)g (follo)m(w)m(ed)227 668 y(b)m(y)33 b(2)g(tok)m(ens)g(then)g(the)f (second)h(tok)m(en)h(is)d(in)m(terpreted)h(as)h(the)g(new)f(name)g(for) h(the)g(k)m(eyw)m(ord)g(sp)s(eci\014ed)227 781 y(b)m(y)h(\014rst)e(tok) m(en.)52 b(In)33 b(this)f(case)j(the)e(old)g(k)m(eyw)m(ord)h(name)g (\(\014rst)f(tok)m(en\))i(is)d(returned)h(in)f(c)m(haracters)j(1-8)227 894 y(of)e(the)g(returned)e(CARD)i(string,)f(and)g(the)h(new)f(k)m(eyw) m(ord)h(name)g(\(the)g(second)f(tok)m(en\))i(is)e(returned)f(in)227 1007 y(c)m(haracters)c(41-48)h(of)e(the)f(returned)g(CARD)g(string.)39 b(These)25 b(old)g(and)g(new)g(names)g(ma)m(y)h(then)f(b)s(e)g(passed) 227 1120 y(to)31 b(the)g(FTMNAM)g(subroutine)e(whic)m(h)g(will)e(c)m (hange)32 b(the)e(k)m(eyw)m(ord)h(name.)0 1361 y(The)f(HDTYPE)g(output) g(parameter)h(indicates)e(ho)m(w)i(the)f(returned)g(CARD)g(string)f (should)g(b)s(e)h(in)m(terpreted:)382 1602 y Fe(hdtype)857 b(interpretation)382 1715 y(------)523 b(-------------------------)o (----)o(---)o(----)o(----)o(---)o(----)o(--)525 1828 y(-2)572 b(Modify)46 b(the)h(name)g(of)g(the)g(keyword)f(given)g(in)h (CARD\(1:8\))1193 1941 y(to)g(the)g(new)g(name)g(given)f(in)h (CARD\(41:48\))525 2167 y(-1)572 b(CARD\(1:8\))45 b(contains)h(the)h (name)g(of)g(a)g(keyword)f(to)h(be)g(deleted)1193 2280 y(from)g(the)g(FITS)f(header.)573 2506 y(0)572 b(append)46 b(the)h(CARD)g(string)f(to)h(the)g(FITS)g(header)f(if)h(the)1193 2619 y(keyword)f(does)h(not)g(already)e(exist,)h(otherwise)g(update) 1193 2732 y(the)h(value/comment)d(if)j(the)g(keyword)f(is)h(already)f (present)1193 2844 y(in)h(the)g(header.)573 3070 y(1)572 b(simply)46 b(append)g(this)h(keyword)f(to)h(the)g(FITS)g(header)f (\(CARD)1193 3183 y(is)h(either)f(a)i(HISTORY)e(or)h(COMMENT)f (keyword\).)573 3409 y(2)572 b(This)47 b(is)g(a)g(FITS)g(END)g(record;) f(it)h(should)f(not)h(be)g(written)1193 3522 y(to)g(the)g(FITS)g (header)f(because)g(FITSIO)g(automatically)1193 3635 y(appends)g(the)h(END)g(record)f(when)h(the)f(header)h(is)g(closed.)0 3876 y Fi(EXAMPLES:)30 b(The)g(follo)m(wing)f(lines)f(illustrate)h(v)-5 b(alid)29 b(input)f(template)j(strings:)286 4118 y Fe(INTVAL)46 b(7)i(This)f(is)g(an)g(integer)f(keyword)286 4231 y(RVAL)524 b(34.6)142 b(/)239 b(This)46 b(is)i(a)f(floating)f(point)g(keyword)286 4343 y(EVAL=-12.45E-03)92 b(This)46 b(is)i(a)f(floating)f(point)g (keyword)g(in)h(exponential)e(notation)286 4456 y(lval)i(F)g(This)g(is) g(a)h(boolean)e(keyword)859 4569 y(This)h(is)g(a)g(comment)f(keyword)g (with)h(a)g(blank)f(keyword)g(name)286 4682 y(SVAL1)h(=)g('Hello)f (world')142 b(/)95 b(this)47 b(is)g(a)g(string)f(keyword)286 4795 y(SVAL2)94 b('123.5')g(this)47 b(is)g(also)f(a)i(string)e(keyword) 286 4908 y(sval3)94 b(123+)h(/)g(this)47 b(is)g(also)f(a)i(string)e (keyword)g(with)g(the)h(value)g('123+)189 b(')286 5021 y(#)48 b(the)f(following)e(template)h(line)g(deletes)g(the)h(DATE)g (keyword)286 5134 y(-)h(DATE)286 5247 y(#)g(the)f(following)e(template) h(line)g(modifies)g(the)h(NAME)f(keyword)g(to)h(OBJECT)286 5360 y(-)h(NAME)e(OBJECT)0 5601 y Fh(16)g Fi(P)m(arse)35 b(the)g(input)e(string)h(con)m(taining)g(a)h(list)f(of)h(ro)m(ws)f(or)h (ro)m(w)g(ranges,)h(and)e(return)g(in)m(teger)h(arra)m(ys)g(con-)227 5714 y(taining)25 b(the)h(\014rst)f(and)g(last)h(ro)m(w)g(in)e(eac)m(h) j(range.)40 b(F)-8 b(or)26 b(example,)h(if)d(ro)m(wlist)h(=)g("3-5,)k (6,)e(8-9")h(then)d(it)h(will)p eop %%Page: 107 113 107 112 bop 0 299 a Fg(9.12.)73 b(GENERAL)30 b(UTILITY)g(SUBR)m (OUTINES)1934 b Fi(107)227 555 y(return)34 b(n)m(umranges)h(=)g(3,)h (rangemin)e(=)h(3,)i(6,)g(8)e(and)g(rangemax)g(=)g(5,)i(6,)g(9.)55 b(A)m(t)36 b(most,)h('maxranges')227 668 y(n)m(um)m(b)s(er)31 b(of)h(ranges)f(will)e(b)s(e)j(returned.)43 b('maxro)m(ws')32 b(is)f(the)h(maxim)m(um)f(n)m(um)m(b)s(er)f(of)i(ro)m(ws)g(in)e(the)i (table;)227 781 y(an)m(y)e(ro)m(ws)f(or)g(ranges)g(larger)g(than)g (this)f(will)e(b)s(e)j(ignored.)39 b(The)29 b(ro)m(ws)g(m)m(ust)g(b)s (e)f(sp)s(eci\014ed)g(in)f(increasing)227 894 y(order,)33 b(and)f(the)g(ranges)h(m)m(ust)f(not)g(o)m(v)m(erlap.)47 b(A)33 b(min)m(us)d(sign)i(ma)m(y)h(b)s(e)e(use)h(to)h(sp)s(ecify)e (all)g(the)i(ro)m(ws)f(to)227 1007 y(the)h(upp)s(er)d(or)j(lo)m(w)m(er) g(b)s(ound,)e(so)i("50-")h(means)e(all)g(the)h(ro)m(ws)f(from)g(50)h (to)h(the)e(end)g(of)h(the)f(table,)i(and)227 1120 y("-")e(means)e(all) f(the)i(ro)m(ws)f(in)f(the)i(table,)f(from)g(1)h(-)g(maxro)m(ws.)191 1380 y Fe(FTRWRG\(rowlist,)44 b(maxrows,)h(maxranges,)g(>)525 1492 y(numranges,)g(rangemin,)g(rangemax,)h(status\))p eop %%Page: 108 114 108 113 bop 0 299 a Fi(108)1274 b Fg(CHAPTER)29 b(9.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)p eop %%Page: 109 115 109 114 bop 0 1225 a Ff(Chapter)65 b(10)0 1687 y Fl(Summary)76 b(of)i(all)f(FITSIO)0 1937 y(User-In)-6 b(terface)77 b(Subroutines)0 2429 y Fi(Error)29 b(Status)i(Routines)e(page)i(63)382 2696 y Fe(FTVERS\()46 b(>)h(version\))382 2809 y(FTGERR\(status,)d(>)j (errtext\))382 2922 y(FTGMSG\()f(>)h(errmsg\))382 3035 y(FTRPRT)f(\(stream,)f(>)j(status\))382 3147 y(FTPMSG\(errmsg\))382 3260 y(FTPMRK)382 3373 y(FTCMSG)382 3486 y(FTCMRK)0 3753 y Fi(FITS)30 b(File)f(Op)s(en)g(and)h(Close)g(Subroutines:)38 b(page)31 b(69)382 4020 y Fe(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(blocksize,status\))382 4133 y(FTDKOPEN\(unit,filename,r)o(wmo) o(de,)41 b(>)48 b(blocksize,status\))382 4246 y (FTNOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))382 4359 y(FTDOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))382 4472 y(FTTOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))382 4585 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))382 4698 y(FTREOPEN\(unit,)d(>)j(newunit,)f(status\)) 382 4811 y(FTINIT\(unit,filename,blo)o(cks)o(ize,)41 b(>)48 b(status\))382 4924 y(FTDKINIT\(unit,filename,b)o(loc)o(ksiz)o (e,)42 b(>)47 b(status\))382 5036 y(FTTPLT\(unit,)d(filename,)i (tplfilename,)e(>)j(status\))382 5149 y(FTFLUS\(unit,)d(>)k(status\)) 382 5262 y(FTCLOS\(unit,)c(>)k(status\))382 5375 y(FTDELT\(unit,)c(>)k (status\))382 5488 y(FTGIOU\()e(>)h(iounit,)f(status\))382 5601 y(FTFIOU\(iounit,)e(>)j(status\))0 5714 y(CFITS2Unit\(fitsfile)c (*ptr\))141 b(\(C)48 b(routine\))1882 5942 y Fi(109)p eop %%Page: 110 116 110 115 bop 0 299 a Fi(110)281 b Fg(CHAPTER)30 b(10.)112 b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(CUnit2FITS\(int)44 b(unit\))380 b(\(C)47 b(routine\))382 668 y(FTEXTN\(filename,)c(>)48 b(nhdu,)e(status\))382 781 y(FTFLNM\(unit,)e(>)k(filename,)d(status\)) 382 894 y(FTFLMD\(unit,)f(>)k(iomode,)e(status\))382 1007 y(FFURLT\(unit,)e(>)k(urltype,)d(status\))382 1120 y(FTIURL\(filename,)e(>)48 b(filetype,)d(infile,)h(outfile,)f(extspec,) h(filter,)716 1233 y(binspec,)f(colspec,)h(status\))382 1346 y(FTRTNM\(filename,)d(>)48 b(rootname,)d(status\))382 1458 y(FTEXIST\(filename,)e(>)k(exist,)f(status\))0 1695 y Fi(HDU-Lev)m(el)32 b(Op)s(erations:)39 b(page)31 b(72)382 1932 y Fe(FTMAHD\(unit,nhdu,)43 b(>)k(hdutype,status\))382 2045 y(FTMRHD\(unit,nmove,)c(>)k(hdutype,status\))382 2158 y(FTGHDN\(unit,)d(>)k(nhdu\))382 2271 y(FTMNHD\(unit,)c(hdutype,)i (extname,)f(extver,)h(>)i(status\))382 2384 y(FTGHDT\(unit,)c(>)k (hdutype,)d(status\))382 2497 y(FTTHDU\(unit,)f(>)k(hdunum,)e(status\)) 382 2610 y(FTCRHD\(unit,)e(>)k(status\))382 2723 y (FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382 2836 y(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o (ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 2949 y(status\))382 3061 y(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o (,tfo)o(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at)f(>)48 b(status\))382 3174 y(FTRSIM\(unit,bitpix,naxis)o(,na)o(xes,)o(stat)o (us\))382 3287 y(FTDHDU\(unit,)c(>)k(hdutype,status\))382 3400 y(FTCPFL\(iunit,ounit,previ)o(ous)o(,)42 b(current,)j(following,)g (>)j(status\))382 3513 y(FTCOPY\(iunit,ounit,morek)o(eys)o(,)42 b(>)47 b(status\))382 3626 y(FTCPHD\(inunit,)d(outunit,)h(>)j(status\)) 382 3739 y(FTCPDT\(iunit,ounit,)42 b(>)48 b(status\))0 3976 y Fi(Subroutines)28 b(to)j(sp)s(ecify)e(or)h(mo)s(dify)f(the)h (structure)g(of)h(the)f(CHDU:)h(page)h(75)382 4213 y Fe(FTRDEF\(unit,)44 b(>)k(status\))93 b(\(DEPRECATED\))382 4326 y(FTPDEF\(unit,bitpix,naxis)o(,na)o(xes,)o(pcou)o(nt,)o(gcou)o (nt,)41 b(>)48 b(status\))93 b(\(DEPRECATED\))382 4439 y(FTADEF\(unit,rowlen,tfiel)o(ds,)o(tbco)o(l,tf)o(orm)o(,nro)o(ws)42 b(>)47 b(status\))94 b(\(DEPRECATED\))382 4551 y (FTBDEF\(unit,tfields,tfor)o(m,v)o(arid)o(at,n)o(row)o(s)42 b(>)47 b(status\))94 b(\(DEPRECATED\))382 4664 y(FTDDEF\(unit,bytlen,) 42 b(>)48 b(status\))93 b(\(DEPRECATED\))382 4777 y (FTPTHP\(unit,theap,)43 b(>)k(status\))0 5014 y Fi(Header)31 b(Space)f(and)g(P)m(osition)g(Subroutines:)38 b(page)31 b(76)382 5251 y Fe(FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))382 5364 y(FTGHSP\(iunit,)d(>)j(keysexist,keysadd,status\))382 5477 y(FTGHPS\(iunit,)d(>)j(keysexist,key_no,status\))0 5714 y Fi(Read)31 b(or)f(W)-8 b(rite)31 b(Standard)e(Header)i (Subroutines:)38 b(page)31 b(77)p eop %%Page: 111 117 111 116 bop 3764 299 a Fi(111)382 555 y Fe(FTPHPS\(unit,bitpix,naxis)o (,na)o(xes,)41 b(>)48 b(status\))382 668 y(FTPHPR\(unit,simple,bitpi)o (x,n)o(axis)o(,nax)o(es,)o(pcou)o(nt,g)o(cou)o(nt,e)o(xten)o(d,)41 b(>)48 b(status\))382 781 y(FTGHPR\(unit,maxdim,)42 b(>)48 b(simple,bitpix,naxis,naxe)o(s,p)o(coun)o(t,gc)o(oun)o(t,ex)o(tend)o(,) 716 894 y(status\))382 1007 y(FTPHTB\(unit,rowlen,nrows)o(,tf)o(ield)o (s,tt)o(ype)o(,tbc)o(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 1120 y(status\))382 1233 y(FTGHTB\(unit,maxdim,)g(>)48 b(rowlen,nrows,tfields,tty)o(pe,)o(tbco)o(l,tf)o(orm)o(,tun)o(it,)716 1346 y(extname,status\))382 1458 y(FTPHBN\(unit,nrows,tfield)o(s,t)o (type)o(,tfo)o(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at)41 b(>)48 b(status\))382 1571 y(FTGHBN\(unit,maxdim,)42 b(>)48 b(nrows,tfields,ttype,tfor)o(m,t)o(unit)o(,ext)o(nam)o(e,va)o (rida)o(t,)716 1684 y(status\))0 1942 y Fi(W)-8 b(rite)31 b(Keyw)m(ord)f(Subroutines:)38 b(page)31 b(78)382 2199 y Fe(FTPREC\(unit,card,)43 b(>)k(status\))382 2312 y (FTPCOM\(unit,comment,)42 b(>)48 b(status\))382 2425 y(FTPHIS\(unit,history,)42 b(>)48 b(status\))382 2538 y(FTPDAT\(unit,)c(>)k(status\))382 2651 y(FTPKY[JLS]\(unit,keyword,)o (key)o(val,)o(comm)o(ent)o(,)42 b(>)47 b(status\))382 2764 y(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o (omme)o(nt,)41 b(>)48 b(status\))382 2877 y(FTPKLS\(unit,keyword,keyv)o (al,)o(comm)o(ent,)41 b(>)47 b(status\))382 2990 y(FTPLSW\(unit,)d(>)k (status\))382 3103 y(FTPKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))382 3216 y(FTPKN[JLS]\(unit,keyroot,)o(sta)o(rtno)o (,no_)o(key)o(s,ke)o(yval)o(s,c)o(omme)o(nts,)41 b(>)47 b(status\))382 3329 y(FTPKN[EDFG]\(unit,keyroot)o(,st)o(artn)o(o,no)o (_ke)o(ys,k)o(eyva)o(ls,)o(deci)o(mals)o(,co)o(mmen)o(ts,)41 b(>)907 3441 y(status\))382 3554 y(FTCPKYinunit,)j(outunit,)i(innum,)g (outnum,)f(keyroot,)h(>)h(status\))382 3667 y (FTPKYT\(unit,keyword,intv)o(al,)o(dblv)o(al,c)o(omm)o(ent,)41 b(>)48 b(status\))382 3780 y(FTPKTP\(unit,)c(filename,)i(>)h(status\)) 382 3893 y(FTPUNT\(unit,keyword,unit)o(s,)41 b(>)48 b(status\))0 4151 y Fi(Insert)30 b(Keyw)m(ord)g(Subroutines:)38 b(page)31 b(80)382 4408 y Fe(FTIREC\(unit,key_no,card,)41 b(>)47 b(status\))382 4521 y(FTIKY[JLS]\(unit,keyword,)o(key)o(val,)o(comm)o (ent)o(,)42 b(>)47 b(status\))382 4634 y(FTIKLS\(unit,keyword,keyv)o (al,)o(comm)o(ent,)41 b(>)47 b(status\))382 4747 y (FTIKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o (nt,)41 b(>)48 b(status\))382 4860 y(FTIKYU\(unit,keyword,comm)o(ent)o (,)42 b(>)47 b(status\))0 5118 y Fi(Read)31 b(Keyw)m(ord)f (Subroutines:)38 b(page)31 b(81)382 5375 y Fe(FTGREC\(unit,key_no,)42 b(>)48 b(card,status\))382 5488 y(FTGKYN\(unit,key_no,)42 b(>)48 b(keyword,value,comment,st)o(atu)o(s\))382 5601 y(FTGCRD\(unit,keyword,)42 b(>)48 b(card,status\))382 5714 y(FTGNXK\(unit,inclist,ninc)o(,ex)o(clis)o(t,ne)o(xc,)41 b(>)48 b(card,status\))p eop %%Page: 112 118 112 117 bop 0 299 a Fi(112)281 b Fg(CHAPTER)30 b(10.)112 b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTGKEY\(unit,keyword,)42 b(>)48 b(value,comment,status\))382 668 y(FTGKY[EDJLS]\(unit,keywor)o (d,)41 b(>)48 b(keyval,comment,status\))382 781 y (FTGKN[EDJLS]\(unit,keyroo)o(t,s)o(tart)o(no,m)o(ax_)o(keys)o(,)42 b(>)47 b(keyvals,nfound,status\))382 894 y(FTGKYT\(unit,keyword,)42 b(>)48 b(intval,dblval,comment,s)o(tat)o(us\))382 1007 y(FTGUNT\(unit,keyword,)42 b(>)48 b(units,status\))0 1263 y Fi(Mo)s(dify)29 b(Keyw)m(ord)h(Subroutines:)38 b(page)31 b(82)382 1519 y Fe(FTMREC\(unit,key_no,card,)41 b(>)47 b(status\))382 1632 y(FTMCRD\(unit,keyword,card)o(,)42 b(>)47 b(status\))382 1745 y(FTMNAM\(unit,oldkey,keywo)o(rd,)41 b(>)48 b(status\))382 1858 y(FTMCOM\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))382 1971 y(FTMKY[JLS]\(unit,keyword,)o(key)o(val,)o (comm)o(ent)o(,)42 b(>)47 b(status\))382 2084 y (FTMKLS\(unit,keyword,keyv)o(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 2197 y(FTMKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o (ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))382 2310 y(FTMKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 2566 y Fi(Up)s(date)30 b(Keyw)m(ord)g(Subroutines:)38 b(page)32 b(83)382 2822 y Fe(FTUCRD\(unit,keyword,card)o(,)42 b(>)47 b(status\))382 2935 y(FTUKY[JLS]\(unit,keyword,)o(key)o(val,)o (comm)o(ent)o(,)42 b(>)47 b(status\))382 3048 y (FTUKLS\(unit,keyword,keyv)o(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 3161 y(FTUKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o (ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))382 3274 y(FTUKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0 3530 y Fi(Delete)32 b(Keyw)m(ord)e(Subroutines:)38 b(page)31 b(84)382 3786 y Fe(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382 3899 y(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 4155 y Fi(De\014ne)31 b(Data)h(Scaling)d(P)m(arameters)i(and)f(Unde\014ned)f (Pixel)g(Flags:)41 b(page)31 b(84)382 4411 y Fe (FTPSCL\(unit,bscale,bzero)o(,)42 b(>)47 b(status\))382 4524 y(FTTSCL\(unit,colnum,tscal)o(,tz)o(ero,)41 b(>)48 b(status\))382 4637 y(FTPNUL\(unit,blank,)43 b(>)k(status\))382 4750 y(FTSNUL\(unit,colnum,snull)41 b(>)47 b(status\))382 4863 y(FTTNUL\(unit,colnum,tnull)41 b(>)47 b(status\))0 5119 y Fi(FITS)30 b(Primary)e(Arra)m(y)j(or)f(IMA)m(GE)i(Extension)d (I/O)i(Subroutines:)38 b(page)31 b(85)382 5375 y Fe(FTGIDT\(unit,)44 b(>)k(bitpix,status\))382 5488 y(FTGIET\(unit,)c(>)k(bitpix,status\)) 382 5601 y(FTGIDM\(unit,)c(>)k(naxis,status\))382 5714 y(FTGISZ\(unit,)c(maxdim,)i(>)i(naxes,status\))p eop %%Page: 113 119 113 118 bop 3764 299 a Fi(113)382 555 y Fe(FTGIPR\(unit,)44 b(maxdim,)i(>)i(bitpix,naxis,naxes,stat)o(us\))382 668 y(FTPPR[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o(ts,v)o(alue)o (s,)41 b(>)48 b(status\))382 781 y(FTPPN[BIJED]\(unit,group,)o(fpi)o (xel,)o(nele)o(men)o(ts,v)o(alue)o(s,n)o(ullv)o(al)42 b(>)47 b(status\))382 894 y(FTPPRU\(unit,group,fpixel)o(,ne)o(leme)o (nts,)41 b(>)47 b(status\))382 1007 y(FTGPV[BIJED]\(unit,group,)o(fpi)o (xel,)o(nele)o(men)o(ts,n)o(ullv)o(al,)41 b(>)48 b (values,anyf,status\))382 1120 y(FTGPF[BIJED]\(unit,group,)o(fpi)o (xel,)o(nele)o(men)o(ts,)41 b(>)48 b(values,flagvals,anyf,sta)o(tus)o (\))382 1233 y(FTPGP[BIJED]\(unit,group,)o(fpa)o(rm,n)o(parm)o(,va)o (lues)o(,)42 b(>)47 b(status\))382 1346 y(FTGGP[BIJED]\(unit,group,)o (fpa)o(rm,n)o(parm)o(,)42 b(>)47 b(values,status\))382 1458 y(FTP2D[BIJED]\(unit,group,)o(dim)o(1,na)o(xis1)o(,na)o(xis2)o (,ima)o(ge,)41 b(>)48 b(status\))382 1571 y(FTP3D[BIJED]\(unit,group,)o (dim)o(1,di)o(m2,n)o(axi)o(s1,n)o(axis)o(2,n)o(axis)o(3,cu)o(be,)41 b(>)48 b(status\))382 1684 y(FTG2D[BIJED]\(unit,group,)o(nul)o(lval)o (,dim)o(1,n)o(axis)o(1,na)o(xis)o(2,)42 b(>)47 b(image,anyf,status\)) 382 1797 y(FTG3D[BIJED]\(unit,group,)o(nul)o(lval)o(,dim)o(1,d)o(im2,)o (naxi)o(s1,)o(naxi)o(s2,n)o(axi)o(s3,)41 b(>)1002 1910 y(cube,anyf,status\))382 2023 y(FTPSS[BIJED]\(unit,group,)o(nax)o(is,n) o(axes)o(,fp)o(ixel)o(s,lp)o(ixe)o(ls,a)o(rray)o(,)h(>)47 b(status\))382 2136 y(FTGSV[BIJED]\(unit,group,)o(nax)o(is,n)o(axes)o (,fp)o(ixel)o(s,lp)o(ixe)o(ls,i)o(ncs,)o(nul)o(lval)o(,)42 b(>)1002 2249 y(array,anyf,status\))382 2362 y (FTGSF[BIJED]\(unit,group,)o(nax)o(is,n)o(axes)o(,fp)o(ixel)o(s,lp)o (ixe)o(ls,i)o(ncs,)f(>)1002 2475 y(array,flagvals,anyf,statu)o(s\))0 2739 y Fi(T)-8 b(able)30 b(Column)e(Information)i(Subroutines:)38 b(page)31 b(88)382 3003 y Fe(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\)) 382 3115 y(FTGNCL\(unit,)e(>)k(ncols,)e(status\))382 3228 y(FTGCNO\(unit,casesen,colt)o(emp)o(late)o(,)c(>)47 b(colnum,status\))382 3341 y(FTGCNN\(unit,casesen,colt)o(emp)o(late)o (,)42 b(>)47 b(colnam,colnum,status\))382 3454 y(FTGTCL\(unit,colnum,) 42 b(>)48 b(datacode,repeat,width,st)o(atu)o(s\))382 3567 y(FTEQTY\(unit,colnum,)42 b(>)48 b(datacode,repeat,width,st)o(atu) o(s\))382 3680 y(FTGCDW\(unit,colnum,)42 b(>)48 b(dispwidth,status\)) 382 3793 y(FTGACL\(unit,colnum,)42 b(>)716 3906 y (ttype,tbcol,tunit,tform,)o(tsca)o(l,t)o(zero)o(,snu)o(ll,)o(tdis)o (p,st)o(atu)o(s\))382 4019 y(FTGBCL\(unit,colnum,)g(>)716 4132 y(ttype,tunit,datatype,rep)o(eat,)o(tsc)o(al,t)o(zero)o(,tn)o (ull,)o(tdis)o(p,s)o(tatu)o(s\))382 4245 y(FTPTDM\(unit,colnum,naxis)o (,na)o(xes,)f(>)48 b(status\))382 4357 y(FTGTDM\(unit,colnum,maxdi)o (m,)41 b(>)48 b(naxis,naxes,status\))382 4470 y (FTDTDM\(unit,tdimstr,coln)o(um,)o(maxd)o(im,)41 b(>)48 b(naxis,naxes,)c(status\))382 4583 y(FFGRSZ\(unit,)g(>)k (nrows,status\))0 4847 y Fi(Lo)m(w-Lev)m(el)31 b(T)-8 b(able)30 b(Access)i(Subroutines:)38 b(page)31 b(91)382 5111 y Fe(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 b(>)48 b(string,status\))382 5224 y(FTPTBS\(unit,frow,startch)o(ar,)o (ncha)o(rs,s)o(tri)o(ng,)41 b(>)48 b(status\))382 5337 y(FTGTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 b(>)48 b(array,status\))382 5450 y(FTPTBB\(unit,frow,startch)o(ar,)o(ncha)o (rs,a)o(rra)o(y,)42 b(>)47 b(status\))0 5714 y Fi(Edit)29 b(Ro)m(ws)i(or)f(Columns)f(page)i(92)p eop %%Page: 114 120 114 119 bop 0 299 a Fi(114)281 b Fg(CHAPTER)30 b(10.)112 b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTIROW\(unit,frow,nrows,)41 b(>)48 b(status\))382 668 y(FTDROW\(unit,frow,nrows,)41 b(>)48 b(status\))382 781 y(FTDRRG\(unit,rowrange,)42 b(>)47 b(status\))382 894 y(FTDRWS\(unit,rowlist,nrow)o(s,)41 b(>)48 b(status\))382 1007 y(FTICOL\(unit,colnum,ttype)o(,tf)o(orm,)41 b(>)48 b(status\))382 1120 y(FTICLS\(unit,colnum,ncols)o(,tt)o(ype,)o (tfor)o(m,)41 b(>)48 b(status\))382 1233 y(FTMVEC\(unit,colnum,newve)o (cle)o(n,)42 b(>)47 b(status\))382 1346 y(FTDCOL\(unit,colnum,)42 b(>)48 b(status\))382 1458 y(FTCPCL\(inunit,outunit,in)o(col)o(num,)o (outc)o(oln)o(um,c)o(reat)o(eco)o(l,)42 b(>)47 b(status\);)0 1716 y Fi(Read)31 b(and)e(W)-8 b(rite)31 b(Column)e(Data)j(Routines)d (page)i(93)382 1974 y Fe(FTPCL[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f) o(ele)o(m,ne)o(leme)o(nts)o(,val)o(ues,)41 b(>)47 b(status\))382 2087 y(FTPCN[BIJED]\(unit,colnum)o(,fr)o(ow,f)o(elem)o(,ne)o(leme)o (nts,)o(val)o(ues,)o(null)o(val)41 b(>)48 b(status\))382 2199 y(FTPCLX\(unit,colnum,frow,)o(fbi)o(t,nb)o(it,l)o(ray)o(,)42 b(>)47 b(status\))382 2312 y(FTPCLU\(unit,colnum,frow,)o(fel)o(em,n)o (elem)o(ent)o(s,)42 b(>)47 b(status\))382 2425 y (FTGCL\(unit,colnum,frow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42 b(>)47 b(values,status\))382 2538 y(FTGCV[SBIJEDCM]\(unit,col)o(num)o (,fro)o(w,fe)o(lem)o(,nel)o(emen)o(ts,)o(null)o(val,)41 b(>)1098 2651 y(values,anyf,status\))382 2764 y (FTGCF[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)o(ele)o(m,ne)o(leme)o (nts)o(,)h(>)1193 2877 y(values,flagvals,anyf,stat)o(us\))382 2990 y(FTGSV[BIJED]\(unit,colnum)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o (ls,l)o(pix)o(els,)o(incs)o(,nu)o(llva)o(l,)g(>)1002 3103 y(array,anyf,status\))382 3216 y(FTGSF[BIJED]\(unit,colnum)o(,na)o (xis,)o(naxe)o(s,f)o(pixe)o(ls,l)o(pix)o(els,)o(incs)o(,)g(>)1002 3329 y(array,flagvals,anyf,statu)o(s\))382 3441 y (FTGCX\(unit,colnum,frow,f)o(bit)o(,nbi)o(t,)g(>)47 b(lray,status\))382 3554 y(FTGCX[IJD]\(unit,colnum,f)o(row)o(,nro)o(ws,f)o(bit)o(,nbi)o(t,) 42 b(>)47 b(array,status\))382 3667 y(FTGDES\(unit,colnum,rownu)o(m,)41 b(>)48 b(nelements,offset,status\))382 3780 y (FTPDES\(unit,colnum,rownu)o(m,n)o(elem)o(ents)o(,of)o(fset)o(,)42 b(>)47 b(status\))0 4038 y Fi(Ro)m(w)31 b(Selection)f(and)f(Calculator) h(Routines:)40 b(page)31 b(96)382 4295 y Fe(FTFROW\(unit,expr,firstro)o (w,)41 b(nrows,)47 b(>)g(n_good_rows,)d(row_status,)h(status\))382 4408 y(FTFFRW\(unit,)f(expr,)j(>)g(rownum,)f(status\))382 4521 y(FTSROW\(inunit,)e(outunit,)h(expr,)i(>)g(status)f(\))382 4634 y(FTCROW\(unit,datatype,exp)o(r,f)o(irst)o(row,)o(nel)o(emen)o (ts,n)o(ulv)o(al,)41 b(>)620 4747 y(array,anynul,status\))382 4860 y(FTCALC\(inunit,)j(expr,)i(outunit,)g(parName,)f(parInfo,)h(>)h (status\))382 4973 y(FTCALC_RNG\(inunit,)c(expr,)j(outunit,)g(parName,) f(parInfo,)573 5086 y(nranges,)g(firstrow,)h(lastrow,)f(>)j(status\)) 382 5199 y(FTTEXP\(unit,)c(expr,)j(>)g(datatype,)e(nelem,)h(naxis,)h (naxes,)f(status\))0 5456 y Fi(Celestial)29 b(Co)s(ordinate)h(System)g (Subroutines:)38 b(page)31 b(98)382 5714 y Fe(FTGICS\(unit,)44 b(>)k(xrval,yrval,xrpix,yrpix)o(,xin)o(c,yi)o(nc,)o(rot,)o(coor)o(dty)o (pe,s)o(tatu)o(s\))p eop %%Page: 115 121 115 120 bop 3764 299 a Fi(115)382 555 y Fe(FTGTCS\(unit,xcol,ycol,)42 b(>)716 668 y(xrval,yrval,xrpix,yrpix,)o(xinc)o(,yi)o(nc,r)o(ot,c)o (oor)o(dtyp)o(e,st)o(atu)o(s\))382 781 y(FTWLDP\(xpix,ypix,xrval,y)o (rva)o(l,xr)o(pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 894 y(coordtype,)j(>)i(xpos,ypos,status\))382 1007 y (FTXYPX\(xpos,ypos,xrval,y)o(rva)o(l,xr)o(pix,)o(yrp)o(ix,x)o(inc,)o (yin)o(c,ro)o(t,)1241 1120 y(coordtype,)e(>)i(xpix,ypix,status\))0 1340 y Fi(File)30 b(Chec)m(ksum)f(Subroutines:)39 b(page)31 b(99)382 1560 y Fe(FTPCKS\(unit,)44 b(>)k(status\))382 1673 y(FTUCKS\(unit,)c(>)k(status\))382 1785 y(FTVCKS\(unit,)c(>)k (dataok,hduok,status\))382 1898 y(FTGCKS\(unit,)c(>)k (datasum,hdusum,status\))382 2011 y(FTESUM\(sum,complement,)42 b(>)47 b(checksum\))382 2124 y(FTDSUM\(checksum,compleme)o(nt,)41 b(>)48 b(sum\))0 2457 y Fi(Time)29 b(and)h(Date)i(Utilit)m(y)e (Subroutines:)38 b(page)31 b(101)382 2677 y Fe(FTGSDT\()46 b(>)h(day,)g(month,)f(year,)g(status)g(\))382 2790 y(FTGSTM\(>)f (datestr,)h(timeref,)f(status\))382 2903 y(FTDT2S\()h(year,)g(month,)g (day,)h(>)g(datestr,)f(status\))382 3016 y(FTTM2S\()g(year,)g(month,)g (day,)h(hour,)f(minute,)g(second,)g(decimals,)764 3129 y(>)h(datestr,)f(status\))382 3242 y(FTS2DT\(datestr,)d(>)48 b(year,)e(month,)g(day,)h(status\))382 3354 y(FTS2TM\(datestr,)c(>)48 b(year,)e(month,)g(day,)h(hour,)f(minute,)g(second,)g(status\))0 3574 y Fi(General)30 b(Utilit)m(y)g(Subroutines:)38 b(page)31 b(102)382 3794 y Fe(FTGHAD\(unit,)44 b(>)k(curaddr,nextaddr\))382 3907 y(FTUPCH\(string\))382 4020 y(FTCMPS\(str_template,stri)o(ng,)o (case)o(sen,)41 b(>)47 b(match,exact\))382 4133 y(FTTKEY\(keyword,)c(>) 48 b(status\))382 4246 y(FTTREC\(card,)c(>)k(status\))382 4359 y(FTNCHK\(unit,)c(>)k(status\))382 4472 y(FTGKNM\(unit,)c(>)k (keyword,)d(keylength,)g(status\))382 4585 y(FTPSVC\(card,)f(>)k (value,comment,status\))382 4698 y(FTKEYN\(keyroot,seq_no,)42 b(>)47 b(keyword,status\))382 4811 y(FTNKEY\(seq_no,keyroot,)42 b(>)47 b(keyword,status\))382 4924 y(FTDTYP\(value,)d(>)j (dtype,status\))382 5036 y(class)f(=)i(FTGKCL\(card\))382 5149 y(FTASFM\(tform,)c(>)j(datacode,width,decimals,st)o(atus)o(\))382 5262 y(FTBNFM\(tform,)d(>)j(datacode,repeat,width,stat)o(us\))382 5375 y(FTGABC\(tfields,tform,spa)o(ce,)41 b(>)48 b (rowlen,tbcol,status\))382 5488 y(FTGTHD\(template,)43 b(>)48 b(card,hdtype,status\))382 5601 y(FTRWRG\(rowlist,)43 b(maxrows,)j(maxranges,)f(>)i(numranges,)e(rangemin,)716 5714 y(rangemax,)g(status\))p eop %%Page: 116 122 116 121 bop 0 299 a Fi(116)281 b Fg(CHAPTER)30 b(10.)112 b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)p eop %%Page: 117 123 117 122 bop 0 1225 a Ff(Chapter)65 b(11)0 1687 y Fl(P)-6 b(arameter)77 b(De\014nitions)0 2180 y Fe(anyf)47 b(-)g(\(logical\))e (set)i(to)g(TRUE)g(if)g(any)g(of)g(the)g(returned)f(data)g(values)h (are)f(undefined)0 2293 y(array)g(-)i(\(any)e(datatype)g(except)g (character\))f(array)h(of)i(bytes)e(to)h(be)g(read)g(or)g(written.)0 2406 y(bitpix)f(-)i(\(integer\))d(bits)h(per)h(pixel:)f(8,)i(16,)f(32,) f(-32,)h(or)g(-64)0 2518 y(blank)f(-)i(\(integer\))d(value)h(used)h (for)g(undefined)e(pixels)h(in)i(integer)d(primary)h(array)0 2631 y(blocksize)f(-)j(\(integer\))d(2880-byte)g(logical)h(record)g (blocking)g(factor)477 2744 y(\(if)h(0)h(<)f(blocksize)e(<)j(11\))f(or) g(the)g(actual)f(block)g(size)h(in)g(bytes)477 2857 y(\(if)g(10)g(<)h (blocksize)d(<)j(28800\).)93 b(As)47 b(of)g(version)f(3.3)h(of)g (FITSIO,)477 2970 y(blocksizes)e(greater)h(than)h(2880)f(are)h(no)g (longer)g(supported.)0 3083 y(bscale)f(-)i(\(double)d(precision\))g (scaling)h(factor)g(for)h(the)g(primary)f(array)0 3196 y(bytlen)g(-)i(\(integer\))d(length)h(of)h(the)g(data)g(unit,)f(in)h (bytes)0 3309 y(bzero)f(-)i(\(double)e(precision\))f(zero)h(point)h (for)g(primary)e(array)i(scaling)0 3422 y(card)g(-)g(\(character*80\))d (header)i(record)g(to)h(be)h(read)e(or)h(written)0 3535 y(casesen)f(-)h(\(logical\))f(will)g(string)g(matching)g(be)h(case)g (sensitive?)0 3648 y(checksum)f(-)h(\(character*16\))d(encoded)i (checksum)f(string)0 3760 y(colname)h(-)h(\(character\))e(ASCII)h(name) h(of)g(the)g(column)0 3873 y(colnum)f(-)i(\(integer\))d(number)h(of)h (the)g(column)f(\(first)g(column)g(=)i(1\))0 3986 y(coltemplate)d(-)i (\(character\))e(template)g(string)i(to)g(be)g(matched)f(to)h(column)f (names)0 4099 y(comment)g(-)h(\(character\))e(the)i(keyword)f(comment)g (field)0 4212 y(comments)g(-)h(\(character)e(array\))h(keyword)g (comment)g(fields)0 4325 y(compid)g(-)i(\(integer\))d(the)i(type)f(of)i (computer)d(that)i(the)g(program)e(is)j(running)d(on)0 4438 y(complement)g(-)i(\(logical\))f(should)g(the)h(checksum)e(be)i (complemented?)0 4551 y(coordtype)e(-)j(\(character\))c(type)j(of)g (coordinate)e(projection)g(\(-SIN,)h(-TAN,)h(-ARC,)477 4664 y(-NCP,)g(-GLS,)f(-MER,)g(or)i(-AIT\))0 4777 y(cube)f(-)g(3D)g (data)g(cube)g(of)g(the)g(appropriate)d(datatype)0 4890 y(curaddr)i(-)h(\(integer\))f(starting)f(address)h(\(in)h(bytes\))f(of) h(the)g(CHDU)0 5002 y(datacode)f(-)h(\(integer\))e(symbolic)h(code)g (of)i(the)f(binary)f(table)g(column)g(datatype)0 5115 y(dataok)g(-)i(\(integer\))d(was)i(the)g(data)f(unit)h(verification)d (successful)h(\(=1\))i(or)430 5228 y(not)f(\(=)i(-1\).)94 b(Equals)46 b(zero)h(if)g(the)g(DATASUM)f(keyword)f(is)j(not)f (present.)0 5341 y(datasum)f(-)h(\(double)f(precision\))f(32-bit)h(1's) h(complement)e(checksum)h(for)h(the)f(data)h(unit)0 5454 y(datatype)f(-)h(\(character\))e(datatype)g(\(format\))h(of)h(the)g (binary)f(table)g(column)0 5567 y(datestr)94 b(-)47 b(\(string\))f (FITS)g(date/time)f(string:)h('YYYY-MM-DDThh:mm:ss.ddd')o(,)525 5680 y('YYYY-MM-dd',)e(or)j('dd/mm/yy')1882 5942 y Fi(117)p eop %%Page: 118 124 118 123 bop 0 299 a Fi(118)1779 b Fg(CHAPTER)30 b(11.)112 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y Fe(day)47 b(-)g(\(integer\))f(current)f(day)i(of)h(the)e(month)0 668 y(dblval)g(-)i(\(double)d(precision\))g(fractional)g(part)i(of)g (the)g(keyword)f(value)0 781 y(decimals)g(-)h(\(integer\))e(number)h (of)i(decimal)d(places)h(to)i(be)f(displayed)0 894 y(dim1)g(-)g (\(integer\))e(actual)h(size)h(of)g(the)g(first)g(dimension)e(of)i(the) g(image)f(or)h(cube)g(array)0 1007 y(dim2)g(-)g(\(integer\))e(actual)h (size)h(of)g(the)g(second)f(dimension)g(of)h(the)g(cube)f(array)0 1120 y(dispwidth)f(-)j(\(integer\))d(-)i(the)g(display)f(width)h (\(length)e(of)j(string\))d(for)i(a)h(column)0 1233 y(dtype)e(-)i (\(character\))d(datatype)g(of)i(the)g(keyword)f(\('C',)g('L',)h('I',) 94 b(or)48 b('F'\))764 1346 y(C)f(=)h(character)d(string)764 1458 y(L)i(=)h(logical)764 1571 y(I)f(=)h(integer)764 1684 y(F)f(=)h(floating)d(point)h(number)0 1797 y(errmsg)g(-)i (\(character*80\))43 b(oldest)k(error)f(message)g(on)h(the)g(internal)e (stack)0 1910 y(errtext)h(-)h(\(character*30\))d(descriptive)h(error)h (message)g(corresponding)e(to)j(error)g(number)0 2023 y(casesen)f(-)h(\(logical\))f(true)g(if)h(column)f(name)h(matching)f (is)h(case)f(sensitive)0 2136 y(exact)g(-)i(\(logical\))d(do)i(the)g (strings)f(match)g(exactly,)g(or)h(were)g(wildcards)e(used?)0 2249 y(exclist)94 b(\(character)45 b(array\))h(list)g(of)h(names)g(to)g (be)g(excluded)f(from)g(search)0 2362 y(exists)142 b(-)47 b(flag)g(indicating)e(whether)g(the)i(file)g(or)g(compressed)e(file)i (exists)f(on)h(disk)0 2475 y(extend)f(-)i(\(logical\))d(true)h(if)i (there)e(may)h(be)g(extensions)e(following)g(the)i(primary)f(data)0 2588 y(extname)g(-)h(\(character\))e(value)h(of)i(the)e(EXTNAME)g (keyword)g(\(if)h(not)g(blank\))0 2700 y(fbit)g(-)g(\(integer\))e (first)i(bit)g(in)g(the)g(field)f(to)h(be)g(read)g(or)g(written)0 2813 y(felem)f(-)i(\(integer\))d(first)h(pixel)h(of)g(the)g(element)f (vector)g(\(ignored)f(for)i(ASCII)g(tables\))0 2926 y(filename)f(-)h (\(character\))e(name)h(of)i(the)e(FITS)h(file)0 3039 y(flagvals)f(-)h(\(logical)f(array\))g(True)g(if)h(corresponding)e (data)h(element)g(is)h(undefined)0 3152 y(fparm)f(-)i(\(integer\))d (sequence)h(number)g(of)h(the)g(first)f(group)h(parameter)e(to)i(read)g (or)g(write)0 3265 y(fpixel)f(-)i(\(integer\))d(the)i(first)f(pixel)g (position)0 3378 y(fpixels)g(-)h(\(integer)f(array\))g(the)h(first)f (included)g(pixel)g(in)h(each)g(dimension)0 3491 y(frow)g(-)g (\(integer\))e(beginning)h(row)h(number)f(\(first)g(row)h(of)g(table)f (=)i(1\))0 3604 y(gcount)e(-)i(\(integer\))d(value)h(of)h(the)g(GCOUNT) f(keyword)g(\(usually)g(=)h(1\))0 3717 y(group)f(-)i(\(integer\))d (sequence)h(number)g(of)h(the)g(data)f(group)h(\(=0)g(for)g (non-grouped)d(data\))0 3830 y(hdtype)i(-)i(\(integer\))d(header)h (record)g(type:)g(-1=delete;)93 b(0=append)46 b(or)h(replace;)907 3942 y(1=append;)e(2=this)h(is)h(the)g(END)g(keyword)0 4055 y(hduok)f(-)i(\(integer\))d(was)i(the)g(HDU)g(verification)d (successful)h(\(=1\))i(or)430 4168 y(not)f(\(=)i(-1\).)94 b(Equals)46 b(zero)h(if)g(the)g(CHECKSUM)e(keyword)h(is)h(not)g (present.)0 4281 y(hdusum)f(-)i(\(double)d(precision\))g(32)j(bit)e (1's)h(complement)e(checksum)h(for)h(the)g(entire)f(CHDU)0 4394 y(hdutype)g(-)h(\(integer\))f(type)g(of)h(HDU:)g(0)g(=)h(primary)e (array)g(or)h(IMAGE,)f(1)i(=)f(ASCII)g(table,)907 4507 y(2)g(=)h(binary)e(table,)g(-1)h(=)h(unknown)0 4620 y(history)e(-)h (\(character\))e(the)i(HISTORY)f(keyword)g(comment)f(string)0 4733 y(hour)i(-)g(\(integer\))e(hour)i(from)g(0)g(-)h(23)0 4846 y(image)e(-)i(2D)f(image)f(of)i(the)e(appropriate)f(datatype)0 4959 y(inclist)94 b(\(character)45 b(array\))h(list)g(of)h(names)g(to)g (be)g(included)f(in)h(search)0 5072 y(incs)g(-)g(\(integer)f(array\))g (sampling)f(interval)h(for)h(pixels)f(in)h(each)g(FITS)f(dimension)0 5185 y(intval)g(-)i(\(integer\))d(integer)h(part)g(of)h(the)g(keyword)f (value)0 5297 y(iounit)g(-)i(\(integer\))d(value)h(of)h(an)h(unused)e (I/O)h(unit)f(number)0 5410 y(iunit)g(-)i(\(integer\))d(logical)h(unit) h(number)f(associated)f(with)h(the)h(input)g(FITS)f(file,)h(1-199)0 5523 y(key_no)f(-)i(\(integer\))d(sequence)g(number)h(\(starting)g (with)g(1\))i(of)f(the)g(keyword)e(record)0 5636 y(keylength)g(-)j (\(integer\))d(length)h(of)h(the)g(keyword)f(name)p eop %%Page: 119 125 119 124 bop 3764 299 a Fi(119)0 555 y Fe(keyroot)46 b(-)h (\(character\))e(root)i(string)f(for)h(the)g(keyword)e(name)0 668 y(keysadd)h(-\(integer\))f(number)h(of)h(new)g(keyword)f(records)g (which)g(can)h(fit)g(in)g(the)g(CHU)0 781 y(keysexist)e(-)j (\(integer\))d(number)h(of)h(existing)f(keyword)g(records)f(in)j(the)f (CHU)0 894 y(keyval)f(-)i(value)e(of)h(the)g(keyword)f(in)h(the)g (appropriate)e(datatype)0 1007 y(keyvals)h(-)h(\(array\))f(value)g(of)i (the)f(keywords)e(in)i(the)g(appropriate)e(datatype)0 1120 y(keyword)h(-)h(\(character*8\))d(name)j(of)g(a)h(keyword)0 1233 y(lray)f(-)g(\(logical)f(array\))g(array)g(of)h(logical)f(values)g (corresponding)e(to)k(the)e(bit)h(array)0 1346 y(lpixels)f(-)h (\(integer)f(array\))g(the)h(last)f(included)g(pixel)g(in)i(each)e (dimension)0 1458 y(match)g(-)i(\(logical\))d(do)i(the)g(2)h(strings)d (match?)0 1571 y(maxdim)h(-)i(\(integer\))d(dimensioned)g(size)h(of)h (the)g(NAXES,)f(TTYPE,)g(TFORM)h(or)g(TUNIT)f(arrays)0 1684 y(max_keys)g(-)h(\(integer\))e(maximum)h(number)g(of)h(keywords)f (to)h(search)f(for)0 1797 y(minute)g(-)i(\(integer\))d(minute)h(of)h (an)g(hour)g(\(0)g(-)h(59\))0 1910 y(month)e(-)i(\(integer\))d(current) h(month)g(of)h(the)g(year)g(\(1)g(-)h(12\))0 2023 y(morekeys)e(-)h (\(integer\))e(will)i(leave)f(space)h(in)g(the)g(header)f(for)h(this)f (many)h(more)g(keywords)0 2136 y(naxes)f(-)i(\(integer)d(array\))h (size)h(of)g(each)g(dimension)e(in)i(the)g(FITS)g(array)0 2249 y(naxis)f(-)i(\(integer\))d(number)h(of)h(dimensions)e(in)j(the)e (FITS)h(array)0 2362 y(naxis1)f(-)i(\(integer\))d(length)h(of)h(the)g (X/first)f(axis)g(of)i(the)f(FITS)f(array)0 2475 y(naxis2)g(-)i (\(integer\))d(length)h(of)h(the)g(Y/second)f(axis)g(of)h(the)g(FITS)g (array)0 2588 y(naxis3)f(-)i(\(integer\))d(length)h(of)h(the)g(Z/third) f(axis)g(of)i(the)f(FITS)f(array)0 2700 y(nbit)h(-)g(\(integer\))e (number)h(of)i(bits)e(in)h(the)g(field)g(to)g(read)g(or)g(write)0 2813 y(nchars)f(-)i(\(integer\))d(number)h(of)h(characters)e(to)i(read) g(and)g(return)0 2926 y(ncols)f(-)i(\(integer\))d(number)h(of)h (columns)0 3039 y(nelements)e(-)j(\(integer\))d(number)h(of)h(data)g (elements)e(to)j(read)e(or)h(write)0 3152 y(nexc)142 b(\(integer\))93 b(number)46 b(of)h(names)g(in)g(the)g(exclusion)e (list)i(\(may)f(=)i(0\))0 3265 y(nhdu)f(-)g(\(integer\))e(absolute)h (number)g(of)h(the)g(HDU)g(\(1st)g(HDU)g(=)g(1\))0 3378 y(ninc)142 b(\(integer\))93 b(number)46 b(of)h(names)g(in)g(the)g (inclusion)e(list)0 3491 y(nmove)h(-)i(\(integer\))d(number)h(of)h (HDUs)g(to)g(move)g(\(+)g(or)g(-\),)g(relative)f(to)h(current)f (position)0 3604 y(nfound)g(-)i(\(integer\))d(number)h(of)h(keywords)f (found)g(\(highest)g(keyword)f(number\))0 3717 y(no_keys)h(-)h (\(integer\))f(number)g(of)h(keywords)e(to)j(write)e(in)h(the)g (sequence)0 3830 y(nparm)f(-)i(\(integer\))d(number)h(of)h(group)g (parameters)e(to)i(read)g(or)g(write)0 3942 y(nrows)f(-)i(\(integer\))d (number)h(of)h(rows)g(in)g(the)g(table)0 4055 y(nullval)f(-)h(value)g (to)g(represent)e(undefined)g(pixels,)h(of)h(the)g(appropriate)e (datatype)0 4168 y(nextaddr)h(-)h(\(integer\))e(starting)h(address)g (\(in)h(bytes\))f(of)h(the)g(HDU)g(following)e(the)i(CHDU)0 4281 y(offset)f(-)i(\(integer\))d(byte)h(offset)h(in)g(the)g(heap)f(to) h(the)g(first)g(element)f(of)h(the)g(array)0 4394 y(oldkey)f(-)i (\(character\))c(old)j(name)g(of)g(keyword)f(to)h(be)g(modified)0 4507 y(ounit)f(-)i(\(integer\))d(logical)h(unit)h(number)f(associated)f (with)h(the)h(output)f(FITS)h(file)g(1-199)0 4620 y(pcount)f(-)i (\(integer\))d(value)h(of)h(the)g(PCOUNT)f(keyword)g(\(usually)g(=)h (0\))0 4733 y(repeat)f(-)i(\(integer\))d(length)h(of)h(element)f (vector)g(\(e.g.)g(12J\);)h(ignored)f(for)g(ASCII)h(table)0 4846 y(rot)g(-)g(\(double)f(precision\))f(celestial)g(coordinate)g (rotation)h(angle)g(\(degrees\))0 4959 y(rowlen)g(-)i(\(integer\))d (length)h(of)h(a)h(table)e(row,)h(in)g(characters)e(or)i(bytes)0 5072 y(rowlist)f(-)h(\(integer)f(array\))g(list)h(of)g(row)g(numbers)e (to)j(be)f(deleted)f(in)h(increasing)e(order)0 5185 y(rownum)h(-)i (\(integer\))d(number)h(of)h(the)g(row)g(\(first)f(row)h(=)g(1\))0 5297 y(rowrange-)e(\(string\))h(list)g(of)i(rows)e(or)h(row)g(ranges)f (to)i(be)f(deleted)0 5410 y(rwmode)f(-)i(\(integer\))d(file)h(access)h (mode:)f(0)h(=)h(readonly,)d(1)j(=)f(readwrite)0 5523 y(second)142 b(\(double\)-)45 b(second)h(within)g(minute)g(\(0)h(-)h (60.9999999999\))c(\(leap)i(second!\))0 5636 y(seq_no)g(-)i (\(integer\))d(the)i(sequence)e(number)h(to)i(append)e(to)h(the)g (keyword)f(root)g(name)p eop %%Page: 120 126 120 125 bop 0 299 a Fi(120)1779 b Fg(CHAPTER)30 b(11.)112 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y Fe(simple)46 b(-)i(\(logical\))d(does)h(the)h(FITS)g(file)g(conform)e(to)j(all)f (the)f(FITS)h(standards)0 668 y(snull)f(-)i(\(character\))d(value)h (used)h(to)g(represent)e(undefined)g(values)h(in)i(ASCII)e(table)0 781 y(space)g(-)i(\(integer\))d(number)h(of)h(blank)g(spaces)f(to)h (leave)f(between)g(ASCII)h(table)f(columns)0 894 y(startchar)f(-)j (\(integer\))d(first)h(character)g(in)h(the)g(row)g(to)g(be)g(read)0 1007 y(startno)f(-)h(\(integer\))f(value)g(of)h(the)g(first)f(keyword)g (sequence)g(number)g(\(usually)f(1\))0 1120 y(status)h(-)i(\(integer\)) d(returned)g(error)i(status)f(code)g(\(0)i(=)f(OK\))0 1233 y(str_template)d(\(character\))h(template)h(string)g(to)h(be)g (matched)f(to)h(reference)e(string)0 1346 y(stream)h(-)i(\(character\)) c(output)i(stream)g(for)h(the)g(report:)f(either)g('STDOUT')g(or)h ('STDERR')0 1458 y(string)f(-)i(\(character\))c(character)i(string)0 1571 y(sum)h(-)g(\(double)f(precision\))f(32)i(bit)g(unsigned)f (checksum)f(value)0 1684 y(tbcol)h(-)i(\(integer)d(array\))h(column)h (number)f(of)h(the)g(first)f(character)f(in)j(the)e(field\(s\))0 1797 y(tdisp)g(-)i(\(character\))d(Fortran)g(type)i(display)f(format)g (for)h(the)g(table)f(column)0 1910 y(template-\(character\))c(template) k(string)g(for)h(a)g(FITS)g(header)f(record)0 2023 y(tfields)g(-)h (\(integer\))f(number)g(of)h(fields)f(\(columns\))f(in)i(the)g(table)0 2136 y(tform)f(-)i(\(character)d(array\))h(format)g(of)h(the)g (column\(s\);)e(allowed)h(values)g(are:)430 2249 y(For)g(ASCII)h (tables:)93 b(Iw,)47 b(Aw,)g(Fww.dd,)f(Eww.dd,)g(or)h(Dww.dd)430 2362 y(For)f(binary)h(tables:)e(rL,)i(rX,)g(rB,)g(rI,)g(rJ,)g(rA,)g (rAw,)f(rE,)h(rD,)g(rC,)g(rM)430 2475 y(where)f('w'=width)f(of)i(the)g (field,)f('d'=no.)g(of)h(decimals,)f('r'=repeat)f(count)430 2588 y(Note)h(that)h(the)g('rAw')f(form)h(is)g(non-standard)d (extension)i(to)h(the)430 2700 y(TFORM)f(keyword)g(syntax)g(that)g(is)i (not)f(specifically)d(defined)i(in)h(the)430 2813 y(Binary)f(Tables)g (definition)f(document.)0 2926 y(theap)h(-)i(\(integer\))d(zero)i (indexed)f(byte)g(offset)g(of)h(starting)f(address)g(of)h(the)g(heap) 430 3039 y(relative)e(to)i(the)g(beginning)e(of)j(the)f(binary)f(table) g(data)0 3152 y(tnull)g(-)i(\(integer\))d(value)h(used)h(to)g (represent)f(undefined)f(values)h(in)h(binary)f(table)0 3265 y(ttype)g(-)i(\(character)d(array\))h(label)g(for)h(table)g (column\(s\))0 3378 y(tscal)f(-)i(\(double)e(precision\))f(scaling)g (factor)i(for)f(table)h(column)0 3491 y(tunit)f(-)i(\(character)d (array\))h(physical)f(unit)i(for)g(table)f(column\(s\))0 3604 y(tzero)g(-)i(\(double)e(precision\))f(scaling)g(zero)i(point)f (for)h(table)g(column)0 3717 y(unit)94 b(-)48 b(\(integer\))d(logical)h (unit)h(number)f(associated)f(with)h(the)h(FITS)g(file)f(\(1-199\))0 3830 y(units)g(-)i(\(character\))d(the)h(keyword)g(units)h(string)f (\(e.g.,)g('km/s'\))0 3942 y(value)g(-)i(\(character\))d(the)h(keyword) g(value)h(string)0 4055 y(values)f(-)i(array)e(of)h(data)g(values)f(of) h(the)g(appropriate)e(datatype)0 4168 y(varidat)h(-)h(\(integer\))f (size)g(in)h(bytes)g(of)g(the)g('variable)e(length)h(data)h(area')525 4281 y(following)e(the)i(binary)f(table)h(data)f(\(usually)g(=)h(0\))0 4394 y(version)f(-)h(\(real\))f(current)g(revision)g(number)g(of)h(the) g(library)0 4507 y(width)f(-)i(\(integer\))d(width)h(of)i(the)f (character)e(string)h(field)0 4620 y(xcol)h(-)g(\(integer\))e(number)h (of)i(the)f(column)f(containing)f(the)i(X)g(coordinate)e(values)0 4733 y(xinc)i(-)g(\(double)f(precision\))f(X)i(axis)g(coordinate)e (increment)g(at)i(reference)f(pixel)g(\(deg\))0 4846 y(xpix)h(-)g(\(double)f(precision\))f(X)i(axis)g(pixel)f(location)0 4959 y(xpos)h(-)g(\(double)f(precision\))f(X)i(axis)g(celestial)e (coordinate)g(\(usually)h(RA\))h(\(deg\))0 5072 y(xrpix)f(-)i(\(double) e(precision\))f(X)i(axis)g(reference)e(pixel)h(array)h(location)0 5185 y(xrval)f(-)i(\(double)e(precision\))f(X)i(axis)g(coordinate)e (value)h(at)h(the)g(reference)e(pixel)i(\(deg\))0 5297 y(ycol)g(-)g(\(integer\))e(number)h(of)i(the)f(column)f(containing)f (the)i(X)g(coordinate)e(values)0 5410 y(year)i(-)g(\(integer\))e(last)i (2)g(digits)g(of)g(the)g(year)f(\(00)h(-)h(99\))0 5523 y(yinc)f(-)g(\(double)f(precision\))f(Y)i(axis)g(coordinate)e (increment)g(at)i(reference)f(pixel)g(\(deg\))0 5636 y(ypix)h(-)g(\(double)f(precision\))f(y)i(axis)g(pixel)f(location)p eop %%Page: 121 127 121 126 bop 3764 299 a Fi(121)0 555 y Fe(ypos)47 b(-)g(\(double)f (precision\))f(y)i(axis)g(celestial)e(coordinate)g(\(usually)h(DEC\))g (\(deg\))0 668 y(yrpix)g(-)i(\(double)e(precision\))f(Y)i(axis)g (reference)e(pixel)h(array)h(location)0 781 y(yrval)f(-)i(\(double)e (precision\))f(Y)i(axis)g(coordinate)e(value)h(at)h(the)g(reference)e (pixel)i(\(deg\))p eop %%Page: 122 128 122 127 bop 0 299 a Fi(122)1779 b Fg(CHAPTER)30 b(11.)112 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)p eop %%Page: 123 129 123 128 bop 0 1225 a Ff(Chapter)65 b(12)0 1687 y Fl(FITSIO)76 b(Error)h(Status)h(Co)6 b(des)0 2180 y Fe(Status)46 b(codes)g(in)i(the) f(range)f(-99)h(to)g(-999)94 b(and)47 b(1)h(to)f(999)g(are)g(reserved)e (for)i(future)0 2293 y(FITSIO)f(use.)95 2518 y(0)96 b(OK,)47 b(no)g(error)0 2631 y(101)95 b(input)46 b(and)h(output)f(files)g(are)h (the)g(same)0 2744 y(103)95 b(too)47 b(many)f(FITS)h(files)f(open)h(at) g(once;)f(all)h(internal)f(buffers)g(full)0 2857 y(104)95 b(error)46 b(opening)g(existing)f(file)0 2970 y(105)95 b(error)46 b(creating)g(new)g(FITS)h(file;)f(\(does)h(a)g(file)g(with)g (this)f(name)h(already)f(exist?\))0 3083 y(106)95 b(error)46 b(writing)g(record)g(to)h(FITS)g(file)0 3196 y(107)95 b(end-of-file)44 b(encountered)h(while)h(reading)g(record)g(from)h (FITS)g(file)0 3309 y(108)95 b(error)46 b(reading)g(record)g(from)h (file)0 3422 y(110)95 b(error)46 b(closing)g(FITS)g(file)0 3535 y(111)95 b(internal)45 b(array)i(dimensions)e(exceeded)0 3648 y(112)95 b(Cannot)46 b(modify)g(file)g(with)h(readonly)f(access)0 3760 y(113)95 b(Could)46 b(not)h(allocate)e(memory)0 3873 y(114)95 b(illegal)45 b(logical)h(unit)h(number;)f(must)g(be)i (between)d(1)j(-)f(199,)g(inclusive)0 3986 y(115)95 b(NULL)46 b(input)h(pointer)e(to)j(routine)0 4099 y(116)95 b(error)46 b(seeking)g(position)f(in)j(file)0 4325 y(121)95 b(invalid)45 b(URL)i(prefix)f(on)i(file)e(name)0 4438 y(122)95 b(tried)46 b(to)h(register)f(too)h(many)f(IO)h(drivers)0 4551 y(123)95 b(driver)46 b(initialization)e(failed)0 4664 y(124)95 b(matching)45 b(driver)h(is)h(not)g(registered)0 4777 y(125)95 b(failed)46 b(to)h(parse)f(input)h(file)f(URL)0 4890 y(126)95 b(parse)46 b(error)g(in)i(range)e(list)0 5115 y(151)95 b(bad)47 b(argument)e(in)i(shared)f(memory)g(driver)0 5228 y(152)95 b(null)46 b(pointer)g(passed)g(as)h(an)h(argument)0 5341 y(153)95 b(no)47 b(more)f(free)h(shared)f(memory)g(handles)0 5454 y(154)95 b(shared)46 b(memory)g(driver)g(is)h(not)g(initialized)0 5567 y(155)95 b(IPC)47 b(error)f(returned)f(by)j(a)f(system)f(call)0 5680 y(156)95 b(no)47 b(memory)f(in)h(shared)f(memory)g(driver)1882 5942 y Fi(123)p eop %%Page: 124 130 124 129 bop 0 299 a Fi(124)1613 b Fg(CHAPTER)30 b(12.)112 b(FITSIO)30 b(ERR)m(OR)g(ST)-8 b(A)g(TUS)30 b(CODES)0 555 y Fe(157)95 b(resource)45 b(deadlock)h(would)g(occur)0 668 y(158)95 b(attempt)45 b(to)j(open/create)c(lock)j(file)g(failed)0 781 y(159)95 b(shared)46 b(memory)g(block)g(cannot)g(be)h(resized)f(at) h(the)g(moment)0 1120 y(201)95 b(header)46 b(not)h(empty;)f(can't)g (write)g(required)g(keywords)0 1233 y(202)95 b(specified)45 b(keyword)h(name)g(was)h(not)g(found)g(in)g(the)g(header)0 1346 y(203)95 b(specified)45 b(header)h(record)g(number)g(is)h(out)g (of)g(bounds)0 1458 y(204)95 b(keyword)45 b(value)i(field)f(is)h(blank) 0 1571 y(205)95 b(keyword)45 b(value)i(string)f(is)h(missing)f(the)h (closing)f(quote)g(character)0 1684 y(207)95 b(illegal)45 b(character)h(in)h(keyword)f(name)g(or)i(header)e(record)0 1797 y(208)95 b(keyword)45 b(does)i(not)g(have)g(expected)e(name.)i (Keyword)e(out)i(of)g(sequence?)0 1910 y(209)95 b(keyword)45 b(does)i(not)g(have)g(expected)e(integer)h(value)0 2023 y(210)95 b(could)46 b(not)h(find)g(the)f(required)g(END)h(header)f (keyword)0 2136 y(211)95 b(illegal)45 b(BITPIX)i(keyword)e(value)0 2249 y(212)95 b(illegal)45 b(NAXIS)i(keyword)f(value)0 2362 y(213)95 b(illegal)45 b(NAXISn)i(keyword)e(value:)h(must)h(be)g(0) h(or)f(positive)e(integer)0 2475 y(214)95 b(illegal)45 b(PCOUNT)i(keyword)e(value)0 2588 y(215)95 b(illegal)45 b(GCOUNT)i(keyword)e(value)0 2700 y(216)95 b(illegal)45 b(TFIELDS)h(keyword)g(value)0 2813 y(217)95 b(negative)45 b(ASCII)i(or)g(binary)f(table)g(width)h(value)f(\(NAXIS1\))0 2926 y(218)95 b(negative)45 b(number)h(of)h(rows)g(in)g(ASCII)g(or)g (binary)f(table)g(\(NAXIS2\))0 3039 y(219)95 b(column)46 b(name)g(\(TTYPE)g(keyword\))g(not)h(found)0 3152 y(220)95 b(illegal)45 b(SIMPLE)i(keyword)e(value)0 3265 y(221)95 b(could)46 b(not)h(find)g(the)f(required)g(SIMPLE)g(header)g(keyword)0 3378 y(222)95 b(could)46 b(not)h(find)g(the)f(required)g(BITPIX)g (header)g(keyword)0 3491 y(223)95 b(could)46 b(not)h(find)g(the)f (required)g(NAXIS)g(header)g(keyword)0 3604 y(224)95 b(could)46 b(not)h(find)g(all)f(the)h(required)f(NAXISn)g(keywords)g (in)h(the)g(header)0 3717 y(225)95 b(could)46 b(not)h(find)g(the)f (required)g(XTENSION)g(header)g(keyword)0 3830 y(226)95 b(the)47 b(CHDU)f(is)h(not)g(an)g(ASCII)g(table)f(extension)0 3942 y(227)95 b(the)47 b(CHDU)f(is)h(not)g(a)h(binary)e(table)g (extension)0 4055 y(228)95 b(could)46 b(not)h(find)g(the)f(required)g (PCOUNT)g(header)g(keyword)0 4168 y(229)95 b(could)46 b(not)h(find)g(the)f(required)g(GCOUNT)g(header)g(keyword)0 4281 y(230)95 b(could)46 b(not)h(find)g(the)f(required)g(TFIELDS)g (header)g(keyword)0 4394 y(231)95 b(could)46 b(not)h(find)g(all)f(the)h (required)f(TBCOLn)g(keywords)g(in)h(the)g(header)0 4507 y(232)95 b(could)46 b(not)h(find)g(all)f(the)h(required)f(TFORMn)g (keywords)g(in)h(the)g(header)0 4620 y(233)95 b(the)47 b(CHDU)f(is)h(not)g(an)g(IMAGE)g(extension)0 4733 y(234)95 b(illegal)45 b(TBCOL)i(keyword)f(value;)g(out)h(of)g(range)0 4846 y(235)95 b(this)46 b(operation)g(only)g(allowed)g(for)h(ASCII)f (or)h(BINARY)g(table)f(extension)0 4959 y(236)95 b(column)46 b(is)h(too)g(wide)f(to)i(fit)f(within)f(the)h(specified)e(width)h(of)h (the)g(ASCII)g(table)0 5072 y(237)95 b(the)47 b(specified)e(column)h (name)h(template)e(matched)h(more)h(than)f(one)h(column)f(name)0 5185 y(241)95 b(binary)46 b(table)g(row)h(width)f(is)i(not)e(equal)h (to)g(the)g(sum)g(of)g(the)g(field)f(widths)0 5297 y(251)95 b(unrecognizable)44 b(type)i(of)h(FITS)g(extension)0 5410 y(252)95 b(unrecognizable)44 b(FITS)i(record)0 5523 y(253)95 b(END)47 b(keyword)e(contains)h(non-blank)f(characters)g(in)i (columns)f(9-80)0 5636 y(254)95 b(Header)46 b(fill)g(area)h(contains)f (non-blank)f(characters)p eop %%Page: 125 131 125 130 bop 3764 299 a Fi(125)0 555 y Fe(255)95 b(Data)46 b(fill)h(area)g(contains)e(non-blank)g(on)j(non-zero)d(values)0 668 y(261)95 b(unable)46 b(to)h(parse)f(the)h(TFORM)g(keyword)e(value)i (string)0 781 y(262)95 b(unrecognizable)44 b(TFORM)i(datatype)f(code)0 894 y(263)95 b(illegal)45 b(TDIMn)i(keyword)f(value)0 1120 y(301)95 b(illegal)45 b(HDU)i(number;)f(less)h(than)f(1)i(or)f (greater)f(than)h(internal)e(buffer)h(size)0 1233 y(302)95 b(column)46 b(number)g(out)h(of)g(range)f(\(1)h(-)h(999\))0 1346 y(304)95 b(attempt)45 b(to)j(move)e(to)h(negative)f(file)h(record) f(number)0 1458 y(306)95 b(attempted)45 b(to)i(read)g(or)g(write)f(a)i (negative)d(number)h(of)i(bytes)e(in)h(the)g(FITS)g(file)0 1571 y(307)95 b(illegal)45 b(starting)h(row)h(number)f(for)h(table)f (read)h(or)g(write)f(operation)0 1684 y(308)95 b(illegal)45 b(starting)h(element)g(number)g(for)h(table)f(read)h(or)g(write)f (operation)0 1797 y(309)95 b(attempted)45 b(to)i(read)g(or)g(write)f (character)g(string)g(in)h(non-character)d(table)i(column)0 1910 y(310)95 b(attempted)45 b(to)i(read)g(or)g(write)f(logical)g (value)g(in)i(non-logical)c(table)j(column)0 2023 y(311)95 b(illegal)45 b(ASCII)i(table)f(TFORM)h(format)f(code)g(for)h(attempted) e(operation)0 2136 y(312)95 b(illegal)45 b(binary)i(table)f(TFORM)g (format)g(code)h(for)g(attempted)e(operation)0 2249 y(314)95 b(value)46 b(for)h(undefined)e(pixels)h(has)h(not)g(been)g(defined)0 2362 y(317)95 b(attempted)45 b(to)i(read)g(or)g(write)f(descriptor)f (in)i(a)h(non-descriptor)c(field)0 2475 y(320)95 b(number)46 b(of)h(array)f(dimensions)f(out)i(of)g(range)0 2588 y(321)95 b(first)46 b(pixel)g(number)g(is)i(greater)d(than)i(the)g(last)g(pixel) f(number)0 2700 y(322)95 b(attempt)45 b(to)j(set)f(BSCALE)f(or)h (TSCALn)f(scaling)g(parameter)f(=)i(0)0 2813 y(323)95 b(illegal)45 b(axis)i(length)f(less)h(than)f(1)0 3039 y(340)h(NOT_GROUP_TABLE)d(340)142 b(Grouping)45 b(function)h(error)0 3152 y(341)95 b(HDU_ALREADY_MEMBER)0 3265 y(342)47 b(MEMBER_NOT_FOUND)0 3378 y(343)g(GROUP_NOT_FOUND)0 3491 y(344)g(BAD_GROUP_ID)0 3604 y(345)g(TOO_MANY_HDUS_TRACKED)0 3717 y(346)g(HDU_ALREADY_TRACKED)0 3830 y(347)g(BAD_OPTION)0 3942 y(348)g(IDENTICAL_POINTERS)0 4055 y(349)g(BAD_GROUP_ATTACH)0 4168 y(350)g(BAD_GROUP_DETACH)0 4394 y(360)g(NGP_NO_MEMORY)665 b(malloc)46 b(failed)0 4507 y(361)h(NGP_READ_ERR)713 b(read)46 b(error)h(from)f(file)0 4620 y(362)h(NGP_NUL_PTR)761 b(null)46 b(pointer)g(passed)g(as)h(an)g (argument.)1575 4733 y(Passing)f(null)g(pointer)g(as)h(a)h(name)f(of) 1575 4846 y(template)f(file)g(raises)g(this)h(error)0 4959 y(363)g(NGP_EMPTY_CURLINE)473 b(line)46 b(read)h(seems)f(to)h(be)h (empty)e(\(used)1575 5072 y(internally\))0 5185 y(364)h (NGP_UNREAD_QUEUE_FULL)281 b(cannot)46 b(unread)g(more)g(then)h(1)g (line)g(\(or)g(single)1575 5297 y(line)g(twice\))0 5410 y(365)g(NGP_INC_NESTING)569 b(too)46 b(deep)h(include)f(file)h(nesting) e(\(infinite)1575 5523 y(loop,)h(template)g(includes)f(itself)i(?\))0 5636 y(366)g(NGP_ERR_FOPEN)665 b(fopen\(\))45 b(failed,)h(cannot)g (open)h(template)e(file)p eop %%Page: 126 132 126 131 bop 0 299 a Fi(126)1613 b Fg(CHAPTER)30 b(12.)112 b(FITSIO)30 b(ERR)m(OR)g(ST)-8 b(A)g(TUS)30 b(CODES)0 555 y Fe(367)47 b(NGP_EOF)953 b(end)46 b(of)i(file)e(encountered)f(and) i(not)g(expected)0 668 y(368)g(NGP_BAD_ARG)761 b(bad)46 b(arguments)g(passed.)g(Usually)f(means)1575 781 y(internal)h(parser)g (error.)g(Should)g(not)h(happen)0 894 y(369)g(NGP_TOKEN_NOT_EXPECT)329 b(token)46 b(not)h(expected)e(here)0 1120 y(401)95 b(error)46 b(attempting)f(to)i(convert)f(an)h(integer)f(to)h(a)h(formatted)d (character)g(string)0 1233 y(402)95 b(error)46 b(attempting)f(to)i (convert)f(a)h(real)g(value)f(to)i(a)f(formatted)e(character)h(string)0 1346 y(403)95 b(cannot)46 b(convert)g(a)h(quoted)f(string)g(keyword)g (to)h(an)g(integer)0 1458 y(404)95 b(attempted)45 b(to)i(read)g(a)g (non-logical)e(keyword)h(value)g(as)h(a)h(logical)e(value)0 1571 y(405)95 b(cannot)46 b(convert)g(a)h(quoted)f(string)g(keyword)g (to)h(a)h(real)e(value)0 1684 y(406)95 b(cannot)46 b(convert)g(a)h (quoted)f(string)g(keyword)g(to)h(a)h(double)e(precision)f(value)0 1797 y(407)95 b(error)46 b(attempting)f(to)i(read)g(character)e(string) h(as)h(an)h(integer)0 1910 y(408)95 b(error)46 b(attempting)f(to)i (read)g(character)e(string)h(as)h(a)h(real)e(value)0 2023 y(409)95 b(error)46 b(attempting)f(to)i(read)g(character)e(string) h(as)h(a)h(double)e(precision)f(value)0 2136 y(410)95 b(bad)47 b(keyword)e(datatype)h(code)0 2249 y(411)95 b(illegal)45 b(number)i(of)g(decimal)f(places)g(while)g(formatting)f (floating)h(point)g(value)0 2362 y(412)95 b(numerical)45 b(overflow)g(during)i(implicit)e(datatype)h(conversion)0 2475 y(413)95 b(error)46 b(compressing)f(image)0 2588 y(414)95 b(error)46 b(uncompressing)e(image)0 2700 y(420)95 b(error)46 b(in)h(date)g(or)g(time)g(conversion)0 2926 y(431)95 b(syntax)46 b(error)g(in)h(parser)f(expression)0 3039 y(432)95 b(expression)45 b(did)i(not)f(evaluate)g(to)h(desired)f (type)0 3152 y(433)95 b(vector)46 b(result)g(too)h(large)f(to)h(return) f(in)i(array)0 3265 y(434)95 b(data)46 b(parser)g(failed)g(not)h(sent)g (an)g(out)g(column)0 3378 y(435)95 b(bad)47 b(data)f(encounter)f(while) i(parsing)f(column)0 3491 y(436)95 b(parse)46 b(error:)g(output)g(file) h(not)g(of)g(proper)f(type)0 3717 y(501)95 b(celestial)45 b(angle)h(too)h(large)g(for)f(projection)0 3830 y(502)95 b(bad)47 b(celestial)e(coordinate)g(or)i(pixel)f(value)0 3942 y(503)95 b(error)46 b(in)h(celestial)e(coordinate)g(calculation)0 4055 y(504)95 b(unsupported)44 b(type)j(of)g(celestial)e(projection)0 4168 y(505)95 b(required)45 b(celestial)g(coordinate)g(keywords)h(not)h (found)0 4281 y(506)95 b(approximate)44 b(wcs)j(keyword)f(values)g (were)h(returned)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF