aboutsummaryrefslogtreecommitdiff
path: root/pkg/tbtables/cfitsio/fitsio.ps
blob: ec62e304adeae061acbd64d8ca882fd34c32e18d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912
7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
7970
7971
7972
7973
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170
8171
8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
8251
8252
8253
8254
8255
8256
8257
8258
8259
8260
8261
8262
8263
8264
8265
8266
8267
8268
8269
8270
8271
8272
8273
8274
8275
8276
8277
8278
8279
8280
8281
8282
8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
8306
8307
8308
8309
8310
8311
8312
8313
8314
8315
8316
8317
8318
8319
8320
8321
8322
8323
8324
8325
8326
8327
8328
8329
8330
8331
8332
8333
8334
8335
8336
8337
8338
8339
8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
8364
8365
8366
8367
8368
8369
8370
8371
8372
8373
8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396
8397
8398
8399
8400
8401
8402
8403
8404
8405
8406
8407
8408
8409
8410
8411
8412
8413
8414
8415
8416
8417
8418
8419
8420
8421
8422
8423
8424
8425
8426
8427
8428
8429
8430
8431
8432
8433
8434
8435
8436
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
8490
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
8505
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
8516
8517
8518
8519
8520
8521
8522
8523
8524
8525
8526
8527
8528
8529
8530
8531
8532
8533
8534
8535
8536
8537
8538
8539
8540
8541
8542
8543
8544
8545
8546
8547
8548
8549
8550
8551
8552
8553
8554
8555
8556
8557
8558
8559
8560
8561
8562
8563
8564
8565
8566
8567
8568
8569
8570
8571
8572
8573
8574
8575
8576
8577
8578
8579
8580
8581
8582
8583
8584
8585
8586
8587
8588
8589
8590
8591
8592
8593
8594
8595
8596
8597
8598
8599
8600
8601
8602
8603
8604
8605
8606
8607
8608
8609
8610
8611
8612
8613
8614
8615
8616
8617
8618
8619
8620
8621
8622
8623
8624
8625
8626
8627
8628
8629
8630
8631
8632
8633
8634
8635
8636
8637
8638
8639
8640
8641
8642
8643
8644
8645
8646
8647
8648
8649
8650
8651
8652
8653
8654
8655
8656
8657
8658
8659
8660
8661
8662
8663
8664
8665
8666
8667
8668
8669
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682
8683
8684
8685
8686
8687
8688
8689
8690
8691
8692
8693
8694
8695
8696
8697
8698
8699
8700
8701
8702
8703
8704
8705
8706
8707
8708
8709
8710
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
8748
8749
8750
8751
8752
8753
8754
8755
8756
8757
8758
8759
8760
8761
8762
8763
8764
8765
8766
8767
8768
8769
8770
8771
8772
8773
8774
8775
8776
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
8788
8789
8790
8791
8792
8793
8794
8795
8796
8797
8798
8799
8800
8801
8802
8803
8804
8805
8806
8807
8808
8809
8810
8811
8812
8813
8814
8815
8816
8817
8818
8819
8820
8821
8822
8823
8824
8825
8826
8827
8828
8829
8830
8831
8832
8833
8834
8835
8836
8837
8838
8839
8840
8841
8842
8843
8844
8845
8846
8847
8848
8849
8850
8851
8852
8853
8854
8855
8856
8857
8858
8859
8860
8861
8862
8863
8864
8865
8866
8867
8868
8869
8870
8871
8872
8873
8874
8875
8876
8877
8878
8879
8880
8881
8882
8883
8884
8885
8886
8887
8888
8889
8890
8891
8892
8893
8894
8895
8896
8897
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
8908
8909
8910
8911
8912
8913
8914
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
8925
8926
8927
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
8942
8943
8944
8945
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962
8963
8964
8965
8966
8967
8968
8969
8970
8971
8972
8973
8974
8975
8976
8977
8978
8979
8980
8981
8982
8983
8984
8985
8986
8987
8988
8989
8990
8991
8992
8993
8994
8995
8996
8997
8998
8999
9000
9001
9002
9003
9004
9005
9006
9007
9008
9009
9010
9011
9012
9013
9014
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
9030
9031
9032
9033
9034
9035
9036
9037
9038
9039
9040
9041
9042
9043
9044
9045
9046
9047
9048
9049
9050
9051
9052
9053
9054
9055
9056
9057
9058
9059
9060
9061
9062
9063
9064
9065
9066
9067
9068
9069
9070
9071
9072
9073
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
9084
9085
9086
9087
9088
9089
9090
9091
9092
9093
9094
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105
9106
9107
9108
9109
9110
9111
9112
9113
9114
9115
9116
9117
9118
9119
9120
9121
9122
9123
9124
9125
9126
9127
9128
9129
9130
9131
9132
9133
9134
9135
9136
9137
9138
9139
9140
9141
9142
9143
9144
9145
9146
9147
9148
9149
9150
9151
9152
9153
9154
9155
9156
9157
9158
9159
9160
9161
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171
9172
9173
9174
9175
9176
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
9196
9197
9198
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364
9365
9366
9367
9368
9369
9370
9371
9372
9373
9374
9375
9376
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
9410
9411
9412
9413
9414
9415
9416
9417
9418
9419
9420
9421
9422
9423
9424
9425
9426
9427
9428
9429
9430
9431
9432
9433
9434
9435
9436
9437
9438
9439
9440
9441
9442
9443
9444
9445
9446
9447
9448
9449
9450
9451
9452
9453
9454
9455
9456
9457
9458
9459
9460
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
9476
9477
9478
9479
9480
9481
9482
9483
9484
9485
9486
9487
9488
9489
9490
9491
9492
9493
9494
9495
9496
9497
9498
9499
9500
9501
9502
9503
9504
9505
9506
9507
9508
9509
9510
9511
9512
9513
9514
9515
9516
9517
9518
9519
9520
9521
9522
9523
9524
9525
9526
9527
9528
9529
9530
9531
9532
9533
9534
9535
9536
9537
9538
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
9561
9562
9563
9564
9565
9566
9567
9568
9569
9570
9571
9572
9573
9574
9575
9576
9577
9578
9579
9580
9581
9582
9583
9584
9585
9586
9587
9588
9589
9590
9591
9592
9593
9594
9595
9596
9597
9598
9599
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
9621
9622
9623
9624
9625
9626
9627
9628
9629
9630
9631
9632
9633
9634
9635
9636
9637
9638
9639
9640
9641
9642
9643
9644
9645
9646
9647
9648
9649
9650
9651
9652
9653
9654
9655
9656
9657
9658
9659
9660
9661
9662
9663
9664
9665
9666
9667
9668
9669
9670
9671
9672
9673
9674
9675
9676
9677
9678
9679
9680
9681
9682
9683
9684
9685
9686
9687
9688
9689
9690
9691
9692
9693
9694
9695
9696
9697
9698
9699
9700
9701
9702
9703
9704
9705
9706
9707
9708
9709
9710
9711
9712
9713
9714
9715
9716
9717
9718
9719
9720
9721
9722
9723
9724
9725
9726
9727
9728
9729
9730
9731
9732
9733
9734
9735
9736
9737
9738
9739
9740
9741
9742
9743
9744
9745
9746
9747
9748
9749
9750
9751
9752
9753
9754
9755
9756
9757
9758
9759
9760
9761
9762
9763
9764
9765
9766
9767
9768
9769
9770
9771
9772
9773
9774
9775
9776
9777
9778
9779
9780
9781
9782
9783
9784
9785
9786
9787
9788
9789
9790
9791
9792
9793
9794
9795
9796
9797
9798
9799
9800
9801
9802
9803
9804
9805
9806
9807
9808
9809
9810
9811
9812
9813
9814
9815
9816
9817
9818
9819
9820
9821
9822
9823
9824
9825
9826
9827
9828
9829
9830
9831
9832
9833
9834
9835
9836
9837
9838
9839
9840
9841
9842
9843
9844
9845
9846
9847
9848
9849
9850
9851
9852
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
%%Title: fitsio.dvi
%%Pages: 132
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -N0 fitsio
%DVIPSParameters: dpi=600, compressed
%DVIPSSource:  TeX output 2004.12.03:1404
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end

%%EndProcSet
TeXDict begin 40258431 52099146 1000 600 600 (fitsio.dvi)
@start
%DVIPSBitmapFont: Fa cmmi10 10.95 1
/Fa 1 63 df<126012F8B4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01
FF9038007FC0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1F
F0EE07FCEE01FF9338007FC0EF1FF0EF07F8EF01FCA2EF07F8EF1FF0EF7FC0933801FF00
EE07FCEE1FF0EE7FC04B48C7FCED07FCED1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC049
48C9FCEB07FCEB1FF0EB7FC04848CAFCEA07FCEA1FF0EA7FC048CBFC12FC1270363678B1
47>62 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fb cmbx12 12 58
/Fb 58 122 df<ED0FFF4AB512C0020F14F0027F80903A01FFF803FC499038C000FE010F
EB00034948497E49485B5C495A4C138001FF6E13005CA3705AEE01F893C8FCA74BB51280
B9FCA5C69038E00003B3B0007FD9FFC1B6FCA538467EC53E>12 D<B612F8A91D097F9A25
>45 D<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F0F788E1F
>I<EE01C0EE03E01607A2160F17C0161F1780A2163F17005E167EA216FE5E15015EA215
035EA215075E150F5EA2151F5E153F93C7FCA25D157E15FE5DA214015D14035DA214075D
140F5DA2141F5D143F92C8FCA25C147EA214FE5C13015CA213035C13075CA2130F5C131F
5CA2133F91C9FC5B137EA213FE5B12015BA212035BA212075B120F5BA2121F5B123F90CA
FCA25A127E12FE5AA25A12782B647ACA38>I<EC03C01407141F147FEB03FF133FB6FCA4
13C3EA0003B3B3ADB712FCA5264177C038>49 D<ECFFE0010F13FE013F6D7E90B612E000
0315F82607FC0313FE3A0FE0007FFFD81F806D138048C7000F13C0488001C015E001F07F
00FF6E13F07F17F881A46C5A6C5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1F
FC4B5A5E4B5A4B5A4A90C7FC4A5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8
D907E014F0495A495A49C8FC017C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D
417BC038>I<ECFFF0010713FF011F14C0017F14F049C66C7ED803F8EB3FFED807E06D7E
81D80FF86D138013FE001F16C07FA66C5A6C4815806C485BC814005D5E4B5A4B5A4B5A4A
5B020F1380902607FFFEC7FC15F815FF16C090C713F0ED3FFCED0FFEEEFF80816F13C017
E0A26F13F0A217F8A3EA0FC0EA3FF0487EA2487EA217F0A25D17E06C5A494913C05BD83F
80491380D81FF0491300D80FFEEBFFFE6CB612F800015D6C6C14C0011F49C7FC010113E0
2D427BC038>I<163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F
87EC1F07143E147E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A48
5A485A120F5B48C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038
>I<0007150301E0143F01FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0
C9FCAAEC3FF001C1B5FC01C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D
13804915C0497F6C4815E0C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D
6C4815E05B007EC74813C0123E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6C
B612F0C65D013F1480010F01FCC7FC010113C02D427BC038>I<4AB47E021F13F0027F13
FC49B6FC01079038807F8090390FFC001FD93FF014C04948137F4948EBFFE048495A5A14
00485A120FA248486D13C0EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000
FF017F13E091B512F89039F9F01FFC9039FBC007FE9039FF8003FF17804A6C13C05B6F13
E0A24915F0A317F85BA4127FA5123FA217F07F121FA2000F4A13E0A26C6C15C06D491380
6C018014006C6D485A6C9038E01FFC6DB55A011F5C010714C0010191C7FC9038003FF02D
427BC038>I<121E121F13FC90B712FEA45A17FC17F817F017E017C0A2481680007EC8EA
3F00007C157E5E00785D15014B5A00F84A5A484A5A5E151FC848C7FC157E5DA24A5A1403
5D14074A5AA2141F5D143FA2147F5D14FFA25BA35B92C8FCA35BA55BAA6D5A6D5A6D5A2F
447AC238>I<EC7FF00103B5FC010F14C0013F14F090397F801FFC3A01FC0003FE48486D
7E497F4848EC7F80163F484815C0A2001F151FA27FA27F7F01FE143F6D158002C0137F02
F014006C01FC5B6E485A6C9038FF83FCEDE7F86CECFFE06C5D6C92C7FC6D14C06D80010F
14F882013F8090B7FC48013F14802607FC0F14C0260FF80314E04848C6FC496D13F0003F
141F48481307496D13F8150000FF157F90C8123F161F160FA21607A36D15F0127F160F6D
15E06C6C141F6DEC3FC06C6CEC7F80D80FFE903801FF003A07FFC00FFE6C90B55AC615F0
013F14C0010F91C7FC010013F02D427BC038>I<EC7FF0903807FFFE011F6D7E017F14E0
9039FFE03FF0489038800FF848496C7E48488048486D7E001F80003F1680A2484815C081
17E0A212FF17F0A617F8A45D127FA3003F5CA26C7E5D6C6C5B12076C6C133E6CEBC07C6C
EBFFF8013F5B010F01C013F00101130090C8FCA217E05DA2EA03C0D80FF015C0487E486C
491380A217004B5A150F5E49495A6C48495A01C0EBFFE0260FF0035B6CB65A6C4AC7FC6C
14F86C6C13E0D907FEC8FC2D427BC038>I<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7F
FCEA3FF8EA1FF0EA07C0C7FCAEEA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA
1FF0EA07C00F2C78AB1F>I<EE1F80A24C7EA24C7EA34C7EA24B7FA34B7FA24B7FA34B7F
169F031F80161F82033F80ED3E07037E80157C8203FC804B7E02018115F0820203814B13
7F0207815D173F020F814B7F021F8292C77EA24A82023E80027E82027FB7FCA291B87EA2
498302F0C8FCA20103834A157F0107834A153FA249488284011F8491C97E4984133E017E
82B6020FB612F0A54C457CC455>65 D<B9FC18F018FE727E19E026003FFCC700077F0501
7F716C7E727E727EA2721380A37213C0A74E1380A24E1300A24E5A4E5A4E5A4D5B05075B
94B5128091B700FCC7FC18F018FF19E002FCC7000113F8716C7EF01FFE727E7213801AC0
7213E0A27213F0A31AF8A71AF0A2601AE0604E13C0604E138095B5120005075BBA12F861
19C04EC7FC18E045447CC350>I<DCFFF01470031F01FF14F04AB6EAE0010207EDF80302
3FEDFE0791B539E001FF0F4949C7EA3F9F010701F0EC0FFF4901C0804990C87E49488149
48814948167F4849163F4849161F5A4A160F485B19074890CAFC19035A5BA2007F1801A3
4994C7FC12FFAE127F7F1AF0A2123FA27F6C18011AE06C7F19036C6D17C06E16077E6C6D
EE0F806C6DEE1F006D6C5E6D6C167E6D6C6C5D6D6D4A5A6D01F0EC07F0010101FEEC1FE0
6D903AFFF001FF80023F90B6C7FC020715FC020115F0DA001F1480030001F8C8FC44467A
C451>I<B9FC18F018FE727E19E026003FFEC7001F13F805017F9438003FFF060F7F727F
727F727F84737E737EA2737EA2737EA21B80A2851BC0A51BE0AD1BC0A51B8061A21B0061
62193F624F5A19FF624E5B06075B4E5B063F90C7FC4DB45A050F13F8BA5A19C04EC8FC18
F095C9FC4B447CC356>I<BA12F8A485D8001F90C71201EF003F180F180318011800A219
7E193EA3191EA21778A285A405F890C7FCA316011603161F92B5FCA5ED001F1603160116
00A2F101E01778A2F103C0A494C7FC1907A21A80A2190FA2191FA2193FF17F0061601807
181F4DB5FCBBFC61A443447DC34A>I<BA1280A419C026003FFEC7121F1701EF007F183F
181F180F180719E01803A31801A3EE01E0F000F0A419001603A31607160F167F91B6FCA5
9138FE007F160F16071603A31601A693C9FCAFB712F0A53C447CC346>I<DCFFF0147003
1F01FF14F04AB6EAE0010207EDF803023FEDFE0791B539E001FF0F4949C7EA3F9F010701
F0EC0FFF4901C0804990C87E4948814948814948167F4849163F4849161F5A4A160F485B
19074890CAFC19035A5BA2007F1801A34994C8FC12FFAD057FB612F0127F7FA3003FDC00
01EBF000A27F7EA26C7FA26C7F807E6C7F6C7F6D7E6D6C5D6D6C7E6D6D5C6D01F05C0101
01FE143F6D903AFFF001FF9F023F90B6120F0207EDFC030201EDF000DA001F02C0133003
0001FCC9FC4C467AC458>I<B7D88003B612FEA526003FFEC9EBF800B3A791B9FCA54AC9
FCB3AAB7D88003B612FEA54F447CC358>I<B712E0A5D8001F90C7FCB3B3B3A4B712E0A5
23447DC32A>I<B76C0103B512F8A526003FFEC93807E0004F5A4F5A077EC7FC614E5A4E
5A4E5AF01F804EC8FC187E604D5AEF07F0EF0FC04D5A4DC9FC177E4C5AEE03F04C5A4C5A
4C7EEE7FF04C7E5D4B7F4B7F4B7FED3F3FDB7E1F7F03FC806E486C7F4B7E4B6C7F038080
4B6C7F4A7F717E84717F83717F85717F83717F85717F187F727E86727F84727F86727F84
B76C90B612FCA54E447CC358>75 D<B712F0A526003FFECAFCB3B1F00780A4180F1900A4
60A360A2187EA218FE170117031707171F177FEE03FFB95AA539447CC343>I<B500FE06
7FB512806E95B6FCA26F5EA2D8003F50C7FC013D6DEE03DFA2013C6DEE079FA26E6CEE0F
1FA26E6C161EA26E6C163CA36E6C1678A26E6C16F0A26E6DEC01E0A26E6DEC03C0A36E6D
EC0780A26F6CEC0F00A26F6C141EA26F6C5CA36F6C5CA26F6C5CA26F6D485AA26F6D485A
A26F6D485AA3706C48C7FCA293383FF81EA2706C5AA2706C5AA3706C5AA2705BA2705BA2
705BA2B6057FB6128071C7FCA2173E171C61447CC36A>I<B64BB512FE8181A281D8003F
6D91C7EA780081013D7F81133C6E7E6E7F6E7F6E7F6E7F82806E7F6E7F6F7E6F7F83816F
7F6F7F6F7F6F7F6F7F8382707F707F707F707F8482707F707F717E7113807113C019E083
7113F07113F87113FC7113FE19FF847213F884848484A28484197F193F191FA2190F1907
B61603190119001A78A24F447CC358>I<923807FFC092B512FE0207ECFFC0021F15F091
267FFE0013FC902601FFF0EB1FFF01070180010313C04990C76C7FD91FFC6E6C7E49486F
7E49486F7E01FF8348496F7E48496F1380A248496F13C0A24890C96C13E0A24819F04982
003F19F8A3007F19FC49177FA400FF19FEAD007F19FC6D17FFA3003F19F8A26D5E6C19F0
A26E5D6C19E0A26C6D4B13C06C19806E5D6C6D4B13006C6D4B5A6D6C4B5A6D6C4B5A6D6C
4A5B6D01C001075B6D01F0011F5B010101FE90B5C7FC6D90B65A023F15F8020715C00200
4AC8FC030713C047467AC454>I<B9FC18F018FE727E19E0D8001F90C7000F7F05017F71
6C7E727E727E721380A21AC084A21AE0A91AC0A24E1380A21A00604E5A4E5A4D485A050F
5B92B712C096C7FC18FC18C092CBFCB3A7B712E0A543447DC34D>I<B812F8EFFFC018F8
18FE727ED8001F90C7003F13E005037F05007F727E727E727EA28684A286A762A24E90C7
FCA24E5A61187F943801FFF005075B053F138092B7C8FC18F818E018F892C77FEF3FFF05
0F7F717F717FA2717FA2717FA785A61B0F85A2187F73131F72141EB700E06DEB803E72EB
E0FC72EBFFF8060114F0726C13E0CC0007138050457DC354>82 D<DAFFE0131C010701FE
133C013F9038FF807C90B6EAE0FC4815F9489038801FFF3907FC00014848EB007F484814
3F4848140F491407007F15035B1601160012FF177CA27FA26D153C7F7F6D92C7FC6C7EEB
FFE014FE6CEBFFF015FF6C15E016FC6C816C6F7E6C826C826C6C81011F81010781130002
0F80140003077FED007F82040F1380828212F082A282A27EA218007EA26C5D6C5E6D1403
6D5D6D140701F84A5A01FFEC3FF002F8EBFFE0486CB65AD8FC1F92C7FCD8F80714FC48C6
14F0480107138031467AC43E>I<003FBA12E0A59026FE000FEB8003D87FE09338003FF0
49171F90C71607A2007E1803007C1801A300781800A400F819F8481978A5C81700B3B3A2
0107B8FCA545437CC24E>I<B76C010FB512F8A526003FFEC93803E000B3B3A9011F1707
6280190F6D606F151F6D95C7FC6D6D5D197E6D6D5D6D6D1403DA7FFC4A5A6EB4EC3FF002
0F9039F003FFE06E90B61280020193C8FC6E6C14FC030F14E09226007FFEC9FC4D457CC3
56>I<B792B6FCA526003FFECAEAFC00806D606F15016D608119036D606F15076D606F15
0F6D6081191F6D6D93C7FC61027F163E6F157E023F167C8119FC6E6D5C18016E5E701303
6E5E8218076E6D5C180F6E5E70131F6E93C8FC705B037F143E82187E033F147C7013FC6F
5C17816F5C17C117C36F5C17E76F5C17FF6F5CA36F91C9FCA2705AA2705AA3705AA2705A
A2705AA250457EC355>I<B600FE017FB691B512FEA526007FFCC8D83FFEC9EA7C006E82
013F701778807415F86D705F6F7014016D705FA26F7014036D64814E6D14076D646F7014
0F6D041E94C7FCA26F023E6D5C6DDC3C7F151E81027F037C6D5CF0783F6F70147C023F4B
6C1578A26F01016F13F86E4B6C5D16806E02036F485A4E7E04C0EEE0036E4A486C5DA2DC
E00FEDF0076E4B6C5D16F06E4A6F48C8FC051E7F04F8705A6E4A027F131EA2DCFC7CEDFE
3E037F0178023F133C04FE16FF033F01F85E4D8004FF17F86F496E5BA36F496E5BA26F60
4D80A26F90C86C5BA36F486F90C9FCA26F48167EA30478163C6F457EC374>I<903801FF
E0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F
7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC01000313E0000F
1380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1F
FF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97
D<EB7FC0B5FCA512037EB1ED0FF892B57E02C314E002CF14F89139DFC03FFC9139FF000F
FE02FCEB03FF4A6D13804A15C04A6D13E05CEF7FF0A218F8173FA318FCAC18F8A2177F18
F0A3EFFFE06E15C06E5B6E491380027C491300496C495A903AFC1FC07FFC496CB512F0D9
F00314C049C691C7FCC8EA1FF036467DC43E>I<EC3FFC49B512C0010F14F0013F14FC90
397FF003FE9039FFC001FF0003495A48494813805B120F485AA2485A6F1300007F6E5AED
00784991C7FCA212FFAC6C7EA3123F6DEC03C0A26C6C1407000F16806D140F6C6DEB1F00
6C6D133E6C01F05B3A007FFC03F86DB55A010F14C0010391C7FC9038003FF82A2F7CAD32
>I<EE03FEED07FFA5ED001F160FB1EC3FE0903803FFFC010FEBFF8F013F14CF9039FFF8
07FF48EBC00148903880007F4890C7123F4848141F49140F121F485AA3127F5BA212FFAC
127FA37F123FA26C6C141FA26C6C143F0007157F6C6C91B5FC6CD9C00314FC6C9038F01F
EF6DB5128F011FEBFE0F010713F89026007FC0EBF80036467CC43E>I<EC3FF80103B57E
010F14E0013F8090397FF83FF89039FFC007FC48496C7E48496C7E48486D1380485A001F
ED7FC05B003FED3FE0A2127F5B17F0161F12FFA290B7FCA401F0C9FCA5127FA27FA2123F
17F06C7E16016C6C15E06C6C14036C6DEB07C06C6DEB0F806C01F0EB3F0090397FFE01FE
011FB55A010714F0010114C09026001FFEC7FC2C2F7DAD33>I<EDFF80020F13E0027F13
F049B512F849EB8FFC90390FFE0FFE90381FFC1F14F8133FEB7FF0A2ED0FFCEBFFE0ED03
F0ED00C01600ABB612F8A5C601E0C7FCB3B0007FEBFFE0A527467DC522>I<DAFFE0137E
010F9039FE03FF80013FEBFF8F90B812C048D9C07F133F489038001FF84848EB0FFC4848
903907FE1F80001F9238FF0F00496D90C7FCA2003F82A8001F93C7FCA26D5B000F5D6C6C
495A6C6C495A6C9038C07FF04890B55A1680D8078F49C8FC018013E0000F90CAFCA47F7F
7F90B612C016FC6CEDFF8017E06C826C16FC7E000382000F82D81FF0C77ED83FC0140748
48020113808248C9FC177FA46D15FF007F17006D5C6C6C4A5A6C6C4A5AD80FFEEC3FF83B
07FFC001FFF0000190B612C06C6C92C7FC010F14F8D9007F90C8FC32427DAC38>I<EB7F
C0B5FCA512037EB1ED07FE92383FFF8092B512E002C114F89139C7F03FFC9138CF801F91
39DF000FFE14DE14FC4A6D7E5CA25CA35CB3A7B60083B512FEA537457CC43E>I<137C48
B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFF
A512037EB3AFB6FCA518467CC520>I<EB7FC0B5FCA512037EB293387FFFE0A593380FE0
004C5A4CC7FC167E5EED03F8ED07E04B5A4B5A037FC8FC15FEECC1FCECC3FE14C7ECDFFF
91B57E82A202F97F02E17F02C07FEC807F6F7E826F7E816F7F836F7F816F7F83707E163F
B60003B512F8A535457DC43B>107 D<EB7FC0B5FCA512037EB3B3B3A3B61280A519457C
C420>I<90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E002816E48
80913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D
013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7C
AC5E>I<90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F801F00
0390399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>
I<EC1FFC49B512C0010714F0011F14FC90397FF80FFF9026FFC0017F48496C7F4848C7EA
3FE000078248486E7E49140F001F82A2003F82491407007F82A400FF1780AA007F1700A4
6C6C4A5AA2001F5E6D141F000F5E6C6C4A5AA26C6C6CEBFFE06C6D485B27007FF80F90C7
FC6DB55A010F14F8010114C09026001FFCC8FC312F7DAD38>I<90397FC00FF8B590B57E
02C314E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D13804A15C04A
6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913
806E4913006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092C9FCADB6
7EA536407DAC3E>I<90387F807FB53881FFE0028313F0028F13F8ED8FFC91389F1FFE00
0313BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0A5272D7D
AC2E>114 D<90391FFC038090B51287000314FF120F381FF003383FC00049133F48C712
1F127E00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14FC6C80
0003806C15806C7E010F14C0EB003F020313E0140000F0143FA26C141F150FA27EA26C15
C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007FEC7FC
232F7CAD2C>I<EB01E0A51303A41307A2130FA2131FA2133F137F13FF1203000F90B512
80B7FCA4C601E0C7FCB3A3ED01E0A9150302F013C0137F150790393FF80F8090391FFC1F
006DB5FC6D13FC01015B9038003FE023407EBE2C>I<D97FC049B4FCB50103B5FCA50003
EC000F6C81B3A85EA25EA25E7E6E491380017FD901F713FE9138F807E76DB512C7010F14
07010313FE9026007FF0EBFC00372E7CAC3E>I<B6903803FFFCA5000101E09038003E00
6C163C80017F5D8017F8013F5D6E1301011F5D6E1303010F5D6E13076D5DED800F6D92C7
FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8F8023F5B15FD021F5B15FF6E5BA3
6E5BA26E90C8FCA26E5AA26E5AA21578362C7EAB3B>I<B5D8FE1FB539801FFFF0A50001
9027C0003FE0C7EA7C007114786E17F86C6F6C5C6E1601017F6E6C5CA26E011F1403013F
6F5C6E013F1407011F6F5CA26E0179140F010F048090C7FC6E01F95C6D02F0EBC01E1580
6D902681E07F5B18E003C3157C6D9139C03FF07815E76DDA801F5B18F803FF14F96E9039
000FFDE018FF6E486D5BA36E486D5BA26E486D90C8FCA24B7F02075DA26E48147C4B143C
4C2C7EAB51>I<B500FE90383FFFF0A5C601F0903803E0006D6C495A013F4A5A6D6C49C7
FC6E5B6D6C137E6DEB807C6D6D5A6DEBC1F0EDE3E06DEBF7C06EB45A806E90C8FC5D6E7E
6E7F6E7FA24A7F4A7F8291381F3FFCEC3E1F027C7F4A6C7E49486C7F01036D7F49487E02
C08049486C7F49C76C7E013E6E7E017E141FB500E090B512FCA5362C7EAB3B>I<B69038
03FFFCA5000101E09038003E006C163C80017F5D8017F8013F5D6E1301011F5D6E130301
0F5D6E13076D5DED800F6D92C7FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8F8
023F5B15FD021F5B15FF6E5BA36E5BA26E90C8FCA26E5AA26E5AA21578A215F85D14015D
001F1303D83F805B387FC007D8FFE05B140F92C9FC5C143E495A387FC1F8EB07F06CB45A
6C5B000790CAFCEA01FC36407EAB3B>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fc cmsy10 10.95 4
/Fc 4 107 df<EB0FFCEB3FFF90B512C0000314F04880488048804880A2481580A3B712
C0AA6C1580A36C1500A26C5C6C5C6C5C6C5CC614C0013F90C7FCEB0FFC22227BA72D>15
D<153FEC03FFEC0FE0EC3F80EC7E00495A5C495AA2495AB3AA130F5C131F495A91C7FC13
FEEA03F8EA7FE048C8FCEA7FE0EA03F8EA00FE133F806D7E130F801307B3AA6D7EA26D7E
80EB007EEC3F80EC0FE0EC03FFEC003F205B7AC32D>102 D<12FCEAFFC0EA07F0EA01FC
EA007E6D7E131F6D7EA26D7EB3AA801303806D7E1300147FEC1FC0EC07FEEC00FFEC07FE
EC1FC0EC7F0014FC1301495A5C13075CB3AA495AA2495A133F017EC7FC485AEA07F0EAFF
C000FCC8FC205B7AC32D>I<126012F0B3B3B3B3B11260045B76C319>106
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fd cmbx12 14.4 63
/Fd 63 123 df<922601FFFC903801FFE0033F9026FF801F13F84AB6D8E07F13FE020F03
F9B6FC023FD9C00FB500C0138091277FFC0003D9FE0113C0902601FFE049495A49494949
4813E04990C714F049484A13E0495A19C0495A7413C0017F17804A6E6E1380719138007E
007192C7FCAEBCFCA526007FF8C7000301C0C8FCB3B3A7007FB5D8F803B612F0A553547D
D34E>11 D<EEFFFC031FEBFF804AB612E0020781021F9038C00FF8913A7FFE0003FCDAFF
F0EB00FE4949EB03FF4901805B4990C7487F49485CA2495A4D7F013F6F5B5CA37190C7FC
715AEF01F894C9FCA90403B512C0BAFCA526003FFCC7120783B3B3A6003FB5D8FC03B612
C0A542547DD34B>I<151E153E157E15FCEC01F8EC07F0EC0FE0EC1FC01580143FEC7F00
14FE1301495A5C1307495AA2495A133F5C137FA2495AA24890C7FCA25A5BA21207A2485A
A3121F5BA3123FA25BA3127FA55B12FFB3A3127F7FA5123FA37FA2121FA37F120FA36C7E
A21203A27F7EA26C7FA26D7EA2133F80131F6D7EA26D7E1303806D7E1300147FEC3F8014
1F15C0EC0FE0EC07F0EC01F8EC00FC157E153E151E1F7973D934>40
D<127012F8127C127E7EEA1FC06C7E6C7E12037F6C7E6C7E7F6D7E133F806D7EA26D7E80
130780A26D7EA26D7EA215807FA215C0A2EC7FE0A315F0143FA315F8A2141FA315FCA514
0F15FEB3A315FC141FA515F8A3143FA215F0A3147F15E0A3ECFFC0A21580A25B1500A249
5AA2495AA25C130F5C495AA2495A5C137F49C7FC5B485A485A5B1207485A485A48C8FC12
7E127C5A12701F7979D934>I<B712F0AB240B7F9F2D>45 D<EA07F0487E487E487E487E
B51280A76C13006C5A6C5A6C5A6C5A1111769025>I<EF01E01703EF07F0A2170FA2EF1F
E0A218C0173FA2EF7F80A218005FA24C5AA25F1603A24C5AA25F160FA24C5AA25F163FA2
4C5AA294C7FC5EA24B5AA25E1503A24B5AA25E150FA24B5AA25E153FA24B5AA293C8FC5D
A24A5AA25D1403A25D1407A24A5AA25D141FA24A5AA25D147FA24AC9FCA25C1301A2495A
A25C1307A2495AA25C131FA2495AA25C137FA249CAFCA25B1201A2485AA25B1207A2485A
A25B121FA2485AA25B127FA248CBFCA25AA2127CA2347879D943>I<913803FFC0023F13
FC91B6FC010315C0010F018113F0903A1FFC003FF849486D7E49486D7E49486D7E48496D
138048496D13C0A24817E04890C813F0A34817F8A24817FC49157FA3007F17FEA600FF17
FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A36C17F0A26C6D4913E0A26C6D4913C0
6C17806E5B6C6D4913006D6C495AD91FFCEB3FF8903A0FFF81FFF06D90B55A01011580D9
003F01FCC7FC020313C0384F7BCD43>I<157815FC14031407141F14FF130F0007B5FCB6
FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>I<EC3FFE0103B512E0
010F14FC013F14FF90B712C048D9C07F7F2703FE000F13F8D807F801037FD80FE06D7F48
486D7F48488001F01680486C6E13C07F486C6E13E07FA27013F0A56C5AA26C5AEA0FF0EA
03C0C914E05EA218C05E1880A24C13005F4C5A4B5B5F4B5B5F4B5B4B90C7FC4B5A5E4B5A
ED7FE04B5A4A5B4A48C8FC4A5A5D4A48EB01F04A5AEC3F804AC7FC02FEEC03E0495A495A
495A495AD91F80140749C8FC013E150F017FB7FC90B812C05A5A5A5A5A5A5AB9FC1880A4
344E79CD43>I<91380FFFC091B512FC0107ECFF80011F15E090263FF8077F9026FF8001
13FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15E0A4805CA36C17C06C
5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512
F816E016FCEEFF80DA000713E0030113F89238007FFE707E7013807013C018E07013F0A2
18F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FCA25E18F891C7FC6C17
F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A6CD9F0075BC690B612
F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<177C17FEA2160116031607
160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C15FCEC01F815F0EC03
E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A131F49C7FC133E5B13FC
485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A
4F7CCE43>I<D80380150ED807E0157E01FEEC03FED9FFF0137F91B65A5F5F5F5F5F94C7
FC5E5E16F016C093C8FC15F801E190C9FC01E0CAFCABEC0FFF027F13F001E3B512FE01E7
6E7E9026FFF8077FDAC0017F49C713F8496E7E49143F4981496E7E6C481680C9FC18C082
18E0A418F0A3EA0FE0487E487E487E487EA418E0A35B6C484A13C05B491680003EC85A00
3F17006C6C4A5A6D5D6C6C4A5AD807F8495BD803FE01075B2701FFC03F5B6C90B65A013F
4AC7FC6D14F8010314C09026007FF8C8FC344F79CD43>I<ED0FFF92B512E0020780021F
14FC91397FFE03FE903A01FFF0007F4901C0EB3F804990C7121F4948EC7FC0494814FF49
484913E049485B01FF5C485BA2485B5AA2486F13C04A6D1380486F1300177E94C7FC5AA2
91CAFC5AA21508913801FFF8020713FFB54814C04A14F04AC66C7E023C6D7E4A6D7E4A6D
7E7013804A15C0A24A15E07013F05C18F8A491C714FCA37EA67EA46C17F880A27E18F06C
5D18E06C6D15C07E6E4913806C6D15006D6C495A6D6CEB7FFC6DB448485A6D90B55A0103
15C0010092C7FC023F13FC020713C0364F7ACD43>I<121F7F7FEBFF8091B81280A45A19
00606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A5F4C5A160F4C5A484B5A
4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FFA24A90C9FCA25C5D14
07A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC06E5A395279D043>I<
913807FFC0027F13FC0103B67E010F15E090261FFC0113F8903A3FE0003FFCD97F80EB0F
FE49C76C7E48488048486E1380000717C04980120F18E0177FA2121F7FA27F7F6E14FF02
E015C014F802FE4913806C7FDBC00313009238F007FE6C02F85B9238FE1FF86C9138FFBF
F06CEDFFE017806C4BC7FC6D806D81010F15E06D81010115FC010781011F81491680EBFF
E748018115C048D9007F14E04848011F14F048487F48481303030014F8484880161F4848
020713FC1601824848157F173FA2171FA2170FA218F8A27F007F17F06D151FA26C6CED3F
E0001F17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE6C01FCEBFFFC6C6CB612
F06D5D010F1580010102FCC7FCD9000F13C0364F7ACD43>I<91380FFF8091B512F80103
14FE010F6E7E4901037F90267FF8007F4948EB3FF048496D7E484980486F7E4849808248
17805A91C714C05A7013E0A218F0B5FCA318F8A618FCA46C5DA37EA25E6C7F6C5DA26C5D
6C7F6C6D137B6C6D13F390387FF803011FB512E36D14C30103028313F89039007FFE03EC
00401500A218F05EA3D801F816E0487E486C16C0487E486D491380A218005E5F4C5A91C7
FC6C484A5A494A5A49495B6C48495BD803FC010F5B9027FF807FFEC7FC6C90B55A6C6C14
F06D14C0010F49C8FC010013F0364F7ACD43>I<EA07F0487E487E487E487EB51280A76C
13006C5A6C5A6C5A6C5AC8FCB3EA07F0487E487E487E487EB51280A76C13006C5A6C5A6C
5A6C5A113576B425>I<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C
8083047F80167E8304FE804C7E03018116F8830303814C7E03078116E083030F814C7E03
1F81168083033F8293C77E4B82157E8403FE824B800201835D840203834B800207835D84
4AB87EA24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A820103854A
82010785A24A82010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>65
D<BA12C019FEF1FFC01AF01AFCD8000701F0C7000313FFDE007F7F737F070F7F737F8785
87858785A287A84F5BA263616361634F5B4F5B077F90C7FC4E485A060713F892B812E097
C8FC861AF003F0C7000313FE9539003FFF80070F13E0737F07017F87737F747E1C807413
C0A27413E0A31CF0A386A362A31CE0A2621CC0A250138097B5FC1C004F5B19074F5B073F
13F04EB55ABC128098C7FC1AF81AC007F8C8FC54527CD160>I<932601FFFCEC01C0047F
D9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7
383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F882494982494982494982
4949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA2
98C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D
606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D
6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F
93C8FC030715FCDB007F14E0040101FCC9FC525479D261>I<BA7E19FCF1FF801AF01AFC
D8000701F0C7000F13FF060014C0071F7F070713F807017F737F747E747F747F86747F74
7F8886888688A2757EA31D8087A21DC0A51DE0A387A963A31DC0A51D80A2631D00A3515A
A2646264505B6264505B505B5090C7FCF2FFFE4F5B07075B071F5B96B512C0060F91C8FC
BB5A1AF01AC007FCC9FC19805B527CD167>I<BC1280A5D8000701F8C7000114C0F0001F
19071901851A7F1A3F1A1FA2F20FE0A21A07A31A03A318F81BF01A01A497C7FC1701A317
031707170F177F92B6FCA59238F8007F170F170717031701A317001B3EA31B7CA395C8FC
A21BFCA21BF8A21A01A31A031BF01A071A0FA21A1F1A3FF27FE0F101FF1907191F0603B5
FCBCFCA21BC0A34F517CD058>I<BB12FEA5D8000701F8C700077FF0007F191F19078585
8586861B80A21A1FA31A0FA41BC006F81307A497C7FCA31701A317031707170F177F92B6
FCA59238F8007F170F170717031701A31700A795C9FCB3B812F8A54A517CD055>I<9326
01FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003
EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F88249
49824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181F
A3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000A36C7F
A36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF6D6C6D
5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033FEE001F03
0703FC1307DB007F02E01301040149CAFC5B5479D26A>I<B8D8C003B8FCA5D8000701F8
C9001FEBE000B3AE92BAFCA503F8C9121FB3B1B8D8C003B8FCA560527CD169>I<B812C0
A5D8000701F8C7FCB3B3B3B2B812C0A52A527CD132>I<B800C091B612F8A5D8000701F8
C90003EBF8009738007F8051C7FC505AF203F8F20FF0505A505A505A50C8FCF101FCF107
F84F5A4F5A4F5A4F5A07FEC9FCF003FC4E5A4E5A4E5A4E5A4E5ADD01FECAFC4D5A4D5A4D
5A4D7E173F4D7E4C487E4C7F5E4C804C804C80EEFF7F9226F9FE3F7FDBFBFC809226FFF8
1F7F4C7EDCC0077F0480804C7E4B6D804B6D804B8284727F727F8684727F727F87847280
87737F85737F87737F85737F88857380747F888697B512FCB800C0013FECFFFEA55F527C
D169>75 D<B812F8A5D8000701F8CAFCB3B3A91A7CA41AFC1AF8A51901A31903A219071A
F0190FA2191F193F197F19FF180360183F4DB5FCBB12E0A546527CD151>I<B600FC073F
B512FE6F61A26F96B6FCA2D80007F5C00070EF01EFA202EF6DEF03CFA202E76DEF078FA2
02E36DEF0F0FA202E16D171EA302E06D173CA26F6C1778A26F6C17F0A26F6DED01E0A26F
6DED03C0A36F6DED0780A26F6DED0F00A26F6D151EA26F6D5DA3706C5DA2706C5DA2706D
495AA2706D495AA2706D495AA3706D49C7FCA2706D131EA2706D5BA2716C5BA3716C5BA2
71EB81E0A271EBC3C0A271EBE780A27101FFC8FCA3715BA2715BA2725AA2725AA2D93FFC
6F5AB74DB712FEA2725AA2725A77527CD180>I<B600FC93B7FC8181A282D800076E9239
003FFC0070EE07E08282A28202EF7F02E77F02E380A202E18002E0806F7F6F7F6F7FA26F
7F6F7F6F806F80A26F80707F707F707F707FA2707F7080708070808583717F717F717F71
7FA27114807114C07114E07213F07213F8A27213FC7213FE7213FF721487A27214C77214
E77313F77313FF85A285858585A28586868686A286868686A2D93FFC187FB7173F1B1F1B
0F1B07755A60527CD169>I<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF
020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1FFF4949
6F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A83481B804A8348
1BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C
1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D
4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F
01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13E0565479D265>
I<BAFC19F819FF1AE086D8000701F0C7001F13FC060113FF726C13807313C0070F13E01B
F0857313F81BFCA27313FEA41BFFA81BFEA31BFC61A21BF84F13F04F13E0614F13C04F13
004E485A061F5B92B812F01AC04FC7FC19E003F8CBFCB3AEB812C0A550527CD15C>I<B9
12F0F0FF8019F819FF1AC0D8000701F0C714F0060F7F060113FE727F737F737F85737F87
A2737FA387A863A2616363A24F5B4F5B4F90C8FC4F5A06035B060F13F095B512C092B8C9
FC19F819E019F89226F0000313FE9439007FFF80727F727F727F727F727F8684A28684A7
87A71D1C75133EA38575137E73157C7513FC731401B86C6D9038F803F807039038FE07F0
7390B512E0736C14C0080F1400CEEA7FFC5F537CD164>82 D<91260FFF80130791B500F8
5B010702FF5B011FEDC03F49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC48
48C87E48488149150F001F824981123F4981007F82A28412FF84A27FA26D82A27F7F6D93
C7FC14C06C13F014FF15F86CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C83
6D826D82010F821303010082021F16801400030F15C0ED007F040714E01600173F050F13
F08383A200788200F882A3187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01
FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48
C66C14FC48010F14F048D9007F90C8FC3C5479D24B>I<003FBC1280A59126C0003F9038
C0007F49C71607D87FF8060113C001E08449197F49193F90C8171FA2007E1A0FA3007C1A
07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0A553517BD05E>I<B800C00103B612
FCA5D8000701F8CAEBF000F31F80B3B3B11B3FA26D97C7FC81637F1B7E6D6D17FE505A6E
7E505A6E6D15076E4D5A6E6D4B5A6E6D4B5A6E01F84B5A6E6DDA03FFC8FC6E6CB46CEB0F
FE6F9039F001FFF8030F90B65A030316C0DB007F92C9FC040F14F8DC007F13805E537CD1
67>I<B700FE031FB512FEA5D8001F01F0CA383FFE00F307F06D626F170F6D62811B1F6D
6D601B3F6D97C7FC6F5F6D197E821BFE6E6D5E1A016E6D5E1A036E60701507A26E6D5E1A
0F6E6D5E1A1F6E6070153FA26E6D93C8FC626E6E147E1AFE6F5E711301A26F6D5C19036F
6D5C19076F5E71130FA26F6D5C191F6F6D5C193F6F93C9FC715BA26FEC807E19FE706D5A
18C1705C18E3705C18F318F770EBFFE0A2705CA2705CA37091CAFCA2705BA2715AA3715A
A2715AA2715A715A5F537DD166>I<B700FC017FB600FE91B612F0A5D8003F01C0C8001F
01E0C9EBF8006F71EE0FC06D7161876F1C1F6D7196C7FC6F8373606D1E3E6F836D716087
6F1CFC6D666F4B801F016D66704A806E525A88704A17076E059F5F70021F80080F160F6E
6570023F806EDC3E074CC8FC8870027E5F6EDC7C03163E7002FC804F6C167E6E1C7C7001
01814F6C16FC6E745B70010317016E4C6D5D060716C00580496D14036F63DDC00F16E04F
6D14076F07F05BDDE01F170F6F92C76C5D1DF8DDF03E6E141F6F98C9FCDDF87E16FC067C
6E5C6FF1FE3EDDFCFC177E6F4A6E147C1DFFDDFFF06E14FC6F62A24E816F62A270496F5B
A24E817061A295C97E7061A270487090CAFCA37048705AA24D1601040360A27048705A84
537DD18B>I<EC7FFF0107B512F0013F14FE90B77E48D9E00F7F2703FE000113F0486C6D
7F6EEB3FFC48826E131F83707FA36C496D7FA26C90C7FC6C5AC9FCA6037FB5FC020FB6FC
91B7FC01071487013FEBF0074913803901FFFC004813F0485B485B485B4890C7FC5A5BA2
485AA45EA26D5C007F151D163D6C6C02797F6C6D01F113F86C9026C003E1EBFFE06C9026
F81FC014F06C90B5487EC6ED001F011F01FC010713E0010101E090C8FC3C387CB641>97
D<EB3FF0B5FCA51203C6FCB3A4923801FFE0030F13FE033FEBFFC092B612F002F301017F
913AF7F8003FFEDAFFE0EB0FFF03806D7F92C76C7F4A6E7F4A824A6E7FA2727EA285A285
84A31A80AC1A00A44E5AA36118FF616E4A5BA26E4A5B6E4A5B6F495BDACFC04990C7FCDA
87F0EB7FFC913A03FE03FFF849C6B612E0496D148049011F01FCC8FC90C7000313C04154
7BD24B>I<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE0001
FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F1300705A48
92C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC
3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49C7FC
020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91
B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F484980
485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C
6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD9
003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C04901
817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C0488191
C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01
F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE
903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>I<ED3FFC02
03B5FC020F14C0023F14E09139FFF81FF0499038C03FF849EB807F49903800FFFC495A49
5AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0A526007FF8C8FCB3B3A7007FB5
12FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C0010FDAFC1F13E0013FECFF7F90
267FFC0F9038FF9FF09026FFE001EBF83F48496C13E0484990387FF01F4890C7D83FF813
E0489338FC0FC0F0078048486E6CC7FCA2003F82A9001F5EA26C6C4A5AA26C5E6C6D495A
6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01C314F02607C03F90C9FC91CBFC
A2120FA37FA213F813FE90B7FC6C16F817FF18C06C836C836C836D828448B9FC12074848
C700031480D81FF8EC003F4848150748486F13C083485A83A56D5D007F18806D5D003F18
006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A6C01FE011F5B6C6CB71280010F
03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3FF0B5FCA51203C6FCB3A4EE1F
FC93B512C0030314F0030F8092391FE07FFC92393F001FFE037C8003F07FDAF1E081ECF3
C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542537BD24B>I<137F497E
000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3
A6B612E0A51B547BD325>I<EB3FF0B5FCA51203C6FCB3A54CB512F8A59339003FFE00EF
1FF0EF3FC04D5A4DC7FCEE03FEEE07F84C5A4C5AEE7FC04CC8FC4B5A4B5AED0FF8ED1FE0
4B7E4B7EECF1FF02F37F02F77F91B6FC83159F030F7F02FE80DAF8077F4A7E6F7F6F7F83
707E82707F84707F707F82707F84707F177F717E4D13C0B6D8F003B6FCA540537CD247>
107 D<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD225>I<D93FF0D91FFCEDFFE0
B591B500C0010713FE030302F0011F6D7E030F6E017F8092271FE07FFCD9FF037F922A3F
001FFE01F8007F0003027C9126FF03E080C602F06DD90780137FDAF1E0038FC77FDAF3C0
159EDAF7806D01BC143F07FC8102FFC75C4A5EA24A5EA44A5EB3ACB6D8F807B6D8C03FB5
12FEA567367BB570>I<D93FF0EB1FFCB591B512C0030314F0030F8092391FE07FFC9239
3F001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3AC
B6D8F807B612C0A542367BB54B>I<913801FFE0021F13FE91B612C0010315F0010F9038
807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890C8
6C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5FA2
6C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF80
7FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<903A3FF001FFE0B5010F
13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9FFE0EB1FFFC602806D7F
92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A0060A36118FFA2615F61
6E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FBFE075B02F8B612E06F14
80031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<90397FE003FEB590380F
FF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE78014EF
150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537>114
D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307D81FE0130148487F4980
127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15F86C14FF16C06C15F06C
816C816C81C681013F1580010F15C01300020714E0EC003F030713F015010078EC007F00
F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC7F0001FEEB01FE9039FF
C00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB635>I<143EA6147EA414
FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FCB3A9EE
07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B0203
13802A4D7ECB34>I<D93FF8913801FFC0B50207B5FCA50003ED001FC61607B3AE5FA35F
A2017F5D173B177B6D6C14F3DC01E313F06D6CD907C3EBFFC0903A0FFFC03F836D90B512
03010114FE6D6C13F8020701E091C7FC42377BB54B>I<B600F00107B5FCA5000101F8C8
EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15FC6D5E6F13016D5E8117036D5E6F
13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E177E023F147C6F13FC6E5C16816E
5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F5AA36F5AA26F5AA26F5AA26F5A
6F5A40367DB447>I<B6D8E07FB5D8C003B512C0A5000101F0C701F0C7381FF8006E027F
ED07E06C715DA26E023F150F017F705DA26E181F013F4B6C92C7FC6E606D70143E94B5FC
6F177E6D4A6E137C03C001F315FC6D715B160303E001E114016D020702E05B03F013C06D
71485A160F03F8D9807F13076D05F85B93381F003F03FC160F027F4902FC5BDBFE3E011F
131F023F04FE90C8FC167EDBFF7C010F5B6E01FCECFF3E4C6D137E6E5FA24C7F6E5F4C7F
6E5FA24C7F6E5F4C147FA26E5F93C8123F6F5EA2033E6FC9FC5A367DB461>I<007FB500
F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D495A6D4B5A6F495A6D6D
91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06EEBCFC06EEBFF806E91C9
FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03F87F4A486C7E4A486C7E
020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A49486D7F01076F7E49486E7E
49486E7FEBFFF0B500FE49B612C0A542357EB447>I<B600F00107B5FCA5C601F8C8EA7F
E06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F13016D5E6F13036D5E8117076D6D
5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E023F147C6F13FCA26E6D5A16816EEB
C1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5AA26F5AA26F5AA26F5AA26F5AA35E
150F5E151F93C9FC5DD81FC0133E486C137E486C137C486C13FC5D14015D14034A5A6C48
485A49485A263FC07FCAFCEB81FE6CB45A6C13F000035BC690CBFC404D7DB447>I<001F
B8FC1880A3912680007F130001FCC7B5FC01F0495B495D49495B495B4B5B48C75C5D4B5B
5F003E4A90C7FC92B5FC4A5B5E4A5B5CC7485B5E4A5B5C4A5B93C8FC91B5FC495B5D4949
EB0F805B495B5D495B49151F4949140092C7FC495A485E485B5C485E485B4A5C48495B48
15074849495A91C712FFB8FCA37E31357CB43C>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fe cmtt10 10.95 93
/Fe 93 127 df<121C127FEAFF80B3EA7F00B2123EC7FCA8121C127FA2EAFF80A3EA7F00
A2121C09396DB830>33 D<00101304007C131F00FEEB3F80A26C137FA248133FB2007E14
00007C7F003C131E00101304191C75B830>I<903907C007C0A2496C487EA8011F131FA2
02C05BA3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F
90B512FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA2
29387DB730>I<1438147C14FCA4EB03FF011F13E090B512FC4880000780481580261FFE
FD13C09039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15F800FE14035A1507A3
6CEC03F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14E0000114F86C6C7F01
1F7F01037F0100148002FD13C09138FC7FE0151FED0FF015070018EC03F8127E1501B4FC
A35AA26CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81FFEB512806CB612006C
5C6C5CC614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE30>I<D803C0EB01E0
D80FF01303486C497E487E150F487ED87E7E495AEAFE7F5E486C133FA25E157FA24BC7FC
6C5A5D387E7E01EA7FFED83FFC5B1403EA1FF86C48485AEA03C0C75B140FA25D141FA24A
5AA25D147FA292C8FC5CA2495AA25C1303A25C1307A290390FF001E0ED07F84A487E011F
497EA24A487E133F163F90267F807F1380ED7E1F14005BA25B1201A24848EB7F3F033F13
004914FF12076F5A5B6F5A6C486D5A0001EC01E029477DBE30>I<EB07E0EB1FF8497E13
7F497E803801FC7F497E810003131F13F0A6143F92C8FC91387F0FFF9026F87E1F138000
0113FEEBF9FC13FB4A6C1300D9FFF013C06C13E0151F02C05BEB7F809038FF003F4892C7
FC485C48EB807E5A15FE391FDFC0FC383F8FE014E1397F07F1F8EB03F300FEEBFBF0EB01
FF5D7FEDC006027F130F91393F801F8015C06C137F6CEBFFE049EBF83F018701FC130026
3FFFFBB5FC6C01F15B14E06C9038C03FFC00039038001FF8D801FCEB07E0293A7DB830>
I<EA07C0EA0FF0EA1FF8A213FCA213FE120F1207EA007EA513FE13FCA2120113F81203EA
07F0120FEA1FE0127FEAFFC013801300127C12380F1D70B730>I<141E147F14FF5BEB03
FEEB07FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F
5BA2127F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7E
EB7F80EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>I<127812
FE7E7F6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB
03F8A214FC1301A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14
E0EB1FC0133F1480137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A12781847
78BE30>I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB3FE001C3137F9038F3F9
FF267FFBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0011F90C7FC017F13C048
B512F04880000F14FE003FECFF80267FFBFB13C026FFF3F913E09038C3F87F0183133FD8
7E03EB0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30>I<143EA2147FAF007FB7
FCA2B81280A36C1600A2C76CC8FCAF143EA229297DAF30>I<EA03E0EA0FF0EA1FF813FC
EA3FFEA213FFA27EA27E1203EA007FA2137E13FEEA01FC1203EA07F8EA3FF0127FEAFFE0
EA7F801300123C1019708B30>I<007FB612F0A2B712F8A36C15F0A225077B9E30>I<120F
EA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A2
1507A2ED0FF0A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA2
4A5AA24A5AA24A5AA24AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249
C8FCA2485AA25B1203A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA22547
7BBE30>I<14FE903807FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F48
48EB3FC04848EB1FE049130F001F15F0491307A24848EB03F8A290C712014815FCA400FE
EC00FEAD6C14016C15FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A2
6C6CEB3FC06C6CEB7F806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FE
C7FC273A7CB830>I<EB03C0497EA2130FA2131FA2133F137F13FF1203123FB5FCA213EF
138FEA7E0F1200B3B0003FB512F84814FCB612FEA26C14FC6C14F81F3977B830>I<EB07
FC90383FFFC090B512F00003804814FE4880261FF80F1380263FE00113C09038C0007F48
48EB3FE090C7121FED0FF04814075A6C15F81503A3127E1218C8FCA2150716F0150F16E0
151F16C0153FED7F8015FF4A13005DEC07FC4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A
EB0FF0EB3FE0495A495A4890C8FC4848EB01F04848EB03F8485AEA1FE048B6FCB7FCA37E
6C15F025397BB830>I<EB03FF013F13E090B512F84814FE4880481580260FFE0113C090
38F0007F4848EB1FE0150F16F01507A26C5A6C5AC8FC150F16E0A2151FED3FC0157FEDFF
8002071300903807FFFE495B5D8115FF6D1480D9000113C09138003FE0ED1FF0ED07F815
0316FC150116FE1500A21218127EB4FCA2150116FC4814036C15F86C6C13076DEB1FF0D8
3FF0133F3A1FFE01FFE06CB612C06C15806CECFE00C65C013F13F001031380273A7CB830
>I<EC03FC4A7E140F141FA2143F147F157E14FEA2EB01FCEB03F8A2EB07F0A2EB0FE0EB
1FC0A2EB3F80A2EB7F0013FEA2485A485AA2485AA2485A485AA2485AA248C7FC12FEB8FC
1780A46C1600C8007EC7FCAA91387FFFFE91B6FCA46E5B29397DB830>I<000FB6128048
15C05AA316800180C8FCAEEB83FF019F13C090B512F015FC8181D9FE0313809039F0007F
C049133F0180EB1FE06CC7120F000E15F0C81207A216F81503A31218127EA2B4FC150716
F048140F6C15E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C
6C14E06C6C1380D90FFCC7FC25397BB730>I<EC0FF8EC7FFF49B51280010714E0131F49
14F090387FF80F9039FFC007F84813803803FE005B485A4848EB03F0ED01E0484890C7FC
5B123F5BA2127FEB000C903803FFE0010F13F8D8FF3F13FE48B6FCB7128016C09039FE00
7FE001F8EB1FF001E0130F49EB07F849EB03FCA290C7120116FE1500A37EA46C7E15016D
14FC121F6D1303000FEC07F86D130F6C6CEB1FF06DEB3FE03A03FF81FFC06C90B512806C
15006D5B011F13F8010713E001011380273A7CB830>I<127CB712FC16FEA416FC48C7EA
0FF816F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA24A5A
A24AC7FCA25C5C13015CA213035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7CB830
>I<49B4FC011F13F0017F13FC90B57E0003ECFF804815C048010113E03A1FF8003FF049
131FD83FC0EB07F8A24848EB03FC90C71201A56D1303003F15F86D13076C6CEB0FF06C6C
EB1FE0D807FCEB7FC03A03FF83FF806C90B512006C6C13FC011F13F0497F90B512FE4880
2607FE0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15FC90C712014815
FE481400A66C14016C15FC6D1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01FFE0
6C90B512C06C1580C6ECFE006D5B011F13F0010190C7FC273A7CB830>I<49B4FC010F13
E0013F13F890B57E4880488048010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0F
F048481307A290C7EA03F85A4815FC1501A416FEA37E7E6D1303A26C6C13076C6C130F6D
133FD80FFC13FF6CB6FC7E6C14FE6C14F9013FEBE1FC010F138190380060011400ED03F8
A2150716F0150F000F15E0486C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC
90B55A6C5C6C5C6C1480C649C7FCEB3FF0273A7CB830>I<120FEA3FC0EA7FE0A2EAFFF0
A4EA7FE0A2EA3FC0EA0F00C7FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F
000C276EA630>I<EA03C0EA0FF0EA1FF8A2EA3FFCA4EA1FF8A2EA0FF0EA03C0C7FCAFEA
03C0EA0FF0121F13F8123F13FCA3121FA2120F12031200120113F8120313F01207EA1FE0
123FEA7FC0EAFF80EA7F00127E12380E3470A630>I<16F01503ED07F8151F157FEDFFF0
14034A13C0021F138091383FFE00ECFFF8495B010713C0495BD93FFEC7FC495A3801FFF0
485B000F13804890C8FCEA7FFC5BEAFFE05B7FEA7FF87FEA1FFF6C7F000313E06C7F3800
7FFC6D7E90380FFF806D7F010113F06D7FEC3FFE91381FFF80020713C06E13F01400ED7F
F8151F1507ED03F01500252F7BB230>I<007FB7FCA2B81280A36C16006C5DCBFCA7003F
B612FE4881B81280A36C1600A229157DA530>I<1278127EB4FC13C07FEA7FF813FEEA1F
FF6C13C000037F6C13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E7E91380FFF80
6E13C0020113F080ED3FF8151F153FEDFFF05C020713C04A138091383FFE004A5A903801
FFF0495B010F13804990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7FFE13F8EAFFE0
5B90C9FC127E1278252F7BB230>I<EB1FFE90B512E0000314F8000F14FE488048158026
7FF80313C09038C0007F48C7121F16E0150FA3127E151F0018EC7FC0C812FF020313804A
13004A5AEC1FF84A5AEC7FC04A5A92C7FC495AA2495A5CA213075CA86D5A90C9FCA8EB01
C0EB07F0A2497EA36D5AA2EB01C023397AB830>I<EC1FE0ECFFF8010313FE010F7F4914
804914C090397FF03FE09038FF800F4890380007F0D803FC13033A07F801FBF89038F007
FF380FE01F4A13FCEA1FC0495A003FEBFF0F903800FE07903901FC03FE007FEBF801EA7E
03ECF000A2EAFE0700FC49137EAA00FE6D13FED87E0314FCA2ECF801D87F0114F8003FEB
FC03903900FE07F0903880FF0F001F90387FFFE06D6C13C0EA0FE06E13803A07F007FE00
9038F801F86C6CC7127C6CB414FE6CEB800390387FF01F6DB512FC6D14F86D14E0010314
C00100EBFE00EC1FF0273A7CB830>I<147F4A7EA2497FA4497F14F7A401077F14E3A301
0F7FA314C1A2011F7FA490383F80FEA590387F007FA4498049133F90B6FCA34881A39038
FC001F00038149130FA4000781491307A2D87FFFEB7FFFB56CB51280A46C496C13002939
7DB830>I<007FB512F0B612FE6F7E82826C813A03F8001FF815076F7E1501A26F7EA615
015EA24B5A1507ED1FF0ED7FE090B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E
1500167FA3EE3F80A6167F1700A25E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7
FC29387EB730>I<91387F803C903903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE0
7F48EB801F3903FE000F484813075B48481303A2484813015B123F491300A2127F90C8FC
167C16005A5AAC7E7EA2167C6D14FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13
076C6CEB0FF03901FF801F6C9038E07FE06DB512C06D14806D1400010713FC6D13F09038
007FC0273A7CB830>I<003FB512E04814FCB67E6F7E6C816C813A03F8007FF0ED1FF815
0F6F7E6F7E15016F7EA2EE7F80A2163F17C0161FA4EE0FE0AC161F17C0A3163F1780A216
7F17005E4B5A15034B5A150F4B5AED7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B38
7FB730>I<007FB7FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FC
A6EBF800A4157C92C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<00
3FB712804816C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FCA690
38FC007FA4153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I<02FF13F00103
EBC0F8010F13F1013F13FD4913FF90B6FC4813C1EC007F4848133F4848131F49130F485A
491307121F5B123F491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C
6D1400ED03F8A27F003F1407A27F121F6D130F120F7F6C6C131FA2D803FE133F6C6C137F
ECC1FF6C90B5FC7F6D13FB010F13F30103EBC1F0010090C8FC293A7DB830>I<3B3FFF80
0FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E0D803F8C7EAFE00B290B6FCA6
01F8C7FCB3A23B3FFF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E02D38
7FB730>I<007FB6FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C1500
213879B730>I<49B512F04914F85BA27F6D14F090C7EAFE00B3B3123C127EB4FCA24A5A
1403EB8007397FF01FF86CB55A5D6C5C00075C000149C7FC38003FF025397AB730>I<D8
3FFF90380FFF80486D4813C0B56C5AA26C497E6C496C1380D803F0903803F8004B5A4B5A
151F4B5A5E4BC7FC15FE14014A5A5D4A5A4A5A141F5D4A5A4AC8FC5C13F18101F37F13F7
90B57E14EFECC7F01483EC03F8140101FE7F496C7E5B157F497F82151F82150F826F7EA2
6F7E1501821500D83FFF903803FFC0486D4813E0B56C5AA26C497E6C496C13C02B387FB7
30>I<383FFFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8
FCA27E6C16802A387EB730>I<D83FF8ECFFE0486C4913F0486C4913F8A2007F16F06C6C
4913E00007160001EF14BFEC800FA39039E7C01F3FA4ECE03F01E3133EA2ECF07EA201E1
137CA2ECF8FCA201E013F8A214FDEC7DF0A3147FEC3FE0A3EC1FC0A2EC070091C7FCADD8
3FFC903801FFE0486C4913F0B54913F8A26C486D13F06C486D13E02D387FB730>I<D83F
FC90381FFF80486C4913C0B54913E0A26C6D6C13C06C6E13800003913801F800EBF7C0A3
EBF3E0A314F013F1A214F8A213F014FCA2147C147EA2143E143FA2141FA21581A2140F15
C1A2140715E1A2140315F1A21401A215F91400A3157DA3153FEA3FFF481380B5EAC01FA2
6CEB800F6C496C5A2B387EB730>I<90383FFFE048B512FC000714FF4815804815C04815
E0EBF80001E0133FD87F80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A3
6D130FA26D131F6C6CEB3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13
E0253A7BB830>I<007FB512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE1501
6F7EA2821780163FA6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15
F001F8C9FCB0387FFFC0B57EA46C5B29387EB730>I<90383FFFE048B512FC000714FF48
15804815C04815E0EBF80001E0133F4848EB1FF049130F90C71207A44815F8481403B3A8
147E14FE6CEBFF076C15F0EC7F87A2EC3FC7018013CF9038C01FFFD83FE014E0EBF80F90
B6FC6C15C06C15806C1500000114FCD8003F7FEB00016E7EA21680157F16C0153F16E015
1F16F0150FED07E025467BB830>I<003FB57E4814F0B612FC15FF6C816C812603F8017F
9138003FF0151F6F7E15071503821501A515035E1507150F4B5A153F4AB45A90B65A5E93
C7FC5D8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EB
FFF8B56C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>I<90390FF803C0D97F
FF13E048B512C74814F74814FF5A381FF80F383FE001497E4848137F90C7123F5A48141F
A2150FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C8001
1F13FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07F8A2007C140312FEA5
6C140716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8
D8F81F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA43AFE003F800FA8007C
ED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I<3B7FFFC007FFFCB56C
4813FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C6C14FE6D13016D5CEC
800390393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038007FFCEC1FF02F3980
B730>I<D87FFE90380FFFC0B54913E06E5AA24A7E6C486D13C0D807F0903801FC00A26D
130300035DA46C6C495AA46C6C495AA46D131F6D5CA3EC803F013F5CA46D6C48C7FCA490
380FE0FEA401075B14F1A301035BA314FB01015BA314FFA26D5BA46E5A6E5A2B397EB730
>I<D83FFC903801FFE0486C4913F000FF16F8A2007F16F06C486D13E0D81FC09038001F
C0000F1680A76D143F00071600A7000390380F803E9039F01FC07EEC3FE0A3EC7FF0A214
7D0001157CA29039F8FDF8FCA314F8A300005D01F913FCA2ECF07CA201FD137DA2017D5C
ECE03DA3017F133FA2ECC01FA2013F5CA2EC800F6D486C5A2D397FB730>I<3A3FFF01FF
F84801837F02C77FA202835B6C01015B3A01FC007F806D91C7FC00005C6D5BEB7F01EC81
FCEB3F8314C3011F5B14E7010F5B14FF6D5BA26D5BA26D5BA26D90C8FCA4497FA2497FA2
815B81EB0FE781EB1FC381EB3F8181EB7F0081497F49800001143F49800003141F498000
07140FD87FFEEB7FFFB590B5128080A25C6C486D130029387DB730>I<D87FFF90381FFF
C0B56C4813E0A46C496C13C0D803F8903803F8006D1307A26C6C495AA26C6C5C151F6D5C
EC803F013F5CECC07F011F91C7FCA290380FE0FEA214F101075BA2903803FBF8A201015B
14FF6D5BA26E5AA36E5AB1903803FFF8497F497FA26D5B6D5B2B387EB730>I<001FB612
FC4815FE5AA490C7EA03FCED07F816F0150FED1FE016C0153FED7F80003E1500C85A4A5A
5D14034A5A5D140F4A5A5D143F4A5A92C7FC5C495A5C1303495A5C130F495A5C133F495A
91C8FC5B4848147C4914FE1203485A5B120F485A5B123F485A90B6FCB7FCA46C15FC2738
7CB730>I<007FB5FCB61280A4150048C8FCB3B3B3A5B6FC1580A46C140019476DBE30>I<
127CA212FEA27EA26C7EA26C7EA26C7EA26C7EA26C7EA26C7EA212017FA26C7EA26D7EA2
6D7EA26D7EA26D7EA26D7EA26D7EA2130180A26D7EA26E7EA26E7EA26E7EA26E7EA26E7E
A26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07F8A21503A2ED01
F0150025477BBE30>I<007FB5FCB61280A47EC7123FB3B3B3A5007FB5FCB6FCA46C1400
19477DBE30>I<1307EB1FC0EB7FF0497E000313FE000FEBFF80003F14E0D87FFD13F039
FFF07FF8EBC01FEB800F38FE0003007CEB01F00010EB00401D0E77B730>I<007FB612F0
A2B712F8A36C15F0A225077B7D30>I<EB7FF80003B5FC4814C04880488048809038E01F
FC9038C003FE14016E7E6C487F6CC77FC8123FA491B5FC130F137F48B6FC12075A48EB80
3F383FF800EA7FE0138048C7FC5AA4157F7E6C6C13FFEBC003263FF01FEBFF8090B712C0
7E6C14EF000314876CD9FE01138026003FE0C8FC2A2A7BA830>97
D<EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF80027F13E091B57E90B612FC82
ECFE079138F001FF4A6C13804A137F4AEB3FC091C7121F17E049140FA217F01607A8160F
A217E07F161F6EEB3FC0A26EEB7F806E13FFDAF00313009138FC0FFE91B55A5E495CD97E
7F13C0D93C1F90C7FC90380003FC2C3980B730>I<ECFFE0010713FC011F7F017F7F90B6
12804815C048EB807F3907FC003F485A485A49EB1F804848EB0F004990C7FC127F90C9FC
A25A5AA87E7EA27F003FEC07C06DEB0FE06C7E6D131F6C6C14C0D807FE133F9039FFC0FF
806C90B5FCC615006D5B011F13F801075B01011380232A7AA830>I<913801FFE04A7F5C
A28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0133F49
131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E6D137F
390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0D907FC
C8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E488048018113803A07FC
007FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7FCA516
F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE0
6C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>I<EDFF80020713
E0021F13F05C4A13F891B5FC491387903803FE079138FC03F0903907F800C04A1300A800
3FB612C04815E0B7FCA36C15C0260007F0C7FCB3A9003FB512FE4880B71280A26C15006C
5C25397DB830>I<D903FC13FF90261FFF8713C04913DF90B712E05A5A2607FE07138F90
3AF801FE07C048486C6CC7FCA2497F001F8149133FA56D137F000F92C7FC6D5BA26C6C48
5AEBFE0790B55A5D485C15C001DF5BD9C3FCC8FC01C0C9FCA37F7F6CB512F015FF6C15C0
4815F0488148813A3FE0001FFE0180130148C8127F007E8100FE168048151FA56C153F00
7FED7F006D5C6C6C495A01F013076CB4EB7FFC6C90B55A6C5D000115C06C6C91C7FC011F
13FC010113C02B3E7DA730>I<EA3FFC487E12FFA2127F123F1200AAEC01FE91380FFF80
023F13E091B57E90B67EA29138FE07FCECF8039138E001FE14C0EC8000A291C7FCA25BB3
A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F3880B730>I<
14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003F
B612C04815E0B7FCA27E6C15C023397AB830>I<EC01C0EC07F0A2EC0FF8A3EC07F0A2EC
01C091C7FCA990B512F04814F8A47EEB0003B3B3A5EC07F0A2123C007EEB0FE0B4131FEC
3FC0147F90B512806C14005C6C5B000F13F0000313C01D4E7CB830>I<EA7FF8487EA412
7F1200AB0203B512804A14C017E0A217C06E14809139001FE0004B5A4B5A4BC7FC4A5A4A
5AEC0FF84A5A4A5A4A5A4A5A01FD7F90B57E8114F7ECE3F8ECC1FCEC81FEEC00FF497F49
6D7E6F7E826F7E15076F7E6F7E3B7FFFF81FFFE0B56C4813F017F8A217F06C496C13E02D
387FB730>I<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB7
30>I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F138726
07FE07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80
B548018F13C0A46C486C01071380322881A730>I<EC01FE3A3FFC0FFF80267FFE3F13E0
00FF90B57E90B67E7E6C9038FE07FCC6EBF8039138E001FE14C0EC8000A291C7FCA25BB3
A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F2880A730>I<
49B4FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3FE0D81F
E0EB0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15FCA26D
1303003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B51280
6C15006C6C13FC6D5B010F13E0010190C7FC272A7CA830>I<EC03FE3A3FFC1FFF80267F
FE7F13E000FF90B57E90B612FC6C816CEBFE07C69038F001FF4A6C13804A137F4AEB3FC0
91C7121F17E049140FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB7F806E13FFDA
F00313009138FC0FFE91B55A5E495C6E13C0021F90C7FCEC03FC91C9FCAD383FFFF8487F
B57EA26C5B6C5B2C3C80A730>I<49B413F8010FEBC1FC013F13F14913FD48B6FC5A4813
81390FFC007F49131F4848130F491307485A491303127F90C7FC15015A5AA77E7E15037F
A26C6C1307150F6C6C131F6C6C133F01FC137F3907FF01FF6C90B5FC6C14FD6C14F9013F
13F1010F13C1903803FE0190C7FCAD92B512F84A14FCA46E14F82E3C7DA730>I<ED07F8
3A3FFF803FFF486DB51280B512C302CF14C06C13DF6C9038FFFC3FD8001F13E09238801F
809238000F004A90C7FC5C5C5CA25CA45CAF003FB512FC4880B7FCA26C5C6C5C2A287EA7
30>I<90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880A46C143E
007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F9038000FFF02
001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF0090B6FC
5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>I<EB0780497E131FA9003FB612
E04815F0B7FCA36C15E026001FC0C7FCB216F8ED01FCA5ECE003010FEB07F814F09138FC
1FF06DB512E06D14C016806D14009038007FFCEC1FF026337EB130>I<D83FFCEB3FFC48
6C497E00FF14FFA2007F147F003F143F00001400B3A41501A2150315076D130F903A7FC0
7FFFF891B612FC6D15FE7F6D4913FC6D9038F87FF8010001C0C7FC2F2880A630>I<3B3F
FFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D130700005D
A26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2ECE0FE0107
5BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3FFFC01FFF
E0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157EA56D14FE
00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A3017E13FB
A290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3A3FFF81FFFC4801
C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE90383F81FC90381FC3F8EB0FE3EC
E7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7E0EB07E790380FE3F0ECC1
F890381F81FC90383F80FE90387F007E017E137F01FE6D7E48486D7E267FFF80B5FCB500
C1148014E3A214C16C0180140029277DA630>I<3B3FFFC07FFF80486DB512C0B515E0A2
6C16C06C496C13803B01FC0003F000A2000014076D5C137E150F017F5C7F151FD91F805B
A214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F85DA2EB00F9ECFDF0147D
147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE486C5AEA3FC1EBC3F81387
EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<001FB612FC4815FE5AA316
FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A4A5A4A5A
4A5A4990C7FC495A495A495A495A495A495A4948133E4890C7127F485A485A485A485A48
5A48B7FCB8FCA46C15FE28277DA630>I<ED3FF0913803FFF8140F5C147F16F09138FFF0
0092C7FC495A5CB3A21303495A133F383FFFF0B55A5C91C8FC14C080003F7F38003FF813
076D7E1301B3A2806D7E15F091387FFFF016F8141F8014039138003FF025477BBE30>I<
127CA212FEB3B3B3AD127CA207476CBE30>I<EA7FE0EAFFFE6D7E8014F07EC66C7E1307
6D7E1301B3A2806D7E15E091387FFFE06E13F8801407141F5C4A13E09138FFE00092C7FC
495A5CB3A21303495A137F387FFFF0B5FC14C05C49C8FCEA7FE025477BBE30>I<017C13
3848B4137C48EB80FE4813C14813C348EBEFFC397FEFFFF0D8FF8713E0010713C0486C13
80D87C0113003838007C1F0C78B730>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Ff cmbx12 20.74 17
/Ff 17 117 df<EE3FFF0307B512F8033F14FF4AB712E0020716F8021F16FE4AD9F8077F
91B5D8C00014C04991C7003F7F4901FC020F7F49496E7F49496E7F49496E7F49496E7F4B
81498590B5C96C7FA24849707FA24886A248864A824886A34886A448864A82A4481B80A8
B51AC0B3AA6C1B80A86C1B006E5EA46C62A36C62A36C6D4C5BA36C62A26C6D4C5BA26C6E
4B5B6D616F92B5FC6D96C7FC6D6D4A5B6D6D4A5B6D6D4A5B6D6D4A5B6D01FF023F5B6D02
C090B55A6ED9F8075C021F90B648C8FC020716F8020116E06E6C1580030702F8C9FCDB00
3F90CAFC527379F061>48 D<EE01F0EE07F8160F163F167FED01FF150F153F4AB5FC143F
010FB6FCB8FCA54A7E14C0EBF000C8FCB3B3B3B3AE007FBA12F0A8447171F061>I<9238
0FFFE04AB67E020F15F0027F15FE49B87E4917E0010F17F8013F8349D9C01F14FF9027FF
FC0001814801E06D6C80480180021F804890C86C8048486F8048486F8001FF6F804801C0
6E8002F081486D18806E816E18C0B5821BE06E81A37214F0A56C5BA36C5B6C5B6C5B0003
13C0C690C9FC90CA15E060A34E14C0A21B80601B0060626295B55A5F624D5C624D5C4D91
C7FC614D5B4D13F04D5B6194B55A4C49C8FC4C5B4C5B4C13E04C5B604C90C9FCEE7FFC4C
5A4B5B4B5B4B0180EC0FF04B90C8FC4B5A4B5A4B48ED1FE0EDFFE04A5B4A5B4A90C9FC4A
48163F4A5ADA3FF017C05D4A48167F4A5A4990CA12FFD903FC160749BAFC5B4919805B5B
90BBFC5A5A5A5A481A005A5ABCFCA462A44C7176F061>I<923801FFFE033FEBFFF84AB7
FC020F16E0023F16F84A16FE49B97E49DA003F80010F01F0010714F04901800101804948
C880D97FF86F7F02E081496C834801FC6F148014FF486E6E14C08181481AE081A96C5C1B
C06C4A5C6C5C6D90C815806D5AD90FF85D90CA150062606295B55A4D5C624D5C4D5C4D91
C7FC4D13FC4D5B4CB512E0047F1480037FB548C8FC92B612F818C018F8F0FF806F15F092
C7003F13FC050713FF050114C071807213F8727F727F867214801BC07214E01BF0A27214
F81BFCA37214FEA31BFFEBFF80000313E0487F001F13FC487FA2487FA2B67EA31BFEA360
1BFCA292C8FC6C1AF84A5D4A18F06C494B14E05C6C01C04B14C06C90C915804E14006C6D
4B5B6C01F092B55A6C01FC4A5C27007FFFC001075C6D01FE013F14C0010F90B85A6D4DC7
FC010117F8D9003F16E0020F93C8FC020015F0030749C9FC507378F061>I<F10FF04F7E
193FA2197F19FF60A260606060A2606095B5FCA25F5F5FA25F5F5F5F18BFEFFF3F5EEE03
FE17FCEE07F8160FEE1FF0EE3FE017C0167FEEFF804B13005E4B5A15074B5A4B5A5E153F
4B5A4B5A93C7FC4A5A14034A5A5D4A5A141F4A5A4A5A5D4AC8FC5B495A5C495A130F495A
495A5C137F495A4890C9FC5B485A1207485A485A5B123F485A485A90BC12FCA8CB02F8C7
FCB3A20307B912FCA856727BF161>I<0170187001FEEF01F86D6C160F02F8167FDAFF80
EC07FF03FE49B5FC92B85A6262A26297C7FC61616119E061614EC8FC18F86018C095C9FC
17F817C0020701F8CAFC91CDFCB0923801FFFC031FEBFFE092B612FC020315FF020F16C0
4A16F0027FD9003F7FDAFFF0010F13FE038001037F4AC76C8002F86E804A6F7F4A6F7F4A
834A6F7F91C980137E017C707F90CAFC1B80A21BC0A2841BE0A51BF0A313FE3803FF8000
0F7F4813F0487F5A80B5FCA41BE0A44E14C05C7E4A18805C4A5D6C90C9150001E0606C6C
5E6D606C6C4C5B7F000794B55A6C6C6C4A5C6C6D4A5C6E4A5C26007FF8021F49C7FC6DB4
027F5B6DD9F007B55A6D90B712E0010317806D4CC8FC6D6C15F8021F15C002034AC9FCDA
003F13804C7376F061>I<94381FFF800403B512F8043F14FE4BB77E030782031F16F003
7F8292B5D8FC017F02039139C0001FFE4A49C7EA07FF021F01F8804A496E13804A01C014
0F91B548023F13C04991C85A494992B5FC49494A14E0495B495E5D5B495BA290B55A5A5D
487114C0A24891C91480731300735A48F00FF896C8FC485BA45AA44849903803FFE0041F
13FE047FEBFFC04BB612F84B81030F15FFB590261FF8038092273FE0007F13E00480011F
7F4BC76C7F03FE6E7F4B6E7FDAFDF86E7FDAFFF017804B6E14C01BE05D7313F05D1BF8A2
92C914FC85A21BFE5CA31BFFA26C5BA87EA4807EA21BFE7EA37E1BFC6E5E6C1AF8A27E6F
17F06C95B512E06D7F1BC06D6D4A14806D4C1400816D6D4A5B6D6D4A5B6D01FF4A13F001
006E017F5B6ED9F007B55A6E90B7C7FC020F5E020316F86E16E0DA003F1580030702FCC8
FCDB007F1380507378F061>I<EA03FCA2487E7F14C0ECFFF092BA12C0A45AA31C801C00
63A2486263636363A26398C7FC48616249CAEA0FF801F0171F494D5A4F5A49604F5A007F
4D90C8FC60494C5A4E5A614E5A4E5A48CA127F4E5A4D5B96C9FCCA485A4D5A170F4D5A60
173F4D5A6017FF4C5BA25E4C90CAFCA24C5A161FA24C5AA2167FA24C5AA25DA24B5BA25D
A25DA25F5DA25DA35DA392B5FCA25FA25CA45CA75CAD6E5CA26E91CBFCA26E5BED3FF8ED
0FE0527775F461>I<93B57E031F14FC92B77E020316F0020F16FC023F16FF4A8349B5D8
800314E04901F8C7003F7F4901C0020F7F4990C800037FD91FFC6F7F49486F6C7E137F4A
7013804948827313C05A4A821BE05AA285487FA38080806E5E8003C017C08103F85D03FE
17806F6C5C6C6F160004F05C04FC4A5A6C6F5D706C13FFDDE0015B6CDCF8035BDDFC0F13
C06DDBFF1F5B6D93B5C7FC19FC6D17F06D5F6D17806D17E06D836D6C16FC6E16FF020F83
6E17E06E83020F83023F8391B97E4984010701F0178049D9C07F16C0013FD9801F16E049
EB00074948010116F048497F4849023F15F84849140F4A6E15FC48160148496E6C14FE4A
151F488391C9120348050014FF193F49838500FF84854983A28586A3861BFEA27FA2007F
1AFC7F1A7F1BF86C7FF2FFF06C7F6E4C13E06C6D4C13C06C6D5E6E4C13806C6D4C13006C
6D6CED7FFE6C02E04A485A013F01FC020F13F06D9026FFC001B55A010791B712806D95C7
FC010017FC021F16F002071680DA007F02FCC8FC030191C9FC507378F061>I<93B5FC03
1F14F092B612FE02076F7E021F16E04A16F891B87E49DAF00713FF0107DA0001804901FC
6D6C7F49496E7F49496E7F49496E7F90B5486E7F484A8048854891C86C7FA2487114805C
481AC0A2487213E0A2484918F0A31BF8A2B5FCA27313FCA51BFEA71BFF61A27EA396B6FC
7EA2806C5FA27E606C7F607E6C6E5C6CEF1FBF6D6DEC3F3F6D6D147F6D6D14FE6D6DEB01
FC6D01FE130701019039FFC01FF86D91B500F014FE023F15C06E15800203ECFE00DA007F
13F8030713C092C9FC4F13FCA41BF8A31BF0D91FF093B5FCEB7FFC496C18E0487F486E17
C06048801B804E1400A26260624E5B4B5C626C91C8485B4A4B5B4A92B55A6C01F04A91C7
FC02804A5B6C01E0020F5B6D6C023F13F002FE91B55A90273FFFE00F5C6D90B7C8FC0107
16FC6D16F0010016C0023F92C9FC020714F09126007FFECAFC507378F061>I<96267FFF
E01670063FB6ED01F80503B700F01403053F04FC14074CB96C130F040706E0131F043F72
133F93BA00FC137F0303DC00076D13FF030F03C09039003FFF814B02FCC8000713C3037F
02E0030113F792B600806F6CB5FC02034ACA121F4A02F8834A02E0834A4A1701027F4A83
91B548CC7E494A85495C4C854988494A85494A85495C8A4991CDFC90B54886A2484A1B7F
A2481E3F5D481E1F5D5A1F0FA2485CA3481E075DA2F703F0489BC7FCA45DA2B6FCB27EA2
81A47EA2F703F06FF307F87EA36C80A21F0F7E6F1CF07E6F1B1F7E20E06C6E1B3F816DF5
7FC06D80F7FF806D806D6E4F13006D6E616D525A826D6E4F5A6D6E4F5A6E6D6C4E5A021F
6EF0FFE06E6E4D5B6E02F84D5B6E02FE050F90C7FC02006E6CEE3FFE6F02F0EEFFFC031F
02FE03035B6FDAFFC0021F13E0030303FF0103B55A030093B7C8FC043F18FC040718F004
0118C0DC003F94C9FC050316F8DD003F1580DE007F01F0CAFC757A75F78C>67
D<92383FFFF80207B612E0027F15FC49B87E010717E0011F83499026F0007F13FC4948C7
000F7F90B502036D7E486E6D806F6D80727F486E6E7F8486727FA28684A26C5C72806C5C
6D90C8FC6D5AEB0FF8EB03E090CAFCA70507B6FC041FB7FC0303B8FC157F0203B9FC021F
ECFE0391B612800103ECF800010F14C04991C7FC017F13FC90B512F04814C0485C4891C8
FC485B5A485B5C5A5CA2B5FC5CA360A36E5DA26C5F6E5D187E6C6D846E4A48806C6D4A48
14FC6C6ED90FF0ECFFFC6C02E090263FE07F14FE00019139FC03FFC06C91B6487E013F4B
487E010F4B1307010303F01301D9003F0280D9003F13FC020101F8CBFC57507ACE5E>97
D<93387FFF80030FB512FC037FECFF804AB712E0020716F8021F16FE027FD9F8077F49B5
D8C000804991C7003F13E04901FC020F7F49496E7F49498049496E7F49496E7F90B55A48
727E92C914804884485B1BC048841BE0485BA27313F05AA25C5AA21BF885A2B5FCA391BA
FCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F86C7F1A0F6C6E17F06C191F6F17
E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13006D6D6CEC0FFE6D02E0EC3FFC
6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002034CC7FC020016F8031F15E003
0392C8FCDB000F13E04D507BCE58>101 D<903801FFFCB6FCA8C67E131F7FB3AD95380F
FFE095B512FE05036E7E050F15E0053F15F84D81932701FFF01F7F4CD900077FDC07FC6D
80DC0FF06D80DC1FC07F4C48824CC8FC047E6F7F5EEDFDF85E03FF707F5EA25EA25EA293
C9FCA45DB3B3A6B8D8E003B81280A8617879F76C>104 D<902601FFFCEC7FFEB6020FB5
12F0057F14FE4CB712C0040716F0041F82047F16FE93B5C66C7F92B500F0010F14C0C66C
0380010380011F4AC76C806D4A6E8004F06F7F4C6F7F4C6F7F4C8193C915804B7014C086
1DE0A27414F0A27414F8A47513FCA57513FEAF5113FCA598B512F8A31DF0621DE0621DC0
621D806F5E701800704B5B505B704B5B7092B55A04FC4A5C704A5C706C010F5C05E0013F
49C7FC9227FE7FFC01B55A70B712F0040F16C0040393C8FC040015F8053F14C0050301F0
C9FC94CCFCB3A6B812E0A85F6F7ACD6C>112 D<902601FFF8EB07FEB691383FFFC094B5
12F00403804C14FE4C8093261FFC3F138093263FE07F13C0DC7F80B5FCC66C5D011FDAFE
0114E06DEBF9FC16F815FB16F016E015FF16C07114C05E72138095381FFE0093C76C5AF0
01E095C8FCA25DA65DB3B3A2B812F8A8434E7ACD4F>114 D<15FFA75CA55CA45CA25CA2
5CA25CA25C91B5FCA25B5B5B131F5B90B9FC120FBAFCA6D8000791C9FCB3B3A3F01FE0AE
183F7014C07F187F7014806D16FF826D4B13006E6D485AEEFE0F6E90B55A020F5D6E5D02
0115C06E6C5C031F49C7FC030113F03B6E7CEC4B>116 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fg cmsl10 10.95 38
/Fg 38 91 df<007FB5FCA2B512FEA418067C961E>45 D<121EEA3F80EA7FC012FFA413
80EA7F00123C0A0A788919>I<1703EF0780170FA2EF1F00A2173EA25FA25FA24C5AA24C
5AA24C5AA24C5AA24CC7FCA2163E167E167C5EA24B5AA24B5AA24B5AA24B5AA24BC8FCA2
153EA25DA25DA24A5AA24A5AA24A5AA24A5AA24AC9FCA2143EA25CA25CA2495AA2495AA2
495AA2495A131F91CAFC133EA25BA25BA2485AA2485AA2485AA2485AA248CBFCA2123EA2
5AA25AA21270315B7FC32D>I<EC07F8EC3FFF9138FC0FC0903903F003E0903907C001F0
D90F8013F849C7FC013E14FC017E147C017C147E13FC485AA20003157F5B1207A2120F5B
A2121F16FF5BA2123FA44848EB01FEA648C7EA03FCA5ED07F8A25A16F0A2150F16E0A3ED
1FC0A21680007E143F1600157E123E003F5C4A5AD81F805B000FEB07E06C6C485A2603F0
3FC7FC3800FFFCEB1FE0283F79BC2D>I<157015F014011407143F903803FFE0137FEBFF
CFEBF80F1300141F15C0A5143F1580A5147F1500A55C5CA513015CA513035CA513075CA5
130F5CA3131F497EB612F8A31D3D78BC2D>I<EC01FE91380FFFE0023F13F89138FC07FC
903901E001FE903907C000FF49C7EA7F80011E15C0163F4915E05B0170141F13FF80A35A
163FA26C90C7FC137E0118EC7FC090C8FCEEFF80A24B1300A24B5A5E4B5A4B5A4B5A5E4B
5A4BC7FC15FEEC01F84A5A4A5A4A5A4AC8FC143E5C5CEB01E04948130E49485B49C7FC13
1E495C13705B48485C484814F0000FB6FC5A485D5AB7FC5EA22B3D7CBC2D>I<EC07FC91
383FFF809138F80FE0903903C007F09039078003FC90380F0001011C14FE013C14FF137F
1480EBFFC0A31480A291380003FE137E90C7FCED07FC16F8150F16F0ED1FE016C0ED3F80
ED7E005DEC07F0903803FF8015F090380001FC6E7EED7F80ED3FC0A2ED1FE016F0A316F8
A4120EEA3F80486C133F16F012FFA216E0157F5B48C7EAFFC000F0158000704913001278
6C495A003EEB07F86C495A390FE03FE00003B51280C649C7FCEB1FE0283F7ABC2D>I<16
1C163C167CA216FCED01F815031507150FA2151DED3BF0157315E315C31401EC03839138
0707E0140E141CA2143814709138E00FC0EB01C014801303EB0700130E49EB1F805B1330
13705B485A4848EB3F0090C7FC5A120E5A5A48147E1260B8FCA3C73801FE00A25DA41403
A25DA314074A7E0107B512F8A3283E7BBD2D>I<01061403D90780131F90390FF801FE91
B512FC16F816F016E0168049EBFE0015F890381C7FC091C8FCA3133C1338A513781370A2
EC1FE0ECFFF8903873E03E9038FF001F01FCEB0F804914C049EB07E04914F049130390C7
FC16F8A61507A21206EA3F80487EA2150F00FF15F0A24914E090C7121F00FC15C000F014
3F00701580ED7F0012786C14FE4A5A6C495A390F800FE03907E03FC06CB5C7FCC613FCEB
1FE0283F7ABC2D>I<ED7F80913803FFE091380FC0F091383E003802FC131C495A494813
FE903807E003EB0FC090381F8007133FD97F0013FC01FE1303ED01F0484890C7FC1203A2
485AA2120F5BA2001FEB3F809038E0FFE0393FE3C0F89038E7007C01EE7F01FC133F4848
EB1F80A24914C05B16E0A2485AA216F05BA2ED3FE0A290C7FCA4157F16C0A316804814FF
007E1500007F5C14016C5C4A5A6C6C485A4A5A6C6C485A2607E07FC7FC3803FFFEC613F8
EB3FC0273F78BC2D>I<EA0380120713E090B712805AA217005E485D5E001EC85A484A5A
00385D150300784A5A00704AC7FC151E5D485CC8127015F04A5A4A5A4A5A4AC8FC140E14
1E5C147C14785C1301495AA213075C130F495AA2133F91C9FC5BA25B5B1201A312035BA2
1207A3485AA5121F5BA26C5AEA0780294074BD2D>I<EC03FC91381FFF8091387C07E090
3901F001F0903903C000F84948137C49C7123E131E013E141F133C137C137813F8A3163F
486C143E167E6D147C6C6C14FC6E13F89138C001F09138F003E090397FF807C09138FC0F
0090383FFF3E6D13F86D13E06D7F01017F8101077F90391F1FFF80D93E0F13C0EBF80726
01F00113E048486C13F04848137F4848131F001FEC0FF890C71207003E1403A2481401A3
00FC15F05AA3ED03E0A26CEC07C0007C1580007E140F003EEC1F00003F143E6C6C5B6C6C
485A3907F00FE00001B512806C6C48C7FCEB0FF0283F7ABC2D>I<EC07F8EC3FFE9138FC
0F80903901F007C0903907E003E0D90FC013F090381F8001013F14F8EB7F004914FC4848
1300A24848EB01FEA21207A3485AA41503121F5BA31507A2000F15FC150FA2151F120715
3F000315F86C6C137F000014EF90387C01CF90393E078FF090380FFE1FEB03F890C713E0
A2ED3FC0A3ED7F8016005D003F5C487E4A5A00FF495A5D4A5A49485A48495A007049C7FC
0078137E383E03FC381FFFF06C13C0D801FEC8FC273F79BC2D>I<13F0EA01FC1203EA07
FEA313FCA2EA03F8EA01E0C7FCB3121EEA3F80EA7FC012FFA41380EA7F00123C0F2778A6
19>I<17E016011603831607A2160FA2161F83163FA2167F167716F7EEE7FCED01E316C3
150316831507EE03FEED0F01150E151E151C153C03387FED7800157015F05D4A4880177F
4A5AA24AC7FCA2020E81173F5C021FB6FC5CA20270C7EA3FE0171F5CA2495AA249488117
0F49C8FCA2130EA24982013C1507A2137CD801FE4B7E2607FF80EC3FFEB500F00107B512
FC19F85E3E417DC044>65 D<013FB7FC18E018FC903B007FE00007FE6E48903801FF8094
38007FC05DF03FE0F01FF0A3027F16F892C8FCA54A16F04A153F19E0187F19C0F0FF8001
014B13004A4A5A4D5AEF1FF04D5ADC03FFC7FC49B612F8EFFF8002F8C7EA3FE0EF0FF0EF
07FC717E010715014A81711380A319C0130F5CA5011F4B13805C19005F601707013F4B5A
4A4A5A4D5A4D5A017F913801FF8001FF020F90C7FCB812FC17F094C8FC3D3E7DBD40>I<
DCFFC01338030F01F01378037F01FC13F0913A01FF803F01913A07FC000781DA1FE0EB03
C3DA7FC0EB01E74AC812FF4948ED7FE0D907FC153F495A4948151F495A4948150F494816
C018074890C9FC485AA2485A000F1880491603121FA248481607A295C7FC485AA412FF5B
A75BA2181C183C1838A27F007F1778187018F0003F5F6D150160001F16036C6C4B5A95C7
FC6C6C5D6C6C151E6C6C5D6C6C15F86D6C495A6D6CEB07C0D91FF0EB1F80D907FE01FEC8
FC0101B512F86D6C13E0DA07FEC9FC3D4276BF42>I<013FB7FC18E018F8903B007FF000
0FFE6E48EB01FF9438007FC04B6E7E180F85727E727E147F4B6E7EA2727EA302FF178092
C9FCA54918C05CA41A8013034A5DA41A0013074A5DA261A24E5A130F4A5E180F61181F61
011F4C5A5C4E5A4EC7FC4D5A4D5A013F4B5A4A4A5AEF3FE0EF7F80017F4A48C8FC01FFEC
1FFCB812F0178004FCC9FC423E7DBD45>I<013FB812F8A39026007FF0C7127F6E48140F
18034B14011800A31978147F4B1570A502FF147092C7FCA3190017F0495D4A1301A21607
161F91B6FC495DA29138FC003F160F1607160301075D5CA219E0180119C0010FEC07004A
90C712031980A218071900011F5E5C181EA2183E183C013F167C4A15FC4D5A1707017F15
1F01FF4AB45AB9FCA2603D3E7DBD3E>I<013FB812E0A3903A007FF000016E48EB003F18
0F4B14071803A31801147F4B15C0A514FF92C71270A395C7FC17F0495D5C160116031607
161F49B65AA39138FC003F160F160701075D4A1303A5010F4AC8FC5C93C9FCA4131F5CA5
133F5CA3137FEBFFF0B612F8A33B3E7DBD3B>I<4BB46C1370031F01F013F0037F9038FC
01E0913A03FF807E03913A0FF8000F83DA1FE0EB07C7DA7F80EB01EF4AC812FFD903FE16
C04948157F4948153F495A4948151F495A4948168091C9120F5A485AA2485A000F180049
82121FA248485EA295C7FC485AA412FF5BA6043FB512E05BA29339001FFC00715AA2607F
127FA2171F123F6D5EA2121F7F000F163F6C7E6C6C4B5A7F6C6C15FF6C6DEB01EFD93FC0
EB07C7D91FF0EB1F87D907FE9038FE03800101B5EAF8016D6C01E0C8FCDA07FEC9FC3C42
76BF47>I<013FB5D8F807B6FC04F015FEA29026007FF0C7380FFE006E486E5AA24B5DA4
180F147F4B5DA4181F14FF92C85BA4183F5B4A5EA491B8FC5B6102FCC8127FA318FF1307
4A93C7FCA45F130F4A5DA41703131F4A5DA41707133F4A5DA3017F150F496C4A7EB6D8E0
1FB512FC6115C0483E7DBD44>I<011FB512FC5BA29039003FF8006E5AA25DA5143F5DA5
147F5DA514FF92C7FCA55B5CA513035CA513075CA5130F5CA5131F5CA3133F497E007FB5
12F0A2B6FC263E7EBD21>I<013FB500F8010FB5FC4C5BA29026007FF0C7000313E06E48
6E130019FC4B15F04E5A4E5A4E5A061EC7FC027F5D4B5C4D5A4D5AEF07804DC8FC02FF14
1E92C7127C5FEE01E04C5A4C5A49021FC9FC4A5B5E4C7E5D03077F01035B9139FC1F3FE0
153C4B6C7E15F09139FFE00FF84913C092380007FC5C4A6D7E5C707E130F4A6D7F84177F
717EA2011F6F7E5C717EA2717EA2013F6F7E5C84A2017F83496C4A13E0B600E0017F13FF
A24B90B6FC483E7DBD47>75 D<013FB512FEA25E9026007FF8C8FCEC3FE0A25DA5147F5D
A514FF92C9FCA55B5CA513035CA513075CA21838A21870130F5CA218E0A3011F15014A15
C01703A21707EF0F80013F151F4A143F177FEFFF00017F140301FF143FB9FC5FA2353E7D
BD39>I<90263FFFF093381FFFF85013F0629026007FF8EFF000023F4D5AA2023B933801
DFC0A2DA39FCED039FA2F1073F14790271040E5BEC70FE191C19381A7F02F01670DAE07F
94C7FC19E0A2F001C06201016D6C495A02C05FF00700A2180E6F6C14010103161C028003
385BA218706F7EF0E00313070200DA01C05BA2923907F00380A294380700075B010E9026
03F80E5C5FA25F190F011E6D6C5A011C605FA2EEFDC0DB00FF141F013C5D013860013C92
C7FC017C5C01FE027E143F2607FF80017C4A7EB500FC037FB512E004785E4A1338553E7C
BD53>I<90263FFFE0023FB5FC6F16FEA29026003FF8020313C0021F030013004A6C157C
023B163C6F15381439810238167802787FDA707F157082153F82031F15F002F07FDAE00F
5D8215078203031401010180DAC0015D82811780047F1303010315C04A013F5C17E0161F
17F0040F1307010715F891C7000791C7FC17FC160317FE04015B4915FF010E6E130E188E
177F18CEEF3FDE011E16FE011C6F5AA2170FA21707133C01386F5A133C017C150113FE26
07FF801400B512FC18705C483E7DBD44>I<923803FF80031F13F09238FE01FE913903F0
003FDA0FC0EB1FC0DA3F80EB07E0027EC76C7E49486E7E49488149486E7E4948157F495A
013F17804948ED3FC049C9FCA24848EE1FE012035B000718F05B120FA2485A19F8123F5B
A2127FA219F04848163FA5F07FE0A35BF0FFC0A219805F19007F4D5A127F4D5A60003F16
0F6D5E001F4C5A4D5A6C6C4B5A95C7FC6C6C15FE00034B5A6C6C4A5A6C6C4A5A017FEC1F
C06D6C495AD90FE001FEC8FC903903F807F80100B512C0DA0FFCC9FC3D4276BF47>I<01
3FB612FEEFFFE018F8903B007FF0000FFC6E48EB01FF7113804BEC7FC0183F19E0F01FF0
A2147F5D19F8A402FFED3FF092C8FCA219E0A2F07FC05B4AEDFF8019004D5A4D5AEF0FF8
0103ED3FE04A903801FF8091B648C7FC17F002FCCAFCA213075CA5130F5CA5131F5CA513
3F5CA3137F497EB612E0A25D3D3E7DBD3E>I<013FB612F017FF18E0903B007FF0003FF8
6E48EB07FCEF01FE4B6D7EF07F8019C0183F19E0147F4B15F0A502FFED7FE092C8FCA219
C0F0FF80A2494B13004A5D4D5AEF0FF04D5AEF7F800103DA07FEC7FC91B612F017809139
FC0007E0EE03F8EE00FC0107814A147F717EA284A2130F5CA484011F157F5CA41902013F
17075CA2F0F00F017F170E496C143FB600E0011F131C94380FF83C4B01071378CA3801FF
E09438003F8040407DBD43>82 D<9238FF80070207EBE00F021FEBF81E91387F00FE02FC
EB1F3ED903F0EB0FFE49481307494813034AEB01FC49C7FC491400133E137E177C491578
A57F1770A26D1500808080EB7FFEECFFE06D13FEEDFFC06D14F06D14FC01038001008014
3F02031480DA003F13C015031500EE7FE0163F161FA2160F121CA31607160F003C16C0A3
1780003E151F1700007E5D007F153E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF8
7F803F8027F01FFFFEC7FCD8E00713F839C0007FC030427BBF33>I<0007B912F0A33C0F
FE000FF8003F01F0160F01C04A13034848160190C7FC121EF000E048141F5E1238A21278
1270153F5E5AA3C81600157F5EA515FF93C9FCA55C5DA514035DA514075DA5140F5DA314
1FEC7FFC0003B7FCA33C3D76BC42>I<B600E090B512FC4B15F8A2000101C0C7000F1300
6C49EC03FCEF01F091C9FC60A317015A495EA417031203495EA4170712074993C7FCA45F
120F49150EA4171E121F49151CA4173C123F491538A31778177017F05F001F15015F1603
6D4A5A000F93C8FC5E6C6C141E6C6C5C000115F86C6C495A017FEB07C090393FC03F8090
260FFFFEC9FC010313F89038007FC03E4073BD44>I<B6020FB5FC19FEA2000301E00201
13E06C01809138007F8091C9EA7E006C173C18386E15781870017F16F0604D5A804D5A13
3F4DC7FCA26E140E171E011F151C173C17386E1478010F15705FA24C5A8001074A5AA24C
C8FC5E6E130E0103141E161C163C16386E5B13015EA24B5A14FF6D495AA24BC9FC5D158E
EC7F9E159C15B8A215F0143F5DA25DA26E5AA292CAFCA2140E404074BD44>I<B6017FB5
D88007B512804A1A00A2000701C0010101E0C713F06C90C80180EC3FC06C48735A99C7FC
057F150E1B1E6D191C6C1A3C1B3805FF15787214705E636EEB03BF017F4E5AEE073F505A
040E7F051F4AC8FC161C6E170E013F143862167804706D5BEEF00F04E05D90381FE00104
C015F003035E0480140106F85B9226070007130302F05F010F010E150797C9FC5D190E4B
EB03FC616E5A01075F5D61DAF9C014FE05015BECFB8002FF6F5A7F92C75CA24A93CAFC83
5C606D5A605C604A15781870594074BD5D>I<010FB500F090B512F85B5FD9003F902680
003F1300DA0FFEC7EA1FF84BEC0FE00207168096C7FC6E6C141E181C6E6C143C606E6D5B
4D5ADB7FC05B4D5A92383FE0074DC8FC92381FF01E171C6F6C5A5F923807FCF0EEFDE06F
B45A5F6F90C9FCA26F7FA2707EA216FF4B7FED03DF9238079FF0ED0F1F92380E0FF8151C
92383C07FC15784B6C7EEC01E04B6C7EEC038002076D7F4AC7FC021E6E7E5C02386E7E5C
02F06E7E495A49486E7E130749486E7E497E017F4B7E2603FFF091383FFF80007F01FC49
B512FEB55CA2453E7EBD44>I<B66C0103B51280A3000101F0C8EBF0006C49ED7FC06D48
6FC7FC6E153E013F163C606D6C5D606D6C4A5A17036D6C4A5A95C8FC6E140E0103151E5F
6D6C14385F6D6D13F04C5ADA7FC05B4C5AEDE007023F49C9FC161E91381FF01C5E91380F
F8785E6E6C5AEDFDC015FF6E5B93CAFC6E5AA35DA21403A45DA21407A45DA2140FA4141F
4A7E013FB512F0A3413E75BD44>I<010FB712FEA39239C00007FCD91FFCC7EA0FF814F0
4AEC1FF00280EC3FE091C8EA7FC0013EEDFF80A2013C4A13004C5A494A5A4C5A13704C5A
4C5A494A5A4C5AA290C74890C7FC4B5A4B5A4B5AA24B5A4B5A4B5A4B5AA24A90C8FC4A5A
4A5A4A5AA24A5A4A5A4A48EB01C04A5AEF03804990C7FC495A495A494814071800495A49
485C495A495A171E4890C8123E485A4848157E484815FE4C5A484814074848141F4848EB
01FFB8FC5FA2373E7BBD38>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fh cmbx10 10.95 49
/Fh 49 122 df<EDFFF8020F13FF027F8049B612E001079038C01FF090390FFE0007D91F
F8497ED93FE0131F4948497E13FF5C5A91C7FCA2705A705AEE03C093C8FCA6EE03FCB8FC
A50001903880001F160FB3AB007FD9FE03B512F0A534407EBF3A>12
D<B612E0A91B097F9823>45 D<161C163E167EA216FE16FC150116F8A2150316F0A21507
16E0150F16C0A2151F1680153F1600A25D157E15FE5DA214015DA214035D14075DA2140F
5D141F5DA2143F92C7FC5C147EA214FE5CA213015C13035CA213075C130F5CA2131F5C13
3F91C8FCA25B137EA213FE5B12015BA212035B12075BA2120F5B121F5BA2123F90C9FCA2
5A127E12FE5AA25A1278275B7AC334>47 D<ECFFE0010713FC011F13FF017F14C0D9FFE0
7F489038803FF03A03FE000FF848486D7EA248486D7E001F81A348486D1380A3007F16C0
A500FF16E0B3A2007F16C0A5003F16806D5BA2001F1600A2000F5D6D13076C6C495A6C6C
495A6C6D485A6C9038E0FFE06DB55A011F91C7FC010713FC010013E02B3D7CBB34>I<14
0F143F5C495A130F48B5FCB6FCA313F7EAFE071200B3B3A8007FB612F0A5243C78BB34>
I<903803FF80013F13F890B512FE00036E7E4881260FF80F7F261FC0037F4848C67F486C
6D7E6D6D7E487E6D6D7EA26F1380A46C5A6C5A6C5A0007C7FCC8FC4B1300A25E153F5E4B
5AA24B5A5E4A5B4A5B4A48C7FC5D4A5AEC1FE04A5A4A5A9139FF000F80EB01FC495A4948
EB1F00495AEB1F8049C7FC017E5C5B48B7FC485D5A5A5A5A5AB7FC5EA4293C7BBB34>I<
903801FFE0010F13FE013F6D7E90B612E04801817F3A03FC007FF8D807F06D7E82D80FFC
131F6D80121F7FA56C5A5E6C48133FD801F05CC8FC4B5A5E4B5A4A5B020F5B902607FFFE
C7FC15F815FEEDFFC0D9000113F06E6C7E6F7E6F7E6F7E1780A26F13C0A217E0EA0FC048
7E487E487E487EA317C0A25D491580127F49491300D83FC0495A6C6C495A3A0FFE01FFF8
6CB65A6C5DC61580013F49C7FC010313E02B3D7CBB34>I<ED01F815031507A2150F151F
153FA2157F15FF5C5CA25C5CEC1FBFEC3F3F143E147C14FCEB01F814F0EB03E01307EB0F
C0EB1F801400133E137E5B485A5B485A1207485A5B48C7FC5A127E5AB812F8A5C8387FF8
00AA49B612F8A52D3C7DBB34>I<00071538D80FE0EB01F801FE133F90B6FC5E5E5E5E93
C7FC5D15F85D15C04AC8FC0180C9FCA9ECFFC0018713FC019F13FF90B67E020113E09039
F8007FF0496D7E01C06D7E5B6CC77FC8120F82A31780A21207EA1FC0487E487E12FF7FA2
1700A25B4B5A6C5A01805C6CC7123F6D495AD81FE0495A260FFC075B6CB65A6C92C7FCC6
14FC013F13F0010790C8FC293D7BBB34>I<EC07FF023F13C049B512F001078049EB03FC
90383FF80090397FE001FE9038FFC0034849487E48495AA2485A120FA2485A6F5A003F6E
5A6F5A92C8FC485AA21402EC3FFE00FF496C7E01F9B512E001FB809138E03FF89039FF80
0FFC4A6C7E825B6F13804915C0A317E05BA4127FA5123FA26D15C0121FA2000F4A13806D
150012076C6C495A6C6D485A6C9038E07FF86DB55A6D5C6D1480010749C7FC010013F02B
3D7CBB34>I<121F7F13F890B712F0A45A17E017C0178017005E5E5A007EC7EA01F84B5A
007C4A5A4B5A4B5A93C7FC485C157E5DC7485A4A5AA24A5A140F5D141F143F5D147FA214
FF92C8FC5BA25BA3495AA3130FA5131FAA6D5A6D5A6D5A2C3F7ABD34>I<ECFFF0010713
FE011F6D7E017F14E09039FFC07FF03A01FE001FF848486D7E48486D7E1503485A828112
1FA27F7F7F6D5B02C05B14F06C6D485A9138FE0FF89138FF9FF06CECFFE06C5D5E6C92C7
FC6C816D14E0011F80498090B67E48812607FE3F7F48486C1480381FF807D9F00114C048
486C7E007F8049010F13E0150348487F81167FA2163FA36D15C0127FEE7F807F6C6CECFF
006C6C5B01FEEB07FE3A0FFFC03FFC6C90B55A000115E06C6C5C011F49C7FC010113F02B
3D7CBB34>I<903801FFE0010F13FC013F13FF90B612C04801E07F489038003FF048486D
7E000F6E7E485A6F7E123F48488081178012FFA217C0A517E0A4007F5CA4003F5C6C7E5D
6C7E00075C3903FF80FB6C13FF6C6C13F36D13C3010F018313C090380008031400A24B13
80EA03F0487E486C1500487E4B5AA25E151F4B5A495C6C48EBFFE049485B2607FC0F5B6C
B6C7FC6C14FC6C14F06D13C0D90FFEC8FC2B3D7CBB34>I<16FCA24B7EA24B7EA34B7FA2
4B7FA34B7FA24B7FA34B7F157C03FC7FEDF87FA2020180EDF03F0203804B7E02078115C0
82020F814B7E021F811500824A81023E7F027E81027C7FA202FC814A147F49B77EA34982
A2D907E0C7001F7F4A80010F835C83011F8391C87E4983133E83017E83017C81B500FC91
B612FCA5463F7CBE4F>65 D<B812F8EFFF8018F018FC8426003FFCC7EA3FFF050F138071
13C07113E08319F0A27113F8A719F05FA24D13E019C04D13804D1300EF3FFE933801FFF8
91B712E0188018F818FE02FCC7380FFF80050313C07113E07113F019F8F07FFCA2F03FFE
A219FFA38460A419FE187FA2F0FFFC4D13F85F4D13F0053F13E0BA12C0190018FC18F095
C7FC403E7DBD4A>I<922607FFC0130E92B500FC131E020702FF133E023FEDC07E91B7EA
E1FE01039138803FFB499039F80003FF4901C01300013F90C8127F4948151FD9FFF8150F
48491507485B4A1503481701485B18004890CAFC197E5A5B193E127FA349170012FFAC12
7F7F193EA2123FA27F6C187E197C6C7F19FC6C6D16F86C6D150119F06C6D15036C6DED07
E0D97FFEED0FC06D6CED3F80010F01C0ECFF006D01F8EB03FE6D9039FF801FFC010091B5
5A023F15E002071580020002FCC7FC030713C03F407ABE4C>I<B812F8EFFF8018F018FC
18FF26003FFCC76C13C005077F05017F716C7E727E727E727E721380A27213C0A27213E0
A21AF084A21AF8A41AFCA5197FA319FFA51AF8A41AF0A2601AE0A24E13C0A24E13804E13
00604E5A4E5A4D485A050713E0057F5BBA5A4EC7FC18F818C005F8C8FC463E7DBD50>I<
BAFCA4198026003FFEC7123F1707170183183FA2181FF00FC0A31807EE07C0A3F003E0A3
160F95C7FC161F163F16FF91B6FCA54AC6FC163F161F040F147CA2160719F8A593C71201
A219F01803A21807A2180FF01FE0183F18FF1703173FBAFCA219C0A33E3D7DBC45>I<B9
12FEA48426003FFEC77E170F1703170084A284F01F80A3180FA2EE07C0A2F007C0A4040F
90C7FCA2161F163F16FF91B6FCA54AC6FC163F161F160FA21607A693C9FCACB712E0A53A
3D7DBC42>I<922607FFC0130E92B500FC131E020702FF133E023FEDC07E91B7EAE1FE01
039138803FFB499039F80003FF4901C01300013F90C8127F4948151FD9FFF8150F484915
07485B4A1503481701485B18004890CAFC197E5A5B193E127FA34994C7FC12FFAB0407B6
12FC127F7FA3003F92C7383FFE00A27F7EA26C7FA26C7F6C7FA26C7F6C7FD97FFE157F6D
6C7E010F01E014FF6D01F813036D9038FF801F010091B512F3023F15C00207ED803E0200
9138FE000E030701E090C7FC46407ABE52>I<B71280A526003FFEC7FCB3B3B0B71280A5
213E7DBD28>73 D<B6037FB512E0A2818181D8003F6D9139001F800081A281816E7E6E7F
6E7F80826E7F6E7F6E7F6E7F157F826F7F6F7F6F7F6F7F81836F7F6F7F707E701380A270
13C07013E07013F07013F87013FCA27013FEEF7FFF71139F7113DF8319FF8383838384A2
8484848484A284B600C080197F193F191FA24B3E7DBD52>78 D<ED3FFF0203B512F0021F
14FE027F6E7E902701FFF80713E00107D9C00013F84990C7EA3FFCD93FFCEC0FFF49486E
7F49486E7F48496E7F4A80488448496F7EA24890C96C7E4884A249161F003F84A3484870
1380A400FF19C0AD007F19806D5EA3003F1900A26D5E6C60A26C6D4B5AA26C6D4B5A6C6D
4A5BA26C6D4A5B6C6D4A5B6D6C4A5B6DB4023F90C7FC6D01C0EBFFFE0107D9F80713F801
0190B612E06D5E021F4AC8FC020314F0DA003F90C9FC42407ABE4F>I<B812F017FF18C0
18F018FC26003FFCC77FEF1FFF7113807113C07113E0A27113F0A319F8A819F0A34D13E0
19C05F4D1380053F1300EFFFFE91B712F860188005FCC7FC4ACAFCB3A4B77EA53D3E7DBD
47>I<B87E17FCEFFF8018F08428003FFC000113FE9338003FFF050F7F717F717FA28583
85A761A25F61614D5B4D90C8FCEF3FFE4CB45A91B712F018C04DC9FC717E9126FC000F7F
040113F0707F717EA2717EA2717EA685A6F207C019C0A271140F07E01380B76DEBF01F71
9038FC3F007190B5FC716C5B061F13F8CB000113E04A3F7DBD4E>82
D<903A03FFC001C0011FEBF803017FEBFE0748B6128F4815DF48010013FFD80FF8130F48
481303497F4848EB007F127F49143F161F12FF160FA27F1607A27F7F01FC91C7FCEBFF80
6C13F8ECFFC06C14FCEDFF806C15E016F86C816C816C816C16806C6C15C07F010715E0EB
007F020714F0EC003F1503030013F8167F163F127800F8151FA2160FA27EA217F07E161F
6C16E06D143F01E015C001F8EC7F8001FEEB01FF9026FFE00713004890B55A486C14F8D8
F81F5CD8F00314C027E0003FFEC7FC2D407ABE3A>I<003FB912FCA5903BFE003FFE003F
D87FF0EE0FFE01C0160349160190C71500197E127EA2007C183EA400FC183F48181FA5C8
1600B3AF010FB712F8A5403D7CBC49>I<B76C90B61280A526003FFEC9003EC7FCB3B3A4
197E011F177C80A26D17FC616D6D14014E5A6D6D4A5A6D6D140F6D01F8EC3FC0DA7FFEEC
FF8091273FFFC00F90C8FC020F90B512FC02035D020015E0031F1480030101F8C9FC493F
7DBD50>I<903807FFC0013F13F848B6FC48812607FE037F260FF8007F6DEB3FF0486C80
6F7EA36F7EA26C5A6C5AEA01E0C8FC153F91B5FC130F137F3901FFFE0F4813E0000F1380
381FFE00485A5B485A12FF5BA4151F7F007F143F6D90387BFF806C6C01FB13FE391FFF07
F36CEBFFE100031480C6EC003FD91FF890C7FC2F2B7DA933>97 D<13FFB5FCA512077EAF
EDFFE0020713FC021FEBFF80027F80DAFF8113F09139FC003FF802F06D7E4A6D7E4A1307
4A80701380A218C082A318E0AA18C0A25E1880A218005E6E5C6E495A6E495A02FCEB7FF0
903AFCFF01FFE0496CB55AD9F01F91C7FCD9E00713FCC7000113C033407DBE3A>I<EC7F
F00107B5FC011F14C0017F14E09039FFF01FF0489038800FF848EB001F4848EB3FFC120F
485AA2485AA2007FEC1FF849EB0FF0ED03C000FF91C7FCAB127F7FA3003F153E7F001F15
7E6C6C147C6C6C14FC91388001F86C9038C003F0C69038F81FE06DB512C0011F14800107
EBFE009038007FF0272B7DA92E>I<EE07F8ED07FFA5ED003F161FAFEC7FF0903807FFFE
011FEBFF9F017F14DF9039FFF01FFF48EBC00348EB00014848EB007F485A001F153F5B12
3FA2127F5BA212FFAA127FA37F123FA26C6C147F120F6D14FF6C6C01037F6C6D48EBFFE0
6CEBF03F6C6CB512BF6D143F010713FC010001E0EBE00033407DBE3A>I<ECFFF0010713
FE011F6D7E017F809039FFE07FE0489038801FF048496C7E48486D7E48486D7E121F4913
01003F81A2485A6F1380A212FFA290B7FCA401F0C9FCA5127FA27F123FEE0F806C7E161F
6C6C15006C6C5C6C6D137E6C9038E001FC6C9038F80FF8013FB55A6D14C0010391C7FC90
38007FF8292B7DA930>I<EC07FE91387FFF8049B512C0010714E090390FFE3FF0EB1FF0
90393FE07FF8EB7FC013FF1480A2489038003FF0ED1FE0ED0FC092C7FCAAB612E0A50001
0180C7FCB3AC007FEBFF80A525407DBF20>I<903A03FF8007F0013F9038F83FF8499038
FCFFFC48B712FE48018313F93A07FC007FC34848EB3FE1001FEDF1FC4990381FF0F81700
003F81A7001F5DA26D133F000F5D6C6C495A3A03FF83FF8091B5C7FC4814FC01BF5BD80F
03138090CAFCA2487EA27F13F06CB6FC16F016FC6C15FF17806C16C06C16E01207001F16
F0393FE000034848EB003F49EC1FF800FF150F90C81207A56C6CEC0FF06D141F003F16E0
01F0147FD81FFC903801FFC02707FF800F13006C90B55AC615F8013F14E0010101FCC7FC
2F3D7DA834>I<13FFB5FCA512077EAFED1FF8EDFFFE02036D7E4A80DA0FE07F91381F00
7F023C805C4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5333F7CBE3A>I<EA01F8487E48
7E487E481380A66C13006C5A6C5A6C5AC8FCA913FFB5FCA512077EB3ABB512F8A515407C
BF1D>I<13FFB5FCA512077EB3B3AFB512FCA5163F7CBE1D>108 D<01FFD91FF8ECFFC0B5
90B5010713F80203DAC01F13FE4A6E487FDA0FE09026F07F077F91261F003FEBF8010007
013EDAF9F0806C0178ECFBC04A6DB4486C7FA24A92C7FC4A5CA34A5CB3A4B5D8FE07B5D8
F03FEBFF80A551297CA858>I<01FFEB1FF8B5EBFFFE02036D7E4A80DA0FE07F91381F00
7F0007013C806C5B4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A533297CA83A>I<EC7FF0
903803FFFE011FEBFFC0017F14F09039FFE03FF8489038800FFC3A03FE0003FE48486D7E
000F168048486D13C0A2003F16E049147F007F16F0A400FF16F8AA007F16F0A46C6CECFF
E0A2001F16C06C6C491380A26C6C4913003A03FF800FFE6C9038E03FFC6C6CB512F0011F
14C0010791C7FC9038007FF02D2B7DA934>I<01FFEBFFE0B5000713FC021FEBFF80027F
80DAFF8113F09139FC007FF8000701F06D7E6C496D7E4A130F4A6D7E1880A27013C0A382
18E0AA4C13C0A318805E18005E6E5C6E495A6E495A02FCEBFFF0DAFF035B92B55A029F91
C7FC028713FC028113C00280C9FCACB512FEA5333B7DA83A>I<3901FE01FE00FF903807
FF804A13E04A13F0EC3F1F91387C3FF8000713F8000313F0EBFFE0A29138C01FF0ED0FE0
91388007C092C7FCA391C8FCB3A2B6FCA525297DA82B>114 D<90383FFC1E48B512BE00
0714FE5A381FF00F383F800148C7FC007E147EA200FE143EA27E7F6D90C7FC13F8EBFFE0
6C13FF15C06C14F06C806C806C806C80C61580131F1300020713C014000078147F00F814
3F151F7EA27E16806C143F6D140001E013FF9038F803FE90B55A15F0D8F87F13C026E00F
FEC7FC222B7DA929>I<EB07C0A5130FA4131FA3133F137FA213FF5A1207001FEBFFFEB6
FCA40001EBC000B3151FA96CEBE03EA2017F137EECF8FC90383FFFF86D13F0010713E001
001380203B7EB929>I<D9FF80EB0FF8B5EB0FFFA50007EC007F6C153FB3A5167FA316FF
6C5C4B7F6C903AC007DFFFE09138F01F9F6DB5121F6D13FE010F13F8010101E0EBE00033
2A7CA83A>I<B500FC90383FFFC0A5000101C0903803E0006E1307A26C5E6E130F017F5D
6E131F013F92C7FC6E5B011F143E6E137E010F147C6E13FCA26D5C15816D5C15C36D5C15
E76D5C15FF6E5BA36E90C8FCA26E5AA26E5AA26E5AA26E5AA232287EA737>I<B5D8FC03
B51280A5C69026E0007FC7FC6E13FE6D6C5B6D6C485A6D6C485A010F13076D6C485AED9F
C06DEBFF806D91C8FC6D5B6E5AA2143F6E7E140F814A7F4A7F4A7F02FE7F903801FC7F49
486C7E02F07F49486C7E49486C7E011F7F49486C7FD97F008001FE6D7FB5D8C007EBFFC0
A532287EA737>120 D<B500FC90383FFFC0A5000101C0903803E0006E1307A26C5E6E13
0F017F5D6E131F013F92C7FC6E5B011F143E6E137E010F147C6E13FCA26D5C15816D5C15
C36D5C15E76D5C15FF6E5BA36E90C8FCA26E5AA26E5AA26E5AA26E5AA35D14075D000E13
0FD83F805B387FC01FD8FFE090C9FC5C143E147E5CEBC1F8387FC3F0387E0FE06CB45A6C
5B6C48CAFCEA03F8323B7EA737>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fi cmr10 10.95 93
/Fi 93 124 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907
F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7
FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11
D<EC03FE91383FFF809138FE03E0903903F800F0D90FE013384948137C90393F8001FE90
387F00035B5BA2485A6F5AED007093C7FCAA16FEB7FCA33901FC000315011500B3AC486C
497EB5D8F87F13FCA32E407EBF33>I<EC03FF023F13EE9138FE01FEEB03F090380FE003
EB1FC0EB3F80EB7F005B5B150148481300AEB7FCA3D801FCC7FCB3AE486C497EB5D8F87F
13FCA32E407EBF33>I<DA03FE49B4FC91273FFF801F13C0913BFE03E07F01F0903C03F0
00F1FC0078D90FE0D97FF0131C49484948133E4948484913FF494848495A5B491500A248
485C03016E5A0300153896C7FCAA197FBBFCA3D801FCC738FE00018485B3AC486C496CEC
FF80B5D8F87FD9FC3F13FEA347407EBF4C>I<121EEA7F80EAFFC0A9EA7F80ACEA3F00AC
121EAB120CC7FCA8121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A4179C019>33
D<001E130F397F803FC000FF137F01C013E0A201E013F0A3007F133F391E600F30000013
00A401E01370491360A3000114E04913C00003130101001380481303000EEB070048130E
0018130C0038131C003013181C1C7DBE2D>I<4B6C130C4B6C131EA20307143EA24C133C
A2030F147CA293C71278A24B14F8A2031E5CA2033E1301A2033C5CA3037C1303A203785C
A203F81307A24B5CA20201140F007FBAFCBB1280A26C1900C72707C0003EC8FC4B133CA3
020F147CA292C71278A24A14F8A2021E5CA3023E1301007FBAFCBB1280A26C1900C727F8
0007C0C8FC4A5CA20101140FA24A91C9FCA301035CA24A131EA20107143EA24A133CA201
0F147CA291C71278A34914F8A2011E5CA2013E1301A2013C5CA201186D5A41517BBE4C>
I<14E0A4EB07FC90383FFF8090B512E03901F8E3F03903E0E0FCD807C0133CD80F807FD8
1F007F003E80003C1580007C140316C00078141F00F8143F157FA47EED3F806CEC0E0092
C7FC127F138013C0EA3FF013FEEA1FFF6C13FC6C13FF6C14C06C806C6C13F8011F7F1303
01007FECE7FF14E102E01380157F153FED1FC0A2003E140F127FD8FF801307A5130000FC
158000F0140F1270007815005D6C141E153E6C5C6C5C3907C0E1F03903F8EFE0C6B51280
D93FFEC7FCEB0FF8EB00E0A422497BC32D>I<013F1603D9FFC04B7E2601E0E0150F2607
C070151F48486C4BC7FC023E157E48486C15FE48D90FC0EB03FC003ED90EF0EB0FF8DA0F
3F13FD007E903A070FFFF1F0007C0200EB03E0160000FC6D6C495A170F604DC8FC5F173E
5F17FC5F4C5A1603007CD907005B4C5A007E150F003E495C020E49C9FC003F5D6C49133E
260F803C5B023813FC6C6C485B3A01E0E001F03800FFC090273F0003E0133F90C70007EC
FFC09339C001E0E0923A0F8007C070031F49487E0400143C033E90381F001C037E497F03
7C133E4B150F0201027E7F4B137C4A5A020702FCEB03805D4A5A141F92C7FC143E147E14
7C5CA2495A0103037CEB07005C4948147E010F033E5B4A160E49C8123F496F5B013E9238
0F803C49173801FC6F6C5A49923801E0E0496FB45A0160043FC7FC41497BC34C>I<EC0F
80EC7FE0ECF870903803E0380107133CECC01CEB0F80011F131E150EA2EB3F00A55D1480
A25D157815705D6D6C5A14C1ECC38002C7CAFC02EE91387FFFFCEB0FEC14FC4A020713C0
6D48913801FE006E5DEF00F06D7E01074B5A496C5D011D1503D939FF4A5A017093C7FC49
6D5B0001017F140E496C6C131E00036E131C2607801F143C000F6E5B001F6D6C1370263F
000714F0486E485ADA03FE5B913801FF03486D495A0487C8FCED7FCFED3FFE6F4814386D
5C150F007F6E6C14786D6D6C1470003F4A6C14F06D496C6C13E0001F91393E3FC0016C6C
903AFC1FF003C03D07FC07F007FC1F800001B5D8C001B512006C6C90C7EA7FFCD90FF8EC
0FF03E437CC047>I<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312
011380120313005A120E5A1218123812300B1C79BE19>I<1430147014E0EB01C0EB0380
1307EB0F00131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25AA3
123E127EA6127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA212017F
12007F13787F133E131E7FEB07801303EB01C0EB00E014701430145A77C323>I<12C07E
12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA21480130FA214C0
A3130714E0A6130314F0B214E01307A614C0130FA31480A2131F1400A25B133EA25BA213
7813F85B12015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I<EB03C0A2805C
A600F0140F00FC143F00FE147F00FF14FF393FC3C3FC390FE187F03903F18FC03900FDBF
00EB3FFCEB0FF0EB03C0EB0FF0EB3FFCEBFDBF3903F18FC0390FE187F0393FC3C3FC39FF
03C0FF00FE147F00FC143F00F0140F00001400A6805CA220277AC32D>I<1506150FB3A9
007FB912E0BA12F0A26C18E0C8000FC9FCB3A915063C3C7BB447>I<121EEA7F8012FF13
C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A120E5A121812381230
0B1C798919>I<B512FEA617067F961E>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A
798919>I<ED0180ED03C01507A21680150FA216005DA2151E153EA2153C157CA2157815
F8A25D1401A25D1403A25D1407A25D140FA24AC7FCA2141E143EA2143C147CA2147814F8
A25C1301A25C1303A25C1307A25C130FA291C8FC5BA2131E133EA25BA2137813F8A25B12
01A25B1203A25B1207A25B120FA290C9FC5AA2121E123EA2123C127CA2127812F8A25A12
60225B7BC32D>I<EB01FE90380FFFC090383F03F090387C00F849137C48487F48487F48
48EB0F80A2000F15C04848EB07E0A3003F15F0A290C712034815F8A64815FCB3A26C15F8
A56C6CEB07F0A3001F15E0A36C6CEB0FC0A26C6CEB1F80000315006C6C133E6C6C5B017C
5B90383F03F090380FFFC0D901FEC7FC263F7DBC2D>I<EB01C013031307131F137FEA07
FFB5FC139FEAF81F1200B3B3ACEB7FF0B612F8A31D3D78BC2D>I<EB07FC90383FFF8090
B512E03903F01FF83907C007FC390F0001FE001E6D7E001C1580003CEC7FC05AED3FE012
70B4FC6DEB1FF07FA56C5A6CC7FC120CC813E0153FA216C0157F168015FF16004A5A5D4A
5A4A5A5D4A5A4A5A4AC7FC147E147C5C495A495A495A495A49C71270133E133C5B4914E0
485A485A485A48C7120148B6FCA25A4815C0B7FCA3243D7CBC2D>I<EB07FC90383FFF80
9038F80FE03901E003F839078001FCD80F007F000E6D7E001E1580D81F80137F486C14C0
7FA27F5BA2121F6C5AC8138015FF1600A24A5AA24A5A5DEC07E04A5A023FC7FCEB1FFCEC
FF809038000FE0EC07F86E7E6E7E6E7E1680ED7FC0A216E0153FA216F0A2120C123F487E
487EA316E0A249137F6CC713C01278EDFF807E6C4913006C495A3907C007FC3903F80FF0
C6B55A013F1380D907F8C7FC243F7CBC2D>I<150E151E153EA2157EA215FE1401A21403
EC077E1406140E141CA214381470A214E0EB01C0A2EB0380EB0700A2130E5BA25B5BA25B
5B1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC4A7E49B6FCA3283E7E
BD2D>I<00061403D80780131F01F813FE90B5FC5D5D5D15C092C7FC14FCEB3FE090C9FC
ACEB01FE90380FFF8090383E03E090387001F8496C7E49137E497F90C713800006141FC8
13C0A216E0150FA316F0A3120C127F7F12FFA416E090C7121F12FC007015C012780038EC
3F80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6B55A013F90C7FCEB07F8
243F7CBC2D>I<EC1FE0ECFFF8903803F03E90380FC00F90391F000780133E017EEB1FC0
49133F4848137F12035B12074848EB3F80ED1F00001F91C7FC5BA2123FA3485AA214FE90
3887FF8039FF8F07E090389C01F09038B800FC01B0137E13F0497F16804914C0A2ED1FE0
A34914F0A5127FA6123F6D14E0A2121FED3FC0A26C6C1480A20007EC7F006C6C137E6C6C
5B6C6C485A90387E07F06DB45A010F1380D903FCC7FC243F7CBC2D>I<1238123C123F90
B612FCA316F85A16F016E00078C712010070EC03C0ED078016005D48141E151C153C5DC8
127015F04A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8A213015C1303A31307A3
130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>I<EB03FC90381FFF8090387C07E0
9038F001F83901E0007C48487F48487F48C7FCED0F80121E16C0003E1407A4123FA26DEB
0F807F6C6C131F6D140001FC133E6C6C5B9038FF80786C6D5A6CEBF3E06CEBFF806C91C7
FC133F6D13C06D7F013F13F801787F48486C7E3903E01FFF48486C1380260F800313C048
487E489038007FE0003E143F007E141F007CEC0FF01507481403A31501A46C15E0007C14
03A2007E15C06C14076CEC0F806DEB1F006C6C133ED807F05B3901FC03F86CB512E0011F
1380D903FCC7FC243F7CBC2D>I<EB03FCEB1FFF90387E07C09038FC03F048486C7E4848
6C7E4848137C000F147E4848137F81003F15805B007F15C0A2151F12FF16E0A516F0A512
7F153FA36C7EA2001F147F120F6C6C13FF6D13DF000313013900F8039F90387E0F1FD91F
FE13E0EB07F090C7FCA2ED3FC0A41680157FD80F801400487E486C13FEA24A5A5D49485A
EB8007391E000FE0001F495A260FC07FC7FC3803FFFE6C13F838003FC0243F7CBC2D>I<
121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EAFFC0A4EA7F80A2EA1E
000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121E127FEAFF80A2
13C0A4127F121E1200A412011380A3120313005A1206120E120C121C5A1230A20A3979A6
19>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCA8120C121EAB123FACEA7F80ACEA
FFC0A9EA7F80EA1E000A4179AC19>I<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0
BA12F0A26C18E03C167BA147>I<EB0780EB1FE0A2497EA46D5AA2EB078090C8FCA81303
80A4130791C7FCA65BA3131EA2133E133C137CA25B1201485A485A120F485A485A127FA2
48C7127C15FEEC01FFA480157F6C141EA26C6C133C1578390FC001E03907F00FC03901FF
FE0038003FF020407BAC2B>I<EB1FF890B5FC3903E01FC0390F0007F0001EEB03F848EB
01FC4814FE140000FE14FF7E7FA46CC7FC123EC7EA01FEA2EC03FCEC07F815F0EC0FC0EC
1F80EC3F00143E5C147814F85C13015CA2495AA25CAB91C7FC90C8FCA8EB0780EB1FE0A2
497EA46D5AA2EB078020407BBF2B>I<ED7FE0913807FFFE91391F801F809139780001E0
D901E0EB0078D90780141E49C87E011E6F7E0138ED01C0496F7E49167000011778484882
49D93F80131C28070001FFF07F48902607E07C130F000E90260FC01E7F001E90263F0007
1480001C499038038003003C01FED901C013C0003849ECFE010101EC00FF267803F8027F
13E000701700495AA200F018F000E01870495AA96D7E12F01270A26D7E007818E0263801
FC5C01005C003C7F001C017F49EB01C0001E6DEB077F000E903B0FC01E3F8380000F903B
07E07C1F87006C903A01FFF007FE3C0380003F8001F86D90CAFC6C7E120013707F011EEE
03F06D160F6D6CED3FC0D901E0913801FE00D90078EC1FF0913A1F8003FF800207B500F8
C7FC9126007FFEC8FC3C417BBF47>I<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A291
3801C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D
7EA349486D7E91B6FCA249819138800001A249C87EA24982010E157FA2011E82011C153F
A2013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D41
7DC044>I<B712FCEEFF8017F00001903980000FF86C6CC7EA03FE707E701380EF7FC0EF
3FE0A2EF1FF0A218F8A3170F171FA318F0A2EF3FE0177F18C0EFFF804C1300EE03FCEE0F
F8EE7FE091B6C7FC17E091C7EA07FCEE01FE933800FF80EF7FC0EF3FE0EF1FF018F8170F
18FC1707A218FEA718FC170FA2EF1FF818F0173FEF7FE0EFFFC00403138048486C90380F
FE00B85A17E094C7FC373E7DBD40>I<DB3FF01306912603FFFE130E020F9038FF801E91
3A3FF007E03E9139FF8000F8D903FEC7EA7C7ED907F8EC1EFE4948140FD93FE014074948
1403495A91C812014848150012034848167E5B000F173EA24848161EA2123F5B180E127F
A349160012FFAC127F7F180EA2123FA27F001F171E181C6C7EA20007173C6D16386C6C16
78000117706C6C16F06EEC01E06D6C15C06D6C1403D90FF0EC07806D6CEC1F00D903FE14
3E902600FF8013F891393FF007F0020FB512C0020391C7FC9138003FF037427BBF42>I<
B712FCEEFF8017E000019039C0001FF86C6C48EB03FEEE00FF717E717EEF0FE084717E71
7E170184717EA21980187F19C0A3F03FE0A519F0AB19E0A5F07FC0A21980A218FF19004D
5AA24D5A6017074D5A4D5AEF7FC04DC7FCEE03FE48486CEB1FF8B85A178004FCC8FC3C3E
7DBD45>I<B912E0A300019038C000016C6C48EB001FEF0FF01703A217011700A31870A4
18381638A41800A21678A216F81501150791B5FCA3EC8007150115001678A21638A2180E
A3181C93C7FCA4183C1838A21878A318F8EF01F0A21707170F173F48486CEB03FFB912E0
A3373E7DBD3E>I<B91280A300019038C000036C6C48EB007FEF1FC0170F1707A21703A3
1701A4EF00E0A21638A31800A31678A216F81501150791B5FCA3EC8007150115001678A2
1638A693C8FCAF3801FFE0B612F0A3333E7DBD3B>I<DB3FE0130C912603FFFE131C021F
9038FF803C913A7FF00FC07C9139FF0001F0D903FC90380078FC4948143DD91FE0141F49
48140F4948140701FF15034890C8FC491501485A000716005B000F177C5B001F173CA248
5AA2181C127FA25B95C7FC12FFAB041FB512F0127FA26D9139000FFE00EF03FC123FA27F
121FA26C7EA212077F12036C7E7F6C7F6D6C14076D7E6D6C140FD907F8141ED903FEEC3C
7C902600FF80EBF83C913A7FF007F01C021FB5EAC00C020391C8FC9138003FF03C427BBF
47>I<B6D8C01FB512F8A3000101E0C7383FFC0026007F80EC0FF0B3A691B7FCA30280C7
120FB3A92601FFE0EC3FFCB6D8C01FB512F8A33D3E7DBD44>I<B612F0A3C6EBF000EB3F
C0B3B3B2EBFFF0B612F0A31C3E7EBD21>I<011FB512FCA3D9000713006E5A1401B3B3A6
123FEA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A6C495A6C495A2603
E07EC7FC3800FFF8EB3FC026407CBD2F>I<B600C090387FFFFCA3000101E0C7000F1380
26007F80913807FE0018F818E0604D5A4DC7FC173E5F5F4C5A4C5A4C5A4C5A4CC8FC163E
5E5E4B5A4B5AED07804B7E151F4B7E4B7E15FF913881EFF8913883C7FCEC878791388F03
FE91389E01FF14BCDAF8007F4A6D7E5C4A6D7E4A6D7EA2707E707EA2707E707EA2707F71
7E84173F717E717EA2717E848419802601FFE04A13C0B600C090B6FCA3403E7DBD47>I<
B612F8A3000101E0C9FC38007F80B3B0EF0380A517071800A45FA35FA25F5F5F4C5A1607
48486C133FB8FCA3313E7DBD39>I<B500C093B512C0A300016D4BEBE000D8007F1880D9
77F0ED03BFA3D973F8ED073FA3D971FC150EA2D970FE151CA3027F1538A36E6C1470A36E
6C14E0A26E6CEB01C0A36E6CEB0380A36E6CEB0700A26E6C130EA36E6C5BA3037F5BA26F
6C5AA36F6C5AA392380FE1C0A3923807F380A26FB4C7FCA36F5AA213F8486C6D5AD807FF
EFFFE0B500F80178017FEBFFC0A34A3E7CBD53>I<B56C91B512F88080D8007F03071300
6EEC01FC6E6E5A1870EB77FCEB73FEA2EB71FF01707FA26E7E6E7EA26E7E6E7EA26E7E6E
7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7EA26F7E6F1380A2EE7FC0EE3FE0A2EE
1FF0EE0FF8A2EE07FCEE03FEA2EE01FF7013F0A2177F173FA2171F170FA2170701F81503
487ED807FF1501B500F81400A218703D3E7DBD44>I<ED7FE0913807FFFE91391FC03F80
91397E0007E04948EB03F8D907F0EB00FE4948147F49486E7E49486E7E49C86C7E01FE6F
7E00018349150300038348486F7EA248486F7EA2001F188049167F003F18C0A3007F18E0
49163FA300FF18F0AC007F18E06D167FA4003F18C0A26C6CEEFF80A36C6C4B1300A26C6C
4B5A00035F6D150700015F6C6C4B5A6D5E6D6C4A5A6D6C4A5A6D6C4AC7FC6D6C14FED901
FCEB03F8D9007FEB0FE091391FC03F80912607FFFEC8FC9138007FE03C427BBF47>I<B7
12F8EEFF8017E000019039C0003FF86C6C48EB07FCEE01FE707EEF7F80EF3FC018E0A2EF
1FF0A218F8A818F0A2EF3FE0A218C0EF7F80EFFF004C5AEE07FCEE3FF091B612C04CC7FC
0280C9FCB3A73801FFE0B612C0A3353E7DBD3E>I<ED7FE0913807FFFE91391FC03F8091
397F000FE0D901FCEB03F8D907F0EB00FE4948147F49486E7E49486E7E49C86C7E498248
486F7E49150300038348486F7EA2000F834981001F1880A24848EE7FC0A3007F18E0A249
163FA200FF18F0AC007F18E0A26D167FA3003F18C0A26C6CEEFF80A3000F18006D5D0007
DA0F805B6C6C90393FE003FCED70706C6C496C485A6C6C48486C485A017FD9800E5BD93F
819038061FC0D91FC19038073F80D90FE14AC7FCD907F1EB03FE902601FDC013F8903A00
7EE007E091271FF03FC013180207B5FC9139007FE1E0DB0001143883711378A2706C13F0
EFFF0318FFA27113E0A37113C0711380711300715AEF01F83D527BBF47>I<B712C016FC
EEFF800001D9C00013E06C6C48EB1FF0EE07FCEE01FE707E84717EA2717EA284A760177F
606017FF95C7FCEE01FCEE07F8EE1FE0EEFF8091B500FCC8FC16F091388001FCED003FEE
1FC0707E707E83160383160183A383A484A4F0C004190EA28218E0057F131E2601FFE016
1CB600C0EB3FF094381FF83805071370CA3801FFE09438003F803F407DBD43>I<D907FC
131890391FFF8038017FEBE0783901FC03F83A03F0007CF8D807C0133F4848130F001F14
0748C7FC003E1403007E1401A2007C140012FC1678A46C1538A27EA26C6C14007F7FEA3F
F8EBFF806C13F86CEBFF806C14F06C14FC6C14FF6C15C0013F14E0010714F0EB007F0207
13F89138007FFC150FED07FE15031501ED00FFA200E0157FA3163FA27EA3163E7E167E6C
157C6C15FC6C15F86D13016DEB03F06DEB07E0D8F9FCEB0FC03AF07F803F8090391FFFFE
00D8E00713F839C0007FC028427BBF33>I<003FB91280A3903AF0007FE001018090393F
C0003F48C7ED1FC0007E1707127C00781703A300701701A548EF00E0A5C81600B3B14B7E
4B7E0107B612FEA33B3D7DBC42>I<B600C090B512F8A3000101E0C70007130026007F80
EC01FC715A1870B3B3A4013F16F06E5DA21701011F5E80010F15036E4A5A010793C7FC6D
6C5C6D6C141E6D6C5C027F14F86E6C485A91390FF00FE00203B51280020049C8FCED1FF0
3D407DBD44>I<B691380FFFFEA3000301E0020113E06C01809138007F806CEF3F00017F
163E181C6E153C013F1638A26E1578011F1670A26D6C5DA26E140101075EA26E14030103
5EA26D6C4AC7FCA2806D150EA26F131E027F141CA26F133C023F1438A26E6C5BA26F13F0
020F5CA2EDF80102075CA26E6C485AA2EDFE07020191C8FCA26F5A6E130EA2ED7F9CA216
DCED3FF8A36F5AA36F5AA26F5AA36F5A3F407EBD44>I<B500FE017FB5D88007B5FCA300
0301C0010101E0C713F86C90C849EC3FE07148EC0F807E7215006E143F017F190E84A26D
6C60A24D7E6D6C60A2EFE7F86D6C60A2933801C3FC6E18F001076104037F6E0281140101
036104077F17006D6C4D5AA2040EEB7F806D6C4DC7FCA24CEB3FC0DA7F80160EA24CEB1F
E003C0161E023F171C047814F0DBE070010F133C021F173804F014F84C1307DA0FF05EA2
DBF1C0EB03FCDA07F95EA2DBFB80EB01FEDA03FF6F5AA293C8FCA26E5FA24B157F020094
C8FCA24B81037C153EA20378151E0338151C58407EBD5D>I<007FB5D8C003B512E0A3C6
49C7EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C1470
6D6D13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C
6E6C5A913801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFEED71FF15F103E07F91
3801C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D
7F130149486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC01
03B512FEA33F3E7EBD44>I<B66C0103B51280A3000101F0C8EBF8006C6C48ED3FC0725A
013F041EC7FC6D7E606D6C15386D6C1578606D6C5D6E14016D5E6D6D1303606E6C49C8FC
6E6C5B170E6E6C131E171C6E6C5B6E6C137817706E6C13F06F5B6E13016EEB83C05FED7F
C7DB3FE7C9FC16EFED1FFE5E150F6F5AB3A4ED1FFC020FB512FCA3413E7FBD44>I<003F
B712F8A391C7EA1FF013F801E0EC3FE00180EC7FC090C8FC003EEDFF80A2003C4A130000
7C4A5A12784B5A4B5AA200704A5AA24B5A4B5AA2C8485A4A90C7FCA24A5A4A5AA24A5AA2
4A5A4A5AA24A5A4A5AA24990C8FCA2495A4948141CA2495A495AA2495A495A173C495AA2
4890C8FC485A1778485A484815F8A24848140116034848140F4848143FED01FFB8FCA32E
3E7BBD38>I<EAFFFCA4EAF000B3B3B3B3ABEAFFFCA40E5B77C319>I<486C13C000031301
01001380481303000EEB070048130E0018130C0038131C003013180070133800601330A3
00E01370481360A400CFEB678039FFC07FE001E013F0A3007F133FA2003F131F01C013E0
390F0007801C1C73BE2D>I<EAFFFCA4EA003CB3B3B3B3ABEAFFFCA40E5B7FC319>I<EA01
80120313005A120E5A12181238123012701260A312E05AA412CFEAFFC013E0A3127FA212
3F13C0EA0F000B1C7ABE19>96 D<EB0FF8EBFFFE3903F01F8039078007E0000F6D7E9038
E001F8D81FF07F6E7EA3157F6C5AEA0380C8FCA4EC1FFF0103B5FC90381FF87FEB7F8038
01FC00EA07F8EA0FE0485A485AA248C7FCEE038012FEA315FFA3007F5BEC03BF3B3F8007
1F8700261FC00E13CF3A07F03C0FFE3A01FFF807FC3A003FC001F0292A7DA82D>I<EA01
FC12FFA3120712031201B1EC03FC91381FFF8091387C07E09039FDE001F09039FFC000FC
4A137E91C77E49158049141F17C0EE0FE0A217F0A2160717F8AA17F0A2160FA217E0161F
17C06D1580EE3F006D5C6E13FE9039F3C001F89039F1E003F09039E0780FC09026C03FFF
C7FCC7EA07F82D407EBE33>I<49B4FC010F13E090383F00F8017C131E4848131F484813
7F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC
01C07F001F140316806C6C13076C6C14000003140E6C6C131E6C6C137890383F01F09038
0FFFC0D901FEC7FC222A7DA828>I<ED01FC15FFA3150715031501B114FF010713E19038
1F80F990387E003D49131FD803F81307485A49130348481301121F123F5B127FA290C7FC
A25AAA7E7FA2123FA26C7E000F14037F000714076C6C497E6C6C497ED8007C017913F890
383F01F190380FFFC1903A01FE01FC002D407DBE33>I<EB01FE90380FFFC090383F03F0
9038FC01F848486C7E4848137E48487F000F158049131F001F15C04848130FA2127F16E0
90C7FCA25AA290B6FCA290C9FCA67EA27F123F16E06C7E1501000F15C06C6C13036DEB07
806C6C1400C66C131E017E5B90381F80F8903807FFE0010090C7FC232A7EA828>I<EC1F
C0EC7FF8903801F83C903807E07E90380FC0FFEB1FC1EB3F811401137FEC00FE01FE137C
1500AEB6FCA3C648C7FCB3AE487E007F13FFA320407EBF1C>I<167C903903F801FF903A
1FFF078F8090397E0FDE1F9038F803F83803F001A23B07E000FC0600000F6EC7FC49137E
001F147FA8000F147E6D13FE00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FC
EB03F80006CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC000
1FFC48C7EA01FE003E140048157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C
495AD803F0EB0FC0D800FE017FC7FC90383FFFFC010313C0293D7EA82D>I<EA01FC12FF
A3120712031201B1EC01FE913807FFC091381E07E091387803F09138E001F8D9FDC07F14
8001FF6D7E91C7FCA25BA25BB3A6486C497EB5D8F87F13FCA32E3F7DBE33>I<EA01E0EA
07F8A2487EA46C5AA2EA01E0C8FCACEA01FC127FA3120712031201B3AC487EB512F0A314
3E7DBD1A>I<1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F14
7FB3B3A5123E127F38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF8038
01FC00185185BD1C>I<EA01FC12FFA3120712031201B292B51280A392383FFC0016E016
8093C7FC153C5D5D4A5AEC07C04A5A4AC8FC143E147F4A7E13FD9038FFDFC0EC9FE0140F
496C7E01FC7F496C7E1401816E7E81826F7E151F826F7EA282486C14FEB539F07FFFE0A3
2B3F7EBE30>I<EA01FC12FFA3120712031201B3B3B1487EB512F8A3153F7DBE1A>I<2701
F801FE14FF00FF902707FFC00313E0913B1E07E00F03F0913B7803F03C01F80007903BE0
01F87000FC2603F9C06D487F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495C
B3A6486C496CECFF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807
FFC091381E07E091387803F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13
FF5BA25BB3A6486C497EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890
387E007E01F8131F4848EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15
FCA248C812FEA44815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E0
6C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D
>I<3901FC03FC00FF90381FFF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C
90C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D15
80EE7F007F6E13FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FC
AD487EB512F8A32D3A7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C01FC
131CD803F8130E4848EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA36C7E
A2001F14036C7E15076C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC19038
01FE0190C7FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1
FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F28
7EA724>I<90383FC0603901FFF8E03807C03F381F000F003E1307003C1303127C007813
0112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F
13E0010313F0EB001FEC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB03C0
903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FC
A2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03
013F138090381F8700EB07FEEB01F81B397EB723>I<D801FC14FE00FF147FA300071403
0003140100011400B3A51501A31503120015076DEB06FF017E010E13806D4913FC90381F
C078903807FFE00100903880FE002E297DA733>I<B539E00FFFE0A32707FE000313006C
48EB00FC5E00015D7F00005DA26D13016D5CA26D6C485AA2ECC007011F91C7FCA290380F
E00EA2ECF01E0107131CA26D6C5AA2ECFC7801011370A2ECFEF001005BA2EC7FC0A36E5A
A26EC8FCA3140E2B287EA630>I<B53BC3FFFE03FFF8A3290FFE003FE00013C06C486D48
EB3F806C4817006D010F141E00016F131C15076D163C00004A6C1338A2017F5E4B7E151D
D93F805DED3DFC1538D91FC04A5AED78FE9238707E03D90FE0017F5BEDE03F02F0140701
070387C7FC9138F1C01F02F9148F010315CE9138FB800F02FF14DE6D15FCED00076D5DA2
4A1303027E5CA2027C1301023C5C023813003D287EA642>I<B539F01FFFE0A30003D9C0
0F1300C690388007F8D97F0013E002805BD93FC05B011F49C7FC90380FE00EECF01E6D6C
5A01035B6D6C5A6E5AEB00FF6E5A6E5A81141F814A7E81147BECF1FC903801E1FEECC0FF
01037F49486C7ED90F007F011E6D7E013E130F496D7E01FC80486C80000F4A7EB539803F
FFF8A32D277FA630>I<B539E00FFFE0A32707FE000313006C48EB01FC6F5A00015D7F00
005DA2017F495AA2EC8003013F5CA26D6C48C7FCA26E5A010F130EA26D6C5AA2ECF83C01
031338A26D6C5AA2ECFEF001005BA2EC7FC0A36E5AA36EC8FCA2140EA2141E141C143C14
38A2147800181370127EB45BA2495AA248485AD87E07C9FCEA780EEA3C3CEA1FF8EA07E0
2B3A7EA630>I<001FB61280A2EBE0000180140049485A001E495A121C4A5A003C495A14
1F00385C4A5A147F5D4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F80EB
FF005A5B484813071207491400485A48485BA248485B4848137F00FF495A90B6FCA22127
7EA628>I<B812F0A22C0280982D>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fj cmr12 14.4 16
/Fj 16 122 df<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F000C0C768B21>46
D<EC1FF891B5FC010314C090390FF81FF090391FC003F849486C7E017EC7127E49800001
168049141F4848EC0FC0000716E0491407000F16F0A34848EC03F8A2003F16FCA44848EC
01FEA700FF16FFB3A5007F16FEA56D1403A2003F16FCA4001F16F8A26D1407000F16F0A2
6C6CEC0FE0A26C6CEC1FC0A26C6CEC3F806C6CEC7F00017F14FE6D6C485A6D6C485A9039
0FF81FF00103B512C0010091C7FCEC1FF830517BCE3B>48 D<EC7FE0903803FFFE010F6D
7E013F14E0D9FF0013F8D801F8EB1FFCD803E06D7E4848EB03FF48486D138090C813C000
1E16E0001C157F003CED3FF012380078ED1FF81270A2B4ED0FFC13C07FA66C5A6C5A000E
C8FCC9EA1FF8A317F0163FA2EE7FE017C016FF17804B1300A24B5A4B5A5E4B5A4B5A4B5A
5E4BC7FC15FE4A5A4A5A4A5A4A5A5D4A5A4AC8FC147E5C4948141CEB03E0495A49481438
91C8FC131E5B5B491578485A48481570484815F048B7FCA25A5A5AB812E0A42E4F7ACE3B
>50 D<160F5EA25E5EA25E5DA25D5DA25D151E151C153C5D157015F04A5A5D14035D4A5A
5C140E5C143C14385C14F05C495A13035C130749C7FC130E131E5B133813785B5B120148
5A5B120748C8FC120E121E5A123812785AB912F0A4C8000190C7FCAF4B7F4B7F020FB612
E0A434507DCF3B>52 D<000316C001C0140301F8141F903AFFC003FF8091B612005E5E5E
16E016804BC7FC019F13F8018113800180C9FCB0EC0FF0ECFFFE01836D7E903987F01FE0
90399F0007F801BE6D7E01F86D7E496D7E49EC7F805BEE3FC04915E0C9121F17F0A317F8
160FA317FCA5120EEA3F80487E12FF7FA217F85B161F5B48C813F012700078ED3FE0A26C
16C0167F6CEDFF80001F16006C6C495A6C6C13036C6CEB07F8D801F8EB1FF06CB4EB7FE0
6DB51280011F49C7FC010713F8010013C02E517ACE3B>I<49B612FEA490C7003F138092
380FFE001507B3B3B3A21206EA3FC0487E487EA44B5AA25B007F5D0180131F0078C75B6C
143F003E4A5A6C5D6C6C495A2707E003FEC7FC3901FC07FC6CB512F0013F13C0D907FCC8
FC2F547BD13C>74 D<B600FC030FB512E0A4C691CAEBFC00D97FFCEF3FF06D48EF1FC001
1F616E71C7FC130F1A0E6E171E0107181CA26E173C6D1838816D60A26F16F06D6081027F
4C5AA281023F4C5AA26F1507021F94C8FC81020F160EA26F151E0207161CA26F153C6E16
38826E5EA27014F06E5E821801037F5D82033F4A5AA2701307031F92C9FC82030F140EA2
70131E0307141CA270133C6F143817806F5CA2EFC0F06F5C17E017E1047F5B17F193383F
F380A217FF7090CAFCA2705AA3705AA3705AA2705AA3705A53547ED158>86
D<EC0FF891B5FC010314C090390FF80FF090391FC003FC90397F8001FE49C77E4848EC7F
804848143F49EC1FC0485A000FED0FE05B001F16F01607485AA2007F16F8A25B160312FF
90B7FCA30180C9FCA8127F7FA2123FA26D1538121F17786C6C1570000716F06D15E06C6C
14016C6CEC03C06C6C15806D6C130F6D6CEB1F00D90FF0133C903907FE01F80101B512E0
6D6C1380DA07FCC7FC2D367DB434>101 D<1378EA01FE487E487FA66C90C7FC6C5AEA00
7890C8FCB0EB7F80B5FCA41203C6FC137FB3B3A43801FFE0B61280A419507CCF21>105
D<EB7F80B5FCA41203C6FC137FB3B3B3B13801FFE0B612C0A41A537CD221>108
D<01FFEB07FCB590383FFF8092B512E0913901F00FF8913903C007FC000349C66C7EC601
0E13016D486D7E5C143002706E7E146014E05CA35CB3AD2601FFE0903801FFE0B600C0B6
12C0A43A347CB341>110 D<EC0FFC91387FFF8049B512E0903907F807F890391FE001FE
90393F80007F017EC7EA1F80496E7E48486E7E00038248486E7EA248486E7EA248486E7E
A2003F82A24848ED7F80A400FF17C0AB007F1780A26D15FFA2003F1700A2001F5E6D1401
000F5E6D140300075E6C6C4A5A6C6C4A5AA2D8007FEC3F806D6C49C7FC90391FE001FE90
3907F807F86DB55AD9007F1380DA0FFCC8FC32367CB43B>I<01FFEB1F80B5EB7FF09138
01FFF8913803E1FC91380783FE0003EB0F07C6131EEB7F1C1438143091387003FC913860
00F0160014E05CA45CB3AA8048487EB612F0A427347DB32E>114
D<D907FE13C090387FFF8148B512E33907F803FF390FC0007F4848133F48C7121F003E14
0F007E1407127C00FC1403A315017EA27E7F6C6C90C7FC13F013FF6C13F86CEBFF806C14
E06C14F86C14FEC680013F1480010714C0D9003F13E014039138007FF0151F00E0140FED
07F8A26C1403A215017EA36C15F0A26C14036C15E015076DEB0FC06DEB1F80D8FDF0EB3F
0039F8FC01FE39F07FFFF8D8E01F13E0D8C00390C7FC25367CB42E>I<D97F80EC7F80B5
91B5FCA400031503C61500017F157FB3AC17FFA35EA3013F5C6EEB077FA2011F020E7F6D
6C011C13F06E0178EBFFC0903903FC01F06DB512E06D6C1380912607FC00EB80003A357C
B341>117 D<B60103B51280A4000301F09039007FF800C601C0EC3FE0017FED1F8095C7
FC133F6E141E131F171C6E143C010F15388001075DA26E14F001035D8001014A5AA26E13
036D5D1580027F49C8FCA26F5A023F130E15E0021F5BA2EDF03C020F133815F802075BA2
EDFCF002035B15FE6E6C5AA36E5BA26FC9FCA3153EA2151CA2153C153815781570A215F0
5D14015DA2003E495A127F486C48CAFCA2140E141E495A6C5B007C5B383F03E06CB45A00
075BD801FCCBFC394B7EB23E>121 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fk cmbx12 17.28 21
/Fk 21 118 df<F00FE04E7EA24E7EA34E7EA24E7EA34D7FA24D80A24D80A34D80A24D80
A34D80A2DD7FBF7FA2181F05FF8017FE04016D7FA24D7E04038217F804076D80A24D7E04
0F8217E0041F6D80A24D7F043F825F047F6E7FA294C77E4C825E03016F7FA24C80030384
5E03076F80A24C80030F845E031F6F80A24C81033F845E037F707F93B9FCA292BA7EA24A
85A203FCC912070203865D020771805D86020F864B82021F865D87023F864B83027F8692
CBFC874A864A840101875C496C728090381FFFC0B700E092B812FEA66F647BE37A>65
D<BD12E0A41CF0A2D8000102C0C71207F1003F1A0F1A031A001B7F1B3FF31FF81B0FA21B
07A21B03A21B011CFCA31B00A419FCA21C7EA41C00A21801A31803A21807180F183FEF01
FF93B6FCA6EEC001EF003F180F18071803A21801A31800A896C9FCB3A5B912F8A657617A
E065>70 D<B912E0A6C702E0C7FCB3B3B3B3AEB912E0A633627CE13C>73
D<BB7E1AFCF2FFC01BF81BFE757ED800010280C7001F80070114F0736C7F081F7F747F74
7F7414807414C0A27414E0A21DF0A27513F8A41DFCA91DF8A498B512F0A21DE0A25014C0
1D8062501400505B505B087F5B4FB512E0071F5C93B9C7FC1BFC1BF01B8008F0C8FC04C0
CCFCB3B3A2B97EA65E627AE16E>80 D<DBFFFCEC01E0020FD9FFE01303027F02FC130749
B7130F0107EEC01F011F16F049D9C007EBF83F4948C7383FFE7FD9FFF8020FB5FC4801E0
14014849804849153F91C97E484882001F834982003F83845B007F187FA2193FA200FF18
1FA27F190FA27FA26D17078080806C01F893C7FC80ECFF8015F86CECFFC016FC6CEDFFE0
17FE6CEEFFE018F86C17FE6C717E6C846C846D17F86D836D836D8313036D18806D6C17C0
020F17E01401DA000F16F01500040715F8EE007F1703050014FC183F84060713FE84A200
7C8300FC83A2197FA3193F7EA31AFC7EA27F1AF86D177F7F1AF06D17FF6D18E06D5E01FF
18C06E4B138002E04B130002F84B5A02FFED3FFC01CF01E0ECFFF8018301FF010F5B0101
91B65A6D6C5E48011F93C7FC48010315FC48D9003F14E048020149C8FC476677E35A>83
D<001FBEFCA64849C79126E0000F148002E0180091C8171F498601F81A0349864986A249
1B7FA2491B3F007F1DC090C9181FA4007E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3
021FBAFCA663617AE070>I<913803FFFE027FEBFFF00103B612FE010F6F7E4916E09027
3FFE001F7FD97FE001077FD9FFF801017F486D6D7F717E486D6E7F85717FA2717FA36C49
6E7FA26C5B6D5AEB1FC090C9FCA74BB6FC157F0207B7FC147F49B61207010F14C0013FEB
FE004913F048B512C04891C7FC485B4813F85A5C485B5A5CA2B55AA45FA25F806C5E806C
047D7F6EEB01F96C6DD903F1EBFF806C01FED90FE114FF6C9027FFC07FC01580000191B5
487E6C6C4B7E011F02FC130F010302F001011400D9001F90CBFC49437CC14E>97
D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF80047F14F00381B612FC038715FF
038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02007F03F8824B6F7E4B6F1380
4B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA44F13F8A31BF0A24F13E0A24F
13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C495B9126F83FE0013F13C09127
F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C7001F91C8FC90C8000313E04F65
7BE35A>I<92380FFFF04AB67E020F15F0023F15FC91B77E01039039FE001FFF4901F801
0113804901E0010713C04901804913E0017F90C7FC49484A13F0A2485B485B5A5C5A7113
E0485B7113C048701380943800FE0095C7FC485BA4B5FCAE7EA280A27EA2806C18FCA26C
6D150119F87E6C6D15036EED07F06C18E06C6D150F6D6DEC1FC06D01E0EC7F806D6DECFF
00010701FCEB03FE6D9039FFC03FFC010091B512F0023F5D020F1580020102FCC7FCDA00
0F13C03E437BC148>I<92380FFFC04AB512FC020FECFF80023F15E091B712F80103D9FE
037F499039F0007FFF011F01C0011F7F49496D7F4990C76C7F49486E7F48498048844A80
4884485B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA41A0002C0CBFCA67EA380A2
7EA27E6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17016D6C4B5A6D6D4A5A6D01
E04A5A6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D6C90B55A021F15F8020715
E0020092C8FC030713F041437CC14A>101 D<EE3FFC0307B51280033F14C04AB612F002
0715F84A9038F03FFC4AEB807F913A7FFE00FFFE4A5A4B4813FF4913F05B4913E0A24913
C0A27013FE4949EB7FFCEF3FF8EF1FF0EF07C094C7FCB0B812C0A6D8001F01C0C8FCB3B3
B0007FB612FCA638657CE431>I<F107F8DB7FFEEC3FFE020FB5D8F001B5FC027FDAFE03
148049B7128F49DCDFFD13C0010FD9F00FEBFFC149D9800114014990C7EBFC0349486E6C
7E4948EC3FFF48496E018113800780130048F0C03E97C7FC48496E7FA34884A96C60A36C
6D4A5BA26C60A26C6D4A90C8FC6D6C4A5A6D6C4A5A6D6D485BDBF00F5B4990B612C060D9
7C7F4AC9FCD9FC0F14F09126007FFECAFC92CCFC1201A47FA27F8014F091B77E18FE6CEF
FFC019F06D17FC19FF6D846D846D846D84013F8490BAFC0003854801E0C712014890C900
0F7F484816014848EE007F4848717E8512FF5B85A56D5F007F616D173F003F616D177F6C
6C4D5A6C01C003035B6C6D4B5B6C01F8031F5BC601FF92B5C7FC6D01F8011F5B011F90B7
12F8010717E0010094C8FC020F15F0DA003F01FCC9FC4A607CC151>I<EB0FE0EB3FF849
7E48B5FCA24880A24880A76C5CA26C91C7FCA238007FFC6D5AEB0FE090C9FCAF903807FF
80007FB5FCA6C6FC7F7FB3B3AEB712C0A622657BE42C>105 D<903807FF80B6FCA6C6FC
7F7FB3B3B3B3ADB712E0A623647BE32C>108 D<902607FF80D91FFFEEFFF8B691B500F0
0207EBFF80040702FC023F14E0041F02FF91B612F84C6F488193267FE07F6D4801037F92
2781FE001F9027E00FF0007FC6DA83F86D9026F01FC06D7F6DD987F06D4A487F6DD98FC0
DBF87EC7804C6D027C80039FC76E488203BEEEFDF003BC6E4A8003FC04FF834B5FA24B5F
A24B94C8FCA44B5EB3B2B7D8F007B7D8803FB612FCA67E417BC087>I<902607FF80EB1F
FFB691B512F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FC6DA83F86D7F6D
D987F07F6DD98FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F007
B71280A651417BC05A>I<923807FFE092B6FC020715E0021F15F8027F15FE494848C66C
6C7E010701F0010F13E04901C001037F49496D7F4990C87F49486F7E49486F7E48496F13
804819C04A814819E048496F13F0A24819F8A348496F13FCA34819FEA4B518FFAD6C19FE
A46C6D4B13FCA36C19F8A26C6D4B13F0A26C19E06C6D4B13C0A26C6D4B13806C6D4B1300
6D6C4B5A6D6D495B6D6D495B010701F0010F13E06D01FE017F5B010090B7C7FC023F15FC
020715E0020092C8FC030713E048437CC151>I<D90FFFEB0FFCB690383FFF8093B512E0
4B14F04B14F8923907FC7FFC92390FE0FFFEC6EC1F806DD93F0113FF6D133E157E157C15
F8A215F07013FEA24BEB7FFCEF3FF8EF0FE04B90C7FCA55DB3B0B712F8A638417BC042>
114 D<913A3FFF8007800107B5EAF81F011FECFE7F017F91B5FC48B8FC48EBE0014890C7
121FD80FFC1407D81FF0801600485A007F167F49153FA212FF171FA27F7F7F6D92C7FC13
FF14E014FF6C14F8EDFFC06C15FC16FF6C16C06C16F06C826C826C826C82013F1680010F
16C01303D9007F15E0020315F0EC001F1500041F13F81607007C150100FC81177F6C163F
A2171F7EA26D16F0A27F173F6D16E06D157F6D16C001FEEDFF806D0203130002C0EB0FFE
02FCEB7FFC01DFB65A010F5DD8FE0315C026F8007F49C7FC48010F13E035437BC140>I<
EC07E0A6140FA5141FA3143FA2147FA214FF5BA25B5B5B5B137F48B5FC000F91B512FEB8
FCA5D8001F01E0C8FCB3AFEF0FC0AC171F6D6D1480A2173F6D16006F5B6D6D137E6D6D5B
6DEBFF836EEBFFF86E5C020F14C002035C9126003FFCC7FC325C7DDA3F>I<902607FFC0
ED3FFEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60183E6D6D147E4E7F6D
6D4948806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F5C020314F8DA003F01
8002F0C7FC51427BC05A>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fl cmbx12 24.88 40
/Fl 40 122 df[<96380FFFFE060FB612E04DB712FC051F16FF94B912C0040784041F18
F8047F9126FC001F7F4BB6008001017F030702F8C8EA3FFF4B02E0030F7F033F02804B7F
4B49C9127F92B54893B57E4A02F05D4A4A4B804A4A5D4A4A84634A91C9FC4A5BA24A5B51
80755C91B5FC5EA3755CA2755C755C755CE23FFEC8FCF40FF899CAFCAF083FB612FCBFFC
A9C702FCC912038787B3B3B3B2003FB800F0013FB812F0A9>116
144 123 271 129 12 D[<EB1FE0EBFFFC00037F486D7E488048804880A24880A281B6FC
81A281A416807EA37EA27E7E6C14BF6C143FC613FCEB1FE090C7FC157F1600A55D5DA214
015DA214035D1407A24A5AA24A5AA24A5A147F5D4AC7FC5B495A5C1307495A495A495AEB
FFC0485B4890C8FC485A5B6C5A6C5A6C5A>33 70 111 270 65 39
D<BA12F0B33C137DB74D>45 D[<1CFC517E517E1D8063A263A3511300A2515AA3515AA2
515AA3505BA2505BA3505BA2505BA35090C7FCA2505AA3505AA2505AA34F5BA24F5BA34F
5BA26361A24F90C8FCA34F5AA24F5AA34F5AA24E5BA34E5BA24E5BA34E5BA24E90C9FCA3
4E5AA24E5AA34E5AA24D5BA34D5BA2615FA24D5BA34D90CAFCA24D5AA34D5AA24D5AA34C
5BA24C5BA34C5BA24C5BA34C90CBFCA24C5AA34C5AA24C5AA34B5BA25F5DA24B5BA34B5B
A24B90CCFCA34B5AA24B5AA34B5AA24A5BA34A5BA24A5BA34A5BA24A90CDFCA34A5AA24A
5AA34A5AA25D5BA2495BA3495BA2495BA34990CEFCA2495AA3495AA2495AA3485BA2485B
A3485BA2485BA34890CFFCA2485AA3485AA2485AA35BA25B127F6C5A6C5A>89
207 115 282 116 47 D[<F31FE0F37FF8A2517EA2507FA3507FA25080A35080A25080A3
5080A25080A397B67EA24F81A34F81A24F82A34F82A24F82A21AFBDF3FF981A2DF7FF181
1AF06207FF6D80A24E01C081871A804E6E80A24E0100828761060F6E81A24E4883876106
3F6E81A24E4883876106FF6F80A24D498388614D7080A24D90C8FC768160050F7081A260
051F708160053F7081A260057F70816005FF7180A2604C7280604C7280A295CAFC4C7281
5F040F7281A294BDFC4C88A24C88A34C88A293BE7E05E0CB7E5F4B7480A24B497280A294
CCFC4B7481A24B487381A25E031F7481A24B487381A25E037F7481A24B487480A25E4A76
80A24A497480A293CEFC4A7681A24A4875814A7E0107B512FCB96C043FBA12FCA9>158
145 120 272 175 65 D[<BFFC1EFEF6FFE01FFCF7FF8020F020FC20FF8DC7000392CA00
1F15E00B0181776C800C1F807814FF0C03818A78818E79808B8E8B8E8B8EA27980A47915
80AB551500A4555CA26A676A676A555C9CB65AA2545D5492C7FC545C5414F80C3F5C545C
53B612800B0F4AC8FC0B7F14F80A1FB612E095BBC9FC1FF81F801FF8F7FF8020F820FE95
CBECFFC00C1F14F00C07807814FE0C006E7E7980798079807980798079808E79158023C0
8B23E08C23F0A223F88CA223FCA38C23FEAB5614FCA55614F8A39DB612F0A25515E06723
C055158067551500555C555C9CB6FC545D0C075D0C1F15C09BB75A0B0F93C7FCC212FC69
21E021800EFCC8FC20F020800DF0C9FC0CFCCAFC>143 142 120
269 165 I[<0803B500C0EE01F00703B600FEEE03F8077FDBFFE015070607B800FC150F
063F05FF151F4DBA00E0143F050F07F8147F053F07FE14FF94BC5B04039326F8000FECC0
03040F4BC86CEBF007043F03C0030F6D5A93B648C900036D5A4B03F09339007FFF3F0307
03C0051F90B5FC4B92CB7E033F02FC18034B02F08492B648844A0380193F4A92CD7E4A4A
864A4A864A02F0864A4A864A8991B65A494B874992CF7E4C885B494A885E498B494A88A2
495C8D90B65A8D5A5E48217FA24892D1FC223FA25A5DA248211FA3485CFA0FF09FC7FCA2
5AA45DA3B6FCB27EA381A47EA46C80FA07F0FA0FF87EA2817EA36C6F1D1F23F07E827E22
3F6D6E1EE0A26D6E1D7F23C06D6E1DFF7F705213806D806D55130070646D6F646D6F515A
6E6E1B1F6E6E515A6E6E515A6E6E1BFF6E6E505B6E6E505B6E6F4F5B6E03E04F90C7FC6F
6EF13FFE6F02FC4F5A030F02FF4E485A6F03C005075B030103F0051F5B6F03FE057F1380
043FDAFFE00303B5C8FC040F03FE033F13FC0403DBFFF80107B55A040093B812E0053F1A
80050F4FC9FC050119F8DD003F18C0060795CAFCDE007F16F0070393CBFCDF000314C0>
141 146 115 271 168 I[<BE12FEF5FFFCF6FFC01FFCF7FF8020E020FC20FF21C0C700
030380C8000116F0E2000F810B0015FE0C1F800C0315C00C00810D3F8079800D0714FE79
807981796C808C7A807A808F7A807A808C8F7A818DA17E8DA17E8DA17EA27B80A2A17E8D
A17EA28DA17EA3A113808DA3A113C0A57B15E0A6A113F0B3A2A113E0A569A113C0A5A113
80A269A2A11300A3575CA2A15AA269A15A69A15AA2575CA15A69A15A9EB6FC5692C7FC6B
565C68565C565C565C565C9DB65A5592C8FC0D075C555C0D3F5C9CB65A0C0315C00C0F5D
0C7F92C9FC0B07B612FC52B712F0C212C09ECAFC20FC20F020800DFCCBFC1FE00CFCCCFC
53CDFC>156 142 120 269 178 I[<C212F8A48DA5C7000303C0C9123FF5007F1E0F0C01
80787E1F1F8B8B1F018BA27A7E8C8CA28CA28CA28C8EA28CA38CA38EA2E21FF0157FA67B
7EA40A3F93C8FCA41C7FA21CFFA26363631B1F1B7F0807B5FC95B8FCA99538C00007F200
7F1B1F1B07878787A21C7FA21C3FA3FA7FC01C1FA2FAFF80A6571300A299CAFCA369A26A
A22107A3210F6AA2211FA2213FA2575AA221FFA26868565BA26868207F9DB5FC555C1F07
1F1F1F7F0C03B6FC1E3F0B1FB7FCC35AA66AA3>138 141 120 268
153 I[<C21280A421C0A5C7000303C0C81201F40007F5007F0C1F14E01E071E01787E8B
8B8B8B7913F0A28B8BA2207FA3203F21F8201FA4200FA321FC2007A4F47FC0A3F803FEA4
9DC7FCA31CFFA463A263A26363631B7F50B5FC1A1F95B8FCA99538C0001F1A01747E1B1F
878787A287A287A41C7FAA99CBFCB3AFBC12F8A9>127 141 120
268 146 I[<0803B500C0EE01F00703B600FE4C7E077FDBFFE015070607B800FC150F06
3F05FF151F4DBA00E0143F050F07F8147F053F07FE14FF94BC5B04039326F8000FECC003
040F4BC86CEBF007043F03C0030F6D5A93B648C900036D5A4B03F09339007FFF3F030703
C0051F90B5FC4B92CB7E033F02FC18034B02F08492B648844A0380193F4A92CD7E4A4A86
4A4A864A02F0864A4A864A8991B65A494B874992CF7E4C885B494A885E498B494A88A249
5C8D90B65A8D5A5E48217FA24892D1FC223FA25A5DA248211FA3485C7C5A9FC9FCA25AA4
5DA3B6FCB27EA381A20A0FBB12F8A27EA46C80A36C98C96C02F8C7FCA2817EA36C81A27E
827E827FA26D80A26D806D80A26D806D80A26D816D816E806E806E806E6E97B6FC6E806E
806E03C0606E816F02F8606F02FE60030F6E606F03E0173F030103F85F6F03FF933801FF
FC043F03E00307497E040F03FF033F497E040304FC0107B5EAE00F040093B8487E053FF2
0001050F07FCEB007F050107F0141FDD003F06C01407060795C81201DE007F04F8ED0070
0703048093C8FCDF000302E0CDFC>157 146 115 271 183 I[<BC12C0A9C7000103E0C8
FCB3B3B3B3B3B3B0BC12C0A9>74 142 122 269 87 73 D[<B900E04EB912F884848484
A2848585C700037094C7000302FCC7FC73DF000F90C8FC7C5A85858585A2708170817081
7081868270817081708187837181718171817181A2718171817181728188847281728172
817281A272817281738173818985738173817381898573817481748174818A8674817481
74818A8675817581758175818B877581758175818C887681768176817681A27681768176
8177158021C0897715E07715F07715F87715FCA27715FE7715FF7815877815C722E78A78
15F77815FF8AA28A8A8B8B8BA28B8B8B8BA28B8C8C8C8CA28C8C8C8CA28D8D8D8D8DA24A
6D8849B500FE88B900FC86227FA2223F221F220F2207A27C5A>165
142 120 269 182 78 D[<97B512F0077FECFFE00607B712FE067FEEFFE00503B912FC05
1FF0FF80057F19E00403BB12FC040F9226E0007F14FF043F02FCC7000315C04C02E0DA00
7F804BB60080031F14F8030702FCC9000314FE4B4A70804B02E0706C80037F0280051F14
E092B6CB6C804A4A72804A4A72804A02F00600804A4A737F4A4A73804A8B4A4A738091B6
CD6C80494A7480A2494A7480494A7480498C4C86498D4C87498D494A7580A290B68B4C87
488EA24892CF6C80A3488E4B88A2488EA3484A761580A34823C0A5484A7615E0A7B621F0
B36C23E0A26F64A56C23C0A46F646C2380A36C23006F64A26C6AA270636C6AA26C6A7063
6C6A70636D69A26D6E98B65AA26D6E505DA26D6E5092C7FC6D6870626D6E505C6D686D6F
4F5C6E6E4F5C6E6E4F5CA26E6E96B65A6E6E4E92C8FC6E6E4E5C020102FF060F14F86E6F
4D5C6F6E4D5C6F02F094B65A030F6E4C92C9FC6F02FE04075C03016E6C031F14F86F03F0
92B65A043F02FE020715C0040FDAFFF090B7CAFC040392B812FC04001AF0051F19800507
4ECBFCDD007F17E0060F94CCFCDE007F15E0070002F0CDFC>148
146 115 271 175 I[<BE12F8F5FFF01EFF1FE01FFCF7FF8020E020F820FEC700030380
C8000781E2003F15C00B03810B00810C3F8078800C07807880788178818E8B8E8B8E8B8E
A28EA28B8EA42380AC2300A46A67A26AA26A676A676A9CB65A6A665492C7FC545C0C1F5C
545C9BB612E00B075D0B3F5D0A07B648C8FC95BB12F820E0208055C9FC1FF09CCAFC1EF0
0BF8CBFC06C0D0FCB3B3B2BCFCA9>137 142 120 269 159 I[<BD12FCF4FFFCF5FFE01E
FCF6FFC01FF01FFE797E20E0C700030380C86C15F80A0181E2003F14FF0B07810B0115E0
776C8078807880788078808A78818E7881A28E8B8EA37980A48EAA6AA3676AA26AA29CB6
5AA26A545D9FCAFC66545C545C545C545C9BB612C0535D0B074ACBFC0B3F5C52B612F00A
7F15C095BBCCFC1FF81FC054CDFC66F6FF801FE00680C7000315F8E1003F14FE0A0F800A
0315C07681766C807780778077808C7781898D898D898DA38A8DAD8DACA1EB1FC0A1EB3F
E08D8AA37880A1137FA114C078817818FF7C1580785F786F1500BB00FE6F6F5B796E495A
7902FEEB1FFC799139FFC07FF80D0792B55A0D015F796C5E0E1F5E0E034BC7FCD4001F14
F8E7003F13C0>163 144 120 269 173 82 D[<93260FFFF8163E4BB600E0153F031F03
FE5D037FDBFFC05C0203B800F05B020F05FC5B4A05FF5B027FF0C00F91B526FE000FECF0
1F010302C0D9007F6D5A4991C800076D5A4901FC030090B6FC4901F0163F4949160F4901
808290B5170192CBFC4849844849181F87484984A2484984874886A248498588A24887A3
88A2B58680A36E85A280A26E8580A2818103F0725A6C6E96C7FC15FE8116E06C15FEEEFF
E017FF6C17F0F0FF806C18F8F1FFC06C19FCF2FF806C1AE01BF86C1AFE6C747E6D1AE088
6D866D866D1AFF6D876D87010087806E86020F86020386020086153F030F851501DB001F
19801601DC000F18C0EF007F060717E0F0003F070316F0F1003F1A0F080315F81A00871B
1F877514FCA287007F86486C85A288A388A36D86A31EF87FA37F1EF0A26D626D1CE0A27F
6D5013C0A26E1B806E96B5FC6E1B0002F8606E4E5B6E626E6C5F03E04D5B03F84D5B03FE
057F5BDBFFC093B55A04F803035C496CD9FF80021F91C7FCD9FC1F02FF49B55AD9F80792
B75A496C19F049C66149011F18804901074DC8FC90C817F848031F16C048030003FCC9FC
007C04011480>102 146 115 271 129 I[<000FC312F8A6488EA304C0C7001F4AC71201
03F8C8F0000F03C01C0192C9737E02FC1E1F4A1E0702E08A4A8A4A8A4890CA757EA24920
3F49201FA349200FA2492007A4492003007F8EA4498CA848487A1380A6CC99C7FCB3B3B3
B3AA030FBD12FCA9>145 140 120 267 162 I[<BC040FB912C0A9C7000303C0CD001F02
E0C7FC9E26007FF8C8FC7C5AB3B3B3B3B36E555AA3848022FF6BA26F65726481696F9CC9
FC72626F66210F6F6E505AA26F6E505A6F535A6F6E1AFF734E5B706E4E5B70637002F04E
5B706E063F90CAFC706E4E5A7002FF4D485A04006F04075B7102E0043F5B7102FC4BB55A
050FDAFF80020F14807103FC0103B6CBFC050192B812FC716C61061F19E0060319800600
06FCCCFC071F17F007011780DF001F03F8CDFCE0001F49CEFC>162
144 120 269 179 I<93B512FC037FECFFF00207B8FC023F17E091B912F84918FE010772
7E499126C0007F14E04901E0C7000F80496D020380496D020014FE6F6F7F90B570806F6F
8085486E6F807380A27380A28885886C5CA26D4982886D5B6D5B010713C0010190CAFC90
CCFCA90603B7FC050FB8FC0403B9FC167F0307BAFC153F4AB7EA807F020FEDE000023F02
FCC7FC91B612E0010392C8FC4914FC011F14F04914C0495C90B548C9FC485C485C485C48
5C5A5D485CA24891CAFCA3B6FC5CA397B6FCA461806C60F107EF6C6E150F6F16CF6C183F
6FDB7F8F806C6EDBFF0F14E06C02FCDA03FE15FE6C6E91260FFC0791B5FC6C6E6CD93FF8
17806C923AF803FFF003013F91B6487E010FEF8000010394C77E010004FC141F021F03F0
140702010380DA007F1400DA000701F8CDFC695F79DD71>97 D[<ED1FF0017FB5FCB7FC
A9EA003F1307A27FB3B296383FFFC00607B512FE063FECFFE04DB712F8050716FF051F17
C0057F17F094B5D8C00F8004F301FCC714FE04F701E0023F7F93B50080020F804DC86C14
E005F80301804D6F804D707F05808294CA804C717F4C7180A24C71808BA27680A28B88A2
8BA28BA3888BA52080B02000A56764A267A3676467A2525CA267647062704D91C7FC704D
5BA2714C5B7193B55A05F04B5CDCBFF84B5CDC1FFC030F5C4B6CB44B91C8FC7001C0027F
5B4B6C01F00103B55A4BC601FF013F14F04B6D90B712C04B011F94C9FC4B6D16FC4B0103
16F092C86C15804A030F02F8CAFC90CB49CBFC>113 144 121 270
129 I<94387FFFF0041FB612E093B712FE0307707E031F17F092B97E4A18FE020784021F
9126F8000F14804A0280010014C04A49C74814E049B500F85C494A17F0494A5C495C494A
4A14F84991C8FC5D495B90B5FC5D5A485C7314F05A4B6F14E05A7314C0487214804B9338
3FFE00F20FF84896C8FCA4485CA5B6FCB07EA281A37EA36C80A37E6F18FE6CF201FFA26C
6E5F1CFE6C801B076C6EEF0FFC6D7F70EE1FF86DF13FF06D6E167F6D6EEEFFE06D02F84B
13C06D6E5D6D02FF030F13806D03C0023F1300023F02F0903801FFFC6E9126FF801F5B02
0792B65A6E18C0020060033F4CC7FC030716F8030016C0041F4AC8FCDC007F13C0585F78
DD67>I[<F53FE098B6FC4FB7FCA996C77E1B0FA287B3B294383FFF80040FB512FC93B712
80030716E0031F16F8037F16FE4AB9128702074AC66C13C7021F02E0010713F74A91C890
B6FC4A01FC153F49B548150F4902E081494A81494A814991CA7E495B8749498390B54883
5A5D5AA2485CA25A5D5AA35AA25D5AA5B6FCB07EA57E81A37EA27EA2817EA26C80A26C62
6C6E5F636D7F6D6D94B6FC6D606D6D1607705D6D6E4B81010102F0157F6D6E92B712FE6E
01FE020301EF91B512806E6D6C011F13CF020FDAF801B5120F020391B612FE6E17F86E6C
16E0030F16800301EDFC00DB003F14E0040049C74AC8FC>113 144
120 270 129 I<94387FFFC0040FB6FC93B712E0030716FC031F16FF037F17C04AB912F0
0207DAF80380021F912680003F13FE4A49C7000F7F4A01F802038049B5486E804902C06E
6C7F494A6F7F4991C9FC49727F4949707F4B84498490B548707F5A4B198048855D481CC0
86481CE05D5A871DF05AA25D5AA21DF887A2B6FCA392BBFCA51DF00380CDFCA77EA4817E
A37EA2817EA26CF307F06FF00FF87E816C1B1F6F19F06C1B3F6D6DF07FE06D7FF4FFC06D
6E4C13806D6E5E6D02F04C13006D6EEE1FFE6D6E4C5A6D6C01FFEEFFF86E02E002035B6E
02FC021F5B02079126FFC003B55A6E92B7C7FC020060033F17F8030F17E003011780DB00
3F03FCC8FC040315C0DC000F01F8C9FC5D5F7ADD6A>I[<95383FFF80050FB512F094B612
FE040781041F16C0047F824BB87E0307DAF8077F031FDAC00F7F4B49C6487F4B495B92B5
00F0814A4A5B4A5C4A93B612805F4A91C7FC5C5E5C5E5C731400A24C6E5B91B56F5BA273
5B070313E00700138097C8FCB3A4BA12F8A9C702FCCBFCB3B3B3B3A2003FB9FCA9>81
144 121 271 71 I<F5FFC093260FFFFC030F13F04BB600E0027F7F031F03FE49B512FE
037F9226FF8007800203B8EAF01F020FDDFC3F15804A7148133F027FDA003F90B500F014
C091B500F80107ED807F4902E00101ECFC00010702806D6C5B93C87E49496F7F49496F7F
49496F6D6D1380491A8077130090B5486F6E6C5AF503F84875C8FCA2484A6F80A44887AB
6C63A46C6E4B5CA26C63A26D6D4B5CA26D97C9FC6D6D4B5B6D6D4B5B6D6D4B5B705C0101
02E049B512E06D02F801075C4902FF013F5C4992B648CAFC496002F317F090260FE07F16
80031F4BCBFC90261FC00115E0DB000F01FCCCFC013F91CFFCA3137FA280A380A2808080
6E7E15F092B812F06DF0FFE01BFEF3FFC06D1AF81CFE767E6D1BE06D87896D1BFE6D877F
6E878A0103BD7E130F013F8890BEFC4802E0C9003F814891CBFC4801FC180F4849060180
4849727E484985884849737F88A2B55A88A66E616C65A26E616C6D4F5B6C656E616C6D4F
5B6C6D96B55A6C6D6C05035C6F5FC602F0051F49C7FC6D01FC057F5B6DD9FF800303B55A
010F02F8033F14E06DDAFFE0010FB65A010192B9C8FCD9003F19F8020F19E0020196C9FC
DA001F17F0030194CAFCDB000192CBFC6A887ADD74>I[<ED1FF0017FB5FCB7FCA9EA003F
1307A27FB3B2963803FFFC073FEBFFE096B612F8060715FE061F6F7E4E16E095B87E4DD9
FC03804DD9C000804D48C76C7FDD0FF880DD1FE0824D486E804D5A05FEC881DCF1FC815F
04F385EEF7F04D81EEFFC0A24D84A294C9FCA25EA35EA45EB3B3AFB9D8E001B912C0A9>
114 143 119 270 129 I[<EC3FC0ECFFF0010313FC497F497F498049804980A290B67E
A24881A86C5DA26D5CA26D5C6D5C6D91C8FC6D5B6D5B010013F0EC3FC091CAFCB3A3ED1F
F0017FB5FCB7FCA9EA003F1307A27FB3B3B3B0B91280A9>49 144
119 271 65 I[<ED1FF0017FB5FCB7FCA9EA003F1307A27FB3B3B3B3B3B3ACB912C0A9>
50 143 119 270 65 108 D<DB3FE0912601FFFC943801FFFC017FB5031FD9FFE0041FEB
FFE0B792B600FC93B612FC060303FF030315FF060F04C0020F16C0063F04F0023F16F095
B86C91B87E4DD9FC036E49D9FC03804DD9C0006E49D9C000804D48C7003F6D4948C7003F
7FDD0FF86EDB0FF880D8003F4B48714848830107DB3FC06E9126C03FC06E804D484E5A6D
4BC86F48C881DCE1FE6FDAE1FE814D61DCE3F8DEF3F884DCE7F0F0F7F04D6F4B81DCEFC0
F0FFC0A2DCFF804F84A294C993C9FCA24C61A34C61A44C61B3B3AFB900E090B900E090B9
12E0A9B35D77DCC2>I<DB3FE0913803FFFC017FB5033FEBFFE0B792B612F8060715FE06
1F6F7E4E16E095B87E4DD9FC03804DD9C000804D48C76C7FDD0FF880D8003FDB1FE08201
074B486E804D5A6D03FEC881DCE1FC815F04E385EEE7F04D81EEEFC0A2DCFF8084A294C9
FCA25EA35EA45EB3B3AFB9D8E001B912C0A9725D77DC81>I<94381FFFF00407B612C004
7F15FC0303B87E030F17E0037F17FC4ABAFC4A9126FC007F80020F02C0010714E04A49C8
80027F01F8033F13FC91B5486F7F4902C003077F494A6F804991C96C8049497080494971
7F49874949717FA290B548717F48884B83481D80A2481DC04B83481DE0A2481DF0A3484A
7114F8A4481DFCA5B61BFEAF6C1DFCA56C6E4D14F8A36C1DF0A36C1DE06F5F6C1DC0A26C
6E4D1480A26C1D006F5F6C646D6D4D5B6F94B5FC6D636D6D4C5C6D6E4B5C6D6E4B5C6D02
F0031F5C6D6E4B91C7FC6D6C01FE92B512FC6ED9FFC001075C6E02FC017F5C020791B812
C0020196C8FC6E6C17FC031F17F003031780DB007F03FCC9FC040715C0DC001F01F0CAFC
675F7ADD74>I<DB1FF091381FFFC0017FB50203B6FCB7021F15E095B712FC050316FF05
0F17C0053F17F094B912FC04F1DAC01F8004F79026FC00018093B500E06D6C14C0D8003F
93C86C8001074B030F8005F86F806D03E06F804D6F804D8194CA6C7F4C864C71805E7680
A27680A27680A28B88A28BA288A28BA4882080B0200064A467A26467A3525CA267646764
67647062704D91C7FC7094B55AA2714B5C714B5C714B5C05F84B5C71033F5C05FF4B91C8
FC06C049B55A04FB01F001075C04F801FF017F14F07190B712C0051F94C9FC7116FC0503
16F0DD007F1580060F02F8CAFC060049CBFC96CDFCB3ACB912E0A9718579DC81>I<DB7F
C049B47E90B6021F13F8B7027F13FE4DB67E4D15E04D814D814D01077F94263FF00F7F94
387FC01F4D48487FD8003F16000107DAC1FE491480EEC3FC6D5DEEC7F05F16CF5F16DF4D
6D1400A204FFC76C5BA2735B4C6E5B735B070013C04C92C8FCA45EA65EB3B3AAB912FCA9
515D79DC5F>114 D<92261FFFF814F80203B638C001FC023FEDFC0791B8121F010317FF
130F013F9038F8001F4990C8FCD9FFF8153F4801E0150F484915034849814890CAFC197F
4848173F191F485AA2007F180FA31907487EA27FA28002E0705A6E93C8FC14FC14FF15F0
6CECFF8016FCEEFFF06CEEFF8018F06C17FE727E6C18E0856C18FC6C846C727E6C856D84
011F846D841303010084023F83140F020183EC001FDB007F16801603DC000F15C0170018
3F060F14E0007F1703486C82727E857F85857FA2857F1BC07FA27F1B806D5F7F1B006E5E
6E5F6E163F6E4C5A02FC4C5A6E03035B6E6C4A5B03F0023F5B03FF0107B55A01F991B7C7
FCD9F07F16FCD9E01F16F0D9800716C0D9000193C8FC48D9003F14F8007C020349C9FC4B
5F78DD5C>I[<ED03FEA81507A5150FA4151FA3153FA2157FA215FFA25CA25C5CA25C5C5C
5C91B5FC13035B131F017F91B712F00007BAFCBBFCA7C74AC9FCB3B3AAF101FFB1616E17
FE82A219076E17FC836EEE0FF871131F6E6EEB3FF071137F6E6EEBFFE06EDAFF0313C06E
92B512806E1700033F5D6F5D03075D030015E0041F1480040001FCC7FC>72
132 124 258 90 I<DB0FF8F01FF0017FB594B6FCB74BB7FCA9D8003F94C77E0107190F
A26D85B3B3B063A463A263A27F6398B6FCA26DF001FB7015036EEF07F3E00FE3806E6D15
1FE07FC314FF6E6D6CDAFF83EDFFC06E6E010313036E02FCEB3FFE6E91B612FC020017F8
6F16E0031F16800303EDFE00DB007F14F8040102C093C8FC725E77DC81>I<B90303B7FC
A9D8000702F8CA000FEBFE006D6E050013E0666D6E6164826D5090C7FC836E4F5AA26E6E
4C5AA26E6E4C5AA26E6E5F1C3F836E4F5A836E4F5AA26E6E4B5BA26E6E4B90C8FCA26F6E
5D1B07846F4D5A846F4D5AA26F6E4A5AA26F6E4A5AA26F6E5D1BFF846F4C5B846F4C90C9
FCA2706E485AA27002C05B1A0F7002E05B1A1F19F0704B5A19F8704B5AA2706E485AA270
6E5B96B5FC7093CAFCA3715CA2715CA2715CA2715CA3715CA2715CA2715CA27191CBFCA2
725AA3725A725A725A705D7BDB7B>I<007FB86C49B712FEA9C792C9000F02C0C7FC6E6E
030101F0C8FC715F6E6E4B5B6E6E4B5B6E4E90C9FC6E6E5E71151F6E6E4B5A6E6E4B5A6E
4E5A6F6E495B72495B6F6E495B6F806F6E4990CAFC6F4C5A72495A6F6E495A6F6E495A6F
03815B705E7014C307E75B7091B5CBFC705D705D705D6282705D715C8386718071807180
837180864D814D815F4D81874D814D81DDFFF3804C13E14C01C1804C0180814E6C804C6E
804C487F4C48824C486D804C486D804B496D804B497F73804B49834B90C86C804B486F80
4B48814B486F804B48844C6F804A71804A496F804A49814A90CA814A487180023F728001
0FB500E07080B8031FB812E0A9735C7CDB7B>120 D<007FB800C04AB71280A9D800034A
CA000791C7FC6D080013F0775A6D6E4E5AA26E6E6064836E4F90C8FC836E4F5A836E4F5A
A26E6E4C5AA26E6E5F1C3F6E6E5F1C7F836E4F5A846F4D5B846F4D90C9FCA26F6E4A5AA2
6F6E5D1B0F846F4D5A846F4D5A846F4D5AA26F6E4A5AA2706E5C627002C091CAFC6219E0
704B5A19F0704B5AA2706E485AA2706E485AA27002FE5B1A7F19FF704B5AA2715DA27192
CBFCA2715CA2715CA3715CA2715CA2715CA2715CA2725BA27290CCFCA3725AA2725AA24E
5AA24E5AA261187FA24E5AA24D5B13FE2603FF804A90CDFC000F13E0486D4A5A487F486D
4A5AA260B56C141F4D5AA24D5A17FF604C5B4A4990CEFC6C5D4C5A6C49EB3FFC4A495A6C
4948485A9026FE80075B270FFFC03F5B6C90B6CFFC6C5D6C15F86C6C5C011F14C0010749
D0FC9038007FE071857CDB7B>I E
%EndDVIPSBitmapFont
end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin

%%EndSetup
%%Page: 1 1
1 0 bop 861 1940 a Fl(FITSIO)76 b(User's)g(Guide)356
2399 y Fk(A)54 b(Subroutine)e(In)l(terface)h(to)g(FITS)h(F)-13
b(ormat)53 b(Files)1055 2659 y(for)h(F)-13 b(ortran)53
b(Programmers)1667 3155 y Fj(V)-10 b(ersion)38 b(2.5)1727
4058 y Fi(HEASAR)m(C)1764 4170 y(Co)s(de)30 b(662)1363
4283 y(Go)s(ddard)f(Space)i(Fligh)m(t)f(Cen)m(ter)1522
4396 y(Green)m(b)s(elt,)g(MD)i(20771)1857 4509 y(USA)1704
5298 y Fj(July)38 b(2004)p eop
%%Page: 2 2
2 1 bop 0 299 a Fi(ii)p eop
%%Page: 3 3
3 2 bop 0 1267 a Fl(Con)-6 b(ten)g(ts)0 1858 y Fh(1)84
b(In)m(tro)s(duction)3136 b(1)0 2118 y(2)119 b(Creating)34
b(FITSIO/CFITSIO)2405 b(3)136 2280 y Fi(2.1)94 b(Building)28
b(the)i(Library)57 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h
(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
h(.)g(.)f(.)h(.)g(.)f(.)131 b(3)136 2442 y(2.2)94 b(T)-8
b(esting)31 b(the)f(Library)i(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(6)136 2604
y(2.3)94 b(Linking)29 b(Programs)h(with)f(FITSIO)40 b(.)46
b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(7)136
2766 y(2.4)94 b(Getting)31 b(Started)g(with)e(FITSIO)55
b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131
b(8)136 2928 y(2.5)94 b(Example)30 b(Program)86 b(.)46
b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
f(.)131 b(8)136 3090 y(2.6)94 b(Legal)31 b(Stu\013)92
b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)
h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136 3252 y(2.7)94
b(Ac)m(kno)m(wledgemen)m(ts)60 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(10)0 3511
y Fh(3)119 b(A)35 b(FITS)f(Primer)2917 b(13)0 3771 y(4)119
b(Extended)35 b(File)f(Name)g(Syn)m(tax)2330 b(15)136
3933 y Fi(4.1)94 b(Ov)m(erview)83 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h
(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(15)136 4095 y(4.2)94 b(Filet)m(yp)s(e)60 b(.)45 b(.)h(.)g(.)g(.)f(.)h
(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
(.)f(.)85 b(18)345 4257 y(4.2.1)106 b(Notes)32 b(ab)s(out)e(HTTP)g(pro)
m(xy)g(serv)m(ers)k(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(18)345 4419 y(4.2.2)106 b(Notes)32 b(ab)s(out)e(the)h(ro)s(ot)f
(\014let)m(yp)s(e)67 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(18)345 4581 y(4.2.3)106 b(Notes)32 b(ab)s(out)e(the)h(shmem)e
(\014let)m(yp)s(e:)69 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(20)136 4742 y(4.3)94 b(Base)32 b(Filename)88 b(.)45
b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
h(.)g(.)f(.)85 b(21)136 4904 y(4.4)94 b(Output)30 b(File)f(Name)i(when)
f(Op)s(ening)e(an)i(Existing)f(File)79 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g
(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(23)136
5066 y(4.5)94 b(T)-8 b(emplate)31 b(File)f(Name)h(when)e(Creating)h(a)h
(New)f(File)55 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(24)136 5228 y(4.6)94
b(HDU)32 b(Lo)s(cation)e(Sp)s(eci\014cation)45 b(.)g(.)h(.)g(.)f(.)h(.)
g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(24)136 5390 y(4.7)94
b(Image)32 b(Section)38 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(25)136
5552 y(4.8)94 b(Column)29 b(and)h(Keyw)m(ord)g(Filtering)e(Sp)s
(eci\014cation)89 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(26)136 5714
y(4.9)94 b(Ro)m(w)31 b(Filtering)e(Sp)s(eci\014cation)80
b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(28)1912 5942 y(iii)p eop
%%Page: 4 4
4 3 bop 0 299 a Fi(iv)3310 b Fg(CONTENTS)345 555 y Fi(4.9.1)106
b(General)31 b(Syn)m(tax)44 b(.)i(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(28)345 716 y(4.9.2)106
b(Bit)31 b(Masks)43 b(.)j(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(30)345 876 y(4.9.3)106
b(V)-8 b(ector)32 b(Columns)91 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(31)345 1037 y(4.9.4)106
b(Go)s(o)s(d)30 b(Time)g(In)m(terv)-5 b(al)30 b(Filtering)59
b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(33)345 1197
y(4.9.5)106 b(Spatial)29 b(Region)i(Filtering)56 b(.)46
b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(33)345
1358 y(4.9.6)106 b(Example)30 b(Ro)m(w)h(Filters)f(.)45
b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(36)136 1518 y(4.10)80 b(Binning)28 b(or)i(Histogramming)g(Sp)s
(eci\014cation)f(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(37)0
1771 y Fh(5)f(T)-9 b(emplate)34 b(Files)2985 b(41)136
1931 y Fi(5.1)94 b(Detailed)31 b(T)-8 b(emplate)30 b(Line)g(F)-8
b(ormat)48 b(.)e(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(41)136 2092 y(5.2)94 b(Auto-indexing)29 b(of)i(Keyw)m(ords)73
b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(42)136 2252 y(5.3)94 b(T)-8 b(emplate)31 b(P)m(arser)g(Directiv)m(es)
85 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(43)136 2412 y(5.4)94 b(F)-8 b(ormal)31 b(T)-8 b(emplate)31
b(Syn)m(tax)j(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
(.)g(.)f(.)85 b(43)136 2573 y(5.5)94 b(Errors)63 b(.)46
b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(44)136 2733 y(5.6)94
b(Examples)71 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(44)0
2986 y Fh(6)f(FITSIO)34 b(Con)m(v)m(en)m(tions)h(and)g(Guidelines)1993
b(47)136 3146 y Fi(6.1)94 b(CFITSIO)29 b(Size)h(Limitations)39
b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(47)136 3307 y(6.2)94 b(Multiple)29 b(Access)i(to)g(the)g(Same)f(FITS)
g(File)f(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(48)136
3467 y(6.3)94 b(Curren)m(t)30 b(Header)h(Data)h(Unit)d(\(CHDU\))87
b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(48)136 3628
y(6.4)94 b(Subroutine)28 b(Names)79 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(48)136
3788 y(6.5)94 b(Subroutine)28 b(F)-8 b(amilies)30 b(and)f(Datat)m(yp)s
(es)44 b(.)i(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(49)136
3949 y(6.6)94 b(Implicit)28 b(Data)k(T)m(yp)s(e)e(Con)m(v)m(ersion)64
b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(50)136 4109 y(6.7)94 b(Data)32 b(Scaling)87 b(.)46
b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
f(.)h(.)g(.)f(.)85 b(50)136 4270 y(6.8)94 b(Error)30
b(Status)g(V)-8 b(alues)31 b(and)e(the)i(Error)e(Message)j(Stac)m(k)44
b(.)i(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
(.)g(.)f(.)85 b(51)136 4430 y(6.9)94 b(V)-8 b(ariable-Length)31
b(Arra)m(y)f(F)-8 b(acilit)m(y)31 b(in)e(Binary)g(T)-8
b(ables)25 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(51)136 4591 y(6.10)49
b(Supp)s(ort)29 b(for)h(IEEE)g(Sp)s(ecial)e(V)-8 b(alues)67
b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(52)136
4751 y(6.11)49 b(When)31 b(the)f(Final)f(Size)h(of)h(the)f(FITS)g(HDU)h
(is)e(Unkno)m(wn)34 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(53)136 4912 y(6.12)49
b(Lo)s(cal)31 b(FITS)e(Con)m(v)m(en)m(tions)i(supp)s(orted)d(b)m(y)j
(FITSIO)72 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(53)345 5072 y(6.12.1)61
b(Supp)s(ort)29 b(for)h(Long)g(String)f(Keyw)m(ord)h(V)-8
b(alues.)61 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
h(.)g(.)f(.)h(.)g(.)f(.)85 b(54)345 5232 y(6.12.2)61
b(Arra)m(ys)31 b(of)f(Fixed-Length)g(Strings)f(in)g(Binary)h(T)-8
b(ables)69 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
(.)f(.)85 b(54)345 5393 y(6.12.3)61 b(Keyw)m(ord)30 b(Units)g(Strings)i
(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(55)345 5553 y(6.12.4)61 b(HIERAR)m(CH)31 b(Con)m(v)m(en)m(tion)g(for)
f(Extended)g(Keyw)m(ord)g(Names)83 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f
(.)h(.)g(.)f(.)85 b(55)136 5714 y(6.13)49 b(Optimizing)28
b(Co)s(de)i(for)g(Maxim)m(um)g(Pro)s(cessing)g(Sp)s(eed)44
b(.)i(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
(.)g(.)f(.)85 b(56)p eop
%%Page: 5 5
5 4 bop 0 299 a Fg(CONTENTS)3334 b Fi(v)345 555 y(6.13.1)61
b(Bac)m(kground)31 b(Information:)40 b(Ho)m(w)31 b(CFITSIO)e(Manages)j
(Data)g(I/O)91 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(57)0 816 y Fh(7)119 b(The)35 b(CFITSIO)e(Iterator)g(F)-9
b(unction)2154 b(61)0 1077 y(8)119 b(Basic)36 b(In)m(terface)e
(Routines)2504 b(63)136 1239 y Fi(8.1)94 b(FITSIO)30
b(Error)f(Status)h(Routines)83 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
h(.)g(.)f(.)85 b(63)136 1401 y(8.2)94 b(File)30 b(I/O)g(Routines)d(.)46
b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
g(.)f(.)85 b(64)136 1563 y(8.3)94 b(Keyw)m(ord)31 b(I/O)f(Routines)35
b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
(.)85 b(66)136 1725 y(8.4)94 b(Data)32 b(I/O)f(Routines)52
b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
(.)g(.)f(.)85 b(66)0 1986 y Fh(9)119 b(Adv)-6 b(anced)36
b(In)m(terface)e(Subroutines)2159 b(69)136 2148 y Fi(9.1)94
b(FITS)30 b(File)g(Op)s(en)f(and)g(Close)h(Subroutines:)75
b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(69)136 2310 y(9.2)94
b(HDU-Lev)m(el)32 b(Op)s(erations)107 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h
(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(72)136 2472
y(9.3)94 b(De\014ne)31 b(or)f(Rede\014ne)g(the)h(structure)f(of)g(the)h
(CHDU)99 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(75)136 2634 y(9.4)94
b(FITS)30 b(Header)h(I/O)f(Subroutines)h(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h
(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
h(.)g(.)f(.)h(.)g(.)f(.)85 b(76)345 2796 y(9.4.1)106
b(Header)31 b(Space)g(and)f(P)m(osition)f(Routines)59
b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
h(.)g(.)f(.)h(.)g(.)f(.)85 b(76)345 2958 y(9.4.2)106
b(Read)31 b(or)f(W)-8 b(rite)31 b(Standard)e(Header)i(Routines)66
b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
h(.)g(.)f(.)85 b(77)345 3120 y(9.4.3)106 b(W)-8 b(rite)31
b(Keyw)m(ord)f(Subroutines)115 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)
85 b(78)345 3283 y(9.4.4)106 b(Insert)30 b(Keyw)m(ord)g(Subroutines)107
b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(80)345 3445
y(9.4.5)106 b(Read)31 b(Keyw)m(ord)f(Subroutines)63 b(.)46
b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(81)345 3607
y(9.4.6)106 b(Mo)s(dify)29 b(Keyw)m(ord)i(Subroutines)54
b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(82)345 3769
y(9.4.7)106 b(Up)s(date)31 b(Keyw)m(ord)f(Subroutines)115
b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(83)345 3931
y(9.4.8)106 b(Delete)32 b(Keyw)m(ord)e(Subroutines)86
b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(84)136 4093
y(9.5)94 b(Data)32 b(Scaling)e(and)f(Unde\014ned)g(Pixel)g(P)m
(arameters)113 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(84)136 4255 y(9.6)94
b(FITS)30 b(Primary)f(Arra)m(y)i(or)f(IMA)m(GE)h(Extension)f(I/O)g
(Subroutines)116 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
(.)85 b(85)136 4417 y(9.7)94 b(FITS)30 b(ASCI)s(I)f(and)h(Binary)f(T)-8
b(able)30 b(Data)i(I/O)e(Subroutines)c(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f
(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(88)345
4579 y(9.7.1)106 b(Column)29 b(Information)g(Subroutines)120
b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(88)345 4741 y(9.7.2)106
b(Lo)m(w-Lev)m(el)32 b(T)-8 b(able)30 b(Access)h(Subroutines)59
b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
h(.)g(.)f(.)h(.)g(.)f(.)85 b(91)345 4903 y(9.7.3)106
b(Edit)30 b(Ro)m(ws)g(or)h(Columns)105 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g
(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
g(.)f(.)h(.)g(.)f(.)85 b(92)345 5066 y(9.7.4)106 b(Read)31
b(and)f(W)-8 b(rite)30 b(Column)f(Data)j(Routines)65
b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
f(.)h(.)g(.)f(.)85 b(93)136 5228 y(9.8)94 b(Ro)m(w)31
b(Selection)f(and)g(Calculator)g(Routines)94 b(.)46 b(.)g(.)g(.)f(.)h
(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
g(.)f(.)85 b(96)136 5390 y(9.9)94 b(Celestial)30 b(Co)s(ordinate)f
(System)h(Subroutines)97 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(98)136 5552 y(9.10)49 b(File)30 b(Chec)m(ksum)g(Subroutines)74
b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
b(99)136 5714 y(9.11)80 b(Date)32 b(and)d(Time)h(Utilit)m(y)f(Routines)
68 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
b(101)p eop
%%Page: 6 6
6 5 bop 0 299 a Fi(vi)3310 b Fg(CONTENTS)136 555 y Fi(9.12)49
b(General)31 b(Utilit)m(y)e(Subroutines)60 b(.)45 b(.)h(.)g(.)f(.)h(.)g
(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(102)0 806 y Fh(10)67
b(Summary)34 b(of)h(all)f(FITSIO)g(User-In)m(terface)h(Subroutines)1215
b(109)0 1057 y(11)67 b(P)m(arameter)34 b(De\014nitions)2563
b(117)0 1308 y(12)67 b(FITSIO)33 b(Error)i(Status)g(Co)s(des)2295
b(123)p eop
%%Page: 1 7
1 6 bop 0 1225 a Ff(Chapter)65 b(1)0 1687 y Fl(In)-6
b(tro)6 b(duction)0 2180 y Fi(This)32 b(do)s(cumen)m(t)j(describ)s(es)d
(the)i(F)-8 b(ortran-callable)35 b(subroutine)d(in)m(terface)j(that)g
(is)e(pro)m(vided)g(as)h(part)g(of)h(the)0 2293 y(CFITSIO)f(library)f
(\(whic)m(h)i(is)g(written)g(in)f(ANSI)h(C\).)h(This)e(is)h(a)h
(companion)f(do)s(cumen)m(t)g(to)i(the)e(CFITSIO)0 2406
y(User's)k(Guide)e(whic)m(h)h(should)e(b)s(e)i(consulted)g(for)g
(further)g(information)f(ab)s(out)h(the)h(underlying)c(CFITSIO)0
2518 y(library)-8 b(.)48 b(In)32 b(the)i(remainder)e(of)h(this)g(do)s
(cumen)m(t,)h(the)g(terms)f(FITSIO)f(and)h(CFITSIO)f(are)i(in)m(terc)m
(hangeable)0 2631 y(and)c(refer)g(to)h(the)g(same)f(library)-8
b(.)0 2791 y(FITSIO/CFITSIO)31 b(is)i(a)g(mac)m(hine-indep)s(enden)m(t)
e(library)g(of)j(routines)e(for)h(reading)g(and)g(writing)e(data)j
(\014les)0 2904 y(in)29 b(the)h(FITS)g(\(Flexible)f(Image)i(T)-8
b(ransp)s(ort)29 b(System\))h(data)h(format.)41 b(It)31
b(can)f(also)g(read)h(IRAF)f(format)h(image)0 3017 y(\014les)39
b(and)f(ra)m(w)i(binary)e(data)i(arra)m(ys)g(b)m(y)g(con)m(v)m(erting)g
(them)f(on)h(the)g(\015y)f(in)m(to)g(a)h(virtual)e(FITS)h(format)h
(\014le.)0 3130 y(This)31 b(library)g(w)m(as)i(written)f(to)i(pro)m
(vide)e(a)i(p)s(o)m(w)m(erful)e(y)m(et)i(simple)d(in)m(terface)i(for)g
(accessing)h(FITS)e(\014les)g(whic)m(h)0 3243 y(will)h(run)h(on)h(most)
h(commonly)f(used)f(computers)h(and)g(w)m(orkstations.)56
b(FITSIO)34 b(supp)s(orts)g(all)g(the)i(features)0 3356
y(describ)s(ed)20 b(in)i(the)g(o\016cial)g(NOST)g(de\014nition)e(of)j
(the)f(FITS)g(format)h(and)f(can)h(read)f(and)g(write)g(all)f(the)i
(curren)m(tly)0 3469 y(de\014ned)40 b(t)m(yp)s(es)h(of)g(extensions,)i
(including)38 b(ASCI)s(I)h(tables)i(\(T)-8 b(ABLE\),)42
b(Binary)e(tables)h(\(BINT)-8 b(ABLE\))43 b(and)0 3582
y(IMA)m(GE)36 b(extensions.)55 b(The)34 b(FITSIO)g(subroutines)f
(insulate)h(the)h(programmer)g(from)g(ha)m(ving)g(to)h(deal)e(with)0
3695 y(the)25 b(complicated)f(formatting)h(details)e(in)g(the)i(FITS)f
(\014le,)h(ho)m(w)m(ev)m(er,)j(it)c(is)f(assumed)h(that)h(users)f(ha)m
(v)m(e)i(a)f(general)0 3808 y(kno)m(wledge)30 b(ab)s(out)g(the)h
(structure)f(and)g(usage)h(of)f(FITS)g(\014les.)0 3968
y(The)20 b(CFITSIO)f(pac)m(k)-5 b(age)23 b(w)m(as)e(initially)d(dev)m
(elop)s(ed)i(b)m(y)g(the)h(HEASAR)m(C)g(\(High)g(Energy)f(Astroph)m
(ysics)g(Science)0 4081 y(Arc)m(hiv)m(e)34 b(Researc)m(h)h(Cen)m(ter\))
f(at)h(the)f(NASA)g(Go)s(ddard)e(Space)j(Fligh)m(t)e(Cen)m(ter)h(to)h
(con)m(v)m(ert)g(v)-5 b(arious)33 b(existing)0 4194 y(and)25
b(newly)g(acquired)g(astronomical)h(data)g(sets)h(in)m(to)f(FITS)f
(format)h(and)f(to)i(further)e(analyze)h(data)h(already)e(in)0
4307 y(FITS)i(format.)41 b(New)28 b(features)g(con)m(tin)m(ue)g(to)h(b)
s(e)e(added)h(to)g(CFITSIO)f(in)f(large)i(part)g(due)g(to)g(con)m
(tributions)f(of)0 4419 y(ideas)32 b(or)h(actual)g(co)s(de)g(from)f
(users)g(of)h(the)g(pac)m(k)-5 b(age.)49 b(The)33 b(In)m(tegral)g
(Science)f(Data)i(Cen)m(ter)f(in)f(Switzerland,)0 4532
y(and)h(the)g(XMM/ESTEC)h(pro)5 b(ject)34 b(in)e(The)h(Netherlands)f
(made)h(esp)s(ecially)f(signi\014can)m(t)g(con)m(tributions)g(that)0
4645 y(resulted)d(in)g(man)m(y)i(of)f(the)h(new)f(features)g(that)h
(app)s(eared)f(in)f(v2.0)j(of)e(CFITSIO.)0 4805 y(The)22
b(latest)h(v)m(ersion)f(of)h(the)f(CFITSIO)f(source)i(co)s(de,)h(do)s
(cumen)m(tation,)h(and)c(example)i(programs)f(are)h(a)m(v)-5
b(ailable)0 4918 y(on)30 b(the)h(W)-8 b(orld-Wide)30
b(W)-8 b(eb)31 b(or)f(via)g(anon)m(ymous)g(ftp)g(from:)382
5178 y Fe(http://heasarc.gsfc.nasa)o(.go)o(v/fi)o(tsio)382
5291 y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o(/fi)o(tsio)o(/c)
1927 5942 y Fi(1)p eop
%%Page: 2 8
2 7 bop 0 299 a Fi(2)2452 b Fg(CHAPTER)30 b(1.)71 b(INTR)m(ODUCTION)0
555 y Fi(An)m(y)28 b(questions,)f(bug)g(rep)s(orts,)h(or)f(suggested)i
(enhancemen)m(ts)f(related)f(to)i(the)e(CFITSIO)f(pac)m(k)-5
b(age)30 b(should)c(b)s(e)0 668 y(sen)m(t)31 b(to)g(the)g(primary)d
(author:)382 928 y Fe(Dr.)47 b(William)f(Pence)810 b(Telephone:)92
b(\(301\))47 b(286-4599)382 1041 y(HEASARC,)e(Code)i(662)811
b(E-mail:)45 b(pence@tetra.gsfc.nasa.gov)382 1154 y(NASA/Goddard)f
(Space)j(Flight)f(Center)382 1267 y(Greenbelt,)f(MD)i(20771,)f(USA)0
1526 y Fi(This)39 b(User's)j(Guide)e(assumes)h(that)h(readers)f
(already)f(ha)m(v)m(e)j(a)f(general)f(understanding)d(of)k(the)f
(de\014nition)0 1639 y(and)31 b(structure)g(of)h(FITS)e(format)i
(\014les.)43 b(F)-8 b(urther)32 b(information)d(ab)s(out)j(FITS)f
(formats)g(is)g(a)m(v)-5 b(ailable)31 b(from)g(the)0
1752 y(FITS)h(Supp)s(ort)f(O\016ce)i(at)g Fe(http://fits.gsfc.nasa.gov)
o Fi(.)42 b(In)32 b(particular,)g(the)h('NOST)f(FITS)g(Standard')0
1865 y(giv)m(es)i(the)h(authoritativ)m(e)f(de\014nition)e(of)i(the)g
(FITS)g(data)h(format,)g(and)f(the)g(`FITS)g(User's)g(Guide')f(pro)m
(vides)0 1978 y(additional)28 b(historical)h(bac)m(kground)h(and)g
(practical)g(advice)g(on)g(using)f(FITS)h(\014les.)0
2138 y(CFITSIO)j(users)g(ma)m(y)h(also)g(b)s(e)g(in)m(terested)g(in)f
(the)h(FTOOLS)f(pac)m(k)-5 b(age)36 b(of)e(programs)g(that)g(can)h(b)s
(e)e(used)g(to)0 2251 y(manipulate)i(and)g(analyze)i(FITS)f(format)g
(\014les.)58 b(Information)35 b(ab)s(out)h(FTOOLS)f(can)i(b)s(e)f
(obtained)f(on)i(the)0 2364 y(W)-8 b(eb)31 b(or)f(via)g(anon)m(ymous)h
(ftp)f(at:)382 2624 y Fe(http://heasarc.gsfc.nasa)o(.go)o(v/ft)o(ools)
382 2737 y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o(/ft)o(ools)o
(/rel)o(eas)o(e)p eop
%%Page: 3 9
3 8 bop 0 1225 a Ff(Chapter)65 b(2)0 1687 y Fl(Creating)77
b(FITSIO/CFITSIO)0 2216 y Fd(2.1)135 b(Building)45 b(the)h(Library)0
2467 y Fi(T)-8 b(o)43 b(use)g(the)g(FITSIO)f(subroutines)e(one)k(m)m
(ust)e(\014rst)g(build)e(the)j(CFITSIO)f(library)-8 b(,)44
b(whic)m(h)e(requires)f(a)i(C)0 2580 y(compiler.)71 b(gcc)43
b(is)d(ideal,)i(or)f(most)h(other)f(ANSI-C)g(compilers)e(will)g(also)i
(w)m(ork.)73 b(The)40 b(CFITSIO)g(co)s(de)h(is)0 2692
y(con)m(tained)24 b(in)f(ab)s(out)g(40)i(C)f(source)g(\014les)e
(\(*.c\))k(and)d(header)h(\014les)f(\(*.h\).)39 b(On)23
b(V)-10 b(AX/VMS)25 b(systems)f(2)g(assem)m(bly-)0 2805
y(co)s(de)31 b(\014les)e(\(vmsieeed.mar)h(and)g(vmsieeer.mar\))g(are)h
(also)f(needed.)0 2965 y(The)45 b(F)-8 b(ortran)46 b(in)m(terface)f
(subroutines)e(to)j(the)f(C)g(CFITSIO)f(routines)g(are)h(lo)s(cated)h
(in)e(the)h(f77)p 3538 2965 28 4 v 33 w(wrap1.c,)0 3078
y(through)22 b(f77)p 459 3078 V 33 w(wrap4.c)h(\014les.)37
b(These)22 b(are)h(relativ)m(ely)f(simple)e('wrapp)s(ers')h(that)i
(translate)g(the)g(argumen)m(ts)g(in)e(the)0 3191 y(F)-8
b(ortran)26 b(subroutine)d(in)m(to)j(the)f(appropriate)g(format)h(for)f
(the)g(corresp)s(onding)f(C)h(routine.)38 b(This)23 b(translation)i(is)
0 3304 y(p)s(erformed)19 b(transparen)m(tly)h(to)h(the)g(user)f(b)m(y)g
(a)h(set)h(of)e(C)h(macros)g(lo)s(cated)g(in)e(the)i(cfortran.h)f
(\014le.)37 b(Unfortunately)0 3417 y(cfortran.h)28 b(do)s(es)g(not)g
(supp)s(ort)f(ev)m(ery)h(com)m(bination)g(of)g(C)g(and)f(F)-8
b(ortran)29 b(compilers)e(so)h(the)h(F)-8 b(ortran)28
b(in)m(terface)0 3530 y(is)h(not)i(supp)s(orted)e(on)h(all)f
(platforms.)40 b(\(see)31 b(further)e(notes)i(b)s(elo)m(w\).)0
3690 y(A)f(standard)f(com)m(bination)h(of)g(C)f(and)h(F)-8
b(ortran)30 b(compilers)f(will)e(b)s(e)i(assumed)h(b)m(y)f(default,)h
(but)f(one)h(ma)m(y)h(also)0 3803 y(sp)s(ecify)e(a)i(particular)d(F)-8
b(ortran)32 b(compiler)c(b)m(y)j(doing:)48 4064 y Fe(>)95
b(setenv)46 b(CFLAGS)g(-DcompilerName=1)0 4324 y Fi(\(where)33
b('compilerName')f(is)g(the)h(name)f(of)h(the)g(compiler\))f(b)s(efore)
g(running)e(the)j(con\014gure)f(command.)47 b(The)0 4437
y(curren)m(tly)29 b(recognized)i(compiler)e(names)h(are:)48
4698 y Fe(g77Fortran)48 4811 y(IBMR2Fortran)48 4924 y(CLIPPERFortran)48
5036 y(pgiFortran)48 5149 y(NAGf90Fortran)48 5262 y(f2cFortran)48
5375 y(hpuxFortran)48 5488 y(apolloFortran)48 5601 y(sunFortran)48
5714 y(CRAYFortran)1927 5942 y Fi(3)p eop
%%Page: 4 10
4 9 bop 0 299 a Fi(4)1896 b Fg(CHAPTER)30 b(2.)111 b(CREA)-8
b(TING)31 b(FITSIO/CFITSIO)48 555 y Fe(mipsFortran)48
668 y(DECFortran)48 781 y(vmsFortran)48 894 y(CONVEXFortran)48
1007 y(PowerStationFortran)48 1120 y(AbsoftUNIXFortran)48
1233 y(AbsoftProFortran)48 1346 y(SXFortran)0 1580 y
Fi(Alternativ)m(ely)-8 b(,)39 b(one)f(ma)m(y)g(edit)f(the)g(CFLA)m(GS)h
(line)d(in)i(the)g(Mak)m(e\014le)h(to)g(add)f(the)h('-DcompilerName')g
(\015ag)0 1692 y(after)31 b(running)d(the)i('./con\014gure')h(command.)
0 1853 y(The)f(CFITSIO)f(library)f(is)h(built)f(on)j(Unix)e(systems)h
(b)m(y)g(t)m(yping:)48 2087 y Fe(>)95 b(./configure)45
b([--prefix=/target/insta)o(llat)o(ion)o(/pat)o(h])48
2199 y(>)95 b(make)476 b(\(or)95 b('make)46 b(shared'\))48
2312 y(>)95 b(make)47 b(install)93 b(\(this)46 b(step)h(is)g
(optional\))0 2546 y Fi(at)24 b(the)g(op)s(erating)f(system)h(prompt.)
38 b(The)23 b(con\014gure)g(command)g(customizes)h(the)g(Mak)m(e\014le)
g(for)g(the)g(particular)0 2659 y(system,)g(then)d(the)g(`mak)m(e')i
(command)e(compiles)f(the)h(source)h(\014les)e(and)h(builds)d(the)j
(library)-8 b(.)36 b(T)m(yp)s(e)21 b(`./con\014gure')0
2772 y(and)34 b(not)h(simply)d(`con\014gure')j(to)h(ensure)e(that)h
(the)g(con\014gure)g(script)e(in)h(the)h(curren)m(t)f(directory)g(is)g
(run)g(and)0 2885 y(not)29 b(some)g(other)g(system-wide)f(con\014gure)g
(script.)39 b(The)29 b(optional)f('pre\014x')g(argumen)m(t)h(to)g
(con\014gure)g(giv)m(es)g(the)0 2998 y(path)f(to)i(the)f(directory)f
(where)g(the)h(CFITSIO)f(library)e(and)i(include)f(\014les)g(should)g
(b)s(e)h(installed)f(via)h(the)h(later)0 3111 y('mak)m(e)j(install')c
(command.)41 b(F)-8 b(or)31 b(example,)143 3345 y Fe(>)48
b(./configure)c(--prefix=/usr1/local)0 3579 y Fi(will)22
b(cause)k(the)f('mak)m(e)h(install')d(command)i(to)h(cop)m(y)g(the)f
(CFITSIO)e(lib)s(c\014tsio)f(\014le)j(to)g(/usr1/lo)s(cal/lib)e(and)i
(the)0 3692 y(necessary)36 b(include)c(\014le)j(to)h(/usr1/lo)s
(cal/include)d(\(assuming)h(of)h(course)g(that)h(the)f(pro)s(cess)g
(has)g(p)s(ermission)0 3805 y(to)c(write)f(to)h(these)g(directories\).)
0 3965 y(By)d(default)g(this)f(also)h(builds)c(the)29
b(set)f(of)h(F)-8 b(ortran-callable)28 b(wrapp)s(er)e(routines)h(whose)
h(calling)e(sequences)j(are)0 4078 y(describ)s(ed)f(later)j(in)e(this)g
(do)s(cumen)m(t.)0 4238 y(The)f('mak)m(e)h(shared')f(option)g(builds)d
(a)k(shared)e(or)i(dynamic)e(v)m(ersion)h(of)g(the)h(CFITSIO)d(library)
-8 b(.)38 b(When)28 b(using)0 4351 y(the)f(shared)f(library)f(the)i
(executable)g(co)s(de)g(is)f(not)h(copied)f(in)m(to)h(y)m(our)g
(program)g(at)g(link)e(time)h(and)h(instead)f(the)0 4464
y(program)h(lo)s(cates)h(the)g(necessary)g(library)d(co)s(de)j(at)g
(run)e(time,)i(normally)e(through)g(LD)p 3065 4464 28
4 v 33 w(LIBRAR)-8 b(Y)p 3514 4464 V 34 w(P)g(A)g(TH)28
b(or)0 4577 y(some)j(other)f(metho)s(d.)41 b(The)29 b(adv)-5
b(an)m(tages)33 b(of)d(using)f(a)i(shared)e(library)f(are:)143
4811 y Fe(1.)95 b(Less)47 b(disk)f(space)h(if)g(you)g(build)f(more)h
(than)f(1)i(program)143 4924 y(2.)95 b(Less)47 b(memory)f(if)h(more)g
(than)f(one)h(copy)g(of)g(a)g(program)f(using)h(the)g(shared)334
5036 y(library)f(is)h(running)f(at)h(the)g(same)g(time)f(since)h(the)g
(system)f(is)h(smart)334 5149 y(enough)f(to)h(share)g(copies)f(of)h
(the)g(shared)f(library)g(at)h(run)g(time.)143 5262 y(3.)95
b(Possibly)46 b(easier)g(maintenance)e(since)j(a)g(new)g(version)f(of)h
(the)g(shared)334 5375 y(library)f(can)h(be)g(installed)e(without)h
(relinking)f(all)i(the)g(software)334 5488 y(that)g(uses)f(it)i(\(as)e
(long)h(as)g(the)g(subroutine)e(names)i(and)f(calling)334
5601 y(sequences)f(remain)h(unchanged\).)143 5714 y(4.)95
b(No)47 b(run-time)f(penalty.)p eop
%%Page: 5 11
5 10 bop 0 299 a Fg(2.1.)72 b(BUILDING)31 b(THE)f(LIBRAR)-8
b(Y)2507 b Fi(5)0 555 y(The)30 b(disadv)-5 b(an)m(tages)31
b(are:)143 819 y Fe(1.)47 b(More)g(hassle)f(at)h(runtime.)94
b(You)46 b(have)h(to)g(either)f(build)h(the)g(programs)286
932 y(specially)f(or)h(have)f(LD_LIBRARY_PATH)e(set)j(right.)143
1045 y(2.)g(There)g(may)g(be)g(a)g(slight)f(start)h(up)g(penalty,)e
(depending)h(on)h(where)f(you)h(are)286 1158 y(reading)f(the)h(shared)f
(library)g(and)h(the)g(program)f(from)g(and)h(if)g(your)g(CPU)g(is)286
1271 y(either)f(really)h(slow)f(or)h(really)f(heavily)g(loaded.)0
1535 y Fi(On)30 b(HP/UX)i(systems,)g(the)f(en)m(vironmen)m(t)g(v)-5
b(ariable)30 b(CFLA)m(GS)h(should)e(b)s(e)i(set)g(to)h(-Ae)g(b)s(efore)
f(running)d(con-)0 1648 y(\014gure)i(to)h(enable)f("extended)h(ANSI")f
(features.)0 1808 y(It)f(ma)m(y)h(not)f(b)s(e)f(p)s(ossible)f(to)i
(staticly)g(link)e(programs)i(that)g(use)g(CFITSIO)e(on)i(some)h
(platforms)d(\(namely)-8 b(,)30 b(on)0 1921 y(Solaris)k(2.6\))j(due)e
(to)i(the)e(net)m(w)m(ork)i(driv)m(ers)d(\(whic)m(h)h(pro)m(vide)g(FTP)
g(and)g(HTTP)g(access)i(to)g(FITS)e(\014les\).)56 b(It)0
2034 y(is)32 b(p)s(ossible)e(to)k(mak)m(e)f(b)s(oth)g(a)g(dynamic)e
(and)h(a)i(static)f(v)m(ersion)f(of)h(the)g(CFITSIO)e(library)-8
b(,)32 b(but)g(net)m(w)m(ork)i(\014le)0 2147 y(access)e(will)27
b(not)k(b)s(e)f(p)s(ossible)e(using)h(the)h(static)h(v)m(ersion.)0
2307 y(On)d(V)-10 b(AX/VMS)31 b(and)d(ALPHA/VMS)i(systems)f(the)h(mak)m
(e)p 2100 2307 28 4 v 34 w(g\015oat.com)h(command)e(\014le)f(ma)m(y)i
(b)s(e)f(executed)h(to)0 2420 y(build)j(the)k(c\014tsio.olb)e(ob)5
b(ject)37 b(library)d(using)h(the)h(default)g(G-\015oating)g(p)s(oin)m
(t)g(option)f(for)h(double)f(v)-5 b(ariables.)0 2533
y(The)37 b(mak)m(e)p 405 2533 V 33 w(d\015oat.com)i(and)d(mak)m(e)p
1279 2533 V 34 w(ieee.com)i(\014les)f(ma)m(y)g(b)s(e)g(used)f(instead)h
(to)h(build)c(the)j(library)e(with)h(the)0 2646 y(other)26
b(\015oating)h(p)s(oin)m(t)e(options.)38 b(Note)28 b(that)f(the)f
(getcwd)h(function)e(that)i(is)e(used)g(in)g(the)i(group.c)f(mo)s(dule)
e(ma)m(y)0 2758 y(require)43 b(that)j(programs)e(using)f(CFITSIO)g(b)s
(e)h(link)m(ed)g(with)f(the)i(ALPHA$LIBRAR)-8 b(Y:V)e(AX)m(CR)i(TL.OLB)
0 2871 y(library)g(.)39 b(See)30 b(the)h(example)f(link)e(line)h(in)g
(the)i(next)f(section)h(of)f(this)g(do)s(cumen)m(t.)0
3032 y(On)25 b(Windo)m(ws)g(IBM-PC)h(t)m(yp)s(e)g(platforms)e(the)i
(situation)f(is)f(more)i(complicated)g(b)s(ecause)f(of)h(the)g(wide)f
(v)-5 b(ariet)m(y)0 3144 y(of)43 b(F)-8 b(ortran)43 b(compilers)f(that)
h(are)g(a)m(v)-5 b(ailable)42 b(and)g(b)s(ecause)h(of)g(the)g(inheren)m
(t)f(complexities)g(of)g(calling)g(the)0 3257 y(CFITSIO)25
b(C)g(routines)g(from)h(F)-8 b(ortran.)40 b(Tw)m(o)26
b(di\013eren)m(t)g(v)m(ersions)f(of)h(the)h(CFITSIO)d(dll)g(library)g
(are)i(a)m(v)-5 b(ailable,)0 3370 y(compiled)26 b(with)f(the)j(Borland)
e(C++)g(compiler)g(and)g(the)i(Microsoft)f(Visual)f(C++)g(compiler,)g
(resp)s(ectiv)m(ely)-8 b(,)28 b(in)0 3483 y(the)i(\014les)f(c\014tsio)s
(dll)p 682 3483 V 30 w(2xxx)p 901 3483 V 34 w(b)s(orland.zip)e(and)i
(c\014tsio)s(dll)p 1927 3483 V 30 w(2xxx)p 2146 3483
V 33 w(v)m(cc.zip,)i(where)f('2xxx')h(represen)m(ts)f(the)g(curren)m(t)
0 3596 y(release)43 b(n)m(um)m(b)s(er.)76 b(Both)43 b(these)g(dll)e
(libraries)f(con)m(tain)j(a)g(set)g(of)f(F)-8 b(ortran)44
b(wrapp)s(er)d(routines)g(whic)m(h)g(ma)m(y)0 3709 y(b)s(e)c
(compatible)g(with)f(some,)k(but)d(probably)f(not)h(all,)i(a)m(v)-5
b(ailable)37 b(F)-8 b(ortran)38 b(compilers.)61 b(T)-8
b(o)38 b(test)g(if)f(they)h(are)0 3822 y(compatible,)27
b(compile)f(the)h(program)g(testf77.f)h(and)f(try)f(linking)f(to)i
(these)h(dll)c(libraries.)37 b(If)27 b(these)g(libraries)d(do)0
3935 y(not)29 b(w)m(ork)g(with)e(a)i(particular)e(F)-8
b(ortran)30 b(compiler,)e(then)g(there)h(are)g(2)g(p)s(ossible)e
(solutions.)38 b(The)28 b(\014rst)g(solution)0 4048 y(w)m(ould)g(b)s(e)
i(to)g(mo)s(dify)e(the)i(\014le)e(cfortran.h)i(for)f(that)i(particular)
d(com)m(bination)h(of)h(C)f(and)g(F)-8 b(ortran)30 b(compilers,)0
4161 y(and)k(then)g(rebuild)d(the)k(CFITSIO)d(dll)h(library)-8
b(.)50 b(This)33 b(will)f(require,)i(ho)m(w)m(ev)m(er,)j(a)e(some)f
(exp)s(ertise)g(in)f(mixed)0 4274 y(language)e(programming.)39
b(The)30 b(other)h(solution)d(is)i(to)h(use)f(the)g(older)g(v5.03)i(F)
-8 b(ortran-77)32 b(implemen)m(tation)d(of)0 4386 y(FITSIO)c(that)h(is)
f(still)f(a)m(v)-5 b(ailable)25 b(from)g(the)h(FITSIO)f(w)m(eb-site.)39
b(This)24 b(v)m(ersion)h(is)g(no)h(longer)f(supp)s(orted,)g(but)g(it)0
4499 y(do)s(es)k(pro)m(vide)g(the)h(basic)g(functions)e(for)h(reading)g
(and)g(writing)f(FITS)h(\014les)g(and)g(should)f(b)s(e)h(compatible)g
(with)0 4612 y(most)i(F)-8 b(ortran)31 b(compilers.)0
4772 y(CFITSIO)e(has)h(curren)m(tly)f(b)s(een)h(tested)h(on)f(the)h
(follo)m(wing)e(platforms:)95 5036 y Fe(OPERATING)46
b(SYSTEM)523 b(COMPILER)143 5149 y(Sun)47 b(OS)1002 b(gcc)47
b(and)g(cc)g(\(3.0.1\))143 5262 y(Sun)g(Solaris)762 b(gcc)47
b(and)g(cc)143 5375 y(Silicon)f(Graphics)g(IRIX)285 b(gcc)47
b(and)g(cc)143 5488 y(Silicon)f(Graphics)g(IRIX64)189
b(MIPS)143 5601 y(Dec)47 b(Alpha)f(OSF/1)572 b(gcc)47
b(and)g(cc)143 5714 y(DECstation)93 b(Ultrix)428 b(gcc)p
eop
%%Page: 6 12
6 11 bop 0 299 a Fi(6)1896 b Fg(CHAPTER)30 b(2.)111 b(CREA)-8
b(TING)31 b(FITSIO/CFITSIO)143 555 y Fe(Dec)47 b(Alpha)f(OpenVMS)476
b(cc)143 668 y(DEC)47 b(VAX/VMS)762 b(gcc)47 b(and)g(cc)143
781 y(HP-UX)1049 b(gcc)143 894 y(IBM)47 b(AIX)954 b(gcc)143
1007 y(Linux)1049 b(gcc)143 1120 y(MkLinux)953 b(DR3)143
1233 y(Windows)46 b(95/98/NT)523 b(Borland)46 b(C++)h(V4.5)143
1346 y(Windows)f(95/98/NT/ME/XP)235 b(Microsoft/Compaq)43
b(Visual)j(C++)h(v5.0,)g(v6.0)143 1458 y(Windows)f(95/98/NT)523
b(Cygwin)46 b(gcc)143 1571 y(OS/2)1097 b(gcc)47 b(+)g(EMX)143
1684 y(MacOS)g(7.1)f(or)i(greater)332 b(Metrowerks)45
b(10.+)0 1949 y Fi(CFITSIO)26 b(will)g(probably)g(run)g(on)i(most)g
(other)h(Unix)d(platforms.)39 b(Cra)m(y)28 b(sup)s(ercomputers)e(are)j
(curren)m(tly)e(not)0 2061 y(supp)s(orted.)0 2400 y Fd(2.2)135
b(T)-11 b(esting)46 b(the)f(Library)0 2652 y Fi(The)40
b(CFITSIO)e(library)g(should)g(b)s(e)h(tested)i(b)m(y)f(building)c(and)
j(running)f(the)i(testprog.c)h(program)f(that)h(is)0
2765 y(included)28 b(with)h(the)h(release.)41 b(On)30
b(Unix)f(systems)h(t)m(yp)s(e:)191 3029 y Fe(\045)47
b(make)g(testprog)191 3142 y(\045)g(testprog)f(>)h(testprog.lis)191
3255 y(\045)g(diff)g(testprog.lis)d(testprog.out)191
3368 y(\045)j(cmp)g(testprog.fit)e(testprog.std)0 3632
y Fi(On)30 b(VMS)g(systems,)g(\(assuming)g(cc)h(is)e(the)i(name)f(of)h
(the)f(C)g(compiler)f(command\),)i(t)m(yp)s(e:)191 3896
y Fe($)47 b(cc)h(testprog.c)191 4009 y($)f(link)g(testprog,)e
(cfitsio/lib,)g(alpha$library:vaxcrtl/l)o(ib)191 4122
y($)i(run)g(testprog)0 4386 y Fi(The)30 b(testprog)h(program)g(should)d
(pro)s(duce)h(a)i(FITS)f(\014le)f(called)h(`testprog.\014t')i(that)f
(is)e(iden)m(tical)h(to)h(the)f(`test-)0 4499 y(prog.std')25
b(FITS)f(\014le)f(included)f(with)h(this)h(release.)39
b(The)24 b(diagnostic)g(messages)i(\(whic)m(h)d(w)m(ere)i(pip)s(ed)e
(to)i(the)g(\014le)0 4612 y(testprog.lis)f(in)f(the)i(Unix)e(example\))
i(should)d(b)s(e)i(iden)m(tical)g(to)h(the)g(listing)d(con)m(tained)j
(in)e(the)i(\014le)e(testprog.out.)0 4725 y(The)30 b('di\013)7
b(')30 b(and)f('cmp')i(commands)f(sho)m(wn)g(ab)s(o)m(v)m(e)h(should)e
(not)h(rep)s(ort)g(an)m(y)h(di\013erences)f(in)f(the)h(\014les.)40
b(\(There)0 4838 y(ma)m(y)35 b(b)s(e)e(some)h(minor)f(formatting)g
(di\013erences,)i(suc)m(h)e(as)i(the)f(presence)g(or)g(absence)g(of)g
(leading)f(zeros,)j(or)e(3)0 4951 y(digit)29 b(exp)s(onen)m(ts)h(in)f
(n)m(um)m(b)s(ers,)h(whic)m(h)f(can)h(b)s(e)g(ignored\).)0
5111 y(The)f(F)-8 b(ortran)31 b(wrapp)s(ers)d(in)g(CFITSIO)g(ma)m(y)j
(b)s(e)e(tested)h(with)f(the)h(testf77)h(program.)40
b(On)29 b(Unix)g(systems)h(the)0 5224 y(fortran)g(compilation)f(and)h
(link)e(command)i(ma)m(y)h(b)s(e)f(called)f('f77')j(or)e('g77',)j(dep)s
(ending)28 b(on)i(the)g(system.)143 5488 y Fe(\045)48
b(f77)f(-o)g(testf77)f(testf77.f)f(-L.)i(-lcfitsio)e(-lnsl)h(-lsocket)
48 5601 y(or)143 5714 y(\045)i(f77)f(-f)g(-o)g(testf77)f(testf77.f)f
(-L.)i(-lcfitsio)188 b(\(under)46 b(SUN)h(O/S\))p eop
%%Page: 7 13
7 12 bop 0 299 a Fg(2.3.)72 b(LINKING)30 b(PR)m(OGRAMS)h(WITH)f(FITSIO)
2041 b Fi(7)48 555 y Fe(or)143 668 y(\045)48 b(f77)f(-o)g(testf77)f
(testf77.f)f(-Wl,-L.)h(-lcfitsio)f(-lm)i(-lnsl)f(-lsocket)g(\(HP/UX\))
48 781 y(or)143 894 y(\045)i(g77)f(-o)g(testf77)f(-s)h(testf77.f)e
(-lcfitsio)g(-lcc_dynamic)g(-lncurses)g(\(Mac)i(OS-X\))143
1120 y(\045)h(testf77)d(>)j(testf77.lis)143 1233 y(\045)g(diff)e
(testf77.lis)f(testf77.out)143 1346 y(\045)j(cmp)f(testf77.fit)d
(testf77.std)0 1591 y Fi(On)31 b(mac)m(hines)g(running)f(SUN)h(O/S,)h
(F)-8 b(ortran)33 b(programs)e(m)m(ust)h(b)s(e)f(compiled)f(with)h(the)
h('-f)7 b(')32 b(option)g(to)g(force)0 1704 y(double)24
b(precision)g(v)-5 b(ariables)24 b(to)i(b)s(e)f(aligned)f(on)i(8-b)m
(yte)h(b)s(oundarys)c(to)j(mak)m(e)h(the)e(fortran-declared)g(v)-5
b(ariables)0 1817 y(compatible)32 b(with)f(C.)h(A)h(similar)d(compiler)
h(option)h(ma)m(y)h(b)s(e)f(required)f(on)h(other)h(platforms.)47
b(F)-8 b(ailing)31 b(to)i(use)0 1930 y(this)25 b(option)g(ma)m(y)h
(cause)h(the)f(program)f(to)i(crash)e(on)h(FITSIO)f(routines)f(that)j
(read)f(or)f(write)g(double)g(precision)0 2043 y(v)-5
b(ariables.)0 2203 y(Also)30 b(note)h(that)f(on)g(some)h(systems,)f
(the)h(output)e(listing)f(of)j(the)f(testf77)i(program)d(ma)m(y)i
(di\013er)e(sligh)m(tly)f(from)0 2316 y(the)j(testf77.std)h(template,)f
(if)f(leading)f(zeros)i(are)g(not)g(prin)m(ted)e(b)m(y)i(default)f(b)s
(efore)g(the)h(decimal)e(p)s(oin)m(t)h(when)0 2429 y(using)f(F)i
(format.)0 2589 y(A)f(few)h(other)f(utilit)m(y)f(programs)h(are)h
(included)c(with)i(CFITSIO:)191 2835 y Fe(speed)46 b(-)i(measures)d
(the)i(maximum)f(throughput)f(\(in)i(MB)g(per)g(second\))668
2947 y(for)g(writing)f(and)h(reading)f(FITS)g(files)h(with)f(CFITSIO)
191 3173 y(listhead)f(-)j(lists)e(all)h(the)g(header)f(keywords)g(in)h
(any)g(FITS)f(file)191 3399 y(fitscopy)f(-)j(copies)e(any)h(FITS)g
(file)f(\(especially)f(useful)h(in)h(conjunction)811
3512 y(with)g(the)g(CFITSIO's)e(extended)h(input)g(filename)g(syntax\))
191 3738 y(cookbook)f(-)j(a)f(sample)f(program)g(that)h(peforms)f
(common)g(read)g(and)811 3851 y(write)h(operations)e(on)i(a)g(FITS)g
(file.)191 4077 y(iter_a,)f(iter_b,)g(iter_c)g(-)h(examples)f(of)h(the)
g(CFITSIO)f(iterator)f(routine)0 4322 y Fi(The)30 b(\014rst)f(4)i(of)g
(these)g(utilit)m(y)d(programs)i(can)h(b)s(e)f(compiled)f(and)g(link)m
(ed)g(b)m(y)h(t)m(yping)143 4568 y Fe(\045)95 b(make)47
b(program_name)0 4899 y Fd(2.3)135 b(Linking)45 b(Programs)h(with)f
(FITSIO)0 5149 y Fi(When)31 b(linking)d(applications)i(soft)m(w)m(are)i
(with)e(the)h(FITSIO)f(library)-8 b(,)30 b(sev)m(eral)i(system)f
(libraries)d(usually)h(need)0 5262 y(to)d(b)s(e)f(sp)s(eci\014ed)f(on)h
(the)h(link)e(comman)h(Unix)g(systems,)i(the)e(most)h(reliable)e(w)m(a)
m(y)i(to)h(determine)d(what)i(libraries)0 5375 y(are)32
b(required)e(is)g(to)j(t)m(yp)s(e)e('mak)m(e)i(testprog')g(and)e(see)h
(what)f(libraries)e(the)j(con\014gure)f(script)g(has)g(added.)43
b(The)0 5488 y(t)m(ypical)23 b(libraries)e(that)j(ma)m(y)g(need)f(to)h
(b)s(e)f(added)g(are)g(-lm)g(\(the)h(math)f(library\))f(and)h(-lnsl)e
(and)i(-lso)s(c)m(k)m(et)i(\(needed)0 5601 y(only)h(for)g(FTP)g(and)g
(HTTP)g(\014le)g(access\).)41 b(These)26 b(latter)h(2)g(libraries)d
(are)j(not)g(needed)f(on)g(VMS)h(and)f(Windo)m(ws)0 5714
y(platforms,)k(b)s(ecause)g(FTP)g(\014le)g(access)h(is)f(not)g(curren)m
(tly)g(supp)s(orted)e(on)i(those)h(platforms.)p eop
%%Page: 8 14
8 13 bop 0 299 a Fi(8)1896 b Fg(CHAPTER)30 b(2.)111 b(CREA)-8
b(TING)31 b(FITSIO/CFITSIO)0 555 y Fi(Note)36 b(that)f(when)e
(upgrading)f(to)j(a)g(new)m(er)f(v)m(ersion)g(of)h(CFITSIO)d(it)i(is)g
(usually)e(necessa)m(y)j(to)g(recompile,)g(as)0 668 y(w)m(ell)29
b(as)i(relink,)e(the)h(programs)g(that)h(use)f(CFITSIO,)f(b)s(ecause)i
(the)f(de\014nitions)e(in)h(\014tsio.h)h(often)g(c)m(hange.)0
1001 y Fd(2.4)135 b(Getting)46 b(Started)g(with)f(FITSIO)0
1251 y Fi(In)32 b(order)h(to)h(e\013ectiv)m(ely)g(use)f(the)g(FITSIO)f
(library)f(as)j(quic)m(kly)e(as)h(p)s(ossible,)f(it)h(is)f(recommended)
h(that)g(new)0 1364 y(users)d(follo)m(w)f(these)i(steps:)0
1524 y(1.)62 b(Read)38 b(the)f(follo)m(wing)f(`FITS)h(Primer')f(c)m
(hapter)i(for)g(a)f(brief)f(o)m(v)m(erview)i(of)g(the)g(structure)e(of)
i(FITS)f(\014les.)0 1637 y(This)24 b(is)h(esp)s(ecially)f(imp)s(ortan)m
(t)i(for)f(users)h(who)f(ha)m(v)m(e)i(not)g(previously)c(dealt)j(with)f
(the)h(FITS)f(table)h(and)g(image)0 1750 y(extensions.)0
1910 y(2.)41 b(W)-8 b(rite)31 b(a)g(simple)d(program)i(to)h(read)g(or)f
(write)f(a)i(FITS)f(\014le)f(using)g(the)i(Basic)f(In)m(terface)i
(routines.)0 2071 y(3.)41 b(Refer)28 b(to)i(the)f(co)s(okb)s(o)s(ok.f)g
(program)f(that)i(is)e(included)e(with)h(this)h(release)h(for)f
(examples)h(of)g(routines)e(that)0 2183 y(p)s(erform)i(v)-5
b(arious)29 b(common)i(FITS)f(\014le)f(op)s(erations.)0
2344 y(4.)52 b(Read)34 b(Chapters)g(4)g(and)f(5)i(to)g(b)s(ecome)f
(familiar)e(with)g(the)j(con)m(v)m(en)m(tions)g(and)e(adv)-5
b(anced)34 b(features)h(of)f(the)0 2457 y(FITSIO)29 b(in)m(terface.)0
2617 y(5.)47 b(Scan)32 b(through)f(the)h(more)h(extensiv)m(e)f(set)h
(of)g(routines)e(that)h(are)h(pro)m(vided)e(in)g(the)h(`Adv)-5
b(anced)32 b(In)m(terface'.)0 2730 y(These)22 b(routines)e(p)s(erform)h
(more)h(sp)s(ecialized)e(functions)g(than)h(are)i(pro)m(vided)d(b)m(y)i
(the)g(Basic)g(In)m(terface)h(routines.)0 3063 y Fd(2.5)135
b(Example)46 b(Program)0 3313 y Fi(The)32 b(follo)m(wing)f(listing)f
(sho)m(ws)i(an)g(example)h(of)f(ho)m(w)h(to)g(use)f(the)g(FITSIO)g
(routines)f(in)g(a)i(F)-8 b(ortran)33 b(program.)0 3426
y(Refer)38 b(to)h(the)g(co)s(okb)s(o)s(ok.f)f(program)g(that)h(is)e
(included)e(with)i(the)i(FITSIO)e(distribution)d(for)k(examples)g(of)0
3539 y(other)31 b(FITS)e(programs.)286 3794 y Fe(program)46
b(writeimage)0 4020 y(C)238 b(Create)46 b(a)i(FITS)f(primary)e(array)i
(containing)e(a)i(2-D)g(image)286 4246 y(integer)f
(status,unit,blocksize,bit)o(pix,)o(nax)o(is,n)o(axes)o(\(2\))286
4359 y(integer)g(i,j,group,fpixel,nelement)o(s,ar)o(ray)o(\(300)o(,200)
o(\))286 4472 y(character)g(filename*80)286 4585 y(logical)g
(simple,extend)286 4811 y(status=0)0 4924 y(C)238 b(Name)47
b(of)g(the)g(FITS)g(file)f(to)i(be)f(created:)286 5036
y(filename='ATESTFILE.FITS')0 5262 y(C)238 b(Get)47 b(an)g(unused)g
(Logical)e(Unit)i(Number)f(to)h(use)g(to)g(create)f(the)h(FITS)g(file)
286 5375 y(call)g(ftgiou\(unit,status\))0 5601 y(C)238
b(create)46 b(the)h(new)g(empty)g(FITS)f(file)286 5714
y(blocksize=1)p eop
%%Page: 9 15
9 14 bop 0 299 a Fg(2.6.)72 b(LEGAL)30 b(STUFF)2995 b
Fi(9)286 555 y Fe(call)47 b(ftinit\(unit,filename,blo)o(cksi)o(ze,s)o
(tat)o(us\))0 781 y(C)238 b(initialize)45 b(parameters)g(about)i(the)g
(FITS)f(image)h(\(300)f(x)i(200)f(16-bit)f(integers\))286
894 y(simple=.true.)286 1007 y(bitpix=16)286 1120 y(naxis=2)286
1233 y(naxes\(1\)=300)286 1346 y(naxes\(2\)=200)286 1458
y(extend=.true.)0 1684 y(C)238 b(write)47 b(the)g(required)e(header)h
(keywords)286 1797 y(call)h(ftphpr\(unit,simple,bitpi)o(x,na)o(xis,)o
(nax)o(es,0)o(,1,e)o(xte)o(nd,s)o(tatu)o(s\))0 2023 y(C)238
b(initialize)45 b(the)i(values)f(in)i(the)e(image)h(with)f(a)i(linear)e
(ramp)h(function)286 2136 y(do)h(j=1,naxes\(2\))477 2249
y(do)f(i=1,naxes\(1\))668 2362 y(array\(i,j\)=i+j)477
2475 y(end)g(do)286 2588 y(end)g(do)0 2813 y(C)238 b(write)47
b(the)g(array)f(to)h(the)g(FITS)g(file)286 2926 y(group=1)286
3039 y(fpixel=1)286 3152 y(nelements=naxes\(1\)*naxes\(2)o(\))286
3265 y(call)g(ftpprj\(unit,group,fpixel)o(,nel)o(emen)o(ts,)o(arra)o
(y,st)o(atu)o(s\))0 3491 y(C)238 b(write)47 b(another)f(optional)f
(keyword)h(to)h(the)g(header)286 3604 y(call)g
(ftpkyj\(unit,'EXPOSURE',1)o(500,)o('Tot)o(al)41 b(Exposure)46
b(Time',status\))0 3830 y(C)238 b(close)47 b(the)g(file)f(and)h(free)g
(the)g(unit)f(number)286 3942 y(call)h(ftclos\(unit,)d(status\))286
4055 y(call)j(ftfiou\(unit,)d(status\))286 4168 y(end)0
4527 y Fd(2.6)135 b(Legal)46 b(Stu\013)0 4782 y Fi(Cop)m(yrigh)m(t)36
b(\(Unpublished{all)d(righ)m(ts)j(reserv)m(ed)h(under)e(the)i(cop)m
(yrigh)m(t)g(la)m(ws)f(of)h(the)g(United)f(States\),)k(U.S.)0
4895 y(Go)m(v)m(ernmen)m(t)30 b(as)g(represen)m(ted)e(b)m(y)h(the)g
(Administrator)e(of)i(the)g(National)f(Aeronautics)h(and)f(Space)h
(Adminis-)0 5008 y(tration.)41 b(No)31 b(cop)m(yrigh)m(t)f(is)g
(claimed)f(in)g(the)i(United)e(States)i(under)e(Title)h(17,)h(U.S.)f
(Co)s(de.)0 5168 y(P)m(ermission)e(to)i(freely)e(use,)i(cop)m(y)-8
b(,)31 b(mo)s(dify)-8 b(,)28 b(and)h(distribute)e(this)h(soft)m(w)m
(are)j(and)e(its)g(do)s(cumen)m(tation)g(without)0 5281
y(fee)g(is)e(hereb)m(y)h(gran)m(ted,)i(pro)m(vided)d(that)i(this)e(cop)
m(yrigh)m(t)i(notice)f(and)g(disclaimer)e(of)i(w)m(arran)m(t)m(y)i(app)
s(ears)d(in)g(all)0 5394 y(copies.)41 b(\(Ho)m(w)m(ev)m(er,)33
b(see)e(the)f(restriction)f(on)i(the)f(use)g(of)h(the)f(gzip)g
(compression)g(co)s(de,)h(b)s(elo)m(w\).)0 5554 y(DISCLAIMER:)0
5714 y(THE)i(SOFTW)-10 b(ARE)32 b(IS)g(PR)m(O)m(VIDED)i('AS)f(IS')g
(WITHOUT)f(ANY)i(W)-10 b(ARRANTY)33 b(OF)g(ANY)h(KIND,)f(EI-)p
eop
%%Page: 10 16
10 15 bop 0 299 a Fi(10)1851 b Fg(CHAPTER)30 b(2.)111
b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)0 555 y Fi(THER)42
b(EXPRESSED,)f(IMPLIED,)i(OR)e(ST)-8 b(A)g(TUTOR)g(Y,)43
b(INCLUDING,)f(BUT)h(NOT)e(LIMITED)h(TO,)0 668 y(ANY)33
b(W)-10 b(ARRANTY)33 b(THA)-8 b(T)32 b(THE)g(SOFTW)-10
b(ARE)32 b(WILL)g(CONF)m(ORM)g(TO)g(SPECIFICA)-8 b(TIONS,)30
b(ANY)0 781 y(IMPLIED)38 b(W)-10 b(ARRANTIES)37 b(OF)h(MER)m(CHANT)-8
b(ABILITY,)38 b(FITNESS)f(F)m(OR)h(A)g(P)-8 b(AR)g(TICULAR)38
b(PUR-)0 894 y(POSE,)24 b(AND)i(FREEDOM)f(FR)m(OM)h(INFRINGEMENT,)g
(AND)f(ANY)h(W)-10 b(ARRANTY)25 b(THA)-8 b(T)25 b(THE)g(DOC-)0
1007 y(UMENT)-8 b(A)g(TION)31 b(WILL)f(CONF)m(ORM)h(TO)e(THE)h(SOFTW)
-10 b(ARE,)30 b(OR)g(ANY)h(W)-10 b(ARRANTY)31 b(THA)-8
b(T)30 b(THE)0 1120 y(SOFTW)-10 b(ARE)31 b(WILL)h(BE)g(ERR)m(OR)g
(FREE.)g(IN)g(NO)f(EVENT)h(SHALL)f(NASA)h(BE)g(LIABLE)g(F)m(OR)g(ANY)0
1233 y(D)m(AMA)m(GES,)26 b(INCLUDING,)e(BUT)f(NOT)g(LIMITED)h(TO,)f
(DIRECT,)g(INDIRECT,)g(SPECIAL)f(OR)h(CON-)0 1346 y(SEQUENTIAL)28
b(D)m(AMA)m(GES,)k(ARISING)d(OUT)g(OF,)h(RESUL)-8 b(TING)29
b(FR)m(OM,)h(OR)f(IN)h(ANY)g(W)-10 b(A)i(Y)30 b(CON-)0
1458 y(NECTED)25 b(WITH)g(THIS)f(SOFTW)-10 b(ARE,)25
b(WHETHER)g(OR)g(NOT)g(BASED)g(UPON)g(W)-10 b(ARRANTY,)26
b(CON-)0 1571 y(TRA)m(CT,)d(TOR)-8 b(T)23 b(,)g(OR)g(OTHER)-10
b(WISE,)22 b(WHETHER)i(OR)f(NOT)f(INJUR)-8 b(Y)24 b(W)-10
b(AS)23 b(SUST)-8 b(AINED)23 b(BY)h(PER-)0 1684 y(SONS)h(OR)i(PR)m
(OPER)-8 b(TY)26 b(OR)g(OTHER)-10 b(WISE,)26 b(AND)h(WHETHER)g(OR)f
(NOT)g(LOSS)f(W)-10 b(AS)26 b(SUST)-8 b(AINED)0 1797
y(FR)m(OM,)37 b(OR)e(AR)m(OSE)h(OUT)f(OF)h(THE)g(RESUL)-8
b(TS)35 b(OF,)h(OR)f(USE)h(OF,)g(THE)g(SOFTW)-10 b(ARE)35
b(OR)g(SER-)0 1910 y(VICES)29 b(PR)m(O)m(VIDED)j(HEREUNDER.")0
2070 y(The)i(\014le)h(compress.c)g(con)m(tains)g(\(sligh)m(tly)f(mo)s
(di\014ed\))f(source)i(co)s(de)g(that)h(originally)c(came)k(from)f
(gzip-1.2.4,)0 2183 y(cop)m(yrigh)m(t)26 b(\(C\))g(1992-1993)k(b)m(y)c
(Jean-loup)f(Gailly)-8 b(.)38 b(This)24 b(gzip)h(co)s(de)h(is)f
(distributed)e(under)i(the)h(GNU)g(General)0 2296 y(Public)k(License)i
(and)f(th)m(us)h(requires)f(that)i(an)m(y)f(soft)m(w)m(are)i(that)f
(uses)f(the)g(CFITSIO)f(library)f(\(whic)m(h)h(in)g(turn)0
2409 y(uses)e(the)g(gzip)g(co)s(de\))h(m)m(ust)f(conform)g(to)h(the)f
(pro)m(visions)e(in)h(the)i(GNU)g(General)f(Public)e(License.)40
b(A)29 b(cop)m(y)h(of)0 2522 y(the)h(GNU)g(license)e(is)g(included)f
(at)j(the)g(b)s(eginning)c(of)k(compress.c)g(\014le.)0
2682 y(An)h(alternate)i(v)m(ersion)e(of)h(the)g(compress.c)g(\014le)f
(\(called)g(compress)p 2381 2682 28 4 v 33 w(alternate.c\))i(is)e(pro)m
(vided)f(for)i(users)e(who)0 2795 y(w)m(an)m(t)24 b(to)g(use)e(the)i
(CFITSIO)d(library)g(but)h(are)h(un)m(willing)d(or)j(unable)e(to)j
(publicly)c(release)j(their)f(soft)m(w)m(are)i(under)0
2908 y(the)i(terms)g(of)g(the)g(GNU)h(General)e(Public)f(License.)39
b(This)24 b(alternate)i(v)m(ersion)g(con)m(tains)g(non-functional)e
(stubs)0 3021 y(for)g(the)h(\014le)e(compression)h(and)f(uncompression)
g(routines)g(used)h(b)m(y)g(CFITSIO.)f(Replace)i(the)f(\014le)g
(`compress.c')0 3134 y(with)32 b(`compress)p 600 3134
V 33 w(alternate.c')j(b)s(efore)e(compiling)e(the)i(CFITSIO)f(library)
-8 b(.)48 b(This)31 b(will)g(pro)s(duce)h(a)i(v)m(ersion)f(of)0
3247 y(CFITSIO)20 b(whic)m(h)h(do)s(es)g(not)h(supp)s(ort)e(reading)h
(or)h(writing)e(compressed)h(FITS)g(\014les)g(but)g(is)g(otherwise)g
(iden)m(tical)0 3360 y(to)31 b(the)g(standard)e(v)m(ersion.)0
3733 y Fd(2.7)135 b(Ac)l(kno)l(wledgemen)l(ts)0 3991
y Fi(The)29 b(dev)m(elopmen)m(t)g(of)h(man)m(y)f(of)h(the)f(p)s(o)m(w)m
(erful)f(features)h(in)f(CFITSIO)g(w)m(as)i(made)f(p)s(ossible)e
(through)h(collab-)0 4104 y(orations)34 b(with)f(man)m(y)i(p)s(eople)e
(or)i(organizations)f(from)g(around)f(the)i(w)m(orld.)51
b(The)34 b(follo)m(wing,)g(in)f(particular,)0 4217 y(ha)m(v)m(e)f(made)
e(esp)s(ecially)f(signi\014can)m(t)g(con)m(tributions:)0
4377 y(Programmers)c(from)h(the)f(In)m(tegral)h(Science)g(Data)h(Cen)m
(ter,)g(Switzerland)d(\(namely)-8 b(,)27 b(Jurek)d(Bork)m(o)m(wski,)k
(Bruce)0 4490 y(O'Neel,)33 b(and)f(Don)h(Jennings\),)e(designed)g(the)i
(concept)g(for)f(the)h(plug-in)d(I/O)i(driv)m(ers)f(that)i(w)m(as)g(in)
m(tro)s(duced)0 4603 y(with)h(CFITSIO)f(2.0.)56 b(The)34
b(use)h(of)g(`driv)m(ers')f(greatly)h(simpli\014ed)d(the)j(lo)m(w-lev)m
(el)g(I/O,)g(whic)m(h)e(in)h(turn)g(made)0 4716 y(other)40
b(new)f(features)i(in)d(CFITSIO)g(\(e.g.,)45 b(supp)s(ort)38
b(for)h(compressed)h(FITS)f(\014les)g(and)g(supp)s(ort)f(for)i(IRAF)0
4829 y(format)32 b(image)f(\014les\))g(m)m(uc)m(h)g(easier)h(to)g
(implemen)m(t.)42 b(Jurek)31 b(Bork)m(o)m(wski)g(wrote)h(the)g(Shared)e
(Memory)i(driv)m(er,)0 4942 y(and)23 b(Bruce)i(O'Neel)f(wrote)g(the)g
(driv)m(ers)f(for)g(accessing)i(FITS)e(\014les)g(o)m(v)m(er)i(the)f
(net)m(w)m(ork)h(using)d(the)j(FTP)-8 b(,)24 b(HTTP)-8
b(,)0 5055 y(and)30 b(R)m(OOT)g(proto)s(cols.)0 5215
y(The)45 b(ISDC)g(also)g(pro)m(vided)f(the)i(template)g(parsing)e
(routines)g(\(written)h(b)m(y)g(Jurek)g(Bork)m(o)m(wski\))h(and)f(the)0
5328 y(hierarc)m(hical)36 b(grouping)f(routines)h(\(written)h(b)m(y)g
(Don)h(Jennings\).)59 b(The)37 b(ISDC)f(D)m(AL)i(\(Data)h(Access)f(La)m
(y)m(er\))0 5441 y(routines)29 b(are)i(la)m(y)m(ered)g(on)f(top)h(of)f
(CFITSIO)f(and)h(mak)m(e)h(extensiv)m(e)g(use)f(of)h(these)g(features.)
0 5601 y(Uw)m(e)25 b(Lammers)e(\(XMM/ESA/ESTEC,)h(The)g(Netherlands\))f
(designed)g(the)h(high-p)s(erformance)e(lexical)h(pars-)0
5714 y(ing)41 b(algorithm)g(that)h(is)f(used)g(to)i(do)e(on-the-\015y)h
(\014ltering)e(of)i(FITS)f(tables.)75 b(This)40 b(algorithm)h(essen)m
(tially)p eop
%%Page: 11 17
11 16 bop 0 299 a Fg(2.7.)72 b(A)m(CKNO)m(WLEDGEMENTS)2515
b Fi(11)0 555 y(pre-compiles)34 b(the)i(user-supplied)c(selection)k
(expression)e(in)m(to)i(a)g(form)g(that)g(can)g(b)s(e)f(rapidly)e(ev)-5
b(aluated)36 b(for)0 668 y(eac)m(h)31 b(ro)m(w.)40 b(P)m(eter)31
b(Wilson)d(\(RSTX,)h(NASA/GSF)m(C\))i(then)e(wrote)h(the)g(parsing)e
(routines)g(used)h(b)m(y)g(CFITSIO)0 781 y(based)i(on)f(Lammers')h
(design,)f(com)m(bined)g(with)g(other)h(tec)m(hniques)f(suc)m(h)h(as)g
(the)g(CFITSIO)f(iterator)h(routine)0 894 y(to)h(further)e(enhance)h
(the)h(data)g(pro)s(cessing)e(throughput.)42 b(This)30
b(e\013ort)i(also)f(b)s(ene\014ted)f(from)h(a)h(m)m(uc)m(h)f(earlier)0
1007 y(lexical)22 b(parsing)h(routine)f(that)i(w)m(as)g(dev)m(elop)s
(ed)f(b)m(y)h(Ken)m(t)g(Blac)m(kburn)e(\(NASA/GSF)m(C\).)j(More)g
(recen)m(tly)-8 b(,)26 b(Craig)0 1120 y(Markw)m(ardt)j(\(NASA/GSF)m
(C\))g(implemen)m(ted)e(additional)f(functions)h(\(median,)h(a)m(v)m
(erage,)k(stddev\))c(and)g(other)0 1233 y(enhancemen)m(ts)j(to)g(the)g
(lexical)e(parser.)0 1393 y(The)40 b(CFITSIO)g(iterator)h(function)e
(is)h(lo)s(osely)g(based)h(on)f(similar)f(ideas)h(dev)m(elop)s(ed)g
(for)h(the)g(XMM)g(Data)0 1506 y(Access)31 b(La)m(y)m(er.)0
1666 y(P)m(eter)25 b(Wilson)e(\(RSTX,)h(NASA/GSF)m(C\))h(wrote)g(the)f
(complete)h(set)f(of)h(F)-8 b(ortran-callable)24 b(wrapp)s(ers)e(for)i
(all)f(the)0 1779 y(CFITSIO)29 b(routines,)g(whic)m(h)g(in)g(turn)h
(rely)f(on)i(the)f(CF)m(OR)-8 b(TRAN)31 b(macro)g(dev)m(elop)s(ed)f(b)m
(y)g(Burkhard)f(Buro)m(w.)0 1939 y(The)h(syn)m(tax)i(used)e(b)m(y)h
(CFITSIO)f(for)g(\014ltering)g(or)h(binning)c(input)i(FITS)i(\014les)f
(is)g(based)g(on)h(ideas)g(dev)m(elop)s(ed)0 2052 y(for)41
b(the)g(AXAF)h(Science)f(Cen)m(ter)h(Data)h(Mo)s(del)d(b)m(y)h
(Jonathan)g(McDo)m(w)m(ell,)k(An)m(tonella)c(F)-8 b(ruscione,)44
b(Aneta)0 2165 y(Siemigino)m(wsk)-5 b(a)24 b(and)h(Bill)f(Jo)m(y)m(e.)
41 b(See)26 b(h)m(ttp://heasarc.gsfc.nasa.go)m(v/do)s
(cs/journal/axaf7.h)m(t)q(ml)31 b(for)25 b(further)0
2278 y(description)j(of)j(the)g(AXAF)g(Data)h(Mo)s(del.)0
2438 y(The)j(\014le)f(decompression)g(co)s(de)h(w)m(ere)h(tak)m(en)g
(directly)e(from)g(the)i(gzip)e(\(GNU)i(zip\))f(program)g(dev)m(elop)s
(ed)f(b)m(y)0 2551 y(Jean-loup)29 b(Gailly)g(and)h(others.)0
2711 y(Doug)h(Mink,)f(SA)m(O,)g(pro)m(vided)f(the)i(routines)e(for)h
(con)m(v)m(erting)h(IRAF)g(format)g(images)f(in)m(to)g(FITS)g(format.)0
2871 y(In)d(addition,)g(man)m(y)h(other)g(p)s(eople)f(ha)m(v)m(e)i
(made)f(v)-5 b(aluable)27 b(con)m(tributions)f(to)j(the)f(dev)m
(elopmen)m(t)g(of)g(CFITSIO.)0 2984 y(These)i(include)e(\(with)i(ap)s
(ologies)g(to)h(others)f(that)h(ma)m(y)g(ha)m(v)m(e)h(inadv)m(erten)m
(tly)e(b)s(een)f(omitted\):)0 3144 y(Stev)m(e)g(Allen,)e(Carl)g(Ak)m
(erlof,)h(Keith)f(Arnaud,)h(Morten)g(Krabb)s(e)e(Barfo)s(ed,)j(Ken)m(t)
f(Blac)m(kburn,)g(G)g(Bo)s(dammer,)0 3257 y(Romk)m(e)h(Bon)m(tek)m(o)s
(e,)i(Lucio)c(Chiapp)s(etti,)f(Keith)h(Costorf,)h(Robin)f(Corb)s(et,)h
(John)e(Da)m(vis,)j(Ric)m(hard)e(Fink,)h(Ning)0 3370
y(Gan,)h(Emily)c(Greene,)k(Jo)s(e)f(Harrington,)g(Cheng)f(Ho,)i(Phil)c
(Ho)s(dge,)k(Jim)e(Ingham,)h(Y)-8 b(oshitak)j(a)28 b(Ishisaki,)e(Diab)0
3483 y(Jerius,)k(Mark)i(Levine,)f(T)-8 b(o)s(dd)30 b(Karak)-5
b(askian,)31 b(Edw)m(ard)g(King,)f(Scott)j(Ko)s(c)m(h,)e(Claire)f
(Larkin,)g(Rob)i(Managan,)0 3596 y(Eric)37 b(Mandel,)i(John)e(Matto)m
(x,)43 b(Carsten)37 b(Mey)m(er,)42 b(Emi)36 b(Miy)m(ata,)42
b(Stefan)c(Mo)s(c)m(hnac)m(ki,)i(Mik)m(e)f(Noble,)g(Oliv)m(er)0
3709 y(Ob)s(erdorf,)d(Cliv)m(e)g(P)m(age,)k(Arvind)34
b(P)m(armar,)k(Je\013)f(P)m(edelt)m(y)-8 b(,)39 b(Tim)c(P)m(earson,)k
(Maren)e(Purv)m(es,)h(Scott)f(Randall,)0 3822 y(Chris)c(Rogers,)k
(Arnold)d(Rots,)j(Barry)f(Sc)m(hlesinger,)f(Robin)f(Stebbins,)g(Andrew)
g(Szymk)m(o)m(wiak,)j(Allyn)d(T)-8 b(en-)0 3934 y(nan)m(t,)31
b(P)m(eter)g(T)-8 b(eub)s(en,)30 b(James)g(Theiler,)f(Doug)i(T)-8
b(o)s(dy)g(,)31 b(Shiro)d(Ueno,)k(Stev)m(e)f(W)-8 b(alton,)32
b(Arc)m(hie)e(W)-8 b(arno)s(c)m(k,)32 b(Alan)0 4047 y(W)-8
b(atson,)32 b(Dan)f(Whipple,)d(Wim)i(Wimmers,)g(P)m(eter)h(Y)-8
b(oung,)31 b(Jianjun)d(Xu,)i(and)g(Nelson)g(Zarate.)p
eop
%%Page: 12 18
12 17 bop 0 299 a Fi(12)1851 b Fg(CHAPTER)30 b(2.)111
b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)p eop
%%Page: 13 19
13 18 bop 0 1225 a Ff(Chapter)65 b(3)0 1687 y Fl(A)78
b(FITS)f(Primer)0 2180 y Fi(This)22 b(section)j(giv)m(es)f(a)h(brief)d
(o)m(v)m(erview)j(of)f(the)h(structure)e(of)i(FITS)e(\014les.)37
b(Users)24 b(should)f(refer)g(to)i(the)g(do)s(cumen-)0
2293 y(tation)i(a)m(v)-5 b(ailable)27 b(from)g(the)g(NOST,)f(as)i
(describ)s(ed)d(in)h(the)h(in)m(tro)s(duction,)f(for)h(more)g(detailed)
g(information)e(on)0 2406 y(FITS)30 b(formats.)0 2566
y(FITS)37 b(w)m(as)g(\014rst)g(dev)m(elop)s(ed)g(in)f(the)h(late)h
(1970's)h(as)f(a)f(standard)g(data)h(in)m(terc)m(hange)g(format)g(b)s
(et)m(w)m(een)g(v)-5 b(ar-)0 2679 y(ious)37 b(astronomical)g(observ)-5
b(atories.)63 b(Since)36 b(then)h(FITS)g(has)h(b)s(ecome)g(the)g
(defacto)g(standard)f(data)i(format)0 2791 y(supp)s(orted)29
b(b)m(y)h(most)h(astronomical)f(data)h(analysis)e(soft)m(w)m(are)i(pac)
m(k)-5 b(ages.)0 2952 y(A)34 b(FITS)f(\014le)f(consists)h(of)h(one)g
(or)g(more)g(Header)g(+)f(Data)i(Units)e(\(HDUs\),)j(where)d(the)h
(\014rst)f(HDU)h(is)f(called)0 3065 y(the)k(`Primary)e(HDU',)j(or)f
(`Primary)e(Arra)m(y'.)60 b(The)36 b(primary)f(arra)m(y)i(con)m(tains)g
(an)f(N-dimensional)f(arra)m(y)i(of)0 3177 y(pixels,)28
b(suc)m(h)g(as)h(a)h(1-D)g(sp)s(ectrum,)e(a)h(2-D)h(image,)g(or)f(a)g
(3-D)h(data)g(cub)s(e.)39 b(Fiv)m(e)30 b(di\013eren)m(t)e(primary)f
(datat)m(yp)s(es)0 3290 y(are)f(supp)s(orted:)37 b(Unsigned)24
b(8-bit)i(b)m(ytes,)h(16)g(and)e(32-bit)h(signed)e(in)m(tegers,)j(and)f
(32)g(and)f(64-bit)h(\015oating)g(p)s(oin)m(t)0 3403
y(reals.)40 b(FITS)29 b(also)h(has)g(a)g(con)m(v)m(en)m(tion)i(for)d
(storing)h(16)h(and)e(32-bit)h(unsigned)e(in)m(tegers)j(\(see)g(the)f
(later)g(section)0 3516 y(en)m(titled)d(`Unsigned)g(In)m(tegers')i(for)
e(more)h(details\).)39 b(The)27 b(primary)f(HDU)j(ma)m(y)f(also)g
(consist)f(of)h(only)f(a)h(header)0 3629 y(with)h(a)i(n)m(ull)d(arra)m
(y)j(con)m(taining)f(no)g(data)h(pixels.)0 3789 y(An)m(y)i(n)m(um)m(b)s
(er)e(of)h(additional)f(HDUs)i(ma)m(y)g(follo)m(w)f(the)g(primary)f
(arra)m(y;)j(these)f(additional)e(HDUs)i(are)g(called)0
3902 y(FITS)d(`extensions'.)40 b(There)30 b(are)h(curren)m(tly)e(3)i(t)
m(yp)s(es)g(of)f(extensions)g(de\014ned)f(b)m(y)h(the)h(FITS)f
(standard:)136 4171 y Fc(\017)46 b Fi(Image)31 b(Extension)f(-)h(a)f
(N-dimensional)e(arra)m(y)j(of)g(pixels,)e(lik)m(e)g(in)g(a)i(primary)d
(arra)m(y)136 4368 y Fc(\017)46 b Fi(ASCI)s(I)29 b(T)-8
b(able)30 b(Extension)g(-)g(ro)m(ws)h(and)e(columns)g(of)i(data)g(in)e
(ASCI)s(I)g(c)m(haracter)j(format)136 4564 y Fc(\017)46
b Fi(Binary)30 b(T)-8 b(able)30 b(Extension)f(-)i(ro)m(ws)f(and)g
(columns)f(of)i(data)g(in)e(binary)f(represen)m(tation)0
4833 y(In)33 b(eac)m(h)i(case)g(the)f(HDU)h(consists)f(of)g(an)g(ASCI)s
(I)e(Header)i(Unit)g(follo)m(w)m(ed)f(b)m(y)h(an)g(optional)f(Data)i
(Unit.)51 b(F)-8 b(or)0 4946 y(historical)34 b(reasons,)j(eac)m(h)f
(Header)g(or)g(Data)h(unit)d(m)m(ust)h(b)s(e)g(an)g(exact)i(m)m
(ultiple)c(of)j(2880)h(8-bit)e(b)m(ytes)h(long.)0 5059
y(An)m(y)30 b(un)m(used)g(space)g(is)g(padded)f(with)g(\014ll)f(c)m
(haracters)k(\(ASCI)s(I)d(blanks)g(or)i(zeros\).)0 5219
y(Eac)m(h)i(Header)f(Unit)g(consists)g(of)g(an)m(y)g(n)m(um)m(b)s(er)f
(of)i(80-c)m(haracter)i(k)m(eyw)m(ord)d(records)g(or)g(`card)h(images')
f(whic)m(h)0 5332 y(ha)m(v)m(e)g(the)e(general)h(form:)95
5601 y Fe(KEYNAME)46 b(=)i(value)e(/)i(comment)d(string)95
5714 y(NULLKEY)h(=)334 b(/)48 b(comment:)d(This)i(keyword)f(has)g(no)i
(value)1905 5942 y Fi(13)p eop
%%Page: 14 20
14 19 bop 0 299 a Fi(14)2398 b Fg(CHAPTER)30 b(3.)112
b(A)30 b(FITS)g(PRIMER)0 555 y Fi(The)35 b(k)m(eyw)m(ord)i(names)f(ma)m
(y)g(b)s(e)g(up)f(to)h(8)h(c)m(haracters)g(long)f(and)f(can)h(only)g
(con)m(tain)g(upp)s(ercase)f(letters,)j(the)0 668 y(digits)23
b(0-9,)k(the)e(h)m(yphen,)g(and)f(the)h(underscore)e(c)m(haracter.)41
b(The)24 b(k)m(eyw)m(ord)h(name)g(is)e(\(usually\))g(follo)m(w)m(ed)i
(b)m(y)f(an)0 781 y(equals)k(sign)g(and)g(a)g(space)i(c)m(haracter)g
(\(=)e(\))h(in)e(columns)h(9)h(-)f(10)i(of)f(the)f(record,)h(follo)m(w)
m(ed)g(b)m(y)f(the)h(v)-5 b(alue)28 b(of)h(the)0 894
y(k)m(eyw)m(ord)34 b(whic)m(h)f(ma)m(y)h(b)s(e)f(either)g(an)h(in)m
(teger,)h(a)f(\015oating)f(p)s(oin)m(t)g(n)m(um)m(b)s(er,)h(a)g(c)m
(haracter)h(string)d(\(enclosed)i(in)0 1007 y(single)26
b(quotes\),)k(or)e(a)g(b)s(o)s(olean)f(v)-5 b(alue)27
b(\(the)h(letter)g(T)g(or)f(F\).)i(A)f(k)m(eyw)m(ord)g(ma)m(y)h(also)e
(ha)m(v)m(e)i(a)g(n)m(ull)c(or)j(unde\014ned)0 1120 y(v)-5
b(alue)30 b(if)f(there)i(is)e(no)h(sp)s(eci\014ed)f(v)-5
b(alue)30 b(string,)g(as)g(in)f(the)i(second)f(example.)0
1280 y(The)42 b(last)g(k)m(eyw)m(ord)h(in)e(the)i(header)f(is)f(alw)m
(a)m(ys)i(the)g(`END')g(k)m(eyw)m(ord)g(whic)m(h)e(has)h(no)h(v)-5
b(alue)41 b(or)i(commen)m(t)0 1393 y(\014elds.)c(There)30
b(are)h(man)m(y)f(rules)f(go)m(v)m(erning)i(the)f(exact)i(format)f(of)f
(a)h(k)m(eyw)m(ord)f(record)h(\(see)g(the)f(NOST)g(FITS)0
1506 y(Standard\))h(so)h(it)f(is)f(b)s(etter)i(to)g(rely)f(on)g
(standard)g(in)m(terface)h(soft)m(w)m(are)h(lik)m(e)e(FITSIO)f(to)j
(correctly)f(construct)0 1619 y(or)e(to)h(parse)g(the)f(k)m(eyw)m(ord)h
(records)f(rather)g(than)h(try)f(to)h(deal)f(directly)f(with)g(the)h
(ra)m(w)h(FITS)f(formats.)0 1779 y(Eac)m(h)37 b(Header)g(Unit)e(b)s
(egins)g(with)g(a)h(series)g(of)g(required)f(k)m(eyw)m(ords)h(whic)m(h)
f(dep)s(end)g(on)h(the)g(t)m(yp)s(e)h(of)f(HDU.)0 1892
y(These)31 b(required)f(k)m(eyw)m(ords)i(sp)s(ecify)f(the)g(size)h(and)
f(format)h(of)g(the)g(follo)m(wing)e(Data)j(Unit.)44
b(The)31 b(header)g(ma)m(y)0 2005 y(con)m(tain)g(other)g(optional)e(k)m
(eyw)m(ords)i(to)h(describ)s(e)d(other)h(asp)s(ects)h(of)g(the)g(data,)
g(suc)m(h)g(as)g(the)f(units)f(or)i(scaling)0 2118 y(v)-5
b(alues.)43 b(Other)31 b(COMMENT)g(or)g(HISTOR)-8 b(Y)30
b(k)m(eyw)m(ords)i(are)g(also)f(frequen)m(tly)g(added)f(to)i(further)e
(do)s(cumen)m(t)0 2230 y(the)h(data)g(\014le.)0 2391
y(The)36 b(optional)f(Data)j(Unit)e(immediately)e(follo)m(ws)i(the)g
(last)g(2880-b)m(yte)j(blo)s(c)m(k)d(in)f(the)h(Header)h(Unit.)58
b(Some)0 2503 y(HDUs)31 b(do)f(not)h(ha)m(v)m(e)g(a)g(Data)h(Unit)e
(and)g(only)f(consist)h(of)h(the)f(Header)h(Unit.)0 2664
y(If)24 b(there)i(is)e(more)h(than)f(one)h(HDU)h(in)e(the)h(FITS)f
(\014le,)h(then)g(the)g(Header)h(Unit)e(of)h(the)g(next)g(HDU)h
(immediately)0 2777 y(follo)m(ws)e(the)g(last)h(2880-b)m(yte)i(blo)s(c)
m(k)d(of)h(the)f(previous)f(Data)k(Unit)c(\(or)i(Header)g(Unit)f(if)f
(there)i(is)f(no)g(Data)i(Unit\).)0 2937 y(The)k(main)f(required)g(k)m
(eyw)m(ords)h(in)f(FITS)h(primary)f(arra)m(ys)h(or)h(image)f
(extensions)g(are:)136 3172 y Fc(\017)46 b Fi(BITPIX)25
b({)h(de\014nes)f(the)g(datat)m(yp)s(e)i(of)e(the)h(arra)m(y:)39
b(8,)27 b(16,)g(32,)h(-32,)g(-64)e(for)f(unsigned)f(8{bit)h(b)m(yte,)j
(16{bit)227 3284 y(signed)38 b(in)m(teger,)j(32{bit)e(signed)e(in)m
(teger,)k(32{bit)e(IEEE)f(\015oating)g(p)s(oin)m(t,)i(and)e(64{bit)h
(IEEE)e(double)227 3397 y(precision)29 b(\015oating)h(p)s(oin)m(t,)g
(resp)s(ectiv)m(ely)-8 b(.)136 3585 y Fc(\017)46 b Fi(NAXIS)30
b({)h(the)g(n)m(um)m(b)s(er)e(of)h(dimensions)e(in)h(the)i(arra)m(y)-8
b(,)31 b(usually)d(0,)j(1,)g(2,)g(3,)g(or)g(4.)136 3773
y Fc(\017)46 b Fi(NAXISn)30 b({)h(\(n)f(ranges)g(from)g(1)h(to)g
(NAXIS\))g(de\014nes)e(the)i(size)f(of)h(eac)m(h)g(dimension.)0
4008 y(FITS)e(tables)h(start)h(with)e(the)h(k)m(eyw)m(ord)g(XTENSION)g
(=)f(`T)-8 b(ABLE')31 b(\(for)f(ASCI)s(I)f(tables\))h(or)g(XTENSION)f
(=)0 4120 y(`BINT)-8 b(ABLE')32 b(\(for)e(binary)f(tables\))h(and)g(ha)
m(v)m(e)i(the)e(follo)m(wing)f(main)g(k)m(eyw)m(ords:)136
4355 y Fc(\017)46 b Fi(TFIELDS)30 b({)h(n)m(um)m(b)s(er)e(of)h
(\014elds)f(or)i(columns)e(in)g(the)h(table)136 4543
y Fc(\017)46 b Fi(NAXIS2)31 b({)g(n)m(um)m(b)s(er)e(of)h(ro)m(ws)h(in)e
(the)h(table)136 4731 y Fc(\017)46 b Fi(TTYPEn)29 b({)i(for)f(eac)m(h)i
(column)d(\(n)h(ranges)h(from)f(1)g(to)h(TFIELDS\))g(giv)m(es)f(the)h
(name)f(of)h(the)f(column)136 4918 y Fc(\017)46 b Fi(TF)m(ORMn)31
b({)f(the)h(datat)m(yp)s(e)g(of)g(the)f(column)136 5106
y Fc(\017)46 b Fi(TUNITn)30 b({)g(the)h(ph)m(ysical)e(units)g(of)h(the)
h(column)e(\(optional\))0 5341 y(Users)e(should)e(refer)i(to)g(the)h
(FITS)e(Supp)s(ort)f(O\016ce)i(at)h Fe(http://fits.gsfc.nasa.go)o(v)21
b Fi(for)27 b(futher)f(informa-)0 5454 y(tion)k(ab)s(out)g(the)h(FITS)e
(format)i(and)f(related)g(soft)m(w)m(are)i(pac)m(k)-5
b(ages.)p eop
%%Page: 15 21
15 20 bop 0 1225 a Ff(Chapter)65 b(4)0 1687 y Fl(Extended)77
b(File)g(Name)g(Syn)-6 b(tax)0 2216 y Fd(4.1)135 b(Ov)l(erview)0
2466 y Fi(CFITSIO)30 b(supp)s(orts)f(an)j(extended)f(syn)m(tax)h(when)f
(sp)s(ecifying)e(the)j(name)f(of)h(the)g(data)g(\014le)e(to)i(b)s(e)f
(op)s(ened)g(or)0 2579 y(created)g(that)g(includes)d(the)j(follo)m
(wing)e(features:)136 2813 y Fc(\017)46 b Fi(CFITSIO)40
b(can)i(read)f(IRAF)h(format)g(images)f(whic)m(h)f(ha)m(v)m(e)j(header)
e(\014le)g(names)g(that)h(end)f(with)f(the)227 2926 y('.imh')d
(extension,)i(as)f(w)m(ell)e(as)i(reading)e(and)h(writing)e(FITS)i
(\014les,)h(This)e(feature)i(is)e(implemen)m(ted)g(in)227
3039 y(CFITSIO)29 b(b)m(y)i(\014rst)e(con)m(v)m(erting)j(the)e(IRAF)h
(image)g(in)m(to)f(a)h(temp)s(orary)f(FITS)g(format)h(\014le)e(in)g
(memory)-8 b(,)227 3152 y(then)35 b(op)s(ening)e(the)i(FITS)f(\014le.)
53 b(An)m(y)35 b(of)g(the)g(usual)e(CFITSIO)h(routines)f(then)i(ma)m(y)
g(b)s(e)f(used)g(to)i(read)227 3265 y(the)31 b(image)f(header)g(or)h
(data.)41 b(Similarly)-8 b(,)27 b(ra)m(w)j(binary)f(data)i(arra)m(ys)f
(can)h(b)s(e)f(read)g(b)m(y)g(con)m(v)m(erting)h(them)227
3378 y(on)g(the)f(\015y)g(in)m(to)g(virtual)f(FITS)h(images.)136
3557 y Fc(\017)46 b Fi(FITS)37 b(\014les)g(on)g(the)h(in)m(ternet)g
(can)g(b)s(e)f(read)g(\(and)g(sometimes)h(written\))f(using)f(the)i
(FTP)-8 b(,)38 b(HTTP)-8 b(,)38 b(or)227 3670 y(R)m(OOT)30
b(proto)s(cols.)136 3849 y Fc(\017)46 b Fi(FITS)30 b(\014les)f(can)i(b)
s(e)f(pip)s(ed)e(b)s(et)m(w)m(een)j(tasks)f(on)h(the)f(stdin)f(and)h
(stdout)g(streams.)136 4028 y Fc(\017)46 b Fi(FITS)20
b(\014les)g(can)h(b)s(e)f(read)g(and)g(written)g(in)f(shared)h(memory)
-8 b(.)38 b(This)19 b(can)i(p)s(oten)m(tially)e(ac)m(hiev)m(e)j(m)m(uc)
m(h)f(b)s(etter)227 4141 y(data)26 b(I/O)e(p)s(erformance)g(compared)h
(to)h(reading)e(and)g(writing)e(the)j(same)h(FITS)e(\014les)f(on)i
(magnetic)g(disk.)136 4320 y Fc(\017)46 b Fi(Compressed)30
b(FITS)f(\014les)h(in)f(gzip)h(or)g(Unix)f(COMPRESS)g(format)h(can)h(b)
s(e)f(directly)f(read.)136 4499 y Fc(\017)46 b Fi(Output)28
b(FITS)h(\014les)f(can)h(b)s(e)g(written)f(directly)g(in)f(compressed)i
(gzip)g(format,)h(th)m(us)e(sa)m(ving)h(disk)f(space.)136
4678 y Fc(\017)46 b Fi(FITS)26 b(table)g(columns)f(can)i(b)s(e)f
(created,)i(mo)s(di\014ed,)e(or)g(deleted)g('on-the-\015y')h(as)g(the)g
(table)f(is)f(op)s(ened)h(b)m(y)227 4791 y(CFITSIO.)32
b(This)g(creates)j(a)e(virtual)f(FITS)h(\014le)f(con)m(taining)h(the)h
(mo)s(di\014cations)d(that)j(is)f(then)g(op)s(ened)227
4904 y(b)m(y)e(the)f(application)f(program.)136 5083
y Fc(\017)46 b Fi(T)-8 b(able)28 b(ro)m(ws)f(ma)m(y)i(b)s(e)e
(selected,)i(or)f(\014ltered)f(out,)h(on)g(the)g(\015y)f(when)g(the)h
(table)g(is)f(op)s(ened)g(b)m(y)g(CFITSIO,)227 5196 y(based)f(on)h(an)f
(arbitrary)g(user-sp)s(eci\014ed)e(expression.)38 b(Only)25
b(ro)m(ws)i(for)f(whic)m(h)f(the)i(expression)e(ev)-5
b(aluates)227 5309 y(to)31 b('TR)m(UE')g(are)g(retained)f(in)f(the)h
(cop)m(y)i(of)e(the)h(table)f(that)h(is)e(op)s(ened)h(b)m(y)g(the)h
(application)d(program.)136 5488 y Fc(\017)46 b Fi(Histogram)27
b(images)g(ma)m(y)g(b)s(e)f(created)h(on)f(the)h(\015y)f(b)m(y)g
(binning)e(the)i(v)-5 b(alues)26 b(in)f(table)i(columns,)f(resulting)
227 5601 y(in)35 b(a)h(virtual)f(N-dimensional)e(FITS)j(image.)58
b(The)35 b(application)f(program)i(then)g(only)f(sees)h(the)h(FITS)227
5714 y(image)31 b(\(in)e(the)i(primary)d(arra)m(y\))k(instead)d(of)i
(the)f(original)f(FITS)g(table.)1905 5942 y(15)p eop
%%Page: 16 22
16 21 bop 0 299 a Fi(16)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(The)43
b(latter)h(3)g(features)g(in)e(particular)g(add)h(v)m(ery)h(p)s(o)m(w)m
(erful)e(data)i(pro)s(cessing)e(capabilities)g(directly)g(in)m(to)0
668 y(CFITSIO,)29 b(and)g(hence)h(in)m(to)g(ev)m(ery)g(task)h(that)f
(uses)g(CFITSIO)e(to)j(read)f(or)g(write)f(FITS)g(\014les.)39
b(F)-8 b(or)31 b(example,)0 781 y(these)d(features)f(transform)f(a)i(v)
m(ery)f(simple)e(program)i(that)h(just)f(copies)g(an)g(input)e(FITS)h
(\014le)g(to)i(a)g(new)e(output)0 894 y(\014le)35 b(\(lik)m(e)g(the)h
(`\014tscop)m(y')h(program)f(that)g(is)f(distributed)e(with)h
(CFITSIO\))h(in)m(to)h(a)g(m)m(ultipurp)s(ose)d(FITS)i(\014le)0
1007 y(pro)s(cessing)23 b(to)s(ol.)39 b(By)25 b(app)s(ending)e(fairly)f
(simple)h(quali\014ers)g(on)m(to)i(the)g(name)g(of)g(the)g(input)e
(FITS)h(\014le,)h(the)g(user)0 1120 y(can)37 b(p)s(erform)f(quite)h
(complex)g(table)g(editing)f(op)s(erations)g(\(e.g.,)41
b(create)e(new)d(columns,)i(or)f(\014lter)g(out)g(ro)m(ws)0
1233 y(in)f(a)h(table\))g(or)g(create)h(FITS)f(images)g(b)m(y)g
(binning)c(or)k(histogramming)f(the)h(v)-5 b(alues)36
b(in)g(table)h(columns.)59 b(In)0 1346 y(addition,)31
b(these)i(functions)d(ha)m(v)m(e)k(b)s(een)d(co)s(ded)h(using)e(new)i
(state-of-the)i(art)f(algorithms)e(that)i(are,)g(in)e(some)0
1458 y(cases,)h(10)f(-)f(100)i(times)e(faster)h(than)f(previous)f
(widely)f(used)i(implemen)m(tations.)0 1619 y(Before)k(describing)d
(the)j(complete)g(syn)m(tax)g(for)f(the)h(extended)f(FITS)g(\014le)f
(names)h(in)f(the)i(next)g(section,)g(here)0 1732 y(are)d(a)g(few)f
(examples)g(of)g(FITS)g(\014le)f(names)i(that)f(giv)m(e)h(a)g(quic)m(k)
f(o)m(v)m(erview)h(of)g(the)f(allo)m(w)m(ed)g(syn)m(tax:)136
1960 y Fc(\017)46 b Fe('myfile.fits')p Fi(:)37 b(the)31
b(simplest)d(case)k(of)e(a)h(FITS)f(\014le)f(on)i(disk)d(in)i(the)g
(curren)m(t)g(directory)-8 b(.)136 2137 y Fc(\017)46
b Fe('myfile.imh')p Fi(:)37 b(op)s(ens)28 b(an)h(IRAF)g(format)g(image)
h(\014le)e(and)g(con)m(v)m(erts)i(it)f(on)g(the)g(\015y)f(in)m(to)h(a)g
(temp)s(orary)227 2250 y(FITS)h(format)h(image)f(in)f(memory)i(whic)m
(h)e(can)h(then)g(b)s(e)g(read)g(with)f(an)m(y)i(other)g(CFITSIO)e
(routine.)136 2427 y Fc(\017)46 b Fe(rawfile.dat[i512,512])p
Fi(:)35 b(op)s(ens)30 b(a)g(ra)m(w)h(binary)d(data)j(arra)m(y)g(\(a)g
(512)g(x)f(512)i(short)e(in)m(teger)g(arra)m(y)h(in)227
2540 y(this)h(case\))j(and)d(con)m(v)m(erts)j(it)d(on)h(the)g(\015y)g
(in)m(to)g(a)g(temp)s(orary)g(FITS)f(format)h(image)h(in)d(memory)i
(whic)m(h)227 2652 y(can)e(then)f(b)s(e)g(read)g(with)f(an)m(y)i(other)
f(CFITSIO)f(routine.)136 2830 y Fc(\017)46 b Fe(myfile.fits.gz)p
Fi(:)d(if)32 b(this)g(is)g(the)h(name)g(of)h(a)f(new)g(output)g
(\014le,)g(the)g('.gz')i(su\016x)d(will)e(cause)k(it)f(to)h(b)s(e)227
2942 y(compressed)c(in)f(gzip)h(format)h(when)e(it)h(is)g(written)f(to)
i(disk.)136 3120 y Fc(\017)46 b Fe('myfile.fits.gz[events,)c(2]')p
Fi(:)59 b(op)s(ens)40 b(and)f(uncompresses)g(the)i(gzipp)s(ed)d(\014le)
i(m)m(y\014le.\014ts)f(then)227 3232 y(mo)m(v)m(es)34
b(to)f(the)f(extension)g(whic)m(h)f(has)g(the)i(k)m(eyw)m(ords)f
(EXTNAME)g(=)g('EVENTS')g(and)g(EXTVER)f(=)227 3345 y(2.)136
3522 y Fc(\017)46 b Fe('-')p Fi(:)40 b(a)31 b(dash)f(\(min)m(us)f
(sign\))h(signi\014es)e(that)j(the)g(input)e(\014le)g(is)h(to)h(b)s(e)f
(read)g(from)g(the)h(stdin)e(\014le)g(stream,)227 3635
y(or)i(that)g(the)f(output)g(\014le)g(is)f(to)i(b)s(e)f(written)f(to)i
(the)g(stdout)f(stream.)136 3812 y Fc(\017)46 b Fe
('ftp://legacy.gsfc.nasa.g)o(ov/t)o(est/)o(vel)o(a.fi)o(ts')p
Fi(:)33 b(FITS)28 b(\014les)f(in)g(an)m(y)h(ftp)g(arc)m(hiv)m(e)h(site)
f(on)g(the)227 3925 y(in)m(ternet)i(ma)m(y)h(b)s(e)f(directly)f(op)s
(ened)h(with)f(read-only)h(access.)136 4102 y Fc(\017)46
b Fe('http://legacy.gsfc.nasa.)o(gov/)o(soft)o(war)o(e/te)o(st.f)o(its)
o(')p Fi(:)d(an)m(y)34 b(v)-5 b(alid)33 b(URL)h(to)h(a)f(FITS)g(\014le)
f(on)227 4215 y(the)e(W)-8 b(eb)31 b(ma)m(y)g(b)s(e)f(op)s(ened)f(with)
g(read-only)h(access.)136 4392 y Fc(\017)46 b Fe
('root://legacy.gsfc.nasa.)o(gov/)o(test)o(/ve)o(la.f)o(its')o
Fi(:)32 b(similar)21 b(to)j(ftp)f(access)i(except)g(that)f(it)f(pro-)
227 4505 y(vides)29 b(write)h(as)g(w)m(ell)f(as)i(read)f(access)h(to)g
(the)f(\014les)g(across)g(the)h(net)m(w)m(ork.)41 b(This)28
b(uses)i(the)h(ro)s(ot)f(proto)s(col)227 4618 y(dev)m(elop)s(ed)g(at)h
(CERN.)136 4795 y Fc(\017)46 b Fe('shmem://h2[events]')p
Fi(:)35 b(op)s(ens)30 b(the)g(FITS)f(\014le)h(in)f(a)h(shared)f(memory)
i(segmen)m(t)g(and)e(mo)m(v)m(es)j(to)f(the)227 4908
y(EVENTS)f(extension.)136 5085 y Fc(\017)46 b Fe('mem://')p
Fi(:)52 b(creates)39 b(a)e(scratc)m(h)i(output)d(\014le)h(in)e(core)j
(computer)f(memory)-8 b(.)62 b(The)37 b(resulting)e('\014le')i(will)227
5198 y(disapp)s(ear)24 b(when)g(the)i(program)f(exits,)h(so)g(this)e
(is)h(mainly)e(useful)h(for)h(testing)h(purp)s(oses)d(when)i(one)g(do)s
(es)227 5311 y(not)31 b(w)m(an)m(t)g(a)g(p)s(ermanen)m(t)f(cop)m(y)h
(of)f(the)h(output)f(\014le.)136 5488 y Fc(\017)46 b
Fe('myfile.fits[3;)e(Images\(10\)]')p Fi(:)49 b(op)s(ens)35
b(a)i(cop)m(y)g(of)f(the)g(image)h(con)m(tained)f(in)f(the)i(10th)f(ro)
m(w)h(of)227 5601 y(the)26 b('Images')i(column)c(in)h(the)h(binary)f
(table)g(in)g(the)h(3th)h(extension)e(of)h(the)h(FITS)e(\014le.)38
b(The)26 b(application)227 5714 y(just)k(sees)h(this)e(single)g(image)i
(as)f(the)h(primary)d(arra)m(y)-8 b(.)p eop
%%Page: 17 23
17 22 bop 0 299 a Fg(4.1.)72 b(O)m(VER)-10 b(VIEW)3086
b Fi(17)136 555 y Fc(\017)46 b Fe('myfile.fits[1:512:2,)c(1:512:2]')p
Fi(:)49 b(op)s(ens)35 b(a)h(section)g(of)f(the)h(input)e(image)i
(ranging)f(from)g(the)227 668 y(1st)26 b(to)g(the)f(512th)h(pixel)e(in)
f(X)j(and)e(Y,)i(and)e(selects)i(ev)m(ery)f(second)h(pixel)d(in)h(b)s
(oth)g(dimensions,)g(resulting)227 781 y(in)29 b(a)i(256)h(x)e(256)i
(pixel)c(image)j(in)e(this)g(case.)136 981 y Fc(\017)46
b Fe('myfile.fits[EVENTS][col)41 b(Rad)47 b(=)h(sqrt\(X**2)d(+)j
(Y**2\)]')p Fi(:)38 b(creates)30 b(and)f(op)s(ens)f(a)h(temp)s(orary)
227 1094 y(\014le)e(on)g(the)g(\015y)g(\(in)f(memory)h(or)g(on)h
(disk\))e(that)h(is)g(iden)m(tical)f(to)i(m)m(y\014le.\014ts)e(except)i
(that)g(it)f(will)e(con)m(tain)227 1207 y(a)41 b(new)f(column)f(in)h
(the)g(EVENTS)g(extension)g(called)g('Rad')h(whose)f(v)-5
b(alue)40 b(is)f(computed)i(using)e(the)227 1320 y(indicated)29
b(expresson)h(whic)m(h)f(is)h(a)g(function)f(of)i(the)g(v)-5
b(alues)29 b(in)g(the)i(X)f(and)g(Y)h(columns.)136 1520
y Fc(\017)46 b Fe('myfile.fits[EVENTS][PHA)41 b(>)48
b(5]')p Fi(:)37 b(creates)27 b(and)e(op)s(ens)g(a)h(temp)s(orary)f
(FITS)g(\014les)f(that)i(is)f(iden)m(ti-)227 1633 y(cal)k(to)h('m)m
(y\014le.\014ts')e(except)i(that)f(the)g(EVENTS)f(table)h(will)d(only)i
(con)m(tain)h(the)g(ro)m(ws)g(that)h(ha)m(v)m(e)g(v)-5
b(alues)227 1746 y(of)28 b(the)g(PHA)f(column)f(greater)j(than)e(5.)40
b(In)27 b(general,)h(an)m(y)g(arbitrary)e(b)s(o)s(olean)h(expression)f
(using)g(a)i(C)f(or)227 1859 y(F)-8 b(ortran-lik)m(e)29
b(syn)m(tax,)g(whic)m(h)e(ma)m(y)i(com)m(bine)f(AND)h(and)f(OR)f(op)s
(erators,)i(ma)m(y)g(b)s(e)f(used)f(to)i(select)g(ro)m(ws)227
1972 y(from)h(a)h(table.)136 2172 y Fc(\017)46 b Fe
('myfile.fits[EVENTS][bin)41 b(\(X,Y\)=1,2048,4]')p Fi(:)46
b(creates)37 b(a)e(temp)s(orary)g(FITS)f(primary)f(arra)m(y)227
2285 y(image)c(whic)m(h)f(is)g(computed)g(on)h(the)g(\015y)f(b)m(y)g
(binning)e(\(i.e,)k(computing)d(the)i(2-dimensional)e(histogram\))227
2398 y(of)34 b(the)f(v)-5 b(alues)33 b(in)f(the)i(X)g(and)e(Y)i
(columns)e(of)i(the)f(EVENTS)g(extension.)49 b(In)33
b(this)f(case)j(the)e(X)h(and)f(Y)227 2511 y(co)s(ordinates)g(range)h
(from)f(1)h(to)g(2048)h(and)e(the)h(image)f(pixel)f(size)h(is)g(4)g
(units)f(in)g(b)s(oth)h(dimensions,)f(so)227 2624 y(the)f(resulting)d
(image)j(is)e(512)j(x)e(512)i(pixels)d(in)g(size.)136
2824 y Fc(\017)46 b Fi(The)31 b(\014nal)f(example)i(com)m(bines)f(man)m
(y)g(of)h(these)g(feature)g(in)m(to)f(one)h(complex)f(expression)f
(\(it)i(is)e(brok)m(en)227 2937 y(in)m(to)h(sev)m(eral)f(lines)f(for)h
(clarit)m(y\):)323 3206 y Fe('ftp://legacy.gsfc.nasa)o(.gov)o(/dat)o
(a/s)o(ampl)o(e.fi)o(ts.)o(gz[E)o(VENT)o(S])370 3319
y([col)47 b(phacorr)f(=)h(pha)g(*)h(1.1)f(-)g(0.3][phacorr)e(>=)i(5.0)g
(&&)g(phacorr)f(<=)h(14.0])370 3432 y([bin)g(\(X,Y\)=32]')227
3701 y Fi(In)37 b(this)g(case,)k(CFITSIO)36 b(\(1\))j(copies)f(and)f
(uncompresses)g(the)h(FITS)f(\014le)g(from)g(the)h(ftp)f(site)h(on)g
(the)227 3814 y(legacy)f(mac)m(hine,)h(\(2\))f(mo)m(v)m(es)g(to)g(the)g
('EVENTS')f(extension,)h(\(3\))g(calculates)g(a)f(new)g(column)f
(called)227 3927 y('phacorr',)30 b(\(4\))f(selects)g(the)g(ro)m(ws)g
(in)e(the)i(table)g(that)g(ha)m(v)m(e)h(phacorr)e(in)f(the)i(range)g(5)
g(to)h(14,)g(and)e(\014nally)227 4040 y(\(5\))35 b(bins)c(the)i
(remaining)e(ro)m(ws)i(on)h(the)f(X)g(and)g(Y)g(column)f(co)s
(ordinates,)i(using)d(a)j(pixel)d(size)i(=)g(32)h(to)227
4153 y(create)d(a)f(2D)g(image.)41 b(All)28 b(this)g(pro)s(cessing)g
(is)h(completely)g(transparen)m(t)g(to)i(the)e(application)f(program,)
227 4266 y(whic)m(h)h(simply)f(sees)j(the)g(\014nal)e(2-D)i(image)g(in)
e(the)h(primary)f(arra)m(y)i(of)f(the)h(op)s(ened)f(\014le.)0
4538 y(The)c(full)f(extended)i(CFITSIO)e(FITS)h(\014le)g(name)h(can)g
(con)m(tain)g(sev)m(eral)g(di\013eren)m(t)g(comp)s(onen)m(ts)g(dep)s
(ending)d(on)0 4651 y(the)31 b(con)m(text.)42 b(These)30
b(comp)s(onen)m(ts)h(are)g(describ)s(ed)d(in)h(the)h(follo)m(wing)f
(sections:)0 4924 y Fe(When)47 b(creating)e(a)j(new)f(file:)143
5036 y(filetype://BaseFilename\(t)o(empl)o(ate)o(Name)o(\))0
5262 y(When)g(opening)e(an)j(existing)d(primary)h(array)g(or)i(image)e
(HDU:)143 5375 y(filetype://BaseFilename\(o)o(utNa)o(me\))o([HDU)o
(loca)o(tio)o(n][I)o(mage)o(Sec)o(tion)o(])0 5601 y(When)h(opening)e
(an)j(existing)d(table)i(HDU:)143 5714 y(filetype://BaseFilename\(o)o
(utNa)o(me\))o([HDU)o(loca)o(tio)o(n][c)o(olFi)o(lte)o(r][r)o(owFi)o
(lte)o(r][b)o(inSp)o(ec])p eop
%%Page: 18 24
18 23 bop 0 299 a Fi(18)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(The)41
b(\014let)m(yp)s(e,)j(BaseFilename,)h(outName,)g(HDUlo)s(cation,)g(and)
c(ImageSection)h(comp)s(onen)m(ts,)j(if)c(presen)m(t,)0
668 y(m)m(ust)30 b(b)s(e)g(giv)m(en)h(in)e(that)i(order,)g(but)f(the)g
(colFilter,)g(ro)m(wFilter,)h(and)e(binSp)s(ec)g(sp)s(eci\014ers)f(ma)m
(y)k(follo)m(w)d(in)h(an)m(y)0 781 y(order.)39 b(Regardless)28
b(of)h(the)f(order,)g(ho)m(w)m(ev)m(er,)i(the)f(colFilter)e(sp)s
(eci\014er,)g(if)g(presen)m(t,)i(will)d(b)s(e)h(pro)s(cessed)h(\014rst)
f(b)m(y)0 894 y(CFITSIO,)i(follo)m(w)m(ed)h(b)m(y)g(the)h(ro)m(wFilter)
f(sp)s(eci\014er,)f(and)g(\014nally)g(b)m(y)h(the)g(binSp)s(ec)e(sp)s
(eci\014er.)0 1221 y Fd(4.2)135 b(Filet)l(yp)t(e)0 1471
y Fi(The)37 b(t)m(yp)s(e)g(of)g(\014le)f(determines)g(the)h(medium)e
(on)i(whic)m(h)f(the)h(\014le)f(is)h(lo)s(cated)g(\(e.g.,)j(disk)c(or)h
(net)m(w)m(ork\))h(and,)0 1584 y(hence,)f(whic)m(h)d(in)m(ternal)g
(device)h(driv)m(er)f(is)g(used)g(b)m(y)h(CFITSIO)f(to)i(read)f(and/or)
g(write)f(the)h(\014le.)55 b(Curren)m(tly)0 1697 y(supp)s(orted)29
b(t)m(yp)s(es)h(are)382 1913 y Fe(file://)93 b(-)48 b(file)e(on)i
(local)e(magnetic)g(disk)g(\(default\))382 2026 y(ftp://)141
b(-)48 b(a)f(readonly)f(file)g(accessed)g(with)h(the)g(anonymous)e(FTP)
i(protocol.)907 2139 y(It)g(also)g(supports)93 b
(ftp://username:password@)o(host)o(nam)o(e/..)o(.)907
2252 y(for)47 b(accessing)e(password-protected)e(ftp)k(sites.)382
2365 y(http://)93 b(-)48 b(a)f(readonly)f(file)g(accessed)g(with)h(the)
g(HTTP)f(protocol.)93 b(It)907 2478 y(does)46 b(not)95
b(support)46 b(username:password)d(like)k(the)g(ftp)f(driver.)907
2591 y(Proxy)g(HTTP)h(servers)f(are)h(supported)e(using)h(the)h
(http_proxy)907 2704 y(environment)e(variable.)382 2817
y(root://)93 b(-)48 b(uses)e(the)h(CERN)g(root)g(protocol)e(for)i
(writing)f(as)h(well)g(as)907 2930 y(reading)f(files)g(over)h(the)g
(network.)382 3042 y(shmem://)e(-)j(opens)e(or)h(creates)f(a)i(file)e
(which)h(persists)e(in)i(the)g(computer's)907 3155 y(shared)f(memory.)
382 3268 y(mem://)141 b(-)48 b(opens)e(a)i(temporary)d(file)i(in)g
(core)f(memory.)94 b(The)47 b(file)907 3381 y(disappears)e(when)h(the)h
(program)f(exits)h(so)g(this)f(is)i(mainly)907 3494 y(useful)e(for)h
(test)f(purposes)g(when)h(a)g(permanent)e(output)h(file)907
3607 y(is)h(not)g(desired.)0 3824 y Fi(If)35 b(the)h(\014let)m(yp)s(e)f
(is)f(not)i(sp)s(eci\014ed,)g(then)f(t)m(yp)s(e)h(\014le://)g(is)e
(assumed.)56 b(The)35 b(double)f(slashes)h('//')i(are)f(optional)0
3937 y(and)30 b(ma)m(y)h(b)s(e)e(omitted)i(in)e(most)i(cases.)0
4220 y Fb(4.2.1)112 b(Notes)37 b(ab)s(out)i(HTTP)d(pro)m(xy)i(serv)m
(ers)0 4439 y Fi(A)32 b(pro)m(xy)g(HTTP)f(serv)m(er)h(ma)m(y)h(b)s(e)e
(used)g(b)m(y)h(de\014ning)e(the)i(address)f(\(URL\))i(and)e(p)s(ort)g
(n)m(um)m(b)s(er)g(of)h(the)g(pro)m(xy)0 4552 y(serv)m(er)f(with)e(the)
h(h)m(ttp)p 801 4552 28 4 v 33 w(pro)m(xy)g(en)m(vironmen)m(t)g(v)-5
b(ariable.)40 b(F)-8 b(or)31 b(example)191 4769 y Fe(setenv)46
b(http_proxy)f(http://heasarc.gsfc.nasa)o(.gov)o(:312)o(8)0
4985 y Fi(will)35 b(cause)j(CFITSIO)f(to)h(use)g(p)s(ort)f(3128)i(on)f
(the)g(heasarc)g(pro)m(xy)g(serv)m(er)g(whenev)m(er)g(reading)f(a)h
(FITS)f(\014le)0 5098 y(with)29 b(HTTP)-8 b(.)0 5382
y Fb(4.2.2)112 b(Notes)37 b(ab)s(out)i(the)e(ro)s(ot)g(\014let)m(yp)s
(e)0 5601 y Fi(The)20 b(original)g(ro)s(otd)g(serv)m(er)h(can)h(b)s(e)e
(obtained)g(from:)36 b Fe(ftp://root.cern.ch/root)o(/roo)o(td.t)o(ar.)o
(gz)15 b Fi(but,)22 b(for)0 5714 y(it)32 b(to)i(w)m(ork)f(correctly)g
(with)e(CFITSIO)h(one)h(has)f(to)i(use)e(a)i(mo)s(di\014ed)c(v)m
(ersion)j(whic)m(h)e(supp)s(orts)g(a)i(command)p eop
%%Page: 19 25
19 24 bop 0 299 a Fg(4.2.)72 b(FILETYPE)3128 b Fi(19)0
555 y(to)41 b(return)d(the)j(length)e(of)h(the)g(\014le.)69
b(This)38 b(mo)s(di\014ed)f(v)m(ersion)j(is)f(a)m(v)-5
b(ailable)39 b(in)g(ro)s(otd)g(sub)s(directory)f(in)h(the)0
668 y(CFITSIO)29 b(ftp)h(area)h(at)286 928 y Fe
(ftp://legacy.gsfc.nasa.gov)o(/so)o(ftwa)o(re/f)o(its)o(io/c)o(/roo)o
(t/r)o(ootd)o(.tar)o(.gz)o(.)0 1187 y Fi(This)i(small)f(serv)m(er)j(is)
f(started)g(either)g(b)m(y)h(inetd)e(when)g(a)i(clien)m(t)f(requests)g
(a)h(connection)g(to)g(a)f(ro)s(otd)h(serv)m(er)0 1300
y(or)30 b(b)m(y)g(hand)f(\(i.e.)41 b(from)30 b(the)g(command)g(line\).)
40 b(The)29 b(ro)s(otd)h(serv)m(er)h(w)m(orks)f(with)f(the)h(R)m(OOT)g
(TNetFile)g(class.)0 1413 y(It)g(allo)m(ws)e(remote)j(access)f(to)h(R)m
(OOT)e(database)h(\014les)e(in)g(either)h(read)h(or)f(write)g(mo)s(de.)
40 b(By)30 b(default)e(TNetFile)0 1526 y(assumes)38 b(p)s(ort)g(432)h
(\(whic)m(h)e(requires)g(ro)s(otd)h(to)h(b)s(e)f(started)h(as)f(ro)s
(ot\).)65 b(T)-8 b(o)39 b(run)e(ro)s(otd)h(via)g(inetd)f(add)h(the)0
1639 y(follo)m(wing)29 b(line)g(to)i(/etc/services:)95
1898 y Fe(rootd)238 b(432/tcp)0 2158 y Fi(and)30 b(to)h
(/etc/inetd.conf,)h(add)e(the)g(follo)m(wing)f(line:)95
2417 y Fe(rootd)47 b(stream)f(tcp)h(nowait)f(root)h
(/user/rdm/root/bin/root)o(d)42 b(rootd)k(-i)0 2677 y
Fi(F)-8 b(orce)34 b(inetd)d(to)j(reread)e(its)g(conf)g(\014le)g(with)f
("kill)f(-HUP)j(<pid)e(inetd>".)46 b(Y)-8 b(ou)33 b(can)g(also)f(start)
h(ro)s(otd)g(b)m(y)f(hand)0 2790 y(running)i(directly)h(under)f(y)m
(our)j(priv)-5 b(ate)36 b(accoun)m(t)h(\(no)g(ro)s(ot)g(system)f
(privileges)e(needed\).)59 b(F)-8 b(or)37 b(example)f(to)0
2903 y(start)f(ro)s(otd)e(listening)f(on)i(p)s(ort)f(5151)j(just)d(t)m
(yp)s(e:)49 b Fe(rootd)d(-p)h(5151)33 b Fi(Notice:)49
b(no)34 b(&)f(is)g(needed.)51 b(Ro)s(otd)35 b(will)0
3016 y(go)c(in)m(to)g(bac)m(kground)f(b)m(y)g(itself.)95
3275 y Fe(Rootd)47 b(arguments:)191 3388 y(-i)763 b(says)47
b(we)g(were)f(started)g(by)h(inetd)191 3501 y(-p)g(port#)476
b(specifies)45 b(a)j(different)d(port)i(to)g(listen)f(on)191
3614 y(-d)h(level)476 b(level)46 b(of)i(debug)e(info)h(written)e(to)j
(syslog)1050 3727 y(0)f(=)h(no)f(debug)f(\(default\))1050
3840 y(1)h(=)h(minimum)1050 3953 y(2)f(=)h(medium)1050
4066 y(3)f(=)h(maximum)0 4325 y Fi(Ro)s(otd)29 b(can)f(also)g(b)s(e)g
(con\014gured)g(for)g(anon)m(ymous)g(usage)h(\(lik)m(e)f(anon)m(ymous)g
(ftp\).)40 b(T)-8 b(o)29 b(setup)f(ro)s(otd)g(to)h(accept)0
4438 y(anon)m(ymous)h(logins)f(do)i(the)f(follo)m(wing)f(\(while)g(b)s
(eing)g(logged)i(in)e(as)h(ro)s(ot\):)143 4698 y Fe(-)48
b(Add)f(the)f(following)g(line)g(to)i(/etc/passwd:)239
4924 y(rootd:*:71:72:Anonymous)41 b(rootd:/var/spool/rootd:/b)o(in/)o
(fals)o(e)239 5149 y(where)46 b(you)h(may)g(modify)f(the)h(uid,)f(gid)h
(\(71,)g(72\))g(and)g(the)g(home)f(directory)239 5262
y(to)h(suite)f(your)h(system.)143 5488 y(-)h(Add)f(the)f(following)g
(line)g(to)i(/etc/group:)239 5714 y(rootd:*:72:rootd)p
eop
%%Page: 20 26
20 25 bop 0 299 a Fi(20)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)239 668 y
Fe(where)46 b(the)h(gid)g(must)f(match)h(the)g(gid)g(in)g(/etc/passwd.)
143 894 y(-)h(Create)e(the)h(directories:)239 1120 y(mkdir)f
(/var/spool/rootd)239 1233 y(mkdir)g(/var/spool/rootd/tmp)239
1346 y(chmod)g(777)h(/var/spool/rootd/tmp)239 1571 y(Where)f
(/var/spool/rootd)d(must)k(match)f(the)h(rootd)g(home)f(directory)g(as)
239 1684 y(specified)f(in)i(the)g(rootd)f(/etc/passwd)f(entry.)143
1910 y(-)j(To)f(make)f(writeable)g(directories)e(for)j(anonymous)f(do,)
h(for)f(example:)239 2136 y(mkdir)g(/var/spool/rootd/pub)239
2249 y(chown)g(rootd:rootd)f(/var/spool/rootd/pub)0 2492
y Fi(That's)d(all.)74 b(Sev)m(eral)42 b(additional)e(remarks:)64
b(y)m(ou)42 b(can)g(login)f(to)i(an)f(anon)m(ymous)f(serv)m(er)i
(either)e(with)g(the)0 2605 y(names)31 b("anon)m(ymous")h(or)f("ro)s
(otd".)43 b(The)31 b(passw)m(ord)f(should)f(b)s(e)i(of)g(t)m(yp)s(e)g
(user@host.do.main.)42 b(Only)29 b(the)i(@)0 2718 y(is)d(enforced)g
(for)h(the)f(time)h(b)s(eing.)38 b(In)28 b(anon)m(ymous)h(mo)s(de)f
(the)g(top)h(of)g(the)g(\014le)e(tree)j(is)d(set)i(to)h(the)e(ro)s(otd)
h(home)0 2831 y(directory)-8 b(,)38 b(therefore)f(only)e(\014les)h(b)s
(elo)m(w)f(the)i(home)f(directory)g(can)g(b)s(e)g(accessed.)60
b(Anon)m(ymous)36 b(mo)s(de)g(only)0 2944 y(w)m(orks)30
b(when)g(the)g(serv)m(er)h(is)e(started)i(via)f(inetd.)0
3232 y Fb(4.2.3)112 b(Notes)37 b(ab)s(out)i(the)e(shmem)g(\014let)m(yp)
s(e:)0 3451 y Fi(Shared)d(memory)h(\014les)f(are)h(curren)m(tly)f(supp)
s(orted)f(on)i(most)h(Unix)e(platforms,)h(where)g(the)g(shared)f
(memory)0 3564 y(segmen)m(ts)d(are)g(managed)g(b)m(y)f(the)g(op)s
(erating)g(system)h(k)m(ernel)e(and)h(`liv)m(e')g(indep)s(enden)m(tly)d
(of)k(pro)s(cesses.)40 b(They)0 3677 y(are)34 b(not)g(deleted)g(\(b)m
(y)g(default\))f(when)g(the)h(pro)s(cess)f(whic)m(h)g(created)i(them)f
(terminates,)g(although)g(they)g(will)0 3790 y(disapp)s(ear)d(if)h(the)
i(system)f(is)f(reb)s(o)s(oted.)49 b(Applications)31
b(can)j(create)h(shared)d(memory)h(\014les)f(in)g(CFITSIO)g(b)m(y)0
3903 y(calling:)143 4146 y Fe(fit_create_file\(&fitsfile)o(ptr,)41
b("shmem://h2",)j(&status\);)0 4389 y Fi(where)22 b(the)g(ro)s(ot)h
(`\014le')f(names)g(are)g(curren)m(tly)g(restricted)g(to)h(b)s(e)e
('h0',)k('h1',)f('h2',)h('h3',)f(etc.,)i(up)21 b(to)i(a)g(maxim)m(umn)0
4502 y(n)m(um)m(b)s(er)d(de\014ned)f(b)m(y)i(the)g(the)g(v)-5
b(alue)21 b(of)g(SHARED)p 1746 4502 28 4 v 33 w(MAXSEG)g(\(equal)g(to)g
(16)h(b)m(y)f(default\).)37 b(This)19 b(is)h(a)h(protot)m(yp)s(e)0
4615 y(implemen)m(tation)27 b(of)i(the)g(shared)f(memory)g(in)m
(terface)h(and)f(a)h(more)g(robust)f(in)m(terface,)i(whic)m(h)d(will)f
(ha)m(v)m(e)k(few)m(er)0 4728 y(restrictions)f(on)h(the)h(n)m(um)m(b)s
(er)e(of)i(\014les)e(and)h(on)g(their)f(names,)i(ma)m(y)g(b)s(e)f(dev)m
(elop)s(ed)f(in)g(the)i(future.)0 4888 y(When)23 b(op)s(ening)g(an)g
(already)g(existing)g(FITS)g(\014le)g(in)f(shared)h(memory)h(one)g
(calls)e(the)i(usual)f(CFITSIO)f(routine:)143 5132 y
Fe(fits_open_file\(&fitsfilep)o(tr,)41 b("shmem://h7",)j(mode,)j
(&status\))0 5375 y Fi(The)26 b(\014le)g(mo)s(de)h(can)g(b)s(e)f(READ)m
(WRITE)h(or)g(READONL)-8 b(Y)28 b(just)e(as)h(with)e(disk)h(\014les.)38
b(More)28 b(than)e(one)h(pro)s(cess)0 5488 y(can)35 b(op)s(erate)g(on)f
(READONL)-8 b(Y)35 b(mo)s(de)f(\014les)g(at)h(the)f(same)h(time.)53
b(CFITSIO)33 b(supp)s(orts)f(prop)s(er)h(\014le)h(lo)s(c)m(king)0
5601 y(\(b)s(oth)27 b(in)g(READONL)-8 b(Y)29 b(and)e(READ)m(WRITE)h(mo)
s(des\),)h(so)f(calls)f(to)h(\014ts)p 2572 5601 V 33
w(op)s(en)p 2795 5601 V 32 w(\014le)f(ma)m(y)h(b)s(e)f(lo)s(c)m(k)m(ed)
i(out)f(un)m(til)0 5714 y(another)j(other)f(pro)s(cess)g(closes)h(the)f
(\014le.)p eop
%%Page: 21 27
21 26 bop 0 299 a Fg(4.3.)72 b(BASE)30 b(FILENAME)2830
b Fi(21)0 555 y(When)30 b(an)g(application)f(is)g(\014nished)f
(accessing)j(a)f(FITS)g(\014le)f(in)g(a)i(shared)e(memory)h(segmen)m
(t,)i(it)e(ma)m(y)h(close)f(it)0 668 y(\(and)k(the)g(\014le)f(will)e
(remain)h(in)h(the)h(system\))g(with)f(\014ts)p 1955
668 28 4 v 32 w(close)p 2174 668 V 33 w(\014le,)h(or)g(delete)g(it)g
(with)e(\014ts)p 3191 668 V 33 w(delete)p 3456 668 V
33 w(\014le.)50 b(Ph)m(ys-)0 781 y(ical)34 b(deletion)g(is)g(p)s(ostp)s
(oned)f(un)m(til)h(the)h(last)f(pro)s(cess)h(calls)f
(\013clos/\013delt.)54 b(\014ts)p 2801 781 V 32 w(delete)p
3065 781 V 33 w(\014le)34 b(tries)h(to)g(obtain)g(a)0
894 y(READ)m(WRITE)f(lo)s(c)m(k)f(on)g(the)g(\014le)g(to)h(b)s(e)e
(deleted,)i(th)m(us)f(it)g(can)g(b)s(e)g(blo)s(c)m(k)m(ed)g(if)f(the)i
(ob)5 b(ject)34 b(w)m(as)f(not)h(op)s(ened)0 1007 y(in)29
b(READ)m(WRITE)i(mo)s(de.)0 1167 y(A)i(shared)f(memory)h(managemen)m(t)
h(utilit)m(y)d(program)i(called)f(`smem',)h(is)f(included)e(with)i(the)
h(CFITSIO)e(dis-)0 1280 y(tribution.)37 b(It)27 b(can)g(b)s(e)f(built)f
(b)m(y)i(t)m(yping)f(`mak)m(e)i(smem';)g(then)f(t)m(yp)s(e)g(`smem)f
(-h')h(to)h(get)g(a)f(list)e(of)i(v)-5 b(alid)25 b(options.)0
1393 y(Executing)36 b(smem)g(without)f(an)m(y)i(options)f(causes)g(it)g
(to)h(list)e(all)g(the)i(shared)e(memory)i(segmen)m(ts)g(curren)m(tly)0
1506 y(residing)31 b(in)h(the)h(system)h(and)e(managed)i(b)m(y)f(the)h
(shared)e(memory)h(driv)m(er.)48 b(T)-8 b(o)34 b(get)g(a)g(list)e(of)h
(all)f(the)i(shared)0 1619 y(memory)c(ob)5 b(jects,)32
b(run)d(the)h(system)h(utilit)m(y)d(program)i(`ip)s(cs)g([-a]'.)0
1978 y Fd(4.3)135 b(Base)46 b(Filename)0 2233 y Fi(The)31
b(base)g(\014lename)g(is)f(the)i(name)f(of)h(the)f(\014le)g(optionally)
e(including)f(the)k(director/sub)s(directory)d(path,)j(and)0
2346 y(in)d(the)i(case)g(of)g(`ftp',)f(`h)m(ttp',)i(and)d(`ro)s(ot')j
(\014let)m(yp)s(es,)d(the)i(mac)m(hine)f(iden)m(ti\014er.)39
b(Examples:)191 2628 y Fe(myfile.fits)191 2741 y(!data.fits)191
2854 y(/data/myfile.fits)191 2967 y(fits.gsfc.nasa.gov/ftp/s)o(ampl)o
(eda)o(ta/m)o(yfil)o(e.f)o(its.)o(gz)0 3248 y Fi(When)29
b(creating)g(a)g(new)f(output)h(\014le)f(on)h(magnetic)g(disk)e(\(of)j
(t)m(yp)s(e)f(\014le://\))g(if)f(the)h(base)g(\014lename)f(b)s(egins)f
(with)0 3361 y(an)34 b(exclamation)h(p)s(oin)m(t)e(\(!\))54
b(then)34 b(an)m(y)g(existing)g(\014le)f(with)g(that)i(same)g(basename)
g(will)d(b)s(e)h(deleted)h(prior)f(to)0 3474 y(creating)h(the)g(new)g
(FITS)f(\014le.)50 b(Otherwise)33 b(if)g(the)h(\014le)f(to)h(b)s(e)g
(created)h(already)e(exists,)i(then)e(CFITSIO)g(will)0
3587 y(return)g(an)h(error)f(and)g(will)f(not)i(o)m(v)m(erwrite)g(the)g
(existing)f(\014le.)51 b(Note)35 b(that)g(the)f(exclamation)g(p)s(oin)m
(t,)g(')10 b(!',)36 b(is)d(a)0 3700 y(sp)s(ecial)26 b(UNIX)i(c)m
(haracter,)j(so)d(if)e(it)i(is)f(used)g(on)g(the)h(command)g(line)e
(rather)i(than)f(en)m(tered)h(at)h(a)f(task)h(prompt,)0
3813 y(it)i(m)m(ust)g(b)s(e)g(preceded)g(b)m(y)h(a)g(bac)m(kslash)f(to)
h(force)g(the)g(UNIX)g(shell)d(to)j(pass)f(it)h(v)m(erbatim)f(to)h(the)
g(application)0 3926 y(program.)0 4086 y(If)24 b(the)i(output)e(disk)g
(\014le)g(name)h(ends)f(with)f(the)i(su\016x)f('.gz',)k(then)d(CFITSIO)
e(will)f(compress)j(the)g(\014le)f(using)g(the)0 4199
y(gzip)g(compression)f(algorithm)g(b)s(efore)h(writing)e(it)i(to)h
(disk.)37 b(This)22 b(can)j(reduce)f(the)g(amoun)m(t)h(of)f(disk)f
(space)i(used)0 4312 y(b)m(y)34 b(the)h(\014le.)52 b(Note)36
b(that)f(this)f(feature)h(requires)e(that)i(the)f(uncompressed)g
(\014le)f(b)s(e)h(constructed)h(in)e(memory)0 4425 y(b)s(efore)d(it)g
(is)f(compressed)h(and)g(written)g(to)h(disk,)e(so)h(it)g(can)h(fail)e
(if)g(there)i(is)e(insu\016cien)m(t)g(a)m(v)-5 b(ailable)30
b(memory)-8 b(.)0 4585 y(An)45 b(input)f(FITS)g(\014le)h(ma)m(y)h(b)s
(e)f(compressed)g(with)g(the)g(gzip)g(or)h(Unix)e(compress)i
(algorithms,)i(in)c(whic)m(h)0 4698 y(case)38 b(CFITSIO)e(will)f
(uncompress)h(the)i(\014le)f(on)g(the)h(\015y)e(in)m(to)i(a)g(temp)s
(orary)f(\014le)f(\(in)h(memory)g(or)g(on)h(disk\).)0
4811 y(Compressed)32 b(\014les)h(ma)m(y)h(only)e(b)s(e)h(op)s(ened)f
(with)g(read-only)h(p)s(ermission.)47 b(When)33 b(sp)s(ecifying)e(the)j
(name)f(of)h(a)0 4924 y(compressed)h(FITS)g(\014le)g(it)g(is)g(not)h
(necessary)g(to)g(app)s(end)e(the)i(\014le)f(su\016x)f(\(e.g.,)39
b(`.gz')e(or)f(`.Z'\).)g(If)f(CFITSIO)0 5036 y(cannot)24
b(\014nd)e(the)h(input)e(\014le)i(name)g(without)f(the)h(su\016x,)h
(then)f(it)g(will)e(automatically)i(searc)m(h)h(for)f(a)g(compressed)0
5149 y(\014le)35 b(with)f(the)i(same)g(ro)s(ot)g(name.)57
b(In)35 b(the)h(case)h(of)f(reading)f(ftp)g(and)g(h)m(ttp)h(t)m(yp)s(e)
g(\014les,)g(CFITSIO)f(generally)0 5262 y(lo)s(oks)i(for)h(a)g
(compressed)g(v)m(ersion)f(of)h(the)g(\014le)f(\014rst,)i(b)s(efore)e
(trying)g(to)i(op)s(en)e(the)h(uncompressed)e(\014le.)63
b(By)0 5375 y(default,)36 b(CFITSIO)f(copies)g(\(and)h(uncompressed)e
(if)h(necessary\))h(the)g(ftp)f(or)h(h)m(ttp)g(FITS)f(\014le)f(in)m(to)
i(memory)0 5488 y(on)g(the)g(lo)s(cal)f(mac)m(hine)g(b)s(efore)h(op)s
(ening)e(it.)57 b(This)34 b(will)f(fail)h(if)h(the)h(lo)s(cal)f(mac)m
(hine)h(do)s(es)f(not)h(ha)m(v)m(e)h(enough)0 5601 y(memory)g(to)h
(hold)e(the)h(whole)g(FITS)f(\014le,)j(so)e(in)f(this)g(case,)41
b(the)c(output)g(\014lename)f(sp)s(eci\014er)g(\(see)i(the)g(next)0
5714 y(section\))31 b(can)g(b)s(e)e(used)h(to)h(further)e(con)m(trol)i
(ho)m(w)f(CFITSIO)f(reads)h(ftp)g(and)g(h)m(ttp)g(\014les.)p
eop
%%Page: 22 28
22 27 bop 0 299 a Fi(22)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(If)32
b(the)h(input)e(\014le)h(is)g(an)h(IRAF)g(image)g(\014le)f(\(*.imh)g
(\014le\))h(then)f(CFITSIO)f(will)g(automatically)h(con)m(v)m(ert)j(it)
d(on)0 668 y(the)27 b(\015y)g(in)m(to)g(a)h(virtual)d(FITS)h(image)i(b)
s(efore)f(it)f(is)g(op)s(ened)h(b)m(y)g(the)g(application)f(program.)39
b(IRAF)27 b(images)h(can)0 781 y(only)h(b)s(e)h(op)s(ened)g(with)f
(READONL)-8 b(Y)31 b(\014le)e(access.)0 941 y(Similarly)-8
b(,)28 b(if)i(the)h(input)e(\014le)i(is)f(a)h(ra)m(w)g(binary)e(data)j
(arra)m(y)-8 b(,)33 b(then)d(CFITSIO)g(will)e(con)m(v)m(ert)33
b(it)d(on)h(the)h(\015y)e(in)m(to)0 1054 y(a)38 b(virtual)e(FITS)i
(image)g(with)e(the)i(basic)g(set)g(of)g(required)e(header)i(k)m(eyw)m
(ords)g(b)s(efore)g(it)f(is)g(op)s(ened)g(b)m(y)h(the)0
1167 y(application)29 b(program)i(\(with)f(READONL)-8
b(Y)31 b(access\).)44 b(In)30 b(this)g(case)i(the)f(data)g(t)m(yp)s(e)g
(and)g(dimensions)d(of)j(the)0 1280 y(image)c(m)m(ust)g(b)s(e)f(sp)s
(eci\014ed)f(in)h(square)h(brac)m(k)m(ets)h(follo)m(wing)d(the)i
(\014lename)f(\(e.g.)41 b(ra)m(w\014le.dat[ib512,512]\).)h(The)0
1393 y(\014rst)30 b(c)m(haracter)i(\(case)f(insensitiv)m(e\))e
(de\014nes)h(the)g(datat)m(yp)s(e)h(of)g(the)g(arra)m(y:)239
1671 y Fe(b)429 b(8-bit)46 b(unsigned)g(byte)239 1784
y(i)381 b(16-bit)46 b(signed)g(integer)239 1897 y(u)381
b(16-bit)46 b(unsigned)g(integer)239 2010 y(j)381 b(32-bit)46
b(signed)g(integer)239 2123 y(r)h(or)g(f)143 b(32-bit)46
b(floating)g(point)239 2235 y(d)381 b(64-bit)46 b(floating)g(point)0
2514 y Fi(An)40 b(optional)f(second)h(c)m(haracter)i(sp)s(eci\014es)d
(the)i(b)m(yte)f(order)g(of)g(the)h(arra)m(y)g(v)-5 b(alues:)59
b(b)40 b(or)g(B)h(indicates)e(big)0 2626 y(endian)g(\(as)i(in)e(FITS)g
(\014les)h(and)g(the)g(nativ)m(e)h(format)f(of)h(SUN)f(UNIX)h(w)m
(orkstations)f(and)g(Mac)i(PCs\))e(and)0 2739 y(l)g(or)h(L)g(indicates)
e(little)h(endian)g(\(nativ)m(e)h(format)h(of)f(DEC)f(OSF)h(w)m
(orkstations)g(and)f(IBM)i(PCs\).)72 b(If)40 b(this)0
2852 y(c)m(haracter)32 b(is)d(omitted)i(then)f(the)g(arra)m(y)h(is)f
(assumed)f(to)i(ha)m(v)m(e)h(the)f(nativ)m(e)f(b)m(yte)h(order)f(of)h
(the)f(lo)s(cal)g(mac)m(hine.)0 2965 y(These)f(datat)m(yp)s(e)h(c)m
(haracters)h(are)e(then)g(follo)m(w)m(ed)g(b)m(y)g(a)h(series)e(of)h
(one)h(or)f(more)g(in)m(teger)h(v)-5 b(alues)28 b(separated)i(b)m(y)0
3078 y(commas)h(whic)m(h)f(de\014ne)f(the)i(size)g(of)f(eac)m(h)i
(dimension)c(of)j(the)g(ra)m(w)f(arra)m(y)-8 b(.)43 b(Arra)m(ys)30
b(with)g(up)f(to)j(5)f(dimensions)0 3191 y(are)f(curren)m(tly)f(supp)s
(orted.)38 b(Finally)-8 b(,)29 b(a)h(b)m(yte)g(o\013set)g(to)h(the)e(p)
s(osition)f(of)i(the)g(\014rst)e(pixel)g(in)h(the)g(data)i(\014le)d(ma)
m(y)0 3304 y(b)s(e)e(sp)s(eci\014ed)f(b)m(y)i(separating)g(it)f(with)g
(a)h(':')39 b(from)27 b(the)g(last)f(dimension)f(v)-5
b(alue.)39 b(If)26 b(omitted,)i(it)e(is)g(assumed)g(that)0
3417 y(the)35 b(o\013set)h(=)f(0.)54 b(This)34 b(parameter)h(ma)m(y)h
(b)s(e)e(used)g(to)i(skip)d(o)m(v)m(er)j(an)m(y)g(header)e(information)
g(in)f(the)i(\014le)f(that)0 3530 y(precedes)c(the)h(binary)e(data.)41
b(F)-8 b(urther)30 b(examples:)95 3808 y Fe(raw.dat[b10000])521
b(1-dimensional)45 b(10000)h(pixel)g(byte)h(array)95
3921 y(raw.dat[rb400,400,12])233 b(3-dimensional)45 b(floating)g(point)
h(big-endian)f(array)95 4034 y(img.fits[ib512,512:2880])89
b(reads)47 b(the)g(512)g(x)g(512)g(short)f(integer)g(array)g(in)1336
4147 y(a)i(FITS)e(file,)h(skipping)e(over)i(the)g(2880)g(byte)f(header)
0 4425 y Fi(One)25 b(sp)s(ecial)e(case)j(of)f(input)e(\014le)h(is)g
(where)h(the)g(\014lename)f(=)h(`-')h(\(a)f(dash)g(or)g(min)m(us)e
(sign\))h(or)h('stdin')f(or)h('stdout',)0 4538 y(whic)m(h)c
(signi\014es)g(that)j(the)f(input)d(\014le)i(is)g(to)i(b)s(e)e(read)g
(from)h(the)g(stdin)e(stream,)k(or)e(written)e(to)j(the)f(stdout)g
(stream)0 4650 y(if)33 b(a)h(new)g(output)f(\014le)g(is)g(b)s(eing)g
(created.)52 b(In)33 b(the)h(case)h(of)f(reading)g(from)f(stdin,)g
(CFITSIO)g(\014rst)g(copies)h(the)0 4763 y(whole)g(stream)i(in)m(to)f
(a)g(temp)s(orary)g(FITS)f(\014le)h(\(in)f(memory)h(or)g(on)g(disk\),)g
(and)g(subsequen)m(t)f(reading)g(of)i(the)0 4876 y(FITS)c(\014le)g(o)s
(ccurs)h(in)e(this)h(cop)m(y)-8 b(.)49 b(When)33 b(writing)e(to)i
(stdout,)h(CFITSIO)d(\014rst)h(constructs)h(the)g(whole)f(\014le)g(in)0
4989 y(memory)i(\(since)h(random)e(access)j(is)d(required\),)i(then)f
(\015ushes)f(it)h(out)h(to)g(the)f(stdout)h(stream)g(when)e(the)i
(\014le)0 5102 y(is)29 b(closed.)41 b(In)29 b(addition,)g(if)g(the)h
(output)g(\014lename)f(=)h('-.gz')i(or)e('stdout.gz')h(then)f(it)g
(will)d(b)s(e)j(gzip)f(compressed)0 5215 y(b)s(efore)h(b)s(eing)f
(written)g(to)i(stdout.)0 5375 y(This)24 b(abilit)m(y)h(to)h(read)g
(and)f(write)g(on)h(the)g(stdin)f(and)g(stdout)h(steams)g(allo)m(ws)g
(FITS)f(\014les)g(to)h(b)s(e)g(pip)s(ed)d(b)s(et)m(w)m(een)0
5488 y(tasks)42 b(in)e(memory)h(rather)g(than)h(ha)m(ving)f(to)h
(create)h(temp)s(orary)e(in)m(termediate)g(FITS)f(\014les)h(on)g(disk.)
72 b(F)-8 b(or)0 5601 y(example)27 b(if)e(task1)j(creates)h(an)e
(output)f(FITS)g(\014le,)h(and)g(task2)g(reads)g(an)g(input)e(FITS)h
(\014le,)h(the)g(FITS)f(\014le)g(ma)m(y)0 5714 y(b)s(e)k(pip)s(ed)e(b)s
(et)m(w)m(een)j(the)f(2)h(tasks)g(b)m(y)f(sp)s(ecifying)p
eop
%%Page: 23 29
23 28 bop 0 299 a Fg(4.4.)72 b(OUTPUT)30 b(FILE)g(NAME)h(WHEN)g
(OPENING)f(AN)h(EXISTING)e(FILE)967 b Fi(23)143 555 y
Fe(task1)47 b(-)g(|)g(task2)g(-)0 793 y Fi(where)30 b(the)h(v)m
(ertical)g(bar)g(is)e(the)i(Unix)f(piping)e(sym)m(b)s(ol.)41
b(This)29 b(assumes)h(that)i(the)f(2)g(tasks)g(read)g(the)g(name)g(of)0
906 y(the)g(FITS)e(\014le)h(o\013)g(of)h(the)g(command)f(line.)0
1236 y Fd(4.4)135 b(Output)45 b(File)g(Name)h(when)f(Op)t(ening)g(an)g
(Existing)h(File)0 1486 y Fi(An)36 b(optional)g(output)g(\014lename)g
(ma)m(y)i(b)s(e)e(sp)s(eci\014ed)f(in)g(paren)m(theses)i(immediately)e
(follo)m(wing)g(the)i(base)g(\014le)0 1599 y(name)28
b(to)h(b)s(e)f(op)s(ened.)39 b(This)27 b(is)g(mainly)f(useful)h(in)g
(those)h(cases)i(where)d(CFITSIO)g(creates)j(a)e(temp)s(orary)g(cop)m
(y)0 1712 y(of)i(the)f(input)f(FITS)g(\014le)h(b)s(efore)g(it)g(is)f
(op)s(ened)h(and)f(passed)h(to)h(the)g(application)e(program.)40
b(This)27 b(happ)s(ens)h(b)m(y)0 1825 y(default)h(when)h(op)s(ening)f
(a)h(net)m(w)m(ork)h(FTP)g(or)f(HTTP-t)m(yp)s(e)g(\014le,)g(when)f
(reading)g(a)i(compressed)f(FITS)g(\014le)f(on)0 1938
y(a)36 b(lo)s(cal)f(disk,)h(when)f(reading)g(from)h(the)g(stdin)e
(stream,)k(or)d(when)g(a)i(column)d(\014lter,)j(ro)m(w)f(\014lter,)g
(or)g(binning)0 2051 y(sp)s(eci\014er)28 b(is)g(included)f(as)j(part)f
(of)g(the)h(input)e(\014le)g(sp)s(eci\014cation.)39 b(By)30
b(default)f(this)f(temp)s(orary)h(\014le)f(is)h(created)0
2164 y(in)g(memory)-8 b(.)41 b(If)29 b(there)h(is)f(not)h(enough)g
(memory)g(to)h(create)g(the)g(\014le)e(cop)m(y)-8 b(,)31
b(then)f(CFITSIO)e(will)f(exit)j(with)f(an)0 2277 y(error.)45
b(In)32 b(these)g(cases)h(one)g(can)f(force)h(a)f(p)s(ermanen)m(t)g
(\014le)f(to)i(b)s(e)e(created)i(on)f(disk,)f(instead)h(of)g(a)g(temp)s
(orary)0 2390 y(\014le)37 b(in)f(memory)-8 b(,)40 b(b)m(y)d(supplying)d
(the)k(name)g(in)e(paren)m(theses)i(immediately)e(follo)m(wing)g(the)h
(base)h(\014le)f(name.)0 2503 y(The)30 b(output)g(\014lename)f(can)i
(include)d(the)j(')10 b(!')41 b(clobb)s(er)29 b(\015ag.)0
2663 y(Th)m(us,)48 b(if)c(the)h(input)e(\014lename)h(to)h(CFITSIO)f
(is:)69 b Fe(file1.fits.gz\(file2.fit)o(s\))39 b Fi(then)44
b(CFITSIO)g(will)0 2776 y(uncompress)39 b(`\014le1.\014ts.gz')i(in)m
(to)f(the)g(lo)s(cal)f(disk)f(\014le)h(`\014le2.\014ts')h(b)s(efore)g
(op)s(ening)e(it.)69 b(CFITSIO)38 b(do)s(es)i(not)0 2889
y(automatically)30 b(delete)h(the)f(output)g(\014le,)g(so)h(it)f(will)d
(still)i(exist)h(after)h(the)f(application)f(program)h(exits.)0
3049 y(In)35 b(some)i(cases,)h(sev)m(eral)e(di\013eren)m(t)g(temp)s
(orary)f(FITS)h(\014les)f(will)e(b)s(e)i(created)i(in)e(sequence,)j
(for)e(instance,)h(if)0 3162 y(one)g(op)s(ens)g(a)g(remote)h(\014le)e
(using)g(FTP)-8 b(,)37 b(then)g(\014lters)f(ro)m(ws)h(in)f(a)i(binary)d
(table)i(extension,)i(then)d(create)j(an)0 3275 y(image)e(b)m(y)g
(binning)d(a)j(pair)f(of)h(columns.)59 b(In)36 b(this)g(case,)k(the)d
(remote)h(\014le)e(will)e(b)s(e)i(copied)g(to)i(a)f(temp)s(orary)0
3388 y(lo)s(cal)h(\014le,)i(then)e(a)h(second)f(temp)s(orary)h(\014le)e
(will)f(b)s(e)i(created)i(con)m(taining)e(the)g(\014ltered)g(ro)m(ws)g
(of)h(the)g(table,)0 3500 y(and)c(\014nally)e(a)j(third)d(temp)s(orary)
i(\014le)g(con)m(taining)f(the)i(binned)d(image)i(will)e(b)s(e)i
(created.)57 b(In)34 b(cases)i(lik)m(e)f(this)0 3613
y(where)28 b(m)m(ultiple)e(\014les)h(are)i(created,)h(the)e(out\014le)g
(sp)s(eci\014er)f(will)e(b)s(e)j(in)m(terpreted)g(the)g(name)g(of)h
(the)f(\014nal)f(\014le)h(as)0 3726 y(describ)s(ed)g(b)s(elo)m(w,)i(in)
f(descending)g(priorit)m(y:)136 3964 y Fc(\017)46 b Fi(as)29
b(the)g(name)g(of)g(the)g(\014nal)e(image)i(\014le)f(if)f(an)i(image)g
(within)d(a)j(single)e(binary)g(table)i(cell)f(is)f(op)s(ened)h(or)h
(if)227 4077 y(an)i(image)f(is)g(created)h(b)m(y)f(binning)e(a)i(table)
h(column.)136 4257 y Fc(\017)46 b Fi(as)33 b(the)f(name)h(of)f(the)h
(\014le)e(con)m(taining)h(the)g(\014ltered)f(table)i(if)e(a)i(column)e
(\014lter)g(and/or)h(a)h(ro)m(w)f(\014lter)g(are)227
4370 y(sp)s(eci\014ed.)136 4551 y Fc(\017)46 b Fi(as)31
b(the)f(name)h(of)f(the)h(lo)s(cal)f(cop)m(y)h(of)f(the)h(remote)g(FTP)
f(or)h(HTTP)e(\014le.)136 4731 y Fc(\017)46 b Fi(as)31
b(the)g(name)g(of)g(the)f(uncompressed)g(v)m(ersion)g(of)h(the)f(FITS)g
(\014le,)g(if)g(a)h(compressed)f(FITS)g(\014le)g(on)h(lo)s(cal)227
4844 y(disk)e(has)h(b)s(een)g(op)s(ened.)136 5024 y Fc(\017)46
b Fi(otherwise,)30 b(the)h(output)f(\014lename)f(is)h(ignored.)0
5262 y(The)f(output)f(\014le)g(sp)s(eci\014er)g(is)g(useful)f(when)h
(reading)g(FTP)h(or)g(HTTP-t)m(yp)s(e)g(FITS)f(\014les)g(since)g(it)h
(can)g(b)s(e)g(used)0 5375 y(to)34 b(create)i(a)e(lo)s(cal)f(disk)f
(cop)m(y)j(of)f(the)g(\014le)e(that)j(can)f(b)s(e)f(reused)g(in)f(the)i
(future.)50 b(If)33 b(the)h(output)g(\014le)e(name)i(=)0
5488 y(`*')i(then)f(a)g(lo)s(cal)f(\014le)g(with)g(the)h(same)g(name)g
(as)g(the)h(net)m(w)m(ork)f(\014le)f(will)f(b)s(e)h(created.)56
b(Note)36 b(that)f(CFITSIO)0 5601 y(will)27 b(b)s(eha)m(v)m(e)j
(di\013eren)m(tly)f(dep)s(ending)e(on)j(whether)f(the)h(remote)g
(\014le)f(is)g(compressed)g(or)h(not)g(as)g(sho)m(wn)f(b)m(y)h(the)0
5714 y(follo)m(wing)f(examples:)p eop
%%Page: 24 30
24 29 bop 0 299 a Fi(24)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)136 555 y
Fc(\017)46 b Fi(`ftp://remote.mac)m(hine/tmp/m)m
(y\014le.\014ts.gz\(*\)')i(-)43 b(the)g(remote)h(compressed)f(\014le)f
(is)g(copied)h(to)h(the)227 668 y(lo)s(cal)24 b(compressed)g(\014le)f
(`m)m(y\014le.\014ts.gz',)k(whic)m(h)c(is)g(then)i(uncompressed)e(in)g
(lo)s(cal)g(memory)h(b)s(efore)g(b)s(eing)227 781 y(op)s(ened)30
b(and)g(passed)g(to)h(the)f(application)f(program.)136
979 y Fc(\017)46 b Fi(`ftp://remote.mac)m(hine/tmp/m)m
(y\014le.\014ts.gz\(m)m(y\014le.\014ts\)')40 b(-)d(the)g(remote)g
(compressed)f(\014le)g(is)f(copied)227 1092 y(and)i(uncompressed)g(in)m
(to)g(the)h(lo)s(cal)f(\014le)g(`m)m(y\014le.\014ts'.)63
b(This)35 b(example)j(requires)e(less)h(lo)s(cal)g(memory)227
1205 y(than)30 b(the)h(previous)e(example)h(since)g(the)g(\014le)g(is)f
(uncompressed)g(on)h(disk)f(instead)h(of)g(in)g(memory)-8
b(.)136 1403 y Fc(\017)46 b Fi(`ftp://remote.mac)m(hine/tmp/m)m
(y\014le.\014ts\(m)m(y\014le.\014ts.gz\)')25 b(-)c(this)f(will)f
(usually)g(pro)s(duce)h(an)h(error)g(since)227 1516 y(CFITSIO)29
b(itself)g(cannot)i(compress)f(\014les.)0 1759 y(The)36
b(exact)i(b)s(eha)m(vior)d(of)i(CFITSIO)e(in)g(the)i(latter)f(case)i
(dep)s(ends)c(on)j(the)f(t)m(yp)s(e)h(of)g(ftp)f(serv)m(er)g(running)e
(on)0 1872 y(the)d(remote)g(mac)m(hine)f(and)g(ho)m(w)g(it)g(is)f
(con\014gured.)40 b(In)30 b(some)h(cases,)g(if)e(the)i(\014le)e(`m)m
(y\014le.\014ts.gz')j(exists)e(on)g(the)0 1985 y(remote)38
b(mac)m(hine,)g(then)f(the)g(serv)m(er)g(will)e(cop)m(y)i(it)g(to)g
(the)h(lo)s(cal)e(mac)m(hine.)60 b(In)36 b(other)h(cases)h(the)f(ftp)g
(serv)m(er)0 2098 y(will)c(automatically)j(create)h(and)f(transmit)f(a)
h(compressed)g(v)m(ersion)f(of)h(the)g(\014le)f(if)g(only)g(the)h
(uncompressed)0 2211 y(v)m(ersion)26 b(exists.)40 b(This)25
b(can)i(get)h(rather)f(confusing,)g(so)g(users)f(should)f(use)i(a)g
(certain)g(amoun)m(t)h(of)f(caution)g(when)0 2324 y(using)33
b(the)i(output)f(\014le)g(sp)s(eci\014er)f(with)h(FTP)g(or)h(HTTP)f
(\014le)g(t)m(yp)s(es,)i(to)f(mak)m(e)h(sure)e(they)h(get)h(the)f(b)s
(eha)m(vior)0 2437 y(that)c(they)g(exp)s(ect.)0 2783
y Fd(4.5)135 b(T)-11 b(emplate)46 b(File)g(Name)f(when)g(Creating)h(a)g
(New)f(File)0 3035 y Fi(When)38 b(a)h(new)f(FITS)g(\014le)g(is)g
(created)h(with)f(a)g(call)g(to)i(\014ts)p 2101 3035
28 4 v 32 w(create)p 2369 3035 V 35 w(\014le,)f(the)g(name)g(of)g(a)g
(template)g(\014le)e(ma)m(y)0 3148 y(b)s(e)i(supplied)e(in)i(paren)m
(theses)h(immediately)e(follo)m(wing)g(the)j(name)f(of)g(the)g(new)f
(\014le)g(to)i(b)s(e)e(created.)71 b(This)0 3261 y(template)26
b(is)e(used)h(to)h(de\014ne)f(the)h(structure)f(of)h(one)f(or)h(more)g
(HDUs)g(in)e(the)i(new)f(\014le.)38 b(The)25 b(template)h(\014le)e(ma)m
(y)0 3374 y(b)s(e)32 b(another)h(FITS)f(\014le,)h(in)f(whic)m(h)f(case)
j(the)f(newly)f(created)i(\014le)e(will)e(ha)m(v)m(e)k(exactly)g(the)f
(same)g(k)m(eyw)m(ords)g(in)0 3487 y(eac)m(h)25 b(HDU)g(as)g(in)e(the)h
(template)h(FITS)e(\014le,)i(but)e(all)h(the)g(data)h(units)d(will)g(b)
s(e)i(\014lled)e(with)g(zeros.)40 b(The)24 b(template)0
3600 y(\014le)h(ma)m(y)i(also)f(b)s(e)f(an)h(ASCI)s(I)e(text)j(\014le,)
f(where)g(eac)m(h)h(line)d(\(in)h(general\))i(describ)s(es)d(one)i
(FITS)f(k)m(eyw)m(ord)i(record.)0 3713 y(The)j(format)h(of)f(the)h
(ASCI)s(I)e(template)h(\014le)g(is)f(describ)s(ed)f(b)s(elo)m(w.)0
4059 y Fd(4.6)135 b(HDU)46 b(Lo)t(cation)f(Sp)t(eci\014cation)0
4312 y Fi(The)c(optional)f(HDU)j(lo)s(cation)e(sp)s(eci\014er)e
(de\014nes)i(whic)m(h)f(HDU)i(\(Header-Data)i(Unit,)g(also)d(kno)m(wn)g
(as)h(an)0 4425 y(`extension'\))35 b(within)c(the)k(FITS)e(\014le)g(to)
i(initially)c(op)s(en.)51 b(It)34 b(m)m(ust)g(immediately)f(follo)m(w)g
(the)h(base)h(\014le)e(name)0 4538 y(\(or)h(the)g(output)g(\014le)f
(name)g(if)g(presen)m(t\).)52 b(If)33 b(it)g(is)g(not)h(sp)s(eci\014ed)
f(then)g(the)h(\014rst)f(HDU)i(\(the)f(primary)e(arra)m(y\))0
4650 y(is)g(op)s(ened.)46 b(The)32 b(HDU)h(lo)s(cation)f(sp)s
(eci\014er)f(is)h(required)f(if)g(the)i(colFilter,)f(ro)m(wFilter,)h
(or)g(binSp)s(ec)d(sp)s(eci\014ers)0 4763 y(are)g(presen)m(t,)f(b)s
(ecause)h(the)f(primary)e(arra)m(y)j(is)e(not)i(a)f(v)-5
b(alid)28 b(HDU)i(for)f(these)g(op)s(erations.)40 b(The)29
b(HDU)h(ma)m(y)g(b)s(e)0 4876 y(sp)s(eci\014ed)d(either)i(b)m(y)f
(absolute)h(p)s(osition)e(n)m(um)m(b)s(er,)h(starting)h(with)e(0)j(for)
e(the)h(primary)e(arra)m(y)-8 b(,)31 b(or)e(b)m(y)f(reference)0
4989 y(to)h(the)g(HDU)g(name,)g(and)f(optionally)-8 b(,)28
b(the)h(v)m(ersion)f(n)m(um)m(b)s(er)f(and)h(the)h(HDU)g(t)m(yp)s(e)g
(of)f(the)h(desired)e(extension.)0 5102 y(The)32 b(lo)s(cation)f(of)h
(an)g(image)h(within)c(a)k(single)d(cell)i(of)g(a)g(binary)f(table)h
(ma)m(y)g(also)g(b)s(e)g(sp)s(eci\014ed,)f(as)h(describ)s(ed)0
5215 y(b)s(elo)m(w.)0 5375 y(The)26 b(absolute)g(p)s(osition)e(of)i
(the)h(extension)f(is)f(sp)s(eci\014ed)f(either)i(b)m(y)g(enclosed)g
(the)h(n)m(um)m(b)s(er)e(in)g(square)g(brac)m(k)m(ets)0
5488 y(\(e.g.,)k(`[1]')g(=)d(the)h(\014rst)f(extension)g(follo)m(wing)g
(the)h(primary)d(arra)m(y\))k(or)f(b)m(y)f(preceded)h(the)g(n)m(um)m(b)
s(er)e(with)h(a)h(plus)0 5601 y(sign)36 b(\(`+1'\).)63
b(T)-8 b(o)38 b(sp)s(ecify)e(the)h(HDU)h(b)m(y)g(name,)h(giv)m(e)f(the)
f(name)h(of)f(the)h(desired)e(HDU)i(\(the)f(v)-5 b(alue)37
b(of)h(the)0 5714 y(EXTNAME)e(or)g(HDUNAME)h(k)m(eyw)m(ord\))g(and)f
(optionally)e(the)i(extension)g(v)m(ersion)f(n)m(um)m(b)s(er)g(\(v)-5
b(alue)36 b(of)g(the)p eop
%%Page: 25 31
25 30 bop 0 299 a Fg(4.7.)72 b(IMA)m(GE)31 b(SECTION)2835
b Fi(25)0 555 y(EXTVER)27 b(k)m(eyw)m(ord\))i(and)e(the)h(extension)g
(t)m(yp)s(e)f(\(v)-5 b(alue)28 b(of)g(the)g(XTENSION)f(k)m(eyw)m(ord:)
40 b(IMA)m(GE,)29 b(ASCI)s(I)d(or)0 668 y(T)-8 b(ABLE,)36
b(or)f(BINT)-8 b(ABLE\),)36 b(separated)f(b)m(y)g(commas)h(and)e(all)g
(enclosed)h(in)f(square)h(brac)m(k)m(ets.)56 b(If)34
b(the)h(v)-5 b(alue)0 781 y(of)34 b(EXTVER)f(and)f(XTENSION)h(are)h
(not)f(sp)s(eci\014ed,)g(then)g(the)h(\014rst)e(extension)i(with)e(the)
h(correct)i(v)-5 b(alue)33 b(of)0 894 y(EXTNAME)39 b(is)f(op)s(ened.)67
b(The)38 b(extension)h(name)g(and)f(t)m(yp)s(e)i(are)f(not)h(case)g
(sensitiv)m(e,)h(and)d(the)h(extension)0 1007 y(t)m(yp)s(e)29
b(ma)m(y)g(b)s(e)f(abbreviated)g(to)h(a)g(single)e(letter)i(\(e.g.,)i
(I)d(=)g(IMA)m(GE)i(extension)e(or)g(primary)f(arra)m(y)-8
b(,)30 b(A)f(or)f(T)g(=)0 1120 y(ASCI)s(I)d(table)h(extension,)h(and)f
(B)h(=)f(binary)f(table)h(BINT)-8 b(ABLE)27 b(extension\).)40
b(If)26 b(the)g(HDU)h(lo)s(cation)g(sp)s(eci\014er)0
1233 y(is)i(equal)h(to)h(`[PRIMAR)-8 b(Y]')32 b(or)f(`[P]',)g(then)f
(the)h(primary)d(arra)m(y)j(\(the)g(\014rst)f(HDU\))h(will)d(b)s(e)i
(op)s(ened.)0 1393 y(FITS)k(images)h(are)g(most)h(commonly)e(stored)h
(in)f(the)h(primary)e(arra)m(y)i(or)g(an)g(image)g(extension,)h(but)e
(images)0 1506 y(can)d(also)g(b)s(e)f(stored)h(as)h(a)f(v)m(ector)h(in)
e(a)h(single)f(cell)g(of)h(a)h(binary)d(table)i(\(i.e.)42
b(eac)m(h)32 b(ro)m(w)f(of)g(the)h(v)m(ector)g(column)0
1619 y(con)m(tains)c(a)h(di\013eren)m(t)e(image\).)41
b(Suc)m(h)27 b(an)h(image)h(can)f(b)s(e)g(op)s(ened)f(with)g(CFITSIO)f
(b)m(y)i(sp)s(ecifying)e(the)i(desired)0 1732 y(column)j(name)h(and)f
(the)h(ro)m(w)g(n)m(um)m(b)s(er)f(after)h(the)g(binary)e(table)i(HDU)h
(sp)s(eci\014er)d(as)i(sho)m(wn)g(in)e(the)i(follo)m(wing)0
1844 y(examples.)70 b(The)40 b(column)f(name)i(is)e(separated)i(from)f
(the)h(HDU)g(sp)s(eci\014er)e(b)m(y)h(a)h(semicolon)e(and)h(the)h(ro)m
(w)0 1957 y(n)m(um)m(b)s(er)29 b(is)g(enclosed)h(in)e(paren)m(theses.)
41 b(In)30 b(this)f(case)i(CFITSIO)d(copies)i(the)g(image)h(from)e(the)
i(table)f(cell)f(in)m(to)0 2070 y(a)j(temp)s(orary)e(primary)g(arra)m
(y)h(b)s(efore)g(it)g(is)f(op)s(ened.)43 b(The)30 b(application)g
(program)h(then)g(just)g(sees)g(the)h(image)0 2183 y(in)h(the)i
(primary)d(arra)m(y)-8 b(,)37 b(without)c(an)m(y)i(extensions.)52
b(The)34 b(particular)e(ro)m(w)j(to)g(b)s(e)e(op)s(ened)h(ma)m(y)h(b)s
(e)f(sp)s(eci\014ed)0 2296 y(either)27 b(b)m(y)g(giving)f(an)h
(absolute)g(in)m(teger)h(ro)m(w)g(n)m(um)m(b)s(er)e(\(starting)h(with)f
(1)i(for)f(the)g(\014rst)g(ro)m(w\),)i(or)e(b)m(y)g(sp)s(ecifying)0
2409 y(a)33 b(b)s(o)s(olean)e(expression)g(that)i(ev)-5
b(aluates)33 b(to)g(TR)m(UE)g(for)f(the)g(desired)f(ro)m(w.)47
b(The)32 b(\014rst)f(ro)m(w)i(that)g(satis\014es)f(the)0
2522 y(expression)27 b(will)e(b)s(e)j(used.)39 b(The)28
b(ro)m(w)g(selection)g(expression)f(has)h(the)g(same)g(syn)m(tax)h(as)f
(describ)s(ed)e(in)h(the)h(Ro)m(w)0 2635 y(Filter)i(Sp)s(eci\014er)e
(section,)j(b)s(elo)m(w.)0 2795 y(Examples:)143 3051
y Fe(myfile.fits[3])44 b(-)k(open)e(the)h(3rd)g(HDU)g(following)e(the)i
(primary)f(array)143 3164 y(myfile.fits+3)92 b(-)48 b(same)e(as)h
(above,)f(but)h(using)g(the)g(FTOOLS-style)d(notation)143
3277 y(myfile.fits[EVENTS])f(-)k(open)g(the)g(extension)e(that)i(has)g
(EXTNAME)e(=)j('EVENTS')143 3390 y(myfile.fits[EVENTS,)43
b(2])95 b(-)47 b(same)g(as)g(above,)f(but)h(also)g(requires)e(EXTVER)h
(=)i(2)143 3503 y(myfile.fits[events,2,b])42 b(-)47 b(same,)f(but)h
(also)g(requires)f(XTENSION)f(=)j('BINTABLE')143 3616
y(myfile.fits[3;)c(images\(17\)])h(-)i(opens)g(the)g(image)f(in)h(row)g
(17)g(of)g(the)g('images')1527 3728 y(column)f(in)i(the)e(3rd)h
(extension)f(of)h(the)g(file.)143 3841 y(myfile.fits[3;)d
(images\(exposure)g(>)j(100\)])g(-)g(as)g(above,)f(but)h(opens)g(the)f
(image)907 3954 y(in)h(the)g(first)f(row)h(that)g(has)g(an)g
('exposure')e(column)h(value)907 4067 y(greater)g(than)g(100.)0
4400 y Fd(4.7)135 b(Image)46 b(Section)0 4650 y Fi(A)41
b(virtual)e(\014le)g(con)m(taining)h(a)h(rectangular)g(subsection)e(of)
i(an)g(image)f(can)h(b)s(e)f(extracted)i(and)e(op)s(ened)g(b)m(y)0
4763 y(sp)s(ecifying)30 b(the)j(range)g(of)g(pixels)e(\(start:end\))i
(along)g(eac)m(h)h(axis)e(to)h(b)s(e)f(extracted)i(from)e(the)h
(original)d(image.)0 4876 y(One)g(can)h(also)g(sp)s(ecify)e(an)i
(optional)f(pixel)f(incremen)m(t)h(\(start:end:step\))i(for)f(eac)m(h)h
(axis)e(of)h(the)g(input)d(image.)0 4989 y(A)g(pixel)d(step)j(=)f(1)h
(will)d(b)s(e)i(assumed)f(if)h(it)g(is)f(not)i(sp)s(eci\014ed.)38
b(If)27 b(the)h(start)g(pixel)e(is)g(larger)i(then)f(the)h(end)e
(pixel,)0 5102 y(then)32 b(the)g(image)g(will)d(b)s(e)i(\015ipp)s(ed)e
(\(pro)s(ducing)h(a)i(mirror)f(image\))h(along)g(that)g(dimension.)43
b(An)32 b(asterisk,)g('*',)0 5215 y(ma)m(y)39 b(b)s(e)e(used)h(to)h(sp)
s(ecify)e(the)h(en)m(tire)g(range)h(of)f(an)h(axis,)h(and)d('-*')j
(will)35 b(\015ip)i(the)h(en)m(tire)g(axis.)64 b(The)38
b(input)0 5328 y(image)30 b(can)g(b)s(e)f(in)f(the)i(primary)e(arra)m
(y)-8 b(,)31 b(in)d(an)h(image)h(extension,)g(or)g(con)m(tained)f(in)g
(a)h(v)m(ector)h(cell)e(of)h(a)g(binary)0 5441 y(table.)39
b(In)25 b(the)h(later)g(2)g(cases)h(the)f(extension)g(name)g(or)f(n)m
(um)m(b)s(er)g(m)m(ust)h(b)s(e)f(sp)s(eci\014ed)f(b)s(efore)i(the)g
(image)g(section)0 5554 y(sp)s(eci\014er.)0 5714 y(Examples:)p
eop
%%Page: 26 32
26 31 bop 0 299 a Fi(26)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)95 555 y Fe
(myfile.fits[1:512:2,)43 b(2:512:2])i(-)95 b(open)47
b(a)h(256x256)d(pixel)i(image)668 668 y(consisting)e(of)i(the)g(odd)g
(numbered)f(columns)g(\(1st)g(axis\))h(and)668 781 y(the)g(even)g
(numbered)e(rows)i(\(2nd)g(axis\))f(of)h(the)g(image)f(in)i(the)668
894 y(primary)e(array)g(of)i(the)e(file.)95 1120 y(myfile.fits[*,)e
(512:256])i(-)h(open)g(an)g(image)g(consisting)e(of)i(all)g(the)g
(columns)668 1233 y(in)g(the)g(input)g(image,)f(but)h(only)f(rows)h
(256)g(through)f(512.)668 1346 y(The)h(image)f(will)h(be)g(flipped)f
(along)g(the)h(2nd)g(axis)g(since)668 1458 y(the)g(starting)f(pixel)g
(is)h(greater)f(than)h(the)g(ending)f(pixel.)95 1684
y(myfile.fits[*:2,)e(512:256:2])h(-)i(same)g(as)g(above)f(but)h
(keeping)f(only)668 1797 y(every)h(other)f(row)h(and)g(column)f(in)h
(the)g(input)f(image.)95 2023 y(myfile.fits[-*,)e(*])j(-)h(copy)e(the)h
(entire)f(image,)g(flipping)g(it)h(along)668 2136 y(the)g(first)f
(axis.)95 2362 y(myfile.fits[3][1:256,1:256)o(])c(-)47
b(opens)g(a)g(subsection)e(of)i(the)g(image)g(that)668
2475 y(is)g(in)h(the)e(3rd)h(extension)f(of)h(the)g(file.)95
2700 y(myfile.fits[4;)d(images\(12\)][1:10,1:10])e(-)48
b(open)e(an)h(image)g(consisting)286 2813 y(of)h(the)e(first)h(10)g
(pixels)f(in)h(both)g(dimensions.)e(The)i(original)286
2926 y(image)g(resides)f(in)h(the)g(12th)f(row)h(of)g(the)g('images')f
(vector)286 3039 y(column)g(in)i(the)f(table)f(in)h(the)g(4th)g
(extension)e(of)i(the)g(file.)0 3336 y Fi(When)23 b(CFITSIO)f(op)s(ens)
h(an)g(image)g(section)h(it)f(\014rst)g(creates)h(a)g(temp)s(orary)f
(\014le)g(con)m(taining)g(the)g(image)h(section)0 3449
y(plus)31 b(a)j(cop)m(y)g(of)g(an)m(y)g(other)f(HDUs)h(in)e(the)i
(\014le.)49 b(This)31 b(temp)s(orary)i(\014le)g(is)f(then)h(op)s(ened)g
(b)m(y)g(the)h(application)0 3562 y(program,)28 b(so)g(it)f(is)f(not)i
(p)s(ossible)d(to)j(write)f(to)h(or)g(mo)s(dify)e(the)h(input)f(\014le)
g(when)h(sp)s(ecifying)e(an)j(image)g(section.)0 3675
y(Note)39 b(that)f(CFITSIO)e(automatically)h(up)s(dates)g(the)g(w)m
(orld)g(co)s(ordinate)g(system)h(k)m(eyw)m(ords)f(in)f(the)i(header)0
3788 y(of)33 b(the)h(image)f(section,)h(if)e(they)i(exist,)g(so)f(that)
h(the)f(co)s(ordinate)g(asso)s(ciated)h(with)e(eac)m(h)i(pixel)d(in)h
(the)i(image)0 3901 y(section)d(will)c(b)s(e)j(computed)g(correctly)-8
b(.)0 4279 y Fd(4.8)135 b(Column)45 b(and)g(Keyw)l(ord)h(Filtering)g
(Sp)t(eci\014cation)0 4538 y Fi(The)27 b(optional)g(column/k)m(eyw)m
(ord)h(\014ltering)e(sp)s(eci\014er)g(is)h(used)g(to)i(mo)s(dify)d(the)
i(column)f(structure)g(and/or)h(the)0 4650 y(header)38
b(k)m(eyw)m(ords)h(in)e(the)i(HDU)g(that)h(w)m(as)f(selected)g(with)e
(the)i(previous)e(HDU)i(lo)s(cation)f(sp)s(eci\014er.)64
b(This)0 4763 y(\014ltering)40 b(sp)s(eci\014er)g(m)m(ust)i(b)s(e)f
(enclosed)h(in)e(square)i(brac)m(k)m(ets)h(and)e(can)h(b)s(e)f
(distinguished)d(from)k(a)g(general)0 4876 y(ro)m(w)d(\014lter)f(sp)s
(eci\014er)f(\(describ)s(ed)g(b)s(elo)m(w\))h(b)m(y)h(the)g(fact)h
(that)f(it)f(b)s(egins)f(with)h(the)h(string)f('col)h(')g(and)f(is)g
(not)0 4989 y(immediately)27 b(follo)m(w)m(ed)h(b)m(y)g(an)g(equals)g
(sign.)39 b(The)28 b(original)e(\014le)h(is)h(not)g(c)m(hanged)h(b)m(y)
f(this)g(\014ltering)e(op)s(eration,)0 5102 y(and)40
b(instead)g(the)h(mo)s(di\014cations)e(are)i(made)f(on)h(a)g(cop)m(y)g
(of)g(the)g(input)e(FITS)h(\014le)f(\(usually)g(in)g(memory\),)0
5215 y(whic)m(h)32 b(also)h(con)m(tains)g(a)g(cop)m(y)h(of)f(all)f(the)
i(other)f(HDUs)h(in)d(the)i(\014le.)48 b(This)32 b(temp)s(orary)g
(\014le)g(is)g(passed)h(to)h(the)0 5328 y(application)c(program)i(and)f
(will)e(p)s(ersist)h(only)h(un)m(til)f(the)i(\014le)f(is)g(closed)h(or)
g(un)m(til)e(the)i(program)f(exits,)i(unless)0 5441 y(the)e(out\014le)e
(sp)s(eci\014er)g(\(see)i(ab)s(o)m(v)m(e\))h(is)e(also)g(supplied.)0
5601 y(The)h(column/k)m(eyw)m(ord)g(\014lter)f(can)h(b)s(e)g(used)f(to)
i(p)s(erform)e(the)i(follo)m(wing)d(op)s(erations.)43
b(More)32 b(than)f(one)g(op)s(er-)0 5714 y(ation)f(ma)m(y)h(b)s(e)f(sp)
s(eci\014ed)f(b)m(y)h(separating)g(them)g(with)g(semi-colons.)p
eop
%%Page: 27 33
27 32 bop 0 299 a Fg(4.8.)72 b(COLUMN)30 b(AND)h(KEYW)m(ORD)g(FIL)-8
b(TERING)31 b(SPECIFICA)-8 b(TION)1120 b Fi(27)136 555
y Fc(\017)46 b Fi(Cop)m(y)36 b(only)f(a)h(sp)s(eci\014ed)f(list)f(of)i
(columns)f(columns)f(to)j(the)f(\014ltered)f(input)f(\014le.)56
b(The)36 b(list)e(of)i(column)227 668 y(name)c(should)e(b)s(e)i
(separated)g(b)m(y)g(semi-colons.)46 b(Wild)30 b(card)i(c)m(haracters)i
(ma)m(y)e(b)s(e)g(used)f(in)g(the)h(column)227 781 y(names)37
b(to)h(matc)m(h)g(m)m(ultiple)d(columns.)60 b(If)37 b(the)g(expression)
f(con)m(tains)i(b)s(oth)e(a)i(list)d(of)j(columns)e(to)i(b)s(e)227
894 y(included)f(and)h(columns)g(to)h(b)s(e)g(deleted,)i(then)d(all)g
(the)h(columns)f(in)g(the)h(original)e(table)i(except)h(the)227
1007 y(explicitly)28 b(deleted)i(columns)f(will)e(app)s(ear)j(in)f(the)
h(\014ltered)f(table)h(\(i.e.,)h(there)f(is)g(no)g(need)f(to)i
(explicitly)227 1120 y(list)e(the)i(columns)e(to)i(b)s(e)f(included)d
(if)j(an)m(y)g(columns)f(are)i(b)s(eing)e(deleted\).)136
1295 y Fc(\017)46 b Fi(Delete)31 b(a)e(column)f(or)h(k)m(eyw)m(ord)h(b)
m(y)f(listing)e(the)i(name)g(preceded)g(b)m(y)g(a)g(min)m(us)f(sign)g
(or)h(an)g(exclamation)227 1408 y(mark)c(\(!\),)h(e.g.,)i('-TIME')d
(will)d(delete)j(the)f(TIME)h(column)e(if)g(it)i(exists,)g(otherwise)f
(the)h(TIME)f(k)m(eyw)m(ord.)227 1520 y(An)35 b(error)f(is)g(returned)f
(if)h(neither)f(a)j(column)d(nor)h(k)m(eyw)m(ord)h(with)f(this)f(name)i
(exists.)53 b(Note)36 b(that)g(the)227 1633 y(exclamation)25
b(p)s(oin)m(t,)h(')10 b(!',)27 b(is)d(a)h(sp)s(ecial)f(UNIX)h(c)m
(haracter,)j(so)d(if)f(it)h(is)f(used)g(on)h(the)g(command)g(line)e
(rather)227 1746 y(than)33 b(en)m(tered)h(at)g(a)g(task)g(prompt,)f(it)
g(m)m(ust)g(b)s(e)g(preceded)g(b)m(y)g(a)h(bac)m(kslash)f(to)h(force)g
(the)f(UNIX)h(shell)227 1859 y(to)d(ignore)f(it.)136
2034 y Fc(\017)46 b Fi(Rename)29 b(an)g(existing)e(column)g(or)i(k)m
(eyw)m(ord)g(with)e(the)i(syn)m(tax)g('NewName)h(==)e(OldName'.)39
b(An)28 b(error)227 2147 y(is)i(returned)f(if)g(neither)h(a)g(column)f
(nor)h(k)m(eyw)m(ord)h(with)e(this)h(name)g(exists.)136
2322 y Fc(\017)46 b Fi(App)s(end)37 b(a)j(new)f(column)e(or)j(k)m(eyw)m
(ord)f(to)h(the)f(table.)67 b(T)-8 b(o)40 b(create)g(a)g(column,)g(giv)
m(e)g(the)f(new)g(name,)227 2435 y(optionally)34 b(follo)m(w)m(ed)h(b)m
(y)g(the)g(datat)m(yp)s(e)h(in)e(paren)m(theses,)j(follo)m(w)m(ed)e(b)m
(y)g(a)h(single)e(equals)g(sign)g(and)h(an)227 2548 y(expression)f(to)i
(b)s(e)e(used)g(to)i(compute)f(the)g(v)-5 b(alue)34 b(\(e.g.,)k('new)m
(col\(1J\))e(=)f(0')g(will)e(create)j(a)f(new)g(32-bit)227
2661 y(in)m(teger)j(column)e(called)h('new)m(col')g(\014lled)f(with)g
(zeros\).)62 b(The)37 b(datat)m(yp)s(e)h(is)f(sp)s(eci\014ed)e(using)h
(the)i(same)227 2774 y(syn)m(tax)28 b(that)h(is)d(allo)m(w)m(ed)i(for)f
(the)h(v)-5 b(alue)27 b(of)h(the)g(FITS)f(TF)m(ORMn)g(k)m(eyw)m(ord)h
(\(e.g.,)i('I',)f('J',)f('E',)g('D',)h(etc.)227 2886
y(for)37 b(binary)e(tables,)k(and)d('I8',)k(F12.3',)h('E20.12',)g(etc.)
62 b(for)37 b(ASCI)s(I)e(tables\).)61 b(If)37 b(the)g(datat)m(yp)s(e)h
(is)e(not)227 2999 y(sp)s(eci\014ed)23 b(then)g(an)h(appropriate)g
(datat)m(yp)s(e)h(will)c(b)s(e)j(c)m(hosen)g(dep)s(ending)e(on)i(the)g
(form)g(of)g(the)g(expression)227 3112 y(\(ma)m(y)f(b)s(e)d(a)i(c)m
(haracter)h(string,)g(logical,)f(bit,)h(long)e(in)m(teger,)j(or)d
(double)f(column\).)37 b(An)21 b(appropriate)f(v)m(ector)227
3225 y(coun)m(t)31 b(\(in)f(the)g(case)i(of)e(binary)f(tables\))h(will)
e(also)i(b)s(e)g(added)g(if)f(not)i(explicitly)d(sp)s(eci\014ed.)227
3369 y(When)e(creating)g(a)g(new)f(k)m(eyw)m(ord,)j(the)e(k)m(eyw)m
(ord)g(name)g(m)m(ust)g(b)s(e)f(preceded)g(b)m(y)h(a)g(p)s(ound)e(sign)
g('#',)k(and)227 3482 y(the)h(expression)e(m)m(ust)h(ev)-5
b(aluate)29 b(to)g(a)g(scalar)f(\(i.e.,)h(cannot)g(ha)m(v)m(e)h(a)f
(column)e(name)h(in)f(the)i(expression\).)227 3595 y(The)j(commen)m(t)i
(string)e(for)g(the)h(k)m(eyw)m(ord)h(ma)m(y)f(b)s(e)f(sp)s(eci\014ed)f
(in)g(paren)m(theses)i(immediately)e(follo)m(wing)227
3708 y(the)e(k)m(eyw)m(ord)f(name)g(\(instead)g(of)g(supplying)d(a)j
(datat)m(yp)s(e)h(as)g(in)d(the)j(case)g(of)f(creating)g(a)h(new)f
(column\).)136 3883 y Fc(\017)46 b Fi(Recompute)f(\(o)m(v)m(erwrite\))h
(the)e(v)-5 b(alues)43 b(in)g(an)h(existing)g(column)f(or)h(k)m(eyw)m
(ord)g(b)m(y)g(giving)g(the)g(name)227 3996 y(follo)m(w)m(ed)30
b(b)m(y)h(an)f(equals)g(sign)f(and)h(an)g(arithmetic)g(expression.)0
4217 y(The)23 b(expression)f(that)j(is)d(used)h(when)g(app)s(ending)e
(or)i(recomputing)g(columns)f(or)i(k)m(eyw)m(ords)g(can)g(b)s(e)f
(arbitrarily)0 4330 y(complex)35 b(and)h(ma)m(y)g(b)s(e)f(a)h(function)
f(of)h(other)g(header)g(k)m(eyw)m(ord)g(v)-5 b(alues)35
b(and)g(other)h(columns)f(\(in)g(the)h(same)0 4443 y(ro)m(w\).)63
b(The)37 b(full)e(syn)m(tax)k(and)e(a)m(v)-5 b(ailable)37
b(functions)f(for)h(the)h(expression)e(are)i(describ)s(ed)e(b)s(elo)m
(w)h(in)f(the)i(ro)m(w)0 4556 y(\014lter)29 b(sp)s(eci\014cation)h
(section.)0 4716 y(If)d(the)h(expression)f(con)m(tains)g(b)s(oth)g(a)h
(list)f(of)h(columns)e(to)i(b)s(e)g(included)c(and)k(columns)e(to)i(b)s
(e)f(deleted,)i(then)e(all)0 4829 y(the)34 b(columns)f(in)g(the)h
(original)e(table)i(except)h(the)f(explicitly)e(deleted)i(columns)e
(will)g(app)s(ear)h(in)g(the)h(\014ltered)0 4942 y(table.)0
5102 y(F)-8 b(or)30 b(complex)g(or)f(commonly)g(used)g(op)s(erations,)h
(one)f(can)h(also)g(place)g(the)f(op)s(erations)g(in)m(to)h(an)f
(external)h(text)0 5215 y(\014le)g(and)g(imp)s(ort)f(it)h(in)m(to)h
(the)g(column)f(\014lter)f(using)h(the)h(syn)m(tax)g('[col)g
(@\014lename.txt]'.)42 b(The)31 b(op)s(erations)f(can)0
5328 y(extend)c(o)m(v)m(er)i(m)m(ultiple)c(lines)h(of)h(the)h(\014le,)g
(but)e(m)m(ultiple)f(op)s(erations)i(m)m(ust)g(still)f(b)s(e)g
(separated)i(b)m(y)g(semicolons.)0 5441 y(An)m(y)h(lines)f(in)g(the)h
(external)h(text)g(\014le)e(that)i(b)s(egin)e(with)g(2)i(slash)e(c)m
(haracters)j(\('//'\))g(will)c(b)s(e)h(ignored)h(and)f(ma)m(y)0
5554 y(b)s(e)j(used)f(to)i(add)f(commen)m(ts)h(in)m(to)g(the)f(\014le.)
0 5714 y(Examples:)p eop
%%Page: 28 34
28 33 bop 0 299 a Fi(28)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)143 555 y
Fe([col)47 b(Time;rate])713 b(-)47 b(only)g(the)g(Time)g(and)g(rate)f
(columns)g(will)1670 668 y(appear)h(in)g(the)g(filtered)e(input)i
(file.)143 894 y([col)g(Time;*raw])713 b(-)47 b(include)f(the)h(Time)g
(column)f(and)h(any)g(other)1670 1007 y(columns)f(whose)h(name)f(ends)h
(with)g('raw'.)143 1233 y([col)g(-TIME;)f(Good)h(==)g(STATUS])141
b(-)47 b(deletes)f(the)h(TIME)g(column)f(and)1670 1346
y(renames)g(the)h(status)f(column)g(to)i('Good')143 1571
y([col)f(PI=PHA)f(*)h(1.1)g(+)h(0.2])285 b(-)47 b(creates)f(new)h(PI)g
(column)f(from)h(PHA)g(values)143 1797 y([col)g(rate)f(=)i
(rate/exposure])139 b(-)48 b(recomputes)d(the)i(rate)f(column)g(by)i
(dividing)1670 1910 y(it)g(by)f(the)g(EXPOSURE)e(keyword)h(value.)0
2252 y Fd(4.9)135 b(Ro)l(w)46 b(Filtering)g(Sp)t(eci\014cation)0
2503 y Fi(When)29 b(en)m(tering)g(the)g(name)g(of)g(a)g(FITS)f(table)h
(that)h(is)d(to)j(b)s(e)e(op)s(ened)h(b)m(y)f(a)i(program,)f(an)g
(optional)f(ro)m(w)h(\014lter)0 2616 y(ma)m(y)i(b)s(e)g(sp)s(eci\014ed)
e(to)i(select)g(a)h(subset)e(of)h(the)g(ro)m(ws)f(in)g(the)h(table.)42
b(A)31 b(temp)s(orary)f(new)g(FITS)g(\014le)g(is)g(created)0
2729 y(on)25 b(the)h(\015y)e(whic)m(h)g(con)m(tains)h(only)g(those)h
(ro)m(ws)f(for)g(whic)m(h)f(the)h(ro)m(w)g(\014lter)g(expression)f(ev)
-5 b(aluates)25 b(to)h(true.)39 b(\(The)0 2842 y(primary)25
b(arra)m(y)i(and)f(an)m(y)g(other)h(extensions)f(in)f(the)i(input)e
(\014le)g(are)i(also)g(copied)f(to)h(the)f(temp)s(orary)h(\014le\).)38
b(The)0 2955 y(original)27 b(FITS)i(\014le)f(is)g(closed)h(and)f(the)i
(new)e(virtual)g(\014le)g(is)g(op)s(ened)g(b)m(y)h(the)h(application)d
(program.)40 b(The)29 b(ro)m(w)0 3068 y(\014lter)36 b(expression)g(is)h
(enclosed)g(in)f(square)h(brac)m(k)m(ets)i(follo)m(wing)d(the)h(\014le)
g(name)g(and)g(extension)g(name)g(\(e.g.,)0 3181 y('\014le.\014ts[ev)m
(en)m(ts][GRADE==50]')28 b(selects)d(only)f(those)i(ro)m(ws)f(where)f
(the)h(GRADE)h(column)e(v)-5 b(alue)24 b(equals)g(50\).)0
3294 y(When)33 b(dealing)f(with)g(tables)g(where)h(eac)m(h)h(ro)m(w)f
(has)g(an)g(asso)s(ciated)h(time)f(and/or)g(2D)g(spatial)g(p)s
(osition,)f(the)0 3407 y(ro)m(w)g(\014lter)g(expression)e(can)j(also)f
(b)s(e)g(used)f(to)i(select)g(ro)m(ws)f(based)g(on)g(the)g(times)g(in)f
(a)h(Go)s(o)s(d)g(Time)f(In)m(terv)-5 b(als)0 3520 y(\(GTI\))31
b(extension,)f(or)g(on)h(spatial)e(p)s(osition)g(as)h(giv)m(en)h(in)e
(a)h(SA)m(O-st)m(yle)h(region)f(\014le.)0 3818 y Fb(4.9.1)112
b(General)38 b(Syn)m(tax)0 4039 y Fi(The)32 b(ro)m(w)h(\014ltering)e
(expression)h(can)h(b)s(e)f(an)h(arbitrarily)d(complex)i(series)g(of)h
(op)s(erations)f(p)s(erformed)g(on)g(con-)0 4152 y(stan)m(ts,)39
b(k)m(eyw)m(ord)e(v)-5 b(alues,)37 b(and)f(column)f(data)j(tak)m(en)f
(from)f(the)h(sp)s(eci\014ed)d(FITS)i(T)-8 b(ABLE)37
b(extension.)58 b(The)0 4264 y(expression)36 b(m)m(ust)i(ev)-5
b(aluate)38 b(to)h(a)f(b)s(o)s(olean)f(v)-5 b(alue)37
b(for)g(eac)m(h)i(ro)m(w)f(of)g(the)f(table,)j(where)d(a)h(v)-5
b(alue)38 b(of)f(F)-10 b(ALSE)0 4377 y(means)30 b(that)h(the)g(ro)m(w)f
(will)e(b)s(e)i(excluded.)0 4538 y(F)-8 b(or)34 b(complex)f(or)h
(commonly)e(used)h(\014lters,)g(one)h(can)g(place)f(the)h(expression)e
(in)m(to)h(a)h(text)g(\014le)f(and)g(imp)s(ort)e(it)0
4650 y(in)m(to)37 b(the)f(ro)m(w)h(\014lter)f(using)f(the)i(syn)m(tax)g
('[@\014lename.txt]'.)60 b(The)36 b(expression)g(can)g(b)s(e)g
(arbitrarily)e(complex)0 4763 y(and)27 b(extend)i(o)m(v)m(er)g(m)m
(ultiple)d(lines)g(of)i(the)h(\014le.)39 b(An)m(y)28
b(lines)e(in)h(the)h(external)g(text)h(\014le)e(that)i(b)s(egin)e(with)
g(2)h(slash)0 4876 y(c)m(haracters)k(\('//'\))g(will)c(b)s(e)i(ignored)
f(and)h(ma)m(y)h(b)s(e)f(used)f(to)i(add)f(commen)m(ts)h(in)m(to)g(the)
f(\014le.)0 5036 y(Keyw)m(ord)37 b(and)f(column)f(data)j(are)f
(referenced)g(b)m(y)g(name.)60 b(An)m(y)37 b(string)e(of)i(c)m
(haracters)i(not)e(surrounded)d(b)m(y)0 5149 y(quotes)41
b(\(ie,)i(a)e(constan)m(t)h(string\))e(or)g(follo)m(w)m(ed)g(b)m(y)h
(an)f(op)s(en)g(paren)m(theses)h(\(ie,)i(a)e(function)e(name\))i(will)d
(b)s(e)0 5262 y(initially)33 b(in)m(terpreted)i(as)i(a)g(column)e(name)
h(and)g(its)g(con)m(ten)m(ts)i(for)e(the)h(curren)m(t)f(ro)m(w)g
(inserted)f(in)m(to)i(the)f(ex-)0 5375 y(pression.)j(If)28
b(no)h(suc)m(h)g(column)f(exists,)h(a)h(k)m(eyw)m(ord)f(of)h(that)f
(name)g(will)e(b)s(e)h(searc)m(hed)i(for)f(and)f(its)h(v)-5
b(alue)28 b(used,)0 5488 y(if)35 b(found.)55 b(T)-8 b(o)36
b(force)g(the)g(name)g(to)h(b)s(e)e(in)m(terpreted)g(as)h(a)g(k)m(eyw)m
(ord)g(\(in)f(case)h(there)g(is)f(b)s(oth)g(a)h(column)f(and)0
5601 y(k)m(eyw)m(ord)41 b(with)d(the)j(same)f(name\),)j(precede)d(the)h
(k)m(eyw)m(ord)f(name)g(with)f(a)i(single)d(p)s(ound)g(sign,)k('#',)h
(as)d(in)0 5714 y('#NAXIS2'.)g(Due)27 b(to)g(the)f(generalities)g(of)g
(FITS)g(column)f(and)h(k)m(eyw)m(ord)h(names,)g(if)e(the)i(column)e(or)
h(k)m(eyw)m(ord)p eop
%%Page: 29 35
29 34 bop 0 299 a Fg(4.9.)72 b(R)m(O)m(W)31 b(FIL)-8
b(TERING)31 b(SPECIFICA)-8 b(TION)2072 b Fi(29)0 555
y(name)34 b(con)m(tains)g(a)g(space)h(or)e(a)i(c)m(haracter)g(whic)m(h)
e(migh)m(t)g(app)s(ear)g(as)i(an)e(arithmetic)g(term)h(then)g(inclose)f
(the)0 668 y(name)d(in)f('$')j(c)m(haracters)g(as)e(in)f($MAX)j(PHA$)f
(or)f(#$MAX-PHA$.)43 b(Names)31 b(are)f(case)i(insensitiv)m(e.)0
828 y(T)-8 b(o)32 b(access)g(a)g(table)f(en)m(try)h(in)e(a)i(ro)m(w)f
(other)h(than)f(the)g(curren)m(t)g(one,)h(follo)m(w)f(the)g(column's)g
(name)g(with)f(a)i(ro)m(w)0 941 y(o\013set)37 b(within)c(curly)h
(braces.)57 b(F)-8 b(or)36 b(example,)h('PHA)p Fc(f)p
Fi(-3)p Fc(g)p Fi(')h(will)33 b(ev)-5 b(aluate)37 b(to)f(the)g(v)-5
b(alue)35 b(of)h(column)e(PHA,)j(3)0 1054 y(ro)m(ws)28
b(ab)s(o)m(v)m(e)i(the)e(ro)m(w)h(curren)m(tly)e(b)s(eing)g(pro)s
(cessed.)40 b(One)28 b(cannot)h(sp)s(ecify)e(an)h(absolute)g(ro)m(w)g
(n)m(um)m(b)s(er,)g(only)g(a)0 1167 y(relativ)m(e)i(o\013set.)42
b(Ro)m(ws)31 b(that)g(fall)e(outside)h(the)g(table)g(will)e(b)s(e)i
(treated)h(as)g(unde\014ned,)d(or)j(NULLs.)0 1327 y(Bo)s(olean)g(op)s
(erators)g(can)g(b)s(e)f(used)f(in)h(the)g(expression)g(in)f(either)h
(their)g(F)-8 b(ortran)31 b(or)f(C)h(forms.)40 b(The)30
b(follo)m(wing)0 1440 y(b)s(o)s(olean)f(op)s(erators)i(are)g(a)m(v)-5
b(ailable:)191 1666 y Fe("equal")428 b(.eq.)46 b(.EQ.)h(==)95
b("not)46 b(equal")476 b(.ne.)94 b(.NE.)h(!=)191 1779
y("less)46 b(than")238 b(.lt.)46 b(.LT.)h(<)143 b("less)46
b(than/equal")188 b(.le.)94 b(.LE.)h(<=)47 b(=<)191 1892
y("greater)e(than")95 b(.gt.)46 b(.GT.)h(>)143 b("greater)45
b(than/equal")g(.ge.)94 b(.GE.)h(>=)47 b(=>)191 2005
y("or")572 b(.or.)46 b(.OR.)h(||)95 b("and")762 b(.and.)46
b(.AND.)h(&&)191 2118 y("negation")236 b(.not.)46 b(.NOT.)h(!)95
b("approx.)45 b(equal\(1e-7\)")92 b(~)0 2344 y Fi(Note)32
b(that)g(the)f(exclamation)g(p)s(oin)m(t,)f(')10 b(!',)33
b(is)d(a)h(sp)s(ecial)e(UNIX)j(c)m(haracter,)h(so)e(if)f(it)g(is)g
(used)g(on)h(the)g(command)0 2457 y(line)g(rather)h(than)h(en)m(tered)g
(at)g(a)g(task)g(prompt,)g(it)f(m)m(ust)g(b)s(e)g(preceded)h(b)m(y)f(a)
h(bac)m(kslash)f(to)i(force)f(the)g(UNIX)0 2570 y(shell)c(to)i(ignore)f
(it.)0 2730 y(The)i(expression)f(ma)m(y)j(also)e(include)e(arithmetic)i
(op)s(erators)h(and)f(functions.)46 b(T)-8 b(rigonometric)32
b(functions)f(use)0 2843 y(radians,)22 b(not)h(degrees.)38
b(The)22 b(follo)m(wing)e(arithmetic)h(op)s(erators)i(and)e(functions)f
(can)j(b)s(e)e(used)g(in)g(the)h(expression)0 2956 y(\(function)37
b(names)g(are)h(case)g(insensitiv)m(e\).)61 b(A)37 b(n)m(ull)f(v)-5
b(alue)37 b(will)d(b)s(e)j(returned)g(in)f(case)i(of)g(illegal)e(op)s
(erations)0 3069 y(suc)m(h)30 b(as)h(divide)d(b)m(y)i(zero,)i
(sqrt\(negativ)m(e\))g(log\(negativ)m(e\),)g(log10\(negativ)m(e\),)i
(arccos\(.gt.)43 b(1\),)32 b(arcsin\(.gt.)41 b(1\).)191
3295 y Fe("addition")522 b(+)477 b("subtraction")d(-)191
3408 y("multiplication")234 b(*)477 b("division")618
b(/)191 3521 y("negation")522 b(-)477 b("exponentiation")330
b(**)143 b(^)191 3634 y("absolute)45 b(value")237 b(abs\(x\))g
("cosine")714 b(cos\(x\))191 3747 y("sine")g(sin\(x\))237
b("tangent")666 b(tan\(x\))191 3860 y("arc)47 b(cosine")427
b(arccos\(x\))93 b("arc)47 b(sine")619 b(arcsin\(x\))191
3973 y("arc)47 b(tangent")379 b(arctan\(x\))93 b("arc)47
b(tangent")475 b(arctan2\(x,y\))191 4085 y("hyperbolic)45
b(cos")237 b(cosh\(x\))189 b("hyperbolic)45 b(sin")333
b(sinh\(x\))191 4198 y("hyperbolic)45 b(tan")237 b(tanh\(x\))189
b("round)46 b(to)h(nearest)f(int")h(round\(x\))191 4311
y("round)f(down)h(to)g(int")94 b(floor\(x\))141 b("round)46
b(up)h(to)h(int")285 b(ceil\(x\))191 4424 y("exponential")378
b(exp\(x\))237 b("square)46 b(root")476 b(sqrt\(x\))191
4537 y("natural)45 b(log")381 b(log\(x\))237 b("common)46
b(log")524 b(log10\(x\))191 4650 y("modulus")570 b(i)48
b(\045)f(j)286 b("random)46 b(#)h([0.0,1.0\)")141 b(random\(\))191
4763 y("minimum")570 b(min\(x,y\))141 b("maximum")666
b(max\(x,y\))191 4876 y("cumulative)45 b(sum")189 b(accum\(x\))141
b("sequential)45 b(difference")g(seqdiff\(x\))191 4989
y("if-then-else")330 b(b?x:y)0 5215 y Fi(An)31 b(alternate)h(syn)m(tax)
g(for)f(the)g(min)f(and)h(max)g(functions)f(has)h(only)f(a)i(single)e
(argumen)m(t)i(whic)m(h)e(should)f(b)s(e)i(a)0 5328 y(v)m(ector)g(v)-5
b(alue)29 b(\(see)h(b)s(elo)m(w\).)40 b(The)29 b(result)f(will)f(b)s(e)
h(the)i(minim)m(um/maxim)m(um)c(elemen)m(t)j(con)m(tained)h(within)d
(the)0 5441 y(v)m(ector.)0 5601 y(The)35 b(accum\(x\))i(function)e
(forms)g(the)h(cum)m(ulativ)m(e)g(sum)f(of)h(x,)h(elemen)m(t)g(b)m(y)f
(elemen)m(t.)57 b(V)-8 b(ector)38 b(columns)d(are)0 5714
y(supp)s(orted)i(simply)f(b)m(y)i(p)s(erforming)e(the)j(summation)f
(pro)s(cess)g(through)f(all)h(the)h(v)-5 b(alues.)64
b(Null)37 b(v)-5 b(alues)38 b(are)p eop
%%Page: 30 36
30 35 bop 0 299 a Fi(30)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(treated)30
b(as)f(0.)41 b(The)29 b(seqdi\013\(x\))g(function)e(forms)i(the)g
(sequen)m(tial)g(di\013erence)f(of)i(x,)f(elemen)m(t)h(b)m(y)f(elemen)m
(t.)40 b(The)0 668 y(\014rst)c(v)-5 b(alue)37 b(of)g(seqdi\013)f(is)g
(the)h(\014rst)g(v)-5 b(alue)36 b(of)h(x.)61 b(A)37 b(single)f(n)m(ull)
f(v)-5 b(alue)37 b(in)e(x)i(causes)h(a)f(pair)f(of)h(n)m(ulls)e(in)h
(the)0 781 y(output.)55 b(The)35 b(seqdi\013)f(and)h(accum)g(functions)
f(are)i(functional)d(in)m(v)m(erses,)k(i.e.,)g(seqdi\013\(accum\(x\)\))
f(==)f(x)g(as)0 894 y(long)30 b(as)h(no)f(n)m(ull)e(v)-5
b(alues)30 b(are)h(presen)m(t.)0 1054 y(The)38 b(follo)m(wing)f(t)m(yp)
s(e)i(casting)g(op)s(erators)g(are)g(a)m(v)-5 b(ailable,)41
b(where)d(the)h(inclosing)e(paren)m(theses)i(are)g(required)0
1167 y(and)30 b(tak)m(en)h(from)f(the)h(C)f(language)g(usage.)42
b(Also,)30 b(the)h(in)m(teger)f(to)i(real)e(casts)h(v)-5
b(alues)29 b(to)j(double)d(precision:)764 1398 y Fe("real)46
b(to)h(integer")189 b(\(int\))46 b(x)239 b(\(INT\))46
b(x)764 1510 y("integer)f(to)i(real")190 b(\(float\))46
b(i)143 b(\(FLOAT\))45 b(i)0 1741 y Fi(In)30 b(addition,)e(sev)m(eral)j
(constan)m(ts)h(are)f(built)d(in)h(for)h(use)g(in)f(n)m(umerical)g
(expressions:)382 1972 y Fe(#pi)667 b(3.1415...)284 b(#e)620
b(2.7182...)382 2085 y(#deg)f(#pi/180)380 b(#row)524
b(current)46 b(row)h(number)382 2197 y(#null)428 b(undefined)45
b(value)142 b(#snull)428 b(undefined)45 b(string)0 2428
y Fi(A)40 b(string)e(constan)m(t)j(m)m(ust)e(b)s(e)g(enclosed)g(in)g
(quotes)h(as)f(in)g('Crab'.)67 b(The)39 b("n)m(ull")g(constan)m(ts)h
(are)g(useful)e(for)0 2541 y(conditionally)d(setting)j(table)g(v)-5
b(alues)37 b(to)h(a)g(NULL,)g(or)g(unde\014ned,)f(v)-5
b(alue)38 b(\(eg.,)j("col1==-99)e(?)62 b(#NULL)38 b(:)0
2654 y(col1"\).)0 2814 y(There)27 b(is)f(also)i(a)f(function)f(for)i
(testing)f(if)f(t)m(w)m(o)j(v)-5 b(alues)27 b(are)h(close)f(to)i(eac)m
(h)f(other,)h(i.e.,)f(if)e(they)i(are)g("near")g(eac)m(h)0
2927 y(other)c(to)h(within)c(a)j(user)g(sp)s(eci\014ed)e(tolerance.)39
b(The)24 b(argumen)m(ts,)h(v)-5 b(alue)p 2503 2927 28
4 v 33 w(1)24 b(and)f(v)-5 b(alue)p 2980 2927 V 32 w(2)25
b(can)f(b)s(e)f(in)m(teger)h(or)g(real)0 3040 y(and)32
b(represen)m(t)h(the)g(t)m(w)m(o)h(v)-5 b(alues)32 b(who's)g(pro)m
(ximit)m(y)g(is)g(b)s(eing)f(tested)i(to)h(b)s(e)e(within)e(the)j(sp)s
(eci\014ed)e(tolerance,)0 3153 y(also)f(an)h(in)m(teger)f(or)h(real:)
955 3383 y Fe(near\(value_1,)44 b(value_2,)h(tolerance\))0
3614 y Fi(When)24 b(a)i(NULL,)e(or)h(unde\014ned,)f(v)-5
b(alue)24 b(is)g(encoun)m(tered)h(in)f(the)g(FITS)g(table,)i(the)f
(expression)f(will)e(ev)-5 b(aluate)25 b(to)0 3727 y(NULL)31
b(unless)e(the)i(unde\014ned)e(v)-5 b(alue)30 b(is)g(not)h(actually)f
(required)f(for)i(ev)-5 b(aluation,)31 b(e.g.)43 b("TR)m(UE)31
b(.or.)43 b(NULL")0 3840 y(ev)-5 b(aluates)31 b(to)g(TR)m(UE.)g(The)f
(follo)m(wing)e(t)m(w)m(o)k(functions)d(allo)m(w)h(some)h(NULL)f
(detection)h(and)f(handling:)430 4070 y Fe("a)47 b(null)f(value?")667
b(ISNULL\(x\))430 4183 y("define)45 b(a)j(value)e(for)h(null")190
b(DEFNULL\(x,y\))0 4414 y Fi(The)36 b(former)h(returns)e(a)i(b)s(o)s
(olean)f(v)-5 b(alue)36 b(of)h(TR)m(UE)g(if)f(the)h(argumen)m(t)g(x)g
(is)f(NULL.)h(The)f(later)h("de\014nes")g(a)0 4527 y(v)-5
b(alue)34 b(to)h(b)s(e)e(substituted)g(for)h(NULL)g(v)-5
b(alues;)36 b(it)e(returns)f(the)h(v)-5 b(alue)34 b(of)g(x)g(if)f(x)i
(is)e(not)h(NULL,)h(otherwise)e(it)0 4640 y(returns)c(the)i(v)-5
b(alue)30 b(of)g(y)-8 b(.)0 4926 y Fb(4.9.2)112 b(Bit)36
b(Masks)0 5145 y Fi(Bit)f(masks)g(can)h(b)s(e)f(used)f(to)i(select)g
(out)f(ro)m(ws)h(from)e(bit)h(columns)f(\(TF)m(ORMn)h(=)g(#X\))h(in)e
(FITS)g(\014les.)54 b(T)-8 b(o)0 5257 y(represen)m(t)30
b(the)h(mask,)g(binary)-8 b(,)29 b(o)s(ctal,)i(and)f(hex)g(formats)g
(are)h(allo)m(w)m(ed:)811 5488 y Fe(binary:)142 b
(b0110xx1010000101xxxx00)o(01)811 5601 y(octal:)190 b(o720x1)46
b(->)h(\(b111010000xxx001\))811 5714 y(hex:)286 b(h0FxD)94
b(->)47 b(\(b00001111xxxx1101\))p eop
%%Page: 31 37
31 36 bop 0 299 a Fg(4.9.)72 b(R)m(O)m(W)31 b(FIL)-8
b(TERING)31 b(SPECIFICA)-8 b(TION)2072 b Fi(31)0 555
y(In)22 b(all)g(the)h(represen)m(tations,)i(an)d(x)h(or)g(X)g(is)f
(allo)m(w)m(ed)h(in)e(the)i(mask)g(as)g(a)h(wild)c(card.)38
b(Note)25 b(that)e(the)g(x)g(represen)m(ts)0 668 y(a)k(di\013eren)m(t)g
(n)m(um)m(b)s(er)f(of)h(wild)d(card)j(bits)f(in)g(eac)m(h)i(represen)m
(tation.)40 b(All)25 b(represen)m(tations)i(are)h(case)g(insensitiv)m
(e.)0 828 y(T)-8 b(o)28 b(construct)g(the)g(b)s(o)s(olean)e(expression)
h(using)f(the)i(mask)f(as)h(the)g(b)s(o)s(olean)e(equal)h(op)s(erator)h
(describ)s(ed)e(ab)s(o)m(v)m(e)0 941 y(on)34 b(a)h(bit)f(table)h
(column.)52 b(F)-8 b(or)35 b(example,)h(if)d(y)m(ou)i(had)f(a)h(7)g
(bit)f(column)f(named)h(\015ags)h(in)e(a)i(FITS)f(table)h(and)0
1054 y(w)m(an)m(ted)c(all)e(ro)m(ws)i(ha)m(ving)f(the)g(bit)g(pattern)g
(0010011,)k(the)c(selection)h(expression)e(w)m(ould)g(b)s(e:)1336
1301 y Fe(flags)47 b(==)g(b0010011)191 1414 y(or)1336
1526 y(flags)g(.eq.)f(b10011)0 1773 y Fi(It)35 b(is)f(also)h(p)s
(ossible)d(to)k(test)g(if)e(a)h(range)g(of)g(bits)f(is)g(less)g(than,)i
(less)e(than)h(equal,)h(greater)g(than)e(and)h(greater)0
1886 y(than)30 b(equal)g(to)h(a)g(particular)e(b)s(o)s(olean)g(v)-5
b(alue:)1336 2132 y Fe(flags)47 b(<=)g(bxxx010xx)1336
2245 y(flags)g(.gt.)f(bxxx100xx)1336 2358 y(flags)h(.le.)f(b1xxxxxxx)0
2605 y Fi(Notice)31 b(the)g(use)f(of)h(the)f(x)g(bit)g(v)-5
b(alue)30 b(to)h(limit)d(the)i(range)h(of)g(bits)e(b)s(eing)g
(compared.)0 2765 y(It)j(is)g(not)g(necessary)h(to)g(sp)s(ecify)e(the)i
(leading)e(\(most)i(signi\014can)m(t\))f(zero)h(\(0\))g(bits)e(in)g
(the)i(mask,)g(as)g(sho)m(wn)e(in)0 2878 y(the)g(second)f(expression)f
(ab)s(o)m(v)m(e.)0 3038 y(Bit)43 b(wise)f(AND,)i(OR)e(and)g(NOT)h(op)s
(erations)f(are)h(also)g(p)s(ossible)d(on)j(t)m(w)m(o)h(or)f(more)g
(bit)f(\014elds)f(using)h(the)0 3151 y('&'\(AND\),)35
b(')p Fc(j)p Fi('\(OR\),)g(and)e(the)h(')10 b(!'\(NOT\))34
b(op)s(erators.)51 b(All)32 b(of)h(these)h(op)s(erators)g(result)e(in)h
(a)h(bit)e(\014eld)g(whic)m(h)0 3264 y(can)f(then)f(b)s(e)f(used)h
(with)f(the)i(equal)f(op)s(erator.)41 b(F)-8 b(or)31
b(example:)1241 3510 y Fe(\(!flags\))45 b(==)j(b1101100)1241
3623 y(\(flags)e(&)h(b1000001\))f(==)h(bx000001)0 3870
y Fi(Bit)34 b(\014elds)f(can)h(b)s(e)f(app)s(ended)g(as)h(w)m(ell)f
(using)g(the)h('+')g(op)s(erator.)53 b(Strings)32 b(can)j(b)s(e)e
(concatenated)j(this)d(w)m(a)m(y)-8 b(,)0 3983 y(to)s(o.)0
4271 y Fb(4.9.3)112 b(V)-9 b(ector)36 b(Columns)0 4490
y Fi(V)-8 b(ector)37 b(columns)d(can)i(also)f(b)s(e)g(used)f(in)g
(building)e(the)j(expression.)55 b(No)36 b(sp)s(ecial)e(syn)m(tax)h(is)
g(required)e(if)i(one)0 4603 y(w)m(an)m(ts)46 b(to)f(op)s(erate)h(on)f
(all)f(elemen)m(ts)h(of)g(the)h(v)m(ector.)86 b(Simply)42
b(use)j(the)g(column)f(name)h(as)g(for)g(a)g(scalar)0
4716 y(column.)c(V)-8 b(ector)32 b(columns)e(can)h(b)s(e)f(freely)g(in)
m(termixed)g(with)f(scalar)i(columns)e(or)i(constan)m(ts)h(in)e
(virtually)e(all)0 4829 y(expressions.)39 b(The)29 b(result)f(will)e(b)
s(e)j(of)g(the)g(same)h(dimension)c(as)k(the)f(v)m(ector.)42
b(Tw)m(o)29 b(v)m(ectors)i(in)d(an)h(expression,)0 4942
y(though,)f(need)e(to)i(ha)m(v)m(e)g(the)f(same)g(n)m(um)m(b)s(er)f(of)
h(elemen)m(ts)g(and)f(ha)m(v)m(e)j(the)e(same)g(dimensions.)37
b(The)26 b(only)g(places)0 5055 y(a)35 b(v)m(ector)h(column)d(cannot)i
(b)s(e)f(used)f(\(for)i(no)m(w,)g(an)m(yw)m(a)m(y\))h(are)f(the)g(SA)m
(O)f(region)g(functions)f(and)g(the)i(NEAR)0 5168 y(b)s(o)s(olean)29
b(function.)0 5328 y(Arithmetic)22 b(and)g(logical)h(op)s(erations)f
(are)i(all)e(p)s(erformed)f(on)i(an)g(elemen)m(t)g(b)m(y)g(elemen)m(t)h
(basis.)37 b(Comparing)22 b(t)m(w)m(o)0 5441 y(v)m(ector)32
b(columns,)d(eg)i("COL1)f(==)g(COL2",)g(th)m(us)g(results)f(in)g
(another)h(v)m(ector)i(of)e(b)s(o)s(olean)g(v)-5 b(alues)29
b(indicating)0 5554 y(whic)m(h)g(elemen)m(ts)i(of)f(the)h(t)m(w)m(o)h
(v)m(ectors)f(are)g(equal.)0 5714 y(Eigh)m(t)f(functions)f(are)i(a)m(v)
-5 b(ailable)30 b(that)h(op)s(erate)g(on)f(a)h(v)m(ector)h(and)d
(return)h(a)g(scalar)h(result:)p eop
%%Page: 32 38
32 37 bop 0 299 a Fi(32)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191 555 y
Fe("minimum")284 b(MIN\(V\))475 b("maximum")714 b(MAX\(V\))191
668 y("average")284 b(AVERAGE\(V\))f("median")762 b(MEDIAN\(V\))191
781 y("sumation")236 b(SUM\(V\))475 b("standard)46 b(deviation")188
b(STDDEV\(V\))191 894 y("#)47 b(of)g(values")94 b(NELEM\(V\))379
b("#)48 b(of)f(non-null)e(values")94 b(NVALID\(V\))0
1217 y Fi(where)40 b(V)h(represen)m(ts)g(the)g(name)g(of)h(a)f(v)m
(ector)h(column)e(or)h(a)h(man)m(ually)d(constructed)i(v)m(ector)i
(using)c(curly)0 1330 y(brac)m(k)m(ets)27 b(as)f(describ)s(ed)d(b)s
(elo)m(w.)38 b(The)25 b(\014rst)g(6)h(of)g(these)g(functions)e(ignore)h
(an)m(y)h(n)m(ull)d(v)-5 b(alues)25 b(in)f(the)i(v)m(ector)h(when)0
1443 y(computing)i(the)i(result.)0 1603 y(The)h(SUM)h(function)e
(literally)g(sums)g(all)h(the)h(elemen)m(ts)g(in)f(x,)h(returning)e(a)i
(scalar)g(v)-5 b(alue.)47 b(If)32 b(x)h(is)f(a)h(b)s(o)s(olean)0
1716 y(v)m(ector,)40 b(SUM)c(returns)f(the)h(n)m(um)m(b)s(er)f(of)i(TR)
m(UE)f(elemen)m(ts.)59 b(The)36 b(NELEM)g(function)f(returns)g(the)h(n)
m(um)m(b)s(er)0 1829 y(of)i(elemen)m(ts)g(in)f(v)m(ector)i(x)f(whereas)
f(NV)-10 b(ALID)39 b(return)d(the)i(n)m(um)m(b)s(er)f(of)h(non-n)m(ull)
d(elemen)m(ts)k(in)d(the)i(v)m(ector.)0 1942 y(\(NELEM)28
b(also)g(op)s(erates)g(on)g(bit)e(and)h(string)g(columns,)g(returning)f
(their)h(column)f(widths.\))39 b(As)27 b(an)h(example,)0
2055 y(to)42 b(test)g(whether)f(all)f(elemen)m(ts)i(of)g(t)m(w)m(o)g(v)
m(ectors)h(satisfy)e(a)h(giv)m(en)f(logical)g(comparison,)i(one)f(can)g
(use)f(the)0 2168 y(expression)668 2492 y Fe(SUM\()47
b(COL1)f(>)i(COL2)f(\))g(==)g(NELEM\()f(COL1)h(\))0 2815
y Fi(whic)m(h)31 b(will)e(return)i(TR)m(UE)h(if)f(all)g(elemen)m(ts)h
(of)g(COL1)g(are)g(greater)h(than)f(their)f(corresp)s(onding)f(elemen)m
(ts)i(in)0 2928 y(COL2.)0 3088 y(T)-8 b(o)32 b(sp)s(ecify)e(a)j(single)
d(elemen)m(t)i(of)g(a)g(v)m(ector,)i(giv)m(e)e(the)g(column)e(name)i
(follo)m(w)m(ed)f(b)m(y)h(a)g(comma-separated)h(list)0
3201 y(of)c(co)s(ordinates)f(enclosed)h(in)e(square)i(brac)m(k)m(ets.)
41 b(F)-8 b(or)30 b(example,)f(if)e(a)i(v)m(ector)i(column)c(named)i
(PHAS)f(exists)g(in)0 3314 y(the)f(table)f(as)h(a)g(one)g(dimensional,)
e(256)j(comp)s(onen)m(t)f(list)e(of)i(n)m(um)m(b)s(ers)e(from)h(whic)m
(h)g(y)m(ou)h(w)m(an)m(ted)g(to)g(select)h(the)0 3427
y(57th)k(comp)s(onen)m(t)g(for)f(use)g(in)f(the)i(expression,)e(then)i
(PHAS[57])g(w)m(ould)e(do)i(the)f(tric)m(k.)44 b(Higher)31
b(dimensional)0 3540 y(arra)m(ys)41 b(of)h(data)f(ma)m(y)h(app)s(ear)f
(in)e(a)j(column.)72 b(But)41 b(in)f(order)g(to)i(in)m(terpret)e(them,)
k(the)e(TDIMn)e(k)m(eyw)m(ord)0 3653 y(m)m(ust)34 b(app)s(ear)g(in)f
(the)h(header.)52 b(Assuming)33 b(that)i(a)f(\(4,4,4,4\))k(arra)m(y)c
(is)g(pac)m(k)m(ed)h(in)m(to)f(eac)m(h)i(ro)m(w)e(of)g(a)h(column)0
3766 y(named)26 b(ARRA)-8 b(Y4D,)28 b(the)f(\(1,2,3,4\))i(comp)s(onen)m
(t)e(elemen)m(t)f(of)h(eac)m(h)g(ro)m(w)g(is)e(accessed)j(b)m(y)e(ARRA)
-8 b(Y4D[1,2,3,4].)0 3878 y(Arra)m(ys)33 b(up)e(to)j(dimension)c(5)j
(are)f(curren)m(tly)g(supp)s(orted.)46 b(Eac)m(h)33 b(v)m(ector)h
(index)d(can)i(itself)e(b)s(e)h(an)h(expression,)0 3991
y(although)38 b(it)g(m)m(ust)h(ev)-5 b(aluate)39 b(to)g(an)g(in)m
(teger)g(v)-5 b(alue)38 b(within)e(the)j(b)s(ounds)d(of)j(the)g(v)m
(ector.)67 b(V)-8 b(ector)40 b(columns)0 4104 y(whic)m(h)30
b(con)m(tain)h(spaces)h(or)f(arithmetic)f(op)s(erators)i(m)m(ust)f(ha)m
(v)m(e)h(their)e(names)h(enclosed)g(in)f("$")i(c)m(haracters)h(as)0
4217 y(with)c($ARRA)-8 b(Y-4D$[1,2,3,4].)0 4377 y(A)45
b(more)f(C-lik)m(e)g(syn)m(tax)i(for)e(sp)s(ecifying)e(v)m(ector)47
b(indices)42 b(is)i(also)h(a)m(v)-5 b(ailable.)82 b(The)45
b(elemen)m(t)g(used)e(in)h(the)0 4490 y(preceding)27
b(example)h(alternativ)m(ely)g(could)f(b)s(e)h(sp)s(eci\014ed)f(with)f
(the)j(syn)m(tax)g(ARRA)-8 b(Y4D[4][3][2][1].)45 b(Note)30
b(the)0 4603 y(rev)m(erse)40 b(order)f(of)h(indices)d(\(as)j(in)e(C\),)
i(as)f(w)m(ell)g(as)g(the)h(fact)g(that)g(the)g(v)-5
b(alues)39 b(are)g(still)f(ones-based)h(\(as)h(in)0 4716
y(F)-8 b(ortran)39 b({)g(adopted)g(to)g(a)m(v)m(oid)g(am)m(biguit)m(y)f
(for)h(1D)g(v)m(ectors\).)67 b(With)38 b(this)g(syn)m(tax,)j(one)e(do)s
(es)f(not)h(need)f(to)0 4829 y(sp)s(ecify)29 b(all)g(of)i(the)f
(indices.)39 b(T)-8 b(o)31 b(extract)h(a)f(3D)g(slice)e(of)i(this)e(4D)
i(arra)m(y)-8 b(,)32 b(use)e(ARRA)-8 b(Y4D[4].)0 4989
y(V)g(ariable-length)30 b(v)m(ector)i(columns)d(are)h(not)h(supp)s
(orted.)0 5149 y(V)-8 b(ectors)24 b(can)e(b)s(e)f(man)m(ually)f
(constructed)j(within)c(the)j(expression)f(using)f(a)i(comma-separated)
i(list)d(of)h(elemen)m(ts)0 5262 y(surrounded)35 b(b)m(y)j(curly)f
(braces)i(\(')p Fc(fg)p Fi('\).)66 b(F)-8 b(or)38 b(example,)i(')p
Fc(f)p Fi(1,3,6,1)p Fc(g)p Fi(')i(is)c(a)g(4-elemen)m(t)h(v)m(ector)h
(con)m(taining)e(the)0 5375 y(v)-5 b(alues)25 b(1,)i(3,)g(6,)g(and)e
(1.)40 b(The)25 b(v)m(ector)i(can)f(con)m(tain)g(only)f(b)s(o)s(olean,)
g(in)m(teger,)j(and)d(real)g(v)-5 b(alues)25 b(\(or)h(expressions\).)0
5488 y(The)e(elemen)m(ts)g(will)e(b)s(e)i(promoted)g(to)h(the)g
(highest)e(datat)m(yp)s(e)i(presen)m(t.)39 b(An)m(y)24
b(elemen)m(ts)h(whic)m(h)e(are)i(themselv)m(es)0 5601
y(v)m(ectors,)40 b(will)34 b(b)s(e)i(expanded)g(out)h(with)f(eac)m(h)h
(of)g(its)f(elemen)m(ts)i(b)s(ecoming)d(an)i(elemen)m(t)g(in)f(the)h
(constructed)0 5714 y(v)m(ector.)p eop
%%Page: 33 39
33 38 bop 0 299 a Fg(4.9.)72 b(R)m(O)m(W)31 b(FIL)-8
b(TERING)31 b(SPECIFICA)-8 b(TION)2072 b Fi(33)0 555
y Fb(4.9.4)112 b(Go)s(o)s(d)38 b(Time)e(In)m(terv)-6
b(al)37 b(Filtering)0 774 y Fi(A)44 b(common)g(\014ltering)f(metho)s(d)
g(in)m(v)m(olv)m(es)h(selecting)g(ro)m(ws)g(whic)m(h)e(ha)m(v)m(e)k(a)e
(time)g(v)-5 b(alue)43 b(whic)m(h)g(lies)f(within)0 887
y(what)37 b(is)f(called)h(a)h(Go)s(o)s(d)f(Time)f(In)m(terv)-5
b(al)37 b(or)g(GTI.)g(The)g(time)g(in)m(terv)-5 b(als)36
b(are)i(de\014ned)e(in)g(a)h(separate)i(FITS)0 1000 y(table)h
(extension)g(whic)m(h)e(con)m(tains)i(2)h(columns)e(giving)f(the)j
(start)f(and)g(stop)g(time)f(of)h(eac)m(h)i(go)s(o)s(d)e(in)m(terv)-5
b(al.)0 1113 y(The)34 b(\014ltering)f(op)s(eration)i(accepts)h(only)d
(those)j(ro)m(ws)e(of)h(the)g(input)e(table)i(whic)m(h)e(ha)m(v)m(e)j
(an)f(asso)s(ciated)g(time)0 1226 y(whic)m(h)f(falls)h(within)e(one)j
(of)g(the)g(time)f(in)m(terv)-5 b(als)35 b(de\014ned)g(in)f(the)i(GTI)g
(extension.)56 b(A)36 b(high)f(lev)m(el)g(function,)0
1339 y(gti\014lter\(a,b,c,d\),)42 b(is)d(a)m(v)-5 b(ailable)39
b(whic)m(h)f(ev)-5 b(aluates)40 b(eac)m(h)h(ro)m(w)e(of)h(the)f(input)f
(table)h(and)g(returns)f(TR)m(UE)i(or)0 1452 y(F)-10
b(ALSE)30 b(dep)s(ending)e(whether)i(the)g(ro)m(w)h(is)e(inside)f(or)i
(outside)g(the)h(go)s(o)s(d)f(time)g(in)m(terv)-5 b(al.)40
b(The)30 b(syn)m(tax)h(is)286 1696 y Fe(gtifilter\()45
b([)j("gtifile")d([,)i(expr)g([,)g("STARTCOL",)e("STOPCOL")g(])j(])f(])
g(\))0 1941 y Fi(where)20 b(eac)m(h)h("[]")h(demarks)e(optional)f
(parameters.)38 b(Note)21 b(that)g(the)g(quotes)f(around)g(the)g
(gti\014le)g(and)f(ST)-8 b(AR)g(T/STOP)0 2054 y(column)32
b(are)i(required.)49 b(Either)33 b(single)f(or)i(double)e(quotes)i(ma)m
(y)g(b)s(e)f(used.)50 b(In)33 b(cases)h(where)g(this)e(expression)0
2167 y(is)d(en)m(tered)h(on)g(the)g(Unix)f(command)h(line,)e(enclose)i
(the)g(en)m(tire)g(expression)f(in)f(double)h(quotes,)h(and)g(then)f
(use)0 2280 y(single)23 b(quotes)i(within)c(the)k(expression)e(to)i
(enclose)f(the)h('gti\014le')f(and)f(other)i(terms.)38
b(It)25 b(is)e(also)h(usually)e(p)s(ossible)0 2393 y(to)38
b(do)e(the)h(rev)m(erse,)j(and)c(enclose)h(the)g(whole)f(expression)g
(in)f(single)h(quotes)h(and)f(then)h(use)f(double)f(quotes)0
2506 y(within)c(the)i(expression.)49 b(The)33 b(gti\014le,)g(if)g(sp)s
(eci\014ed,)f(can)i(b)s(e)f(blank)f(\(""\))j(whic)m(h)d(will)e(mean)k
(to)g(use)f(the)h(\014rst)0 2619 y(extension)f(with)g(the)g(name)h
("*GTI*")h(in)e(the)g(curren)m(t)h(\014le,)g(a)g(plain)d(extension)i
(sp)s(eci\014er)f(\(eg,)k("+2",)g("[2]",)0 2731 y(or)30
b("[STDGTI]"\))i(whic)m(h)d(will)f(b)s(e)i(used)f(to)j(select)f(an)f
(extension)g(in)f(the)i(curren)m(t)f(\014le,)g(or)g(a)h(regular)f
(\014lename)0 2844 y(with)f(or)i(without)e(an)i(extension)f(sp)s
(eci\014er)f(whic)m(h)g(in)g(the)i(latter)g(case)g(will)d(mean)i(to)i
(use)e(the)h(\014rst)e(extension)0 2957 y(with)36 b(an)h(extension)f
(name)i("*GTI*".)62 b(Expr)36 b(can)h(b)s(e)g(an)m(y)g(arithmetic)g
(expression,)g(including)d(simply)h(the)0 3070 y(time)g(column)g(name.)
57 b(A)36 b(v)m(ector)h(time)f(expression)e(will)f(pro)s(duce)i(a)h(v)m
(ector)h(b)s(o)s(olean)e(result.)56 b(ST)-8 b(AR)g(TCOL)0
3183 y(and)27 b(STOPCOL)f(are)i(the)g(names)g(of)g(the)g(ST)-8
b(AR)g(T/STOP)26 b(columns)h(in)f(the)i(GTI)g(extension.)40
b(If)27 b(one)h(of)g(them)0 3296 y(is)h(sp)s(eci\014ed,)g(they)i(b)s
(oth)f(m)m(ust)g(b)s(e.)0 3456 y(In)21 b(its)g(simplest)f(form,)k(no)d
(parameters)h(need)g(to)h(b)s(e)e(pro)m(vided)f({)i(default)f(v)-5
b(alues)21 b(will)f(b)s(e)h(used.)37 b(The)21 b(expression)0
3569 y("gti\014lter\(\)")31 b(is)f(equiv)-5 b(alen)m(t)29
b(to)334 3814 y Fe(gtifilter\()45 b("",)i(TIME,)f("*START*",)f
("*STOP*")h(\))0 4059 y Fi(This)30 b(will)e(searc)m(h)k(the)g(curren)m
(t)f(\014le)f(for)h(a)h(GTI)f(extension,)g(\014lter)g(the)g(TIME)g
(column)f(in)g(the)i(curren)m(t)f(table,)0 4172 y(using)i(ST)-8
b(AR)g(T/STOP)34 b(times)h(tak)m(en)g(from)g(columns)e(in)h(the)h(GTI)g
(extension)f(with)g(names)g(con)m(taining)h(the)0 4284
y(strings)c("ST)-8 b(AR)g(T")33 b(and)e("STOP".)46 b(The)32
b(wildcards)d(\('*'\))34 b(allo)m(w)e(sligh)m(t)f(v)-5
b(ariations)31 b(in)g(naming)g(con)m(v)m(en)m(tions)0
4397 y(suc)m(h)38 b(as)g("TST)-8 b(AR)g(T")39 b(or)f("ST)-8
b(AR)g(TTIME".)65 b(The)37 b(same)i(default)f(v)-5 b(alues)37
b(apply)g(for)h(unsp)s(eci\014ed)e(parame-)0 4510 y(ters)g(when)f(the)h
(\014rst)f(one)i(or)f(t)m(w)m(o)h(parameters)f(are)h(sp)s(eci\014ed.)55
b(The)36 b(function)e(automatically)i(searc)m(hes)h(for)0
4623 y(TIMEZER)m(O/I/F)g(k)m(eyw)m(ords)f(in)f(the)i(curren)m(t)f(and)g
(GTI)g(extensions,)h(applying)e(a)h(relativ)m(e)h(time)f(o\013set,)j
(if)0 4736 y(necessary)-8 b(.)0 5024 y Fb(4.9.5)112 b(Spatial)37
b(Region)g(Filtering)0 5243 y Fi(Another)h(common)g(\014ltering)e
(metho)s(d)h(selects)h(ro)m(ws)g(based)g(on)f(whether)h(the)g(spatial)f
(p)s(osition)e(asso)s(ciated)0 5356 y(with)c(eac)m(h)j(ro)m(w)e(is)g
(lo)s(cated)h(within)d(a)j(giv)m(en)f(2-dimensional)e(region.)47
b(The)32 b(syn)m(tax)h(for)f(this)g(high-lev)m(el)f(\014lter)0
5469 y(is)334 5714 y Fe(regfilter\()45 b("regfilename")f([)k(,)f
(Xexpr,)f(Yexpr)h([)g(,)h("wcs)e(cols")h(])g(])g(\))p
eop
%%Page: 34 40
34 39 bop 0 299 a Fi(34)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fi(where)22
b(eac)m(h)i("[]")g(demarks)e(optional)g(parameters.)38
b(The)22 b(region)g(\014le)g(name)g(is)g(required)f(and)h(m)m(ust)g(b)s
(e)g(enclosed)0 668 y(in)38 b(quotes.)70 b(The)39 b(remaining)f
(parameters)i(are)g(optional.)68 b(The)39 b(region)g(\014le)g(is)g(an)g
(ASCI)s(I)g(text)h(\014le)f(whic)m(h)0 781 y(con)m(tains)30
b(a)f(list)f(of)i(one)f(or)h(more)f(geometric)i(shap)s(es)d(\(circle,)i
(ellipse,)d(b)s(o)m(x,)j(etc.\))42 b(whic)m(h)28 b(de\014nes)g(a)i
(region)f(on)0 894 y(the)i(celestial)f(sphere)g(or)h(an)g(area)g
(within)d(a)j(particular)f(2D)h(image.)42 b(The)30 b(region)h(\014le)f
(is)f(t)m(ypically)h(generated)0 1007 y(using)21 b(an)i(image)g(displa)
m(y)e(program)i(suc)m(h)f(as)h(fv/PO)m(W)h(\(distribute)c(b)m(y)j(the)g
(HEASAR)m(C\),)g(or)g(ds9)g(\(distributed)0 1120 y(b)m(y)k(the)g
(Smithsonian)d(Astroph)m(ysical)i(Observ)-5 b(atory\).)39
b(Users)27 b(should)e(refer)h(to)i(the)f(do)s(cumen)m(tation)f(pro)m
(vided)0 1233 y(with)j(these)i(programs)f(for)g(more)h(details)e(on)h
(the)h(syn)m(tax)g(used)e(in)g(the)i(region)f(\014les.)0
1393 y(In)44 b(its)g(simpliest)e(form,)47 b(\(e.g.,)j
(reg\014lter\("region.reg"\))c(\))f(the)g(co)s(ordinates)f(in)f(the)i
(default)e('X')i(and)f('Y')0 1506 y(columns)32 b(will)e(b)s(e)i(used)g
(to)i(determine)e(if)f(eac)m(h)j(ro)m(w)f(is)f(inside)f(or)i(outside)f
(the)h(area)h(sp)s(eci\014ed)d(in)g(the)i(region)0 1619
y(\014le.)40 b(Alternate)31 b(p)s(osition)d(column)h(names,)i(or)f
(expressions,)f(ma)m(y)i(b)s(e)f(en)m(tered)h(if)e(needed,)i(as)f(in)
382 1867 y Fe(regfilter\("region.reg",)41 b(XPOS,)47
b(YPOS\))0 2116 y Fi(Region)36 b(\014ltering)e(can)i(b)s(e)f(applied)e
(most)j(unam)m(biguously)d(if)i(the)h(p)s(ositions)e(in)g(the)i(region)
f(\014le)g(and)g(in)g(the)0 2229 y(table)g(to)h(b)s(e)e(\014ltered)g
(are)i(b)s(oth)e(giv)m(e)i(in)e(terms)h(of)g(absolute)g(celestial)g(co)
s(ordinate)g(units.)53 b(In)35 b(this)f(case)i(the)0
2342 y(lo)s(cations)24 b(and)f(sizes)h(of)h(the)f(geometric)h(shap)s
(es)f(in)f(the)h(region)g(\014le)f(are)i(sp)s(eci\014ed)e(in)g(angular)
g(units)g(on)h(the)g(sky)0 2455 y(\(e.g.,)32 b(p)s(ositions)c(giv)m(en)
j(in)e(R.A.)h(and)g(Dec.)42 b(and)30 b(sizes)g(in)f(arcseconds)h(or)h
(arcmin)m(utes\).)40 b(Similarly)-8 b(,)27 b(eac)m(h)32
b(ro)m(w)0 2568 y(of)h(the)h(\014ltered)e(table)h(will)d(ha)m(v)m(e)35
b(a)e(celestial)g(co)s(ordinate)g(asso)s(ciated)g(with)f(it.)49
b(This)31 b(asso)s(ciation)i(is)f(usually)0 2681 y(implemen)m(ted)37
b(using)f(a)j(set)g(of)f(so-called)g('W)-8 b(orld)38
b(Co)s(ordinate)g(System')g(\(or)h(W)m(CS\))f(FITS)g(k)m(eyw)m(ords)g
(that)0 2794 y(de\014ne)27 b(the)g(co)s(ordinate)g(transformation)g
(that)h(m)m(ust)f(b)s(e)f(applied)f(to)j(the)g(v)-5 b(alues)26
b(in)g(the)i('X')g(and)e('Y')i(columns)0 2906 y(to)j(calculate)g(the)f
(co)s(ordinate.)0 3067 y(Alternativ)m(ely)-8 b(,)27 b(one)g(can)g(p)s
(erform)e(spatial)h(\014ltering)e(using)h(unitless)g('pixel')g(co)s
(ordinates)i(for)f(the)h(regions)f(and)0 3180 y(ro)m(w)33
b(p)s(ositions.)47 b(In)33 b(this)f(case)i(the)f(user)g(m)m(ust)g(b)s
(e)f(careful)g(to)i(ensure)f(that)g(the)h(p)s(ositions)d(in)h(the)h(2)g
(\014les)g(are)0 3292 y(self-consisten)m(t.)52 b(A)34
b(t)m(ypical)g(problem)e(is)h(that)i(the)f(region)g(\014le)f(ma)m(y)i
(b)s(e)e(generated)j(using)c(a)j(binned)c(image,)0 3405
y(but)h(the)h(un)m(binned)d(co)s(ordinates)i(are)h(giv)m(en)g(in)e(the)
i(ev)m(en)m(t)i(table.)47 b(The)32 b(R)m(OSA)-8 b(T)33
b(ev)m(en)m(ts)h(\014les,)f(for)f(example,)0 3518 y(ha)m(v)m(e)f(X)f
(and)f(Y)g(pixel)f(co)s(ordinates)h(that)i(range)f(from)f(1)h(-)g
(15360.)42 b(These)30 b(co)s(ordinates)f(are)h(t)m(ypically)e(binned)0
3631 y(b)m(y)33 b(a)h(factor)g(of)f(32)h(to)g(pro)s(duce)e(a)i(480x480)
i(pixel)31 b(image.)50 b(If)32 b(one)i(then)f(uses)g(a)g(region)g
(\014le)f(generated)i(from)0 3744 y(this)29 b(image)i(\(in)f(image)g
(pixel)f(units\))h(to)h(\014lter)e(the)i(R)m(OSA)-8 b(T)30
b(ev)m(en)m(ts)i(\014le,)e(then)g(the)h(X)g(and)f(Y)g(column)g(v)-5
b(alues)0 3857 y(m)m(ust)30 b(b)s(e)g(con)m(v)m(erted)i(to)f(corresp)s
(onding)d(pixel)h(units)g(as)h(in:)382 4106 y Fe
(regfilter\("rosat.reg",)42 b(X/32.+.5,)j(Y/32.+.5\))0
4354 y Fi(Note)h(that)f(this)e(binning)e(con)m(v)m(ersion)k(is)e(not)i
(necessary)g(if)e(the)i(region)f(\014le)f(is)h(sp)s(eci\014ed)e(using)h
(celestial)0 4467 y(co)s(ordinate)h(units)f(instead)g(of)h(pixel)f
(units)g(b)s(ecause)h(CFITSIO)e(is)i(then)f(able)h(to)h(directly)e
(compare)i(the)0 4580 y(celestial)27 b(co)s(ordinate)h(of)f(eac)m(h)i
(ro)m(w)f(in)e(the)i(table)f(with)g(the)g(celestial)h(co)s(ordinates)f
(in)f(the)i(region)f(\014le)g(without)0 4693 y(ha)m(ving)j(to)h(kno)m
(w)f(an)m(ything)g(ab)s(out)g(ho)m(w)h(the)f(image)h(ma)m(y)g(ha)m(v)m
(e)g(b)s(een)f(binned.)0 4853 y(The)f(last)g("w)m(cs)h(cols")g
(parameter)g(should)d(rarely)h(b)s(e)h(needed.)40 b(If)29
b(supplied,)d(this)j(string)f(con)m(tains)i(the)f(names)0
4966 y(of)37 b(the)g(2)h(columns)e(\(space)i(or)f(comma)g(separated\))h
(whic)m(h)e(ha)m(v)m(e)i(the)g(asso)s(ciated)f(W)m(CS)g(k)m(eyw)m
(ords.)61 b(If)37 b(not)0 5079 y(supplied,)d(the)i(\014lter)f(will)f
(scan)i(the)g(X)g(and)f(Y)h(expressions)f(for)h(column)e(names.)58
b(If)35 b(only)g(one)i(is)e(found)f(in)0 5192 y(eac)m(h)e(expression,)d
(those)i(columns)e(will)f(b)s(e)h(used,)h(otherwise)g(an)g(error)g
(will)e(b)s(e)i(returned.)0 5352 y(These)g(region)g(shap)s(es)g(are)g
(supp)s(orted)f(\(names)h(are)h(case)h(insensitiv)m(e\):)334
5601 y Fe(Point)428 b(\()48 b(X1,)f(Y1)g(\))715 b(<-)48
b(One)f(pixel)f(square)g(region)334 5714 y(Line)476 b(\()48
b(X1,)f(Y1,)g(X2,)f(Y2)i(\))333 b(<-)48 b(One)f(pixel)f(wide)h(region)p
eop
%%Page: 35 41
35 40 bop 0 299 a Fg(4.9.)72 b(R)m(O)m(W)31 b(FIL)-8
b(TERING)31 b(SPECIFICA)-8 b(TION)2072 b Fi(35)334 555
y Fe(Polygon)332 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(...)g(\))95
b(<-)48 b(Rest)e(are)h(interiors)e(with)334 668 y(Rectangle)236
b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(A)h(\))334 b(|)47 b(boundaries)e
(considered)334 781 y(Box)524 b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i
(\))143 b(V)47 b(within)f(the)h(region)334 894 y(Diamond)332
b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i(\))334 1007
y(Circle)380 b(\()48 b(Xc,)f(Yc,)g(R)g(\))334 1120 y(Annulus)332
b(\()48 b(Xc,)f(Yc,)g(Rin,)f(Rout)h(\))334 1233 y(Ellipse)332
b(\()48 b(Xc,)f(Yc,)g(Rx,)f(Ry,)h(A)h(\))334 1346 y(Elliptannulus)c(\()
k(Xc,)f(Yc,)g(Rinx,)f(Riny,)g(Routx,)g(Routy,)g(Ain,)h(Aout)g(\))334
1458 y(Sector)380 b(\()48 b(Xc,)f(Yc,)g(Amin,)f(Amax)h(\))0
1732 y Fi(where)28 b(\(Xc,Yc\))j(is)c(the)i(co)s(ordinate)g(of)f(the)h
(shap)s(e's)f(cen)m(ter;)j(\(X#,Y#\))e(are)g(the)g(co)s(ordinates)f(of)
h(the)g(shap)s(e's)0 1845 y(edges;)39 b(Rxxx)c(are)g(the)h(shap)s(es')f
(v)-5 b(arious)34 b(Radii)g(or)h(semima)5 b(jor/minor)34
b(axes;)k(and)d(Axxx)g(are)h(the)g(angles)f(of)0 1958
y(rotation)d(\(or)f(b)s(ounding)e(angles)i(for)g(Sector\))h(in)e
(degrees.)44 b(F)-8 b(or)32 b(rotated)h(shap)s(es,)e(the)g(rotation)h
(angle)f(can)h(b)s(e)0 2071 y(left)f(o\013,)i(indicating)c(no)i
(rotation.)45 b(Common)31 b(alternate)h(names)f(for)h(the)f(regions)g
(can)h(also)g(b)s(e)e(used:)43 b(rotb)s(o)m(x)0 2184
y(=)29 b(b)s(o)m(x;)g(rotrectangle)h(=)f(rectangle;)h(\(rot\)rhom)m
(bus)f(=)f(\(rot\)diamond;)i(and)e(pie)g(=)g(sector.)42
b(When)28 b(a)i(shap)s(e's)0 2297 y(name)e(is)f(preceded)g(b)m(y)h(a)g
(min)m(us)f(sign,)g('-',)j(the)e(de\014ned)e(region)i(is)f(instead)g
(the)h(area)h(*outside*)f(its)f(b)s(oundary)0 2410 y(\(ie,)35
b(the)f(region)g(is)f(in)m(v)m(erted\).)52 b(All)32 b(the)i(shap)s(es)f
(within)f(a)i(single)f(region)g(\014le)h(are)g(OR'd)f(together)j(to)e
(create)0 2523 y(the)29 b(region,)h(and)e(the)i(order)f(is)f
(signi\014can)m(t.)39 b(The)29 b(o)m(v)m(erall)g(w)m(a)m(y)i(of)e(lo)s
(oking)f(at)i(region)f(\014les)f(is)g(that)i(if)e(the)i(\014rst)0
2636 y(region)e(is)g(an)h(excluded)f(region)g(then)g(a)i(dumm)m(y)d
(included)f(region)j(of)g(the)g(whole)f(detector)i(is)e(inserted)f(in)h
(the)0 2749 y(fron)m(t.)40 b(Then)25 b(eac)m(h)j(region)e(sp)s
(eci\014cation)g(as)h(it)f(is)g(pro)s(cessed)g(o)m(v)m(errides)g(an)m
(y)h(selections)g(inside)d(of)j(that)g(region)0 2861
y(sp)s(eci\014ed)35 b(b)m(y)h(previous)f(regions.)58
b(Another)37 b(w)m(a)m(y)g(of)g(thinking)d(ab)s(out)i(this)f(is)h(that)
h(if)e(a)i(previous)e(excluded)0 2974 y(region)30 b(is)f(completely)h
(inside)f(of)h(a)h(subsequen)m(t)e(included)f(region)i(the)h(excluded)e
(region)h(is)f(ignored.)0 3135 y(The)44 b(p)s(ositional)f(co)s
(ordinates)i(ma)m(y)g(b)s(e)g(giv)m(en)g(either)f(in)g(pixel)f(units,)k
(decimal)d(degrees)i(or)f(hh:mm:ss.s,)0 3247 y(dd:mm:ss.s)25
b(units.)37 b(The)26 b(shap)s(e)f(sizes)h(ma)m(y)g(b)s(e)g(giv)m(en)g
(in)e(pixels,)i(degrees,)h(arcmin)m(utes,)g(or)f(arcseconds.)40
b(Lo)s(ok)0 3360 y(at)31 b(examples)f(of)g(region)g(\014le)g(pro)s
(duced)e(b)m(y)i(fv/PO)m(W)h(or)g(ds9)f(for)g(further)f(details)g(of)i
(the)f(region)g(\014le)f(format.)0 3521 y(There)37 b(are)g(three)g
(functions)f(that)h(are)h(primarily)c(for)i(use)h(with)f(SA)m(O)h
(region)f(\014les)g(and)h(the)g(FSA)m(OI)g(task,)0 3633
y(but)e(they)h(can)h(b)s(e)e(used)g(directly)-8 b(.)57
b(They)36 b(return)f(a)h(b)s(o)s(olean)f(true)h(or)g(false)f(dep)s
(ending)f(on)i(whether)f(a)i(t)m(w)m(o)0 3746 y(dimensional)28
b(p)s(oin)m(t)h(is)g(in)g(the)i(region)f(or)g(not:)191
4020 y Fe("point)46 b(in)h(a)h(circular)d(region")477
4133 y(circle\(xcntr,ycntr,radius)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191
4359 y("point)h(in)h(an)g(elliptical)e(region")430 4472
y(ellipse\(xcntr,ycntr,xhl)o(f_w)o(dth,)o(yhlf)o(_wd)o(th,r)o(otat)o
(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 4698 y("point)h(in)h(a)h
(rectangular)c(region")620 4811 y(box\(xcntr,ycntr,xfll_wdth,)o(yfll)o
(_wd)o(th,r)o(otat)o(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191
5036 y(where)334 5149 y(\(xcntr,ycntr\))g(are)j(the)g(\(x,y\))f
(position)g(of)h(the)g(center)f(of)h(the)g(region)334
5262 y(\(xhlf_wdth,yhlf_wdth\))42 b(are)47 b(the)g(\(x,y\))f(half)h
(widths)f(of)h(the)g(region)334 5375 y(\(xfll_wdth,yfll_wdth\))42
b(are)47 b(the)g(\(x,y\))f(full)h(widths)f(of)h(the)g(region)334
5488 y(\(radius\))f(is)h(half)f(the)h(diameter)f(of)h(the)g(circle)334
5601 y(\(rotation\))e(is)i(the)g(angle\(degrees\))d(that)j(the)g
(region)f(is)h(rotated)f(with)620 5714 y(respect)g(to)h
(\(xcntr,ycntr\))p eop
%%Page: 36 42
36 41 bop 0 299 a Fi(36)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)334 555 y
Fe(\(Xcoord,Ycoord\))44 b(are)j(the)g(\(x,y\))f(coordinates)f(to)i
(test,)f(usually)g(column)620 668 y(names)334 781 y(NOTE:)g(each)h
(parameter)e(can)i(itself)f(be)i(an)f(expression,)d(not)j(merely)f(a)
620 894 y(column)h(name)f(or)h(constant.)0 1201 y Fb(4.9.6)112
b(Example)37 b(Ro)m(w)g(Filters)191 1423 y Fe([)47 b(binary)f(&&)i(mag)
f(<=)g(5.0])380 b(-)48 b(Extract)e(all)h(binary)f(stars)g(brighter)1766
1536 y(than)94 b(fifth)47 b(magnitude)e(\(note)h(that)1766
1649 y(the)h(initial)f(space)g(is)h(necessary)e(to)1766
1762 y(prevent)h(it)h(from)g(being)f(treated)g(as)h(a)1766
1875 y(binning)f(specification\))191 2101 y([#row)g(>=)h(125)g(&&)h
(#row)e(<=)h(175])142 b(-)48 b(Extract)e(row)h(numbers)e(125)i(through)
f(175)191 2327 y([IMAGE[4,5])f(.gt.)h(100])476 b(-)48
b(Extract)e(all)h(rows)f(that)h(have)g(the)1766 2439
y(\(4,5\))f(component)g(of)h(the)g(IMAGE)f(column)1766
2552 y(greater)g(than)g(100)191 2778 y([abs\(sin\(theta)e(*)j(#deg\)\))
f(<)i(0.5])e(-)i(Extract)e(all)h(rows)f(having)g(the)1766
2891 y(absolute)f(value)i(of)g(the)g(sine)g(of)g(theta)1766
3004 y(less)94 b(than)47 b(a)g(half)g(where)f(the)h(angles)1766
3117 y(are)g(tabulated)e(in)i(degrees)191 3343 y([SUM\()f(SPEC)h(>)g
(3*BACKGRND)e(\)>=1])94 b(-)48 b(Extract)e(all)h(rows)f(containing)f(a)
1766 3456 y(spectrum,)g(held)i(in)g(vector)f(column)1766
3569 y(SPEC,)g(with)h(at)g(least)f(one)h(value)g(3)1766
3681 y(times)f(greater)g(than)h(the)g(background)1766
3794 y(level)f(held)h(in)g(a)h(keyword,)d(BACKGRND)191
4020 y([VCOL=={1,4,2}])759 b(-)48 b(Extract)e(all)h(rows)f(whose)h
(vector)f(column)1766 4133 y(VCOL)h(contains)e(the)i(3-elements)e(1,)i
(4,)g(and)1766 4246 y(2.)191 4472 y([@rowFilter.txt])711
b(-)48 b(Extract)e(rows)g(using)h(the)g(expression)1766
4585 y(contained)e(within)h(the)h(text)g(file)1766 4698
y(rowFilter.txt)191 4924 y([gtifilter\(\)])855 b(-)48
b(Search)e(the)h(current)f(file)g(for)h(a)h(GTI)239 5036
y(extension,)92 b(filter)i(the)47 b(TIME)239 5149 y(column)f(in)h(the)g
(current)f(table,)g(using)239 5262 y(START/STOP)f(times)h(taken)g(from)
239 5375 y(columns)f(in)j(the)f(GTI)94 b(extension)191
5601 y([regfilter\("pow.reg"\)])423 b(-)48 b(Extract)e(rows)g(which)h
(have)f(a)i(coordinate)1766 5714 y(\(as)f(given)f(in)h(the)g(X)h(and)f
(Y)g(columns\))p eop
%%Page: 37 43
37 42 bop 0 299 a Fg(4.10.)113 b(BINNING)31 b(OR)f(HISTOGRAMMING)h
(SPECIFICA)-8 b(TION)1313 b Fi(37)1766 555 y Fe(within)46
b(the)h(spatial)f(region)g(specified)1766 668 y(in)h(the)g(pow.reg)f
(region)g(file.)191 894 y([regfilter\("pow.reg",)c(Xs,)47
b(Ys\)])f(-)i(Same)f(as)g(above,)f(except)g(that)h(the)1766
1007 y(Xs)g(and)g(Ys)g(columns)f(will)h(be)g(used)f(to)1766
1120 y(determine)f(the)i(coordinate)e(of)i(each)1766
1233 y(row)g(in)g(the)g(table.)0 1560 y Fd(4.10)180 b(Binning)45
b(or)g(Histogramming)i(Sp)t(eci\014cation)0 1810 y Fi(The)22
b(optional)g(binning)e(sp)s(eci\014er)h(is)h(enclosed)h(in)f(square)g
(brac)m(k)m(ets)j(and)d(can)h(b)s(e)f(distinguished)d(from)k(a)g
(general)0 1923 y(ro)m(w)32 b(\014lter)g(sp)s(eci\014cation)f(b)m(y)h
(the)h(fact)g(that)g(it)f(b)s(egins)f(with)g(the)h(k)m(eyw)m(ord)h
('bin')e(not)i(immediately)d(follo)m(w)m(ed)0 2036 y(b)m(y)41
b(an)f(equals)h(sign.)71 b(When)41 b(binning)c(is)j(sp)s(eci\014ed,)i
(a)f(temp)s(orary)g(N-dimensional)d(FITS)i(primary)f(arra)m(y)0
2149 y(is)j(created)i(b)m(y)f(computing)g(the)g(histogram)g(of)g(the)g
(v)-5 b(alues)43 b(in)e(the)j(sp)s(eci\014ed)d(columns)h(of)h(a)h(FITS)
e(table)0 2262 y(extension.)e(After)30 b(the)f(histogram)g(is)g
(computed)g(the)h(input)d(FITS)i(\014le)g(con)m(taining)g(the)g(table)h
(is)e(then)h(closed)0 2375 y(and)34 b(the)h(temp)s(orary)f(FITS)g
(primary)f(arra)m(y)i(is)f(op)s(ened)g(and)g(passed)g(to)h(the)g
(application)e(program.)54 b(Th)m(us,)0 2488 y(the)39
b(application)e(program)i(nev)m(er)g(sees)g(the)g(original)e(FITS)h
(table)h(and)f(only)g(sees)i(the)f(image)g(in)e(the)i(new)0
2601 y(temp)s(orary)32 b(\014le)g(\(whic)m(h)g(has)g(no)h(additional)d
(extensions\).)48 b(Ob)m(viously)-8 b(,)32 b(the)h(application)e
(program)h(m)m(ust)h(b)s(e)0 2714 y(exp)s(ecting)d(to)h(op)s(en)f(a)h
(FITS)e(image)i(and)f(not)g(a)h(FITS)f(table)g(in)f(this)g(case.)0
2874 y(The)h(data)h(t)m(yp)s(e)f(of)h(the)f(FITS)g(histogram)f(image)i
(ma)m(y)g(b)s(e)f(sp)s(eci\014ed)e(b)m(y)i(app)s(ending)e('b')i(\(for)h
(8-bit)f(b)m(yte\),)h('i')0 2987 y(\(for)g(16-bit)f(in)m(tegers\),)h
('j')g(\(for)g(32-bit)f(in)m(teger\),)i('r')e(\(for)h(32-bit)f
(\015oating)h(p)s(oin)m(ts\),)e(or)i('d')f(\(for)h(64-bit)f(double)0
3100 y(precision)c(\015oating)i(p)s(oin)m(t\))g(to)g(the)h('bin')d(k)m
(eyw)m(ord)j(\(e.g.)41 b('[binr)27 b(X]')h(creates)i(a)e(real)g
(\015oating)g(p)s(oin)m(t)f(image\).)40 b(If)0 3212 y(the)26
b(datat)m(yp)s(e)h(is)e(not)h(explicitly)e(sp)s(eci\014ed)g(then)i(a)g
(32-bit)g(in)m(teger)h(image)f(will)d(b)s(e)i(created)i(b)m(y)f
(default,)h(unless)0 3325 y(the)i(w)m(eigh)m(ting)f(option)g(is)g(also)
h(sp)s(eci\014ed)e(in)g(whic)m(h)h(case)h(the)g(image)g(will)d(ha)m(v)m
(e)k(a)f(32-bit)g(\015oating)g(p)s(oin)m(t)e(data)0 3438
y(t)m(yp)s(e)k(b)m(y)f(default.)0 3598 y(The)24 b(histogram)f(image)i
(ma)m(y)g(ha)m(v)m(e)g(from)f(1)g(to)h(4)g(dimensions)c(\(axes\),)27
b(dep)s(ending)22 b(on)i(the)g(n)m(um)m(b)s(er)f(of)h(columns)0
3711 y(that)31 b(are)g(sp)s(eci\014ed.)39 b(The)30 b(general)g(form)g
(of)g(the)h(binning)c(sp)s(eci\014cation)i(is:)48 3931
y Fe([bin{bijrd})92 b(Xcol=min:max:binsize,)42 b(Ycol=)47
b(...,)f(Zcol=...,)f(Tcol=...;)h(weight])0 4152 y Fi(in)38
b(whic)m(h)g(up)g(to)i(4)g(columns,)g(eac)m(h)g(corresp)s(onding)d(to)j
(an)g(axis)e(of)i(the)f(image,)j(are)e(listed.)65 b(The)39
b(column)0 4264 y(names)27 b(are)h(case)h(insensitiv)m(e,)d(and)h(the)h
(column)e(n)m(um)m(b)s(er)g(ma)m(y)i(b)s(e)f(giv)m(en)g(instead)g(of)h
(the)g(name,)g(preceded)f(b)m(y)0 4377 y(a)32 b(p)s(ound)e(sign)h
(\(e.g.,)j([bin)c(#4=1:512]\).)47 b(If)31 b(the)h(column)f(name)h(is)e
(not)i(sp)s(eci\014ed,)f(then)g(CFITSIO)g(will)e(\014rst)0
4490 y(try)37 b(to)h(use)f(the)g('preferred)f(column')h(as)g(sp)s
(eci\014ed)f(b)m(y)h(the)g(CPREF)g(k)m(eyw)m(ord)h(if)e(it)g(exists)h
(\(e.g.,)k('CPREF)0 4603 y(=)i('DETX,DETY'\),)h(otherwise)f(column)f
(names)h('X',)h('Y',)g('Z',)f(and)f('T')i(will)c(b)s(e)i(assumed)h(for)
g(eac)m(h)h(of)0 4716 y(the)37 b(4)h(axes,)i(resp)s(ectiv)m(ely)-8
b(.)60 b(In)37 b(cases)h(where)e(the)i(column)e(name)h(could)f(b)s(e)g
(confused)h(with)f(an)h(arithmetic)0 4829 y(expression,)29
b(enclose)i(the)g(column)e(name)h(in)f(paren)m(theses)i(to)g(force)g
(the)f(name)h(to)g(b)s(e)f(in)m(terpreted)f(literally)-8
b(.)0 4989 y(Eac)m(h)33 b(column)e(name)h(ma)m(y)h(b)s(e)f(follo)m(w)m
(ed)f(b)m(y)i(an)f(equals)f(sign)h(and)f(then)h(the)g(lo)m(w)m(er)h
(and)f(upp)s(er)e(range)i(of)h(the)0 5102 y(histogram,)e(and)f(the)h
(size)g(of)g(the)g(histogram)g(bins,)e(separated)i(b)m(y)g(colons.)42
b(Spaces)31 b(are)g(allo)m(w)m(ed)g(b)s(efore)g(and)0
5215 y(after)e(the)g(equals)f(sign)f(but)h(not)h(within)d(the)j
('min:max:binsize')d(string.)39 b(The)29 b(min,)e(max)i(and)f(binsize)f
(v)-5 b(alues)0 5328 y(ma)m(y)32 b(b)s(e)e(in)m(teger)h(or)g
(\015oating)g(p)s(oin)m(t)f(n)m(um)m(b)s(ers,)g(or)h(they)g(ma)m(y)g(b)
s(e)g(the)g(names)g(of)g(k)m(eyw)m(ords)g(in)f(the)h(header)g(of)0
5441 y(the)g(table.)40 b(If)30 b(the)h(latter,)g(then)f(the)g(v)-5
b(alue)30 b(of)h(that)g(k)m(eyw)m(ord)f(is)g(substituted)f(in)m(to)h
(the)h(expression.)0 5601 y(Default)36 b(v)-5 b(alues)35
b(for)h(the)g(min,)g(max)g(and)g(binsize)e(quan)m(tities)h(will)e(b)s
(e)i(used)h(if)e(not)j(explicitly)c(giv)m(en)j(in)f(the)0
5714 y(binning)27 b(expression)i(as)i(sho)m(wn)f(in)f(these)i
(examples:)p eop
%%Page: 38 44
38 43 bop 0 299 a Fi(38)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191 555 y
Fe([bin)47 b(x)g(=)g(:512:2])94 b(-)47 b(use)g(default)f(minimum)g
(value)191 668 y([bin)h(x)g(=)g(1::2])190 b(-)47 b(use)g(default)f
(maximum)g(value)191 781 y([bin)h(x)g(=)g(1:512])142
b(-)47 b(use)g(default)f(bin)h(size)191 894 y([bin)g(x)g(=)g(1:])286
b(-)47 b(use)g(default)f(maximum)g(value)g(and)h(bin)g(size)191
1007 y([bin)g(x)g(=)g(:512])190 b(-)47 b(use)g(default)f(minimum)g
(value)g(and)h(bin)g(size)191 1120 y([bin)g(x)g(=)g(2])334
b(-)47 b(use)g(default)f(minimum)g(and)h(maximum)f(values)191
1233 y([bin)h(x])524 b(-)47 b(use)g(default)f(minimum,)g(maximum)g(and)
g(bin)h(size)191 1346 y([bin)g(4])524 b(-)47 b(default)f(2-D)h(image,)f
(bin)h(size)g(=)g(4)h(in)f(both)g(axes)191 1458 y([bin])619
b(-)47 b(default)f(2-D)h(image)0 1713 y Fi(CFITSIO)31
b(will)f(use)i(the)h(v)-5 b(alue)32 b(of)h(the)g(TLMINn,)f(TLMAXn,)h
(and)f(TDBINn)h(k)m(eyw)m(ords,)h(if)d(they)i(exist,)g(for)0
1826 y(the)k(default)e(min,)i(max,)h(and)e(binsize,)g(resp)s(ectiv)m
(ely)-8 b(.)59 b(If)36 b(they)h(do)f(not)h(exist)f(then)g(CFITSIO)f
(will)f(use)i(the)0 1939 y(actual)c(minim)m(um)d(and)j(maxim)m(um)f(v)
-5 b(alues)31 b(in)g(the)h(column)e(for)i(the)g(histogram)g(min)e(and)i
(max)g(v)-5 b(alues.)44 b(The)0 2052 y(default)33 b(binsize)e(will)g(b)
s(e)i(set)h(to)h(1,)g(or)e(\(max)h(-)g(min\))e(/)i(10.,)i(whic)m(hev)m
(er)d(is)g(smaller,)g(so)g(that)i(the)e(histogram)0 2165
y(will)28 b(ha)m(v)m(e)j(at)g(least)g(10)g(bins)e(along)h(eac)m(h)i
(axis.)0 2325 y(A)41 b(shortcut)g(notation)g(is)f(allo)m(w)m(ed)h(if)f
(all)g(the)h(columns/axes)g(ha)m(v)m(e)h(the)f(same)g(binning)d(sp)s
(eci\014cation.)72 b(In)0 2438 y(this)32 b(case)h(all)f(the)h(column)e
(names)i(ma)m(y)g(b)s(e)f(listed)f(within)f(paren)m(theses,)k(follo)m
(w)m(ed)f(b)m(y)f(the)h(\(single\))f(binning)0 2551 y(sp)s
(eci\014cation,)d(as)i(in:)191 2805 y Fe([bin)47 b(\(X,Y\)=1:512:2])191
2918 y([bin)g(\(X,Y\))f(=)h(5])0 3172 y Fi(The)31 b(optional)g(w)m
(eigh)m(ting)h(factor)g(is)f(the)h(last)f(item)h(in)e(the)i(binning)d
(sp)s(eci\014er)h(and,)i(if)e(presen)m(t,)j(is)d(separated)0
3285 y(from)38 b(the)g(list)f(of)h(columns)f(b)m(y)h(a)h(semi-colon.)63
b(As)39 b(the)f(histogram)g(is)f(accum)m(ulated,)k(this)c(w)m(eigh)m(t)
i(is)e(used)0 3398 y(to)e(incremen)m(ted)e(the)h(v)-5
b(alue)34 b(of)g(the)g(appropriated)e(bin)h(in)f(the)i(histogram.)51
b(If)34 b(the)g(w)m(eigh)m(ting)g(factor)h(is)e(not)0
3511 y(sp)s(eci\014ed,)23 b(then)g(the)g(default)f(w)m(eigh)m(t)i(=)e
(1)i(is)e(assumed.)37 b(The)23 b(w)m(eigh)m(ting)g(factor)h(ma)m(y)f(b)
s(e)g(a)g(constan)m(t)i(in)m(teger)e(or)0 3624 y(\015oating)29
b(p)s(oin)m(t)f(n)m(um)m(b)s(er,)g(or)h(the)g(name)g(of)g(a)g(k)m(eyw)m
(ord)h(con)m(taining)e(the)i(w)m(eigh)m(ting)e(v)-5 b(alue.)40
b(Or)28 b(the)h(w)m(eigh)m(ting)0 3737 y(factor)g(ma)m(y)g(b)s(e)e(the)
h(name)g(of)h(a)f(table)g(column)f(in)g(whic)m(h)f(case)k(the)e(v)-5
b(alue)27 b(in)g(that)i(column,)e(on)h(a)h(ro)m(w)f(b)m(y)g(ro)m(w)0
3850 y(basis,)h(will)f(b)s(e)i(used.)0 4010 y(In)35 b(some)h(cases,)i
(the)d(column)g(or)g(k)m(eyw)m(ord)h(ma)m(y)g(giv)m(e)g(the)g(recipro)s
(cal)e(of)i(the)g(actual)g(w)m(eigh)m(t)g(v)-5 b(alue)35
b(that)h(is)0 4123 y(needed.)49 b(In)32 b(this)g(case,)j(precede)e(the)
h(w)m(eigh)m(t)f(k)m(eyw)m(ord)h(or)f(column)f(name)h(b)m(y)g(a)g
(slash)f('/')i(to)g(tell)e(CFITSIO)0 4236 y(to)f(use)f(the)h(recipro)s
(cal)e(of)h(the)h(v)-5 b(alue)30 b(when)f(constructing)h(the)h
(histogram.)0 4396 y(F)-8 b(or)35 b(complex)e(or)h(commonly)f(used)g
(histograms,)i(one)f(can)g(also)g(place)g(its)f(description)f(in)m(to)i
(a)g(text)h(\014le)e(and)0 4509 y(imp)s(ort)43 b(it)g(in)m(to)i(the)f
(binning)d(sp)s(eci\014cation)i(using)g(the)i(syn)m(tax)f('[bin)f
(@\014lename.txt]'.)83 b(The)44 b(\014le's)f(con-)0 4622
y(ten)m(ts)37 b(can)e(extend)h(o)m(v)m(er)h(m)m(ultiple)c(lines,)j
(although)f(it)g(m)m(ust)g(still)f(conform)i(to)g(the)g(no-spaces)g
(rule)e(for)i(the)0 4735 y(min:max:binsize)e(syn)m(tax)k(and)e(eac)m(h)
i(axis)f(sp)s(eci\014cation)f(m)m(ust)h(still)d(b)s(e)j
(comma-separated.)62 b(An)m(y)37 b(lines)e(in)0 4848
y(the)d(external)g(text)h(\014le)e(that)i(b)s(egin)d(with)h(2)h(slash)f
(c)m(haracters)i(\('//'\))h(will)29 b(b)s(e)j(ignored)f(and)g(ma)m(y)i
(b)s(e)e(used)g(to)0 4961 y(add)f(commen)m(ts)h(in)m(to)f(the)h
(\014le.)0 5121 y(Examples:)191 5375 y Fe([bini)46 b(detx,)h(dety])762
b(-)47 b(2-D,)g(16-bit)f(integer)g(histogram)1861 5488
y(of)i(DETX)e(and)h(DETY)g(columns,)e(using)1861 5601
y(default)h(values)g(for)h(the)g(histogram)1861 5714
y(range)g(and)g(binsize)p eop
%%Page: 39 45
39 44 bop 0 299 a Fg(4.10.)113 b(BINNING)31 b(OR)f(HISTOGRAMMING)h
(SPECIFICA)-8 b(TION)1313 b Fi(39)191 668 y Fe([bin)47
b(\(detx,)f(dety\)=16;)f(/exposure])g(-)i(2-D,)g(32-bit)f(real)h
(histogram)e(of)i(DETX)1861 781 y(and)g(DETY)g(columns)f(with)g(a)i
(bin)f(size)f(=)i(16)1861 894 y(in)g(both)e(axes.)h(The)f(histogram)g
(values)1861 1007 y(are)h(divided)f(by)h(the)g(EXPOSURE)f(keyword)1861
1120 y(value.)191 1346 y([bin)h(time=TSTART:TSTOP:0.1])280
b(-)47 b(1-D)g(lightcurve,)e(range)h(determined)f(by)1861
1458 y(the)i(TSTART)f(and)h(TSTOP)g(keywords,)1861 1571
y(with)g(0.1)g(unit)g(size)f(bins.)191 1797 y([bin)h(pha,)f
(time=8000.:8100.:0.1])90 b(-)47 b(2-D)g(image)g(using)f(default)g
(binning)1861 1910 y(of)i(the)e(PHA)h(column)f(for)h(the)g(X)h(axis,)
1861 2023 y(and)f(1000)g(bins)g(in)g(the)g(range)1861
2136 y(8000.)g(to)g(8100.)f(for)h(the)g(Y)h(axis.)191
2362 y([bin)f(@binFilter.txt])616 b(-)47 b(Use)g(the)g(contents)f(of)h
(the)g(text)f(file)1861 2475 y(binFilter.txt)f(for)h(the)h(binning)1861
2588 y(specifications.)p eop
%%Page: 40 46
40 45 bop 0 299 a Fi(40)1618 b Fg(CHAPTER)30 b(4.)112
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)p eop
%%Page: 41 47
41 46 bop 0 1225 a Ff(Chapter)65 b(5)0 1687 y Fl(T)-19
b(emplate)76 b(Files)0 2180 y Fi(When)38 b(a)h(new)f(FITS)g(\014le)g
(is)g(created)h(with)f(a)g(call)g(to)i(\014ts)p 2101
2180 28 4 v 32 w(create)p 2369 2180 V 35 w(\014le,)f(the)g(name)g(of)g
(a)g(template)g(\014le)e(ma)m(y)0 2293 y(b)s(e)i(supplied)e(in)i(paren)
m(theses)h(immediately)e(follo)m(wing)g(the)j(name)f(of)g(the)g(new)f
(\014le)g(to)i(b)s(e)e(created.)71 b(This)0 2406 y(template)26
b(is)e(used)h(to)h(de\014ne)f(the)h(structure)f(of)h(one)f(or)h(more)g
(HDUs)g(in)e(the)i(new)f(\014le.)38 b(The)25 b(template)h(\014le)e(ma)m
(y)0 2518 y(b)s(e)32 b(another)h(FITS)f(\014le,)h(in)f(whic)m(h)f(case)
j(the)f(newly)f(created)i(\014le)e(will)e(ha)m(v)m(e)k(exactly)g(the)f
(same)g(k)m(eyw)m(ords)g(in)0 2631 y(eac)m(h)25 b(HDU)g(as)g(in)e(the)h
(template)h(FITS)e(\014le,)i(but)e(all)h(the)g(data)h(units)d(will)g(b)
s(e)i(\014lled)e(with)g(zeros.)40 b(The)24 b(template)0
2744 y(\014le)h(ma)m(y)i(also)f(b)s(e)f(an)h(ASCI)s(I)e(text)j(\014le,)
f(where)g(eac)m(h)h(line)d(\(in)h(general\))i(describ)s(es)d(one)i
(FITS)f(k)m(eyw)m(ord)i(record.)0 2857 y(The)j(format)h(of)f(the)h
(ASCI)s(I)e(template)h(\014le)g(is)f(describ)s(ed)f(in)i(the)g(follo)m
(wing)f(sections.)0 3188 y Fd(5.1)135 b(Detailed)47 b(T)-11
b(emplate)46 b(Line)f(F)-11 b(ormat)0 3438 y Fi(The)30
b(format)h(of)f(eac)m(h)i(ASCI)s(I)c(template)j(line)e(closely)h(follo)
m(ws)f(the)i(format)g(of)f(a)h(FITS)f(k)m(eyw)m(ord)g(record:)95
3682 y Fe(KEYWORD)46 b(=)i(KEYVALUE)d(/)j(COMMENT)0 3926
y Fi(except)22 b(that)g(free)g(format)f(ma)m(y)h(b)s(e)f(used)f
(\(e.g.,)25 b(the)d(equals)e(sign)h(ma)m(y)g(app)s(ear)g(at)h(an)m(y)g
(p)s(osition)d(in)h(the)i(line\))e(and)0 4039 y(T)-8
b(AB)34 b(c)m(haracters)g(are)g(allo)m(w)m(ed)f(and)g(are)g(treated)h
(the)g(same)f(as)h(space)f(c)m(haracters.)51 b(The)33
b(KEYV)-10 b(ALUE)33 b(and)0 4152 y(COMMENT)d(\014elds)f(are)i
(optional.)41 b(The)30 b(equals)g(sign)f(c)m(haracter)k(is)c(also)i
(optional,)f(but)g(it)g(is)f(recommended)0 4264 y(that)42
b(it)e(b)s(e)h(included)d(for)j(clarit)m(y)-8 b(.)73
b(An)m(y)41 b(template)h(line)d(that)j(b)s(egins)e(with)f(the)j(p)s
(ound)d('#')i(c)m(haracter)i(is)0 4377 y(ignored)29 b(b)m(y)i(the)f
(template)h(parser)f(and)g(ma)m(y)h(b)s(e)e(use)h(to)h(insert)f(commen)
m(ts)h(in)m(to)f(the)h(template)g(\014le)e(itself.)0
4538 y(The)d(KEYW)m(ORD)g(name)g(\014eld)f(is)g(limited)f(to)j(8)f(c)m
(haracters)h(in)e(length)h(and)f(only)g(the)h(letters)h(A-Z,)f(digits)f
(0-9,)0 4650 y(and)j(the)g(h)m(yphen)f(and)h(underscore)g(c)m
(haracters)h(ma)m(y)g(b)s(e)f(used,)g(without)g(an)m(y)g(em)m(b)s
(edded)g(spaces.)40 b(Lo)m(w)m(ercase)0 4763 y(letters)21
b(in)f(the)i(template)f(k)m(eyw)m(ord)h(name)f(will)d(b)s(e)j(con)m(v)m
(erted)i(to)f(upp)s(ercase.)36 b(Leading)21 b(spaces)g(in)f(the)i
(template)0 4876 y(line)i(preceding)h(the)g(k)m(eyw)m(ord)h(name)g(are)
g(generally)f(ignored,)h(except)g(if)f(the)h(\014rst)f(8)h(c)m
(haracters)h(of)f(a)g(template)0 4989 y(line)d(are)j(all)e(blank,)h
(then)g(the)g(en)m(tire)g(line)f(is)g(treated)i(as)f(a)h(FITS)e(commen)
m(t)i(k)m(eyw)m(ord)g(\(with)e(a)i(blank)d(k)m(eyw)m(ord)0
5102 y(name\))31 b(and)f(is)f(copied)h(v)m(erbatim)g(in)m(to)g(the)h
(FITS)e(header.)0 5262 y(The)37 b(KEYV)-10 b(ALUE)37
b(\014eld)f(ma)m(y)i(ha)m(v)m(e)g(an)m(y)g(allo)m(w)m(ed)f(FITS)g(data)
h(t)m(yp)s(e:)54 b(c)m(haracter)39 b(string,)g(logical,)f(in)m(teger,)0
5375 y(real,)33 b(complex)f(in)m(teger,)i(or)e(complex)h(real.)46
b(The)32 b(c)m(haracter)j(string)c(v)-5 b(alues)32 b(need)g(not)h(b)s
(e)f(enclosed)g(in)f(single)0 5488 y(quote)e(c)m(haracters)h(unless)d
(they)h(are)h(necessary)g(to)g(distinguish)24 b(the)29
b(string)e(from)h(a)h(di\013eren)m(t)f(data)h(t)m(yp)s(e)f(\(e.g.)0
5601 y(2.0)h(is)d(a)i(real)g(but)f('2.0')i(is)e(a)h(string\).)39
b(The)27 b(k)m(eyw)m(ord)h(has)f(an)h(unde\014ned)d(\(n)m(ull\))h(v)-5
b(alue)28 b(if)e(the)i(template)g(record)0 5714 y(only)h(con)m(tains)i
(blanks)e(follo)m(wing)g(the)h("=")h(or)g(b)s(et)m(w)m(een)g(the)f("=")
h(and)f(the)g("/")i(commen)m(t)g(\014eld)c(delimiter.)1905
5942 y(41)p eop
%%Page: 42 48
42 47 bop 0 299 a Fi(42)2340 b Fg(CHAPTER)30 b(5.)71
b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Fi(String)25 b(k)m(eyw)m(ord)i(v)-5
b(alues)26 b(longer)g(than)g(68)h(c)m(haracters)h(\(the)f(maxim)m(um)e
(length)h(that)h(will)d(\014t)i(in)f(a)i(single)e(FITS)0
668 y(k)m(eyw)m(ord)41 b(record\))g(are)g(p)s(ermitted)e(using)g(the)i
(CFITSIO)e(long)h(string)g(con)m(v)m(en)m(tion.)73 b(They)40
b(can)h(either)f(b)s(e)0 781 y(sp)s(eci\014ed)27 b(as)j(a)f(single)f
(long)g(line)g(in)f(the)j(template,)g(or)f(b)m(y)f(using)g(m)m(ultiple)
f(lines)g(where)h(the)i(con)m(tin)m(uing)e(lines)0 894
y(con)m(tain)j(the)f('CONTINUE')g(k)m(eyw)m(ord,)h(as)g(in)e(this)g
(example:)95 1139 y Fe(LONGKEY)46 b(=)i('This)e(is)h(a)h(long)e(string)
g(value)h(that)f(is)i(contin&')95 1252 y(CONTINUE)94
b('ued)46 b(over)h(2)g(records')f(/)h(comment)f(field)h(goes)f(here)0
1497 y Fi(The)29 b(format)h(of)g(template)g(lines)d(with)i(CONTINUE)f
(k)m(eyw)m(ord)i(is)f(v)m(ery)h(strict:)40 b(3)30 b(spaces)g(m)m(ust)f
(follo)m(w)g(CON-)0 1610 y(TINUE)h(and)g(the)g(rest)h(of)f(the)h(line)e
(is)g(copied)h(v)m(erbatim)g(to)h(the)g(FITS)e(\014le.)0
1771 y(The)i(start)h(of)g(the)f(optional)g(COMMENT)g(\014eld)f(m)m(ust)
i(b)s(e)e(preceded)i(b)m(y)f("/",)i(whic)m(h)d(is)h(used)g(to)h
(separate)g(it)0 1883 y(from)e(the)g(k)m(eyw)m(ord)h(v)-5
b(alue)29 b(\014eld.)40 b(Exceptions)29 b(are)i(if)e(the)i(KEYW)m(ORD)g
(name)f(\014eld)f(con)m(tains)h(COMMENT,)0 1996 y(HISTOR)-8
b(Y,)30 b(CONTINUE,)g(or)g(if)f(the)i(\014rst)f(8)g(c)m(haracters)i(of)
f(the)f(template)h(line)e(are)i(blanks.)0 2157 y(More)c(than)f(one)h
(Header-Data)i(Unit)d(\(HDU\))h(ma)m(y)g(b)s(e)f(de\014ned)f(in)g(the)i
(template)g(\014le.)38 b(The)26 b(start)h(of)g(an)f(HDU)0
2269 y(de\014nition)i(is)h(denoted)i(with)e(a)i(SIMPLE)e(or)i(XTENSION)
e(template)i(line:)0 2430 y(1\))j(SIMPLE)f(b)s(egins)f(a)i(Primary)f
(HDU)h(de\014nition.)48 b(SIMPLE)33 b(ma)m(y)h(only)f(app)s(ear)g(as)h
(the)g(\014rst)f(k)m(eyw)m(ord)h(in)0 2543 y(the)e(template)h(\014le.)
44 b(If)32 b(the)g(template)h(\014le)e(b)s(egins)f(with)h(XTENSION)g
(instead)g(of)h(SIMPLE,)g(then)f(a)i(default)0 2655 y(empt)m(y)d
(Primary)d(HDU)j(is)f(created,)i(and)d(the)i(template)g(is)e(then)h
(assumed)f(to)i(de\014ne)f(the)h(k)m(eyw)m(ords)f(starting)0
2768 y(with)g(the)i(\014rst)e(extension)h(follo)m(wing)f(the)i(Primary)
e(HDU.)0 2928 y(2\))35 b(XTENSION)e(marks)g(the)i(b)s(eginning)c(of)j
(a)h(new)e(extension)h(HDU)g(de\014nition.)50 b(The)33
b(previous)g(HDU)i(will)0 3041 y(b)s(e)30 b(closed)g(at)h(this)e(p)s
(oin)m(t)h(and)f(pro)s(cessing)h(of)g(the)h(next)f(extension)g(b)s
(egins.)0 3373 y Fd(5.2)135 b(Auto-indexing)45 b(of)h(Keyw)l(ords)0
3623 y Fi(If)31 b(a)h(template)f(k)m(eyw)m(ord)h(name)f(ends)g(with)f
(a)h("#")h(c)m(haracter,)i(it)d(is)f(said)g(to)i(b)s(e)f
('auto-indexed'.)43 b(Eac)m(h)32 b("#")0 3736 y(c)m(haracter)i(will)c
(b)s(e)i(replaced)h(b)m(y)f(the)h(curren)m(t)g(in)m(teger)g(index)e(v)
-5 b(alue,)33 b(whic)m(h)f(gets)h(reset)h(=)e(1)h(at)h(the)e(start)i
(of)0 3849 y(eac)m(h)h(new)f(HDU)g(in)f(the)h(\014le)f(\(or)h(7)h(in)d
(the)i(sp)s(ecial)f(case)i(of)f(a)g(GR)m(OUP)h(de\014nition\).)49
b(The)33 b(FIRST)g(indexed)0 3962 y(k)m(eyw)m(ord)c(in)e(eac)m(h)i
(template)g(HDU)g(de\014nition)d(is)h(used)g(as)i(the)f('incremen)m
(tor';)i(eac)m(h)f(subsequen)m(t)f(o)s(ccurrence)0 4075
y(of)k(this)e(SAME)h(k)m(eyw)m(ord)h(will)d(cause)j(the)g(index)e(v)-5
b(alue)31 b(to)h(b)s(e)f(incremen)m(ted.)43 b(This)30
b(b)s(eha)m(vior)g(can)i(b)s(e)f(rather)0 4188 y(subtle,)c(as)h
(illustrated)e(in)g(the)i(follo)m(wing)e(examples)h(in)f(whic)m(h)h
(the)h(TTYPE)e(k)m(eyw)m(ord)i(is)f(the)h(incremen)m(tor)f(in)0
4300 y(b)s(oth)j(cases:)95 4546 y Fe(TTYPE#)47 b(=)g(TIME)95
4659 y(TFORM#)g(=)g(1D)95 4772 y(TTYPE#)g(=)g(RATE)95
4884 y(TFORM#)g(=)g(1E)0 5130 y Fi(will)23 b(create)28
b(TTYPE1,)e(TF)m(ORM1,)i(TTYPE2,)f(and)e(TF)m(ORM2)i(k)m(eyw)m(ords.)40
b(But)26 b(if)f(the)h(template)g(lo)s(oks)f(lik)m(e,)95
5375 y Fe(TTYPE#)47 b(=)g(TIME)95 5488 y(TTYPE#)g(=)g(RATE)95
5601 y(TFORM#)g(=)g(1D)95 5714 y(TFORM#)g(=)g(1E)p eop
%%Page: 43 49
43 48 bop 0 299 a Fg(5.3.)72 b(TEMPLA)-8 b(TE)30 b(P)-8
b(ARSER)30 b(DIRECTIVES)2073 b Fi(43)0 555 y(this)30
b(results)f(in)h(a)h(FITS)f(\014les)g(with)f(TTYPE1,)i(TTYPE2,)g(TF)m
(ORM2,)h(and)e(TF)m(ORM2,)i(whic)m(h)e(is)g(probably)0
668 y(not)h(what)f(w)m(as)h(in)m(tended!)0 1000 y Fd(5.3)135
b(T)-11 b(emplate)46 b(P)l(arser)g(Directiv)l(es)0 1251
y Fi(In)29 b(addition)g(to)h(the)g(template)h(lines)d(whic)m(h)h
(de\014ne)g(individual)d(k)m(eyw)m(ords,)k(the)g(template)h(parser)e
(recognizes)0 1363 y(3)h(sp)s(ecial)f(directiv)m(es)g(whic)m(h)g(are)h
(eac)m(h)h(preceded)f(b)m(y)f(the)h(bac)m(kslash)g(c)m(haracter:)90
b Fe(\\include,)45 b(\\group)p Fi(,)29 b(and)48 1476
y Fe(\\end)p Fi(.)0 1637 y(The)37 b('include')f(directiv)m(e)i(m)m(ust)
f(b)s(e)h(follo)m(w)m(ed)f(b)m(y)h(a)g(\014lename.)62
b(It)38 b(forces)g(the)g(parser)f(to)i(temp)s(orarily)d(stop)0
1749 y(reading)e(the)h(curren)m(t)g(template)g(\014le)f(and)g(b)s(egin)
g(reading)g(the)h(include)d(\014le.)54 b(Once)35 b(the)g(parser)f(reac)
m(hes)i(the)0 1862 y(end)f(of)h(the)g(include)d(\014le)i(it)g(con)m
(tin)m(ues)g(parsing)g(the)g(curren)m(t)h(template)g(\014le.)55
b(Include)34 b(\014les)h(can)h(b)s(e)f(nested,)0 1975
y(and)30 b(HDU)h(de\014nitions)d(can)i(span)g(m)m(ultiple)e(template)j
(\014les.)0 2135 y(The)g(start)h(of)g(a)g(GR)m(OUP)h(de\014nition)c(is)
i(denoted)h(with)e(the)i('group')g(directiv)m(e,)f(and)h(the)f(end)h
(of)f(a)i(GR)m(OUP)0 2248 y(de\014nition)i(is)i(denoted)g(with)f(the)i
('end')f(directiv)m(e.)61 b(Eac)m(h)39 b(GR)m(OUP)e(con)m(tains)h(0)g
(or)f(more)h(mem)m(b)s(er)f(blo)s(c)m(ks)0 2361 y(\(HDUs)44
b(or)f(GR)m(OUPs\).)79 b(Mem)m(b)s(er)42 b(blo)s(c)m(ks)h(of)g(t)m(yp)s
(e)g(GR)m(OUP)g(can)g(con)m(tain)g(their)f(o)m(wn)h(mem)m(b)s(er)f(blo)
s(c)m(ks.)0 2474 y(The)32 b(GR)m(OUP)g(de\014nition)e(itself)h(o)s
(ccupies)h(one)g(FITS)g(\014le)f(HDU)i(of)f(sp)s(ecial)f(t)m(yp)s(e)h
(\(GR)m(OUP)h(HDU\),)h(so)e(if)g(a)0 2587 y(template)f(sp)s(eci\014es)e
(1)i(group)e(with)g(1)i(mem)m(b)s(er)f(HDU)h(lik)m(e:)0
2838 y Fe(\\group)0 2951 y(grpdescr)46 b(=)h('demo')0
3064 y(xtension)f(bintable)0 3177 y(#)h(this)g(bintable)f(has)h(0)g
(cols,)f(0)i(rows)0 3290 y(\\end)0 3541 y Fi(then)30
b(the)h(parser)e(creates)j(a)f(FITS)f(\014le)f(with)g(3)i(HDUs)g(:)0
3792 y Fe(1\))47 b(dummy)g(PHDU)0 3905 y(2\))g(GROUP)g(HDU)f(\(has)h(1)
h(member,)d(which)i(is)g(bintable)e(in)j(HDU)f(number)f(3\))0
4018 y(3\))h(bintable)f(\(member)g(of)h(GROUP)f(in)h(HDU)g(number)f
(2\))0 4269 y Fi(T)-8 b(ec)m(hnically)29 b(sp)s(eaking,)g(the)g(GR)m
(OUP)i(HDU)f(is)f(a)h(BINT)-8 b(ABLE)30 b(with)f(6)h(columns.)39
b(Applications)28 b(can)i(de\014ne)0 4382 y(additional)20
b(columns)h(in)f(a)j(GR)m(OUP)f(HDU)h(using)e(TF)m(ORMn)g(and)h(TTYPEn)
f(\(where)g(n)h(is)f(7,)j(8,)h(....\))39 b(k)m(eyw)m(ords)0
4494 y(or)30 b(their)g(auto-indexing)f(equiv)-5 b(alen)m(ts.)0
4655 y(F)d(or)26 b(a)f(more)g(complicated)f(example)g(of)h(a)h
(template)f(\014le)f(using)f(the)i(group)f(directiv)m(es,)i(lo)s(ok)e
(at)h(the)g(sample.tpl)0 4767 y(\014le)k(that)i(is)f(included)d(in)j
(the)g(CFITSIO)f(distribution.)0 5100 y Fd(5.4)135 b(F)-11
b(ormal)46 b(T)-11 b(emplate)45 b(Syn)l(tax)0 5350 y
Fi(The)30 b(template)h(syn)m(tax)g(can)f(formally)f(b)s(e)h(de\014ned)f
(as)i(follo)m(ws:)191 5601 y Fe(TEMPLATE)45 b(=)j(BLOCK)e([)i(BLOCK)e
(...)h(])p eop
%%Page: 44 50
44 49 bop 0 299 a Fi(44)2340 b Fg(CHAPTER)30 b(5.)71
b(TEMPLA)-8 b(TE)30 b(FILES)334 555 y Fe(BLOCK)46 b(=)i({)f(HDU)g(|)h
(GROUP)e(})334 781 y(GROUP)g(=)i(\\GROUP)e([)h(BLOCK)g(...)g(])g(\\END)
430 1007 y(HDU)f(=)i(XTENSION)d([)j(LINE)f(...)f(])i({)f(XTENSION)f(|)h
(\\GROUP)f(|)i(\\END)f(|)g(EOF)g(})382 1233 y(LINE)f(=)i([)f(KEYWORD)f
([)i(=)f(])h(])f([)g(VALUE)g(])g([)h(/)f(COMMENT)f(])191
1458 y(X)h(...)238 b(-)48 b(X)f(can)g(be)g(present)f(1)h(or)h(more)e
(times)191 1571 y({)h(X)h(|)f(Y)h(})f(-)h(X)f(or)g(Y)191
1684 y([)g(X)h(])238 b(-)48 b(X)f(is)g(optional)0 1937
y Fi(A)m(t)34 b(the)f(topmost)g(lev)m(el,)g(the)g(template)h(de\014nes)
d(1)j(or)e(more)h(template)g(blo)s(c)m(ks.)48 b(Blo)s(c)m(ks)33
b(can)g(b)s(e)f(either)g(HDU)0 2050 y(\(Header)27 b(Data)h(Unit\))f(or)
f(a)h(GR)m(OUP)-8 b(.)28 b(F)-8 b(or)27 b(eac)m(h)g(blo)s(c)m(k)f(the)h
(parser)f(creates)i(1)f(\(or)g(more)f(for)h(GR)m(OUPs\))g(FITS)0
2163 y(\014le)i(HDUs.)0 2495 y Fd(5.5)135 b(Errors)0
2745 y Fi(In)24 b(general)g(the)g(\014ts)p 692 2745 28
4 v 33 w(execute)p 1019 2745 V 34 w(template\(\))h(function)e(tries)h
(to)h(b)s(e)f(as)g(atomic)h(as)g(p)s(ossible,)e(so)h(either)g(ev)m
(erything)0 2858 y(is)f(done)h(or)g(nothing)e(is)h(done.)39
b(If)23 b(an)h(error)f(o)s(ccurs)h(during)e(parsing)g(of)i(the)g
(template,)i(\014ts)p 3125 2858 V 33 w(execute)p 3452
2858 V 34 w(template\(\))0 2971 y(will)i(\(try)j(to\))h(delete)f(the)g
(top)g(lev)m(el)f(BLOCK)g(\(with)g(all)f(its)i(c)m(hildren)d(if)i(an)m
(y\))h(in)f(whic)m(h)f(the)i(error)f(o)s(ccurred,)0 3084
y(then)g(it)g(will)e(stop)i(reading)g(the)g(template)h(\014le)e(and)h
(it)g(will)e(return)h(with)g(an)h(error.)0 3417 y Fd(5.6)135
b(Examples)0 3667 y Fi(1.)54 b(This)33 b(template)i(\014le)f(will)e
(create)k(a)f(200)h(x)e(300)i(pixel)d(image,)k(with)c(4-b)m(yte)j(in)m
(teger)f(pixel)e(v)-5 b(alues,)35 b(in)f(the)0 3780 y(primary)28
b(HDU:)95 4032 y Fe(SIMPLE)47 b(=)g(T)95 4145 y(BITPIX)g(=)g(32)95
4258 y(NAXIS)g(=)g(2)239 b(/)47 b(number)f(of)h(dimensions)95
4371 y(NAXIS1)g(=)g(100)95 b(/)47 b(length)f(of)h(first)g(axis)95
4484 y(NAXIS2)g(=)g(200)95 b(/)47 b(length)f(of)h(second)f(axis)95
4597 y(OBJECT)h(=)g(NGC)g(253)g(/)g(name)g(of)g(observed)f(object)0
4850 y Fi(The)35 b(allo)m(w)m(ed)g(v)-5 b(alues)35 b(of)g(BITPIX)g(are)
h(8,)h(16,)h(32,)g(-32,)g(or)d(-64,)j(represen)m(ting,)e(resp)s(ectiv)m
(ely)-8 b(,)37 b(8-bit)e(in)m(teger,)0 4962 y(16-bit)c(in)m(teger,)g
(32-bit)f(in)m(teger,)h(32-bit)g(\015oating)f(p)s(oin)m(t,)g(or)g(64)h
(bit)f(\015oating)g(p)s(oin)m(t)f(pixels.)0 5123 y(2.)39
b(T)-8 b(o)23 b(create)h(a)f(FITS)e(table,)k(the)d(template)h(\014rst)f
(needs)g(to)i(include)c(XTENSION)i(=)g(T)-8 b(ABLE)23
b(or)f(BINT)-8 b(ABLE)0 5235 y(to)31 b(de\014ne)e(whether)g(it)g(is)g
(an)g(ASCI)s(I)g(or)g(binary)f(table,)i(and)g(NAXIS2)g(to)g(de\014ne)f
(the)h(n)m(um)m(b)s(er)f(of)h(ro)m(ws)f(in)g(the)0 5348
y(table.)49 b(Tw)m(o)34 b(template)f(lines)f(are)i(then)f(needed)f(to)i
(de\014ne)f(the)g(name)h(\(TTYPEn\))e(and)h(FITS)g(data)h(format)0
5461 y(\(TF)m(ORMn\))d(of)f(the)h(columns,)e(as)i(in)e(this)g(example:)
95 5714 y Fe(xtension)46 b(=)h(bintable)p eop
%%Page: 45 51
45 50 bop 0 299 a Fg(5.6.)72 b(EXAMPLES)3084 b Fi(45)95
555 y Fe(naxis2)47 b(=)g(40)95 668 y(ttype#)g(=)g(Name)95
781 y(tform#)g(=)g(10a)95 894 y(ttype#)g(=)g(Npoints)95
1007 y(tform#)g(=)g(j)95 1120 y(ttype#)g(=)g(Rate)95
1233 y(tunit#)g(=)g(counts/s)95 1346 y(tform#)g(=)g(e)0
1605 y Fi(The)26 b(ab)s(o)m(v)m(e)j(example)d(de\014nes)g(a)i(n)m(ull)d
(primary)g(arra)m(y)i(follo)m(w)m(ed)g(b)m(y)g(a)g(40-ro)m(w)h(binary)d
(table)i(extension)g(with)f(3)0 1718 y(columns)h(called)g('Name',)j
('Np)s(oin)m(ts',)e(and)g('Rate',)i(with)d(data)i(formats)f(of)g('10A')
i(\(ASCI)s(I)d(c)m(haracter)i(string\),)0 1831 y('1J')k(\(in)m(teger\))
h(and)e('1E')i(\(\015oating)e(p)s(oin)m(t\),)h(resp)s(ectiv)m(ely)-8
b(.)48 b(Note)34 b(that)f(the)g(other)g(required)e(FITS)h(k)m(eyw)m
(ords)0 1944 y(\(BITPIX,)37 b(NAXIS,)g(NAXIS1,)h(PCOUNT,)e(GCOUNT,)h
(TFIELDS,)f(and)g(END\))h(do)g(not)g(need)f(to)h(b)s(e)f(ex-)0
2057 y(plicitly)f(de\014ned)h(in)h(the)g(template)h(b)s(ecause)g(their)
f(v)-5 b(alues)37 b(can)h(b)s(e)f(inferred)e(from)j(the)f(other)h(k)m
(eyw)m(ords)g(in)0 2170 y(the)d(template.)54 b(This)33
b(example)i(also)g(illustrates)d(that)k(the)f(templates)g(are)g
(generally)f(case-insensitiv)m(e)g(\(the)0 2283 y(k)m(eyw)m(ord)29
b(names)g(and)g(TF)m(ORMn)f(v)-5 b(alues)29 b(are)g(con)m(v)m(erted)i
(to)e(upp)s(er-case)g(in)e(the)i(FITS)g(\014le\))f(and)g(that)i(string)
0 2396 y(k)m(eyw)m(ord)h(v)-5 b(alues)30 b(generally)f(do)h(not)h(need)
f(to)h(b)s(e)f(enclosed)g(in)f(quotes.)p eop
%%Page: 46 52
46 51 bop 0 299 a Fi(46)2340 b Fg(CHAPTER)30 b(5.)71
b(TEMPLA)-8 b(TE)30 b(FILES)p eop
%%Page: 47 53
47 52 bop 0 1225 a Ff(Chapter)65 b(6)0 1687 y Fl(FITSIO)76
b(Con)-6 b(v)g(en)g(tions)76 b(and)h(Guidelines)0 2216
y Fd(6.1)135 b(CFITSIO)44 b(Size)h(Limitations)0 2476
y Fi(CFITSIO)31 b(places)h(few)h(restrictions)e(on)i(the)f(size)h(of)f
(FITS)g(\014les)g(that)h(it)f(reads)g(or)h(writes.)46
b(There)32 b(are)h(a)g(few)0 2589 y(limits,)28 b(ho)m(w)m(ev)m(er,)k
(whic)m(h)d(ma)m(y)i(a\013ect)h(some)f(extreme)g(cases:)0
2749 y(1.)43 b(The)31 b(maxim)m(um)f(n)m(um)m(b)s(er)g(of)h(FITS)f
(\014les)g(that)i(ma)m(y)g(b)s(e)e(sim)m(ultaneously)f(op)s(ened)i(b)m
(y)g(CFITSIO)e(is)h(set)i(b)m(y)0 2862 y(NMAXFILES)i(as)g(de\014ned)f
(in)g(\014tsio2.h.)51 b(It)34 b(is)f(curren)m(tly)g(set)i(=)f(300)h(b)m
(y)f(default.)51 b(CFITSIO)32 b(will)f(allo)s(cate)0
2975 y(ab)s(out)i(80)g(*)h(NMAXFILES)f(b)m(ytes)g(of)g(memory)g(for)g
(in)m(ternal)e(use.)48 b(Note)34 b(that)g(the)f(underlying)d(C)i
(compiler)0 3088 y(or)39 b(op)s(erating)g(system,)k(ma)m(y)d(ha)m(v)m
(e)g(a)g(smaller)e(limit)g(on)h(the)h(n)m(um)m(b)s(er)e(of)i(op)s(ened)
e(\014les.)67 b(The)39 b(C)h(sym)m(b)s(olic)0 3201 y(constan)m(t)31
b(F)m(OPEN)p 690 3201 28 4 v 34 w(MAX)f(is)f(in)m(tended)g(to)i
(de\014ne)e(the)i(maxim)m(um)e(n)m(um)m(b)s(er)f(of)j(\014les)e(that)h
(ma)m(y)h(op)s(en)e(at)i(once)0 3314 y(\(including)d(an)m(y)j(other)g
(text)h(or)f(binary)e(\014les)h(that)i(ma)m(y)f(b)s(e)g(op)s(en,)f(not)
h(just)g(FITS)f(\014les\).)42 b(On)30 b(some)h(systems)0
3427 y(it)f(has)g(b)s(een)g(found)f(that)i(gcc)g(supp)s(orts)e(a)h
(maxim)m(um)g(of)g(255)i(op)s(ened)e(\014les.)0 3587
y(Note)d(that)e(op)s(ening)f(and)h(op)s(erating)g(on)g(man)m(y)g(FITS)g
(\014les)f(sim)m(ultaneously)f(in)h(parallel)f(ma)m(y)j(b)s(e)f(less)f
(e\016cien)m(t)0 3700 y(than)k(op)s(erating)g(on)g(smaller)f(groups)h
(of)h(\014les)e(in)g(series.)40 b(CFITSIO)27 b(only)g(has)h(NIOBUF)h(n)
m(um)m(b)s(er)f(of)g(in)m(ternal)0 3813 y(bu\013ers)j(\(set)j(=)e(40)i
(b)m(y)e(default\))h(that)g(are)g(used)f(for)g(temp)s(orary)g(storage)i
(of)f(the)g(most)g(recen)m(t)h(data)f(records)0 3926
y(that)40 b(ha)m(v)m(e)g(b)s(een)e(read)h(or)g(written)f(in)f(the)i
(FITS)f(\014les.)66 b(If)38 b(the)h(n)m(um)m(b)s(er)f(of)h(op)s(ened)f
(\014les)g(is)g(greater)i(than)0 4039 y(NIOBUF,)j(then)f(CFITSIO)e(ma)m
(y)j(w)m(aste)h(more)e(time)g(\015ushing)d(and)j(re-reading)g(or)g
(re-writing)e(the)j(same)0 4152 y(records)30 b(in)f(the)i(FITS)e
(\014les.)0 4312 y(2.)54 b(By)35 b(default,)g(CFITSIO)e(can)i(handle)f
(FITS)g(\014les)f(up)h(to)h(2.1)h(GB)g(in)d(size)i(\(2**31)i(b)m
(ytes\).)54 b(This)33 b(\014le)h(size)0 4425 y(limit)k(is)i(often)g
(imp)s(osed)f(b)m(y)h(32-bit)h(op)s(erating)e(systems.)71
b(More)41 b(recen)m(tly)-8 b(,)44 b(as)d(64-bit)f(op)s(erating)g
(systems)0 4538 y(b)s(ecome)33 b(more)g(common,)g(an)g(industry-wide)c
(standard)j(\(at)i(least)e(on)h(Unix)e(systems\))i(has)g(b)s(een)f(dev)
m(elop)s(ed)0 4650 y(to)39 b(supp)s(ort)d(larger)h(sized)h(\014les)f
(\(see)h(h)m(ttp://ftp.sas.com/standards/large.\014le/\).)66
b(Starting)38 b(with)e(v)m(ersion)0 4763 y(2.1)45 b(of)e(CFITSIO,)f
(larger)h(FITS)g(\014les)f(up)h(to)h(6)g(terab)m(ytes)h(in)d(size)h(ma)
m(y)h(b)s(e)f(read)g(and)g(written)g(on)g(sup-)0 4876
y(p)s(orted)f(platforms.)75 b(In)42 b(order)g(to)h(supp)s(ort)e(these)h
(larger)g(\014les,)j(CFITSIO)c(m)m(ust)h(b)s(e)g(compiled)f(with)g(the)
0 4989 y('-D)p 129 4989 V 34 w(LAR)m(GEFILE)p 696 4989
V 33 w(SOUR)m(CE')h(and)g(`-D)p 1491 4989 V 34 w(FILE)p
1736 4989 V 33 w(OFFSET)p 2137 4989 V 32 w(BITS=64')h(compiler)e
(\015ags.)78 b(Some)43 b(platforms)0 5102 y(ma)m(y)c(also)f(require)f
(the)h(`-D)p 1002 5102 V 34 w(LAR)m(GE)p 1358 5102 V
33 w(FILES')g(compiler)f(\015ag.)64 b(This)37 b(causes)h(the)h
(compiler)e(to)i(allo)s(cate)f(8-)0 5215 y(b)m(ytes)44
b(instead)f(of)h(4-b)m(ytes)h(for)f(the)g(`o\013)p 1473
5215 V 33 w(t')g(datat)m(yp)s(e)h(whic)m(h)e(is)f(used)h(to)i(store)f
(\014le)f(o\013set)i(p)s(ositions.)79 b(It)0 5328 y(app)s(ears)31
b(that)i(in)d(most)j(cases)g(it)e(is)g(not)h(necessary)h(to)f(also)g
(include)e(these)i(compiler)f(\015ags)h(when)f(compiling)0
5441 y(programs)f(that)h(link)d(to)j(the)g(CFITSIO)e(library)-8
b(.)0 5601 y(If)21 b(CFITSIO)e(is)h(compiled)g(with)g(the)h(-D)p
1386 5601 V 33 w(LAR)m(GEFILE)p 1952 5601 V 34 w(SOUR)m(CE)f(and)g(-D)p
2654 5601 V 34 w(FILE)p 2899 5601 V 33 w(OFFSET)p 3300
5601 V 32 w(BITS=64)h(\015ags)0 5714 y(on)36 b(a)g(platform)f(that)h
(supp)s(orts)e(large)i(\014les,)h(then)e(it)h(can)g(read)g(and)f(write)
g(FITS)g(\014les)g(that)h(con)m(tain)g(up)f(to)1905 5942
y(47)p eop
%%Page: 48 54
48 53 bop 0 299 a Fi(48)1277 b Fg(CHAPTER)29 b(6.)72
b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y
Fi(2**31)39 b(2880-b)m(yte)g(FITS)d(records,)j(or)d(appro)m(ximately)g
(6)h(terab)m(ytes)h(in)e(size.)59 b(It)37 b(is)f(still)f(required)f
(that)k(the)0 668 y(v)-5 b(alue)29 b(of)g(the)g(NAXISn)f(and)h(PCOUNT)f
(k)m(eyw)m(ords)h(in)f(eac)m(h)i(extension)f(b)s(e)f(within)f(the)i
(range)h(of)f(a)g(signed)f(4-)0 781 y(b)m(yte)d(in)m(teger)g(\(max)g(v)
-5 b(alue)25 b(=)f(2,147,483,648\).)44 b(Th)m(us,)25
b(eac)m(h)h(dimension)c(of)j(an)f(image)h(\(giv)m(en)g(b)m(y)g(the)g
(NAXISn)0 894 y(k)m(eyw)m(ords\),)32 b(the)f(total)h(width)d(of)i(a)g
(table)g(\(NAXIS1)h(k)m(eyw)m(ord\),)g(the)f(n)m(um)m(b)s(er)f(of)h(ro)
m(ws)g(in)e(a)i(table)g(\(NAXIS2)0 1007 y(k)m(eyw)m(ord\),)d(and)d(the)
h(total)h(size)f(of)g(the)g(v)-5 b(ariable-length)25
b(arra)m(y)h(heap)g(in)f(binary)f(tables)i(\(PCOUNT)f(k)m(eyw)m(ord\))0
1120 y(m)m(ust)30 b(b)s(e)g(less)g(than)g(this)f(limit.)0
1280 y(Curren)m(tly)-8 b(,)30 b(supp)s(ort)f(for)i(large)g(\014les)f
(within)e(CFITSIO)h(has)i(b)s(een)f(tested)i(on)f(the)g(Lin)m(ux,)f
(Solaris,)f(and)h(IBM)0 1393 y(AIX)g(op)s(erating)g(systems.)0
1750 y Fd(6.2)135 b(Multiple)46 b(Access)e(to)i(the)f(Same)g(FITS)f
(File)0 2005 y Fi(CFITSIO)35 b(supp)s(orts)g(sim)m(ultaneous)g(read)h
(and)g(write)g(access)h(to)h(m)m(ultiple)c(HDUs)j(in)e(the)i(same)g
(FITS)f(\014le.)0 2118 y(Th)m(us,)43 b(one)e(can)h(op)s(en)e(the)h
(same)h(FITS)e(\014le)g(t)m(wice)i(within)c(a)k(single)d(program)i(and)
g(mo)m(v)m(e)h(to)g(2)f(di\013eren)m(t)0 2231 y(HDUs)30
b(in)e(the)i(\014le,)f(and)g(then)g(read)h(and)e(write)h(data)h(or)g(k)
m(eyw)m(ords)g(to)g(the)g(2)f(extensions)h(just)e(as)i(if)f(one)g(w)m
(ere)0 2344 y(accessing)e(2)g(completely)f(separate)h(FITS)f(\014les.)
38 b(Since)26 b(in)f(general)h(it)g(is)g(not)h(p)s(ossible)d(to)j(ph)m
(ysically)d(op)s(en)i(the)0 2457 y(same)36 b(\014le)f(t)m(wice)h(and)f
(then)g(exp)s(ect)h(to)g(b)s(e)f(able)g(to)i(sim)m(ultaneously)c(\(or)j
(in)e(alternating)h(succession\))h(write)0 2570 y(to)f(2)f(di\013eren)m
(t)g(lo)s(cations)g(in)e(the)j(\014le,)f(CFITSIO)f(recognizes)i(when)e
(the)h(\014le)f(to)i(b)s(e)f(op)s(ened)f(\(in)g(the)i(call)e(to)0
2683 y(\014ts)p 127 2683 28 4 v 32 w(op)s(en)p 349 2683
V 33 w(\014le\))28 b(has)g(already)g(b)s(een)g(op)s(ened)g(and)g
(instead)g(of)h(actually)f(op)s(ening)f(the)i(\014le)f(again,)h(just)f
(logically)0 2796 y(links)g(the)j(new)f(\014le)g(to)h(the)g(old)e
(\014le.)41 b(\(This)29 b(only)h(applies)e(if)i(the)h(\014le)e(is)h(op)
s(ened)g(more)g(than)g(once)i(within)c(the)0 2908 y(same)g(program,)g
(and)f(do)s(es)h(not)f(prev)m(en)m(t)i(the)f(same)g(\014le)e(from)h(b)s
(eing)g(sim)m(ultaneously)e(op)s(ened)i(b)m(y)g(more)h(than)0
3021 y(one)h(program\).)40 b(Then)28 b(b)s(efore)g(CFITSIO)f(reads)h
(or)h(writes)f(to)h(either)f(\(logical\))h(\014le,)f(it)g(mak)m(es)i
(sure)d(that)j(an)m(y)0 3134 y(mo)s(di\014cations)g(made)h(to)h(the)g
(other)g(\014le)e(ha)m(v)m(e)j(b)s(een)e(completely)g(\015ushed)e(from)
i(the)h(in)m(ternal)e(bu\013ers)h(to)h(the)0 3247 y(\014le.)43
b(Th)m(us,)30 b(in)g(principle,)f(one)i(could)f(op)s(en)h(a)h(\014le)e
(t)m(wice,)i(in)e(one)i(case)g(p)s(oin)m(ting)e(to)i(the)f(\014rst)g
(extension)g(and)0 3360 y(in)i(the)i(other)g(p)s(oin)m(ting)d(to)k(the)
e(2nd)g(extension)h(and)e(then)i(write)e(data)j(to)f(b)s(oth)f
(extensions,)h(in)e(an)m(y)i(order,)0 3473 y(without)24
b(danger)i(of)f(corrupting)g(the)g(\014le,)h(There)f(ma)m(y)h(b)s(e)f
(some)h(e\016ciency)f(p)s(enalties)f(in)g(doing)h(this)f(ho)m(w)m(ev)m
(er,)0 3586 y(since)j(CFITSIO)g(has)h(to)h(\015ush)d(all)h(the)h(in)m
(ternal)f(bu\013ers)g(related)h(to)h(one)f(\014le)f(b)s(efore)h(switc)m
(hing)e(to)j(the)f(other,)0 3699 y(so)i(it)g(w)m(ould)f(still)f(b)s(e)i
(pruden)m(t)f(to)i(minimize)d(the)i(n)m(um)m(b)s(er)f(of)i(times)e(one)
i(switc)m(hes)f(bac)m(k)h(and)e(forth)h(b)s(et)m(w)m(een)0
3812 y(doing)f(I/O)i(to)g(di\013eren)m(t)f(HDUs)h(in)e(the)h(same)h
(\014le.)0 4169 y Fd(6.3)135 b(Curren)l(t)46 b(Header)f(Data)h(Unit)g
(\(CHDU\))0 4424 y Fi(In)32 b(general,)i(a)g(FITS)e(\014le)h(can)g(con)
m(tain)g(m)m(ultiple)e(Header)j(Data)h(Units,)e(also)g(called)f
(extensions.)48 b(CFITSIO)0 4537 y(only)37 b(op)s(erates)i(within)d
(one)i(HDU)h(at)g(an)m(y)g(giv)m(en)f(time,)i(and)e(the)g(curren)m(tly)
f(selected)i(HDU)g(is)e(called)h(the)0 4650 y(Curren)m(t)h(Header)h
(Data)h(Unit)e(\(CHDU\).)i(When)f(a)g(FITS)f(\014le)g(is)f(\014rst)h
(created)i(or)f(op)s(ened)f(the)h(CHDU)g(is)0 4763 y(automatically)25
b(de\014ned)e(to)j(b)s(e)e(the)h(\014rst)f(HDU)i(\(i.e.,)g(the)f
(primary)e(arra)m(y\).)40 b(CFITSIO)23 b(routines)h(are)h(pro)m(vided)0
4876 y(to)36 b(mo)m(v)m(e)h(to)g(and)e(op)s(en)g(an)m(y)h(other)g
(existing)e(HDU)j(within)c(the)j(FITS)f(\014le)f(or)i(to)g(app)s(end)e
(or)i(insert)e(a)i(new)0 4989 y(HDU)31 b(in)e(the)i(FITS)e(\014le)h
(whic)m(h)f(then)h(b)s(ecomes)h(the)f(CHDU.)0 5346 y
Fd(6.4)135 b(Subroutine)45 b(Names)0 5601 y Fi(All)24
b(FITSIO)h(subroutine)f(names)i(b)s(egin)e(with)h(the)h(letters)g('ft')
g(to)h(distinguish)22 b(them)k(from)f(other)h(subroutines)0
5714 y(and)34 b(are)h(5)g(or)f(6)h(c)m(haracters)h(long.)53
b(Users)34 b(should)f(not)h(name)h(their)f(o)m(wn)g(subroutines)e(b)s
(eginning)g(with)h('ft')p eop
%%Page: 49 55
49 54 bop 0 299 a Fg(6.5.)72 b(SUBR)m(OUTINE)30 b(F)-10
b(AMILIES)30 b(AND)h(D)m(A)-8 b(T)g(A)g(TYPES)1697 b
Fi(49)0 555 y(to)32 b(a)m(v)m(oid)h(con\015icts.)44 b(\(The)32
b(SPP)f(in)m(terface)h(routines)e(all)h(b)s(egin)f(with)h('fs'\).)45
b(Subroutines)29 b(whic)m(h)h(read)i(or)g(get)0 668 y(information)c
(from)i(the)h(FITS)e(\014le)g(ha)m(v)m(e)j(names)e(b)s(eginning)d(with)
i('ftg...'.)43 b(Subroutines)27 b(whic)m(h)i(write)g(or)i(put)0
781 y(information)e(in)m(to)h(the)h(FITS)e(\014le)h(ha)m(v)m(e)h(names)
g(b)s(eginning)c(with)i('ftp...'.)0 1274 y Fd(6.5)135
b(Subroutine)45 b(F)-11 b(amilies)46 b(and)f(Datat)l(yp)t(es)0
1556 y Fi(Man)m(y)h(of)g(the)g(subroutines)d(come)k(in)d(families)f
(whic)m(h)i(di\013er)f(only)h(in)f(the)i(datat)m(yp)s(e)g(of)g(the)f
(asso)s(ciated)0 1669 y(parameter\(s\))34 b(.)47 b(The)32
b(datat)m(yp)s(e)i(of)f(these)g(subroutines)d(is)i(indicated)f(b)m(y)i
(the)g(last)f(letter)h(of)g(the)g(subroutine)0 1781 y(name)d(\(e.g.,)j
('j')d(in)f('ftpkyj'\))i(as)f(follo)m(ws:)382 2176 y
Fe(x)47 b(-)h(bit)382 2289 y(b)f(-)h(character*1)c(\(unsigned)i(byte\))
382 2402 y(i)h(-)h(short)e(integer)g(\(I*2\))382 2515
y(j)h(-)h(integer)e(\(I*4\))382 2628 y(e)h(-)h(real)e(exponential)f
(floating)h(point)g(\(R*4\))382 2741 y(f)h(-)h(real)e(fixed-format)f
(floating)g(point)i(\(R*4\))382 2854 y(d)g(-)h(double)e(precision)f
(real)i(floating-point)d(\(R*8\))382 2967 y(g)j(-)h(double)e(precision)
f(fixed-format)g(floating)g(point)h(\(R*8\))382 3079
y(c)h(-)h(complex)e(reals)g(\(pairs)g(of)h(R*4)g(values\))382
3192 y(m)g(-)h(double)e(precision)f(complex)h(\(pairs)g(of)h(R*8)g
(values\))382 3305 y(l)g(-)h(logical)e(\(L*4\))382 3418
y(s)h(-)h(character)d(string)0 3813 y Fi(When)23 b(dealing)f(with)g
(the)h(FITS)g(b)m(yte)g(datat)m(yp)s(e,)j(it)d(is)f(imp)s(ortan)m(t)h
(to)g(remem)m(b)s(er)g(that)h(the)f(ra)m(w)g(v)-5 b(alues)23
b(\(b)s(efore)0 3926 y(an)m(y)i(scaling)e(b)m(y)h(the)h(BSCALE)e(and)h
(BZER)m(O,)g(or)h(TSCALn)d(and)i(TZER)m(On)f(k)m(eyw)m(ord)i(v)-5
b(alues\))24 b(in)f(b)m(yte)i(arra)m(ys)0 4039 y(\(BITPIX)37
b(=)f(8\))h(or)f(b)m(yte)i(columns)d(\(TF)m(ORMn)i(=)f('B'\))h(are)g
(in)m(terpreted)f(as)h(unsigned)d(b)m(ytes)j(with)f(v)-5
b(alues)0 4152 y(ranging)39 b(from)g(0)i(to)f(255.)71
b(Some)40 b(F)-8 b(ortran)40 b(compilers)f(supp)s(ort)f(a)i
(non-standard)f(b)m(yte)h(datat)m(yp)s(e)h(suc)m(h)f(as)0
4264 y(INTEGER*1,)34 b(LOGICAL*1,)g(or)f(BYTE,)g(whic)m(h)e(can)i
(sometimes)g(b)s(e)f(used)g(instead)g(of)h(CHARA)m(CTER*1)0
4377 y(v)-5 b(ariables.)37 b(Man)m(y)23 b(mac)m(hines)f(p)s(ermit)g
(passing)f(a)i(n)m(umeric)f(datat)m(yp)s(e)h(\(suc)m(h)g(as)g
(INTEGER*1\))h(to)f(the)g(FITSIO)0 4490 y(subroutines)40
b(whic)m(h)i(are)h(exp)s(ecting)f(a)h(CHARA)m(CTER*1)h(datat)m(yp)s(e,)
j(but)42 b(this)f(tec)m(hnically)h(violates)h(the)0 4603
y(F)-8 b(ortran-77)29 b(standard)d(and)g(is)g(not)h(supp)s(orted)e(on)i
(all)f(mac)m(hines)g(\(e.g.,)k(on)c(a)i(V)-10 b(AX/VMS)27
b(mac)m(hine)g(one)g(m)m(ust)0 4716 y(use)j(the)h(V)-10
b(AX-sp)s(eci\014c)30 b(\045DESCR)f(function\).)0 4876
y(One)22 b(feature)h(of)g(the)g(CFITSIO)e(routines)h(is)f(that)j(they)f
(can)g(op)s(erate)g(on)f(a)h(`X')h(\(bit\))e(column)g(in)f(a)i(binary)e
(table)0 4989 y(as)35 b(though)e(it)h(w)m(ere)h(a)g(`B')g(\(b)m(yte\))g
(column.)52 b(F)-8 b(or)35 b(example)f(a)g(`11X')i(datat)m(yp)s(e)f
(column)e(can)i(b)s(e)f(in)m(terpreted)0 5102 y(the)28
b(same)h(as)f(a)g(`2B')i(column)d(\(i.e.,)i(2)f(unsigned)e(8-bit)i(b)m
(ytes\).)41 b(In)27 b(some)i(instances,)f(it)f(can)i(b)s(e)e(more)h
(e\016cien)m(t)0 5215 y(to)j(read)f(and)g(write)g(whole)f(b)m(ytes)i
(at)g(a)g(time,)f(rather)h(than)f(reading)f(or)i(writing)d(eac)m(h)k
(individual)25 b(bit.)0 5375 y(The)41 b(double)g(precision)f(complex)h
(datat)m(yp)s(e)i(is)e(not)h(a)g(standard)f(F)-8 b(ortran-77)43
b(datat)m(yp)s(e.)76 b(If)41 b(a)i(particular)0 5488
y(F)-8 b(ortran)35 b(compiler)e(do)s(es)h(not)h(directly)e(supp)s(ort)g
(this)h(datat)m(yp)s(e,)i(then)f(one)f(ma)m(y)h(instead)f(pass)g(an)h
(arra)m(y)g(of)0 5601 y(pairs)c(of)i(double)e(precision)g(v)-5
b(alues)31 b(to)j(these)f(subroutines.)44 b(The)33 b(\014rst)e(v)-5
b(alue)32 b(in)f(eac)m(h)j(pair)d(is)h(the)h(real)f(part,)0
5714 y(and)e(the)g(second)h(is)e(the)i(imaginary)e(part.)p
eop
%%Page: 50 56
50 55 bop 0 299 a Fi(50)1277 b Fg(CHAPTER)29 b(6.)72
b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y
Fd(6.6)135 b(Implicit)46 b(Data)g(T)l(yp)t(e)f(Con)l(v)l(ersion)0
816 y Fi(The)22 b(FITSIO)g(routines)g(that)i(read)e(and)h(write)f(n)m
(umerical)f(data)j(can)f(p)s(erform)f(implicit)e(data)j(t)m(yp)s(e)g
(con)m(v)m(ersion.)0 929 y(This)h(means)h(that)h(the)g(data)g(t)m(yp)s
(e)g(of)g(the)g(v)-5 b(ariable)24 b(or)i(arra)m(y)g(in)e(the)i(program)
f(do)s(es)g(not)h(need)g(to)g(b)s(e)f(the)h(same)0 1042
y(as)i(the)f(data)h(t)m(yp)s(e)g(of)f(the)h(v)-5 b(alue)27
b(in)f(the)h(FITS)g(\014le.)39 b(Data)28 b(t)m(yp)s(e)g(con)m(v)m
(ersion)g(is)e(supp)s(orted)g(for)h(n)m(umerical)f(and)0
1155 y(string)32 b(data)i(t)m(yp)s(es)f(\(if)g(the)h(string)e(con)m
(tains)h(a)h(v)-5 b(alid)31 b(n)m(um)m(b)s(er)h(enclosed)h(in)f
(quotes\))i(when)f(reading)f(a)i(FITS)0 1268 y(header)d(k)m(eyw)m(ord)g
(v)-5 b(alue)30 b(and)h(for)f(n)m(umeric)g(v)-5 b(alues)30
b(when)g(reading)g(or)h(writing)e(v)-5 b(alues)30 b(in)f(the)i(primary)
e(arra)m(y)0 1381 y(or)40 b(a)h(table)g(column.)69 b(CFITSIO)39
b(returns)h(status)g(=)h(NUM)p 2185 1381 28 4 v 33 w(O)m(VERFLO)m(W)g
(if)f(the)g(con)m(v)m(erted)i(data)f(v)-5 b(alue)0 1493
y(exceeds)33 b(the)g(range)g(of)g(the)f(output)g(data)i(t)m(yp)s(e.)47
b(Implicit)30 b(data)j(t)m(yp)s(e)g(con)m(v)m(ersion)g(is)e(not)i(supp)
s(orted)d(within)0 1606 y(binary)f(tables)h(for)g(string,)f(logical,)i
(complex,)f(or)g(double)f(complex)h(data)h(t)m(yp)s(es.)0
1767 y(In)g(addition,)f(an)m(y)h(table)g(column)f(ma)m(y)i(b)s(e)f
(read)g(as)h(if)e(it)h(con)m(tained)g(string)f(v)-5 b(alues.)43
b(In)31 b(the)g(case)i(of)e(n)m(umeric)0 1879 y(columns)e(the)i
(returned)e(string)g(will)f(b)s(e)i(formatted)h(using)d(the)j(TDISPn)e
(displa)m(y)g(format)h(if)g(it)g(exists.)0 2266 y Fd(6.7)135
b(Data)46 b(Scaling)0 2527 y Fi(When)38 b(reading)e(n)m(umerical)h
(data)h(v)-5 b(alues)37 b(in)f(the)i(primary)e(arra)m(y)i(or)g(a)g
(table)g(column,)h(the)e(v)-5 b(alues)37 b(will)f(b)s(e)0
2640 y(scaled)h(automatically)h(b)m(y)f(the)h(BSCALE)f(and)g(BZER)m(O)h
(\(or)g(TSCALn)d(and)i(TZER)m(On\))g(header)g(k)m(eyw)m(ord)0
2753 y(v)-5 b(alues)32 b(if)f(they)h(are)h(presen)m(t)g(in)e(the)h
(header.)47 b(The)31 b(scaled)i(data)g(that)g(is)e(returned)g(to)i(the)
g(reading)e(program)0 2866 y(will)d(ha)m(v)m(e)382 3171
y Fe(output)46 b(value)g(=)i(\(FITS)e(value\))g(*)i(BSCALE)e(+)h(BZERO)
0 3476 y Fi(\(a)30 b(corresp)s(onding)d(form)m(ula)h(using)g(TSCALn)f
(and)i(TZER)m(On)e(is)h(used)h(when)f(reading)g(from)h(table)g
(columns\).)0 3589 y(In)i(the)i(case)g(of)f(in)m(teger)g(output)g(v)-5
b(alues)31 b(the)i(\015oating)f(p)s(oin)m(t)f(scaled)g(v)-5
b(alue)32 b(is)f(truncated)h(to)h(an)f(in)m(teger)g(\(not)0
3702 y(rounded)38 b(to)i(the)g(nearest)g(in)m(teger\).)69
b(The)39 b(ftpscl)f(and)h(fttscl)h(subroutines)d(ma)m(y)j(b)s(e)f(used)
g(to)h(o)m(v)m(erride)g(the)0 3815 y(scaling)28 b(parameters)h
(de\014ned)e(in)g(the)i(header)f(\(e.g.,)j(to)e(turn)f(o\013)h(the)f
(scaling)g(so)h(that)g(the)g(program)f(can)h(read)0 3928
y(the)i(ra)m(w)f(unscaled)f(v)-5 b(alues)30 b(from)g(the)g(FITS)g
(\014le\).)0 4088 y(When)44 b(writing)f(n)m(umerical)g(data)i(to)g(the)
g(primary)e(arra)m(y)i(or)f(to)h(a)g(table)g(column)e(the)i(data)g(v)-5
b(alues)44 b(will)0 4201 y(generally)27 b(b)s(e)h(automatically)g(in)m
(v)m(ersely)g(scaled)g(b)m(y)g(the)g(v)-5 b(alue)28 b(of)g(the)h
(BSCALE)e(and)h(BZER)m(O)g(\(or)h(TSCALn)0 4314 y(and)h(TZER)m(On\))g
(header)g(k)m(eyw)m(ord)h(v)-5 b(alues)30 b(if)g(they)h(they)g(exist)f
(in)f(the)i(header.)42 b(These)30 b(k)m(eyw)m(ords)h(m)m(ust)g(ha)m(v)m
(e)0 4426 y(b)s(een)f(written)g(to)i(the)g(header)e(b)s(efore)h(an)m(y)
h(data)f(is)f(written)h(for)f(them)i(to)f(ha)m(v)m(e)i(an)m(y)e
(e\013ect.)44 b(Otherwise,)31 b(one)0 4539 y(ma)m(y)j(use)f(the)g
(ftpscl)f(and)h(fttscl)g(subroutines)d(to)k(de\014ne)f(or)g(o)m(v)m
(erride)g(the)g(scaling)g(k)m(eyw)m(ords)g(in)f(the)h(header)0
4652 y(\(e.g.,)h(to)f(turn)d(o\013)j(the)f(scaling)f(so)h(that)g(the)g
(program)g(can)g(write)f(the)h(ra)m(w)g(unscaled)f(v)-5
b(alues)31 b(in)m(to)h(the)g(FITS)0 4765 y(\014le\).)42
b(If)30 b(scaling)g(is)g(p)s(erformed,)f(the)i(in)m(v)m(erse)g(scaled)g
(output)f(v)-5 b(alue)31 b(that)g(is)f(written)g(in)m(to)h(the)g(FITS)f
(\014le)g(will)0 4878 y(ha)m(v)m(e)430 5183 y Fe(FITS)46
b(value)h(=)g(\(\(input)f(value\))g(-)h(BZERO\))f(/)i(BSCALE)0
5488 y Fi(\(a)39 b(corresp)s(onding)c(form)m(ula)i(using)g(TSCALn)f
(and)h(TZER)m(On)g(is)g(used)g(when)f(writing)g(to)j(table)f
(columns\).)0 5601 y(Rounding)18 b(to)j(the)g(nearest)g(in)m(teger,)h
(rather)f(than)f(truncation,)i(is)d(p)s(erformed)g(when)g(writing)f(in)
m(teger)j(datat)m(yp)s(es)0 5714 y(to)31 b(the)g(FITS)e(\014le.)p
eop
%%Page: 51 57
51 56 bop 0 299 a Fg(6.8.)72 b(ERR)m(OR)30 b(ST)-8 b(A)g(TUS)30
b(V)-10 b(ALUES)30 b(AND)h(THE)f(ERR)m(OR)g(MESSA)m(GE)h(ST)-8
b(A)m(CK)848 b Fi(51)0 555 y Fd(6.8)135 b(Error)46 b(Status)f(V)-11
b(alues)45 b(and)g(the)g(Error)g(Message)h(Stac)l(k)0
809 y Fi(The)33 b(last)h(parameter)g(in)f(nearly)g(ev)m(ery)h(FITSIO)f
(subroutine)f(is)h(the)h(error)f(status)h(v)-5 b(alue)34
b(whic)m(h)e(is)h(b)s(oth)g(an)0 922 y(input)i(and)g(an)i(output)f
(parameter.)60 b(A)36 b(returned)f(p)s(ositiv)m(e)h(v)-5
b(alue)36 b(for)g(this)g(parameter)h(indicates)e(an)h(error)0
1035 y(w)m(as)31 b(detected.)42 b(A)30 b(listing)e(of)j(all)e(the)i
(FITSIO)e(status)i(co)s(de)f(v)-5 b(alues)30 b(is)f(giv)m(en)i(at)g
(the)f(end)g(of)h(this)e(do)s(cumen)m(t.)0 1195 y(The)22
b(FITSIO)g(library)e(uses)j(an)f(`inherited)f(status')i(con)m(v)m(en)m
(tion)h(for)f(the)g(status)g(parameter)g(whic)m(h)f(means)g(that)0
1308 y(if)h(a)i(subroutine)e(is)g(called)h(with)f(a)i(p)s(ositiv)m(e)e
(input)g(v)-5 b(alue)24 b(of)h(the)f(status)h(parameter,)h(then)f(the)f
(subroutine)f(will)0 1421 y(exit)i(immediately)d(without)i(c)m(hanging)
h(the)f(v)-5 b(alue)24 b(of)h(the)g(status)g(parameter.)39
b(Th)m(us,)25 b(if)f(one)g(passes)h(the)g(status)0 1533
y(v)-5 b(alue)30 b(returned)f(from)h(eac)m(h)i(FITSIO)d(routine)g(as)i
(input)e(to)i(the)f(next)h(FITSIO)e(subroutine,)g(then)h(whenev)m(er)0
1646 y(an)39 b(error)g(is)g(detected)h(all)f(further)f(FITSIO)g(pro)s
(cessing)g(will)f(cease.)69 b(This)38 b(con)m(v)m(en)m(tion)i(can)g
(simplify)c(the)0 1759 y(error)30 b(c)m(hec)m(king)i(in)d(application)g
(programs)i(b)s(ecause)g(it)f(is)g(not)h(necessary)g(to)g(c)m(hec)m(k)i
(the)e(v)-5 b(alue)30 b(of)h(the)g(status)0 1872 y(parameter)j(after)g
(ev)m(ery)g(single)f(FITSIO)f(subroutine)f(call.)50 b(If)33
b(a)h(program)f(con)m(tains)h(a)g(sequence)g(of)g(sev)m(eral)0
1985 y(FITSIO)23 b(calls,)h(one)g(can)g(just)g(c)m(hec)m(k)h(the)f
(status)g(v)-5 b(alue)23 b(after)i(the)f(last)f(call.)38
b(Since)23 b(the)h(returned)e(status)j(v)-5 b(alues)0
2098 y(are)36 b(generally)f(distinctiv)m(e,)h(it)f(should)f(b)s(e)h(p)s
(ossible)e(to)j(determine)f(whic)m(h)f(subroutine)g(originally)f
(returned)0 2211 y(the)e(error)f(status.)0 2371 y(FITSIO)i(also)h(main)
m(tains)e(an)i(in)m(ternal)f(stac)m(k)i(of)f(error)g(messages)h(\(80-c)
m(haracter)i(maxim)m(um)c(length\))g(whic)m(h)0 2484
y(in)j(man)m(y)h(cases)h(pro)m(vide)e(a)h(more)g(detailed)g
(explanation)f(of)h(the)g(cause)h(of)f(the)g(error)g(than)f(is)g(pro)m
(vided)g(b)m(y)0 2597 y(the)40 b(error)e(status)i(n)m(um)m(b)s(er)e
(alone.)68 b(It)39 b(is)g(recommended)g(that)g(the)h(error)f(message)h
(stac)m(k)h(b)s(e)e(prin)m(ted)f(out)0 2710 y(whenev)m(er)31
b(a)h(program)g(detects)g(a)g(FITSIO)e(error.)44 b(T)-8
b(o)32 b(do)f(this,)g(call)g(the)h(FTGMSG)g(routine)e(rep)s(eatedly)h
(to)0 2823 y(get)i(the)g(successiv)m(e)f(messages)i(on)e(the)g(stac)m
(k.)48 b(When)32 b(the)h(stac)m(k)g(is)f(empt)m(y)g(FTGMSG)h(will)d
(return)h(a)h(blank)0 2936 y(string.)40 b(Note)31 b(that)g(this)e(is)g
(a)h(`First)g(In)f({)i(First)e(Out')h(stac)m(k,)i(so)e(the)h(oldest)f
(error)f(message)j(is)d(returned)g(\014rst)0 3049 y(b)m(y)h(ftgmsg.)0
3399 y Fd(6.9)135 b(V)-11 b(ariable-Length)46 b(Arra)l(y)f(F)-11
b(acilit)l(y)46 b(in)f(Binary)g(T)-11 b(ables)0 3653
y Fi(FITSIO)38 b(pro)m(vides)h(easy-to-use)i(supp)s(ort)d(for)h
(reading)f(and)h(writing)f(data)i(in)e(v)-5 b(ariable)38
b(length)h(\014elds)f(of)i(a)0 3766 y(binary)34 b(table.)55
b(The)35 b(v)-5 b(ariable)34 b(length)g(columns)g(ha)m(v)m(e)j(TF)m
(ORMn)e(k)m(eyw)m(ord)h(v)-5 b(alues)34 b(of)i(the)f(form)g
(`1Pt\(len\)')0 3878 y(where)27 b(`t')g(is)f(the)i(datat)m(yp)s(e)g(co)
s(de)f(\(e.g.,)j(I,)d(J,)g(E,)g(D,)g(etc.\))41 b(and)27
b(`len')f(is)h(an)f(in)m(teger)i(sp)s(ecifying)d(the)i(maxim)m(um)0
3991 y(length)f(of)h(the)h(v)m(ector)g(in)e(the)h(table.)39
b(If)27 b(the)g(v)-5 b(alue)26 b(of)h(`len')g(is)f(not)h(sp)s
(eci\014ed)e(when)h(the)h(table)g(is)f(created)i(\(e.g.,)0
4104 y(if)e(the)i(TF)m(ORM)f(k)m(eyw)m(ord)h(v)-5 b(alue)27
b(is)f(simply)f(sp)s(eci\014ed)h(as)h('1PE')h(instead)f(of)g
('1PE\(400\))j(\),)e(then)f(FITSIO)g(will)0 4217 y(automatically)i
(scan)g(the)g(table)g(when)f(it)h(is)f(closed)h(to)h(determine)e(the)h
(maxim)m(um)f(length)g(of)i(the)f(v)m(ector)i(and)0 4330
y(will)d(app)s(end)g(this)i(v)-5 b(alue)30 b(to)h(the)f(TF)m(ORMn)g(v)
-5 b(alue.)0 4490 y(The)25 b(same)h(routines)f(whic)m(h)f(read)i(and)f
(write)g(data)h(in)e(an)i(ordinary)e(\014xed)h(length)g(binary)f(table)
h(extension)h(are)0 4603 y(also)k(used)f(for)h(v)-5 b(ariable)29
b(length)h(\014elds,)e(ho)m(w)m(ev)m(er,)k(the)e(subroutine)e
(parameters)j(tak)m(e)h(on)e(a)g(sligh)m(tly)e(di\013eren)m(t)0
4716 y(in)m(terpretation)i(as)g(describ)s(ed)f(b)s(elo)m(w.)0
4876 y(All)35 b(the)h(data)h(in)e(a)i(v)-5 b(ariable)35
b(length)g(\014eld)g(is)g(written)h(in)m(to)g(an)g(area)h(called)f(the)
g(`heap')g(whic)m(h)f(follo)m(ws)h(the)0 4989 y(main)25
b(\014xed-length)g(FITS)g(binary)g(table.)39 b(The)25
b(size)h(of)h(the)f(heap,)h(in)e(b)m(ytes,)i(is)e(sp)s(eci\014ed)g
(with)f(the)j(PCOUNT)0 5102 y(k)m(eyw)m(ord)21 b(in)e(the)i(FITS)f
(header.)37 b(When)20 b(creating)h(a)g(new)f(binary)f(table,)j(the)f
(initial)d(v)-5 b(alue)20 b(of)g(PCOUNT)g(should)0 5215
y(usually)29 b(b)s(e)h(set)i(to)g(zero.)44 b(FITSIO)30
b(will)e(recompute)k(the)f(size)g(of)h(the)f(heap)g(as)g(the)h(data)g
(is)e(written)g(and)h(will)0 5328 y(automatically)25
b(up)s(date)f(the)i(PCOUNT)e(k)m(eyw)m(ord)h(v)-5 b(alue)25
b(when)f(the)h(table)g(is)f(closed.)39 b(When)25 b(writing)e(v)-5
b(ariable)0 5441 y(length)33 b(data)h(to)g(a)g(table,)h(CFITSIO)d(will)
e(automatically)k(extend)f(the)h(size)f(of)h(the)g(heap)f(area)h(if)f
(necessary)-8 b(,)0 5554 y(so)31 b(that)g(an)m(y)f(follo)m(wing)f(HDUs)
i(do)f(not)h(get)h(o)m(v)m(erwritten.)0 5714 y(By)e(default)e(the)i
(heap)f(data)i(area)f(starts)g(immediately)e(after)i(the)f(last)h(ro)m
(w)f(of)h(the)g(\014xed-length)e(table.)41 b(This)p eop
%%Page: 52 58
52 57 bop 0 299 a Fi(52)1277 b Fg(CHAPTER)29 b(6.)72
b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y
Fi(default)26 b(starting)g(lo)s(cation)h(ma)m(y)g(b)s(e)f(o)m(v)m
(erridden)g(b)m(y)h(the)g(THEAP)f(k)m(eyw)m(ord,)i(but)f(this)e(is)h
(not)h(recommended.)0 668 y(If)34 b(additional)e(ro)m(ws)i(of)g(data)h
(are)g(added)e(to)i(the)f(table,)i(CFITSIO)c(will)g(automatically)i
(shift)e(the)j(the)f(heap)0 781 y(do)m(wn)g(to)i(mak)m(e)f(ro)s(om)g
(for)f(the)h(new)f(ro)m(ws,)i(but)e(it)h(is)e(ob)m(viously)h(b)s(e)g
(more)h(e\016cien)m(t)g(to)g(initially)c(create)37 b(the)0
894 y(table)30 b(with)e(the)i(necessary)g(n)m(um)m(b)s(er)f(of)h(blank)
e(ro)m(ws,)i(so)g(that)g(the)g(heap)g(do)s(es)f(not)h(needed)g(to)g(b)s
(e)f(constan)m(tly)0 1007 y(mo)m(v)m(ed.)0 1167 y(When)40
b(writing)f(to)i(a)g(v)-5 b(ariable)39 b(length)h(\014eld,)i(the)f(en)m
(tire)g(arra)m(y)g(of)f(v)-5 b(alues)40 b(for)g(a)h(giv)m(en)g(ro)m(w)g
(of)f(the)h(table)0 1280 y(m)m(ust)36 b(b)s(e)g(written)f(with)g(a)h
(single)f(call)h(to)h(FTPCLx.)57 b(The)36 b(total)h(length)f(of)g(the)g
(arra)m(y)h(is)e(calculated)h(from)0 1393 y(\(NELEM+FELEM-1\).)44
b(One)30 b(cannot)i(app)s(end)d(more)i(elemen)m(ts)g(to)h(an)e
(existing)g(\014eld)g(at)h(a)h(later)f(time;)g(an)m(y)0
1506 y(attempt)k(to)f(do)g(so)g(will)d(simply)g(o)m(v)m(erwrite)k(all)d
(the)i(data)h(whic)m(h)d(w)m(as)i(previously)e(written.)50
b(Note)35 b(also)e(that)0 1619 y(the)h(new)g(data)g(will)e(b)s(e)h
(written)g(to)i(a)f(new)g(area)g(of)g(the)h(heap)e(and)h(the)g(heap)g
(space)g(used)f(b)m(y)h(the)g(previous)0 1732 y(write)i(cannot)i(b)s(e)
e(reclaimed.)60 b(F)-8 b(or)38 b(this)e(reason)h(it)g(is)f(advised)g
(that)i(eac)m(h)g(ro)m(w)f(of)h(a)f(v)-5 b(ariable)36
b(length)g(\014eld)0 1844 y(only)c(b)s(e)h(written)f(once.)50
b(An)33 b(exception)g(to)h(this)e(general)h(rule)f(o)s(ccurs)h(when)f
(setting)h(elemen)m(ts)h(of)f(an)g(arra)m(y)0 1957 y(as)38
b(unde\014ned.)63 b(One)37 b(m)m(ust)i(\014rst)e(write)g(a)i(dumm)m(y)e
(v)-5 b(alue)38 b(in)m(to)g(the)h(arra)m(y)f(with)f(FTPCLx,)j(and)e
(then)g(call)0 2070 y(FTPCLU)33 b(to)i(\015ag)f(the)f(desired)g(elemen)
m(ts)h(as)f(unde\014ned.)49 b(\(Do)35 b(not)f(use)f(the)h(FTPCNx)f
(family)f(of)i(routines)0 2183 y(with)27 b(v)-5 b(ariable)28
b(length)g(\014elds\).)39 b(Note)30 b(that)f(the)g(ro)m(ws)g(of)g(a)g
(table,)g(whether)f(\014xed)g(or)h(v)-5 b(ariable)27
b(length,)i(do)g(not)0 2296 y(ha)m(v)m(e)j(to)f(b)s(e)e(written)h
(consecutiv)m(ely)g(and)g(ma)m(y)h(b)s(e)f(written)f(in)g(an)m(y)i
(order.)0 2456 y(When)40 b(writing)f(to)i(a)g(v)-5 b(ariable)39
b(length)h(ASCI)s(I)f(c)m(haracter)j(\014eld)d(\(e.g.,)45
b(TF)m(ORM)c(=)f('1P)-8 b(A'\))43 b(only)c(a)i(single)0
2569 y(c)m(haracter)33 b(string)e(written.)43 b(FTPCLS)30
b(writes)h(the)h(whole)e(length)h(of)h(the)g(input)d(string)i(\(min)m
(us)f(an)m(y)i(trailing)0 2682 y(blank)k(c)m(haracters\),)42
b(th)m(us)37 b(the)h(NELEM)f(and)g(FELEM)h(parameters)g(are)g(ignored.)
61 b(If)37 b(the)h(input)d(string)i(is)0 2795 y(completely)26
b(blank)g(then)g(FITSIO)g(will)e(write)i(one)h(blank)e(c)m(haracter)k
(to)e(the)g(FITS)f(\014le.)39 b(Similarly)-8 b(,)24 b(FTGCVS)0
2908 y(and)35 b(FTGCFS)g(read)g(the)h(en)m(tire)f(string)g(\(truncated)
g(to)i(the)e(width)f(of)h(the)h(c)m(haracter)h(string)d(argumen)m(t)i
(in)0 3021 y(the)31 b(subroutine)d(call\))i(and)g(also)g(ignore)g(the)g
(NELEM)h(and)f(FELEM)g(parameters.)0 3181 y(The)35 b(FTPDES)h
(subroutine)d(is)i(useful)f(in)g(situations)h(where)g(m)m(ultiple)f(ro)
m(ws)h(of)h(a)g(v)-5 b(ariable)35 b(length)g(column)0
3294 y(ha)m(v)m(e)d(the)e(iden)m(tical)f(arra)m(y)i(of)g(v)-5
b(alues.)40 b(One)30 b(can)g(simply)e(write)i(the)g(arra)m(y)h(once)g
(for)g(the)f(\014rst)g(ro)m(w,)g(and)g(then)0 3407 y(use)36
b(FTPDES)g(to)h(write)f(the)g(same)h(descriptor)f(v)-5
b(alues)35 b(in)m(to)i(the)f(other)h(ro)m(ws)f(\(use)h(the)f(FTGDES)h
(routine)0 3520 y(to)f(read)f(the)h(\014rst)f(descriptor)f(v)-5
b(alue\);)38 b(all)c(the)i(ro)m(ws)f(will)e(then)i(p)s(oin)m(t)f(to)i
(the)g(same)f(storage)i(lo)s(cation)e(th)m(us)0 3633
y(sa)m(ving)30 b(disk)f(space.)0 3793 y(When)35 b(reading)f(from)g(a)i
(v)-5 b(ariable)33 b(length)i(arra)m(y)g(\014eld)f(one)h(can)g(only)g
(read)f(as)i(man)m(y)f(elemen)m(ts)g(as)g(actually)0
3906 y(exist)h(in)e(that)j(ro)m(w)e(of)h(the)g(table;)j(reading)c(do)s
(es)h(not)g(automatically)f(con)m(tin)m(ue)h(with)f(the)h(next)g(ro)m
(w)g(of)g(the)0 4019 y(table)28 b(as)g(o)s(ccurs)g(when)f(reading)g(an)
h(ordinary)f(\014xed)g(length)g(table)h(\014eld.)39 b(A)m(ttempts)29
b(to)g(read)f(more)g(than)g(this)0 4131 y(will)h(cause)k(an)e(error)h
(status)g(to)g(b)s(e)f(returned.)44 b(One)32 b(can)g(determine)f(the)h
(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)g(in)f(eac)m(h)i(ro)m(w)0
4244 y(of)e(a)f(v)-5 b(ariable)29 b(column)h(with)f(the)h(FTGDES)h
(subroutine.)0 4657 y Fd(6.10)136 b(Supp)t(ort)44 b(for)h(IEEE)g(Sp)t
(ecial)h(V)-11 b(alues)0 4924 y Fi(The)26 b(ANSI/IEEE-754)h
(\015oating-p)s(oin)m(t)f(n)m(um)m(b)s(er)f(standard)g(de\014nes)h
(certain)g(sp)s(ecial)f(v)-5 b(alues)25 b(that)i(are)g(used)e(to)0
5036 y(represen)m(t)j(suc)m(h)g(quan)m(tities)f(as)h(Not-a-Num)m(b)s
(er)h(\(NaN\),)h(denormalized,)d(under\015o)m(w,)g(o)m(v)m(er\015o)m
(w,)j(and)d(in\014nit)m(y)-8 b(.)0 5149 y(\(See)29 b(the)f(App)s(endix)
d(in)i(the)h(NOST)g(FITS)f(standard)g(or)h(the)g(NOST)g(FITS)f(User's)h
(Guide)f(for)h(a)g(list)f(of)h(these)0 5262 y(v)-5 b(alues\).)40
b(The)30 b(FITSIO)f(subroutines)f(that)j(read)f(\015oating)h(p)s(oin)m
(t)e(data)i(in)e(FITS)g(\014les)h(recognize)h(these)g(IEEE)0
5375 y(sp)s(ecial)38 b(v)-5 b(alues)38 b(and)h(b)m(y)g(default)f(in)m
(terpret)h(the)g(o)m(v)m(er\015o)m(w)i(and)d(in\014nit)m(y)f(v)-5
b(alues)39 b(as)g(b)s(eing)f(equiv)-5 b(alen)m(t)39 b(to)h(a)0
5488 y(NaN,)35 b(and)e(con)m(v)m(ert)i(the)f(under\015o)m(w)e(and)h
(denormalized)f(v)-5 b(alues)33 b(in)m(to)h(zeros.)51
b(In)33 b(some)h(cases)h(programmers)0 5601 y(ma)m(y)d(w)m(an)m(t)g
(access)g(to)g(the)g(ra)m(w)f(IEEE)g(v)-5 b(alues,)31
b(without)f(an)m(y)i(mo)s(di\014cation)d(b)m(y)i(FITSIO.)g(This)e(can)j
(b)s(e)e(done)0 5714 y(b)m(y)k(calling)g(the)g(FTGPVx)h(or)g(FTGCVx)g
(routines)e(while)g(sp)s(ecifying)f(0.0)k(as)f(the)f(v)-5
b(alue)34 b(of)h(the)g(NULL)-10 b(V)g(AL)p eop
%%Page: 53 59
53 58 bop 0 299 a Fg(6.11.)73 b(WHEN)31 b(THE)f(FINAL)g(SIZE)f(OF)i
(THE)f(FITS)f(HDU)i(IS)f(UNKNO)m(WN)978 b Fi(53)0 555
y(parameter.)72 b(This)38 b(will)g(force)j(FITSIO)e(to)j(simply)c(pass)
i(the)g(IEEE)g(v)-5 b(alues)40 b(through)g(to)h(the)g(application)0
668 y(program,)30 b(without)f(an)m(y)h(mo)s(di\014cation.)39
b(This)29 b(do)s(es)g(not)h(w)m(ork)g(for)g(double)f(precision)f(v)-5
b(alues)29 b(on)h(V)-10 b(AX/VMS)0 781 y(mac)m(hines,)37
b(ho)m(w)m(ev)m(er,)i(where)d(there)g(is)f(no)h(easy)g(w)m(a)m(y)h(to)g
(b)m(ypass)f(the)g(default)f(in)m(terpretation)g(of)h(the)h(IEEE)0
894 y(sp)s(ecial)29 b(v)-5 b(alues.)0 1393 y Fd(6.11)136
b(When)44 b(the)h(Final)h(Size)f(of)g(the)g(FITS)f(HDU)h(is)g(Unkno)l
(wn)0 1676 y Fi(It)27 b(is)g(not)g(required)e(to)j(kno)m(w)f(the)h
(total)g(size)f(of)g(a)h(FITS)e(data)i(arra)m(y)g(or)f(table)g(b)s
(efore)g(b)s(eginning)d(to)k(write)f(the)0 1789 y(data)32
b(to)f(the)g(FITS)f(\014le.)42 b(In)30 b(the)h(case)h(of)f(the)g
(primary)e(arra)m(y)i(or)g(an)f(image)i(extension,)e(one)i(should)c
(initially)0 1902 y(create)j(the)e(arra)m(y)h(with)d(the)j(size)f(of)g
(the)g(highest)f(dimension)f(\(largest)j(NAXISn)e(k)m(eyw)m(ord\))i
(set)g(to)g(a)f(dumm)m(y)0 2015 y(v)-5 b(alue,)25 b(suc)m(h)f(as)g(1.)
39 b(Then)23 b(after)i(all)e(the)i(data)f(ha)m(v)m(e)i(b)s(een)d
(written)g(and)h(the)g(true)g(dimensions)e(are)i(kno)m(wn,)h(then)0
2128 y(the)31 b(NAXISn)e(v)-5 b(alue)30 b(should)f(b)s(e)h(up)s(dated)f
(using)g(the)i(\014ts)p 2051 2128 28 4 v 62 w(up)s(date)p
2389 2128 V 32 w(k)m(ey)h(routine)d(b)s(efore)h(mo)m(ving)h(to)g
(another)0 2240 y(extension)f(or)g(closing)g(the)g(FITS)g(\014le.)0
2401 y(When)f(writing)e(to)i(FITS)g(tables,)g(CFITSIO)e(automatically)i
(k)m(eeps)h(trac)m(k)g(of)f(the)g(highest)g(ro)m(w)g(n)m(um)m(b)s(er)e
(that)0 2514 y(is)k(written)g(to,)i(and)e(will)e(increase)j(the)g(size)
g(of)g(the)g(table)f(if)g(necessary)-8 b(.)46 b(CFITSIO)30
b(will)f(also)j(automatically)0 2626 y(insert)j(space)i(in)e(the)h
(FITS)f(\014le)h(if)f(necessary)-8 b(,)39 b(to)e(ensure)e(that)i(the)f
(data)h('heap',)h(if)d(it)h(exists,)h(and/or)g(an)m(y)0
2739 y(additional)26 b(HDUs)j(that)g(follo)m(w)e(the)i(table)f(do)g
(not)h(get)g(o)m(v)m(erwritten)g(as)f(new)g(ro)m(ws)g(are)h(written)e
(to)i(the)g(table.)0 2900 y(As)37 b(a)h(general)f(rule)f(it)h(is)f(b)s
(est)h(to)h(sp)s(ecify)e(the)i(initial)c(n)m(um)m(b)s(er)i(of)i(ro)m
(ws)f(=)g(0)g(when)g(the)g(table)g(is)g(created,)0 3012
y(then)h(let)g(CFITSIO)f(k)m(eep)i(trac)m(k)g(of)g(the)f(n)m(um)m(b)s
(er)f(of)i(ro)m(ws)f(that)h(are)f(actually)g(written.)64
b(The)38 b(application)0 3125 y(program)e(should)e(not)j(man)m(ually)e
(up)s(date)g(the)i(n)m(um)m(b)s(er)e(of)h(ro)m(ws)g(in)f(the)i(table)f
(\(as)h(giv)m(en)f(b)m(y)g(the)h(NAXIS2)0 3238 y(k)m(eyw)m(ord\))j
(since)e(CFITSIO)f(do)s(es)i(this)f(automatically)-8
b(.)66 b(If)38 b(a)i(table)e(is)g(initially)e(created)k(with)d(more)i
(than)0 3351 y(zero)i(ro)m(ws,)j(then)c(this)g(will)d(usually)i(b)s(e)h
(considered)f(as)i(the)g(minim)m(um)d(size)i(of)h(the)g(table,)i(ev)m
(en)e(if)f(few)m(er)0 3464 y(ro)m(ws)30 b(are)g(actually)f(written)g
(to)i(the)f(table.)40 b(Th)m(us,)30 b(if)e(a)j(table)e(is)g(initially)d
(created)31 b(with)e(NAXIS2)h(=)f(20,)j(and)0 3577 y(CFITSIO)f(only)h
(writes)f(10)j(ro)m(ws)e(of)h(data)g(b)s(efore)f(closing)g(the)h
(table,)g(then)f(NAXIS2)h(will)d(remain)h(equal)h(to)0
3690 y(20.)50 b(If)33 b(ho)m(w)m(ev)m(er,)i(30)g(ro)m(ws)e(of)g(data)h
(are)g(written)e(to)i(this)e(table,)i(then)f(NAXIS2)h(will)c(b)s(e)j
(increased)f(from)h(20)0 3803 y(to)f(30.)44 b(The)31
b(one)g(exception)h(to)g(this)e(automatic)i(up)s(dating)d(of)i(the)h
(NAXIS2)f(k)m(eyw)m(ord)h(is)e(if)g(the)i(application)0
3916 y(program)c(directly)e(mo)s(di\014es)g(the)j(v)-5
b(alue)27 b(of)h(NAXIS2)g(\(up)f(or)h(do)m(wn\))g(itself)f(just)g(b)s
(efore)h(closing)f(the)h(table.)40 b(In)0 4029 y(this)27
b(case,)j(CFITSIO)d(do)s(es)h(not)h(up)s(date)e(NAXIS2)i(again,)g
(since)f(it)g(assumes)g(that)h(the)f(application)f(program)0
4142 y(m)m(ust)32 b(ha)m(v)m(e)h(had)f(a)g(go)s(o)s(d)g(reason)h(for)f
(c)m(hanging)g(the)g(v)-5 b(alue)32 b(directly)-8 b(.)45
b(This)30 b(is)h(not)i(recommended,)f(ho)m(w)m(ev)m(er,)0
4254 y(and)j(is)g(only)g(pro)m(vided)g(for)g(bac)m(kw)m(ard)h
(compatibilit)m(y)e(with)h(soft)m(w)m(are)i(that)g(initially)32
b(creates)37 b(a)f(table)g(with)0 4367 y(a)e(large)g(n)m(um)m(b)s(er)f
(of)h(ro)m(ws,)h(than)f(decreases)g(the)h(NAXIS2)f(v)-5
b(alue)33 b(to)i(the)f(actual)g(smaller)f(v)-5 b(alue)33
b(just)g(b)s(efore)0 4480 y(closing)c(the)i(table.)0
4979 y Fd(6.12)136 b(Lo)t(cal)45 b(FITS)e(Con)l(v)l(en)l(tions)k(supp)t
(orted)d(b)l(y)h(FITSIO)0 5262 y Fi(CFITSIO)25 b(supp)s(orts)g(sev)m
(eral)i(lo)s(cal)e(FITS)h(con)m(v)m(en)m(tions)i(whic)m(h)d(are)i(not)g
(de\014ned)e(in)g(the)i(o\016cial)f(NOST)g(FITS)0 5375
y(standard)k(and)g(whic)m(h)g(are)h(not)g(necessarily)e(recognized)i
(or)g(supp)s(orted)e(b)m(y)i(other)g(FITS)f(soft)m(w)m(are)i(pac)m(k)-5
b(ages.)0 5488 y(Programmers)36 b(should)e(b)s(e)h(cautious)h(ab)s(out)
f(using)g(these)h(features,)i(esp)s(ecially)c(if)h(the)h(FITS)f
(\014les)g(that)i(are)0 5601 y(pro)s(duced)31 b(are)i(exp)s(ected)g(to)
g(b)s(e)f(pro)s(cessed)g(b)m(y)h(other)f(soft)m(w)m(are)i(systems)f
(whic)m(h)e(do)i(not)f(use)h(the)f(CFITSIO)0 5714 y(in)m(terface.)p
eop
%%Page: 54 60
54 59 bop 0 299 a Fi(54)1277 b Fg(CHAPTER)29 b(6.)72
b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y
Fb(6.12.1)113 b(Supp)s(ort)37 b(for)h(Long)g(String)e(Keyw)m(ord)i(V)-9
b(alues.)0 774 y Fi(The)23 b(length)h(of)g(a)g(standard)f(FITS)g
(string)g(k)m(eyw)m(ord)h(is)f(limited)f(to)i(68)h(c)m(haracters)g(b)s
(ecause)f(it)f(m)m(ust)h(\014t)g(en)m(tirely)0 887 y(within)33
b(a)j(single)f(FITS)g(header)h(k)m(eyw)m(ord)g(record.)57
b(In)35 b(some)h(instances)f(it)h(is)e(necessary)j(to)f(enco)s(de)g
(strings)0 1000 y(longer)26 b(than)g(this)f(limit,)g(so)h(FITSIO)f
(supp)s(orts)f(a)j(lo)s(cal)e(con)m(v)m(en)m(tion)i(in)e(whic)m(h)g
(the)h(string)f(v)-5 b(alue)26 b(is)f(con)m(tin)m(ued)0
1113 y(o)m(v)m(er)34 b(m)m(ultiple)d(k)m(eyw)m(ords.)49
b(This)31 b(con)m(tin)m(uation)i(con)m(v)m(en)m(tion)i(uses)d(an)h(amp)
s(ersand)f(c)m(haracter)i(at)g(the)f(end)g(of)0 1226
y(eac)m(h)c(substring)c(to)j(indicate)f(that)h(it)f(is)g(con)m(tin)m
(ued)g(on)g(the)h(next)g(k)m(eyw)m(ord,)h(and)d(the)i(con)m(tin)m
(uation)g(k)m(eyw)m(ords)0 1339 y(all)42 b(ha)m(v)m(e)j(the)f(name)f
(CONTINUE)g(without)f(an)i(equal)f(sign)f(in)g(column)h(9.)80
b(The)43 b(string)g(v)-5 b(alue)42 b(ma)m(y)j(b)s(e)0
1452 y(con)m(tin)m(ued)28 b(in)f(this)h(w)m(a)m(y)h(o)m(v)m(er)h(as)e
(man)m(y)h(additional)d(CONTINUE)i(k)m(eyw)m(ords)g(as)h(is)e
(required.)39 b(The)27 b(follo)m(wing)0 1564 y(lines)i(illustrate)f
(this)h(con)m(tin)m(uation)i(con)m(v)m(en)m(tion)g(whic)m(h)e(is)h
(used)f(in)g(the)i(v)-5 b(alue)30 b(of)g(the)h(STRKEY)e(k)m(eyw)m(ord:)
0 1802 y Fe(LONGSTRN=)45 b('OGIP)i(1.0')524 b(/)47 b(The)g(OGIP)g(Long)
f(String)g(Convention)f(may)i(be)g(used.)0 1915 y(STRKEY)94
b(=)47 b('This)g(is)g(a)g(very)g(long)g(string)f(keyword&')93
b(/)47 b(Optional)f(Comment)0 2028 y(CONTINUE)93 b(')48
b(value)e(that)h(is)g(continued)e(over)i(3)g(keywords)f(in)h(the)g(&)95
b(')0 2141 y(CONTINUE)e('FITS)47 b(header.')e(/)j(This)e(is)h(another)f
(optional)g(comment.)0 2379 y Fi(It)29 b(is)f(recommended)g(that)h(the)
g(LONGSTRN)f(k)m(eyw)m(ord,)i(as)f(sho)m(wn)f(here,)h(alw)m(a)m(ys)h(b)
s(e)e(included)e(in)h(an)m(y)i(HDU)0 2492 y(that)f(uses)e(this)g
(longstring)g(con)m(v)m(en)m(tion.)41 b(A)27 b(subroutine)e(called)h
(FTPLSW)h(has)g(b)s(een)f(pro)m(vided)g(in)f(CFITSIO)0
2605 y(to)31 b(write)f(this)f(k)m(eyw)m(ord)i(if)e(it)h(do)s(es)g(not)h
(already)f(exist.)0 2765 y(This)22 b(long)i(string)g(con)m(v)m(en)m
(tion)h(is)e(supp)s(orted)g(b)m(y)h(the)g(follo)m(wing)f(FITSIO)g
(subroutines)f(that)j(deal)f(with)f(string-)0 2878 y(v)-5
b(alued)29 b(k)m(eyw)m(ords:)286 3116 y Fe(ftgkys)46
b(-)i(read)f(a)g(string)f(keyword)286 3229 y(ftpkls)g(-)i(write)e
(\(append\))g(a)h(string)f(keyword)286 3342 y(ftikls)g(-)i(insert)e(a)h
(string)g(keyword)286 3455 y(ftmkls)f(-)i(modify)e(the)h(value)f(of)h
(an)h(existing)d(string)h(keyword)286 3568 y(ftukls)g(-)i(update)e(an)h
(existing)f(keyword,)f(or)i(write)g(a)g(new)g(keyword)286
3681 y(ftdkey)f(-)i(delete)e(a)h(keyword)0 3919 y Fi(These)41
b(routines)e(will)f(transparen)m(tly)i(read,)k(write,)f(or)e(delete)g
(a)g(long)f(string)g(v)-5 b(alue)40 b(in)g(the)h(FITS)f(\014le,)j(so)0
4031 y(programmers)36 b(in)f(general)h(do)g(not)h(ha)m(v)m(e)g(to)g(b)s
(e)f(concerned)g(ab)s(out)g(the)g(details)g(of)g(the)h(con)m(v)m(en)m
(tion)g(that)g(is)0 4144 y(used)32 b(to)i(enco)s(de)f(the)g(long)f
(string)g(in)g(the)h(FITS)f(header.)48 b(When)33 b(reading)f(a)h(long)g
(string,)g(one)g(m)m(ust)g(ensure)0 4257 y(that)h(the)f(c)m(haracter)i
(string)e(parameter)h(used)e(in)g(these)i(subroutine)d(calls)i(has)g(b)
s(een)f(declared)h(long)g(enough)0 4370 y(to)e(hold)e(the)i(en)m(tire)f
(string,)g(otherwise)f(the)i(returned)e(string)g(v)-5
b(alue)30 b(will)e(b)s(e)i(truncated.)0 4530 y(Note)d(that)e(the)h
(more)f(commonly)g(used)f(FITSIO)g(subroutine)g(to)i(write)e(string)g
(v)-5 b(alued)24 b(k)m(eyw)m(ords)i(\(FTPKYS\))0 4643
y(do)s(es)38 b(NOT)g(supp)s(ort)f(this)g(long)h(string)g(con)m(v)m(en)m
(tion)h(and)f(only)g(supp)s(orts)e(strings)h(up)h(to)h(68)g(c)m
(haracters)h(in)0 4756 y(length.)h(This)29 b(has)h(b)s(een)g(done)h
(delib)s(erately)d(to)k(prev)m(en)m(t)f(programs)g(from)f(inadv)m
(erten)m(tly)g(writing)f(k)m(eyw)m(ords)0 4869 y(using)37
b(this)h(non-standard)f(con)m(v)m(en)m(tion)j(without)e(the)g(explicit)
f(in)m(ten)m(t)i(of)g(the)g(programmer)f(or)h(user.)64
b(The)0 4982 y(FTPKLS)28 b(subroutine)f(m)m(ust)i(b)s(e)g(called)f
(instead)h(to)h(write)e(long)h(strings.)39 b(This)27
b(routine)i(can)g(also)g(b)s(e)g(used)f(to)0 5095 y(write)i(ordinary)e
(string)i(v)-5 b(alues)29 b(less)h(than)g(68)h(c)m(haracters)h(in)d
(length.)0 5382 y Fb(6.12.2)113 b(Arra)m(ys)37 b(of)g(Fixed-Length)i
(Strings)e(in)f(Binary)h(T)-9 b(ables)0 5601 y Fi(The)29
b(de\014nition)e(of)j(the)f(FITS)g(binary)e(table)j(extension)f(format)
g(do)s(es)h(not)f(pro)m(vide)g(a)g(simple)f(w)m(a)m(y)i(to)g(sp)s
(ecify)0 5714 y(that)f(a)f(c)m(haracter)i(column)d(con)m(tains)h(an)g
(arra)m(y)h(of)f(\014xed-length)f(strings.)39 b(T)-8
b(o)29 b(supp)s(ort)d(this)h(feature,)i(FITSIO)p eop
%%Page: 55 61
55 60 bop 0 299 a Fg(6.12.)73 b(LOCAL)29 b(FITS)h(CONVENTIONS)f(SUPPOR)
-8 b(TED)29 b(BY)i(FITSIO)1168 b Fi(55)0 555 y(uses)31
b(a)h(lo)s(cal)f(con)m(v)m(en)m(tion)h(for)f(the)h(format)g(of)g(the)f
(TF)m(ORMn)g(k)m(eyw)m(ord)h(v)-5 b(alue)31 b(of)h(the)g(form)f('rAw')g
(where)g('r')0 668 y(is)c(an)g(in)m(teger)h(sp)s(ecifying)d(the)j
(total)g(width)e(in)g(c)m(haracters)j(of)f(the)g(column,)f(and)g('w')g
(is)g(an)g(in)m(teger)h(sp)s(ecifying)0 781 y(the)c(\(\014xed\))g
(length)g(of)g(an)g(individual)19 b(unit)k(string)g(within)e(the)j(v)m
(ector.)41 b(F)-8 b(or)24 b(example,)i(TF)m(ORM1)e(=)g('120A10')0
894 y(w)m(ould)k(indicate)g(that)h(the)h(binary)d(table)i(column)f(is)g
(120)i(c)m(haracters)g(wide)e(and)h(consists)f(of)h(12)h(10-c)m
(haracter)0 1007 y(length)e(strings.)39 b(This)27 b(con)m(v)m(en)m
(tion)j(is)d(recognized)i(b)m(y)g(the)f(FITSIO)g(subroutines)e(that)j
(read)g(or)f(write)g(strings)0 1120 y(in)37 b(binary)f(tables.)64
b(The)37 b(Binary)g(T)-8 b(able)38 b(de\014nition)e(do)s(cumen)m(t)i
(sp)s(eci\014es)e(that)j(other)f(optional)f(c)m(haracters)0
1233 y(ma)m(y)f(follo)m(w)f(the)g(datat)m(yp)s(e)i(co)s(de)e(in)g(the)g
(TF)m(ORM)h(k)m(eyw)m(ord,)i(so)d(this)g(lo)s(cal)f(con)m(v)m(en)m
(tion)j(is)d(in)h(compliance)0 1346 y(with)23 b(the)i(FITS)f(standard,)
i(although)e(other)h(FITS)f(readers)g(are)h(not)g(required)e(to)i
(recognize)h(this)e(con)m(v)m(en)m(tion.)0 1506 y(The)h(Binary)g(T)-8
b(able)26 b(de\014nition)d(do)s(cumen)m(t)j(that)h(w)m(as)f(appro)m(v)m
(ed)g(b)m(y)g(the)g(IA)m(U)g(in)f(1994)j(con)m(tains)e(an)f(app)s
(endix)0 1619 y(describing)20 b(an)j(alternate)g(con)m(v)m(en)m(tion)h
(for)f(sp)s(ecifying)d(arra)m(ys)j(of)g(\014xed)f(or)h(v)-5
b(ariable)22 b(length)g(strings)f(in)h(a)h(binary)0 1732
y(table)34 b(c)m(haracter)h(column)e(\(with)g(the)i(form)e
('rA:SSTRw/nnn\)'.)50 b(This)32 b(app)s(endix)f(w)m(as)k(not)f
(o\016cially)f(v)m(oted)0 1844 y(on)d(b)m(y)h(the)f(IA)m(U)h(and)f
(hence)g(is)g(still)e(pro)m(visional.)39 b(FITSIO)29
b(do)s(es)h(not)h(curren)m(tly)e(supp)s(ort)g(this)g(prop)s(osal.)0
2147 y Fb(6.12.3)113 b(Keyw)m(ord)37 b(Units)g(Strings)0
2368 y Fi(One)g(de\014ciency)g(of)h(the)g(curren)m(t)g(FITS)f(Standard)
f(is)h(that)i(it)e(do)s(es)g(not)h(de\014ne)f(a)i(sp)s(eci\014c)d(con)m
(v)m(en)m(tion)j(for)0 2481 y(recording)29 b(the)h(ph)m(ysical)f(units)
g(of)h(a)g(k)m(eyw)m(ord)h(v)-5 b(alue.)40 b(The)30 b(TUNITn)f(k)m(eyw)
m(ord)h(can)g(b)s(e)g(used)f(to)i(sp)s(ecify)e(the)0
2594 y(ph)m(ysical)34 b(units)g(of)h(the)h(v)-5 b(alues)35
b(in)f(a)h(table)h(column,)f(but)g(there)g(is)g(no)g(analogous)h(con)m
(v)m(en)m(tion)g(for)f(k)m(eyw)m(ord)0 2707 y(v)-5 b(alues.)41
b(The)30 b(commen)m(t)h(\014eld)f(of)g(the)h(k)m(eyw)m(ord)g(is)f
(often)h(used)f(for)g(this)f(purp)s(ose,)h(but)f(the)i(units)e(are)i
(usually)0 2819 y(not)g(sp)s(eci\014ed)d(in)h(a)i(w)m(ell)e(de\014ned)h
(format)g(that)h(FITS)f(readers)g(can)h(easily)e(recognize)i(and)f
(extract.)0 2980 y(T)-8 b(o)28 b(solv)m(e)g(this)e(de\014ciency)-8
b(,)29 b(FITSIO)d(uses)h(a)h(lo)s(cal)f(con)m(v)m(en)m(tion)i(in)d
(whic)m(h)g(the)i(k)m(eyw)m(ord)g(units)e(are)i(enclosed)f(in)0
3093 y(square)20 b(brac)m(k)m(ets)j(as)e(the)f(\014rst)g(tok)m(en)i(in)
e(the)g(k)m(eyw)m(ord)i(commen)m(t)f(\014eld;)i(more)e(sp)s
(eci\014cally)-8 b(,)21 b(the)g(op)s(ening)e(square)0
3205 y(brac)m(k)m(et)28 b(immediately)d(follo)m(ws)g(the)i(slash)e('/')
i(commen)m(t)h(\014eld)d(delimiter)f(and)i(a)g(single)f(space)i(c)m
(haracter.)41 b(The)0 3318 y(follo)m(wing)29 b(examples)h(illustrate)e
(k)m(eyw)m(ords)j(that)g(use)f(this)f(con)m(v)m(en)m(tion:)0
3588 y Fe(EXPOSURE=)713 b(1800.0)47 b(/)g([s])g(elapsed)f(exposure)f
(time)0 3701 y(V_HELIO)h(=)763 b(16.23)47 b(/)g([km)g(s**\(-1\)])e
(heliocentric)g(velocity)0 3814 y(LAMBDA)94 b(=)763 b(5400.)47
b(/)g([angstrom])e(central)h(wavelength)0 3927 y(FLUX)190
b(=)47 b(4.9033487787637465E-30)42 b(/)47 b([J/cm**2/s])e(average)h
(flux)0 4196 y Fi(In)28 b(general,)g(the)h(units)d(named)i(in)f(the)i
(IA)m(U\(1988\))i(St)m(yle)d(Guide)f(are)i(recommended,)f(with)f(the)i
(main)e(excep-)0 4309 y(tion)j(that)h(the)f(preferred)g(unit)e(for)j
(angle)f(is)f('deg')j(for)e(degrees.)0 4469 y(The)24
b(FTPUNT)g(and)g(FTGUNT)h(subroutines)e(in)g(FITSIO)g(write)h(and)g
(read,)i(resp)s(ectiv)m(ely)-8 b(,)26 b(the)e(k)m(eyw)m(ord)h(unit)0
4582 y(strings)k(in)g(an)i(existing)e(k)m(eyw)m(ord.)0
4884 y Fb(6.12.4)113 b(HIERAR)m(CH)34 b(Con)m(v)m(en)m(tion)j(for)g
(Extended)h(Keyw)m(ord)f(Names)0 5106 y Fi(CFITSIO)k(supp)s(orts)g(the)
i(HIERAR)m(CH)g(k)m(eyw)m(ord)g(con)m(v)m(en)m(tion)h(whic)m(h)e(allo)m
(ws)g(k)m(eyw)m(ord)h(names)g(that)h(are)0 5218 y(longer)33
b(then)f(8)i(c)m(haracters)g(and)f(ma)m(y)h(con)m(tain)f(the)g(full)e
(range)i(of)h(prin)m(table)d(ASCI)s(I)g(text)j(c)m(haracters.)51
b(This)0 5331 y(con)m(v)m(en)m(tion)38 b(w)m(as)g(dev)m(elop)s(ed)e(at)
i(the)f(Europ)s(ean)f(Southern)g(Observ)-5 b(atory)37
b(\(ESO\))f(to)i(supp)s(ort)d(hierarc)m(hical)0 5444
y(FITS)30 b(k)m(eyw)m(ord)g(suc)m(h)h(as:)0 5714 y Fe(HIERARCH)46
b(ESO)g(INS)h(FOCU)g(POS)g(=)g(-0.00002500)e(/)j(Focus)e(position)p
eop
%%Page: 56 62
56 61 bop 0 299 a Fi(56)1277 b Fg(CHAPTER)29 b(6.)72
b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y
Fi(Basically)-8 b(,)52 b(this)46 b(con)m(v)m(en)m(tion)j(uses)e(the)h
(FITS)f(k)m(eyw)m(ord)h('HIERAR)m(CH')h(to)f(indicate)f(that)h(this)e
(con)m(v)m(en-)0 668 y(tion)e(is)f(b)s(eing)g(used,)k(then)d(the)g
(actual)h(k)m(eyw)m(ord)f(name)h(\()p Fe('ESO)i(INS)f(FOCU)h(POS')c
Fi(in)g(this)g(example\))h(b)s(e-)0 781 y(gins)39 b(in)f(column)g(10)j
(and)e(can)h(con)m(tain)f(an)m(y)h(prin)m(table)e(ASCI)s(I)g(text)j(c)m
(haracters,)i(including)37 b(spaces.)68 b(The)0 894 y(equals)43
b(sign)h(marks)f(the)h(end)g(of)g(the)g(k)m(eyw)m(ord)h(name)f(and)f
(is)h(follo)m(w)m(ed)f(b)m(y)h(the)g(usual)f(v)-5 b(alue)44
b(and)f(com-)0 1007 y(men)m(t)31 b(\014elds)e(just)h(as)h(in)e
(standard)h(FITS)g(k)m(eyw)m(ords.)41 b(F)-8 b(urther)30
b(details)g(of)h(this)e(con)m(v)m(en)m(tion)j(are)f(describ)s(ed)d(at)0
1120 y(h)m(ttp://arcdev.hq.eso.org/dicb/dicd/dic-1-1.4.h)m(tml)33
b(\(searc)m(h)f(for)e(HIERAR)m(CH\).)0 1280 y(This)42
b(con)m(v)m(en)m(tion)k(allo)m(ws)e(a)g(m)m(uc)m(h)h(broader)e(range)i
(of)f(k)m(eyw)m(ord)h(names)f(than)h(is)e(allo)m(w)m(ed)h(b)m(y)g(the)h
(FITS)0 1393 y(Standard.)40 b(Here)30 b(are)h(more)g(examples)f(of)g
(suc)m(h)g(k)m(eyw)m(ords:)0 1655 y Fe(HIERARCH)46 b(LongKeyword)e(=)k
(47.5)e(/)i(Keyword)e(has)h(>)g(8)g(characters,)e(and)i(mixed)f(case)0
1768 y(HIERARCH)g(XTE$TEMP)f(=)j(98.6)e(/)i(Keyword)d(contains)h(the)h
('$')g(character)0 1881 y(HIERARCH)f(Earth)g(is)h(a)h(star)e(=)i(F)f(/)
h(Keyword)d(contains)h(embedded)f(spaces)0 2143 y Fi(CFITSIO)40
b(will)f(transparen)m(tly)i(read)h(and)f(write)f(these)j(k)m(eyw)m
(ords,)i(so)d(application)e(programs)h(do)g(not)h(in)0
2256 y(general)32 b(need)g(to)h(kno)m(w)f(an)m(ything)g(ab)s(out)g(the)
g(sp)s(eci\014c)f(implemen)m(tation)g(details)g(of)i(the)f(HIERAR)m(CH)
g(con-)0 2369 y(v)m(en)m(tion.)49 b(In)32 b(particular,)h(application)e
(programs)h(do)h(not)h(need)e(to)i(sp)s(ecify)e(the)h(`HIERAR)m(CH')h
(part)f(of)g(the)0 2482 y(k)m(eyw)m(ord)g(name)f(when)g(reading)f(or)h
(writing)f(k)m(eyw)m(ords)h(\(although)g(it)g(ma)m(y)h(b)s(e)f
(included)d(if)j(desired\).)45 b(When)0 2595 y(writing)33
b(a)i(k)m(eyw)m(ord,)h(CFITSIO)d(\014rst)h(c)m(hec)m(ks)i(to)f(see)g
(if)f(the)h(k)m(eyw)m(ord)g(name)f(is)g(legal)g(as)h(a)g(standard)f
(FITS)0 2708 y(k)m(eyw)m(ord)k(\(no)g(more)f(than)h(8)g(c)m(haracters)h
(long)e(and)g(con)m(taining)g(only)f(letters,)k(digits,)e(or)g(a)g(min)
m(us)d(sign)i(or)0 2821 y(underscore\).)68 b(If)39 b(so)h(it)f(writes)g
(it)g(as)g(a)h(standard)f(FITS)g(k)m(eyw)m(ord,)k(otherwise)c(it)g
(uses)g(the)h(hierarc)m(h)e(con-)0 2934 y(v)m(en)m(tion)33
b(to)g(write)f(the)g(k)m(eyw)m(ord.)48 b(The)32 b(maxim)m(um)f(k)m(eyw)
m(ord)i(name)f(length)g(is)g(67)h(c)m(haracters,)i(whic)m(h)c(lea)m(v)m
(es)0 3047 y(only)c(1)i(space)g(for)f(the)h(v)-5 b(alue)28
b(\014eld.)38 b(A)29 b(more)f(practical)g(limit)e(is)i(ab)s(out)g(40)h
(c)m(haracters,)i(whic)m(h)c(lea)m(v)m(es)i(enough)0
3160 y(ro)s(om)f(for)h(most)f(k)m(eyw)m(ord)h(v)-5 b(alues.)40
b(CFITSIO)27 b(returns)g(an)h(error)h(if)e(there)i(is)e(not)i(enough)f
(ro)s(om)h(for)f(b)s(oth)g(the)0 3273 y(k)m(eyw)m(ord)k(name)f(and)f
(the)i(k)m(eyw)m(ord)f(v)-5 b(alue)31 b(on)g(the)h(80-c)m(haracter)h
(card,)f(except)g(for)f(string-v)-5 b(alued)30 b(k)m(eyw)m(ords)0
3385 y(whic)m(h)i(are)h(simply)d(truncated)j(so)g(that)h(the)f(closing)
f(quote)i(c)m(haracter)g(falls)d(in)h(column)g(80.)49
b(In)32 b(the)h(curren)m(t)0 3498 y(implemen)m(tation,)28
b(CFITSIO)f(preserv)m(es)i(the)g(case)h(of)f(the)g(letters)g(when)f
(writing)f(the)i(k)m(eyw)m(ord)g(name,)g(but)f(it)0 3611
y(is)c(case-insensitiv)m(e)g(when)g(reading)g(or)h(searc)m(hing)g(for)g
(a)g(k)m(eyw)m(ord.)40 b(The)24 b(curren)m(t)h(implemen)m(tation)e
(allo)m(ws)i(an)m(y)0 3724 y(ASCI)s(I)k(text)j(c)m(haracter)h(\(ASCI)s
(I)c(32)j(to)f(ASCI)s(I)f(126\))i(in)e(the)h(k)m(eyw)m(ord)g(name)g
(except)h(for)e(the)h('=')g(c)m(haracter.)0 3837 y(A)f(space)h(is)f
(also)g(required)f(on)h(either)g(side)f(of)i(the)f(equal)g(sign.)0
4174 y Fd(6.13)136 b(Optimizing)45 b(Co)t(de)g(for)h(Maxim)l(um)f(Pro)t
(cessing)g(Sp)t(eed)0 4425 y Fi(CFITSIO)22 b(has)h(b)s(een)f(carefully)
g(designed)g(to)i(obtain)f(the)g(highest)g(p)s(ossible)d(sp)s(eed)j
(when)f(reading)g(and)h(writing)0 4538 y(FITS)33 b(\014les.)50
b(In)33 b(order)h(to)g(ac)m(hiev)m(e)h(the)f(b)s(est)g(p)s(erformance,)
g(ho)m(w)m(ev)m(er,)i(application)d(programmers)g(m)m(ust)h(b)s(e)0
4650 y(careful)23 b(to)i(call)e(the)h(CFITSIO)f(routines)f
(appropriately)h(and)g(in)g(an)g(e\016cien)m(t)i(sequence;)i
(inappropriate)21 b(usage)0 4763 y(of)31 b(CFITSIO)d(routines)i(can)g
(greatly)h(slo)m(w)f(do)m(wn)g(the)h(execution)f(sp)s(eed)g(of)g(a)h
(program.)0 4924 y(The)f(maxim)m(um)g(p)s(ossible)e(I/O)j(sp)s(eed)f
(of)h(CFITSIO)e(dep)s(ends)g(of)i(course)g(on)f(the)h(t)m(yp)s(e)g(of)g
(computer)g(system)0 5036 y(that)g(it)e(is)g(running)e(on.)41
b(As)30 b(a)g(rough)g(guide,)f(the)h(curren)m(t)g(generation)g(of)g(w)m
(orkstations)g(can)h(ac)m(hiev)m(e)g(sp)s(eeds)0 5149
y(of)k(2)g({)g(10)g(MB/s)h(when)e(reading)g(or)g(writing)f(FITS)h
(images)h(and)f(similar,)f(or)i(sligh)m(tly)e(slo)m(w)m(er)i(sp)s(eeds)
e(with)0 5262 y(FITS)c(binary)g(tables.)40 b(Reading)30
b(of)g(FITS)g(\014les)f(can)i(o)s(ccur)f(at)h(ev)m(en)f(higher)f(rates)
i(\(30MB/s)i(or)d(more\))h(if)e(the)0 5375 y(FITS)d(\014le)g(is)f
(still)g(cac)m(hed)j(in)d(system)i(memory)f(follo)m(wing)g(a)h
(previous)e(read)h(or)h(write)f(op)s(eration)g(on)h(the)g(same)0
5488 y(\014le.)43 b(T)-8 b(o)32 b(more)g(accurately)g(predict)e(the)i
(b)s(est)f(p)s(erformance)g(that)h(is)e(p)s(ossible)f(on)j(an)m(y)g
(particular)d(system,)k(a)0 5601 y(diagnostic)f(program)h(called)f
(\\sp)s(eed.c")h(is)f(included)e(with)i(the)h(CFITSIO)e(distribution)e
(whic)m(h)j(can)h(b)s(e)f(run)0 5714 y(to)f(appro)m(ximately)f(measure)
g(the)h(maxim)m(um)e(p)s(ossible)f(sp)s(eed)h(of)i(writing)d(and)i
(reading)g(a)g(test)i(FITS)d(\014le.)p eop
%%Page: 57 63
57 62 bop 0 299 a Fg(6.13.)73 b(OPTIMIZING)29 b(CODE)h(F)m(OR)h
(MAXIMUM)g(PR)m(OCESSING)f(SPEED)971 b Fi(57)0 555 y(The)33
b(follo)m(wing)e(2)j(sections)f(pro)m(vide)g(some)g(bac)m(kground)g(on)
h(ho)m(w)f(CFITSIO)f(in)m(ternally)f(manages)j(the)f(data)0
668 y(I/O)g(and)g(describ)s(es)e(some)j(strategies)g(that)g(ma)m(y)g(b)
s(e)e(used)h(to)h(optimize)e(the)i(pro)s(cessing)e(sp)s(eed)g(of)h
(soft)m(w)m(are)0 781 y(that)e(uses)f(CFITSIO.)0 1080
y Fb(6.13.1)113 b(Bac)m(kground)38 b(Information:)48
b(Ho)m(w)37 b(CFITSIO)h(Manages)h(Data)f(I/O)0 1300 y
Fi(Man)m(y)22 b(CFITSIO)e(op)s(erations)h(in)m(v)m(olv)m(e)h
(transferring)e(only)h(a)h(small)e(n)m(um)m(b)s(er)h(of)h(b)m(ytes)g
(to)g(or)g(from)f(the)h(FITS)f(\014le)0 1413 y(\(e.g,)31
b(reading)d(a)h(k)m(eyw)m(ord,)h(or)f(writing)e(a)i(ro)m(w)g(in)e(a)i
(table\);)h(it)f(w)m(ould)e(b)s(e)h(v)m(ery)i(ine\016cien)m(t)e(to)h
(ph)m(ysically)e(read)0 1526 y(or)32 b(write)g(suc)m(h)g(small)e(blo)s
(c)m(ks)i(of)g(data)h(directly)e(in)g(the)h(FITS)g(\014le)f(on)h(disk,)
g(therefore)g(CFITSIO)f(main)m(tains)0 1639 y(a)38 b(set)g(of)g(in)m
(ternal)f(Input{Output)e(\(IO\))j(bu\013ers)f(in)f(RAM)i(memory)g(that)
g(eac)m(h)h(con)m(tain)f(one)g(FITS)f(blo)s(c)m(k)0 1752
y(\(2880)27 b(b)m(ytes\))f(of)f(data.)40 b(Whenev)m(er)25
b(CFITSIO)f(needs)g(to)i(access)g(data)g(in)e(the)h(FITS)f(\014le,)i
(it)e(\014rst)g(transfers)h(the)0 1865 y(FITS)30 b(blo)s(c)m(k)g(con)m
(taining)g(those)h(b)m(ytes)g(in)m(to)f(one)h(of)f(the)h(IO)f
(bu\013ers)f(in)g(memory)-8 b(.)42 b(The)30 b(next)g(time)g(CFITSIO)0
1977 y(needs)36 b(to)g(access)i(b)m(ytes)e(in)f(the)h(same)h(blo)s(c)m
(k)e(it)h(can)g(then)g(go)h(to)f(the)h(fast)f(IO)f(bu\013er)g(rather)h
(than)g(using)f(a)0 2090 y(m)m(uc)m(h)d(slo)m(w)m(er)h(system)f(disk)f
(access)i(routine.)45 b(The)32 b(n)m(um)m(b)s(er)f(of)h(a)m(v)-5
b(ailable)32 b(IO)g(bu\013ers)f(is)g(determined)g(b)m(y)h(the)0
2203 y(NIOBUF)f(parameter)g(\(in)e(\014tsio2.h\))h(and)g(is)g(curren)m
(tly)f(set)i(to)g(40.)0 2363 y(Whenev)m(er)24 b(CFITSIO)f(reads)g(or)h
(writes)f(data)h(it)g(\014rst)f(c)m(hec)m(ks)i(to)g(see)f(if)f(that)h
(blo)s(c)m(k)g(of)g(the)g(FITS)f(\014le)f(is)h(already)0
2476 y(loaded)32 b(in)m(to)g(one)g(of)g(the)g(IO)g(bu\013ers.)44
b(If)32 b(not,)h(and)e(if)g(there)h(is)f(an)h(empt)m(y)h(IO)e(bu\013er)
g(a)m(v)-5 b(ailable,)32 b(then)g(it)g(will)0 2589 y(load)g(that)i(blo)
s(c)m(k)e(in)m(to)g(the)h(IO)g(bu\013er)e(\(when)h(reading)g(a)h(FITS)f
(\014le\))g(or)h(will)d(initialize)g(a)j(new)f(blo)s(c)m(k)h(\(when)0
2702 y(writing)i(to)j(a)g(FITS)f(\014le\).)61 b(If)37
b(all)f(the)i(IO)e(bu\013ers)h(are)g(already)g(full,)g(it)g(m)m(ust)h
(decide)e(whic)m(h)g(one)i(to)g(reuse)0 2815 y(\(generally)32
b(the)h(one)g(that)g(has)f(b)s(een)g(accessed)i(least)e(recen)m(tly\),)
i(and)e(\015ush)f(the)i(con)m(ten)m(ts)h(bac)m(k)g(to)f(disk)e(if)g(it)
0 2928 y(has)f(b)s(een)g(mo)s(di\014ed)e(b)s(efore)i(loading)f(the)i
(new)f(blo)s(c)m(k.)0 3088 y(The)g(one)g(ma)5 b(jor)30
b(exception)h(to)g(the)f(ab)s(o)m(v)m(e)h(pro)s(cess)f(o)s(ccurs)g
(whenev)m(er)g(a)g(large)h(con)m(tiguous)f(set)h(of)f(b)m(ytes)h(are)0
3201 y(accessed,)37 b(as)d(migh)m(t)h(o)s(ccur)f(when)f(reading)h(or)g
(writing)e(a)j(FITS)f(image.)53 b(In)34 b(this)f(case)i(CFITSIO)e(b)m
(ypasses)0 3314 y(the)i(in)m(ternal)f(IO)h(bu\013ers)f(and)g(simply)f
(reads)i(or)g(writes)g(the)g(desired)f(b)m(ytes)h(directly)f(in)g(the)h
(disk)f(\014le)g(with)0 3427 y(a)j(single)e(call)g(to)i(a)g(lo)m(w-lev)
m(el)f(\014le)f(read)h(or)h(write)e(routine.)57 b(The)36
b(minim)m(um)e(threshold)g(for)i(the)h(n)m(um)m(b)s(er)e(of)0
3540 y(b)m(ytes)40 b(to)g(read)f(or)g(write)f(this)h(w)m(a)m(y)h(is)e
(set)i(b)m(y)f(the)g(MINDIRECT)g(parameter)h(and)e(is)h(curren)m(tly)f
(set)i(to)g(3)0 3653 y(FITS)28 b(blo)s(c)m(ks)f(=)h(8640)i(b)m(ytes.)41
b(This)27 b(is)g(the)h(most)h(e\016cien)m(t)g(w)m(a)m(y)g(to)g(read)g
(or)f(write)g(large)g(c)m(h)m(unks)g(of)g(data)i(and)0
3766 y(can)37 b(ac)m(hiev)m(e)h(IO)e(transfer)g(rates)h(of)g(5)g({)g
(10MB/s)i(or)d(greater.)61 b(Note)38 b(that)f(this)f(fast)h(direct)f
(IO)g(pro)s(cess)g(is)0 3878 y(not)29 b(applicable)d(when)h(accessing)i
(columns)f(of)g(data)h(in)e(a)i(FITS)f(table)g(b)s(ecause)h(the)f(b)m
(ytes)h(are)g(generally)f(not)0 3991 y(con)m(tiguous)h(since)f(they)h
(are)h(in)m(terlea)m(v)m(ed)f(b)m(y)g(the)g(other)g(columns)f(of)h
(data)g(in)f(the)h(table.)40 b(This)27 b(explains)g(wh)m(y)0
4104 y(the)k(sp)s(eed)e(for)h(accessing)h(FITS)f(tables)g(is)f
(generally)h(slo)m(w)m(er)g(than)h(accessing)f(FITS)g(images.)0
4264 y(Giv)m(en)h(this)g(bac)m(kground)g(information,)f(the)i(general)f
(strategy)i(for)e(e\016cien)m(tly)g(accessing)h(FITS)f(\014les)f
(should)0 4377 y(no)m(w)36 b(b)s(e)g(apparen)m(t:)52
b(when)35 b(dealing)g(with)g(FITS)h(images,)i(read)e(or)g(write)f
(large)i(c)m(h)m(unks)f(of)g(data)h(at)g(a)f(time)0 4490
y(so)30 b(that)h(the)f(direct)g(IO)f(mec)m(hanism)g(will)f(b)s(e)h(in)m
(v)m(ok)m(ed;)i(when)e(accessing)i(FITS)e(headers)h(or)g(FITS)f
(tables,)h(on)0 4603 y(the)35 b(other)g(hand,)g(once)g(a)g(particular)f
(FITS)g(blo)s(c)m(k)g(has)g(b)s(een)g(loading)g(in)m(to)h(one)g(of)g
(the)f(IO)h(bu\013ers,)g(try)f(to)0 4716 y(access)39
b(all)d(the)h(needed)g(information)f(in)g(that)i(blo)s(c)m(k)f(b)s
(efore)g(it)g(gets)h(\015ushed)d(out)j(of)g(the)f(IO)g(bu\013er.)60
b(It)38 b(is)0 4829 y(imp)s(ortan)m(t)30 b(to)i(a)m(v)m(oid)f(the)g
(situation)f(where)h(the)g(same)g(FITS)f(blo)s(c)m(k)h(is)f(b)s(eing)f
(read)i(then)g(\015ushed)e(from)h(a)h(IO)0 4942 y(bu\013er)e(m)m
(ultiple)f(times.)0 5102 y(The)i(follo)m(wing)f(section)h(giv)m(es)h
(more)f(sp)s(eci\014c)g(suggestions)g(for)g(optimizing)f(the)h(use)g
(of)h(CFITSIO.)0 5262 y(1.)54 b(When)34 b(dealing)f(with)h(a)h(FITS)e
(primary)g(arra)m(y)i(or)g(IMA)m(GE)g(extension,)h(it)e(is)f(more)i
(e\016cien)m(t)g(to)g(read)g(or)0 5375 y(write)30 b(large)g(c)m(h)m
(unks)g(of)g(the)h(image)f(at)i(a)e(time)g(\(at)i(least)e(3)h(FITS)f
(blo)s(c)m(ks)f(=)h(8640)i(b)m(ytes\))f(so)g(that)g(the)f(direct)0
5488 y(IO)j(mec)m(hanism)g(will)d(b)s(e)j(used)g(as)g(describ)s(ed)f
(in)g(the)h(previous)f(section.)50 b(Smaller)32 b(c)m(h)m(unks)h(of)g
(data)h(are)g(read)0 5601 y(or)d(written)f(via)h(the)g(IO)f(bu\013ers,)
g(whic)m(h)g(is)g(somewhat)h(less)f(e\016cien)m(t)i(b)s(ecause)f(of)g
(the)g(extra)h(cop)m(y)f(op)s(eration)0 5714 y(and)26
b(additional)e(b)s(o)s(okk)m(eeping)i(steps)h(that)g(are)g(required.)38
b(In)26 b(principle)d(it)j(is)g(more)g(e\016cien)m(t)h(to)h(read)e(or)h
(write)p eop
%%Page: 58 64
58 63 bop 0 299 a Fi(58)1277 b Fg(CHAPTER)29 b(6.)72
b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y
Fi(as)e(big)f(an)h(arra)m(y)h(of)f(image)g(pixels)e(at)j(one)f(time)f
(as)i(p)s(ossible,)d(ho)m(w)m(ev)m(er,)j(if)e(the)i(arra)m(y)f(b)s
(ecomes)g(so)g(large)g(that)0 668 y(the)j(op)s(erating)f(system)g
(cannot)h(store)g(it)f(all)g(in)f(RAM,)i(then)f(the)h(p)s(erformance)f
(ma)m(y)h(b)s(e)f(degraded)g(b)s(ecause)0 781 y(of)g(the)f(increased)g
(sw)m(apping)f(of)h(virtual)f(memory)h(to)h(disk.)0 941
y(2.)51 b(When)33 b(dealing)g(with)f(FITS)h(tables,)i(the)f(most)g(imp)
s(ortan)m(t)f(e\016ciency)g(factor)i(in)d(the)i(soft)m(w)m(are)h
(design)e(is)0 1054 y(to)k(read)f(or)g(write)f(the)h(data)h(in)e(the)h
(FITS)g(\014le)f(in)g(a)h(single)f(pass)h(through)f(the)h(\014le.)57
b(An)36 b(example)g(of)g(p)s(o)s(or)0 1167 y(program)g(design)g(w)m
(ould)f(b)s(e)h(to)h(read)g(a)f(large,)j(3-column)d(table)g(b)m(y)h
(sequen)m(tially)e(reading)h(the)g(en)m(tire)h(\014rst)0
1280 y(column,)24 b(then)g(going)g(bac)m(k)g(to)h(read)e(the)h(2nd)g
(column,)g(and)f(\014nally)f(the)i(3rd)f(column;)i(this)e(ob)m(viously)
f(requires)0 1393 y(3)j(passes)f(through)f(the)i(\014le)e(whic)m(h)g
(could)h(triple)e(the)j(execution)f(time)g(of)h(an)f(I/O)g(limited)e
(program.)38 b(F)-8 b(or)25 b(small)0 1506 y(tables)30
b(this)f(is)h(not)g(imp)s(ortan)m(t,)g(but)g(when)f(reading)g(m)m
(ulti-megab)m(yte)i(sized)f(tables)g(these)h(ine\016ciencies)e(can)0
1619 y(b)s(ecome)g(signi\014can)m(t.)39 b(The)28 b(more)h(e\016cien)m
(t)g(pro)s(cedure)e(in)h(this)f(case)j(is)d(to)j(read)e(or)h(write)f
(only)f(as)i(man)m(y)g(ro)m(ws)0 1732 y(of)g(the)g(table)g(as)g(will)e
(\014t)h(in)m(to)h(the)h(a)m(v)-5 b(ailable)28 b(in)m(ternal)g(I/O)h
(bu\013ers,)f(then)h(access)h(all)e(the)h(necessary)g(columns)0
1844 y(of)i(data)h(within)c(that)k(range)f(of)g(ro)m(ws.)43
b(Then)29 b(after)j(the)f(program)g(is)f(completely)g(\014nished)f
(with)g(the)j(data)f(in)0 1957 y(those)i(ro)m(ws)e(it)h(can)g(mo)m(v)m
(e)i(on)e(to)g(the)h(next)f(range)g(of)g(ro)m(ws)g(that)h(will)c(\014t)
j(in)f(the)h(bu\013ers,)f(con)m(tin)m(uing)g(in)g(this)0
2070 y(w)m(a)m(y)d(un)m(til)d(the)h(en)m(tire)h(\014le)f(has)g(b)s(een)
g(pro)s(cessed.)39 b(By)27 b(using)e(this)h(pro)s(cedure)f(of)i
(accessing)g(all)f(the)g(columns)g(of)0 2183 y(a)k(table)f(in)f
(parallel)f(rather)i(than)g(sequen)m(tially)-8 b(,)29
b(eac)m(h)h(blo)s(c)m(k)f(of)h(the)f(FITS)g(\014le)f(will)e(only)j(b)s
(e)f(read)i(or)f(written)0 2296 y(once.)0 2456 y(The)g(optimal)f(n)m
(um)m(b)s(er)g(of)i(ro)m(ws)f(to)i(read)e(or)g(write)g(at)h(one)g(time)
f(in)f(a)i(giv)m(en)f(table)h(dep)s(ends)d(on)j(the)f(width)f(of)0
2569 y(the)k(table)g(ro)m(w,)h(on)f(the)g(n)m(um)m(b)s(er)f(of)h(I/O)g
(bu\013ers)f(that)i(ha)m(v)m(e)g(b)s(een)e(allo)s(cated)h(in)f(FITSIO,)
g(and)h(also)g(on)g(the)0 2682 y(n)m(um)m(b)s(er)27 b(of)i(other)f
(FITS)g(\014les)f(that)i(are)g(op)s(en)f(at)h(the)g(same)g(time)f
(\(since)g(one)h(I/O)f(bu\013er)f(is)h(alw)m(a)m(ys)h(reserv)m(ed)0
2795 y(for)34 b(eac)m(h)h(op)s(en)f(FITS)f(\014le\).)52
b(F)-8 b(ortunately)g(,)36 b(a)f(FITSIO)e(routine)g(is)h(a)m(v)-5
b(ailable)33 b(that)i(will)c(return)j(the)g(optimal)0
2908 y(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(for)g(a)g(giv)m(en)f(table:)48
b(call)33 b(ftgrsz\(unit,)h(nro)m(ws,)g(status\).)52
b(It)34 b(is)f(not)h(critical)e(to)j(use)e(exactly)0
3021 y(the)f(v)-5 b(alue)31 b(of)g(nro)m(ws)g(returned)g(b)m(y)g(this)f
(routine,)h(as)h(long)f(as)h(one)g(do)s(es)f(not)h(exceed)g(it.)44
b(Using)31 b(a)h(v)m(ery)f(small)0 3134 y(v)-5 b(alue)31
b(ho)m(w)m(ev)m(er)j(can)e(also)g(lead)f(to)i(p)s(o)s(or)e(p)s
(erformance)g(b)s(ecause)h(of)g(the)g(o)m(v)m(erhead)h(from)f(the)g
(larger)f(n)m(um)m(b)s(er)0 3247 y(of)g(subroutine)d(calls.)0
3407 y(The)36 b(optimal)f(n)m(um)m(b)s(er)h(of)g(ro)m(ws)h(returned)e
(b)m(y)h(ftgrsz)h(is)f(v)-5 b(alid)35 b(only)g(as)i(long)f(as)h(the)f
(application)f(program)0 3520 y(is)e(only)h(reading)g(or)g(writing)e
(data)j(in)f(the)g(sp)s(eci\014ed)f(table.)53 b(An)m(y)34
b(other)h(calls)e(to)i(access)h(data)f(in)e(the)i(table)0
3633 y(header)e(or)h(in)e(an)m(y)i(other)g(FITS)f(\014le)g(w)m(ould)f
(cause)i(additional)e(blo)s(c)m(ks)h(of)h(data)g(to)g(b)s(e)f(loaded)h
(in)m(to)f(the)h(I/O)0 3745 y(bu\013ers)i(displacing)f(data)j(from)f
(the)g(original)f(table,)j(and)e(should)e(b)s(e)i(a)m(v)m(oided)g
(during)e(the)j(critical)e(p)s(erio)s(d)0 3858 y(while)28
b(the)j(table)f(is)g(b)s(eing)f(read)h(or)g(written.)0
4019 y(Occasionally)f(it)g(is)f(necessary)i(to)h(sim)m(ultaneously)c
(access)k(more)f(than)f(one)h(FITS)f(table,)h(for)g(example)f(when)0
4131 y(transferring)41 b(v)-5 b(alues)42 b(from)g(an)h(input)d(table)j
(to)g(an)g(output)f(table.)78 b(In)42 b(cases)h(lik)m(e)f(this,)j(one)e
(should)e(call)0 4244 y(ftgrsz)28 b(to)h(get)g(the)f(optimal)f(n)m(um)m
(b)s(er)g(of)h(ro)m(ws)g(for)f(eac)m(h)j(table)d(separately)-8
b(,)30 b(than)d(reduce)h(the)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)0
4357 y(prop)s(ortionally)-8 b(.)42 b(F)-8 b(or)33 b(example,)f(if)f
(the)h(optimal)f(n)m(um)m(b)s(er)f(of)i(ro)m(ws)g(in)e(the)i(input)e
(table)i(is)f(3600)i(and)e(is)g(1400)0 4470 y(in)h(the)h(output)f
(table,)i(then)f(these)g(v)-5 b(alues)33 b(should)e(b)s(e)h(cut)h(in)f
(half)g(to)i(1800)g(and)f(700,)i(resp)s(ectiv)m(ely)-8
b(,)34 b(if)e(b)s(oth)0 4583 y(tables)e(are)h(going)f(to)h(b)s(e)f
(accessed)i(at)f(the)f(same)h(time.)0 4743 y(3.)39 b(Use)24
b(binary)e(table)h(extensions)g(rather)g(than)h(ASCI)s(I)e(table)h
(extensions)g(for)g(b)s(etter)h(e\016ciency)g(when)e(dealing)0
4856 y(with)36 b(tabular)h(data.)62 b(The)37 b(I/O)g(to)h(ASCI)s(I)e
(tables)h(is)g(slo)m(w)m(er)g(b)s(ecause)h(of)f(the)h(o)m(v)m(erhead)h
(in)d(formatting)h(or)0 4969 y(parsing)29 b(the)i(ASCI)s(I)f(data)h
(\014elds,)f(and)g(b)s(ecause)h(ASCI)s(I)e(tables)h(are)h(ab)s(out)g(t)
m(wice)g(as)g(large)g(as)g(binary)e(tables)0 5082 y(with)g(the)i(same)f
(information)f(con)m(ten)m(t.)0 5242 y(4.)64 b(Design)38
b(soft)m(w)m(are)h(so)g(that)f(it)g(reads)g(the)g(FITS)f(header)h(k)m
(eyw)m(ords)g(in)f(the)h(same)h(order)e(in)g(whic)m(h)g(they)0
5355 y(o)s(ccur)c(in)f(the)h(\014le.)48 b(When)32 b(reading)h(k)m(eyw)m
(ords,)h(FITSIO)e(searc)m(hes)i(forw)m(ard)e(starting)h(from)f(the)i(p)
s(osition)d(of)0 5468 y(the)e(last)h(k)m(eyw)m(ord)f(that)h(w)m(as)g
(read.)40 b(If)29 b(it)f(reac)m(hes)j(the)e(end)g(of)g(the)h(header)f
(without)f(\014nding)f(the)i(k)m(eyw)m(ord,)h(it)0 5581
y(then)j(go)s(es)h(bac)m(k)g(to)h(the)e(start)h(of)g(the)g(header)f
(and)g(con)m(tin)m(ues)g(the)h(searc)m(h)g(do)m(wn)f(to)h(the)g(p)s
(osition)d(where)i(it)0 5694 y(started.)41 b(In)30 b(practice,)h(as)f
(long)g(as)h(the)f(en)m(tire)h(FITS)e(header)h(can)h(\014t)f(at)h(one)g
(time)f(in)f(the)h(a)m(v)-5 b(ailable)30 b(in)m(ternal)p
eop
%%Page: 59 65
59 64 bop 0 299 a Fg(6.13.)73 b(OPTIMIZING)29 b(CODE)h(F)m(OR)h
(MAXIMUM)g(PR)m(OCESSING)f(SPEED)971 b Fi(59)0 555 y(I/O)33
b(bu\013ers,)h(then)f(the)h(header)f(k)m(eyw)m(ord)h(access)h(will)30
b(b)s(e)j(v)m(ery)h(fast)g(and)f(it)g(mak)m(es)h(little)e(di\013erence)
h(whic)m(h)0 668 y(order)d(they)g(are)h(accessed.)0 828
y(5.)40 b(Av)m(oid)28 b(the)f(use)h(of)f(scaling)g(\(b)m(y)h(using)e
(the)i(BSCALE)e(and)h(BZER)m(O)h(or)f(TSCAL)g(and)g(TZER)m(O)f(k)m(eyw)
m(ords\))0 941 y(in)34 b(FITS)g(\014les)f(since)i(the)g(scaling)f(op)s
(erations)g(add)g(to)i(the)f(pro)s(cessing)e(time)i(needed)f(to)i(read)
f(or)g(write)f(the)0 1054 y(data.)60 b(In)36 b(some)i(cases)f(it)f(ma)m
(y)i(b)s(e)e(more)h(e\016cien)m(t)g(to)g(temp)s(orarily)e(turn)h(o\013)
h(the)g(scaling)f(\(using)f(ftpscl)h(or)0 1167 y(fttscl\))31
b(and)e(then)h(read)h(or)f(write)g(the)g(ra)m(w)h(unscaled)e(v)-5
b(alues)30 b(in)f(the)h(FITS)g(\014le.)0 1327 y(6.)40
b(Av)m(oid)26 b(using)g(the)h('implicit)d(datat)m(yp)s(e)j(con)m(v)m
(ersion')g(capabilit)m(y)f(in)f(FITSIO.)h(F)-8 b(or)28
b(instance,)f(when)f(reading)0 1440 y(a)f(FITS)e(image)i(with)e(BITPIX)
h(=)g(-32)i(\(32-bit)f(\015oating)f(p)s(oin)m(t)f(pixels\),)i(read)f
(the)h(data)g(in)m(to)f(a)h(single)e(precision)0 1553
y(\015oating)f(p)s(oin)m(t)e(data)j(arra)m(y)f(in)f(the)h(program.)37
b(F)-8 b(orcing)22 b(FITSIO)f(to)h(con)m(v)m(ert)i(the)e(data)g(to)h(a)
f(di\013eren)m(t)f(datat)m(yp)s(e)0 1666 y(can)31 b(signi\014can)m(tly)
d(slo)m(w)i(the)h(program.)0 1826 y(7.)57 b(Where)36
b(feasible,)g(design)f(FITS)g(binary)f(tables)h(using)f(v)m(ector)k
(column)c(elemen)m(ts)i(so)g(that)g(the)g(data)h(are)0
1939 y(written)29 b(as)h(a)g(con)m(tiguous)g(set)g(of)g(b)m(ytes,)g
(rather)g(than)f(as)h(single)e(elemen)m(ts)i(in)f(m)m(ultiple)e(ro)m
(ws.)41 b(F)-8 b(or)30 b(example,)0 2052 y(it)35 b(is)g(faster)h(to)g
(access)h(the)f(data)h(in)d(a)i(table)g(that)g(con)m(tains)g(a)g
(single)e(ro)m(w)i(and)f(2)h(columns)e(with)h(TF)m(ORM)0
2165 y(k)m(eyw)m(ords)e(equal)g(to)h('10000E')h(and)e('10000J',)j(than)
d(it)f(is)g(to)i(access)g(the)g(same)f(amoun)m(t)h(of)f(data)h(in)e(a)h
(table)0 2278 y(with)39 b(10000)k(ro)m(ws)d(whic)m(h)g(has)g(columns)f
(with)g(the)i(TF)m(ORM)g(k)m(eyw)m(ords)g(equal)f(to)h('1E')h(and)e
('1J'.)h(In)f(the)0 2391 y(former)27 b(case)i(the)f(10000)i(\015oating)
e(p)s(oin)m(t)f(v)-5 b(alues)27 b(in)g(the)h(\014rst)f(column)g(are)h
(all)f(written)g(in)f(a)i(con)m(tiguous)g(blo)s(c)m(k)0
2503 y(of)e(the)f(\014le)g(whic)m(h)f(can)i(b)s(e)f(read)g(or)g
(written)g(quic)m(kly)-8 b(,)26 b(whereas)f(in)f(the)i(second)f(case)i
(eac)m(h)g(\015oating)e(p)s(oin)m(t)f(v)-5 b(alue)0 2616
y(in)33 b(the)h(\014rst)f(column)f(is)h(in)m(terlea)m(v)m(ed)i(with)d
(the)i(in)m(teger)h(v)-5 b(alue)33 b(in)g(the)h(second)g(column)e(of)i
(the)g(same)h(ro)m(w)f(so)0 2729 y(CFITSIO)29 b(has)h(to)h(explicitly)d
(mo)m(v)m(e)k(to)f(the)g(p)s(osition)d(of)j(eac)m(h)g(elemen)m(t)g(to)g
(b)s(e)f(read)g(or)g(written.)0 2889 y(8.)52 b(Av)m(oid)34
b(the)h(use)e(of)i(v)-5 b(ariable)32 b(length)i(v)m(ector)i(columns)c
(in)h(binary)g(tables,)i(since)e(an)m(y)i(reading)e(or)h(writing)0
3002 y(of)f(these)g(data)g(requires)e(that)i(CFITSIO)f(\014rst)f(lo)s
(ok)i(up)e(or)i(compute)g(the)f(starting)h(address)f(of)g(eac)m(h)i(ro)
m(w)f(of)0 3115 y(data)e(in)e(the)i(heap.)0 3275 y(9.)40
b(When)26 b(cop)m(ying)g(data)i(from)e(one)g(FITS)g(table)g(to)h
(another,)h(it)e(is)g(faster)g(to)i(transfer)e(the)g(ra)m(w)h(b)m(ytes)
g(instead)0 3388 y(of)f(reading)f(then)h(writing)e(eac)m(h)j(column)d
(of)j(the)f(table.)39 b(The)25 b(FITSIO)g(subroutines)f(FTGTBS)h(and)h
(FTPTBS)0 3501 y(\(for)i(ASCI)s(I)f(tables\),)i(and)e(FTGTBB)i(and)e
(FTPTBB)i(\(for)f(binary)e(tables\))i(will)e(p)s(erform)g(lo)m(w-lev)m
(el)i(reads)g(or)0 3614 y(writes)33 b(of)i(an)m(y)f(con)m(tiguous)h
(range)g(of)f(b)m(ytes)h(in)e(a)i(table)f(extension.)52
b(These)34 b(routines)f(can)i(b)s(e)e(used)h(to)h(read)0
3727 y(or)29 b(write)f(a)h(whole)f(ro)m(w)g(\(or)i(m)m(ultiple)c(ro)m
(ws\))j(of)g(a)g(table)g(with)e(a)i(single)e(subroutine)g(call.)39
b(These)29 b(routines)f(are)0 3840 y(fast)38 b(b)s(ecause)f(they)h(b)m
(ypass)f(all)f(the)i(usual)e(data)i(scaling,)h(error)e(c)m(hec)m(king)h
(and)f(mac)m(hine)g(dep)s(enden)m(t)f(data)0 3953 y(con)m(v)m(ersion)k
(that)h(is)d(normally)h(done)g(b)m(y)h(FITSIO,)f(and)g(they)h(allo)m(w)
f(the)h(program)g(to)h(write)e(the)h(data)g(to)0 4066
y(the)34 b(output)g(\014le)f(in)g(exactly)i(the)f(same)h(b)m(yte)g
(order.)51 b(F)-8 b(or)35 b(these)g(same)f(reasons,)i(use)e(of)g(these)
h(routines)e(can)0 4179 y(b)s(e)g(somewhat)h(risky)e(b)s(ecause)h(no)g
(v)-5 b(alidation)32 b(or)i(mac)m(hine)f(dep)s(enden)m(t)f(con)m(v)m
(ersion)i(is)e(p)s(erformed)g(b)m(y)h(these)0 4292 y(routines.)39
b(In)27 b(general)g(these)i(routines)d(are)i(only)f(recommended)g(for)h
(optimizing)e(critical)g(pieces)i(of)g(co)s(de)g(and)0
4405 y(should)d(only)i(b)s(e)g(used)f(b)m(y)i(programmers)e(who)h
(thoroughly)g(understand)e(the)j(in)m(ternal)e(b)m(yte)i(structure)f
(of)h(the)0 4517 y(FITS)i(tables)g(they)g(are)h(reading)f(or)g
(writing.)0 4678 y(10.)41 b(Another)30 b(strategy)g(for)g(impro)m(ving)
d(the)j(sp)s(eed)e(of)i(writing)e(a)h(FITS)g(table,)h(similar)d(to)j
(the)f(previous)f(one,)0 4791 y(is)j(to)h(directly)f(construct)h(the)f
(en)m(tire)h(b)m(yte)g(stream)g(for)g(a)g(whole)f(table)g(ro)m(w)h
(\(or)g(m)m(ultiple)e(ro)m(ws\))i(within)d(the)0 4903
y(application)j(program)i(and)g(then)f(write)h(it)f(to)i(the)f(FITS)f
(\014le)h(with)e(ftptbb.)51 b(This)32 b(a)m(v)m(oids)j(all)e(the)h(o)m
(v)m(erhead)0 5016 y(normally)e(presen)m(t)i(in)e(the)i(column-orien)m
(ted)f(CFITSIO)f(write)h(routines.)50 b(This)32 b(tec)m(hnique)h
(should)f(only)h(b)s(e)0 5129 y(used)26 b(for)h(critical)f
(applications,)g(b)s(ecause)g(it)h(mak)m(es)h(the)f(co)s(de)g(more)g
(di\016cult)e(to)i(understand)e(and)i(main)m(tain,)0
5242 y(and)d(it)g(mak)m(es)i(the)f(co)s(de)g(more)f(system)h(dep)s
(enden)m(t)f(\(e.g.,)k(do)c(the)h(b)m(ytes)g(need)g(to)g(b)s(e)f(sw)m
(app)s(ed)g(b)s(efore)g(writing)0 5355 y(to)31 b(the)g(FITS)e
(\014le?\).)0 5515 y(11.)53 b(Finally)-8 b(,)34 b(external)g(factors)i
(suc)m(h)e(as)g(the)h(t)m(yp)s(e)f(of)h(magnetic)f(disk)f(con)m
(troller)h(\(SCSI)f(or)i(IDE\),)g(the)f(size)0 5628 y(of)h(the)g(disk)f
(cac)m(he,)k(the)d(a)m(v)m(erage)i(seek)f(sp)s(eed)e(of)h(the)g(disk,)g
(the)g(amoun)m(t)h(of)f(disk)e(fragmen)m(tation,)k(and)e(the)p
eop
%%Page: 60 66
60 65 bop 0 299 a Fi(60)1277 b Fg(CHAPTER)29 b(6.)72
b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0 555 y
Fi(amoun)m(t)e(of)g(RAM)f(a)m(v)-5 b(ailable)28 b(on)h(the)f(system)h
(can)g(all)e(ha)m(v)m(e)j(a)f(signi\014can)m(t)e(impact)i(on)f(o)m(v)m
(erall)h(I/O)f(e\016ciency)-8 b(.)0 668 y(F)g(or)36 b(critical)e
(applications,)g(a)i(system)f(administrator)e(should)g(review)h(the)i
(prop)s(osed)d(system)j(hardw)m(are)e(to)0 781 y(iden)m(tify)29
b(an)m(y)i(p)s(oten)m(tial)e(I/O)i(b)s(ottlenec)m(ks.)p
eop
%%Page: 61 67
61 66 bop 0 1225 a Ff(Chapter)65 b(7)0 1687 y Fl(The)77
b(CFITSIO)f(Iterator)i(F)-19 b(unction)0 2180 y Fi(The)41
b(\014ts)p 325 2180 28 4 v 33 w(iterate)p 615 2180 V
33 w(data)i(function)d(in)h(CFITSIO)f(pro)m(vides)h(a)h(unique)d(metho)
s(d)j(of)g(executing)g(an)f(arbitrary)0 2293 y(user-supplied)33
b(`w)m(ork')k(function)e(that)i(op)s(erates)g(on)g(ro)m(ws)f(of)h(data)
g(in)e(FITS)h(tables)g(or)g(on)h(pixels)d(in)i(FITS)0
2406 y(images.)i(Rather)24 b(than)e(explicitly)f(reading)h(and)h
(writing)e(the)i(FITS)g(images)g(or)g(columns)f(of)h(data,)i(one)f
(instead)0 2518 y(calls)34 b(the)i(CFITSIO)d(iterator)j(routine,)g
(passing)e(to)i(it)f(the)g(name)g(of)h(the)f(user's)g(w)m(ork)g
(function)f(that)i(is)e(to)0 2631 y(b)s(e)c(executed)h(along)f(with)f
(a)i(list)e(of)h(all)f(the)i(table)f(columns)f(or)h(image)g(arra)m(ys)h
(that)g(are)f(to)h(b)s(e)f(passed)g(to)h(the)0 2744 y(w)m(ork)37
b(function.)60 b(The)37 b(CFITSIO)e(iterator)j(function)e(then)h(do)s
(es)g(all)f(the)h(w)m(ork)g(of)h(allo)s(cating)e(memory)h(for)0
2857 y(the)28 b(arra)m(ys,)h(reading)e(the)h(input)d(data)k(from)e(the)
h(FITS)f(\014le,)g(passing)g(them)h(to)g(the)g(w)m(ork)g(function,)f
(and)g(then)0 2970 y(writing)34 b(an)m(y)j(output)f(data)h(bac)m(k)h
(to)f(the)f(FITS)g(\014le)f(after)i(the)g(w)m(ork)g(function)e(exits.)
58 b(Because)38 b(it)e(is)g(often)0 3083 y(more)h(e\016cien)m(t)h(to)g
(pro)s(cess)f(only)f(a)i(subset)f(of)g(the)g(total)h(table)g(ro)m(ws)f
(at)h(one)f(time,)i(the)f(iterator)f(function)0 3196
y(can)f(determine)f(the)i(optim)m(um)e(amoun)m(t)h(of)g(data)h(to)g
(pass)e(in)g(eac)m(h)i(iteration)f(and)f(rep)s(eatly)g(call)h(the)g(w)m
(ork)0 3309 y(function)29 b(un)m(til)g(the)h(en)m(tire)h(table)f(b)s
(een)f(pro)s(cessed.)0 3469 y(F)-8 b(or)37 b(man)m(y)f(applications)e
(this)g(single)h(CFITSIO)f(iterator)j(function)d(can)i(e\013ectiv)m
(ely)h(replace)f(all)f(the)h(other)0 3582 y(CFITSIO)g(routines)h(for)g
(reading)g(or)g(writing)f(data)i(in)e(FITS)h(images)h(or)f(tables.)63
b(Using)36 b(the)i(iterator)g(has)0 3695 y(sev)m(eral)31
b(imp)s(ortan)m(t)e(adv)-5 b(an)m(tages)32 b(o)m(v)m(er)g(the)f
(traditional)d(metho)s(d)i(of)h(reading)e(and)h(writing)e(FITS)i(data)h
(\014les:)136 3961 y Fc(\017)46 b Fi(It)33 b(cleanly)f(separates)i(the)
f(data)h(I/O)f(from)f(the)h(routine)f(that)i(op)s(erates)f(on)g(the)g
(data.)49 b(This)31 b(leads)h(to)227 4074 y(a)f(more)g(mo)s(dular)d
(and)i(`ob)5 b(ject)31 b(orien)m(ted')g(programming)e(st)m(yle.)136
4268 y Fc(\017)46 b Fi(It)27 b(simpli\014es)c(the)k(application)e
(program)i(b)m(y)f(eliminating)e(the)j(need)g(to)g(allo)s(cate)g
(memory)g(for)f(the)h(data)227 4381 y(arra)m(ys)e(and)f(eliminates)f
(most)h(of)h(the)f(calls)g(to)h(the)g(CFITSIO)d(routines)i(that)h
(explicitly)d(read)i(and)g(write)227 4494 y(the)31 b(data.)136
4689 y Fc(\017)46 b Fi(It)32 b(ensures)e(that)i(the)g(data)g(are)g(pro)
s(cessed)f(as)h(e\016cien)m(tly)f(as)g(p)s(ossible.)42
b(This)30 b(is)g(esp)s(ecially)g(imp)s(ortan)m(t)227
4801 y(when)44 b(pro)s(cessing)f(tabular)h(data)i(since)e(the)h
(iterator)g(function)e(will)f(calculate)j(the)g(most)g(e\016cien)m(t)
227 4914 y(n)m(um)m(b)s(er)36 b(of)i(ro)m(ws)g(in)e(the)i(table)f(to)h
(b)s(e)f(passed)g(at)i(one)e(time)h(to)g(the)g(user's)e(w)m(ork)i
(function)e(on)i(eac)m(h)227 5027 y(iteration.)136 5222
y Fc(\017)46 b Fi(Mak)m(es)39 b(it)d(p)s(ossible)f(for)i(larger)g(pro)5
b(jects)37 b(to)h(dev)m(elop)f(a)h(library)c(of)k(w)m(ork)f(functions)f
(that)h(all)f(ha)m(v)m(e)j(a)227 5335 y(uniform)28 b(calling)h
(sequence)i(and)f(are)h(all)e(indep)s(enden)m(t)f(of)j(the)f(details)g
(of)g(the)h(FITS)e(\014le)h(format.)0 5601 y(There)g(are)h(basically)e
(2)j(steps)e(in)g(using)f(the)i(CFITSIO)e(iterator)i(function.)41
b(The)30 b(\014rst)g(step)h(is)f(to)h(design)f(the)0
5714 y(w)m(ork)c(function)e(itself)g(whic)m(h)g(m)m(ust)i(ha)m(v)m(e)g
(a)g(prescrib)s(ed)d(set)j(of)g(input)e(parameters.)39
b(One)25 b(of)h(these)g(parameters)1905 5942 y(61)p eop
%%Page: 62 68
62 67 bop 0 299 a Fi(62)1455 b Fg(CHAPTER)30 b(7.)112
b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0 555
y Fi(is)e(a)h(structure)g(con)m(taining)g(p)s(oin)m(ters)e(to)j(the)f
(arra)m(ys)h(of)f(data;)h(the)f(w)m(ork)h(function)d(can)j(p)s(erform)d
(an)m(y)i(desired)0 668 y(op)s(erations)j(on)i(these)f(arra)m(ys)h(and)
e(do)s(es)h(not)g(need)g(to)h(w)m(orry)f(ab)s(out)g(ho)m(w)g(the)h
(input)d(data)j(w)m(ere)f(read)g(from)0 781 y(the)e(\014le)e(or)h(ho)m
(w)h(the)f(output)g(data)h(get)h(written)d(bac)m(k)i(to)h(the)e
(\014le.)0 941 y(The)24 b(second)h(step)g(is)e(to)j(design)d(the)i
(driv)m(er)f(routine)f(that)j(op)s(ens)e(all)f(the)i(necessary)g(FITS)f
(\014les)g(and)g(initializes)0 1054 y(the)41 b(input)f(parameters)h(to)
h(the)g(iterator)f(function.)72 b(The)41 b(driv)m(er)f(program)h(calls)
f(the)i(CFITSIO)e(iterator)0 1167 y(function)29 b(whic)m(h)g(then)h
(reads)g(the)h(data)g(and)f(passes)g(it)g(to)h(the)g(user's)e(w)m(ork)i
(function.)0 1327 y(F)-8 b(urther)41 b(details)g(on)h(using)e(the)i
(iterator)g(function)f(can)h(b)s(e)f(found)f(in)h(the)h(companion)f
(CFITSIO)f(User's)0 1440 y(Guide,)30 b(and)f(in)g(the)i(iter)p
875 1440 28 4 v 32 w(a.f,)g(iter)p 1198 1440 V 33 w(b.f)f(and)f(iter)p
1678 1440 V 33 w(c.f)h(example)g(programs.)p eop
%%Page: 63 69
63 68 bop 0 1225 a Ff(Chapter)65 b(8)0 1687 y Fl(Basic)77
b(In)-6 b(terface)77 b(Routines)0 2180 y Fi(This)26 b(section)h
(de\014nes)g(a)h(basic)f(set)h(of)g(subroutines)d(that)j(can)g(b)s(e)f
(used)g(to)h(p)s(erform)e(the)i(most)g(common)g(t)m(yp)s(es)0
2293 y(of)d(read)g(and)f(write)g(op)s(erations)g(on)h(FITS)f(\014les.)
38 b(New)25 b(users)f(should)f(start)i(with)f(these)h(subroutines)e
(and)h(then,)0 2406 y(as)33 b(needed,)h(explore)e(the)i(more)f(adv)-5
b(ance)33 b(routines)f(describ)s(ed)f(in)h(the)h(follo)m(wing)f(c)m
(hapter)h(to)h(p)s(erform)e(more)0 2518 y(complex)e(or)g(sp)s
(ecialized)f(op)s(erations.)0 2679 y(A)h(righ)m(t)f(arro)m(w)h(sym)m(b)
s(ol)e(\()p Fa(>)p Fi(\))i(is)f(used)g(to)h(separate)h(the)e(input)f
(parameters)i(from)f(the)h(output)f(parameters)h(in)0
2791 y(the)i(de\014nition)d(of)i(eac)m(h)i(routine.)43
b(This)29 b(sym)m(b)s(ol)i(is)f(not)i(actually)f(part)g(of)h(the)f
(calling)f(sequence.)45 b(Note)32 b(that)0 2904 y(the)f(status)h
(parameter)g(is)e(b)s(oth)h(an)g(input)e(and)i(an)g(output)g(parameter)
h(and)e(m)m(ust)h(b)s(e)g(initialized)d(=)j(0)h(prior)0
3017 y(to)f(calling)e(the)i(FITSIO)e(subroutines.)0 3177
y(Refer)h(to)i(Chapter)d(9)i(for)f(the)h(de\014nition)d(of)i(all)g(the)
g(parameters)h(used)e(b)m(y)i(these)g(in)m(terface)f(routines.)0
3525 y Fd(8.1)135 b(FITSIO)44 b(Error)h(Status)h(Routines)0
3773 y Fh(1)81 b Fi(Return)24 b(the)i(curren)m(t)f(v)m(ersion)g(n)m(um)
m(b)s(er)f(of)i(the)f(\014tsio)g(library)-8 b(.)37 b(The)25
b(v)m(ersion)g(n)m(um)m(b)s(er)f(will)f(b)s(e)h(incremen)m(ted)227
3886 y(with)29 b(eac)m(h)j(new)e(release)g(of)h(CFITSIO.)382
4157 y Fe(FTVERS\()46 b(>)h(version\))0 4429 y Fh(2)81
b Fi(Return)45 b(the)i(descriptiv)m(e)e(text)i(string)f(corresp)s
(onding)e(to)j(a)g(FITSIO)e(error)h(status)h(co)s(de.)89
b(The)46 b(30-)227 4541 y(c)m(haracter)32 b(length)e(string)f(con)m
(tains)i(a)g(brief)e(description)f(of)i(the)h(cause)g(of)f(the)h
(error.)382 4813 y Fe(FTGERR\(status,)44 b(>)j(errtext\))0
5084 y Fh(3)81 b Fi(Return)40 b(the)h(top)g(\(oldest\))g(80-c)m
(haracter)j(error)c(message)i(from)f(the)g(in)m(ternal)e(FITSIO)h(stac)
m(k)i(of)f(error)227 5197 y(messages)29 b(and)f(shift)f(an)m(y)h
(remaining)e(messages)j(on)f(the)g(stac)m(k)i(up)d(one)h(lev)m(el.)40
b(An)m(y)28 b(FITSIO)f(error)h(will)227 5310 y(generate)h(one)e(or)g
(more)h(messages)g(on)f(the)g(stac)m(k.)41 b(Call)26
b(this)g(routine)g(rep)s(eatedly)g(to)i(get)h(eac)m(h)f(message)227
5422 y(in)h(sequence.)41 b(The)30 b(error)g(stac)m(k)i(is)e(empt)m(y)g
(when)g(a)g(blank)f(string)h(is)f(returned.)382 5694
y Fe(FTGMSG\()46 b(>)h(errmsg\))1905 5942 y Fi(63)p eop
%%Page: 64 70
64 69 bop 0 299 a Fi(64)1747 b Fg(CHAPTER)30 b(8.)111
b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0 555
y Fh(4)81 b Fi(The)33 b(FTPMRK)h(routine)f(puts)h(an)g(in)m(visible)d
(mark)m(er)j(on)g(the)h(CFITSIO)d(error)i(stac)m(k.)54
b(The)33 b(FTCMRK)227 668 y(routine)40 b(can)h(then)g(b)s(e)f(used)g
(to)h(delete)g(an)m(y)g(more)g(recen)m(t)h(error)e(messages)i(on)f(the)
g(stac)m(k,)k(bac)m(k)c(to)227 781 y(the)32 b(p)s(osition)d(of)i(the)g
(mark)m(er.)43 b(This)30 b(preserv)m(es)h(an)m(y)g(older)g(error)f
(messages)i(on)f(the)h(stac)m(k.)44 b(FTCMSG)227 894
y(simply)21 b(clears)h(the)h(en)m(tire)g(error)f(message)i(stac)m(k.)40
b(These)23 b(routines)e(are)i(called)f(without)g(an)m(y)h(argumen)m
(ts.)382 1152 y Fe(FTPMRK)382 1265 y(FTCMRK)382 1378
y(FTCMSG)0 1637 y Fh(5)81 b Fi(Prin)m(t)29 b(out)i(the)g(error)f
(message)i(corresp)s(onding)d(to)i(the)g(input)e(status)i(v)-5
b(alue)30 b(and)g(all)g(the)h(error)f(messages)227 1750
y(on)g(the)h(FITSIO)e(stac)m(k)i(to)g(the)g(sp)s(eci\014ed)d(\014le)i
(stream)g(\(stream)h(can)g(b)s(e)e(either)h(the)g(string)f('STDOUT')227
1863 y(or)i('STDERR'\).)f(If)g(the)h(input)d(status)j(v)-5
b(alue)30 b(=)g(0)h(then)f(this)f(routine)g(do)s(es)h(nothing.)334
2121 y Fe(FTRPRT)46 b(\(stream,)g(>)h(status\))0 2380
y Fh(6)81 b Fi(W)-8 b(rite)38 b(an)g(80-c)m(haracter)j(message)e(to)g
(the)f(FITSIO)f(error)h(stac)m(k.)65 b(Application)36
b(programs)i(should)e(not)227 2493 y(normally)29 b(write)g(to)j(the)e
(stac)m(k,)i(but)e(there)g(ma)m(y)h(b)s(e)f(some)h(situations)e(where)h
(this)f(is)h(desirable.)382 2751 y Fe(FTPMSG\(errmsg\))0
3085 y Fd(8.2)135 b(File)46 b(I/O)f(Routines)0 3325 y
Fh(1)81 b Fi(Op)s(en)34 b(an)h(existing)g(FITS)f(\014le)h(with)f
(readonly)h(or)g(readwrite)g(access.)58 b(This)33 b(routine)i(alw)m(a)m
(ys)h(op)s(ens)f(the)227 3438 y(primary)29 b(arra)m(y)j(\(the)f
(\014rst)f(HDU\))i(of)f(the)h(\014le,)e(and)g(do)s(es)h(not)g(mo)m(v)m
(e)h(to)g(a)f(follo)m(wing)f(extension,)h(if)f(one)227
3551 y(w)m(as)d(sp)s(eci\014ed)e(as)h(part)h(of)f(the)h(\014lename.)38
b(Use)27 b(the)g(FTNOPN)f(routine)f(to)i(automatically)g(mo)m(v)m(e)h
(to)f(the)227 3664 y(extension.)43 b(This)30 b(routine)g(will)f(also)i
(op)s(en)g(IRAF)g(images)h(\(.imh)e(format)i(\014les\))f(and)f(ra)m(w)i
(binary)d(data)227 3776 y(arra)m(ys)f(with)e(READONL)-8
b(Y)28 b(access)h(b)m(y)e(\014rst)g(con)m(v)m(erting)h(them)f(on)g(the)
h(\015y)f(in)m(to)g(virtual)f(FITS)h(images.)227 3889
y(See)36 b(the)g(`Extended)f(File)g(Name)i(Syn)m(tax')f(c)m(hapter)g
(for)f(more)h(details.)56 b(The)35 b(second)h(routine)e(simply)227
4002 y(op)s(ens)e(the)g(sp)s(eci\014ed)f(\014le)h(without)f(trying)h
(to)h(in)m(terpret)f(the)g(\014lename)g(using)f(the)h(extended)h
(\014lename)227 4115 y(syn)m(tax.)382 4374 y Fe
(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(blocksize,status\))382
4487 y(FTDKOPEN\(unit,filename,r)o(wmo)o(de,)41 b(>)48
b(blocksize,status\))0 4745 y Fh(2)81 b Fi(Op)s(en)24
b(an)i(existing)f(FITS)g(\014le)g(with)f(readonly)h(or)h(readwrite)f
(access)i(and)f(mo)m(v)m(e)h(to)f(a)h(follo)m(wing)d(extension,)227
4858 y(if)37 b(one)h(w)m(as)g(sp)s(eci\014ed)f(as)h(part)f(of)h(the)h
(\014lename.)62 b(\(e.g.,)42 b('\014lename.\014ts+2')37
b(or)h('\014lename.\014ts[2]')h(will)227 4971 y(mo)m(v)m(e)f(to)g(the)e
(3rd)g(HDU)i(in)d(the)i(\014le\).)59 b(Note)37 b(that)h(this)d(routine)
h(di\013ers)f(from)h(FTOPEN)g(in)f(that)i(it)227 5084
y(do)s(es)30 b(not)h(ha)m(v)m(e)h(the)e(redundan)m(t)f(blo)s(c)m(ksize)
h(argumen)m(t.)382 5342 y Fe(FTNOPN\(unit,filename,rwm)o(ode)o(,)42
b(>)47 b(status\))0 5601 y Fh(3)81 b Fi(Op)s(en)31 b(an)h(existing)f
(FITS)h(\014le)f(with)g(readonly)h(or)g(readwrite)g(access)h(and)f
(then)g(mo)m(v)m(e)i(to)f(the)g(\014rst)e(HDU)227 5714
y(con)m(taining)25 b(signi\014can)m(t)g(data,)i(if)d(a\))j(an)e(HDU)h
(name)g(or)f(n)m(um)m(b)s(er)f(to)i(op)s(en)f(w)m(as)h(not)g
(explicitly)d(sp)s(eci\014ed)p eop
%%Page: 65 71
65 70 bop 0 299 a Fg(8.2.)72 b(FILE)30 b(I/O)h(R)m(OUTINES)2693
b Fi(65)227 555 y(as)31 b(part)g(of)g(the)g(\014lename,)g(and)f(b\))h
(if)f(the)h(FITS)f(\014le)g(con)m(tains)h(a)h(n)m(ull)c(primary)h(arra)
m(y)j(\(i.e.,)g(NAXIS)e(=)227 668 y(0\).)41 b(In)26 b(this)h(case,)i
(it)e(will)e(lo)s(ok)i(for)g(the)h(\014rst)e(IMA)m(GE)j(HDU)f(with)e
(NAXIS)h(>)h(0,)g(or)g(the)f(\014rst)g(table)g(that)227
781 y(do)s(es)h(not)g(con)m(tain)f(the)h(strings)f(`GTI')h(\(Go)s(o)s
(d)f(Time)g(In)m(terv)-5 b(al\))28 b(or)g(`OBST)-8 b(ABLE')28
b(in)e(the)i(EXTNAME)227 894 y(k)m(eyw)m(ord)37 b(v)-5
b(alue.)60 b(FTTOPN)36 b(is)f(similar,)h(except)i(it)e(will)e(mo)m(v)m
(e)39 b(to)e(the)g(\014rst)f(signi\014can)m(t)g(table)g(HDU)227
1007 y(\(skipping)24 b(o)m(v)m(er)i(an)m(y)g(image)g(HDUs\))h(in)d(the)
i(\014le)f(if)f(a)i(sp)s(eci\014c)f(HDU)h(name)g(or)g(n)m(um)m(b)s(er)e
(is)h(not)g(sp)s(eci\014ed.)227 1120 y(FTIOPN)30 b(will)e(mo)m(v)m(e)k
(to)f(the)f(\014rst)g(non-n)m(ull)e(image)j(HDU,)g(skipping)d(o)m(v)m
(er)j(an)m(y)g(tables.)382 1372 y Fe(FTDOPN\(unit,filename,rwm)o(ode)o
(,)42 b(>)47 b(status\))382 1485 y(FTTOPN\(unit,filename,rwm)o(ode)o(,)
42 b(>)47 b(status\))382 1598 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42
b(>)47 b(status\))0 1851 y Fh(4)81 b Fi(Op)s(en)30 b(and)h(initialize)e
(a)j(new)f(empt)m(y)h(FITS)e(\014le.)44 b(A)31 b(template)h(\014le)f
(ma)m(y)h(also)g(b)s(e)f(sp)s(eci\014ed)f(to)i(de\014ne)f(the)227
1964 y(structure)h(of)h(the)g(new)f(\014le)f(\(see)j(section)e
(4.2.4\).)50 b(The)32 b(second)g(routine)g(simply)e(creates)k(the)f(sp)
s(eci\014ed)227 2077 y(\014le)d(without)f(trying)h(to)h(in)m(terpret)e
(the)i(\014lename)f(using)e(the)j(extended)f(\014lename)g(syn)m(tax.)
382 2330 y Fe(FTINIT\(unit,filename,blo)o(cks)o(ize,)41
b(>)48 b(status\))382 2442 y(FTDKINIT\(unit,filename,b)o(loc)o(ksiz)o
(e,)42 b(>)47 b(status\))0 2695 y Fh(5)81 b Fi(Close)30
b(a)g(FITS)g(\014le)f(previously)f(op)s(ened)i(with)f(ftop)s(en)h(or)g
(ftinit)382 2948 y Fe(FTCLOS\(unit,)44 b(>)k(status\))0
3201 y Fh(6)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)e
(\(absolute\))h(HDU)h(in)f(the)g(FITS)g(\014le)f(\(nhdu)g(=)h(1)h(for)f
(the)g(FITS)g(primary)e(arra)m(y\))382 3453 y Fe(FTMAHD\(unit,nhdu,)43
b(>)k(hdutype,status\))0 3706 y Fh(7)81 b Fi(Create)30
b(a)f(primary)e(arra)m(y)j(\(if)f(none)g(already)f(exists\),)i(or)f
(insert)f(a)i(new)f(IMA)m(GE)h(extension)f(immediately)227
3819 y(follo)m(wing)22 b(the)h(CHDU,)g(or)g(insert)f(a)h(new)g(Primary)
e(Arra)m(y)i(at)h(the)f(b)s(eginning)d(of)j(the)g(\014le.)37
b(An)m(y)23 b(follo)m(wing)227 3932 y(extensions)28 b(in)g(the)h
(\014le)e(will)f(b)s(e)i(shifted)g(do)m(wn)g(to)h(mak)m(e)h(ro)s(om)e
(for)h(the)g(new)f(extension.)39 b(If)29 b(the)g(CHDU)227
4045 y(is)g(the)h(last)f(HDU)h(in)f(the)g(\014le)g(then)g(the)h(new)f
(image)h(extension)f(will)e(simply)g(b)s(e)i(app)s(ended)f(to)i(the)g
(end)227 4158 y(of)k(the)h(\014le.)51 b(One)33 b(can)h(force)h(a)g(new)
e(primary)f(arra)m(y)j(to)g(b)s(e)e(inserted)g(at)i(the)f(b)s(eginning)
d(of)j(the)h(FITS)227 4271 y(\014le)29 b(b)m(y)g(setting)g(status)h(=)f
(-9)h(prior)e(to)i(calling)d(the)j(routine.)39 b(In)29
b(this)f(case)i(the)g(old)e(primary)g(arra)m(y)i(will)227
4384 y(b)s(e)c(con)m(v)m(erted)j(to)e(an)g(IMA)m(GE)g(extension.)39
b(The)27 b(new)f(extension)g(\(or)h(primary)e(arra)m(y\))j(will)c(b)s
(ecome)j(the)227 4496 y(CHDU.)382 4749 y Fe(FTIIMG\(unit,bitpix,naxis)o
(,na)o(xes,)41 b(>)48 b(status\))0 5002 y Fh(8)81 b Fi(Insert)30
b(a)i(new)f(ASCI)s(I)f(T)-8 b(ABLE)31 b(extension)g(immediately)f
(follo)m(wing)f(the)j(CHDU.)g(An)m(y)f(follo)m(wing)f(exten-)227
5115 y(sions)25 b(will)e(b)s(e)i(shifted)f(do)m(wn)h(to)h(mak)m(e)h(ro)
s(om)e(for)h(the)f(new)g(extension.)39 b(If)25 b(there)h(are)g(no)g
(other)f(follo)m(wing)227 5228 y(extensions)31 b(then)g(the)h(new)f
(table)g(extension)g(will)e(simply)g(b)s(e)i(app)s(ended)f(to)i(the)f
(end)g(of)h(the)f(\014le.)43 b(The)227 5341 y(new)30
b(extension)g(will)e(b)s(ecome)j(the)f(CHDU.)382 5593
y Fe(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o(ol,t)
o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 5706
y(status\))p eop
%%Page: 66 72
66 71 bop 0 299 a Fi(66)1747 b Fg(CHAPTER)30 b(8.)111
b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0 555
y Fh(9)81 b Fi(Insert)26 b(a)h(new)g(binary)e(table)h(extension)h
(immediately)e(follo)m(wing)h(the)h(CHDU.)g(An)m(y)g(follo)m(wing)e
(extensions)227 668 y(will)36 b(b)s(e)i(shifted)f(do)m(wn)h(to)h(mak)m
(e)g(ro)s(om)g(for)f(the)g(new)g(extension.)65 b(If)38
b(there)h(are)f(no)h(other)f(follo)m(wing)227 781 y(extensions)e(then)h
(the)f(new)g(bin)m(table)f(extension)i(will)d(simply)g(b)s(e)i(app)s
(ended)e(to)k(the)e(end)g(of)h(the)g(\014le.)227 894
y(The)30 b(new)g(extension)g(will)e(b)s(ecome)j(the)f(CHDU.)382
1137 y Fe(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o(rm,)o(tuni)o
(t,ex)o(tna)o(me,v)o(arid)o(at)41 b(>)48 b(status\))0
1468 y Fd(8.3)135 b(Keyw)l(ord)46 b(I/O)f(Routines)0
1705 y Fh(1)81 b Fi(Put)30 b(\(app)s(end\))f(an)h(80-c)m(haracter)j
(record)e(in)m(to)f(the)h(CHU.)382 1948 y Fe(FTPREC\(unit,card,)43
b(>)k(status\))0 2191 y Fh(2)81 b Fi(Put)28 b(\(app)s(end\))g(a)h(new)g
(k)m(eyw)m(ord)g(of)g(the)g(appropriate)f(datat)m(yp)s(e)i(in)m(to)f
(the)g(CHU.)g(The)f(E)h(and)f(D)i(v)m(ersions)227 2304
y(of)24 b(this)e(routine)g(ha)m(v)m(e)i(the)g(added)e(feature)i(that)g
(if)e(the)h('decimals')g(parameter)h(is)e(negativ)m(e,)k(then)d(the)g
('G')227 2417 y(displa)m(y)28 b(format)i(rather)f(then)g(the)h('E')f
(format)h(will)d(b)s(e)i(used)f(when)h(constructing)g(the)g(k)m(eyw)m
(ord)h(v)-5 b(alue,)227 2530 y(taking)26 b(the)h(absolute)f(v)-5
b(alue)25 b(of)i('decimals')e(for)h(the)h(precision.)37
b(This)25 b(will)e(suppress)h(trailing)h(zeros,)j(and)227
2643 y(will)34 b(use)j(a)g(\014xed)f(format)h(rather)g(than)f(an)h(exp)
s(onen)m(tial)e(format,)k(dep)s(ending)34 b(on)j(the)g(magnitude)f(of)
227 2755 y(the)31 b(v)-5 b(alue.)382 2998 y Fe
(FTPKY[JLS]\(unit,keyword,)o(key)o(val,)o(comm)o(ent)o(,)42
b(>)47 b(status\))382 3111 y(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o
(,dec)o(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0
3354 y Fh(3)81 b Fi(Get)37 b(the)f(n)m(th)f(80-c)m(haracter)k(header)d
(record)g(from)f(the)h(CHU.)h(The)e(\014rst)g(k)m(eyw)m(ord)i(in)d(the)
i(header)g(is)f(at)227 3467 y(k)m(ey)p 365 3467 28 4
v 34 w(no)42 b(=)f(1;)49 b(if)41 b(k)m(ey)p 996 3467
V 34 w(no)h(=)f(0)i(then)e(this)g(subroutine)f(simple)g(mo)m(v)m(es)k
(the)e(in)m(ternal)f(p)s(oin)m(ter)g(to)i(the)227 3580
y(b)s(eginning)33 b(of)j(the)g(header)f(so)h(that)g(subsequen)m(t)f(k)m
(eyw)m(ord)h(op)s(erations)f(will)e(start)j(at)g(the)g(top)g(of)g(the)
227 3693 y(header;)31 b(it)f(also)g(returns)f(a)i(blank)e(card)h(v)-5
b(alue)30 b(in)f(this)g(case.)382 3936 y Fe(FTGREC\(unit,key_no,)42
b(>)48 b(card,status\))0 4178 y Fh(4)81 b Fi(Get)31 b(a)g(k)m(eyw)m
(ord)g(v)-5 b(alue)29 b(\(with)h(the)g(appropriate)g(datat)m(yp)s(e\))h
(and)f(commen)m(t)i(from)e(the)g(CHU)382 4421 y Fe
(FTGKY[EDJLS]\(unit,keywor)o(d,)41 b(>)48 b(keyval,comment,status\))0
4664 y Fh(5)81 b Fi(Delete)31 b(an)f(existing)g(k)m(eyw)m(ord)h
(record.)382 4907 y Fe(FTDKEY\(unit,keyword,)42 b(>)48
b(status\))0 5238 y Fd(8.4)135 b(Data)46 b(I/O)g(Routines)0
5488 y Fi(The)32 b(follo)m(wing)f(routines)g(read)i(or)f(write)g(data)h
(v)-5 b(alues)32 b(in)f(the)i(curren)m(t)f(HDU)i(of)e(the)h(FITS)f
(\014le.)46 b(Automatic)0 5601 y(datat)m(yp)s(e)28 b(con)m(v)m(ersion)g
(will)c(b)s(e)j(attempted)h(for)g(n)m(umerical)d(datat)m(yp)s(es)k(if)d
(the)h(sp)s(eci\014ed)f(datat)m(yp)s(e)i(is)e(di\013eren)m(t)0
5714 y(from)k(the)g(actual)h(datat)m(yp)s(e)h(of)e(the)h(FITS)e(arra)m
(y)i(or)f(table)h(column.)p eop
%%Page: 67 73
67 72 bop 0 299 a Fg(8.4.)72 b(D)m(A)-8 b(T)g(A)32 b(I/O)f(R)m(OUTINES)
2650 b Fi(67)0 555 y Fh(1)81 b Fi(W)-8 b(rite)30 b(elemen)m(ts)h(in)m
(to)f(the)h(primary)d(data)k(arra)m(y)e(or)h(image)f(extension.)382
771 y Fe(FTPPR[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o(ts,v)o
(alue)o(s,)41 b(>)48 b(status\))0 987 y Fh(2)81 b Fi(Read)30
b(elemen)m(ts)i(from)e(the)h(primary)d(data)k(arra)m(y)f(or)g(image)g
(extension.)41 b(Unde\014ned)29 b(arra)m(y)j(elemen)m(ts)f(will)227
1100 y(b)s(e)g(returned)f(with)g(a)i(v)-5 b(alue)30 b(=)h(n)m(ullv)-5
b(al,)30 b(unless)f(n)m(ullv)-5 b(al)29 b(=)i(0)h(in)e(whic)m(h)g(case)
i(no)f(c)m(hec)m(ks)i(for)e(unde\014ned)227 1213 y(pixels)f(will)e(b)s
(e)i(p)s(erformed.)42 b(The)30 b(an)m(yf)i(parameter)f(is)f(set)i(to)g
(true)f(\(=)g(.true.\))43 b(if)30 b(an)m(y)i(of)f(the)g(returned)227
1326 y(elemen)m(ts)g(w)m(ere)g(unde\014ned.)382 1542
y Fe(FTGPV[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o(ts,n)o(ullv)
o(al,)41 b(>)48 b(values,anyf,status\))0 1758 y Fh(3)81
b Fi(W)-8 b(rite)35 b(elemen)m(ts)h(in)m(to)f(an)g(ASCI)s(I)e(or)i
(binary)f(table)h(column.)53 b(The)35 b(`felem')g(parameter)h(applies)d
(only)h(to)227 1871 y(v)m(ector)e(columns)d(in)g(binary)g(tables)h(and)
g(is)f(ignored)h(when)f(writing)g(to)i(ASCI)s(I)d(tables.)382
2087 y Fe(FTPCL[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)o(ele)o(m,ne)o
(leme)o(nts)o(,val)o(ues,)41 b(>)47 b(status\))0 2303
y Fh(4)81 b Fi(Read)22 b(elemen)m(ts)g(from)f(an)g(ASCI)s(I)g(or)g
(binary)f(table)i(column.)37 b(Unde\014ned)20 b(arra)m(y)i(elemen)m(ts)
g(will)d(b)s(e)i(returned)227 2416 y(with)31 b(a)i(v)-5
b(alue)32 b(=)g(n)m(ullv)-5 b(al,)31 b(unless)g(n)m(ullv)-5
b(al)29 b(=)k(0)f(\(or)h(=)f(')h(')f(for)g(ftgcvs\))i(in)d(whic)m(h)g
(case)j(no)e(c)m(hec)m(king)h(for)227 2529 y(unde\014ned)23
b(v)-5 b(alues)24 b(will)e(b)s(e)j(p)s(erformed.)37 b(The)24
b(ANYF)i(parameter)f(is)f(set)i(to)f(true)g(if)f(an)m(y)h(of)g(the)g
(returned)227 2642 y(elemen)m(ts)31 b(are)g(unde\014ned.)227
2785 y(An)m(y)d(column,)g(regardless)f(of)h(it's)g(in)m(trinsic)d
(datat)m(yp)s(e,)30 b(ma)m(y)e(b)s(e)f(read)h(as)g(a)h(string.)39
b(It)28 b(should)d(b)s(e)j(noted)227 2898 y(ho)m(w)m(ev)m(er)k(that)f
(reading)e(a)i(n)m(umeric)e(column)g(as)i(a)g(string)e(is)g(10)j(-)e
(100)i(times)e(slo)m(w)m(er)g(than)g(reading)g(the)227
3011 y(same)36 b(column)e(as)i(a)g(n)m(um)m(b)s(er)e(due)g(to)j(the)e
(large)h(o)m(v)m(erhead)g(in)e(constructing)h(the)h(formatted)g
(strings.)227 3124 y(The)i(displa)m(y)e(format)i(of)g(the)g(returned)f
(strings)f(will)f(b)s(e)j(determined)e(b)m(y)i(the)g(TDISPn)f(k)m(eyw)m
(ord,)j(if)227 3237 y(it)c(exists,)h(otherwise)f(b)m(y)g(the)g(datat)m
(yp)s(e)h(of)f(the)h(column.)56 b(The)36 b(length)f(of)i(the)f
(returned)f(strings)g(can)227 3350 y(b)s(e)29 b(determined)e(with)h
(the)h(ftgcdw)g(routine.)39 b(The)28 b(follo)m(wing)g(TDISPn)f(displa)m
(y)h(formats)h(are)g(curren)m(tly)227 3463 y(supp)s(orted:)418
3661 y Fe(Iw.m)142 b(Integer)418 3774 y(Ow.m)g(Octal)47
b(integer)418 3887 y(Zw.m)142 b(Hexadecimal)45 b(integer)418
4000 y(Fw.d)142 b(Fixed)47 b(floating)e(point)418 4113
y(Ew.d)142 b(Exponential)45 b(floating)h(point)418 4226
y(Dw.d)142 b(Exponential)45 b(floating)h(point)418 4339
y(Gw.d)142 b(General;)46 b(uses)g(Fw.d)h(if)g(significance)e(not)i
(lost,)f(else)h(Ew.d)227 4538 y Fi(where)24 b(w)h(is)e(the)i(width)e
(in)g(c)m(haracters)j(of)f(the)g(displa)m(y)m(ed)e(v)-5
b(alues,)26 b(m)e(is)g(the)g(minim)m(um)e(n)m(um)m(b)s(er)i(of)g
(digits)227 4651 y(displa)m(y)m(ed,)29 b(and)g(d)h(is)e(the)j(n)m(um)m
(b)s(er)d(of)i(digits)e(to)j(the)f(righ)m(t)g(of)g(the)g(decimal.)39
b(The)29 b(.m)h(\014eld)f(is)g(optional.)382 4867 y Fe
(FTGCV[SBIJEDCM]\(unit,col)o(num)o(,fro)o(w,fe)o(lem)o(,nel)o(emen)o
(ts,)o(null)o(val,)41 b(>)1098 4980 y(values,anyf,status\))0
5196 y Fh(5)81 b Fi(Get)42 b(the)g(table)g(column)e(n)m(um)m(b)s(er)h
(and)g(full)e(name)j(of)g(the)f(column)g(whose)g(name)h(matc)m(hes)h
(the)f(input)227 5309 y(template)34 b(string.)47 b(See)33
b(the)h(`Adv)-5 b(anced)33 b(In)m(terface)h(Routines')e(c)m(hapter)i
(for)f(a)g(full)e(description)g(of)i(this)227 5422 y(routine.)382
5638 y Fe(FTGCNN\(unit,casesen,colt)o(emp)o(late)o(,)42
b(>)47 b(colname,colnum,status\))p eop
%%Page: 68 74
68 73 bop 0 299 a Fi(68)1747 b Fg(CHAPTER)30 b(8.)111
b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)p eop
%%Page: 69 75
69 74 bop 0 1225 a Ff(Chapter)65 b(9)0 1687 y Fl(Adv)-13
b(anced)78 b(In)-6 b(terface)77 b(Subroutines)0 2180
y Fi(This)30 b(c)m(hapter)i(de\014nes)f(all)f(the)i(a)m(v)-5
b(ailable)31 b(subroutines)f(in)g(the)i(FITSIO)e(user)h(in)m(terface.)
45 b(F)-8 b(or)33 b(completeness,)0 2293 y(the)43 b(basic)f
(subroutines)e(describ)s(ed)g(in)i(the)g(previous)g(c)m(hapter)h(are)g
(also)f(rep)s(eated)h(here.)77 b(A)43 b(righ)m(t)f(arro)m(w)0
2406 y(sym)m(b)s(ol)28 b(is)f(used)h(here)h(to)g(separate)h(the)f
(input)e(parameters)i(from)f(the)h(output)g(parameters)g(in)e(the)i
(de\014nition)0 2518 y(of)k(eac)m(h)h(subroutine.)46
b(This)31 b(sym)m(b)s(ol)h(is)g(not)h(actually)g(part)f(of)h(the)h
(calling)d(sequence.)49 b(An)32 b(alphab)s(etical)f(list)0
2631 y(and)f(de\014nition)e(of)i(all)g(the)g(parameters)h(is)e(giv)m
(en)i(at)g(the)f(end)g(of)h(this)e(section.)0 2961 y
Fd(9.1)135 b(FITS)44 b(File)i(Op)t(en)e(and)h(Close)h(Subroutines:)0
3197 y Fh(1)81 b Fi(Op)s(en)39 b(an)h(existing)f(FITS)h(\014le)f(with)g
(readonly)h(or)g(readwrite)g(access.)72 b(FTDOPN)41 b(also)f(mo)m(v)m
(es)i(to)f(the)227 3310 y(\014rst)30 b(HDU)h(con)m(taining)f
(signi\014can)m(t)f(data,)j(if)d(no)h(sp)s(eci\014c)f(HDU)i(is)f(sp)s
(eci\014ed)f(as)h(part)g(of)h(the)f(\014lename.)227 3423
y(FTTOPN)39 b(and)h(FTIOPN)f(are)h(similar)d(except)k(that)g(they)f
(will)d(mo)m(v)m(e)k(to)g(the)f(\014rst)f(table)g(HDU)i(or)227
3536 y(image)31 b(HDU,)g(resp)s(ectiv)m(ely)-8 b(,)31
b(if)e(a)i(HDU)g(name)f(or)h(n)m(um)m(b)s(er)e(is)g(not)i(sp)s
(eci\014ed)d(as)j(part)f(of)h(the)f(\014lename.)382 3770
y Fe(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b
(blocksize,status\))382 3883 y(FTDOPN\(unit,filename,rwm)o(ode)o(,)42
b(>)47 b(status\))382 3996 y(FTTOPN\(unit,filename,rwm)o(ode)o(,)42
b(>)47 b(status\))382 4108 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42
b(>)47 b(status\))0 4343 y Fh(2)81 b Fi(Op)s(en)24 b(an)i(existing)f
(FITS)g(\014le)g(with)f(readonly)h(or)h(readwrite)f(access)i(and)f(mo)m
(v)m(e)h(to)f(a)h(follo)m(wing)d(extension,)227 4455
y(if)37 b(one)h(w)m(as)g(sp)s(eci\014ed)f(as)h(part)f(of)h(the)h
(\014lename.)62 b(\(e.g.,)42 b('\014lename.\014ts+2')37
b(or)h('\014lename.\014ts[2]')h(will)227 4568 y(mo)m(v)m(e)f(to)g(the)e
(3rd)g(HDU)i(in)d(the)i(\014le\).)59 b(Note)37 b(that)h(this)d(routine)
h(di\013ers)f(from)h(FTOPEN)g(in)f(that)i(it)227 4681
y(do)s(es)30 b(not)h(ha)m(v)m(e)h(the)e(redundan)m(t)f(blo)s(c)m(ksize)
h(argumen)m(t.)382 4915 y Fe(FTNOPN\(unit,filename,rwm)o(ode)o(,)42
b(>)47 b(status\))0 5149 y Fh(3)81 b Fi(Reop)s(en)38
b(a)i(FITS)e(\014le)h(that)g(w)m(as)h(previously)d(op)s(ened)h(with)g
(FTOPEN,)h(FTNOPN,)g(or)h(FTINIT.)e(The)227 5262 y(newunit)e(n)m(um)m
(b)s(er)g(ma)m(y)j(then)e(b)s(e)g(treated)i(as)f(a)g(separate)g
(\014le,)h(and)e(one)h(ma)m(y)h(sim)m(ultaneously)c(read)227
5375 y(or)h(write)f(to)h(2)g(\(or)g(more\))g(di\013eren)m(t)f
(extensions)g(in)f(the)i(same)g(\014le.)55 b(The)35 b(FTOPEN)g(and)g
(FTNOPN)227 5488 y(routines)e(\(ab)s(o)m(v)m(e\))i(automatically)e
(detects)i(cases)g(where)e(a)g(previously)f(op)s(ened)g(\014le)h(is)g
(b)s(eing)f(op)s(ened)227 5601 y(again,)c(and)f(then)g(in)m(ternally)e
(call)h(FTREOPEN,)h(so)h(programs)e(should)g(rarely)g(need)h(to)h
(explicitly)d(call)227 5714 y(this)30 b(routine.)1905
5942 y(69)p eop
%%Page: 70 76
70 75 bop 0 299 a Fi(70)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)334
555 y Fe(FTREOPEN\(unit,)44 b(>)j(newunit,)f(status\))0
804 y Fh(4)81 b Fi(Op)s(en)29 b(and)g(initialize)f(a)j(new)f(empt)m(y)g
(FITS)g(\014le)334 1054 y Fe(FTINIT\(unit,filename,bloc)o(ksi)o(ze,)41
b(>)48 b(status\))0 1303 y Fh(5)81 b Fi(Create)24 b(a)g(new)f(FITS)g
(\014le,)h(using)e(a)i(template)g(\014le)e(to)j(de\014ne)d(its)h
(initial)e(size)j(and)f(structure.)37 b(The)24 b(template)227
1416 y(ma)m(y)39 b(b)s(e)f(another)h(FITS)e(HDU)i(or)g(an)f(ASCI)s(I)f
(template)i(\014le.)63 b(If)38 b(the)h(input)d(template)j(\014le)e
(name)i(is)227 1529 y(blank,)27 b(then)g(this)f(routine)g(b)s(eha)m(v)m
(es)i(the)f(same)h(as)f(FTINIT.)g(The)f(curren)m(tly)h(supp)s(orted)e
(format)i(of)h(the)227 1641 y(ASCI)s(I)c(template)i(\014le)f(is)f
(describ)s(ed)g(under)g(the)i(\014ts)p 2037 1641 28 4
v 32 w(parse)p 2277 1641 V 33 w(template)f(routine)g(\(in)g(the)g
(general)h(Utilities)227 1754 y(section\),)31 b(but)f(this)f(ma)m(y)i
(c)m(hange)h(sligh)m(tly)d(later)h(releases)g(of)h(CFITSIO.)334
2004 y Fe(FTTPLT\(unit,)45 b(filename,)g(tplfilename,)f(>)k(status\))0
2253 y Fh(6)81 b Fi(Flush)32 b(in)m(ternal)g(bu\013ers)h(of)h(data)g
(to)g(the)g(output)g(FITS)f(\014le)g(previously)e(op)s(ened)i(with)f
(ftop)s(en)i(or)f(ftinit.)227 2366 y(The)j(routine)g(usually)e(nev)m
(er)j(needs)f(to)i(b)s(e)e(called,)h(but)f(doing)g(so)h(will)d(ensure)i
(that)h(if)e(the)i(program)227 2479 y(subsequen)m(tly)29
b(ab)s(orts,)h(then)h(the)f(FITS)g(\014le)f(will)f(ha)m(v)m(e)k(at)f
(least)f(b)s(een)g(closed)g(prop)s(erly)-8 b(.)382 2728
y Fe(FTFLUS\(unit,)44 b(>)k(status\))0 2977 y Fh(7)81
b Fi(Close)30 b(a)g(FITS)g(\014le)f(previously)f(op)s(ened)i(with)f
(ftop)s(en)h(or)g(ftinit)382 3226 y Fe(FTCLOS\(unit,)44
b(>)k(status\))0 3475 y Fh(8)81 b Fi(Close)33 b(and)g(DELETE)g(a)h
(FITS)f(\014le)g(previously)e(op)s(ened)i(with)f(ftop)s(en)h(or)h
(ftinit.)49 b(This)32 b(routine)g(ma)m(y)j(b)s(e)227
3588 y(useful)28 b(in)h(cases)h(where)g(a)g(FITS)f(\014le)f(is)h
(created,)i(but)e(an)h(error)f(o)s(ccurs)h(whic)m(h)e(prev)m(en)m(ts)j
(the)e(complete)227 3701 y(\014le)h(from)g(b)s(eing)f(written.)382
3950 y Fe(FTDELT\(unit,)44 b(>)k(status\))0 4199 y Fh(9)81
b Fi(Get)31 b(the)g(v)-5 b(alue)30 b(of)g(an)g(un)m(used)g(I/O)g(unit)f
(n)m(um)m(b)s(er)g(whic)m(h)g(ma)m(y)i(then)f(b)s(e)g(used)g(as)g
(input)f(to)i(FTOPEN)f(or)227 4312 y(FTINIT.)36 b(This)e(routine)h
(searc)m(hes)i(for)f(the)g(\014rst)f(un)m(used)g(unit)f(n)m(um)m(b)s
(er)h(in)f(the)j(range)f(from)f(with)g(99)227 4425 y(do)m(wn)e(to)h
(50.)50 b(This)31 b(routine)h(just)h(k)m(eeps)h(an)f(in)m(ternal)f
(list)f(of)j(the)f(allo)s(cated)g(unit)f(n)m(um)m(b)s(ers)g(and)g(do)s
(es)227 4538 y(not)26 b(ph)m(ysically)d(c)m(hec)m(k)j(that)g(the)g(F)-8
b(ortran)25 b(unit)f(is)g(a)m(v)-5 b(ailable)25 b(\(to)h(b)s(e)f
(compatible)f(with)g(the)h(SPP)f(v)m(ersion)227 4651
y(of)35 b(FITSIO\).)g(Th)m(us)f(users)g(m)m(ust)h(not)g(indep)s(enden)m
(tly)d(allo)s(cate)j(an)m(y)h(unit)d(n)m(um)m(b)s(ers)h(in)g(the)h
(range)g(50)227 4764 y(-)42 b(99)g(if)e(this)g(routine)g(is)g(also)h
(to)h(b)s(e)f(used)f(in)g(the)h(same)h(program.)73 b(This)39
b(routine)h(is)g(pro)m(vided)g(for)227 4877 y(con)m(v)m(enience)33
b(only)-8 b(,)31 b(and)f(it)h(is)f(not)i(required)d(that)j(the)f(unit)f
(n)m(um)m(b)s(ers)g(used)g(b)m(y)h(FITSIO)f(b)s(e)h(allo)s(cated)227
4990 y(b)m(y)g(this)e(routine.)382 5239 y Fe(FTGIOU\()46
b(>)h(iounit,)f(status\))0 5488 y Fh(10)g Fi(F)-8 b(ree)34
b(\(deallo)s(cate\))g(an)f(I/O)g(unit)e(n)m(um)m(b)s(er)h(whic)m(h)f(w)
m(as)i(previously)e(allo)s(cated)i(with)f(FTGIOU.)h(All)e(pre-)227
5601 y(viously)26 b(allo)s(cated)i(unit)e(n)m(um)m(b)s(ers)g(ma)m(y)i
(b)s(e)f(deallo)s(cated)h(at)g(once)h(b)m(y)e(calling)f(FTFIOU)i(with)e
(iounit)g(=)227 5714 y(-1.)p eop
%%Page: 71 77
71 76 bop 0 299 a Fg(9.1.)72 b(FITS)30 b(FILE)g(OPEN)g(AND)h(CLOSE)e
(SUBR)m(OUTINES:)1561 b Fi(71)382 555 y Fe(FTFIOU\(iounit,)44
b(>)j(status\))0 788 y Fh(11)f Fi(Return)30 b(the)h(F)-8
b(ortran)31 b(unit)f(n)m(um)m(b)s(er)f(that)i(corresp)s(onds)f(to)h
(the)g(C)g(\014ts\014le)e(p)s(oin)m(ter)h(v)-5 b(alue,)31
b(or)f(vice)h(v)m(ersa.)227 901 y(These)37 b(2)h(C)f(routines)f(ma)m(y)
h(b)s(e)g(useful)e(in)h(mixed)g(language)i(programs)f(where)f(b)s(oth)h
(C)g(and)f(F)-8 b(ortran)227 1014 y(subroutines)24 b(need)h(to)i
(access)g(the)f(same)g(\014le.)39 b(F)-8 b(or)26 b(example,)h(if)e(a)h
(FITS)f(\014le)g(is)g(op)s(ened)g(with)f(unit)g(12)j(b)m(y)227
1127 y(a)k(F)-8 b(ortran)31 b(subroutine,)e(then)h(a)h(C)f(routine)g
(within)e(the)i(same)h(program)g(could)e(get)j(the)e(\014t\014le)g(p)s
(oin)m(ter)227 1240 y(v)-5 b(alue)38 b(to)g(access)h(the)f(same)h
(\014le)e(b)m(y)g(calling)g('fptr)g(=)h(CUnit2FITS\(12\)'.)63
b(These)38 b(routines)f(return)g(a)227 1353 y(v)-5 b(alue)30
b(of)h(zero)g(if)e(an)h(error)g(o)s(ccurs.)286 1586 y
Fe(int)334 b(CFITS2Unit\(fitsfile)42 b(*ptr\);)286 1698
y(fitsfile*)k(CUnit2FITS\(int)e(unit\);)0 1931 y Fh(11)i
Fi(P)m(arse)32 b(the)g(input)d(\014lename)i(and)g(return)f(the)i(HDU)g
(n)m(um)m(b)s(er)e(that)i(w)m(ould)e(b)s(e)h(mo)m(v)m(ed)i(to)f(if)e
(the)i(\014le)e(w)m(ere)227 2044 y(op)s(ened)j(with)f(FTNOPN.)h(The)f
(returned)g(HDU)i(n)m(um)m(b)s(er)e(b)s(egins)g(with)g(1)h(for)g(the)g
(primary)f(arra)m(y)-8 b(,)35 b(so)227 2157 y(for)d(example,)f(if)g
(the)h(input)e(\014lename)g(=)i(`m)m(y\014le.\014ts[2]')g(then)f(hdun)m
(um)e(=)j(3)g(will)d(b)s(e)i(returned.)43 b(FIT-)227
2270 y(SIO)35 b(do)s(es)h(not)g(op)s(en)g(the)g(\014le)f(to)i(c)m(hec)m
(k)h(if)d(the)h(extension)g(actually)g(exists)f(if)h(an)f(extension)h
(n)m(um)m(b)s(er)227 2383 y(is)42 b(sp)s(eci\014ed.)74
b(If)42 b(an)g(extension)g(*name*)h(is)e(included)f(in)h(the)h(\014le)f
(name)i(sp)s(eci\014cation)e(\(e.g.)77 b(`m)m(y-)227
2496 y(\014le.\014ts[EVENTS]')29 b(then)g(this)g(routine)g(will)e(ha)m
(v)m(e)k(to)f(op)s(en)f(the)h(FITS)f(\014le)g(and)g(lo)s(ok)g(for)h
(the)g(p)s(osition)227 2609 y(of)38 b(the)h(named)e(extension,)j(then)e
(close)g(\014le)f(again.)63 b(This)37 b(is)g(not)h(p)s(ossible)d(if)i
(the)h(\014le)f(is)g(b)s(eing)g(read)227 2722 y(from)f(the)g(stdin)e
(stream,)k(and)d(an)h(error)f(will)e(b)s(e)j(returned)e(in)h(this)g
(case.)58 b(If)35 b(the)h(\014lename)f(do)s(es)h(not)227
2835 y(sp)s(ecify)28 b(an)h(explicit)e(extension)i(\(e.g.)42
b('m)m(y\014le.\014ts'\))29 b(then)g(hdun)m(um)e(=)h(-99)j(will)26
b(b)s(e)j(returned,)f(whic)m(h)g(is)227 2948 y(functionally)j(equiv)-5
b(alen)m(t)33 b(to)i(hdun)m(um)c(=)i(1.)50 b(This)32
b(routine)g(is)h(mainly)f(used)g(for)i(bac)m(kw)m(ard)g(compati-)227
3060 y(bilit)m(y)d(in)g(the)h(fto)s(ols)g(soft)m(w)m(are)i(pac)m(k)-5
b(age)34 b(and)e(is)f(not)h(recommended)g(for)g(general)h(use.)46
b(It)32 b(is)g(generally)227 3173 y(b)s(etter)j(and)g(more)g(e\016cien)
m(t)g(to)h(\014rst)e(op)s(en)g(the)h(FITS)f(\014le)g(with)g(FTNOPN,)h
(then)g(use)f(FTGHDN)i(to)227 3286 y(determine)29 b(whic)m(h)g(HDU)h
(in)e(the)i(\014le)f(has)h(b)s(een)f(op)s(ened,)g(rather)g(than)h
(calling)e(FTEXTN)i(follo)m(w)m(ed)f(b)m(y)227 3399 y(a)i(call)f(to)h
(FTNOPN.)382 3632 y Fe(FTEXTN\(filename,)43 b(>)48 b(nhdu,)e(status\))0
3865 y Fh(12)g Fi(Return)30 b(the)g(name)h(of)f(the)h(op)s(ened)e(FITS)
h(\014le.)382 4098 y Fe(FTFLNM\(unit,)44 b(>)k(filename,)d(status\))0
4331 y Fh(13)h Fi(Return)30 b(the)g(I/O)g(mo)s(de)g(of)h(the)g(op)s(en)
e(FITS)h(\014le)f(\(READONL)-8 b(Y)32 b(=)e(0,)h(READ)m(WRITE)g(=)f
(1\).)382 4564 y Fe(FTFLMD\(unit,)44 b(>)k(iomode,)e(status\))0
4796 y Fh(14)g Fi(Return)30 b(the)g(\014le)g(t)m(yp)s(e)g(of)h(the)f
(op)s(ened)g(FITS)g(\014le)f(\(e.g.)42 b('\014le://',)31
b('ftp://',)h(etc.\).)382 5029 y Fe(FTURLT\(unit,)44
b(>)k(urltype,)d(status\))0 5262 y Fh(15)h Fi(P)m(arse)27
b(the)f(input)e(\014lename)i(or)g(URL)g(in)m(to)g(its)g(comp)s(onen)m
(t)g(parts:)39 b(the)26 b(\014le)f(t)m(yp)s(e)i(\(\014le://,)g(ftp://,)
h(h)m(ttp://,)227 5375 y(etc\),)34 b(the)e(base)g(input)d(\014le)i
(name,)h(the)g(name)g(of)g(the)g(output)f(\014le)g(that)h(the)g(input)e
(\014le)g(is)h(to)h(b)s(e)f(copied)227 5488 y(to)38 b(prior)d(to)i(op)s
(ening,)g(the)g(HDU)g(or)f(extension)h(sp)s(eci\014cation,)g(the)g
(\014ltering)d(sp)s(eci\014er,)j(the)g(binning)227 5601
y(sp)s(eci\014er,)d(and)f(the)i(column)e(sp)s(eci\014er.)50
b(Blank)33 b(strings)g(will)f(b)s(e)h(returned)g(for)h(an)m(y)g(comp)s
(onen)m(ts)g(that)227 5714 y(are)d(not)g(presen)m(t)f(in)f(the)i(input)
d(\014le)i(name.)p eop
%%Page: 72 78
72 77 bop 0 299 a Fi(72)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)334
555 y Fe(FTIURL\(filename,)43 b(>)48 b(filetype,)d(infile,)h(outfile,)g
(extspec,)f(filter,)716 668 y(binspec,)g(colspec,)h(status\))0
913 y Fh(16)g Fi(P)m(arse)e(the)g(input)e(\014le)h(name)g(and)g(return)
g(the)h(ro)s(ot)g(\014le)e(name.)81 b(The)43 b(ro)s(ot)h(name)g
(includes)d(the)j(\014le)227 1025 y(t)m(yp)s(e)35 b(if)f(sp)s
(eci\014ed,)h(\(e.g.)56 b('ftp://')37 b(or)e('h)m(ttp://'\))i(and)d
(the)h(full)e(path)i(name,)h(to)g(the)f(exten)m(t)i(that)e(it)g(is)227
1138 y(sp)s(eci\014ed)25 b(in)f(the)j(input)d(\014lename.)38
b(It)26 b(do)s(es)g(not)g(include)e(the)i(HDU)h(name)f(or)g(n)m(um)m(b)
s(er,)g(or)g(an)m(y)h(\014ltering)227 1251 y(sp)s(eci\014cations.)334
1496 y Fe(FTRTNM\(filename,)43 b(>)48 b(rootname,)d(status\))0
1740 y Fh(16)h Fi(T)-8 b(est)36 b(if)f(the)h(input)e(\014le)h(or)g(a)i
(compressed)e(v)m(ersion)g(of)h(the)g(\014le)f(\(with)g(a)h(.gz,)i(.Z,)
e(.z,)i(or)e(.zip)f(extension\))227 1853 y(exists)j(on)g(disk.)62
b(The)37 b(returned)g(v)-5 b(alue)37 b(of)h(the)h('exists')f(parameter)
g(will)d(ha)m(v)m(e)40 b(1)e(of)g(the)g(4)g(follo)m(wing)227
1966 y(v)-5 b(alues:)370 2198 y Fe(2:)95 b(the)47 b(file)g(does)g(not)f
(exist,)h(but)f(a)i(compressed)d(version)h(does)g(exist)370
2311 y(1:)95 b(the)47 b(disk)g(file)g(does)f(exist)370
2424 y(0:)95 b(neither)46 b(the)h(file)g(nor)g(a)g(compressed)e
(version)h(of)h(the)g(file)g(exist)323 2537 y(-1:)94
b(the)47 b(input)g(file)f(name)h(is)g(not)g(a)g(disk)g(file)g(\(could)f
(be)h(a)g(ftp,)g(http,)561 2650 y(smem,)g(or)g(mem)g(file,)f(or)h(a)h
(file)e(piped)h(in)g(on)g(the)g(STDIN)f(stream\))286
2894 y(FTEXIST\(filename,)d(>)48 b(exists,)e(status\);)0
3225 y Fd(9.2)135 b(HDU-Lev)l(el)47 b(Op)t(erations)0
3475 y Fi(When)30 b(a)h(FITS)f(\014le)f(is)h(\014rst)f(op)s(ened)h(or)g
(created,)i(the)f(in)m(ternal)e(bu\013ers)g(in)g(FITSIO)g
(automatically)i(p)s(oin)m(t)e(to)0 3588 y(the)h(\014rst)g(HDU)h(in)e
(the)h(\014le.)40 b(The)29 b(follo)m(wing)g(routines)g(ma)m(y)i(b)s(e)e
(used)h(to)h(mo)m(v)m(e)g(to)g(another)f(HDU)h(in)e(the)i(\014le.)0
3701 y(Note)j(that)f(the)g(HDU)g(n)m(um)m(b)s(ering)e(con)m(v)m(en)m
(tion)i(used)f(in)f(FITSIO)h(denotes)h(the)f(primary)f(arra)m(y)i(as)g
(the)g(\014rst)0 3814 y(HDU,)e(the)g(\014rst)f(extension)g(in)f(a)h
(FITS)g(\014le)f(is)h(the)g(second)h(HDU,)g(and)f(so)h(on.)0
4059 y Fh(1)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)e
(\(absolute\))h(HDU)h(in)f(the)g(FITS)g(\014le)f(\(nhdu)g(=)h(1)h(for)f
(the)g(FITS)g(primary)e(arra)m(y\))382 4303 y Fe(FTMAHD\(unit,nhdu,)43
b(>)k(hdutype,status\))0 4548 y Fh(2)81 b Fi(Mo)m(v)m(e)32
b(to)f(a)g(new)f(\(existing\))g(HDU)h(forw)m(ard)f(or)g(bac)m(kw)m
(ards)h(relativ)m(e)f(to)h(the)g(CHDU)382 4792 y Fe
(FTMRHD\(unit,nmove,)43 b(>)k(hdutype,status\))0 5036
y Fh(3)81 b Fi(Mo)m(v)m(e)22 b(to)f(the)f(\(\014rst\))h(HDU)g(whic)m(h)
e(has)h(the)g(sp)s(eci\014ed)f(extension)h(t)m(yp)s(e)g(and)g(EXTNAME)g
(\(or)h(HDUNAME\))227 5149 y(and)32 b(EXTVER)g(k)m(eyw)m(ord)h(v)-5
b(alues.)47 b(The)32 b(hdut)m(yp)s(e)f(parameter)i(ma)m(y)h(ha)m(v)m(e)
f(a)g(v)-5 b(alue)32 b(of)h(IMA)m(GE)p 3640 5149 28 4
v 34 w(HDU,)227 5262 y(ASCI)s(I)p 486 5262 V 32 w(TBL,)f(BINAR)-8
b(Y)p 1122 5262 V 34 w(TBL,)32 b(or)h(ANY)p 1718 5262
V 33 w(HDU)g(where)f(ANY)p 2458 5262 V 33 w(HDU)i(means)e(that)h(only)f
(the)g(extname)227 5375 y(and)k(extv)m(er)h(v)-5 b(alues)35
b(will)e(b)s(e)i(used)g(to)i(lo)s(cate)g(the)f(correct)h(extension.)57
b(If)35 b(the)h(input)e(v)-5 b(alue)36 b(of)g(extv)m(er)227
5488 y(is)c(0)h(then)f(the)g(EXTVER)h(k)m(eyw)m(ord)g(is)e(ignored)h
(and)g(the)g(\014rst)g(HDU)h(with)e(a)i(matc)m(hing)g(EXTNAME)227
5601 y(\(or)j(HDUNAME\))h(k)m(eyw)m(ord)f(will)c(b)s(e)j(found.)55
b(If)34 b(no)i(matc)m(hing)f(HDU)h(is)f(found)f(in)g(the)h(\014le)g
(then)g(the)227 5714 y(curren)m(t)27 b(HDU)g(will)d(remain)h(unc)m
(hanged)i(and)f(a)h(status)g(=)f(BAD)p 2501 5714 V 34
w(HDU)p 2740 5714 V 33 w(NUM)h(\(301\))i(will)24 b(b)s(e)i(returned.)p
eop
%%Page: 73 79
73 78 bop 0 299 a Fg(9.2.)72 b(HDU-LEVEL)31 b(OPERA)-8
b(TIONS)2414 b Fi(73)382 555 y Fe(FTMNHD\(unit,)44 b(hdutype,)i
(extname,)f(extver,)h(>)i(status\))0 804 y Fh(4)81 b
Fi(Get)31 b(the)g(n)m(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(HDU)h(in)e
(the)i(FITS)e(\014le)h(\(primary)f(arra)m(y)h(=)g(1\))382
1054 y Fe(FTGHDN\(unit,)44 b(>)k(nhdu\))0 1303 y Fh(5)81
b Fi(Return)39 b(the)i(t)m(yp)s(e)g(of)g(the)g(curren)m(t)f(HDU)i(in)d
(the)i(FITS)f(\014le.)70 b(The)41 b(p)s(ossible)d(v)-5
b(alues)40 b(for)g(hdut)m(yp)s(e)g(are)227 1416 y(IMA)m(GE)p
546 1416 28 4 v 34 w(HDU)31 b(\(0\),)h(ASCI)s(I)p 1242
1416 V 31 w(TBL)e(\(1\),)i(or)e(BINAR)-8 b(Y)p 2133 1416
V 34 w(TBL)30 b(\(2\).)382 1665 y Fe(FTGHDT\(unit,)44
b(>)k(hdutype,)d(status\))0 1914 y Fh(6)81 b Fi(Return)29
b(the)i(total)g(n)m(um)m(b)s(er)e(of)i(HDUs)f(in)g(the)g(FITS)g
(\014le.)40 b(The)29 b(CHDU)i(remains)e(unc)m(hanged.)382
2163 y Fe(FTTHDU\(unit,)44 b(>)k(hdunum,)e(status\))0
2412 y Fh(7)81 b Fi(Create)36 b(\(app)s(end\))e(a)h(new)g(empt)m(y)g
(HDU)h(follo)m(wing)e(the)h(last)g(extension)g(that)h(has)f(b)s(een)f
(previously)f(ac-)227 2525 y(cessed)41 b(b)m(y)f(the)g(program.)70
b(This)39 b(will)e(o)m(v)m(erwrite)k(an)m(y)g(extensions)f(in)e(an)j
(existing)e(FITS)g(\014le)h(if)f(the)227 2638 y(program)31
b(has)g(not)g(already)g(mo)m(v)m(ed)h(to)f(that)h(\(or)f(a)h(later\))f
(extension)g(using)e(the)i(FTMAHD)h(or)f(FTM-)227 2751
y(RHD)24 b(routines.)37 b(F)-8 b(or)25 b(example,)f(if)f(an)g(existing)
f(FITS)h(\014le)f(con)m(tains)i(a)g(primary)d(arra)m(y)j(and)f(5)g
(extensions)227 2864 y(and)31 b(a)h(program)f(\(1\))h(op)s(ens)f(the)g
(FITS)g(\014le,)g(\(2\))h(mo)m(v)m(es)h(to)f(extension)f(4,)h(\(3\))g
(mo)m(v)m(es)h(bac)m(k)f(to)g(the)f(pri-)227 2977 y(mary)36
b(arra)m(y)-8 b(,)38 b(and)e(\(4\))h(then)e(calls)g(FTCRHD,)h(then)g
(the)g(new)g(extension)f(will)e(b)s(e)j(written)e(follo)m(wing)227
3090 y(the)d(4th)f(extension,)h(o)m(v)m(erwriting)f(the)g(existing)f
(5th)i(extension.)382 3339 y Fe(FTCRHD\(unit,)44 b(>)k(status\))0
3588 y Fh(8)81 b Fi(Insert)41 b(a)h(new)f(IMA)m(GE)i(extension)f
(immediately)e(follo)m(wing)g(the)i(CHDU.)g(An)m(y)g(follo)m(wing)e
(extensions)227 3701 y(will)c(b)s(e)i(shifted)f(do)m(wn)h(to)h(mak)m(e)
g(ro)s(om)g(for)f(the)g(new)g(extension.)65 b(If)38 b(there)h(are)f(no)
h(other)f(follo)m(wing)227 3814 y(extensions)29 b(then)g(the)h(new)e
(image)i(extension)f(will)e(simply)f(b)s(e)j(app)s(ended)f(to)i(the)f
(end)g(of)g(the)h(\014le.)39 b(The)227 3927 y(new)30
b(extension)g(will)e(b)s(ecome)j(the)f(CHDU.)382 4176
y Fe(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48
b(status\))0 4425 y Fh(9)81 b Fi(Insert)30 b(a)i(new)f(ASCI)s(I)f(T)-8
b(ABLE)31 b(extension)g(immediately)f(follo)m(wing)f(the)j(CHDU.)g(An)m
(y)f(follo)m(wing)f(exten-)227 4538 y(sions)25 b(will)e(b)s(e)i
(shifted)f(do)m(wn)h(to)h(mak)m(e)h(ro)s(om)e(for)h(the)f(new)g
(extension.)39 b(If)25 b(there)h(are)g(no)g(other)f(follo)m(wing)227
4651 y(extensions)31 b(then)g(the)h(new)f(table)g(extension)g(will)e
(simply)g(b)s(e)i(app)s(ended)f(to)i(the)f(end)g(of)h(the)f(\014le.)43
b(The)227 4764 y(new)30 b(extension)g(will)e(b)s(ecome)j(the)f(CHDU.)
382 5013 y Fe(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o
(,tbc)o(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42
b(>)716 5126 y(status\))0 5375 y Fh(10)k Fi(Insert)25
b(a)h(new)f(binary)e(table)j(extension)f(immediately)e(follo)m(wing)h
(the)i(CHDU.)g(An)m(y)g(follo)m(wing)d(extensions)227
5488 y(will)36 b(b)s(e)i(shifted)f(do)m(wn)h(to)h(mak)m(e)g(ro)s(om)g
(for)f(the)g(new)g(extension.)65 b(If)38 b(there)h(are)f(no)h(other)f
(follo)m(wing)227 5601 y(extensions)e(then)h(the)f(new)g(bin)m(table)f
(extension)i(will)d(simply)g(b)s(e)i(app)s(ended)e(to)k(the)e(end)g(of)
h(the)g(\014le.)227 5714 y(The)30 b(new)g(extension)g(will)e(b)s(ecome)
j(the)f(CHDU.)p eop
%%Page: 74 80
74 79 bop 0 299 a Fi(74)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382
555 y Fe(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o(rm,)o(tuni)o
(t,ex)o(tna)o(me,v)o(arid)o(at)41 b(>)48 b(status\))0
777 y Fh(11)e Fi(Resize)25 b(an)f(image)h(b)m(y)f(mo)s(di\014ng)e(the)j
(size,)h(dimensions,)d(and/or)h(datat)m(yp)s(e)h(of)g(the)g(curren)m(t)
f(primary)e(arra)m(y)227 890 y(or)29 b(image)h(extension.)39
b(If)29 b(the)g(new)g(image,)h(as)f(sp)s(eci\014ed)e(b)m(y)i(the)g
(input)e(argumen)m(ts,)j(is)e(larger)h(than)g(the)227
1003 y(curren)m(t)34 b(existing)f(image)h(in)f(the)h(FITS)f(\014le)g
(then)g(zero)i(\014ll)d(data)j(will)c(b)s(e)i(inserted)g(at)h(the)g
(end)g(of)g(the)227 1116 y(curren)m(t)25 b(image)g(and)f(an)m(y)i
(follo)m(wing)d(extensions)i(will)d(b)s(e)i(mo)m(v)m(ed)i(further)e
(bac)m(k)h(in)f(the)h(\014le.)38 b(Similarly)-8 b(,)23
b(if)227 1229 y(the)28 b(new)e(image)i(is)e(smaller)g(than)h(the)g
(curren)m(t)g(image)g(then)g(an)m(y)h(follo)m(wing)e(extensions)g(will)
f(b)s(e)h(shifted)227 1342 y(up)32 b(to)m(w)m(ards)i(the)g(b)s
(eginning)c(of)j(the)h(FITS)e(\014le)g(and)h(the)g(image)g(data)h(will)
d(b)s(e)h(truncated)h(to)h(the)f(new)227 1455 y(size.)40
b(This)24 b(routine)h(rewrites)h(the)g(BITPIX,)h(NAXIS,)f(and)g(NAXISn)
g(k)m(eyw)m(ords)g(with)f(the)i(appropriate)227 1567
y(v)-5 b(alues)30 b(for)g(new)g(image.)382 1789 y Fe
(FTRSIM\(unit,bitpix,naxis)o(,na)o(xes,)o(stat)o(us\))0
2011 y Fh(12)46 b Fi(Delete)33 b(the)g(CHDU)g(in)e(the)h(FITS)f
(\014le.)46 b(An)m(y)32 b(follo)m(wing)f(HDUs)i(will)d(b)s(e)h(shifted)
g(forw)m(ard)h(in)f(the)h(\014le,)g(to)227 2124 y(\014ll)k(in)g(the)h
(gap)h(created)g(b)m(y)g(the)f(deleted)g(HDU.)i(In)d(the)i(case)g(of)g
(deleting)e(the)i(primary)d(arra)m(y)j(\(the)227 2237
y(\014rst)30 b(HDU)h(in)e(the)i(\014le\))f(then)g(the)h(curren)m(t)f
(primary)e(arra)m(y)j(will)d(b)s(e)i(replace)g(b)m(y)h(a)g(n)m(ull)d
(primary)g(arra)m(y)227 2350 y(con)m(taining)j(the)h(minim)m(um)c(set)k
(of)g(required)d(k)m(eyw)m(ords)j(and)e(no)i(data.)44
b(If)31 b(there)g(are)h(more)f(extensions)227 2463 y(in)e(the)h(\014le)
f(follo)m(wing)g(the)h(one)g(that)h(is)e(deleted,)h(then)g(the)g(the)g
(CHDU)h(will)c(b)s(e)j(rede\014ned)e(to)j(p)s(oin)m(t)e(to)227
2576 y(the)e(follo)m(wing)e(extension.)40 b(If)26 b(there)h(are)g(no)g
(follo)m(wing)e(extensions)h(then)h(the)g(CHDU)g(will)d(b)s(e)i
(rede\014ned)227 2689 y(to)35 b(p)s(oin)m(t)e(to)i(the)f(previous)e
(HDU.)j(The)e(output)h(HDUTYPE)g(parameter)h(indicates)d(the)j(t)m(yp)s
(e)f(of)g(the)227 2802 y(new)c(CHDU)h(after)g(the)f(previous)f(CHDU)i
(has)f(b)s(een)g(deleted.)382 3024 y Fe(FTDHDU\(unit,)44
b(>)k(hdutype,status\))0 3245 y Fh(13)e Fi(Cop)m(y)36
b(all)f(or)h(part)g(of)g(the)g(input)e(FITS)h(\014le)g(and)h(app)s(end)
e(it)h(to)i(the)f(end)g(of)g(the)g(output)g(FITS)f(\014le.)56
b(If)227 3358 y('previous')27 b(is)g(true)h(\(not)g(0\),)i(then)d(an)m
(y)h(HDUs)h(preceding)e(the)h(curren)m(t)f(HDU)i(in)d(the)i(input)e
(\014le)h(will)f(b)s(e)227 3471 y(copied)33 b(to)h(the)g(output)f
(\014le.)50 b(Similarly)-8 b(,)31 b('curren)m(t')j(and)e('follo)m
(wing')h(determine)g(whether)f(the)i(curren)m(t)227 3584
y(HDU,)g(and/or)e(an)m(y)h(follo)m(wing)e(HDUs)i(in)e(the)h(input)f
(\014le)g(will)f(b)s(e)i(copied)g(to)h(the)f(output)g(\014le.)46
b(If)32 b(all)g(3)227 3697 y(parameters)j(are)h(true,)g(then)e(the)h
(en)m(tire)g(input)e(\014le)h(will)e(b)s(e)i(copied.)54
b(On)33 b(return,)j(the)f(curren)m(t)f(HDU)227 3810 y(in)29
b(the)g(input)f(\014le)h(will)e(b)s(e)i(unc)m(hanged,)h(and)f(the)h
(last)f(copied)g(HDU)i(will)c(b)s(e)i(the)h(curren)m(t)f(HDU)h(in)f
(the)227 3923 y(output)h(\014le.)382 4145 y Fe(FTCPFL\(iunit,)44
b(ounit,)i(previous,)f(current,)h(following,)f(>)i(status\))0
4367 y Fh(14)f Fi(Cop)m(y)35 b(the)f(en)m(tire)h(CHDU)g(from)f(the)g
(FITS)g(\014le)g(asso)s(ciated)h(with)e(IUNIT)h(to)i(the)e(CHDU)h(of)g
(the)g(FITS)227 4480 y(\014le)f(asso)s(ciated)h(with)e(OUNIT.)h(The)g
(output)g(HDU)h(m)m(ust)f(b)s(e)g(empt)m(y)h(and)e(not)i(already)f(con)
m(tain)h(an)m(y)227 4593 y(k)m(eyw)m(ords.)41 b(Space)29
b(will)d(b)s(e)j(reserv)m(ed)g(for)g(MOREKEYS)f(additional)e(k)m(eyw)m
(ords)k(in)d(the)j(output)e(header)227 4706 y(if)i(there)g(is)g(not)g
(already)g(enough)g(space.)382 4927 y Fe(FTCOPY\(iunit,ounit,morek)o
(eys)o(,)42 b(>)47 b(status\))0 5149 y Fh(15)f Fi(Cop)m(y)27
b(the)h(header)f(\(and)g(not)g(the)g(data\))i(from)d(the)i(CHDU)g(asso)
s(ciated)f(with)f(in)m(unit)f(to)j(the)f(CHDU)h(asso-)227
5262 y(ciated)e(with)e(outunit.)38 b(If)25 b(the)g(curren)m(t)h(output)
f(HDU)h(is)e(not)i(completely)f(empt)m(y)-8 b(,)27 b(then)e(the)h(CHDU)
g(will)227 5375 y(b)s(e)e(closed)h(and)f(a)i(new)e(HDU)h(will)e(b)s(e)h
(app)s(ended)f(to)j(the)f(output)f(\014le.)38 b(This)23
b(routine)h(will)e(automatically)227 5488 y(transform)31
b(the)g(necessary)h(k)m(eyw)m(ords)f(when)g(cop)m(ying)g(a)g(primary)f
(arra)m(y)i(to)f(and)g(image)h(extension,)f(or)227 5601
y(an)c(image)g(extension)f(to)h(a)h(primary)c(arra)m(y)-8
b(.)41 b(An)26 b(empt)m(y)h(output)f(data)i(unit)d(will)f(b)s(e)i
(created)i(\(all)e(v)-5 b(alues)227 5714 y(=)30 b(0\).)p
eop
%%Page: 75 81
75 80 bop 0 299 a Fg(9.3.)72 b(DEFINE)31 b(OR)f(REDEFINE)h(THE)f(STR)m
(UCTURE)f(OF)h(THE)g(CHDU)1042 b Fi(75)382 555 y Fe(FTCPHD\(inunit,)44
b(outunit,)h(>)j(status\))0 819 y Fh(16)e Fi(Cop)m(y)d(just)g(the)g
(data)h(from)f(the)g(CHDU)h(asso)s(ciated)f(with)f(IUNIT)h(to)h(the)f
(CHDU)h(asso)s(ciated)f(with)227 932 y(OUNIT.)26 b(This)e(will)f(o)m(v)
m(erwrite)j(an)m(y)g(data)g(previously)e(in)g(the)i(OUNIT)f(CHDU.)h
(This)e(lo)m(w)i(lev)m(el)f(routine)227 1045 y(is)h(used)f(b)m(y)i
(FTCOPY,)f(but)g(it)f(ma)m(y)j(also)e(b)s(e)g(useful)e(in)i(certain)g
(application)f(programs)h(whic)m(h)f(w)m(an)m(t)i(to)227
1158 y(cop)m(y)j(the)f(data)h(from)f(one)g(FITS)f(\014le)g(to)i
(another)f(but)g(also)g(w)m(an)m(t)h(to)g(mo)s(dify)d(the)i(header)g(k)
m(eyw)m(ords)g(in)227 1271 y(the)j(pro)s(cess.)44 b(all)31
b(the)h(required)e(header)h(k)m(eyw)m(ords)h(m)m(ust)g(b)s(e)f(written)
g(to)h(the)g(OUNIT)f(CHDU)h(b)s(efore)227 1383 y(calling)d(this)g
(routine)382 1647 y Fe(FTCPDT\(iunit,ounit,)42 b(>)48
b(status\))0 1985 y Fd(9.3)135 b(De\014ne)45 b(or)g(Rede\014ne)h(the)f
(structure)g(of)g(the)g(CHDU)0 2237 y Fi(It)32 b(should)e(rarely)h(b)s
(e)h(necessary)g(to)h(call)e(the)h(subroutines)e(in)g(this)h(section.)
46 b(FITSIO)30 b(in)m(ternally)g(calls)h(these)0 2350
y(routines)i(whenev)m(er)h(necessary)-8 b(,)36 b(so)e(an)m(y)g(calls)f
(to)i(these)f(routines)f(b)m(y)h(application)e(programs)i(will)d(lik)m
(ely)i(b)s(e)0 2462 y(redundan)m(t.)0 2726 y Fh(1)81
b Fi(This)35 b(routine)h(forces)i(FITSIO)e(to)i(scan)f(the)g(curren)m
(t)g(header)g(k)m(eyw)m(ords)h(that)f(de\014ne)g(the)g(structure)g(of)
227 2839 y(the)31 b(HDU)f(\(suc)m(h)g(as)h(the)f(NAXISn,)g(PCOUNT)f
(and)g(GCOUNT)h(k)m(eyw)m(ords\))h(so)f(that)h(it)e(can)i(initialize)
227 2952 y(the)36 b(in)m(ternal)e(bu\013ers)g(that)i(describ)s(e)e(the)
i(HDU)g(structure.)55 b(This)34 b(routine)h(ma)m(y)h(b)s(e)e(used)h
(instead)g(of)227 3065 y(the)k(more)g(complicated)g(calls)f(to)h(ftp)s
(def,)h(ftadef)f(or)g(ftb)s(def.)65 b(This)37 b(routine)h(is)g(also)h
(v)m(ery)g(useful)e(for)227 3178 y(reinitializing)30
b(the)k(structure)g(of)g(an)f(HDU,)i(if)e(the)h(n)m(um)m(b)s(er)e(of)i
(ro)m(ws)g(in)f(a)h(table,)h(as)f(sp)s(eci\014ed)e(b)m(y)i(the)227
3291 y(NAXIS2)d(k)m(eyw)m(ord,)g(has)f(b)s(een)g(mo)s(di\014ed)e(from)i
(its)g(initial)d(v)-5 b(alue.)382 3554 y Fe(FTRDEF\(unit,)44
b(>)k(status\))141 b(\(DEPRECATED\))0 3818 y Fh(2)81
b Fi(De\014ne)27 b(the)g(structure)g(of)g(the)g(primary)e(arra)m(y)j
(or)f(IMA)m(GE)h(extension.)39 b(When)27 b(writing)e(GR)m(OUP)m(ed)j
(FITS)227 3931 y(\014les)42 b(that)i(b)m(y)e(con)m(v)m(en)m(tion)j(set)
e(the)g(NAXIS1)g(k)m(eyw)m(ord)h(equal)e(to)i(0,)i(ftp)s(def)c(m)m(ust)
h(b)s(e)f(called)g(with)227 4044 y(naxes\(1\))27 b(=)e(1,)i(NOT)e(0,)i
(otherwise)e(FITSIO)f(will)f(rep)s(ort)i(an)g(error)g(status=308)i
(when)d(trying)h(to)h(write)227 4157 y(data)31 b(to)g(a)g(group.)40
b(Note:)i(it)30 b(is)g(usually)e(simpler)g(to)j(call)f(FTRDEF)g(rather)
h(than)f(this)f(routine.)382 4421 y Fe(FTPDEF\(unit,bitpix,naxis)o(,na)
o(xes,)o(pcou)o(nt,)o(gcou)o(nt,)41 b(>)48 b(status\))93
b(\(DEPRECATED\))0 4684 y Fh(3)81 b Fi(De\014ne)32 b(the)h(structure)f
(of)g(an)h(ASCI)s(I)e(table)h(\(T)-8 b(ABLE\))33 b(extension.)47
b(Note:)f(it)32 b(is)f(usually)f(simpler)g(to)k(call)227
4797 y(FTRDEF)d(rather)f(than)h(this)e(routine.)382 5061
y Fe(FTADEF\(unit,rowlen,tfiel)o(ds,)o(tbco)o(l,tf)o(orm)o(,nro)o(ws)42
b(>)47 b(status\))f(\(DEPRECATED\))0 5325 y Fh(4)81 b
Fi(De\014ne)35 b(the)h(structure)f(of)g(a)h(binary)e(table)h(\(BINT)-8
b(ABLE\))37 b(extension.)55 b(Note:)e(it)35 b(is)f(usually)f(simpler)g
(to)227 5438 y(call)d(FTRDEF)h(rather)f(than)g(this)f(routine.)382
5701 y Fe(FTBDEF\(unit,tfields,tfor)o(m,v)o(arid)o(at,n)o(row)o(s)42
b(>)47 b(status\))f(\(DEPRECATED\))p eop
%%Page: 76 82
76 81 bop 0 299 a Fi(76)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0
555 y Fh(5)81 b Fi(De\014ne)34 b(the)g(size)g(of)g(the)g(Curren)m(t)f
(Data)i(Unit,)g(o)m(v)m(erriding)d(the)i(length)g(of)g(the)g(data)h
(unit)d(as)i(previously)227 668 y(de\014ned)e(b)m(y)h(ftp)s(def,)g
(ftadef,)i(or)e(ftb)s(def.)48 b(This)32 b(is)g(useful)f(if)i(one)g(do)s
(es)g(not)h(kno)m(w)f(the)g(total)h(size)f(of)h(the)227
781 y(data)f(unit)e(un)m(til)g(after)h(the)h(data)g(ha)m(v)m(e)g(b)s
(een)f(written.)45 b(The)32 b(size)g(\(in)f(b)m(ytes\))i(of)g(an)f
(ASCI)s(I)f(or)h(Binary)227 894 y(table)26 b(is)f(giv)m(en)g(b)m(y)h
(NAXIS1)g(*)g(NAXIS2.)40 b(\(Note)27 b(that)f(to)h(determine)e(the)g(v)
-5 b(alue)26 b(of)g(NAXIS1)f(it)h(is)f(often)227 1007
y(more)32 b(con)m(v)m(enien)m(t)g(to)g(read)f(the)g(v)-5
b(alue)31 b(of)g(the)h(NAXIS1)f(k)m(eyw)m(ord)h(from)e(the)i(output)e
(\014le,)h(rather)g(than)227 1120 y(computing)e(the)h(ro)m(w)g(length)g
(directly)e(from)h(all)g(the)h(TF)m(ORM)h(k)m(eyw)m(ord)f(v)-5
b(alues\).)40 b(Note:)i(it)29 b(is)g(usually)227 1233
y(simpler)f(to)j(call)f(FTRDEF)h(rather)f(than)g(this)f(routine.)382
1454 y Fe(FTDDEF\(unit,bytlen,)42 b(>)48 b(status\))e(\(DEPRECATED\))0
1676 y Fh(6)81 b Fi(De\014ne)22 b(the)g(zero)i(indexed)c(b)m(yte)j
(o\013set)g(of)g(the)f('heap')h(measured)e(from)h(the)h(start)g(of)f
(the)g(binary)f(table)h(data.)227 1789 y(By)30 b(default)f(the)g(heap)h
(is)e(assumed)h(to)h(start)g(immediately)e(follo)m(wing)g(the)i
(regular)e(table)i(data,)g(i.e.,)g(at)227 1902 y(lo)s(cation)36
b(NAXIS1)h(x)g(NAXIS2.)59 b(This)35 b(routine)g(is)h(only)f(relev)-5
b(an)m(t)37 b(for)f(binary)f(tables)h(whic)m(h)g(con)m(tain)227
2015 y(v)-5 b(ariable)34 b(length)h(arra)m(y)g(columns)f(\(with)h(TF)m
(ORMn)g(=)f('Pt'\).)57 b(This)33 b(subroutine)g(also)i(automatically)
227 2128 y(writes)22 b(the)h(v)-5 b(alue)22 b(of)h(theap)g(to)h(a)f(k)m
(eyw)m(ord)g(in)f(the)h(extension)f(header.)38 b(This)21
b(subroutine)g(m)m(ust)i(b)s(e)f(called)227 2241 y(after)27
b(the)f(required)e(k)m(eyw)m(ords)j(ha)m(v)m(e)g(b)s(een)e(written)g
(\(with)g(ftph)m(bn\))g(and)h(after)g(the)h(table)f(structure)f(has)227
2354 y(b)s(een)30 b(de\014ned)f(\(with)g(ftb)s(def)7
b(\))30 b(but)g(b)s(efore)g(an)m(y)g(data)h(is)f(written)f(to)i(the)g
(table.)382 2575 y Fe(FTPTHP\(unit,theap,)43 b(>)k(status\))0
2903 y Fd(9.4)135 b(FITS)44 b(Header)i(I/O)f(Subroutines)0
3156 y Fb(9.4.1)112 b(Header)38 b(Space)h(and)f(P)m(osition)d(Routines)
0 3359 y Fh(1)81 b Fi(Reserv)m(e)37 b(space)g(in)e(the)i(CHU)f(for)h
(MOREKEYS)e(more)i(header)f(k)m(eyw)m(ords.)59 b(This)35
b(subroutine)f(ma)m(y)k(b)s(e)227 3472 y(called)c(to)i(reserv)m(e)g
(space)f(for)g(k)m(eyw)m(ords)g(whic)m(h)f(are)h(to)h(b)s(e)e(written)g
(at)h(a)h(later)f(time,)h(after)f(the)g(data)227 3585
y(unit)g(or)h(subsequen)m(t)f(extensions)g(ha)m(v)m(e)i(b)s(een)e
(written)g(to)i(the)f(FITS)f(\014le.)57 b(If)35 b(this)g(subroutine)f
(is)h(not)227 3698 y(explicitly)25 b(called,)i(then)g(the)g(initial)e
(size)h(of)i(the)f(FITS)f(header)h(will)e(b)s(e)h(limited)f(to)j(the)f
(space)h(a)m(v)-5 b(ailable)227 3811 y(at)24 b(the)g(time)f(that)h(the)
g(\014rst)f(data)h(is)f(written)f(to)i(the)g(asso)s(ciated)g(data)g
(unit.)37 b(FITSIO)22 b(has)i(the)f(abilit)m(y)f(to)227
3924 y(dynamically)g(add)h(more)h(space)h(to)g(the)f(header)g(if)f
(needed,)i(ho)m(w)m(ev)m(er)g(it)f(is)f(more)h(e\016cien)m(t)g(to)h
(preallo)s(cate)227 4037 y(the)31 b(required)d(space)j(if)f(the)g(size)
g(is)g(kno)m(wn)g(in)f(adv)-5 b(ance.)382 4258 y Fe
(FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))0 4480 y
Fh(2)81 b Fi(Return)23 b(the)i(n)m(um)m(b)s(er)e(of)h(existing)g(k)m
(eyw)m(ords)g(in)g(the)g(CHU)g(\(NOT)h(including)c(the)j(END)h(k)m(eyw)
m(ord)g(whic)m(h)e(is)227 4593 y(not)h(considered)e(a)h(real)g(k)m(eyw)
m(ord\))h(and)f(the)g(remaining)f(space)h(a)m(v)-5 b(ailable)23
b(to)h(write)e(additional)g(k)m(eyw)m(ords)227 4706 y(in)38
b(the)i(CHU.)f(\(returns)f(KEYSADD)i(=)f(-1)h(if)e(the)h(header)g(has)g
(not)h(y)m(et)g(b)s(een)e(closed\).)68 b(Note)40 b(that)227
4819 y(FITSIO)23 b(will)f(attempt)j(to)g(dynamically)d(add)h(space)i
(for)f(more)g(k)m(eyw)m(ords)h(if)e(required)f(when)h(app)s(ending)227
4932 y(new)30 b(k)m(eyw)m(ords)h(to)g(a)g(header.)382
5153 y Fe(FTGHSP\(iunit,)44 b(>)j(keysexist,keysadd,status\))0
5375 y Fh(3)81 b Fi(Return)38 b(the)i(n)m(um)m(b)s(er)e(of)h(k)m(eyw)m
(ords)h(in)e(the)h(header)g(and)g(the)g(curren)m(t)h(p)s(osition)d(in)h
(the)h(header.)68 b(This)227 5488 y(returns)37 b(the)g(n)m(um)m(b)s(er)
f(of)i(the)g(k)m(eyw)m(ord)g(record)f(that)h(will)d(b)s(e)i(read)g
(next)h(\(or)g(one)g(greater)g(than)g(the)227 5601 y(p)s(osition)27
b(of)h(the)h(last)f(k)m(eyw)m(ord)h(that)g(w)m(as)f(read)g(or)h
(written\).)39 b(A)29 b(v)-5 b(alue)27 b(of)i(1)g(is)e(returned)g(if)g
(the)i(p)s(oin)m(ter)227 5714 y(is)h(p)s(ositioned)e(at)j(the)g(b)s
(eginning)c(of)k(the)g(header.)p eop
%%Page: 77 83
77 82 bop 0 299 a Fg(9.4.)72 b(FITS)30 b(HEADER)h(I/O)f(SUBR)m(OUTINES)
2086 b Fi(77)382 555 y Fe(FTGHPS\(iunit,)44 b(>)j
(keysexist,key_no,status\))0 845 y Fb(9.4.2)112 b(Read)38
b(or)f(W)-9 b(rite)36 b(Standard)j(Header)e(Routines)0
1064 y Fi(These)31 b(subroutines)d(pro)m(vide)i(a)h(simple)e(metho)s(d)
h(of)h(reading)f(or)h(writing)e(most)i(of)g(the)g(k)m(eyw)m(ord)g(v)-5
b(alues)30 b(that)0 1177 y(are)e(normally)e(required)g(in)h(a)h(FITS)f
(\014les.)39 b(These)27 b(subroutines)f(are)i(pro)m(vided)e(for)i(con)m
(v)m(enience)g(only)f(and)h(are)0 1290 y(not)36 b(required)d(to)j(b)s
(e)f(used.)55 b(If)35 b(preferred,)h(users)e(ma)m(y)i(call)f(the)h(lo)m
(w)m(er-lev)m(el)f(subroutines)e(describ)s(ed)h(in)g(the)0
1402 y(previous)29 b(section)i(to)h(individually)26 b(read)k(or)h
(write)f(the)h(required)e(k)m(eyw)m(ords.)43 b(Note)32
b(that)g(in)d(most)j(cases,)g(the)0 1515 y(required)25
b(k)m(eyw)m(ords)i(suc)m(h)g(as)g(NAXIS,)f(TFIELD,)h(TTYPEn,)g(etc,)i
(whic)m(h)c(de\014ne)h(the)h(structure)f(of)h(the)g(HDU)0
1628 y(m)m(ust)j(b)s(e)g(written)f(to)j(the)e(header)g(b)s(efore)g(an)m
(y)h(data)g(can)g(b)s(e)e(written)h(to)h(the)g(image)f(or)h(table.)0
1881 y Fh(1)81 b Fi(Put)37 b(the)i(primary)d(header)i(or)g(IMA)m(GE)h
(extension)e(k)m(eyw)m(ords)i(in)m(to)f(the)g(CHU.)g(There)g(are)g(2)h
(a)m(v)-5 b(ailable)227 1994 y(routines:)38 b(The)27
b(simpler)d(FTPHPS)j(routine)f(is)g(equiv)-5 b(alen)m(t)27
b(to)g(calling)f(ftphpr)f(with)h(the)h(default)g(v)-5
b(alues)227 2107 y(of)35 b(SIMPLE)f(=)g(true,)i(p)s(coun)m(t)e(=)g(0,)i
(gcoun)m(t)g(=)e(1,)i(and)e(EXTEND)h(=)f(true.)53 b(PCOUNT,)34
b(GCOUNT)227 2220 y(and)23 b(EXTEND)h(k)m(eyw)m(ords)g(are)h(not)f
(required)e(in)g(the)i(primary)e(header)h(and)h(are)g(only)f(written)g
(if)f(p)s(coun)m(t)227 2333 y(is)30 b(not)h(equal)g(to)h(zero,)g(gcoun)
m(t)g(is)e(not)h(equal)f(to)i(zero)g(or)f(one,)g(and)g(if)f(extend)h
(is)f(TR)m(UE,)h(resp)s(ectiv)m(ely)-8 b(.)227 2446 y(When)30
b(writing)f(to)i(an)f(IMA)m(GE)i(extension,)e(the)g(SIMPLE)g(and)g
(EXTEND)g(parameters)h(are)g(ignored.)382 2699 y Fe
(FTPHPS\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382
2925 y(FTPHPR\(unit,simple,bitpi)o(x,n)o(axis)o(,nax)o(es,)o(pcou)o
(nt,g)o(cou)o(nt,e)o(xten)o(d,)41 b(>)48 b(status\))0
3178 y Fh(2)81 b Fi(Get)44 b(primary)d(header)i(or)h(IMA)m(GE)g
(extension)f(k)m(eyw)m(ords)h(from)f(the)g(CHU.)h(When)f(reading)f
(from)h(an)227 3291 y(IMA)m(GE)32 b(extension)e(the)g(SIMPLE)g(and)f
(EXTEND)i(parameters)g(are)f(ignored.)382 3544 y Fe
(FTGHPR\(unit,maxdim,)42 b(>)48 b(simple,bitpix,naxis,naxe)o(s,p)o
(coun)o(t,gc)o(oun)o(t,ex)o(tend)o(,)716 3657 y(status\))0
3911 y Fh(3)81 b Fi(Put)34 b(the)h(ASCI)s(I)f(table)h(header)g(k)m(eyw)
m(ords)g(in)m(to)g(the)g(CHU.)h(The)e(optional)g(TUNITn)g(and)h
(EXTNAME)227 4024 y(k)m(eyw)m(ords)c(are)g(written)e(only)h(if)f(the)i
(input)d(string)h(v)-5 b(alues)30 b(are)h(not)f(blank.)382
4277 y Fe(FTPHTB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o
(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716
4390 y(status\))0 4643 y Fh(4)81 b Fi(Get)31 b(the)g(ASCI)s(I)d(table)j
(header)f(k)m(eyw)m(ords)h(from)e(the)i(CHU)382 4896
y Fe(FTGHTB\(unit,maxdim,)42 b(>)48 b(rowlen,nrows,tfields,tty)o(pe,)o
(tbco)o(l,tf)o(orm)o(,tun)o(it,)716 5009 y(extname,status\))0
5262 y Fh(5)81 b Fi(Put)34 b(the)h(binary)e(table)i(header)f(k)m(eyw)m
(ords)i(in)m(to)e(the)h(CHU.)g(The)g(optional)f(TUNITn)g(and)g(EXTNAME)
227 5375 y(k)m(eyw)m(ords)i(are)g(written)e(only)g(if)h(the)g(input)e
(string)i(v)-5 b(alues)34 b(are)i(not)f(blank.)54 b(The)35
b(p)s(coun)m(t)g(parameter,)227 5488 y(whic)m(h)e(sp)s(eci\014es)g(the)
i(size)f(of)h(the)f(v)-5 b(ariable)33 b(length)h(arra)m(y)h(heap,)g
(should)e(initially)d(=)k(0;)j(FITSIO)d(will)227 5601
y(automatically)24 b(up)s(date)f(the)h(PCOUNT)f(k)m(eyw)m(ord)h(v)-5
b(alue)23 b(if)g(an)m(y)h(v)-5 b(ariable)23 b(length)g(arra)m(y)i(data)
f(is)f(written)227 5714 y(to)31 b(the)e(heap.)41 b(The)29
b(TF)m(ORM)g(k)m(eyw)m(ord)h(v)-5 b(alue)29 b(for)h(v)-5
b(ariable)28 b(length)h(v)m(ector)i(columns)d(should)g(ha)m(v)m(e)j
(the)p eop
%%Page: 78 84
78 83 bop 0 299 a Fi(78)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)227
555 y Fi(form)d('Pt\(len\)')i(or)e('1Pt\(len\)')i(where)e(`t')h(is)f
(the)h(data)g(t)m(yp)s(e)g(co)s(de)f(letter)h(\(A,I,J,E,D,)h(etc.\))42
b(and)27 b(`len')g(is)227 668 y(an)h(in)m(teger)h(sp)s(ecifying)d(the)i
(maxim)m(um)f(length)g(of)i(the)f(v)m(ectors)h(in)e(that)i(column)e
(\(len)g(m)m(ust)h(b)s(e)g(greater)227 781 y(than)j(or)h(equal)e(to)j
(the)e(longest)h(v)m(ector)g(in)e(the)i(column\).)43
b(If)30 b(`len')h(is)g(not)g(sp)s(eci\014ed)f(when)g(the)i(table)f(is)
227 894 y(created)c(\(e.g.,)i(the)d(input)e(TF)m(ORMn)i(v)-5
b(alue)25 b(is)g(just)g('1Pt'\))j(then)d(FITSIO)g(will)e(scan)j(the)g
(column)f(when)227 1007 y(the)30 b(table)f(is)f(\014rst)h(closed)g(and)
g(will)d(app)s(end)i(the)h(maxim)m(um)g(length)f(to)i(the)g(TF)m(ORM)f
(k)m(eyw)m(ord)h(v)-5 b(alue.)227 1120 y(Note)28 b(that)e(if)f(the)h
(table)g(is)f(subsequen)m(tly)g(mo)s(di\014ed)f(to)j(increase)e(the)i
(maxim)m(um)e(length)g(of)h(the)g(v)m(ectors)227 1233
y(then)k(the)h(mo)s(difying)d(program)i(is)f(resp)s(onsible)f(for)i
(also)g(up)s(dating)e(the)j(TF)m(ORM)g(k)m(eyw)m(ord)g(v)-5
b(alue.)382 1462 y Fe(FTPHBN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o
(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at,)41 b(>)48
b(status\))0 1691 y Fh(6)81 b Fi(Get)31 b(the)g(binary)d(table)i
(header)h(k)m(eyw)m(ords)f(from)g(the)h(CHU)382 1921
y Fe(FTGHBN\(unit,maxdim,)42 b(>)48 b(nrows,tfields,ttype,tfor)o(m,t)o
(unit)o(,ext)o(nam)o(e,va)o(rida)o(t,)716 2034 y(status\))0
2320 y Fb(9.4.3)112 b(W)-9 b(rite)36 b(Keyw)m(ord)h(Subroutines)0
2524 y Fh(1)81 b Fi(Put)30 b(\(app)s(end\))f(an)h(80-c)m(haracter)j
(record)e(in)m(to)f(the)h(CHU.)382 2753 y Fe(FTPREC\(unit,card,)43
b(>)k(status\))0 2982 y Fh(2)81 b Fi(Put)36 b(\(app)s(end\))g(a)i
(COMMENT)f(k)m(eyw)m(ord)g(in)m(to)g(the)h(CHU.)f(Multiple)e(COMMENT)i
(k)m(eyw)m(ords)g(will)e(b)s(e)227 3095 y(written)30
b(if)f(the)i(input)d(commen)m(t)j(string)f(is)f(longer)h(than)g(72)i(c)
m(haracters.)382 3325 y Fe(FTPCOM\(unit,comment,)42 b(>)48
b(status\))0 3554 y Fh(3)81 b Fi(Put)24 b(\(app)s(end\))g(a)h(HISTOR)-8
b(Y)25 b(k)m(eyw)m(ord)g(in)m(to)g(the)g(CHU.)g(Multiple)e(HISTOR)-8
b(Y)24 b(k)m(eyw)m(ords)h(will)e(b)s(e)h(written)227
3667 y(if)30 b(the)g(input)f(history)g(string)g(is)h(longer)g(than)g
(72)h(c)m(haracters.)382 3897 y Fe(FTPHIS\(unit,history,)42
b(>)48 b(status\))0 4126 y Fh(4)81 b Fi(Put)36 b(\(app)s(end\))f(the)h
(D)m(A)-8 b(TE)38 b(k)m(eyw)m(ord)f(in)m(to)f(the)g(CHU.)h(The)f(k)m
(eyw)m(ord)g(v)-5 b(alue)36 b(will)e(con)m(tain)j(the)f(curren)m(t)227
4239 y(system)c(date)g(as)g(a)f(c)m(haracter)i(string)e(in)f
('dd/mm/yy')h(format.)44 b(If)31 b(a)h(D)m(A)-8 b(TE)32
b(k)m(eyw)m(ord)g(already)f(exists)227 4352 y(in)j(the)h(header,)i
(then)d(this)g(subroutine)f(will)g(simply)f(up)s(date)j(the)g(k)m(eyw)m
(ord)g(v)-5 b(alue)35 b(in-place)f(with)g(the)227 4465
y(curren)m(t)c(date.)382 4694 y Fe(FTPDAT\(unit,)44 b(>)k(status\))0
4924 y Fh(5)81 b Fi(Put)22 b(\(app)s(end\))f(a)i(new)f(k)m(eyw)m(ord)h
(of)g(the)f(appropriate)g(datat)m(yp)s(e)h(in)m(to)g(the)f(CHU.)h(Note)
h(that)f(FTPKYS)f(will)227 5036 y(only)32 b(write)g(string)f(v)-5
b(alues)32 b(up)f(to)j(68)f(c)m(haracters)h(in)d(length;)i(longer)f
(strings)g(will)d(b)s(e)j(truncated.)47 b(The)227 5149
y(FTPKLS)27 b(routine)g(can)i(b)s(e)f(used)f(to)i(write)e(longer)h
(strings,)g(using)e(a)j(non-standard)e(FITS)h(con)m(v)m(en)m(tion.)227
5262 y(The)23 b(E)h(and)f(D)h(v)m(ersions)f(of)h(this)e(routine)h(ha)m
(v)m(e)i(the)f(added)f(feature)h(that)g(if)f(the)h('decimals')f
(parameter)h(is)227 5375 y(negativ)m(e,)h(then)20 b(the)i('G')g(displa)
m(y)d(format)i(rather)g(then)g(the)g('E')h(format)f(will)e(b)s(e)h
(used)g(when)g(constructing)227 5488 y(the)25 b(k)m(eyw)m(ord)f(v)-5
b(alue,)25 b(taking)f(the)h(absolute)f(v)-5 b(alue)23
b(of)i('decimals')e(for)h(the)g(precision.)37 b(This)22
b(will)g(suppress)227 5601 y(trailing)32 b(zeros,)k(and)d(will)f(use)h
(a)i(\014xed)e(format)h(rather)g(than)f(an)h(exp)s(onen)m(tial)f
(format,)j(dep)s(ending)31 b(on)227 5714 y(the)g(magnitude)e(of)i(the)f
(v)-5 b(alue.)p eop
%%Page: 79 85
79 84 bop 0 299 a Fg(9.4.)72 b(FITS)30 b(HEADER)h(I/O)f(SUBR)m(OUTINES)
2086 b Fi(79)382 555 y Fe(FTPKY[JLS]\(unit,keyword,)o(key)o(val,)o
(comm)o(ent)o(,)42 b(>)47 b(status\))382 668 y
(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o
(nt,)41 b(>)48 b(status\))0 915 y Fh(6)81 b Fi(Put)33
b(\(app)s(end\))h(a)g(string)f(v)-5 b(alued)33 b(k)m(eyw)m(ord)i(in)m
(to)f(the)h(CHU)f(whic)m(h)f(ma)m(y)h(b)s(e)g(longer)g(than)f(68)i(c)m
(haracters)227 1028 y(in)i(length.)63 b(This)36 b(uses)i(the)g(Long)g
(String)f(Keyw)m(ord)h(con)m(v)m(en)m(tion)h(that)f(is)f(describ)s(ed)f
(in)h(the)h("Usage)227 1141 y(Guidelines)30 b(and)h(Suggestions")i
(section)f(of)h(this)e(do)s(cumen)m(t.)46 b(Since)32
b(this)f(uses)h(a)g(non-standard)g(FITS)227 1254 y(con)m(v)m(en)m(tion)
37 b(to)e(enco)s(de)h(the)f(long)g(k)m(eyw)m(ord)g(string,)h(programs)e
(whic)m(h)g(use)h(this)f(routine)g(should)f(also)227
1367 y(call)d(the)g(FTPLSW)g(routine)g(to)h(add)e(some)i(COMMENT)f(k)m
(eyw)m(ords)h(to)g(w)m(arn)f(users)f(of)i(the)f(FITS)g(\014le)227
1480 y(that)36 b(this)e(con)m(v)m(en)m(tion)j(is)d(b)s(eing)g(used.)55
b(FTPLSW)35 b(also)g(writes)g(a)g(k)m(eyw)m(ord)h(called)f(LONGSTRN)f
(to)227 1593 y(record)c(the)h(v)m(ersion)e(of)i(the)f(longstring)f(con)
m(v)m(en)m(tion)i(that)g(has)f(b)s(een)g(used,)f(in)g(case)i(a)g(new)f
(con)m(v)m(en)m(tion)227 1705 y(is)e(adopted)h(at)g(some)g(p)s(oin)m(t)
e(in)h(the)g(future.)40 b(If)28 b(the)g(LONGSTRN)g(k)m(eyw)m(ord)h(is)f
(already)g(presen)m(t)g(in)g(the)227 1818 y(header,)j(then)f(FTPLSW)g
(will)d(simply)h(return)i(and)f(will)f(not)j(write)e(duplicate)g(k)m
(eyw)m(ords.)382 2065 y Fe(FTPKLS\(unit,keyword,keyv)o(al,)o(comm)o
(ent,)41 b(>)47 b(status\))382 2178 y(FTPLSW\(unit,)d(>)k(status\))0
2425 y Fh(7)81 b Fi(Put)30 b(\(app)s(end\))g(a)h(new)f(k)m(eyw)m(ord)h
(with)e(an)i(unde\014ned,)e(or)h(n)m(ull,)f(v)-5 b(alue)30
b(in)m(to)h(the)g(CHU.)g(The)f(v)-5 b(alue)30 b(string)227
2538 y(of)h(the)f(k)m(eyw)m(ord)h(is)f(left)g(blank)f(in)g(this)g
(case.)382 2785 y Fe(FTPKYU\(unit,keyword,comm)o(ent)o(,)42
b(>)47 b(status\))0 3032 y Fh(8)81 b Fi(Put)41 b(\(app)s(end\))g(a)i(n)
m(um)m(b)s(ered)d(sequence)j(of)f(k)m(eyw)m(ords)g(in)m(to)g(the)h
(CHU.)f(One)f(ma)m(y)i(app)s(end)d(the)j(same)227 3145
y(commen)m(t)37 b(to)g(ev)m(ery)g(k)m(eyw)m(ord)g(\(and)f(eliminate)e
(the)j(need)f(to)h(ha)m(v)m(e)g(an)f(arra)m(y)h(of)f(iden)m(tical)f
(commen)m(t)227 3258 y(strings,)i(one)f(for)g(eac)m(h)h(k)m(eyw)m
(ord\))g(b)m(y)f(including)d(the)j(amp)s(ersand)e(c)m(haracter)k(as)e
(the)h(last)f(non-blank)227 3371 y(c)m(haracter)h(in)d(the)i
(\(\014rst\))f(COMMENTS)f(string)g(parameter.)56 b(This)34
b(same)h(string)g(will)d(then)j(b)s(e)g(used)227 3484
y(for)30 b(the)g(commen)m(t)h(\014eld)e(in)f(all)h(the)h(k)m(eyw)m
(ords.)41 b(\(Note)32 b(that)e(the)g(SPP)f(v)m(ersion)h(of)g(these)g
(routines)f(only)227 3597 y(supp)s(orts)g(a)i(single)e(commen)m(t)i
(string\).)382 3844 y Fe(FTPKN[JLS]\(unit,keyroot,)o(sta)o(rtno)o(,no_)
o(key)o(s,ke)o(yval)o(s,c)o(omme)o(nts,)41 b(>)47 b(status\))382
3957 y(FTPKN[EDFG]\(unit,keyroot)o(,st)o(artn)o(o,no)o(_ke)o(ys,k)o
(eyva)o(ls,)o(deci)o(mals)o(,co)o(mmen)o(ts,)41 b(>)907
4070 y(status\))0 4317 y Fh(9)81 b Fi(Cop)m(y)21 b(an)h(indexed)e(k)m
(eyw)m(ord)j(from)e(one)h(HDU)h(to)f(another,)i(mo)s(difying)c(the)i
(index)e(n)m(um)m(b)s(er)g(of)i(the)g(k)m(eyw)m(ord)227
4430 y(name)37 b(in)e(the)h(pro)s(cess.)58 b(F)-8 b(or)37
b(example,)h(this)d(routine)h(could)f(read)h(the)h(TLMIN3)f(k)m(eyw)m
(ord)h(from)f(the)227 4542 y(input)27 b(HDU)i(\(b)m(y)f(giving)f(k)m
(eyro)s(ot)j(=)d("TLMIN")i(and)f(inn)m(um)e(=)i(3\))h(and)f(write)f(it)
h(to)h(the)f(output)g(HDU)227 4655 y(with)35 b(the)h(k)m(eyw)m(ord)h
(name)f(TLMIN4)g(\(b)m(y)g(setting)h(outn)m(um)e(=)h(4\).)58
b(If)36 b(the)g(input)e(k)m(eyw)m(ord)j(do)s(es)f(not)227
4768 y(exist,)31 b(then)f(this)f(routine)g(simply)f(returns)h(without)h
(indicating)e(an)i(error.)382 5015 y Fe(FTCPKYinunit,)44
b(outunit,)i(innum,)g(outnum,)f(keyroot,)h(>)h(status\))0
5262 y Fh(10)f Fi(Put)33 b(\(app)s(end\))f(a)h('triple)f(precision')g
(k)m(eyw)m(ord)h(in)m(to)g(the)h(CHU)f(in)f(F28.16)j(format.)49
b(The)33 b(\015oating)g(p)s(oin)m(t)227 5375 y(k)m(eyw)m(ord)d(v)-5
b(alue)29 b(is)f(constructed)i(b)m(y)f(concatenating)i(the)e(input)f
(in)m(teger)i(v)-5 b(alue)28 b(with)g(the)i(input)d(double)227
5488 y(precision)20 b(fraction)i(v)-5 b(alue)22 b(\(whic)m(h)f(m)m(ust)
h(ha)m(v)m(e)h(a)f(v)-5 b(alue)22 b(b)s(et)m(w)m(een)h(0.0)g(and)e
(1.0\).)40 b(The)21 b(FTGKYT)h(routine)227 5601 y(should)34
b(b)s(e)i(used)f(to)i(read)f(this)e(k)m(eyw)m(ord)j(v)-5
b(alue,)37 b(b)s(ecause)f(the)g(other)h(k)m(eyw)m(ord)f(reading)f
(subroutines)227 5714 y(will)28 b(not)j(preserv)m(e)f(the)h(full)d
(precision)g(of)j(the)f(v)-5 b(alue.)p eop
%%Page: 80 86
80 85 bop 0 299 a Fi(80)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382
555 y Fe(FTPKYT\(unit,keyword,intv)o(al,)o(dblv)o(al,c)o(omm)o(ent,)41
b(>)48 b(status\))0 850 y Fh(11)e Fi(W)-8 b(rite)35 b(k)m(eyw)m(ords)h
(to)f(the)h(CHDU)f(that)h(are)f(de\014ned)f(in)f(an)i(ASCI)s(I)f
(template)h(\014le.)54 b(The)34 b(format)i(of)f(the)227
963 y(template)c(\014le)f(is)f(describ)s(ed)f(under)h(the)i(ftgthd)f
(routine)f(b)s(elo)m(w.)382 1258 y Fe(FTPKTP\(unit,)44
b(filename,)i(>)h(status\))0 1552 y Fh(12)f Fi(App)s(end)28
b(the)i(ph)m(ysical)e(units)h(string)g(to)h(an)g(existing)f(k)m(eyw)m
(ord.)41 b(This)28 b(routine)h(uses)g(a)h(lo)s(cal)g(con)m(v)m(en)m
(tion,)227 1665 y(sho)m(wn)i(in)f(the)i(follo)m(wing)e(example,)i(in)e
(whic)m(h)g(the)i(k)m(eyw)m(ord)g(units)e(are)i(enclosed)f(in)f(square)
h(brac)m(k)m(ets)227 1778 y(in)d(the)i(b)s(eginning)d(of)i(the)h(k)m
(eyw)m(ord)g(commen)m(t)g(\014eld.)239 2073 y Fe(VELOCITY=)809
b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382 2299 y
(FTPUNT\(unit,keyword,unit)o(s,)41 b(>)48 b(status\))0
2630 y Fb(9.4.4)112 b(Insert)38 b(Keyw)m(ord)f(Subroutines)0
2865 y Fh(1)81 b Fi(Insert)26 b(a)h(new)f(k)m(eyw)m(ord)h(record)g(in)m
(to)f(the)h(CHU)g(at)g(the)g(sp)s(eci\014ed)e(p)s(osition)g(\(i.e.,)j
(immediately)d(preceding)227 2978 y(the)34 b(\(k)m(eyno\)th)g(k)m(eyw)m
(ord)g(in)e(the)i(header.\))49 b(This)32 b('insert)g(record')i
(subroutine)d(is)h(somewhat)i(less)f(e\016-)227 3091
y(cien)m(t)27 b(then)g(the)g('app)s(end)e(record')i(subroutine)e
(\(FTPREC\))h(describ)s(ed)f(ab)s(o)m(v)m(e)j(b)s(ecause)f(the)g
(remaining)227 3204 y(k)m(eyw)m(ords)k(in)e(the)i(header)f(ha)m(v)m(e)h
(to)g(b)s(e)f(shifted)f(do)m(wn)h(one)h(slot.)382 3499
y Fe(FTIREC\(unit,key_no,card,)41 b(>)47 b(status\))0
3793 y Fh(2)81 b Fi(Insert)36 b(a)h(new)f(k)m(eyw)m(ord)i(in)m(to)f
(the)g(CHU.)g(The)f(new)g(k)m(eyw)m(ord)i(is)e(inserted)f(immediately)g
(follo)m(wing)h(the)227 3906 y(last)26 b(k)m(eyw)m(ord)h(that)f(has)g
(b)s(een)g(read)g(from)f(the)h(header.)40 b(The)25 b(FTIKLS)g
(subroutine)f(w)m(orks)i(the)g(same)h(as)227 4019 y(the)h(FTIKYS)e
(subroutine,)g(except)j(it)e(also)g(supp)s(orts)f(long)h(string)f(v)-5
b(alues)27 b(greater)h(than)f(68)h(c)m(haracters)227
4132 y(in)35 b(length.)58 b(These)36 b('insert)f(k)m(eyw)m(ord')i
(subroutines)d(are)j(somewhat)g(less)e(e\016cien)m(t)i(then)f(the)g
('app)s(end)227 4245 y(k)m(eyw)m(ord')30 b(subroutines)d(describ)s(ed)g
(ab)s(o)m(v)m(e)j(b)s(ecause)f(the)g(remaining)f(k)m(eyw)m(ords)h(in)f
(the)h(header)g(ha)m(v)m(e)h(to)227 4358 y(b)s(e)g(shifted)f(do)m(wn)h
(one)h(slot.)382 4653 y Fe(FTIKEY\(unit,)44 b(card,)j(>)g(status\))382
4766 y(FTIKY[JLS]\(unit,keyword,)o(key)o(val,)o(comm)o(ent)o(,)42
b(>)47 b(status\))382 4878 y(FTIKLS\(unit,keyword,keyv)o(al,)o(comm)o
(ent,)41 b(>)47 b(status\))382 4991 y(FTIKY[EDFG]\(unit,keyword)o(,ke)o
(yval)o(,dec)o(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0
5286 y Fh(3)81 b Fi(Insert)32 b(a)i(new)f(k)m(eyw)m(ord)h(with)e(an)h
(unde\014ned,)g(or)g(n)m(ull,)f(v)-5 b(alue)33 b(in)m(to)h(the)f(CHU.)h
(The)f(v)-5 b(alue)33 b(string)f(of)i(the)227 5399 y(k)m(eyw)m(ord)d
(is)f(left)g(blank)f(in)g(this)g(case.)382 5694 y Fe
(FTIKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))p
eop
%%Page: 81 87
81 86 bop 0 299 a Fg(9.4.)72 b(FITS)30 b(HEADER)h(I/O)f(SUBR)m(OUTINES)
2086 b Fi(81)0 555 y Fb(9.4.5)112 b(Read)38 b(Keyw)m(ord)g(Subroutines)
0 774 y Fi(These)29 b(routines)e(return)h(the)h(v)-5
b(alue)28 b(of)h(the)g(sp)s(eci\014ed)e(k)m(eyw)m(ord\(s\).)41
b(Wild)28 b(card)g(c)m(haracters)i(\(*,)h(?,)e(or)g(#\))f(ma)m(y)0
887 y(b)s(e)f(used)h(when)f(sp)s(ecifying)f(the)i(name)g(of)g(the)g(k)m
(eyw)m(ord)h(to)g(b)s(e)e(read:)39 b(a)29 b(')10 b(?')40
b(will)25 b(matc)m(h)k(an)m(y)g(single)d(c)m(haracter)0
1000 y(at)38 b(that)g(p)s(osition)d(in)h(the)i(k)m(eyw)m(ord)g(name)f
(and)g(a)g('*')i(will)34 b(matc)m(h)k(an)m(y)g(length)f(\(including)d
(zero\))k(string)f(of)0 1113 y(c)m(haracters.)65 b(The)37
b('#')h(c)m(haracter)h(will)c(matc)m(h)k(an)m(y)f(consecutiv)m(e)h
(string)e(of)h(decimal)f(digits)f(\(0)j(-)f(9\).)64 b(Note)0
1226 y(that)30 b(when)f(a)g(wild)e(card)j(is)e(used)h(in)f(the)i(input)
d(k)m(eyw)m(ord)j(name,)g(the)g(routine)e(will)f(only)i(searc)m(h)h
(for)f(a)h(matc)m(h)0 1339 y(from)h(the)h(curren)m(t)g(header)g(p)s
(osition)e(to)i(the)h(end)e(of)h(the)g(header.)45 b(It)32
b(will)d(not)j(resume)g(the)g(searc)m(h)g(from)g(the)0
1452 y(top)i(of)h(the)f(header)g(bac)m(k)h(to)g(the)f(original)e
(header)i(p)s(osition)e(as)j(is)e(done)h(when)f(no)h(wildcards)d(are)k
(included)0 1564 y(in)e(the)h(k)m(eyw)m(ord)h(name.)52
b(If)33 b(the)h(desired)f(k)m(eyw)m(ord)i(string)e(is)g(8-c)m
(haracters)j(long)e(\(the)g(maxim)m(um)f(length)h(of)0
1677 y(a)i(k)m(eyw)m(ord)g(name\))g(then)g(a)g('*')g(ma)m(y)h(b)s(e)e
(app)s(ended)f(as)h(the)h(nin)m(th)f(c)m(haracter)i(of)f(the)f(input)f
(name)i(to)g(force)0 1790 y(the)31 b(k)m(eyw)m(ord)g(searc)m(h)h(to)f
(stop)g(at)g(the)g(end)f(of)h(the)g(header)g(\(e.g.,)i('COMMENT)d(*')i
(will)c(searc)m(h)j(for)g(the)g(next)0 1903 y(COMMENT)37
b(k)m(eyw)m(ord\).)64 b(The)37 b(\013grec)i(routine)e(ma)m(y)h(b)s(e)f
(used)g(to)i(set)f(the)g(starting)f(p)s(osition)f(when)h(doing)0
2016 y(wild)28 b(card)i(searc)m(hes.)0 2264 y Fh(1)81
b Fi(Get)37 b(the)f(n)m(th)f(80-c)m(haracter)k(header)d(record)g(from)f
(the)h(CHU.)h(The)e(\014rst)g(k)m(eyw)m(ord)i(in)d(the)i(header)g(is)f
(at)227 2377 y(k)m(ey)p 365 2377 28 4 v 34 w(no)42 b(=)f(1;)49
b(if)41 b(k)m(ey)p 996 2377 V 34 w(no)h(=)f(0)i(then)e(this)g
(subroutine)f(simple)g(mo)m(v)m(es)k(the)e(in)m(ternal)f(p)s(oin)m(ter)
g(to)i(the)227 2490 y(b)s(eginning)33 b(of)j(the)g(header)f(so)h(that)g
(subsequen)m(t)f(k)m(eyw)m(ord)h(op)s(erations)f(will)e(start)j(at)g
(the)g(top)g(of)g(the)227 2603 y(header;)31 b(it)f(also)g(returns)f(a)i
(blank)e(card)h(v)-5 b(alue)30 b(in)f(this)g(case.)382
2850 y Fe(FTGREC\(unit,key_no,)42 b(>)48 b(card,status\))0
3098 y Fh(2)81 b Fi(Get)31 b(the)g(name,)f(v)-5 b(alue)30
b(\(as)h(a)g(string\),)f(and)g(commen)m(t)i(of)e(the)h(n)m(th)f(k)m
(eyw)m(ord)h(in)e(CHU.)i(This)e(routine)g(also)227 3211
y(c)m(hec)m(ks)i(that)f(the)g(returned)e(k)m(eyw)m(ord)i(name)f(\(KEYW)
m(ORD\))i(con)m(tains)f(only)e(legal)h(ASCI)s(I)f(c)m(haracters.)227
3324 y(Call)h(FTGREC)h(and)g(FTPSV)m(C)g(to)h(b)m(ypass)f(this)f(error)
h(c)m(hec)m(k.)382 3572 y Fe(FTGKYN\(unit,key_no,)42
b(>)48 b(keyword,value,comment,st)o(atu)o(s\))0 3819
y Fh(3)81 b Fi(Get)31 b(the)g(80-c)m(haracter)i(header)d(record)g(for)g
(the)h(named)f(k)m(eyw)m(ord)382 4067 y Fe(FTGCRD\(unit,keyword,)42
b(>)48 b(card,status\))0 4315 y Fh(4)81 b Fi(Get)26 b(the)f(next)h(k)m
(eyw)m(ord)f(whose)g(name)h(matc)m(hes)g(one)f(of)h(the)f(strings)f(in)
g('inclist')g(but)g(do)s(es)h(not)g(matc)m(h)i(an)m(y)227
4428 y(of)32 b(the)f(strings)f(in)g('exclist'.)43 b(The)30
b(strings)g(in)g(inclist)f(and)i(exclist)f(ma)m(y)i(con)m(tain)g(wild)c
(card)j(c)m(haracters)227 4541 y(\(*,)38 b(?,)e(and)e(#\))i(as)f
(describ)s(ed)e(at)j(the)f(b)s(eginning)d(of)k(this)e(section.)55
b(This)33 b(routine)h(searc)m(hes)i(from)f(the)227 4654
y(curren)m(t)28 b(header)f(p)s(osition)f(to)i(the)g(end)f(of)h(the)g
(header,)g(only)-8 b(,)28 b(and)f(do)s(es)g(not)h(con)m(tin)m(ue)g(the)
g(searc)m(h)g(from)227 4767 y(the)41 b(top)g(of)g(the)g(header)g(bac)m
(k)h(to)f(the)g(original)e(p)s(osition.)71 b(The)40 b(curren)m(t)h
(header)f(p)s(osition)f(ma)m(y)j(b)s(e)227 4880 y(reset)33
b(with)d(the)i(ftgrec)h(routine.)43 b(Note)33 b(that)g(nexc)f(ma)m(y)g
(b)s(e)f(set)h(=)g(0)g(if)e(there)i(are)g(no)g(k)m(eyw)m(ords)g(to)h(b)
s(e)227 4993 y(excluded.)40 b(This)28 b(routine)i(returns)f(status)i(=)
f(202)h(if)f(a)g(matc)m(hing)h(k)m(eyw)m(ord)g(is)e(not)i(found.)382
5240 y Fe(FTGNXK\(unit,inclist,ninc)o(,ex)o(clis)o(t,ne)o(xc,)41
b(>)48 b(card,status\))0 5488 y Fh(5)81 b Fi(Get)30 b(the)g(literal)f
(k)m(eyw)m(ord)h(v)-5 b(alue)29 b(as)h(a)g(c)m(haracter)i(string.)39
b(Regardless)30 b(of)g(the)g(datat)m(yp)s(e)g(of)g(the)g(k)m(eyw)m
(ord,)227 5601 y(this)36 b(routine)g(simply)f(returns)h(the)h(string)f
(of)h(c)m(haracters)i(in)c(the)j(v)-5 b(alue)36 b(\014eld)g(of)h(the)g
(k)m(eyw)m(ord)h(along)227 5714 y(with)29 b(the)i(commen)m(t)g
(\014eld.)p eop
%%Page: 82 88
82 87 bop 0 299 a Fi(82)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382
555 y Fe(FTGKEY\(unit,keyword,)42 b(>)48 b(value,comment,status\))0
817 y Fh(6)81 b Fi(Get)31 b(a)g(k)m(eyw)m(ord)g(v)-5
b(alue)29 b(\(with)h(the)g(appropriate)g(datat)m(yp)s(e\))h(and)f
(commen)m(t)i(from)e(the)g(CHU)382 1079 y Fe(FTGKY[EDJLS]\(unit,keywor)
o(d,)41 b(>)48 b(keyval,comment,status\))0 1341 y Fh(7)81
b Fi(Get)24 b(a)g(sequence)g(of)g(n)m(um)m(b)s(ered)e(k)m(eyw)m(ord)i
(v)-5 b(alues.)37 b(These)24 b(routines)e(do)h(not)h(supp)s(ort)e(wild)
f(card)i(c)m(haracters)227 1454 y(in)29 b(the)i(ro)s(ot)g(name.)382
1716 y Fe(FTGKN[EDJLS]\(unit,keyroo)o(t,s)o(tart)o(no,m)o(ax_)o(keys)o
(,)42 b(>)47 b(keyvals,nfound,status\))0 1977 y Fh(8)81
b Fi(Get)27 b(the)f(v)-5 b(alue)25 b(of)i(a)f(\015oating)g(p)s(oin)m(t)
f(k)m(eyw)m(ord,)j(returning)c(the)i(in)m(teger)g(and)g(fractional)f
(parts)h(of)g(the)g(v)-5 b(alue)227 2090 y(in)31 b(separate)h
(subroutine)e(argumen)m(ts.)45 b(This)30 b(subroutine)f(ma)m(y)k(b)s(e)
e(used)g(to)h(read)g(an)m(y)g(k)m(eyw)m(ord)g(but)f(is)227
2203 y(esp)s(ecially)e(useful)f(for)j(reading)e(the)i('triple)e
(precision')f(k)m(eyw)m(ords)j(written)f(b)m(y)g(FTPKYT.)382
2465 y Fe(FTGKYT\(unit,keyword,)42 b(>)48 b(intval,dblval,comment,s)o
(tat)o(us\))0 2727 y Fh(9)81 b Fi(Get)24 b(the)g(ph)m(ysical)f(units)f
(string)g(in)h(an)g(existing)g(k)m(eyw)m(ord.)39 b(This)22
b(routine)h(uses)g(a)h(lo)s(cal)f(con)m(v)m(en)m(tion,)k(sho)m(wn)227
2840 y(in)32 b(the)i(follo)m(wing)d(example,)j(in)e(whic)m(h)g(the)h(k)
m(eyw)m(ord)h(units)e(are)h(enclosed)g(in)f(square)h(brac)m(k)m(ets)i
(in)d(the)227 2953 y(b)s(eginning)g(of)j(the)g(k)m(eyw)m(ord)g(commen)m
(t)h(\014eld.)52 b(A)35 b(blank)f(string)f(is)h(returned)g(if)f(no)i
(units)e(are)i(de\014ned)227 3066 y(for)30 b(the)h(k)m(eyw)m(ord.)191
3328 y Fe(VELOCITY=)809 b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382
3553 y(FTGUNT\(unit,keyword,)c(>)48 b(units,status\))0
3846 y Fb(9.4.6)112 b(Mo)s(dify)38 b(Keyw)m(ord)f(Subroutines)0
4066 y Fi(Wild)30 b(card)h(c)m(haracters,)j(as)e(describ)s(ed)d(in)h
(the)i(Read)g(Keyw)m(ord)f(section,)h(ab)s(o)m(v)m(e,)h(ma)m(y)g(b)s(e)
d(used)h(when)g(sp)s(eci-)0 4179 y(fying)e(the)i(name)f(of)h(the)f(k)m
(eyw)m(ord)h(to)g(b)s(e)f(mo)s(di\014ed.)0 4441 y Fh(1)81
b Fi(Mo)s(dify)29 b(\(o)m(v)m(erwrite\))i(the)g(n)m(th)f(80-c)m
(haracter)j(header)d(record)h(in)e(the)h(CHU)382 4702
y Fe(FTMREC\(unit,key_no,card,)41 b(>)47 b(status\))0
4964 y Fh(2)81 b Fi(Mo)s(dify)36 b(\(o)m(v)m(erwrite\))j(the)f(80-c)m
(haracter)j(header)c(record)h(for)f(the)h(named)f(k)m(eyw)m(ord)h(in)f
(the)h(CHU.)g(This)227 5077 y(can)31 b(b)s(e)f(used)f(to)i(o)m(v)m
(erwrite)g(the)g(name)f(of)h(the)f(k)m(eyw)m(ord)h(as)g(w)m(ell)e(as)i
(its)f(v)-5 b(alue)29 b(and)h(commen)m(t)i(\014elds.)382
5339 y Fe(FTMCRD\(unit,keyword,card)o(,)42 b(>)47 b(status\))0
5601 y Fh(3)81 b Fi(Mo)s(dify)32 b(\(o)m(v)m(erwrite\))k(the)e(name)g
(of)h(an)f(existing)f(k)m(eyw)m(ord)h(in)f(the)i(CHU)f(preserving)e
(the)j(curren)m(t)e(v)-5 b(alue)227 5714 y(and)30 b(commen)m(t)h
(\014elds.)p eop
%%Page: 83 89
83 88 bop 0 299 a Fg(9.4.)72 b(FITS)30 b(HEADER)h(I/O)f(SUBR)m(OUTINES)
2086 b Fi(83)382 555 y Fe(FTMNAM\(unit,oldkey,keywo)o(rd,)41
b(>)48 b(status\))0 823 y Fh(4)81 b Fi(Mo)s(dify)29 b(\(o)m(v)m
(erwrite\))i(the)g(commen)m(t)g(\014eld)e(of)i(an)f(existing)f(k)m(eyw)
m(ord)i(in)e(the)i(CHU)382 1091 y Fe(FTMCOM\(unit,keyword,comm)o(ent)o
(,)42 b(>)47 b(status\))0 1358 y Fh(5)81 b Fi(Mo)s(dify)23
b(the)i(v)-5 b(alue)24 b(and)g(commen)m(t)i(\014elds)d(of)i(an)f
(existing)g(k)m(eyw)m(ord)h(in)e(the)i(CHU.)g(The)f(FTMKLS)g(subrou-)
227 1471 y(tine)34 b(w)m(orks)f(the)h(same)h(as)f(the)g(FTMKYS)f
(subroutine,)g(except)i(it)f(also)f(supp)s(orts)f(long)i(string)f(v)-5
b(alues)227 1584 y(greater)38 b(than)f(68)h(c)m(haracters)g(in)e
(length.)59 b(Optionally)-8 b(,)37 b(one)g(ma)m(y)h(mo)s(dify)d(only)h
(the)h(v)-5 b(alue)36 b(\014eld)g(and)227 1697 y(lea)m(v)m(e)31
b(the)e(commen)m(t)i(\014eld)d(unc)m(hanged)h(b)m(y)g(setting)g(the)h
(input)d(COMMENT)i(parameter)h(equal)f(to)h(the)227 1810
y(amp)s(ersand)f(c)m(haracter)k(\(&\).)42 b(The)30 b(E)g(and)g(D)h(v)m
(ersions)f(of)h(this)f(routine)f(ha)m(v)m(e)j(the)f(added)f(feature)h
(that)227 1923 y(if)25 b(the)i('decimals')e(parameter)i(is)e(negativ)m
(e,)k(then)d(the)g('G')h(displa)m(y)d(format)j(rather)f(then)g(the)g
('E')h(format)227 2036 y(will)f(b)s(e)i(used)f(when)h(constructing)g
(the)g(k)m(eyw)m(ord)h(v)-5 b(alue,)29 b(taking)f(the)h(absolute)f(v)-5
b(alue)28 b(of)g('decimals')g(for)227 2149 y(the)37 b(precision.)58
b(This)34 b(will)g(suppress)h(trailing)f(zeros,)39 b(and)d(will)e(use)j
(a)g(\014xed)e(format)i(rather)g(than)f(an)227 2262 y(exp)s(onen)m
(tial)30 b(format,)h(dep)s(ending)c(on)k(the)f(magnitude)g(of)g(the)h
(v)-5 b(alue.)382 2530 y Fe(FTMKY[JLS]\(unit,keyword,)o(key)o(val,)o
(comm)o(ent)o(,)42 b(>)47 b(status\))382 2642 y
(FTMKLS\(unit,keyword,keyv)o(al,)o(comm)o(ent,)41 b(>)47
b(status\))382 2755 y(FTMKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o
(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0 3023
y Fh(6)81 b Fi(Mo)s(dify)21 b(the)h(v)-5 b(alue)22 b(of)g(an)g
(existing)g(k)m(eyw)m(ord)g(to)h(b)s(e)f(unde\014ned,)g(or)g(n)m(ull.)
36 b(The)22 b(v)-5 b(alue)21 b(string)h(of)g(the)g(k)m(eyw)m(ord)227
3136 y(is)29 b(set)i(to)g(blank.)39 b(Optionally)-8 b(,)28
b(one)i(ma)m(y)h(lea)m(v)m(e)g(the)g(commen)m(t)g(\014eld)d(unc)m
(hanged)i(b)m(y)g(setting)g(the)g(input)227 3249 y(COMMENT)g(parameter)
h(equal)f(to)h(the)g(amp)s(ersand)e(c)m(haracter)j(\(&\).)382
3517 y Fe(FTMKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47
b(status\))0 3817 y Fb(9.4.7)112 b(Up)s(date)39 b(Keyw)m(ord)e
(Subroutines)0 4032 y Fh(1)81 b Fi(Up)s(date)36 b(an)g(80-c)m(haracter)
j(record)d(in)f(the)i(CHU.)f(If)g(the)g(sp)s(eci\014ed)f(k)m(eyw)m(ord)
i(already)e(exists)h(then)g(that)227 4144 y(header)j(record)f(will)e(b)
s(e)i(replaced)h(with)e(the)i(input)e(CARD)h(string.)65
b(If)38 b(it)h(do)s(es)f(not)h(exist)f(then)h(the)227
4257 y(new)f(record)g(will)d(b)s(e)i(added)h(to)g(the)g(header.)64
b(The)37 b(FTUKLS)g(subroutine)f(w)m(orks)i(the)g(same)h(as)f(the)227
4370 y(FTUKYS)28 b(subroutine,)f(except)j(it)e(also)h(supp)s(orts)d
(long)i(string)g(v)-5 b(alues)28 b(greater)i(than)e(68)h(c)m(haracters)
h(in)227 4483 y(length.)382 4751 y Fe(FTUCRD\(unit,keyword,card)o(,)42
b(>)47 b(status\))0 5019 y Fh(2)81 b Fi(Up)s(date)44
b(the)i(v)-5 b(alue)44 b(and)h(commen)m(t)h(\014elds)d(of)i(a)h(k)m
(eyw)m(ord)f(in)f(the)h(CHU.)h(The)e(sp)s(eci\014ed)f(k)m(eyw)m(ord)j
(is)227 5132 y(mo)s(di\014ed)37 b(if)g(it)h(already)g(exists)g(\(b)m(y)
h(calling)e(FTMKYx\))i(otherwise)e(a)i(new)f(k)m(eyw)m(ord)h(is)f
(created)h(b)m(y)227 5245 y(calling)c(FTPKYx.)58 b(The)36
b(E)g(and)f(D)i(v)m(ersions)e(of)i(this)e(routine)g(ha)m(v)m(e)i(the)g
(added)e(feature)i(that)g(if)e(the)227 5357 y('decimals')30
b(parameter)i(is)e(negativ)m(e,)i(then)e(the)h('G')h(displa)m(y)d
(format)i(rather)g(then)f(the)h('E')g(format)h(will)227
5470 y(b)s(e)41 b(used)f(when)h(constructing)g(the)g(k)m(eyw)m(ord)h(v)
-5 b(alue,)44 b(taking)d(the)g(absolute)g(v)-5 b(alue)41
b(of)h('decimals')e(for)227 5583 y(the)d(precision.)58
b(This)34 b(will)g(suppress)h(trailing)f(zeros,)39 b(and)d(will)e(use)j
(a)g(\014xed)e(format)i(rather)g(than)f(an)227 5696 y(exp)s(onen)m
(tial)30 b(format,)h(dep)s(ending)c(on)k(the)f(magnitude)g(of)g(the)h
(v)-5 b(alue.)p eop
%%Page: 84 90
84 89 bop 0 299 a Fi(84)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382
555 y Fe(FTUKY[JLS]\(unit,keyword,)o(key)o(val,)o(comm)o(ent)o(,)42
b(>)47 b(status\))382 668 y(FTUKLS\(unit,keyword,keyv)o(al,)o(comm)o
(ent,)41 b(>)47 b(status\))382 781 y(FTUKY[EDFG]\(unit,keyword)o(,ke)o
(yval)o(,dec)o(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0
1044 y Fh(3)81 b Fi(Up)s(date)23 b(the)g(v)-5 b(alue)23
b(of)h(an)f(existing)g(k)m(eyw)m(ord)h(to)g(b)s(e)f(unde\014ned,)f(or)i
(n)m(ull,)f(or)g(insert)g(a)g(new)g(unde\014ned-v)-5
b(alue)227 1157 y(k)m(eyw)m(ord)30 b(if)e(it)h(do)s(esn't)g(already)g
(exist.)40 b(The)29 b(v)-5 b(alue)29 b(string)f(of)h(the)h(k)m(eyw)m
(ord)f(is)g(left)g(blank)f(in)f(this)i(case.)382 1420
y Fe(FTUKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0
1715 y Fb(9.4.8)112 b(Delete)37 b(Keyw)m(ord)g(Subroutines)0
1927 y Fh(1)81 b Fi(Delete)31 b(an)f(existing)f(k)m(eyw)m(ord)i
(record.)40 b(The)30 b(space)h(previously)d(o)s(ccupied)h(b)m(y)h(the)g
(k)m(eyw)m(ord)h(is)e(reclaimed)227 2040 y(b)m(y)d(mo)m(ving)g(all)f
(the)h(follo)m(wing)f(header)h(records)g(up)f(one)h(ro)m(w)h(in)d(the)j
(header.)39 b(The)25 b(\014rst)h(routine)f(deletes)227
2153 y(a)34 b(k)m(eyw)m(ord)f(at)h(a)g(sp)s(eci\014ed)d(p)s(osition)g
(in)h(the)h(header)g(\(the)h(\014rst)e(k)m(eyw)m(ord)i(is)e(at)i(p)s
(osition)d(1\),)k(whereas)227 2266 y(the)d(second)g(routine)f(deletes)h
(a)g(sp)s(eci\014cally)d(named)i(k)m(eyw)m(ord.)46 b(Wild)30
b(card)h(c)m(haracters,)j(as)e(describ)s(ed)227 2378
y(in)e(the)h(Read)g(Keyw)m(ord)f(section,)h(ab)s(o)m(v)m(e,)h(ma)m(y)g
(b)s(e)e(used)g(when)f(sp)s(ecifying)g(the)i(name)g(of)g(the)f(k)m(eyw)
m(ord)227 2491 y(to)h(b)s(e)f(deleted)g(\(b)s(e)g(careful!\).)382
2755 y Fe(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382
2867 y(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 3205
y Fd(9.5)135 b(Data)46 b(Scaling)g(and)e(Unde\014ned)h(Pixel)h(P)l
(arameters)0 3456 y Fi(These)24 b(subroutines)e(de\014ne)i(or)h(mo)s
(dify)d(the)j(in)m(ternal)e(parameters)i(used)f(b)m(y)g(FITSIO)g(to)h
(either)f(scale)h(the)f(data)0 3569 y(or)33 b(to)i(represen)m(t)e
(unde\014ned)e(pixels.)48 b(Generally)33 b(FITSIO)f(will)f(scale)i(the)
h(data)g(according)f(to)h(the)g(v)-5 b(alues)33 b(of)0
3682 y(the)f(BSCALE)g(and)f(BZER)m(O)h(\(or)h(TSCALn)d(and)i(TZER)m
(On\))f(k)m(eyw)m(ords,)i(ho)m(w)m(ev)m(er)h(these)e(subroutines)e(ma)m
(y)0 3795 y(b)s(e)i(used)h(to)h(o)m(v)m(erride)f(the)g(k)m(eyw)m(ord)h
(v)-5 b(alues.)48 b(This)31 b(ma)m(y)j(b)s(e)f(useful)e(when)h(one)i(w)
m(an)m(ts)f(to)h(read)f(or)g(write)g(the)0 3908 y(ra)m(w)d(unscaled)e
(v)-5 b(alues)28 b(in)h(the)g(FITS)g(\014le.)39 b(Similarly)-8
b(,)27 b(FITSIO)h(generally)h(uses)g(the)g(v)-5 b(alue)29
b(of)h(the)f(BLANK)h(or)0 4021 y(TNULLn)35 b(k)m(eyw)m(ord)h(to)g
(signify)d(an)j(unde\014ned)d(pixel,)i(but)g(these)h(routines)f(ma)m(y)
h(b)s(e)e(used)h(to)h(o)m(v)m(erride)g(this)0 4134 y(v)-5
b(alue.)40 b(These)30 b(subroutines)e(do)j(not)f(create)i(or)f(mo)s
(dify)d(the)j(corresp)s(onding)d(header)i(k)m(eyw)m(ord)h(v)-5
b(alues.)0 4397 y Fh(1)81 b Fi(Reset)26 b(the)g(scaling)e(factors)i(in)
e(the)i(primary)e(arra)m(y)i(or)f(image)h(extension;)h(do)s(es)e(not)g
(c)m(hange)i(the)f(BSCALE)227 4510 y(and)i(BZER)m(O)g(k)m(eyw)m(ord)h
(v)-5 b(alues)27 b(and)h(only)f(a\013ects)j(the)e(automatic)i(scaling)d
(p)s(erformed)g(when)g(the)h(data)227 4623 y(elemen)m(ts)e(are)g
(written/read)f(to/from)h(the)g(FITS)f(\014le.)38 b(When)25
b(reading)g(from)g(a)h(FITS)f(\014le)f(the)i(returned)227
4736 y(data)i(v)-5 b(alue)27 b(=)g(\(the)h(v)-5 b(alue)27
b(giv)m(en)h(in)e(the)h(FITS)g(arra)m(y\))h(*)g(BSCALE)f(+)g(BZER)m(O.)
g(The)g(in)m(v)m(erse)h(form)m(ula)227 4849 y(is)33 b(used)g(when)g
(writing)f(data)j(v)-5 b(alues)33 b(to)h(the)g(FITS)g(\014le.)50
b(\(NOTE:)34 b(BSCALE)f(and)g(BZER)m(O)h(m)m(ust)g(b)s(e)227
4962 y(declared)c(as)h(Double)f(Precision)f(v)-5 b(ariables\).)382
5225 y Fe(FTPSCL\(unit,bscale,bzero)o(,)42 b(>)47 b(status\))0
5488 y Fh(2)81 b Fi(Reset)39 b(the)f(scaling)g(parameters)g(for)h(a)f
(table)g(column;)k(do)s(es)c(not)g(c)m(hange)i(the)e(TSCALn)f(or)h
(TZER)m(On)227 5601 y(k)m(eyw)m(ord)29 b(v)-5 b(alues)28
b(and)f(only)h(a\013ects)h(the)g(automatic)g(scaling)e(p)s(erformed)g
(when)g(the)i(data)g(elemen)m(ts)g(are)227 5714 y(written/read)i
(to/from)h(the)g(FITS)f(\014le.)43 b(When)31 b(reading)f(from)h(a)h
(FITS)f(\014le)f(the)i(returned)e(data)i(v)-5 b(alue)p
eop
%%Page: 85 91
85 90 bop 0 299 a Fg(9.6.)72 b(FITS)30 b(PRIMAR)-8 b(Y)31
b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)e(I/O)i(SUBR)m(OUTINES)589
b Fi(85)227 555 y(=)40 b(\(the)h(v)-5 b(alue)39 b(giv)m(en)h(in)f(the)h
(FITS)g(arra)m(y\))g(*)h(TSCAL)e(+)g(TZER)m(O.)h(The)f(in)m(v)m(erse)h
(form)m(ula)g(is)f(used)227 668 y(when)33 b(writing)f(data)j(v)-5
b(alues)34 b(to)g(the)h(FITS)e(\014le.)51 b(\(NOTE:)34
b(TSCAL)f(and)g(TZER)m(O)g(m)m(ust)h(b)s(e)f(declared)227
781 y(as)e(Double)f(Precision)f(v)-5 b(ariables\).)382
1041 y Fe(FTTSCL\(unit,colnum,tscal)o(,tz)o(ero,)41 b(>)48
b(status\))0 1300 y Fh(3)81 b Fi(De\014ne)36 b(the)g(in)m(teger)h(v)-5
b(alue)35 b(to)i(b)s(e)e(used)h(to)h(signify)d(unde\014ned)g(pixels)g
(in)h(the)h(primary)e(arra)m(y)j(or)f(image)227 1413
y(extension.)53 b(This)33 b(is)g(only)h(used)g(if)f(BITPIX)h(=)h(8,)h
(16,)g(or)f(32.)54 b(This)33 b(do)s(es)h(not)h(create)h(or)e(c)m(hange)
i(the)227 1526 y(v)-5 b(alue)30 b(of)h(the)f(BLANK)h(k)m(eyw)m(ord)g
(in)e(the)h(header.)382 1786 y Fe(FTPNUL\(unit,blank,)43
b(>)k(status\))0 2046 y Fh(4)81 b Fi(De\014ne)36 b(the)g(string)f(to)h
(b)s(e)f(used)g(to)i(signify)d(unde\014ned)g(pixels)g(in)g(a)i(column)f
(in)g(an)g(ASCI)s(I)g(table.)57 b(This)227 2158 y(do)s(es)30
b(not)h(create)h(or)e(c)m(hange)i(the)e(v)-5 b(alue)30
b(of)h(the)f(TNULLn)g(k)m(eyw)m(ord.)382 2418 y Fe
(FTSNUL\(unit,colnum,snull)41 b(>)47 b(status\))0 2678
y Fh(5)81 b Fi(De\014ne)34 b(the)h(v)-5 b(alue)33 b(to)i(b)s(e)f(used)g
(to)h(signify)d(unde\014ned)g(pixels)h(in)g(an)h(in)m(teger)h(column)e
(in)g(a)h(binary)f(table)227 2791 y(\(where)c(TF)m(ORMn)f(=)g('B',)i
('I',)f(or)f('J'\).)i(This)c(do)s(es)j(not)f(create)j(or)d(c)m(hange)i
(the)e(v)-5 b(alue)28 b(of)h(the)g(TNULLn)227 2904 y(k)m(eyw)m(ord.)382
3163 y Fe(FTTNUL\(unit,colnum,tnull)41 b(>)47 b(status\))0
3497 y Fd(9.6)135 b(FITS)44 b(Primary)h(Arra)l(y)g(or)g(IMA)l(GE)g
(Extension)h(I/O)f(Subroutines)0 3747 y Fi(These)26 b(subroutines)e
(put)i(or)h(get)g(data)h(v)-5 b(alues)25 b(in)h(the)g(primary)f(data)i
(arra)m(y)g(\(i.e.,)h(the)f(\014rst)f(HDU)h(in)e(the)i(FITS)0
3860 y(\014le\))34 b(or)h(an)f(IMA)m(GE)i(extension.)53
b(The)34 b(data)i(arra)m(y)f(is)e(represen)m(ted)i(as)g(a)g(single)e
(one-dimensional)g(arra)m(y)i(of)0 3973 y(pixels)f(regardless)i(of)g
(the)g(actual)g(dimensionalit)m(y)d(of)k(the)f(arra)m(y)-8
b(,)38 b(and)e(the)g(FPIXEL)g(parameter)g(giv)m(es)h(the)0
4086 y(p)s(osition)26 b(within)e(this)j(1-D)h(arra)m(y)g(of)g(the)g
(\014rst)e(pixel)g(to)i(read)g(or)f(write.)39 b(Automatic)28
b(data)g(t)m(yp)s(e)g(con)m(v)m(ersion)g(is)0 4199 y(p)s(erformed)h
(for)i(n)m(umeric)f(data)h(\(except)i(for)d(complex)h(data)g(t)m(yp)s
(es\))h(if)e(the)h(data)g(t)m(yp)s(e)g(of)g(the)g(primary)e(arra)m(y)0
4312 y(\(de\014ned)f(b)m(y)g(the)h(BITPIX)f(k)m(eyw)m(ord\))h
(di\013ers)f(from)g(the)g(data)i(t)m(yp)s(e)e(of)h(the)g(arra)m(y)g(in)
e(the)i(calling)e(subroutine.)0 4425 y(The)41 b(data)i(v)-5
b(alues)41 b(are)h(also)g(scaled)f(b)m(y)h(the)g(BSCALE)f(and)g(BZER)m
(O)h(header)f(v)-5 b(alues)41 b(as)h(they)g(are)g(b)s(eing)0
4538 y(written)31 b(or)h(read)g(from)g(the)g(FITS)g(arra)m(y)-8
b(.)47 b(The)31 b(ftpscl)h(subroutine)e(MUST)h(b)s(e)h(called)f(to)i
(de\014ne)e(the)i(scaling)0 4650 y(parameters)h(when)e(writing)g(data)i
(to)g(the)g(FITS)f(arra)m(y)h(or)f(to)h(o)m(v)m(erride)g(the)g(default)
e(scaling)h(v)-5 b(alue)33 b(giv)m(en)g(in)0 4763 y(the)e(header)f
(when)f(reading)h(the)g(FITS)g(arra)m(y)-8 b(.)0 4924
y(Tw)m(o)41 b(sets)f(of)h(subroutines)d(are)j(pro)m(vided)e(to)i(read)g
(the)f(data)i(arra)m(y)f(whic)m(h)e(di\013er)g(in)g(the)i(w)m(a)m(y)g
(unde\014ned)0 5036 y(pixels)33 b(are)j(handled.)54 b(The)35
b(\014rst)f(set)i(of)g(routines)e(\(FTGPVx\))i(simply)d(return)h(an)h
(arra)m(y)h(of)g(data)g(elemen)m(ts)0 5149 y(in)31 b(whic)m(h)g
(unde\014ned)f(pixels)g(are)j(set)f(equal)g(to)h(a)g(v)-5
b(alue)31 b(sp)s(eci\014ed)g(b)m(y)h(the)g(user)g(in)f(the)h('n)m(ullv)
-5 b(al')30 b(parameter.)0 5262 y(An)k(additional)f(feature)i(of)f
(these)h(subroutines)e(is)g(that)j(if)d(the)i(user)f(sets)h(n)m(ullv)-5
b(al)32 b(=)i(0,)i(then)f(no)f(c)m(hec)m(ks)i(for)0 5375
y(unde\014ned)d(pixels)h(will)f(b)s(e)h(p)s(erformed,)i(th)m(us)f
(increasing)f(the)i(sp)s(eed)e(of)i(the)g(program.)55
b(The)35 b(second)h(set)g(of)0 5488 y(routines)30 b(\(FTGPFx\))j
(returns)d(the)i(data)g(elemen)m(t)g(arra)m(y)g(and,)f(in)g(addition,)f
(a)i(logical)f(arra)m(y)h(whic)m(h)e(de\014nes)0 5601
y(whether)40 b(the)g(corresp)s(onding)e(data)j(pixel)e(is)g
(unde\014ned.)69 b(The)39 b(latter)i(set)g(of)f(subroutines)e(ma)m(y)j
(b)s(e)f(more)0 5714 y(con)m(v)m(enien)m(t)32 b(to)h(use)e(in)f(some)h
(circumstances,)h(ho)m(w)m(ev)m(er,)h(it)e(requires)f(an)h(additional)e
(arra)m(y)j(of)g(logical)f(v)-5 b(alues)p eop
%%Page: 86 92
86 91 bop 0 299 a Fi(86)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0
555 y Fi(whic)m(h)35 b(can)h(b)s(e)g(un)m(wieldy)d(when)j(w)m(orking)f
(with)g(large)h(data)h(arra)m(ys.)58 b(Also)36 b(for)g(programmer)g
(con)m(v)m(enience,)0 668 y(sets)j(of)g(subroutines)e(to)i(directly)f
(read)g(or)h(write)f(2)h(and)g(3)g(dimensional)d(arra)m(ys)j(ha)m(v)m
(e)h(b)s(een)e(pro)m(vided,)i(as)0 781 y(w)m(ell)29 b(as)h(a)g(set)g
(of)g(subroutines)d(to)j(read)g(or)g(write)e(an)m(y)i(con)m(tiguous)g
(rectangular)g(subset)f(of)h(pixels)e(within)f(the)0
894 y(n-dimensional)g(arra)m(y)-8 b(.)0 1150 y Fh(1)81
b Fi(Get)30 b(the)g(data)g(t)m(yp)s(e)f(of)h(the)g(image)f(\(=)h
(BITPIX)f(v)-5 b(alue\).)40 b(P)m(ossible)28 b(returned)g(v)-5
b(alues)29 b(are:)41 b(8,)30 b(16,)h(32,)g(-32,)227 1263
y(or)f(-64)h(corresp)s(onding)d(to)j(unsigned)d(b)m(yte,)j(signed)e
(2-b)m(yte)i(in)m(teger,)g(signed)e(4-b)m(yte)i(in)m(teger,)g(real,)f
(and)227 1376 y(double.)227 1525 y(The)c(second)f(subroutine)f(is)h
(similar)e(to)j(FTGIDT,)h(except)f(that)h(if)e(the)g(image)i(pixel)d(v)
-5 b(alues)25 b(are)h(scaled,)227 1638 y(with)g(non-default)g(v)-5
b(alues)26 b(for)h(the)h(BZER)m(O)f(and)f(BSCALE)g(k)m(eyw)m(ords,)j
(then)e(this)f(routine)g(will)e(return)227 1751 y(the)32
b('equiv)-5 b(alen)m(t')31 b(data)g(t)m(yp)s(e)h(that)f(is)f(needed)h
(to)h(store)g(the)f(scaled)g(v)-5 b(alues.)42 b(F)-8
b(or)32 b(example,)f(if)f(BITPIX)227 1864 y(=)39 b(16)g(and)g(BSCALE)f
(=)g(0.1)i(then)f(the)g(equiv)-5 b(alen)m(t)38 b(data)h(t)m(yp)s(e)g
(is)f(\015oating)h(p)s(oin)m(t,)h(and)e(-32)i(will)d(b)s(e)227
1977 y(returned.)65 b(There)39 b(are)g(2)g(sp)s(ecial)f(cases:)58
b(if)38 b(the)h(image)g(con)m(tains)g(unsigned)e(2-b)m(yte)j(in)m
(teger)f(v)-5 b(alues,)227 2090 y(with)39 b(BITPIX)h(=)f(16,)44
b(BSCALE)39 b(=)h(1,)j(and)c(BZER)m(O)h(=)g(32768,)45
b(then)39 b(this)g(routine)g(will)f(return)h(a)227 2203
y(non-standard)26 b(v)-5 b(alue)26 b(of)h(20)h(for)f(the)g(bitpix)e(v)
-5 b(alue.)39 b(Similarly)23 b(if)i(the)j(image)f(con)m(tains)g
(unsigned)e(4-b)m(yte)227 2316 y(in)m(tegers,)31 b(then)f(bitpix)e
(will)g(b)s(e)i(returned)f(with)g(a)i(v)-5 b(alue)30
b(of)g(40.)382 2571 y Fe(FTGIDT\(unit,)44 b(>)k(bitpix,status\))382
2684 y(FTGIET\(unit,)c(>)k(bitpix,status\))0 2940 y Fh(2)81
b Fi(Get)31 b(the)g(dimension)c(\(n)m(um)m(b)s(er)j(of)g(axes)h(=)f
(NAXIS\))h(of)f(the)h(image)382 3196 y Fe(FTGIDM\(unit,)44
b(>)k(naxis,status\))0 3452 y Fh(3)81 b Fi(Get)31 b(the)g(size)f(of)g
(all)g(the)g(dimensions)e(of)i(the)h(image)382 3707 y
Fe(FTGISZ\(unit,)44 b(maxdim,)i(>)i(naxes,status\))0
3963 y Fh(4)81 b Fi(Get)35 b(the)f(parameters)g(that)h(de\014ne)e(the)h
(t)m(yp)s(e)g(and)g(size)f(of)i(the)f(image.)52 b(This)32
b(routine)h(simply)e(com)m(bines)227 4076 y(calls)f(to)h(the)f(ab)s(o)m
(v)m(e)i(3)f(routines.)382 4332 y Fe(FTGIPR\(unit,)44
b(maxdim,)i(>)i(bitpix,)d(naxis,)h(naxes,)h(int)f(*status\))0
4588 y Fh(5)81 b Fi(Put)30 b(elemen)m(ts)g(in)m(to)h(the)f(data)h(arra)
m(y)382 4843 y Fe(FTPPR[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o
(ts,v)o(alue)o(s,)41 b(>)48 b(status\))0 5099 y Fh(6)81
b Fi(Put)30 b(elemen)m(ts)h(in)m(to)f(the)h(data)g(arra)m(y)-8
b(,)32 b(substituting)c(the)i(appropriate)g(FITS)g(n)m(ull)e(v)-5
b(alue)30 b(for)g(all)g(elemen)m(ts)227 5212 y(whic)m(h)d(are)g(equal)h
(to)g(the)f(v)-5 b(alue)27 b(of)h(NULL)-10 b(V)g(AL.)28
b(F)-8 b(or)28 b(in)m(teger)g(FITS)f(arra)m(ys,)i(the)e(n)m(ull)f(v)-5
b(alue)27 b(de\014ned)f(b)m(y)227 5325 y(the)k(previous)e(call)h(to)i
(FTPNUL)e(will)e(b)s(e)i(substituted;)g(for)g(\015oating)h(p)s(oin)m(t)
f(FITS)g(arra)m(ys)h(\(BITPIX)f(=)227 5438 y(-32)j(or)e(-64\))i(then)e
(the)h(sp)s(ecial)e(IEEE)g(NaN)i(\(Not-a-Num)m(b)s(er\))h(v)-5
b(alue)30 b(will)e(b)s(e)i(substituted.)382 5694 y Fe
(FTPPN[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o(ts,v)o(alue)o
(s,n)o(ullv)o(al)42 b(>)47 b(status\))p eop
%%Page: 87 93
87 92 bop 0 299 a Fg(9.6.)72 b(FITS)30 b(PRIMAR)-8 b(Y)31
b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)e(I/O)i(SUBR)m(OUTINES)589
b Fi(87)0 555 y Fh(7)81 b Fi(Set)30 b(data)h(arra)m(y)g(elemen)m(ts)g
(as)f(unde\014ned)382 808 y Fe(FTPPRU\(unit,group,fpixel)o(,ne)o(leme)o
(nts,)41 b(>)47 b(status\))0 1060 y Fh(8)81 b Fi(Get)36
b(elemen)m(ts)f(from)g(the)g(data)h(arra)m(y)-8 b(.)55
b(Unde\014ned)34 b(arra)m(y)h(elemen)m(ts)h(will)c(b)s(e)j(returned)f
(with)f(a)j(v)-5 b(alue)34 b(=)227 1173 y(n)m(ullv)-5
b(al,)28 b(unless)h(n)m(ullv)-5 b(al)28 b(=)i(0)h(in)e(whic)m(h)g(case)
i(no)g(c)m(hec)m(ks)g(for)g(unde\014ned)d(pixels)g(will)g(b)s(e)i(p)s
(erformed.)382 1425 y Fe(FTGPV[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)
o(men)o(ts,n)o(ullv)o(al,)41 b(>)48 b(values,anyf,status\))0
1678 y Fh(9)81 b Fi(Get)32 b(elemen)m(ts)f(and)g(n)m(ull\015ags)e(from)
i(data)h(arra)m(y)-8 b(.)44 b(An)m(y)32 b(unde\014ned)d(arra)m(y)i
(elemen)m(ts)h(will)c(ha)m(v)m(e)33 b(the)e(corre-)227
1791 y(sp)s(onding)d(\015agv)-5 b(als)30 b(elemen)m(t)h(set)g(equal)f
(to)h(.TR)m(UE.)382 2043 y Fe(FTGPF[BIJED]\(unit,group,)o(fpi)o(xel,)o
(nele)o(men)o(ts,)41 b(>)48 b(values,flagvals,anyf,sta)o(tus)o(\))0
2295 y Fh(10)e Fi(Put)30 b(v)-5 b(alues)30 b(in)m(to)g(group)g
(parameters)382 2548 y Fe(FTPGP[BIJED]\(unit,group,)o(fpa)o(rm,n)o
(parm)o(,va)o(lues)o(,)42 b(>)47 b(status\))0 2800 y
Fh(11)f Fi(Get)31 b(v)-5 b(alues)30 b(from)g(group)g(parameters)382
3053 y Fe(FTGGP[BIJED]\(unit,group,)o(fpa)o(rm,n)o(parm)o(,)42
b(>)47 b(values,status\))0 3305 y Fi(The)32 b(follo)m(wing)e(4)j
(subroutines)d(transfer)h(FITS)h(images)g(with)f(2)h(or)g(3)h
(dimensions)c(to)k(or)f(from)g(a)h(data)f(arra)m(y)0
3418 y(whic)m(h)g(has)h(b)s(een)g(declared)f(in)g(the)i(calling)e
(program.)49 b(The)33 b(dimensionalit)m(y)d(of)k(the)f(FITS)g(image)g
(is)f(passed)0 3531 y(b)m(y)26 b(the)g(naxis1,)g(naxis2,)h(and)e
(naxis3)h(parameters)g(and)f(the)h(declared)g(dimensions)d(of)j(the)g
(program)g(arra)m(y)h(are)0 3644 y(passed)k(in)e(the)j(dim1)d(and)i
(dim2)f(parameters.)43 b(Note)32 b(that)g(the)f(program)g(arra)m(y)g
(do)s(es)g(not)g(ha)m(v)m(e)i(to)e(ha)m(v)m(e)i(the)0
3757 y(same)28 b(dimensions)d(as)j(the)g(FITS)e(arra)m(y)-8
b(,)30 b(but)d(m)m(ust)g(b)s(e)g(at)i(least)e(as)h(big.)39
b(F)-8 b(or)29 b(example)e(if)f(a)i(FITS)f(image)h(with)0
3870 y(NAXIS1)j(=)f(NAXIS2)h(=)f(400)i(is)d(read)i(in)m(to)f(a)h
(program)f(arra)m(y)h(whic)m(h)e(is)h(dimensioned)e(as)i(512)i(x)f(512)
g(pixels,)0 3983 y(then)d(the)g(image)h(will)c(just)j(\014ll)e(the)j
(lo)m(w)m(er)f(left)g(corner)g(of)h(the)f(arra)m(y)h(with)e(pixels)f
(in)h(the)i(range)f(1)h(-)f(400)i(in)d(the)0 4095 y(X)32
b(an)g(Y)h(directions.)45 b(This)30 b(has)i(the)h(e\013ect)g(of)g
(taking)f(a)h(con)m(tiguous)f(set)h(of)f(pixel)f(v)-5
b(alue)32 b(in)e(the)j(FITS)e(arra)m(y)0 4208 y(and)k(writing)e(them)i
(to)h(a)g(non-con)m(tiguous)f(arra)m(y)g(in)f(program)h(memory)g
(\(i.e.,)i(there)f(are)f(no)m(w)h(some)f(blank)0 4321
y(pixels)29 b(around)g(the)h(edge)i(of)e(the)h(image)f(in)f(the)i
(program)f(arra)m(y\).)0 4574 y Fh(11)46 b Fi(Put)30
b(2-D)i(image)e(in)m(to)h(the)f(data)h(arra)m(y)382 4826
y Fe(FTP2D[BIJED]\(unit,group,)o(dim)o(1,na)o(xis1)o(,na)o(xis2)o(,ima)
o(ge,)41 b(>)48 b(status\))0 5078 y Fh(12)e Fi(Put)30
b(3-D)i(cub)s(e)d(in)m(to)i(the)f(data)h(arra)m(y)382
5331 y Fe(FTP3D[BIJED]\(unit,group,)o(dim)o(1,di)o(m2,n)o(axi)o(s1,n)o
(axis)o(2,n)o(axis)o(3,cu)o(be,)41 b(>)48 b(status\))0
5583 y Fh(13)e Fi(Get)29 b(2-D)f(image)g(from)g(the)f(data)i(arra)m(y)
-8 b(.)41 b(Unde\014ned)26 b(pixels)f(in)i(the)h(arra)m(y)g(will)d(b)s
(e)i(set)h(equal)f(to)i(the)e(v)-5 b(alue)227 5696 y(of)31
b('n)m(ullv)-5 b(al',)28 b(unless)h(n)m(ullv)-5 b(al=0)28
b(in)h(whic)m(h)g(case)j(no)e(testing)h(for)f(unde\014ned)e(pixels)g
(will)g(b)s(e)i(p)s(erformed.)p eop
%%Page: 88 94
88 93 bop 0 299 a Fi(88)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)382
555 y Fe(FTG2D[BIJED]\(unit,group,)o(nul)o(lval)o(,dim)o(1,n)o(axis)o
(1,na)o(xis)o(2,)42 b(>)47 b(image,anyf,status\))0 766
y Fh(14)f Fi(Get)31 b(3-D)h(cub)s(e)e(from)g(the)g(data)h(arra)m(y)-8
b(.)42 b(Unde\014ned)29 b(pixels)g(in)g(the)h(arra)m(y)h(will)d(b)s(e)i
(set)h(equal)f(to)h(the)f(v)-5 b(alue)227 879 y(of)31
b('n)m(ullv)-5 b(al',)28 b(unless)h(n)m(ullv)-5 b(al=0)28
b(in)h(whic)m(h)g(case)j(no)e(testing)h(for)f(unde\014ned)e(pixels)g
(will)g(b)s(e)i(p)s(erformed.)382 1089 y Fe(FTG3D[BIJED]\(unit,group,)o
(nul)o(lval)o(,dim)o(1,d)o(im2,)o(naxi)o(s1,)o(naxi)o(s2,n)o(axi)o(s3,)
41 b(>)1002 1202 y(cube,anyf,status\))0 1413 y Fi(The)i(follo)m(wing)e
(subroutines)g(transfer)i(a)h(rectangular)f(subset)f(of)i(the)f(pixels)
e(in)h(a)i(FITS)e(N-dimensional)0 1525 y(image)30 b(to)h(or)f(from)f
(an)h(arra)m(y)g(whic)m(h)f(has)h(b)s(een)f(declared)g(in)g(the)h
(calling)f(program.)40 b(The)29 b(fpixels)f(and)h(lpixels)0
1638 y(parameters)e(are)h(in)m(teger)f(arra)m(ys)h(whic)m(h)e(sp)s
(ecify)f(the)j(starting)f(and)f(ending)g(pixels)f(in)h(eac)m(h)i
(dimension)c(of)k(the)0 1751 y(FITS)36 b(image)h(that)g(are)g(to)h(b)s
(e)e(read)g(or)h(written.)59 b(\(Note)38 b(that)g(these)f(are)g(the)g
(starting)f(and)g(ending)g(pixels)0 1864 y(in)d(the)i(FITS)f(image,)j
(not)e(in)e(the)i(declared)f(arra)m(y\).)55 b(The)34
b(arra)m(y)i(parameter)f(is)f(treated)h(simply)e(as)i(a)g(large)0
1977 y(one-dimensional)28 b(arra)m(y)i(of)h(the)f(appropriate)f(datat)m
(yp)s(e)i(con)m(taining)f(the)g(pixel)e(v)-5 b(alues;)30
b(The)f(pixel)g(v)-5 b(alues)29 b(in)0 2090 y(the)d(FITS)f(arra)m(y)i
(are)f(read/written)f(from/to)i(this)e(program)g(arra)m(y)i(in)d
(strict)i(sequence)g(without)f(an)m(y)i(gaps;)g(it)0
2203 y(is)h(up)f(to)j(the)f(calling)e(routine)h(to)h(correctly)g(in)m
(terpret)f(the)h(dimensionalit)m(y)d(of)j(this)f(arra)m(y)-8
b(.)41 b(The)28 b(t)m(w)m(o)i(families)0 2316 y(of)d(FITS)g(reading)f
(routines)g(\(FTGSVx)h(and)g(FTGSFx)g(subroutines\))e(also)j(ha)m(v)m
(e)g(an)f('incs')g(parameter)g(whic)m(h)0 2429 y(de\014nes)j(the)h
(data)h(sampling)c(in)m(terv)-5 b(al)30 b(in)g(eac)m(h)i(dimension)c
(of)j(the)g(FITS)f(arra)m(y)-8 b(.)43 b(F)-8 b(or)32
b(example,)f(if)f(incs\(1\)=2)0 2542 y(and)j(incs\(2\)=3)g(when)g
(reading)f(a)i(2-dimensional)d(FITS)i(image,)h(then)f(only)g(ev)m(ery)h
(other)f(pixel)f(in)g(the)i(\014rst)0 2655 y(dimension)c(and)j(ev)m
(ery)h(3rd)e(pixel)g(in)g(the)h(second)g(dimension)d(will)h(b)s(e)h
(returned)g(in)g(the)h('arra)m(y')h(parameter.)0 2767
y([Note:)39 b(the)25 b(FTGSSx)f(family)g(of)g(routines)g(whic)m(h)g(w)m
(ere)h(presen)m(t)g(in)e(previous)g(v)m(ersions)h(of)h(FITSIO)f(ha)m(v)
m(e)i(b)s(een)0 2880 y(sup)s(erseded)i(b)m(y)j(the)f(more)h(general)f
(FTGSVx)g(family)f(of)i(routines.])0 3091 y Fh(15)46
b Fi(Put)30 b(an)g(arbitrary)f(data)i(subsection)f(in)m(to)g(the)h
(data)g(arra)m(y)-8 b(.)382 3301 y Fe(FTPSS[BIJED]\(unit,group,)o(nax)o
(is,n)o(axes)o(,fp)o(ixel)o(s,lp)o(ixe)o(ls,a)o(rray)o(,)42
b(>)47 b(status\))0 3512 y Fh(16)f Fi(Get)30 b(an)e(arbitrary)f(data)j
(subsection)d(from)h(the)h(data)g(arra)m(y)-8 b(.)42
b(Unde\014ned)27 b(pixels)f(in)i(the)g(arra)m(y)i(will)25
b(b)s(e)j(set)227 3625 y(equal)j(to)i(the)e(v)-5 b(alue)32
b(of)f('n)m(ullv)-5 b(al',)30 b(unless)g(n)m(ullv)-5
b(al=0)30 b(in)g(whic)m(h)g(case)j(no)e(testing)h(for)f(unde\014ned)f
(pixels)227 3738 y(will)e(b)s(e)i(p)s(erformed.)382 3948
y Fe(FTGSV[BIJED]\(unit,group,)o(nax)o(is,n)o(axes)o(,fp)o(ixel)o(s,lp)
o(ixe)o(ls,i)o(ncs,)o(nul)o(lval)o(,)42 b(>)1002 4061
y(array,anyf,status\))0 4272 y Fh(17)k Fi(Get)34 b(an)f(arbitrary)f
(data)h(subsection)f(from)h(the)g(data)g(arra)m(y)-8
b(.)50 b(An)m(y)33 b(Unde\014ned)e(pixels)g(in)h(the)h(arra)m(y)h(will)
227 4384 y(ha)m(v)m(e)e(the)e(corresp)s(onding)f('\015agv)-5
b(als')30 b(elemen)m(t)h(set)g(equal)f(to)h(.TR)m(UE.)382
4595 y Fe(FTGSF[BIJED]\(unit,group,)o(nax)o(is,n)o(axes)o(,fp)o(ixel)o
(s,lp)o(ixe)o(ls,i)o(ncs,)41 b(>)1002 4708 y(array,flagvals,anyf,statu)
o(s\))0 5034 y Fd(9.7)135 b(FITS)44 b(ASCI)t(I)g(and)h(Binary)g(T)-11
b(able)45 b(Data)h(I/O)f(Subroutines)0 5287 y Fb(9.7.1)112
b(Column)37 b(Information)f(Subroutines)0 5488 y Fh(1)81
b Fi(Get)30 b(the)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(or)f(columns)f(in)
h(the)h(curren)m(t)f(FITS)g(table.)40 b(The)29 b(n)m(um)m(b)s(er)f(of)i
(ro)m(ws)g(is)e(giv)m(en)i(b)m(y)227 5601 y(the)k(NAXIS2)f(k)m(eyw)m
(ord)h(and)e(the)i(n)m(um)m(b)s(er)e(of)h(columns)f(is)g(giv)m(en)h(b)m
(y)g(the)h(TFIELDS)e(k)m(eyw)m(ord)i(in)e(the)227 5714
y(header)e(of)h(the)g(table.)p eop
%%Page: 89 95
89 94 bop 0 299 a Fg(9.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8
b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)
979 b Fi(89)382 555 y Fe(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\))382
668 y(FTGNCL\(unit,)e(>)k(ncols,)e(status\))0 921 y Fh(2)81
b Fi(Get)25 b(the)f(table)h(column)e(n)m(um)m(b)s(er)g(\(and)h(name\))h
(of)f(the)h(column)e(whose)h(name)g(matc)m(hes)i(an)e(input)f(template)
227 1034 y(name.)38 b(The)21 b(table)h(column)e(names)i(are)g
(de\014ned)e(b)m(y)i(the)g(TTYPEn)e(k)m(eyw)m(ords)i(in)e(the)i(FITS)f
(header.)37 b(If)22 b(a)227 1147 y(column)h(do)s(es)h(not)g(ha)m(v)m(e)
h(a)f(TTYPEn)f(k)m(eyw)m(ord,)j(then)d(these)h(routines)f(assume)h
(that)g(the)h(name)e(consists)227 1260 y(of)i(all)f(blank)g(c)m
(haracters.)40 b(These)25 b(2)g(subroutines)d(p)s(erform)i(the)h(same)g
(function)f(except)i(that)f(FTGCNO)227 1373 y(only)i(returns)f(the)h(n)
m(um)m(b)s(er)f(of)h(the)g(matc)m(hing)h(column)e(whereas)h(FTGCNN)g
(also)g(returns)f(the)i(name)f(of)227 1486 y(the)k(column.)39
b(If)30 b(CASESEN)f(=)h(.true.)41 b(then)30 b(the)h(column)e(name)h
(matc)m(h)i(will)27 b(b)s(e)j(case-sensitiv)m(e.)227
1635 y(The)41 b(input)d(column)i(name)h(template)g(\(COL)-8
b(TEMPLA)g(TE\))41 b(is)f(\(1\))h(either)g(the)g(exact)h(name)f(of)g
(the)227 1748 y(column)35 b(to)j(b)s(e)d(searc)m(hed)i(for,)h(or)e
(\(2\))i(it)e(ma)m(y)h(con)m(tain)f(wild)e(cards)i(c)m(haracters)i
(\(*,)h(?,)f(or)e(#\),)i(or)f(\(3\))227 1861 y(it)c(ma)m(y)h(con)m
(tain)f(the)g(n)m(um)m(b)s(er)f(of)h(the)g(desired)f(column)g(\(where)h
(the)g(n)m(um)m(b)s(er)f(is)g(expressed)g(as)h(ASCI)s(I)227
1974 y(digits\).)39 b(The)28 b(\014rst)g(2)h(wild)d(cards)i(b)s(eha)m
(v)m(e)h(similarly)c(to)k(UNIX)g(\014lename)f(matc)m(hing:)39
b(the)29 b('*')g(c)m(haracter)227 2087 y(matc)m(hes)e(an)m(y)g
(sequence)f(of)h(c)m(haracters)g(\(including)c(zero)k(c)m(haracters\))h
(and)d(the)i(')10 b(?')39 b(c)m(haracter)28 b(matc)m(hes)227
2199 y(an)m(y)40 b(single)f(c)m(haracter.)71 b(The)39
b(#)h(wildcard)d(will)g(matc)m(h)k(an)m(y)f(consecutiv)m(e)h(string)e
(of)h(decimal)e(digits)227 2312 y(\(0-9\).)45 b(As)31
b(an)g(example,)g(the)g(template)g(strings)f('AB?DE',)i('AB*E',)h(and)d
('AB*CDE')j(will)28 b(all)i(matc)m(h)227 2425 y(the)c(string)f
('ABCDE'.)j(If)d(more)h(than)g(one)g(column)f(name)h(in)f(the)h(table)g
(matc)m(hes)h(the)f(template)h(string,)227 2538 y(then)33
b(the)h(\014rst)f(matc)m(h)h(is)e(returned)h(and)f(the)i(status)g(v)-5
b(alue)33 b(will)d(b)s(e)j(set)h(to)g(237)h(as)f(a)f(w)m(arning)g(that)
h(a)227 2651 y(unique)f(matc)m(h)j(w)m(as)f(not)g(found.)53
b(T)-8 b(o)35 b(\014nd)f(the)h(other)g(cases)g(that)h(matc)m(h)g(the)f
(template,)h(simply)d(call)227 2764 y(the)27 b(subroutine)e(again)i
(lea)m(ving)g(the)g(input)e(status)i(v)-5 b(alue)27 b(equal)f(to)i(237)
g(and)f(the)g(next)g(matc)m(hing)g(name)227 2877 y(will)i(then)j(b)s(e)
f(returned.)43 b(Rep)s(eat)32 b(this)f(pro)s(cess)g(un)m(til)f(a)i
(status)g(=)g(219)h(\(column)d(name)i(not)g(found\))f(is)227
2990 y(returned.)40 b(If)30 b(these)h(subroutines)d(fail)h(to)i(matc)m
(h)g(the)g(template)g(to)g(an)m(y)g(of)f(the)h(columns)e(in)g(the)i
(table,)227 3103 y(they)i(lastly)e(c)m(hec)m(k)j(if)e(the)g(template)h
(can)g(b)s(e)e(in)m(terpreted)h(as)h(a)g(simple)d(p)s(ositiv)m(e)h(in)m
(teger)i(\(e.g.,)i('7',)f(or)227 3216 y('512'\))i(and)d(if)f(so,)j
(they)f(return)e(that)j(column)d(n)m(um)m(b)s(er.)49
b(If)33 b(no)g(matc)m(hes)i(are)f(found)e(then)h(a)h(status)g(=)227
3329 y(219)e(error)e(is)f(returned.)227 3478 y(Note)i(that)e(the)h
(FITS)e(Standard)g(recommends)g(that)i(only)e(letters,)i(digits,)e(and)
h(the)g(underscore)f(c)m(har-)227 3591 y(acter)44 b(b)s(e)e(used)g(in)g
(column)f(names)i(\(with)f(no)g(em)m(b)s(edded)g(spaces)h(in)f(the)h
(name\).)78 b(T)-8 b(railing)40 b(blank)227 3704 y(c)m(haracters)32
b(are)f(not)g(signi\014can)m(t.)40 b(It)31 b(is)e(recommended)i(that)g
(the)g(column)e(names)h(in)g(a)h(giv)m(en)f(table)h(b)s(e)227
3816 y(unique)e(within)f(the)i(\014rst)g(8)h(c)m(haracters.)382
4070 y Fe(FTGCNO\(unit,casesen,colt)o(emp)o(late)o(,)42
b(>)47 b(colnum,status\))382 4182 y(FTGCNN\(unit,casesen,colt)o(emp)o
(late)o(,)42 b(>)47 b(colname,colnum,status\))0 4436
y Fh(3)81 b Fi(Get)39 b(the)g(datat)m(yp)s(e)h(of)e(a)h(column)f(in)f
(an)h(ASCI)s(I)g(or)g(binary)f(table.)65 b(This)37 b(routine)h(returns)
f(an)i(in)m(teger)227 4549 y(co)s(de)34 b(v)-5 b(alue)32
b(corresp)s(onding)f(to)j(the)g(datat)m(yp)s(e)g(of)f(the)g(column.)48
b(\(See)34 b(the)f(FTBNFM)i(and)d(FT)-8 b(ASFM)227 4661
y(subroutines)26 b(in)h(the)h(Utilities)f(section)h(of)g(this)f(do)s
(cumen)m(t)h(for)g(a)h(list)e(of)h(the)h(co)s(de)f(v)-5
b(alues\).)40 b(The)27 b(v)m(ector)227 4774 y(rep)s(eat)38
b(coun)m(t)g(\(whic)m(h)f(is)g(alw)m(a)m(y)h(1)g(for)g(ASCI)s(I)e
(table)h(columns\))g(is)g(also)g(returned.)62 b(If)37
b(the)h(sp)s(eci\014ed)227 4887 y(column)31 b(has)g(an)g(ASCI)s(I)f(c)m
(haracter)j(datat)m(yp)s(e)g(\(co)s(de)f(=)f(16\))i(then)e(the)h(width)
d(of)j(a)g(unit)e(string)h(in)f(the)227 5000 y(column)i(is)g(also)h
(returned.)48 b(Note)34 b(that)g(this)d(routine)h(supp)s(orts)g(the)h
(lo)s(cal)f(con)m(v)m(en)m(tion)i(for)f(sp)s(ecifying)227
5113 y(arra)m(ys)f(of)f(strings)f(within)e(a)k(binary)d(table)i(c)m
(haracter)h(column,)f(using)e(the)i(syn)m(tax)h(TF)m(ORM)f(=)g('rAw')
227 5226 y(where)f('r')g(is)g(the)g(total)h(n)m(um)m(b)s(er)e(of)i(c)m
(haracters)g(\(=)g(the)f(width)f(of)h(the)g(column\))g(and)g('w')g(is)f
(the)i(width)227 5339 y(of)39 b(a)f(unit)f(string)g(within)f(the)i
(column.)63 b(Th)m(us)37 b(if)g(the)h(column)f(has)h(TF)m(ORM)h(=)f
('60A12')i(then)e(this)227 5452 y(routine)30 b(will)d(return)j(dataco)s
(de)h(=)f(16,)h(rep)s(eat)g(=)f(60,)i(and)d(width)g(=)h(12.)227
5601 y(The)h(second)h(routine,)f(FTEQTY)g(is)f(similar)f(except)k(that)
f(in)e(the)i(case)g(of)g(scaled)f(in)m(teger)h(columns)e(it)227
5714 y(returns)23 b(the)h('equiv)-5 b(alen)m(t')23 b(data)h(t)m(yp)s(e)
g(that)h(is)d(needed)i(to)g(store)g(the)g(scaled)f(v)-5
b(alues,)25 b(and)e(not)h(necessarily)p eop
%%Page: 90 96
90 95 bop 0 299 a Fi(90)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)227
555 y Fi(the)38 b(ph)m(ysical)f(data)h(t)m(yp)s(e)g(of)g(the)g
(unscaled)f(v)-5 b(alues)37 b(as)h(stored)g(in)f(the)h(FITS)f(table.)63
b(F)-8 b(or)38 b(example)g(if)227 668 y(a)d('1I')g(column)e(in)g(a)h
(binary)f(table)h(has)g(TSCALn)f(=)g(1)i(and)f(TZER)m(On)f(=)g(32768,)
38 b(then)c(this)f(column)227 781 y(e\013ectiv)m(ely)25
b(con)m(tains)f(unsigned)e(short)h(in)m(teger)i(v)-5
b(alues,)24 b(and)g(th)m(us)f(the)h(returned)f(v)-5 b(alue)23
b(of)h(t)m(yp)s(eco)s(de)h(will)227 894 y(b)s(e)32 b(the)h(co)s(de)g
(for)g(an)f(unsigned)f(short)h(in)m(teger,)i(not)f(a)g(signed)f(short)g
(in)m(teger.)48 b(Similarly)-8 b(,)30 b(if)i(a)h(column)227
1007 y(has)d(TTYPEn)g(=)g('1I')h(and)f(TSCALn)e(=)i(0.12,)j(then)d(the)
g(returned)g(t)m(yp)s(eco)s(de)g(will)e(b)s(e)i(the)h(co)s(de)f(for)h
(a)227 1120 y('real')g(column.)382 1382 y Fe(FTGTCL\(unit,colnum,)42
b(>)48 b(datacode,repeat,width,st)o(atu)o(s\))382 1495
y(FTEQTY\(unit,colnum,)42 b(>)48 b(datacode,repeat,width,st)o(atu)o
(s\))0 1758 y Fh(4)81 b Fi(Return)22 b(the)i(displa)m(y)e(width)g(of)h
(a)h(column.)38 b(This)21 b(is)i(the)h(length)f(of)g(the)h(string)f
(that)h(will)d(b)s(e)i(returned)f(when)227 1871 y(reading)32
b(the)h(column)f(as)h(a)g(formatted)g(string.)47 b(The)32
b(displa)m(y)f(width)g(is)h(determined)g(b)m(y)g(the)h(TDISPn)227
1984 y(k)m(eyw)m(ord,)e(if)f(presen)m(t,)g(otherwise)g(b)m(y)g(the)h
(data)g(t)m(yp)s(e)g(of)f(the)h(column.)382 2246 y Fe(FTGCDW\(unit,)44
b(colnum,)i(>)i(dispwidth,)d(status\))0 2509 y Fh(5)81
b Fi(Get)29 b(information)d(ab)s(out)i(an)g(existing)f(ASCI)s(I)g
(table)h(column.)39 b(\(NOTE:)28 b(TSCAL)f(and)g(TZER)m(O)h(m)m(ust)g
(b)s(e)227 2622 y(declared)i(as)h(Double)f(Precision)f(v)-5
b(ariables\).)39 b(All)29 b(the)i(returned)e(parameters)i(are)f(scalar)
h(quan)m(tities.)382 2884 y Fe(FTGACL\(unit,colnum,)42
b(>)716 2997 y(ttype,tbcol,tunit,tform,)o(tsca)o(l,t)o(zero)o(,snu)o
(ll,)o(tdis)o(p,st)o(atu)o(s\))0 3259 y Fh(6)81 b Fi(Get)29
b(information)d(ab)s(out)h(an)h(existing)f(binary)f(table)i(column.)39
b(\(NOTE:)28 b(TSCAL)e(and)i(TZER)m(O)f(m)m(ust)h(b)s(e)227
3372 y(declared)i(as)g(Double)f(Precision)g(v)-5 b(ariables\).)39
b(D)m(A)-8 b(T)g(A)g(TYPE)32 b(is)d(a)h(c)m(haracter)i(string)c(whic)m
(h)h(returns)g(the)227 3485 y(datat)m(yp)s(e)35 b(of)g(the)f(column)f
(as)h(de\014ned)f(b)m(y)h(the)g(TF)m(ORMn)g(k)m(eyw)m(ord)h(\(e.g.,)i
('I',)e('J','E',)g('D',)g(etc.\).)54 b(In)227 3598 y(the)27
b(case)g(of)g(an)f(ASCI)s(I)f(c)m(haracter)j(column,)e(D)m(A)-8
b(T)g(A)g(TYPE)29 b(will)23 b(ha)m(v)m(e)28 b(a)f(v)-5
b(alue)26 b(of)g(the)h(form)f('An')g(where)227 3711 y('n')34
b(is)f(an)h(in)m(teger)h(expressing)e(the)h(width)e(of)i(the)h(\014eld)
d(in)h(c)m(haracters.)53 b(F)-8 b(or)35 b(example,)g(if)e(TF)m(ORM)h(=)
227 3824 y('160A8')39 b(then)e(FTGBCL)f(will)e(return)i(D)m(A)-8
b(T)g(A)g(TYPE='A8')39 b(and)d(REPEA)-8 b(T=20.)60 b(All)35
b(the)i(returned)227 3937 y(parameters)31 b(are)g(scalar)f(quan)m
(tities.)382 4199 y Fe(FTGBCL\(unit,colnum,)42 b(>)716
4312 y(ttype,tunit,datatype,rep)o(eat,)o(tsc)o(al,t)o(zero)o(,tn)o
(ull,)o(tdis)o(p,s)o(tatu)o(s\))0 4575 y Fh(7)81 b Fi(Put)31
b(\(app)s(end\))g(a)i(TDIMn)f(k)m(eyw)m(ord)g(whose)g(v)-5
b(alue)32 b(has)g(the)g(form)g('\(l,m,n...\)')46 b(where)32
b(l,)g(m,)g(n...)46 b(are)33 b(the)227 4688 y(dimensions)28
b(of)i(a)h(m)m(ultidimension)c(arra)m(y)j(column)g(in)f(a)h(binary)f
(table.)382 4950 y Fe(FTPTDM\(unit,colnum,naxis)o(,na)o(xes,)41
b(>)48 b(status\))0 5213 y Fh(8)81 b Fi(Return)29 b(the)h(n)m(um)m(b)s
(er)e(of)i(and)g(size)f(of)h(the)g(dimensions)e(of)i(a)g(table)g
(column.)39 b(Normally)29 b(this)g(information)227 5326
y(is)h(giv)m(en)h(b)m(y)g(the)g(TDIMn)f(k)m(eyw)m(ord,)i(but)e(if)g
(this)g(k)m(eyw)m(ord)h(is)f(not)h(presen)m(t)g(then)g(this)e(routine)h
(returns)227 5439 y(NAXIS)g(=)g(1)h(and)f(NAXES\(1\))h(equal)f(to)h
(the)g(rep)s(eat)g(coun)m(t)g(in)e(the)h(TF)m(ORM)h(k)m(eyw)m(ord.)382
5701 y Fe(FTGTDM\(unit,colnum,maxdi)o(m,)41 b(>)48 b
(naxis,naxes,status\))p eop
%%Page: 91 97
91 96 bop 0 299 a Fg(9.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8
b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)
979 b Fi(91)0 555 y Fh(9)81 b Fi(Deco)s(de)33 b(the)g(input)e(TDIMn)i
(k)m(eyw)m(ord)g(string)e(\(e.g.)50 b('\(100,200\)'\))37
b(and)32 b(return)g(the)h(n)m(um)m(b)s(er)e(of)i(and)f(size)227
668 y(of)c(the)g(dimensions)d(of)j(a)g(binary)e(table)h(column.)39
b(If)27 b(the)h(input)e(tdimstr)g(c)m(haracter)j(string)e(is)g(n)m
(ull,)f(then)227 781 y(this)e(routine)f(returns)g(naxis)g(=)i(1)f(and)g
(naxes[0])i(equal)d(to)j(the)e(rep)s(eat)h(coun)m(t)g(in)e(the)h(TF)m
(ORM)h(k)m(eyw)m(ord.)227 894 y(This)k(routine)g(is)h(called)f(b)m(y)h
(FTGTDM.)382 1147 y Fe(FTDTDM\(unit,tdimstr,coln)o(um,)o(maxd)o(im,)41
b(>)48 b(naxis,naxes,)c(status\))0 1400 y Fh(10)i Fi(Return)32
b(the)h(optimal)f(n)m(um)m(b)s(er)g(of)h(ro)m(ws)g(to)h(read)f(or)g
(write)f(at)i(one)f(time)g(for)f(maxim)m(um)g(I/O)h(e\016ciency)-8
b(.)227 1513 y(Refer)31 b(to)g(the)g(\\Optimizing)d(Co)s(de")i(section)
h(in)e(Chapter)h(5)g(for)h(more)f(discussion)e(on)i(ho)m(w)h(to)g(use)f
(this)227 1626 y(routine.)382 1879 y Fe(FFGRSZ\(unit,)44
b(>)k(nrows,status\))0 2169 y Fb(9.7.2)112 b(Lo)m(w-Lev)m(el)38
b(T)-9 b(able)37 b(Access)g(Subroutines)0 2388 y Fi(The)d(follo)m(wing)
e(subroutines)g(pro)m(vide)i(lo)m(w-lev)m(el)g(access)h(to)g(the)g
(data)g(in)e(ASCI)s(I)f(or)i(binary)f(tables)h(and)g(are)0
2501 y(mainly)27 b(useful)g(as)j(an)f(e\016cien)m(t)g(w)m(a)m(y)h(to)g
(cop)m(y)g(all)e(or)h(part)g(of)g(a)g(table)g(from)g(one)g(lo)s(cation)
g(to)h(another.)40 b(These)0 2614 y(routines)23 b(simply)f(read)i(or)h
(write)e(the)i(sp)s(eci\014ed)d(n)m(um)m(b)s(er)h(of)i(consecutiv)m(e)g
(b)m(ytes)g(in)e(an)h(ASCI)s(I)f(or)h(binary)f(table,)0
2727 y(without)36 b(regard)h(for)f(column)g(b)s(oundaries)e(or)j(the)g
(ro)m(w)g(length)g(in)e(the)i(table.)60 b(The)37 b(\014rst)f(t)m(w)m(o)
i(subroutines)0 2840 y(read)29 b(or)h(write)f(consecutiv)m(e)h(b)m
(ytes)g(in)e(a)i(table)f(to)i(or)e(from)g(a)h(c)m(haracter)h(string)d
(v)-5 b(ariable,)29 b(while)f(the)h(last)h(t)m(w)m(o)0
2953 y(subroutines)f(read)j(or)g(write)f(consecutiv)m(e)h(b)m(ytes)h
(to)f(or)g(from)f(a)h(v)-5 b(ariable)31 b(declared)g(as)h(a)g(n)m
(umeric)e(data)j(t)m(yp)s(e)0 3065 y(\(e.g.,)40 b(INTEGER,)d
(INTEGER*2,)i(REAL,)d(DOUBLE)h(PRECISION\).)f(These)g(routines)g(do)g
(not)h(p)s(erform)0 3178 y(an)m(y)c(mac)m(hine)f(dep)s(enden)m(t)g
(data)i(con)m(v)m(ersion)f(or)f(b)m(yte)i(sw)m(apping,)e(except)i(that)
f(con)m(v)m(ersion)g(to/from)g(ASCI)s(I)0 3291 y(format)d(is)f(p)s
(erformed)f(b)m(y)h(the)h(FTGTBS)f(and)g(FTPTBS)g(routines)g(on)g(mac)m
(hines)g(whic)m(h)g(do)g(not)h(use)f(ASCI)s(I)0 3404
y(c)m(haracter)j(co)s(des)e(in)f(the)i(in)m(ternal)e(data)i(represen)m
(tations)g(\(e.g.,)h(on)e(IBM)h(mainframe)e(computers\).)0
3657 y Fh(1)81 b Fi(Read)26 b(a)h(consecutiv)m(e)g(string)f(of)g(c)m
(haracters)i(from)e(an)g(ASCI)s(I)f(table)h(in)m(to)h(a)f(c)m(haracter)
i(v)-5 b(ariable)26 b(\(spanning)227 3770 y(columns)31
b(and)h(m)m(ultiple)e(ro)m(ws)i(if)f(necessary\))i(This)e(routine)g
(should)f(not)j(b)s(e)e(used)h(with)f(binary)f(tables)227
3883 y(b)s(ecause)h(of)f(complications)f(related)i(to)g(passing)e
(string)g(v)-5 b(ariables)29 b(b)s(et)m(w)m(een)i(C)f(and)g(F)-8
b(ortran.)382 4136 y Fe(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41
b(>)48 b(string,status\))0 4390 y Fh(2)81 b Fi(W)-8 b(rite)30
b(a)h(consecutiv)m(e)g(string)e(of)i(c)m(haracters)g(to)g(an)f(ASCI)s
(I)f(table)h(from)g(a)h(c)m(haracter)h(v)-5 b(ariable)29
b(\(spanning)227 4503 y(columns)i(and)h(m)m(ultiple)e(ro)m(ws)i(if)f
(necessary\))i(This)e(routine)g(should)f(not)j(b)s(e)e(used)h(with)f
(binary)f(tables)227 4615 y(b)s(ecause)h(of)f(complications)f(related)i
(to)g(passing)e(string)g(v)-5 b(ariables)29 b(b)s(et)m(w)m(een)i(C)f
(and)g(F)-8 b(ortran.)382 4869 y Fe(FTPTBS\(unit,frow,startch)o(ar,)o
(ncha)o(rs,s)o(tri)o(ng,)41 b(>)48 b(status\))0 5122
y Fh(3)81 b Fi(Read)27 b(a)h(consecutiv)m(e)h(arra)m(y)f(of)g(b)m(ytes)
g(from)f(an)g(ASCI)s(I)f(or)i(binary)d(table)j(in)m(to)f(a)h(n)m
(umeric)f(v)-5 b(ariable)26 b(\(span-)227 5235 y(ning)31
b(columns)f(and)i(m)m(ultiple)d(ro)m(ws)j(if)f(necessary\).)46
b(The)32 b(arra)m(y)g(parameter)g(ma)m(y)h(b)s(e)e(declared)g(as)i(an)m
(y)227 5348 y(n)m(umerical)g(datat)m(yp)s(e)i(as)g(long)f(as)h(the)f
(arra)m(y)h(is)e(at)i(least)g('nc)m(hars')g(b)m(ytes)f(long,)i(e.g.,)g
(if)e(nc)m(hars)g(=)g(17,)227 5461 y(then)c(declare)h(the)f(arra)m(y)h
(as)g(INTEGER*4)g(ARRA)-8 b(Y\(5\).)382 5714 y Fe
(FTGTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 b(>)48
b(array,status\))p eop
%%Page: 92 98
92 97 bop 0 299 a Fi(92)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0
555 y Fh(4)81 b Fi(W)-8 b(rite)31 b(a)g(consecutiv)m(e)h(arra)m(y)g(of)
f(b)m(ytes)g(to)h(an)e(ASCI)s(I)g(or)h(binary)e(table)i(from)f(a)i(n)m
(umeric)d(v)-5 b(ariable)30 b(\(span-)227 668 y(ning)k(columns)f(and)h
(m)m(ultiple)e(ro)m(ws)j(if)e(necessary\))j(The)e(arra)m(y)h(parameter)
g(ma)m(y)h(b)s(e)e(declared)g(as)h(an)m(y)227 781 y(n)m(umerical)e
(datat)m(yp)s(e)i(as)g(long)f(as)h(the)f(arra)m(y)h(is)e(at)i(least)g
('nc)m(hars')g(b)m(ytes)f(long,)i(e.g.,)g(if)e(nc)m(hars)g(=)g(17,)227
894 y(then)c(declare)h(the)f(arra)m(y)h(as)g(INTEGER*4)g(ARRA)-8
b(Y\(5\).)382 1161 y Fe(FTPTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,a)o
(rra)o(y,)42 b(>)47 b(status\))0 1461 y Fb(9.7.3)112
b(Edit)36 b(Ro)m(ws)h(or)h(Columns)0 1676 y Fh(1)81 b
Fi(Insert)26 b(blank)g(ro)m(ws)i(in)m(to)f(an)g(existing)f(ASCI)s(I)g
(or)h(binary)f(table)h(\(in)g(the)g(CDU\).)h(All)e(the)i(ro)m(ws)f(F)m
(OLLO)m(W-)227 1789 y(ING)32 b(ro)m(w)f(FR)m(O)m(W)i(are)e(shifted)f
(do)m(wn)h(b)m(y)g(NR)m(O)m(WS)h(ro)m(ws.)43 b(If)31
b(FR)m(O)m(W)i(=)d(0)i(then)f(the)g(blank)f(ro)m(ws)i(are)227
1902 y(inserted)e(at)i(the)f(b)s(eginning)e(of)i(the)g(table.)43
b(This)29 b(routine)h(mo)s(di\014es)f(the)j(NAXIS2)f(k)m(eyw)m(ord)h
(to)f(re\015ect)227 2015 y(the)g(new)f(n)m(um)m(b)s(er)f(of)h(ro)m(ws)h
(in)e(the)h(table.)382 2282 y Fe(FTIROW\(unit,frow,nrows,)41
b(>)48 b(status\))0 2550 y Fh(2)81 b Fi(Delete)26 b(ro)m(ws)g(from)f
(an)g(existing)g(ASCI)s(I)f(or)h(binary)f(table)h(\(in)g(the)h(CDU\).)g
(The)f(NR)m(O)m(WS)h(n)m(um)m(b)s(er)e(of)i(ro)m(ws)227
2663 y(are)k(deleted,)g(starting)f(with)g(ro)m(w)g(FR)m(O)m(W,)j(and)d
(an)m(y)h(remaining)d(ro)m(ws)j(in)e(the)i(table)f(are)h(shifted)f(up)f
(to)227 2775 y(\014ll)35 b(in)h(the)h(space.)61 b(This)35
b(routine)h(mo)s(di\014es)f(the)j(NAXIS2)f(k)m(eyw)m(ord)g(to)h
(re\015ect)f(the)h(new)e(n)m(um)m(b)s(er)g(of)227 2888
y(ro)m(ws)31 b(in)e(the)h(table.)382 3156 y Fe
(FTDROW\(unit,frow,nrows,)41 b(>)48 b(status\))0 3423
y Fh(3)81 b Fi(Delete)25 b(a)g(list)e(of)i(ro)m(ws)f(from)g(an)h(ASCI)s
(I)e(or)h(binary)f(table)h(\(in)g(the)g(CDU\).)i(In)e(the)g(\014rst)g
(routine,)h('ro)m(wrange')227 3536 y(is)i(a)h(c)m(haracter)h(string)e
(listing)f(the)i(ro)m(ws)f(or)h(ro)m(w)g(ranges)g(to)g(delete)g
(\(e.g.,)j('2-4,)e(5,)g(8-9'\).)42 b(In)27 b(the)h(second)227
3649 y(routine,)36 b('ro)m(wlist')e(is)g(an)g(in)m(teger)i(arra)m(y)f
(of)g(ro)m(w)g(n)m(um)m(b)s(ers)e(to)j(b)s(e)e(deleted)h(from)f(the)h
(table.)55 b(nro)m(ws)34 b(is)227 3762 y(the)e(n)m(um)m(b)s(er)e(of)h
(ro)m(w)h(n)m(um)m(b)s(ers)e(in)g(the)h(list.)43 b(The)31
b(\014rst)f(ro)m(w)i(in)e(the)h(table)h(is)e(1)i(not)f(0.)44
b(The)31 b(list)f(of)i(ro)m(w)227 3875 y(n)m(um)m(b)s(ers)d(m)m(ust)h
(b)s(e)g(sorted)h(in)e(ascending)g(order.)382 4142 y
Fe(FTDRRG\(unit,rowrange,)42 b(>)47 b(status\))382 4255
y(FTDRWS\(unit,rowlist,nrow)o(s,)41 b(>)48 b(status\))0
4523 y Fh(4)81 b Fi(Insert)43 b(a)i(blank)e(column)h(\(or)g(columns\))g
(in)m(to)g(an)g(existing)g(ASCI)s(I)f(or)h(binary)f(table)h(\(in)g(the)
g(CDU\).)227 4636 y(COLNUM)c(sp)s(eci\014es)f(the)i(column)e(n)m(um)m
(b)s(er)g(that)i(the)f(\(\014rst\))g(new)g(column)f(should)f(o)s(ccup)m
(y)j(in)e(the)227 4749 y(table.)57 b(NCOLS)34 b(sp)s(eci\014es)g(ho)m
(w)i(man)m(y)g(columns)e(are)i(to)g(b)s(e)f(inserted.)56
b(An)m(y)35 b(existing)g(columns)f(from)227 4862 y(this)k(p)s(osition)e
(and)i(higher)f(are)i(mo)m(v)m(ed)g(o)m(v)m(er)h(to)f(allo)m(w)f(ro)s
(om)g(for)h(the)f(new)g(column\(s\).)64 b(The)38 b(index)227
4975 y(n)m(um)m(b)s(er)j(on)h(all)f(the)h(follo)m(wing)e(k)m(eyw)m
(ords)j(will)c(b)s(e)i(incremen)m(ted)h(if)f(necessary)h(to)h
(re\015ect)f(the)g(new)227 5087 y(p)s(osition)30 b(of)h(the)g
(column\(s\))g(in)f(the)h(table:)42 b(TBCOLn,)30 b(TF)m(ORMn,)i
(TTYPEn,)e(TUNITn,)h(TNULLn,)227 5200 y(TSCALn,)22 b(TZER)m(On,)g
(TDISPn,)g(TDIMn,)h(TLMINn,)g(TLMAXn,)f(TDMINn,)i(TDMAXn,)f(TCTYPn,)227
5313 y(TCRPXn,)30 b(TCR)-10 b(VLn,)29 b(TCDL)-8 b(Tn,)30
b(TCR)m(OTn,)f(and)g(TCUNIn.)382 5581 y Fe(FTICOL\(unit,colnum,ttype)o
(,tf)o(orm,)41 b(>)48 b(status\))382 5694 y(FTICLS\(unit,colnum,ncols)o
(,tt)o(ype,)o(tfor)o(m,)41 b(>)48 b(status\))p eop
%%Page: 93 99
93 98 bop 0 299 a Fg(9.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8
b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)
979 b Fi(93)0 555 y Fh(5)81 b Fi(Mo)s(dify)36 b(the)h(v)m(ector)i
(length)e(of)g(a)h(binary)d(table)i(column)f(\(e.g.,)41
b(c)m(hange)e(a)e(column)f(from)h(TF)m(ORMn)g(=)227 668
y('1E')31 b(to)h('20E'\).)g(The)e(v)m(ector)i(length)d(ma)m(y)i(b)s(e)f
(increased)g(or)g(decreased)h(from)f(the)g(curren)m(t)h(v)-5
b(alue.)382 924 y Fe(FTMVEC\(unit,colnum,newve)o(cle)o(n,)42
b(>)47 b(status\))0 1180 y Fh(6)81 b Fi(Delete)28 b(a)g(column)f(from)g
(an)g(existing)g(ASCI)s(I)f(or)i(binary)d(table)j(\(in)f(the)g(CDU\).)i
(The)e(index)f(n)m(um)m(b)s(er)g(of)i(all)227 1293 y(the)k(k)m(eyw)m
(ords)h(listed)d(ab)s(o)m(v)m(e)k(\(for)e(FTICOL\))f(will)e(b)s(e)j
(decremen)m(ted)g(if)f(necessary)i(to)g(re\015ect)f(the)g(new)227
1406 y(p)s(osition)24 b(of)i(the)g(column\(s\))f(in)f(the)i(table.)39
b(Those)26 b(index)e(k)m(eyw)m(ords)i(that)g(refer)f(to)i(the)f
(deleted)f(column)227 1519 y(will)30 b(also)i(b)s(e)g(deleted.)46
b(Note)33 b(that)g(the)g(ph)m(ysical)e(size)h(of)g(the)h(FITS)e(\014le)
h(will)d(not)k(b)s(e)e(reduced)h(b)m(y)g(this)227 1632
y(op)s(eration,)d(and)f(the)h(empt)m(y)g(FITS)f(blo)s(c)m(ks)g(if)g(an)
m(y)h(at)g(the)g(end)f(of)h(the)g(\014le)f(will)e(b)s(e)i(padded)g
(with)f(zeros.)382 1888 y Fe(FTDCOL\(unit,colnum,)42
b(>)48 b(status\))0 2144 y Fh(7)81 b Fi(Cop)m(y)30 b(a)g(column)f(from)
h(one)g(HDU)h(to)g(another)f(\(or)h(to)g(the)f(same)h(HDU\).)g(If)f
(createcol)i(=)d(TR)m(UE,)i(then)f(a)227 2257 y(new)20
b(column)f(will)f(b)s(e)i(inserted)f(in)g(the)i(output)f(table,)j(at)e
(p)s(osition)d(`outcolumn',)k(otherwise)e(the)h(existing)227
2370 y(output)29 b(column)e(will)f(b)s(e)i(o)m(v)m(erwritten)h(\(in)f
(whic)m(h)f(case)j(it)e(m)m(ust)g(ha)m(v)m(e)i(a)f(compatible)f(datat)m
(yp)s(e\).)42 b(Note)227 2483 y(that)31 b(the)g(\014rst)e(column)h(in)f
(a)h(table)h(is)e(at)i(coln)m(um)f(=)g(1.)382 2739 y
Fe(FTCPCL\(inunit,outunit,in)o(col)o(num,)o(outc)o(oln)o(um,c)o(reat)o
(eco)o(l,)42 b(>)47 b(status\);)0 3029 y Fb(9.7.4)112
b(Read)38 b(and)h(W)-9 b(rite)35 b(Column)i(Data)g(Routines)0
3248 y Fi(These)22 b(subroutines)e(put)i(or)g(get)i(data)f(v)-5
b(alues)21 b(in)g(the)i(curren)m(t)f(ASCI)s(I)f(or)h(Binary)f(table)i
(extension.)37 b(Automatic)0 3361 y(data)21 b(t)m(yp)s(e)g(con)m(v)m
(ersion)f(is)f(p)s(erformed)g(for)h(n)m(umerical)f(data)i(t)m(yp)s(es)g
(\(B,I,J,E,D\))h(if)d(the)i(data)g(t)m(yp)s(e)f(of)h(the)f(column)0
3474 y(\(de\014ned)32 b(b)m(y)i(the)f(TF)m(ORM)h(k)m(eyw)m(ord\))g
(di\013ers)e(from)g(the)i(data)g(t)m(yp)s(e)f(of)h(the)f(calling)f
(subroutine.)47 b(The)33 b(data)0 3587 y(v)-5 b(alues)29
b(are)i(also)f(scaled)f(b)m(y)h(the)g(TSCALn)f(and)g(TZER)m(On)g
(header)h(v)-5 b(alues)29 b(as)h(they)g(are)h(b)s(eing)d(written)h(to)i
(or)0 3700 y(read)j(from)f(the)h(FITS)f(arra)m(y)-8 b(.)51
b(The)33 b(fttscl)h(subroutine)d(MUST)j(b)s(e)f(used)g(to)h(de\014ne)f
(the)h(scaling)f(parameters)0 3813 y(when)f(writing)f(data)j(to)g(the)f
(table)g(or)g(to)h(o)m(v)m(erride)f(the)h(default)e(scaling)g(v)-5
b(alues)33 b(giv)m(en)g(in)f(the)h(header)g(when)0 3926
y(reading)c(from)h(the)h(table.)0 4086 y(In)h(the)i(case)g(of)f(binary)
f(tables)h(with)f(v)m(ector)i(elemen)m(ts,)h(the)e('felem')g(parameter)
h(de\014nes)e(the)i(starting)f(pixel)0 4199 y(within)j(the)i(elemen)m
(t)h(v)m(ector.)65 b(This)37 b(parameter)h(is)f(ignored)h(with)e(ASCI)s
(I)h(tables.)64 b(Similarly)-8 b(,)37 b(in)g(the)h(case)0
4312 y(of)45 b(binary)d(tables)i(the)h('nelemen)m(ts')g(parameter)g(sp)
s(eci\014es)e(the)h(total)h(n)m(um)m(b)s(er)e(of)i(v)m(ector)h(v)-5
b(alues)44 b(read)g(or)0 4425 y(written)35 b(\(con)m(tin)m(uing)g(on)h
(subsequen)m(t)f(ro)m(ws)g(if)g(required\))f(and)i(not)g(the)g(n)m(um)m
(b)s(er)e(of)i(table)g(elemen)m(ts.)57 b(Tw)m(o)0 4538
y(sets)36 b(of)f(subroutines)f(are)h(pro)m(vided)f(to)j(get)f(the)g
(column)e(data)i(whic)m(h)e(di\013er)g(in)h(the)g(w)m(a)m(y)i
(unde\014ned)c(pixels)0 4650 y(are)f(handled.)41 b(The)31
b(\014rst)g(set)h(of)f(routines)g(\(FTGCV\))h(simply)d(return)h(an)h
(arra)m(y)h(of)f(data)h(elemen)m(ts)g(in)e(whic)m(h)0
4763 y(unde\014ned)41 b(pixels)h(are)i(set)g(equal)f(to)i(a)f(v)-5
b(alue)43 b(sp)s(eci\014ed)f(b)m(y)h(the)h(user)f(in)f(the)i('n)m(ullv)
-5 b(al')41 b(parameter.)81 b(An)0 4876 y(additional)41
b(feature)j(of)g(these)g(subroutines)d(is)i(that)h(if)e(the)i(user)e
(sets)i(n)m(ullv)-5 b(al)41 b(=)i(0,)48 b(then)43 b(no)g(c)m(hec)m(ks)i
(for)0 4989 y(unde\014ned)33 b(pixels)h(will)f(b)s(e)h(p)s(erformed,)i
(th)m(us)f(increasing)f(the)i(sp)s(eed)e(of)i(the)g(program.)55
b(The)35 b(second)h(set)g(of)0 5102 y(routines)g(\(FTGCF\))i(returns)d
(the)i(data)h(elemen)m(t)f(arra)m(y)h(and)e(in)g(addition)f(a)i
(logical)g(arra)m(y)g(of)g(\015ags)g(whic)m(h)0 5215
y(de\014nes)29 b(whether)h(the)h(corresp)s(onding)d(data)j(pixel)e(is)g
(unde\014ned.)0 5375 y(An)m(y)41 b(column,)h(regardless)e(of)h(it's)f
(in)m(trinsic)e(datat)m(yp)s(e,)45 b(ma)m(y)c(b)s(e)f(read)h(as)g(a)g
(string.)70 b(It)41 b(should)e(b)s(e)h(noted)0 5488 y(ho)m(w)m(ev)m(er)
32 b(that)f(reading)e(a)i(n)m(umeric)e(column)g(as)i(a)f(string)g(is)f
(10)i(-)g(100)g(times)f(slo)m(w)m(er)h(than)f(reading)f(the)i(same)0
5601 y(column)f(as)i(a)g(n)m(um)m(b)s(er)e(due)h(to)h(the)g(large)g(o)m
(v)m(erhead)g(in)f(constructing)g(the)h(formatted)g(strings.)43
b(The)31 b(displa)m(y)0 5714 y(format)26 b(of)g(the)h(returned)d
(strings)h(will)e(b)s(e)j(determined)e(b)m(y)i(the)g(TDISPn)f(k)m(eyw)m
(ord,)j(if)c(it)i(exists,)h(otherwise)e(b)m(y)p eop
%%Page: 94 100
94 99 bop 0 299 a Fi(94)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0
555 y Fi(the)e(datat)m(yp)s(e)h(of)g(the)f(column.)39
b(The)28 b(length)f(of)i(the)f(returned)f(strings)g(can)h(b)s(e)g
(determined)f(with)f(the)j(ftgcdw)0 668 y(routine.)40
b(The)30 b(follo)m(wing)e(TDISPn)i(displa)m(y)e(formats)j(are)f(curren)
m(tly)g(supp)s(orted:)191 923 y Fe(Iw.m)142 b(Integer)191
1036 y(Ow.m)g(Octal)46 b(integer)191 1149 y(Zw.m)142
b(Hexadecimal)45 b(integer)191 1262 y(Fw.d)142 b(Fixed)46
b(floating)g(point)191 1375 y(Ew.d)142 b(Exponential)45
b(floating)g(point)191 1488 y(Dw.d)142 b(Exponential)45
b(floating)g(point)191 1600 y(Gw.d)142 b(General;)46
b(uses)g(Fw.d)h(if)g(significance)d(not)j(lost,)g(else)f(Ew.d)0
1855 y Fi(where)37 b(w)h(is)f(the)h(width)e(in)h(c)m(haracters)i(of)f
(the)h(displa)m(y)m(ed)d(v)-5 b(alues,)40 b(m)d(is)g(the)h(minim)m(um)e
(n)m(um)m(b)s(er)g(of)i(digits)0 1968 y(displa)m(y)m(ed,)29
b(and)h(d)g(is)f(the)i(n)m(um)m(b)s(er)e(of)h(digits)f(to)i(the)g(righ)
m(t)f(of)h(the)f(decimal.)40 b(The)30 b(.m)g(\014eld)f(is)g(optional.)0
2223 y Fh(1)81 b Fi(Put)30 b(elemen)m(ts)h(in)m(to)g(an)f(ASCI)s(I)f
(or)i(binary)e(table)i(column)e(\(in)h(the)h(CDU\).)g(\(The)g(SPP)f
(FSPCLS)f(routine)227 2336 y(has)38 b(an)f(additional)f(in)m(teger)i
(argumen)m(t)g(after)h(the)f(V)-10 b(ALUES)37 b(c)m(haracter)i(string)e
(whic)m(h)f(sp)s(eci\014es)h(the)227 2449 y(size)30 b(of)h(the)g(1st)g
(dimension)c(of)k(this)e(2-D)j(CHAR)e(arra)m(y\).)382
2704 y Fe(FTPCL[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)o(ele)o(m,ne)o
(leme)o(nts)o(,val)o(ues,)41 b(>)47 b(status\))0 2959
y Fh(2)81 b Fi(Put)29 b(elemen)m(ts)h(in)m(to)g(an)g(ASCI)s(I)e(or)i
(binary)e(table)i(column)e(\(in)h(the)h(CDU\))g(substituting)e(the)i
(appropriate)227 3072 y(FITS)i(n)m(ull)e(v)-5 b(alue)31
b(for)h(an)m(y)h(elemen)m(ts)f(that)h(are)f(equal)g(to)h(NULL)-10
b(V)g(AL.)32 b(This)e(family)h(of)h(routines)f(m)m(ust)227
3185 y(NOT)h(b)s(e)g(used)f(to)i(write)f(to)h(v)-5 b(ariable)31
b(length)g(arra)m(y)i(columns.)45 b(F)-8 b(or)33 b(ASCI)s(I)e(T)-8
b(ABLE)32 b(extensions,)h(the)227 3298 y(n)m(ull)39 b(v)-5
b(alue)41 b(de\014ned)f(b)m(y)h(the)g(previous)f(call)g(to)i(FTSNUL)e
(will)f(b)s(e)h(substituted;)45 b(F)-8 b(or)42 b(in)m(teger)g(FITS)227
3410 y(columns,)c(in)e(a)i(binary)e(table)h(the)g(n)m(ull)f(v)-5
b(alue)36 b(de\014ned)h(b)m(y)g(the)g(previous)f(call)h(to)h(FTTNUL)f
(will)e(b)s(e)227 3523 y(substituted;)27 b(F)-8 b(or)28
b(\015oating)g(p)s(oin)m(t)e(FITS)g(columns)g(a)i(sp)s(ecial)e(IEEE)h
(NaN)h(\(Not-a-Num)m(b)s(er\))h(v)-5 b(alue)27 b(will)227
3636 y(b)s(e)j(substituted.)382 3891 y Fe(FTPCN[BIJED]\(unit,colnum)o
(,fr)o(ow,f)o(elem)o(,ne)o(leme)o(nts,)o(val)o(ues,)o(null)o(val)41
b(>)48 b(status\))0 4146 y Fh(3)81 b Fi(Put)37 b(bit)g(v)-5
b(alues)37 b(in)m(to)h(a)g(binary)e(b)m(yte)i(\('B'\))i(or)d(bit)g
(\('X'\))i(table)f(column)f(\(in)f(the)i(CDU\).)h(LRA)-8
b(Y)38 b(is)f(an)227 4259 y(arra)m(y)d(of)g(logical)e(v)-5
b(alues)33 b(corresp)s(onding)e(to)j(the)g(sequence)f(of)h(bits)e(to)i
(b)s(e)f(written.)48 b(If)33 b(LRA)-8 b(Y)34 b(is)e(true)227
4372 y(then)g(the)g(corresp)s(onding)e(bit)h(is)g(set)h(to)h(1,)g
(otherwise)e(the)h(bit)f(is)g(set)i(to)g(0.)45 b(Note)34
b(that)e(in)f(the)h(case)h(of)227 4485 y('X')g(columns,)f(FITSIO)f
(will)f(write)h(to)i(all)e(8)i(bits)e(of)h(eac)m(h)i(b)m(yte)f(whether)
e(they)i(are)g(formally)d(v)-5 b(alid)31 b(or)227 4598
y(not.)46 b(Th)m(us)31 b(if)g(the)h(column)f(is)f(de\014ned)h(as)h
('4X',)i(and)d(one)h(calls)f(FTPCLX)h(with)e(fbit=1)h(and)g(n)m(bit=8,)
227 4711 y(then)j(all)f(8)h(bits)f(will)e(b)s(e)i(written)g(in)m(to)h
(the)g(\014rst)g(b)m(yte)g(\(as)h(opp)s(osed)e(to)i(writing)c(the)k
(\014rst)e(4)h(bits)f(in)m(to)227 4824 y(the)e(\014rst)f(ro)m(w)g(and)g
(then)g(the)h(next)f(4)h(bits)e(in)m(to)i(the)f(next)h(ro)m(w\),)g(ev)m
(en)g(though)f(the)h(last)f(4)h(bits)e(of)i(eac)m(h)227
4937 y(b)m(yte)g(are)g(formally)e(not)i(de\014ned.)382
5191 y Fe(FTPCLX\(unit,colnum,frow,)o(fbi)o(t,nb)o(it,l)o(ray)o(,)42
b(>)47 b(status\))0 5446 y Fh(4)81 b Fi(Set)30 b(table)g(elemen)m(ts)h
(in)e(a)i(column)e(as)i(unde\014ned)382 5701 y Fe
(FTPCLU\(unit,colnum,frow,)o(fel)o(em,n)o(elem)o(ent)o(s,)42
b(>)47 b(status\))p eop
%%Page: 95 101
95 100 bop 0 299 a Fg(9.7.)72 b(FITS)30 b(ASCI)s(I)f(AND)i(BINAR)-8
b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8 b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)
979 b Fi(95)0 555 y Fh(5)81 b Fi(Get)34 b(elemen)m(ts)f(from)g(an)g
(ASCI)s(I)f(or)h(binary)f(table)h(column)f(\(in)g(the)h(CDU\).)i(These)
e(routines)f(return)g(the)227 668 y(v)-5 b(alues)29 b(of)h(the)g(table)
g(column)f(arra)m(y)h(elemen)m(ts.)41 b(Unde\014ned)28
b(arra)m(y)j(elemen)m(ts)f(will)d(b)s(e)i(returned)g(with)g(a)227
781 y(v)-5 b(alue)25 b(=)h(n)m(ullv)-5 b(al,)24 b(unless)g(n)m(ullv)-5
b(al)23 b(=)i(0)h(\(or)g(=)f(')h(')g(for)f(ftgcvs\))i(in)d(whic)m(h)g
(case)j(no)e(c)m(hec)m(king)i(for)e(unde\014ned)227 894
y(v)-5 b(alues)27 b(will)e(b)s(e)i(p)s(erformed.)39 b(The)27
b(ANYF)h(parameter)g(is)f(set)h(to)g(true)g(if)f(an)m(y)g(of)h(the)g
(returned)f(elemen)m(ts)227 1007 y(are)f(unde\014ned.)37
b(\(Note:)i(the)26 b(ftgcl)f(routine)f(simple)f(gets)j(an)g(arra)m(y)f
(of)g(logical)g(data)h(v)-5 b(alues)24 b(without)h(an)m(y)227
1120 y(c)m(hec)m(ks)39 b(for)e(unde\014ned)e(v)-5 b(alues;)40
b(use)d(the)g(ftgc\015)h(routine)e(to)i(c)m(hec)m(k)g(for)f
(unde\014ned)e(logical)i(elemen)m(ts\).)227 1233 y(\(The)29
b(SPP)f(FSGCVS)g(routine)f(has)i(an)f(additional)f(in)m(teger)i
(argumen)m(t)g(after)g(the)g(V)-10 b(ALUES)28 b(c)m(haracter)227
1346 y(string)i(whic)m(h)f(sp)s(eci\014es)g(the)h(size)h(of)f(the)h
(1st)g(dimension)c(of)k(this)e(2-D)j(CHAR)e(arra)m(y\).)382
1595 y Fe(FTGCL\(unit,colnum,frow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42
b(>)47 b(values,status\))382 1708 y(FTGCV[SBIJEDCM]\(unit,col)o(num)o
(,fro)o(w,fe)o(lem)o(,nel)o(emen)o(ts,)o(null)o(val,)41
b(>)1098 1821 y(values,anyf,status\))0 2071 y Fh(6)81
b Fi(Get)44 b(elemen)m(ts)g(and)e(n)m(ull)g(\015ags)h(from)g(an)h(ASCI)
s(I)d(or)j(binary)d(table)j(column)e(\(in)g(the)i(CHDU\).)g(These)227
2184 y(routines)28 b(return)f(the)i(v)-5 b(alues)28 b(of)h(the)g(table)
g(column)e(arra)m(y)j(elemen)m(ts.)40 b(An)m(y)29 b(unde\014ned)d(arra)
m(y)k(elemen)m(ts)227 2297 y(will)k(ha)m(v)m(e)k(the)f(corresp)s
(onding)e(\015agv)-5 b(als)36 b(elemen)m(t)i(set)f(equal)f(to)i(.TR)m
(UE.)f(The)f(ANYF)i(parameter)f(is)227 2409 y(set)30
b(to)g(true)g(if)e(an)m(y)i(of)f(the)h(returned)e(elemen)m(ts)i(are)g
(unde\014ned.)38 b(\(The)29 b(SPP)f(FSGCFS)h(routine)g(has)g(an)227
2522 y(additional)24 b(in)m(teger)j(argumen)m(t)f(after)h(the)f(V)-10
b(ALUES)26 b(c)m(haracter)i(string)d(whic)m(h)f(sp)s(eci\014es)h(the)i
(size)e(of)i(the)227 2635 y(1st)k(dimension)d(of)j(this)e(2-D)i(CHAR)g
(arra)m(y\).)382 2885 y Fe(FTGCF[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o
(ow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42 b(>)1193 2998
y(values,flagvals,anyf,stat)o(us\))0 3247 y Fh(7)81 b
Fi(Get)29 b(an)f(arbitrary)f(data)i(subsection)e(from)h(an)g
(N-dimensional)e(arra)m(y)j(in)e(a)h(binary)f(table)h(v)m(ector)i
(column.)227 3360 y(Unde\014ned)k(pixels)f(in)h(the)i(arra)m(y)g(will)c
(b)s(e)j(set)h(equal)e(to)i(the)g(v)-5 b(alue)35 b(of)g('n)m(ullv)-5
b(al',)35 b(unless)e(n)m(ullv)-5 b(al=0)33 b(in)227 3473
y(whic)m(h)f(case)j(no)e(testing)h(for)f(unde\014ned)e(pixels)h(will)e
(b)s(e)j(p)s(erformed.)49 b(The)32 b(\014rst)h(and)g(last)g(ro)m(ws)h
(in)e(the)227 3586 y(table)27 b(to)g(b)s(e)f(read)g(are)h(sp)s
(eci\014ed)d(b)m(y)j(fpixels\(naxis+1\))d(and)i(lpixels\(naxis+1\),)f
(and)h(hence)g(are)h(treated)227 3699 y(as)f(the)f(next)h(higher)e
(dimension)f(of)i(the)h(FITS)e(N-dimensional)f(arra)m(y)-8
b(.)40 b(The)25 b(INCS)f(parameter)i(sp)s(eci\014es)227
3812 y(the)31 b(sampling)d(in)m(terv)-5 b(al)30 b(in)f(eac)m(h)i
(dimension)d(b)s(et)m(w)m(een)j(the)g(data)g(elemen)m(ts)f(that)h(will)
d(b)s(e)i(returned.)382 4062 y Fe(FTGSV[BIJED]\(unit,colnum)o(,na)o
(xis,)o(naxe)o(s,f)o(pixe)o(ls,l)o(pix)o(els,)o(incs)o(,nu)o(llva)o(l,)
42 b(>)1002 4175 y(array,anyf,status\))0 4424 y Fh(8)81
b Fi(Get)29 b(an)f(arbitrary)f(data)i(subsection)e(from)h(an)g
(N-dimensional)e(arra)m(y)j(in)e(a)h(binary)f(table)h(v)m(ector)i
(column.)227 4537 y(An)m(y)39 b(Unde\014ned)e(pixels)g(in)h(the)h(arra)
m(y)g(will)d(ha)m(v)m(e)k(the)f(corresp)s(onding)e('\015agv)-5
b(als')39 b(elemen)m(t)g(set)g(equal)227 4650 y(to)d(.TR)m(UE.)f(The)f
(\014rst)g(and)g(last)h(ro)m(ws)g(in)e(the)i(table)g(to)g(b)s(e)g(read)
f(are)h(sp)s(eci\014ed)e(b)m(y)i(fpixels\(naxis+1\))227
4763 y(and)k(lpixels\(naxis+1\),)g(and)f(hence)i(are)f(treated)i(as)e
(the)g(next)h(higher)e(dimension)e(of)k(the)f(FITS)g(N-)227
4876 y(dimensional)d(arra)m(y)-8 b(.)66 b(The)38 b(INCS)g(parameter)h
(sp)s(eci\014es)e(the)h(sampling)f(in)m(terv)-5 b(al)38
b(in)f(eac)m(h)j(dimension)227 4989 y(b)s(et)m(w)m(een)31
b(the)g(data)g(elemen)m(ts)g(that)g(will)c(b)s(e)j(returned.)382
5238 y Fe(FTGSF[BIJED]\(unit,colnum)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o
(ls,l)o(pix)o(els,)o(incs)o(,)42 b(>)1002 5351 y
(array,flagvals,anyf,statu)o(s\))0 5601 y Fh(9)81 b Fi(Get)33
b(bit)f(v)-5 b(alues)33 b(from)f(a)h(b)m(yte)h(\('B'\))g(or)f(bit)f
(\(`X`\))i(table)f(column)f(\(in)g(the)h(CDU\).)g(LRA)-8
b(Y)34 b(is)e(an)g(arra)m(y)i(of)227 5714 y(logical)k(v)-5
b(alues)38 b(corresp)s(onding)f(to)i(the)g(sequence)f(of)h(bits)f(to)h
(b)s(e)f(read.)65 b(If)38 b(LRA)-8 b(Y)39 b(is)e(true)i(then)f(the)p
eop
%%Page: 96 102
96 101 bop 0 299 a Fi(96)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)227
555 y Fi(corresp)s(onding)j(bit)g(w)m(as)h(set)h(to)g(1,)h(otherwise)e
(the)g(bit)g(w)m(as)g(set)h(to)g(0.)53 b(Note)35 b(that)g(in)e(the)i
(case)g(of)f('X')227 668 y(columns,)40 b(FITSIO)e(will)e(read)i(all)g
(8)h(bits)f(of)h(eac)m(h)h(b)m(yte)f(whether)f(they)h(are)g(formally)f
(v)-5 b(alid)37 b(or)h(not.)227 781 y(Th)m(us)c(if)f(the)i(column)e(is)
g(de\014ned)g(as)i('4X',)h(and)d(one)i(calls)f(FTGCX)g(with)f(fbit=1)h
(and)f(n)m(bit=8,)i(then)227 894 y(all)28 b(8)i(bits)e(will)e(b)s(e)j
(read)g(from)g(the)g(\014rst)f(b)m(yte)i(\(as)g(opp)s(osed)e(to)i
(reading)e(the)i(\014rst)e(4)i(bits)e(from)g(the)i(\014rst)227
1007 y(ro)m(w)g(and)e(then)h(the)h(\014rst)e(4)i(bits)e(from)h(the)g
(next)g(ro)m(w\),)i(ev)m(en)f(though)f(the)g(last)g(4)h(bits)e(of)h
(eac)m(h)i(b)m(yte)f(are)227 1120 y(formally)f(not)i(de\014ned.)382
1385 y Fe(FTGCX\(unit,colnum,frow,f)o(bit)o(,nbi)o(t,)42
b(>)47 b(lray,status\))0 1650 y Fh(10)f Fi(Read)31 b(an)m(y)g
(consecutiv)m(e)g(set)g(of)g(bits)f(from)g(an)g('X')i(or)e('B')i
(column)d(and)h(in)m(terpret)g(them)h(as)g(an)f(unsigned)227
1763 y(n-bit)j(in)m(teger.)53 b(NBIT)35 b(m)m(ust)f(b)s(e)f(less)h
(than)g(or)g(equal)g(to)h(16)g(when)f(calling)e(FTGCXI,)j(and)f(less)f
(than)227 1876 y(or)f(equal)f(to)h(32)g(when)e(calling)g(FTGCXJ;)i
(there)f(is)g(no)g(limit)e(on)j(the)f(v)-5 b(alue)31
b(of)h(NBIT)f(for)g(FTGCXD,)227 1989 y(but)38 b(the)h(returned)e
(double)h(precision)e(v)-5 b(alue)38 b(only)g(has)g(48)i(bits)d(of)i
(precision)e(on)h(most)h(32-bit)g(w)m(ord)227 2102 y(mac)m(hines.)63
b(The)37 b(NBITS)g(bits)g(are)h(in)m(terpreted)f(as)h(an)g(unsigned)d
(in)m(teger)k(unless)d(NBITS)h(=)g(16)i(\(in)227 2215
y(FTGCXI\))e(or)g(32)g(\(in)f(FTGCXJ\))g(in)f(whic)m(h)h(case)h(the)g
(string)f(of)g(bits)g(are)h(in)m(terpreted)e(as)i(16-bit)g(or)227
2328 y(32-bit)j(2's)g(complemen)m(t)g(signed)e(in)m(tegers.)68
b(If)39 b(NR)m(O)m(WS)i(is)d(greater)j(than)e(1)h(then)f(the)h(same)g
(set)g(of)227 2441 y(bits)33 b(will)e(b)s(e)i(read)h(from)f(sequen)m
(tial)g(ro)m(ws)h(in)e(the)i(table)f(starting)h(with)e(ro)m(w)i(FR)m(O)
m(W.)h(Note)g(that)g(the)227 2554 y(n)m(um)m(b)s(ering)26
b(con)m(v)m(en)m(tion)j(used)e(here)g(for)h(the)g(FBIT)f(parameter)i
(adopts)e(1)h(for)g(the)g(\014rst)f(elemen)m(t)h(of)g(the)227
2667 y(v)m(ector)k(of)f(bits;)e(this)h(is)f(the)i(Most)g(Signi\014can)m
(t)e(Bit)h(of)h(the)f(in)m(teger)h(v)-5 b(alue.)382 2932
y Fe(FTGCX[IJD]\(unit,colnum,f)o(row)o(,nro)o(ws,f)o(bit)o(,nbi)o(t,)42
b(>)47 b(array,status\))0 3197 y Fh(11)f Fi(Get)37 b(the)e(descriptor)g
(for)g(a)h(v)-5 b(ariable)35 b(length)g(column)f(in)g(a)i(binary)e
(table.)56 b(The)35 b(descriptor)g(consists)g(of)227
3310 y(2)d(in)m(teger)f(parameters:)42 b(the)31 b(n)m(um)m(b)s(er)f(of)
h(elemen)m(ts)h(in)d(the)i(arra)m(y)h(and)e(the)h(starting)g(o\013set)h
(relativ)m(e)f(to)227 3423 y(the)d(start)f(of)g(the)h(heap.)39
b(The)27 b(\014rst)f(routine)g(returns)g(a)h(single)f(descriptor)g
(whereas)h(the)g(second)g(routine)227 3536 y(returns)i(the)i
(descriptors)e(for)h(a)h(range)g(of)f(ro)m(ws)h(in)e(the)h(table.)382
3801 y Fe(FTGDES\(unit,colnum,rownu)o(m,)41 b(>)48 b
(nelements,offset,status\))382 3914 y(FFGDESSunit,colnum,first)o(row)o
(,nro)o(ws)42 b(>)47 b(nelements,offset,)c(status\))0
4179 y Fh(12)j Fi(Put)29 b(the)g(descriptor)f(for)h(a)h(v)-5
b(ariable)28 b(length)h(column)f(in)g(a)h(binary)f(table.)40
b(This)27 b(subroutine)h(can)h(b)s(e)g(used)227 4292
y(in)23 b(conjunction)h(with)f(FTGDES)h(to)h(enable)f(2)h(or)f(more)g
(arra)m(ys)h(to)g(p)s(oin)m(t)e(to)i(the)g(same)g(storage)g(lo)s
(cation)227 4405 y(to)31 b(sa)m(v)m(e)h(storage)g(space)f(if)e(the)i
(arra)m(ys)g(are)g(iden)m(tical.)382 4671 y Fe
(FTPDES\(unit,colnum,rownu)o(m,n)o(elem)o(ents)o(,of)o(fset)o(,)42
b(>)47 b(status\))0 5011 y Fd(9.8)135 b(Ro)l(w)46 b(Selection)g(and)f
(Calculator)h(Routines)0 5262 y Fi(These)21 b(routines)e(all)h(parse)h
(and)f(ev)-5 b(aluate)22 b(an)e(input)f(string)h(con)m(taining)h(a)g
(user)f(de\014ned)g(arithmetic)g(expression.)0 5375 y(The)29
b(\014rst)f(3)i(routines)e(select)i(ro)m(ws)f(in)f(a)i(FITS)e(table,)i
(based)f(on)g(whether)g(the)g(expression)f(ev)-5 b(aluates)30
b(to)g(true)0 5488 y(\(not)e(equal)e(to)i(zero\))g(or)f(false)g
(\(zero\).)41 b(The)27 b(other)g(routines)f(ev)-5 b(aluate)28
b(the)f(expression)f(and)g(calculate)i(a)f(v)-5 b(alue)0
5601 y(for)35 b(eac)m(h)h(ro)m(w)g(of)f(the)h(table.)55
b(The)35 b(allo)m(w)m(ed)g(expression)f(syn)m(tax)h(is)g(describ)s(ed)e
(in)h(the)h(ro)m(w)h(\014lter)e(section)h(in)0 5714 y(the)i(earlier)f
(`Extended)g(File)g(Name)h(Syn)m(tax')g(c)m(hapter)h(of)f(this)e(do)s
(cumen)m(t.)60 b(The)36 b(expression)g(ma)m(y)h(also)g(b)s(e)p
eop
%%Page: 97 103
97 102 bop 0 299 a Fg(9.8.)72 b(R)m(O)m(W)31 b(SELECTION)e(AND)i
(CALCULA)-8 b(TOR)29 b(R)m(OUTINES)1382 b Fi(97)0 555
y(written)27 b(to)j(a)e(text)i(\014le,)e(and)g(the)h(name)f(of)h(the)f
(\014le,)g(prep)s(ended)f(with)g(a)i('@')f(c)m(haracter)i(ma)m(y)f(b)s
(e)f(supplied)d(for)0 668 y(the)34 b('expr')g(parameter)g(\(e.g.)53
b('@\014lename.txt'\).)e(The)34 b(expression)e(in)h(the)h(\014le)f(can)
h(b)s(e)f(arbitrarily)e(complex)0 781 y(and)k(extend)h(o)m(v)m(er)h(m)m
(ultiple)c(lines)h(of)i(the)f(\014le.)56 b(Lines)35 b(that)h(b)s(egin)e
(with)g(2)i(slash)f(c)m(haracters)i(\('//'\))h(will)33
b(b)s(e)0 894 y(ignored)c(and)h(ma)m(y)h(b)s(e)f(used)g(to)h(add)e
(commen)m(ts)j(to)f(the)f(\014le.)0 1171 y Fh(1)81 b
Fi(Ev)-5 b(aluate)37 b(a)g(b)s(o)s(olean)f(expression)g(o)m(v)m(er)i
(the)g(indicated)d(ro)m(ws,)k(returning)c(an)i(arra)m(y)h(of)f(\015ags)
g(indicating)227 1284 y(whic)m(h)29 b(ro)m(ws)i(ev)-5
b(aluated)30 b(to)h(TR)m(UE/F)-10 b(ALSE)430 1560 y Fe
(FTFROW\(unit,expr,firstr)o(ow,)41 b(nrows,)46 b(>)i(n_good_rows,)c
(row_status,)h(status\))0 1837 y Fh(2)81 b Fi(Find)28
b(the)j(\014rst)f(ro)m(w)g(whic)m(h)f(satis\014es)h(the)h(input)d(b)s
(o)s(olean)h(expression)430 2114 y Fe(FTFFRW\(unit,)44
b(expr,)i(>)i(rownum,)e(status\))0 2391 y Fh(3)81 b Fi(Ev)-5
b(aluate)34 b(an)g(expression)g(on)g(all)f(ro)m(ws)i(of)f(a)h(table.)53
b(If)34 b(the)g(input)f(and)h(output)g(\014les)f(are)i(not)g(the)f
(same,)227 2503 y(cop)m(y)39 b(the)f(TR)m(UE)g(ro)m(ws)h(to)f(the)h
(output)e(\014le.)63 b(If)38 b(the)g(\014les)f(are)i(the)f(same,)j
(delete)d(the)g(F)-10 b(ALSE)38 b(ro)m(ws)227 2616 y(\(preserv)m(e)31
b(the)g(TR)m(UE)f(ro)m(ws\).)430 2893 y Fe(FTSROW\(inunit,)43
b(outunit,)j(expr,)g(>)i(status\))0 3170 y Fh(4)81 b
Fi(Calculate)26 b(an)h(expression)e(for)i(the)f(indicated)g(ro)m(ws)g
(of)h(a)g(table,)h(returning)d(the)i(results,)f(cast)i(as)f(datat)m(yp)
s(e)227 3283 y(\(TSHOR)-8 b(T,)32 b(TDOUBLE,)h(etc\),)h(in)d(arra)m(y)
-8 b(.)48 b(If)31 b(n)m(ulv)-5 b(al==NULL,)31 b(UNDEFs)i(will)c(b)s(e)j
(zero)s(ed)g(out.)47 b(F)-8 b(or)227 3396 y(v)m(ector)37
b(results,)e(the)g(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)h(returned)d(ma)m
(y)j(b)s(e)e(less)g(than)h(nelemen)m(ts)f(if)g(nelemen)m(ts)h(is)227
3509 y(not)30 b(an)g(ev)m(en)h(m)m(ultiple)c(of)j(the)g(result)f
(dimension.)38 b(Call)28 b(FTTEXP)i(to)g(obtain)g(the)g(dimensions)d
(of)j(the)227 3621 y(results.)430 3898 y Fe(FTCROW\(unit,datatype,ex)o
(pr,)o(firs)o(trow)o(,ne)o(leme)o(nts,)o(nul)o(val,)41
b(>)620 4011 y(array,anynul,status\))0 4288 y Fh(5)81
b Fi(Ev)-5 b(aluate)32 b(an)h(expression)e(and)i(write)e(the)i(result)f
(either)g(to)i(a)f(column)e(\(if)h(the)h(expression)e(is)h(a)h
(function)227 4401 y(of)d(other)g(columns)f(in)f(the)i(table\))g(or)g
(to)g(a)h(k)m(eyw)m(ord)f(\(if)f(the)h(expression)e(ev)-5
b(aluates)31 b(to)f(a)g(constan)m(t)i(and)227 4514 y(is)e(not)g(a)h
(function)e(of)i(other)f(columns)g(in)f(the)h(table\).)41
b(In)30 b(the)h(former)e(case,)j(the)f(parName)f(parameter)227
4627 y(is)39 b(the)h(name)f(of)h(the)g(column)e(\(whic)m(h)h(ma)m(y)h
(or)f(ma)m(y)h(not)g(already)f(exist\))h(in)m(to)f(whic)m(h)g(to)h
(write)f(the)227 4739 y(results,)e(and)g(parInfo)e(con)m(tains)i(an)g
(optional)e(TF)m(ORM)i(k)m(eyw)m(ord)g(v)-5 b(alue)37
b(if)e(a)i(new)f(column)g(is)f(b)s(eing)227 4852 y(created.)42
b(If)28 b(a)h(TF)m(ORM)h(v)-5 b(alue)28 b(is)g(not)h(sp)s(eci\014ed)f
(then)g(a)i(default)e(format)h(will)e(b)s(e)h(used,)h(dep)s(ending)d
(on)227 4965 y(the)35 b(expression.)53 b(If)34 b(the)h(expression)e(ev)
-5 b(aluates)36 b(to)f(a)g(constan)m(t,)i(then)e(the)g(result)e(will)f
(b)s(e)i(written)g(to)227 5078 y(the)28 b(k)m(eyw)m(ord)g(name)f(giv)m
(en)g(b)m(y)h(the)f(parName)h(parameter,)h(and)d(the)i(parInfo)e
(parameter)i(ma)m(y)g(b)s(e)f(used)227 5191 y(to)k(supply)d(an)i
(optional)g(commen)m(t)h(for)f(the)g(k)m(eyw)m(ord.)42
b(If)29 b(the)i(k)m(eyw)m(ord)g(do)s(es)f(not)g(already)g(exist,)g
(then)227 5304 y(the)g(name)f(of)h(the)g(k)m(eyw)m(ord)g(m)m(ust)f(b)s
(e)g(preceded)g(with)f(a)i('#')f(c)m(haracter,)j(otherwise)d(the)g
(result)g(will)e(b)s(e)227 5417 y(written)j(to)h(a)g(column)e(with)g
(that)i(name.)430 5694 y Fe(FTCALC\(inunit,)43 b(expr,)k(outunit,)e
(parName,)h(parInfo,)f(>)j(status\))p eop
%%Page: 98 104
98 103 bop 0 299 a Fi(98)1319 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0
555 y Fh(6)81 b Fi(This)37 b(calculator)j(routine)f(is)f(similar)f(to)j
(the)g(previous)e(routine,)j(except)g(that)f(the)g(expression)e(is)h
(only)227 668 y(ev)-5 b(aluated)41 b(o)m(v)m(er)g(the)f(sp)s(eci\014ed)
f(ro)m(w)h(ranges.)70 b(nranges)39 b(sp)s(eci\014es)g(the)h(n)m(um)m(b)
s(er)f(of)h(ro)m(w)h(ranges,)i(and)227 781 y(\014rstro)m(w)30
b(and)g(lastro)m(w)g(giv)m(e)h(the)g(starting)f(and)g(ending)f(ro)m(w)h
(n)m(um)m(b)s(er)f(of)i(eac)m(h)g(range.)430 1031 y Fe
(FTCALC_RNG\(inunit,)42 b(expr,)47 b(outunit,)e(parName,)h(parInfo,)573
1144 y(nranges,)f(firstrow,)h(lastrow,)f(>)j(status\))0
1394 y Fh(7)81 b Fi(Ev)-5 b(aluate)30 b(the)h(giv)m(en)f(expression)f
(and)h(return)f(information)g(on)h(the)h(result.)430
1643 y Fe(FTTEXP\(unit,)44 b(expr,)i(>)i(datatype,)d(nelem,)h(naxis,)g
(naxes,)g(status\))0 1976 y Fd(9.9)135 b(Celestial)48
b(Co)t(ordinate)e(System)f(Subroutines)0 2226 y Fi(The)36
b(FITS)g(comm)m(unit)m(y)g(has)g(adopted)h(a)g(set)g(of)g(k)m(eyw)m
(ord)g(con)m(v)m(en)m(tions)g(that)g(de\014ne)f(the)h(transformations)0
2339 y(needed)30 b(to)i(con)m(v)m(ert)g(b)s(et)m(w)m(een)f(pixel)e(lo)s
(cations)h(in)f(an)i(image)g(and)f(the)g(corresp)s(onding)f(celestial)h
(co)s(ordinates)0 2452 y(on)25 b(the)h(sky)-8 b(,)27
b(or)e(more)g(generally)-8 b(,)27 b(that)f(de\014ne)e(w)m(orld)g(co)s
(ordinates)i(that)f(are)h(to)g(b)s(e)f(asso)s(ciated)h(with)e(an)m(y)i
(pixel)0 2564 y(lo)s(cation)34 b(in)f(an)i(n-dimensional)c(FITS)j(arra)
m(y)-8 b(.)54 b(CFITSIO)33 b(is)g(distributed)f(with)h(a)i(couple)e(of)
i(self-con)m(tained)0 2677 y(W)-8 b(orld)27 b(Co)s(ordinate)f(System)g
(\(W)m(CS\))i(routines,)f(ho)m(w)m(ev)m(er,)i(these)f(routines)e(DO)h
(NOT)f(supp)s(ort)f(all)h(the)h(latest)0 2790 y(W)m(CS)38
b(con)m(v)m(en)m(tions,)j(so)e(it)f(is)f(STR)m(ONGL)-8
b(Y)38 b(RECOMMENDED)h(that)f(soft)m(w)m(are)i(dev)m(elop)s(ers)d(use)h
(a)h(more)0 2903 y(robust)30 b(external)g(W)m(CS)g(library)-8
b(.)39 b(Sev)m(eral)30 b(recommended)g(libraries)e(are:)95
3153 y Fe(WCSLIB)47 b(-)95 b(supported)45 b(by)i(Mark)g(Calabretta)95
3266 y(WCSTools)f(-)h(supported)f(by)h(Doug)g(Mink)95
3379 y(AST)g(library)f(-)i(developed)d(by)i(the)g(U.K.)g(Starlink)e
(project)0 3629 y Fi(More)30 b(information)d(ab)s(out)i(the)g(W)m(CS)g
(k)m(eyw)m(ord)h(con)m(v)m(en)m(tions)g(and)e(links)f(to)j(all)e(of)h
(these)g(W)m(CS)g(libraries)e(can)0 3742 y(b)s(e)j(found)f(on)h(the)h
(FITS)e(Supp)s(ort)g(O\016ce)h(w)m(eb)g(site)h(at)g(h)m
(ttp://\014ts.gsfc.nasa.go)m(v)j(under)29 b(the)h(W)m(CS)h(link.)0
3902 y(The)i(functions)g(pro)m(vided)g(in)f(these)j(external)e(W)m(CS)h
(libraries)e(will)f(need)j(access)h(to)g(the)f(W)m(CS)g(information)0
4015 y(con)m(tained)g(in)e(the)i(FITS)f(\014le)g(headers.)51
b(One)33 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)g(to)f(pass)g(this)e
(information)g(to)j(the)f(extermal)0 4128 y(library)j(is)i(to)i(use)e
(FITSIO)g(to)h(cop)m(y)h(the)f(header)f(k)m(eyw)m(ords)h(in)m(to)g(one)
g(long)f(c)m(haracter)j(string,)f(and)e(then)0 4240 y(pass)29
b(this)g(string)g(to)h(an)g(in)m(terface)g(routine)f(in)g(the)h
(external)f(library)f(that)i(will)d(extract)32 b(the)e(necessary)g(W)m
(CS)0 4353 y(information)f(\(e.g.,)j(see)f(the)f(astFitsChan)g(and)g
(astPutCards)g(routines)f(in)g(the)i(Starlink)d(AST)i(library\).)0
4514 y(The)24 b(follo)m(wing)g(FITSIO)f(routines)h(DO)h(NOT)f(supp)s
(ort)f(the)i(more)g(recen)m(t)h(W)m(CS)f(con)m(v)m(en)m(tions)h(that)g
(ha)m(v)m(e)g(b)s(een)0 4626 y(appro)m(v)m(ed)37 b(as)h(part)f(of)g
(the)h(FITS)e(standard.)61 b(Consequen)m(tly)-8 b(,)38
b(the)g(follo)m(wing)d(routines)i(ARE)g(NO)m(W)h(DEP-)0
4739 y(RECA)-8 b(TED.)29 b(It)f(is)g(STR)m(ONGL)-8 b(Y)28
b(RECOMMENDED)h(that)g(soft)m(w)m(are)h(dev)m(elop)s(ers)e(not)h(use)f
(these)h(routines,)0 4852 y(and)h(instead)f(use)h(an)h(external)f(W)m
(CS)g(library)-8 b(,)29 b(as)i(describ)s(ed)d(ab)s(o)m(v)m(e.)0
5012 y(These)21 b(routines)f(are)h(included)d(mainly)h(for)i(bac)m(kw)m
(ard)g(compatibilit)m(y)f(with)f(existing)h(soft)m(w)m(are.)39
b(They)21 b(supp)s(ort)0 5125 y(the)30 b(follo)m(wing)f(standard)g(map)
g(pro)5 b(jections:)40 b(-SIN,)30 b(-T)-8 b(AN,)31 b(-AR)m(C,)g(-NCP)-8
b(,)30 b(-GLS,)g(-MER,)h(and)e(-AIT)h(\(these)0 5238
y(are)f(the)g(legal)f(v)-5 b(alues)28 b(for)g(the)h(co)s(ordt)m(yp)s(e)
f(parameter\).)41 b(These)28 b(routines)g(are)h(based)f(on)g(similar)e
(functions)h(in)0 5351 y(Classic)i(AIPS.)h(All)f(the)i(angular)e(quan)m
(tities)h(are)h(giv)m(en)f(in)f(units)g(of)h(degrees.)0
5601 y Fh(1)81 b Fi(Get)22 b(the)g(v)-5 b(alues)20 b(of)i(all)e(the)i
(standard)f(FITS)f(celestial)h(co)s(ordinate)h(system)f(k)m(eyw)m(ords)
h(from)f(the)h(header)f(of)h(a)227 5714 y(FITS)j(image)h(\(i.e.,)h(the)
e(primary)f(arra)m(y)i(or)f(an)h(image)f(extension\).)39
b(These)26 b(v)-5 b(alues)24 b(ma)m(y)i(then)g(b)s(e)e(passed)p
eop
%%Page: 99 105
99 104 bop 0 299 a Fg(9.10.)73 b(FILE)30 b(CHECKSUM)f(SUBR)m(OUTINES)
2080 b Fi(99)227 555 y(to)39 b(the)e(subroutines)f(that)i(p)s(erform)e
(the)i(co)s(ordinate)f(transformations.)62 b(If)37 b(an)m(y)h(or)g(all)
e(of)i(the)g(W)m(CS)227 668 y(k)m(eyw)m(ords)32 b(are)f(not)g(presen)m
(t,)h(then)f(default)f(v)-5 b(alues)30 b(will)f(b)s(e)h(returned.)41
b(If)31 b(the)g(\014rst)g(co)s(ordinate)f(axis)h(is)227
781 y(the)e(declination-lik)m(e)e(co)s(ordinate,)i(then)f(this)f
(routine)h(will)e(sw)m(ap)i(them)h(so)g(that)g(the)g(longitudinal-lik)m
(e)227 894 y(co)s(ordinate)h(is)g(returned)f(as)i(the)f(\014rst)g
(axis.)227 1045 y(If)35 b(the)h(\014le)e(uses)h(the)g(new)m(er)h('CDj)p
1454 1045 28 4 v 32 w(i')f(W)m(CS)g(transformation)g(matrix)g(k)m(eyw)m
(ords)g(instead)g(of)g(old)g(st)m(yle)227 1158 y('CDEL)-8
b(Tn')37 b(and)f('CR)m(OT)-8 b(A2')38 b(k)m(eyw)m(ords,)h(then)e(this)e
(routine)h(will)e(calculate)k(and)e(return)g(the)h(v)-5
b(alues)227 1271 y(of)33 b(the)g(equiv)-5 b(alen)m(t)33
b(old-st)m(yle)f(k)m(eyw)m(ords.)49 b(Note)34 b(that)g(the)f(con)m(v)m
(ersion)g(from)f(the)i(new-st)m(yle)f(k)m(eyw)m(ords)227
1383 y(to)f(the)f(old-st)m(yle)f(v)-5 b(alues)30 b(is)g(sometimes)g
(only)g(an)h(appro)m(ximation,)f(so)g(if)g(the)h(appro)m(ximation)f(is)
f(larger)227 1496 y(than)37 b(an)h(in)m(ternally)d(de\014ned)h
(threshold)g(lev)m(el,)j(then)e(CFITSIO)f(will)f(still)g(return)h(the)i
(appro)m(ximate)227 1609 y(W)m(CS)f(k)m(eyw)m(ord)g(v)-5
b(alues,)38 b(but)e(will)e(also)j(return)e(with)h(status)h(=)f(506,)k
(to)e(w)m(arn)e(the)h(calling)e(program)227 1722 y(that)30
b(appro)m(ximations)d(ha)m(v)m(e)j(b)s(een)e(made.)40
b(It)29 b(is)f(then)g(up)g(to)h(the)g(calling)f(program)g(to)h(decide)g
(whether)227 1835 y(the)34 b(appro)m(ximations)e(are)i(su\016cien)m
(tly)e(accurate)k(for)d(the)h(particular)d(application,)i(or)h(whether)
f(more)227 1948 y(precise)d(W)m(CS)g(transformations)g(m)m(ust)g(b)s(e)
g(p)s(erformed)f(using)g(new-st)m(yle)h(W)m(CS)h(k)m(eyw)m(ords)f
(directly)-8 b(.)382 2209 y Fe(FTGICS\(unit,)44 b(>)k
(xrval,yrval,xrpix,yrpix)o(,xin)o(c,yi)o(nc,)o(rot,)o(coor)o(dty)o
(pe,s)o(tatu)o(s\))0 2470 y Fh(2)81 b Fi(Get)34 b(the)f(v)-5
b(alues)32 b(of)h(all)f(the)h(standard)f(FITS)h(celestial)f(co)s
(ordinate)h(system)g(k)m(eyw)m(ords)g(from)g(the)g(header)227
2583 y(of)j(a)h(FITS)e(table)g(where)h(the)g(X)g(and)f(Y)h(\(or)g(RA)g
(and)g(DEC)f(co)s(ordinates)h(are)g(stored)g(in)f(2)h(separate)227
2695 y(columns)31 b(of)h(the)g(table.)45 b(These)31 b(v)-5
b(alues)31 b(ma)m(y)i(then)e(b)s(e)h(passed)f(to)h(the)g(subroutines)e
(that)i(p)s(erform)f(the)227 2808 y(co)s(ordinate)f(transformations.)
382 3069 y Fe(FTGTCS\(unit,xcol,ycol,)42 b(>)716 3182
y(xrval,yrval,xrpix,yrpix,)o(xinc)o(,yi)o(nc,r)o(ot,c)o(oor)o(dtyp)o
(e,st)o(atu)o(s\))0 3443 y Fh(3)81 b Fi(Calculate)40
b(the)i(celestial)e(co)s(ordinate)h(corresp)s(onding)e(to)j(the)f
(input)e(X)i(and)g(Y)g(pixel)e(lo)s(cation)i(in)f(the)227
3556 y(image.)382 3817 y Fe(FTWLDP\(xpix,ypix,xrval,y)o(rva)o(l,xr)o
(pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 3929
y(coordtype,)45 b(>)i(xpos,ypos,status\))0 4190 y Fh(4)81
b Fi(Calculate)40 b(the)i(X)f(and)f(Y)h(pixel)f(lo)s(cation)g(corresp)s
(onding)f(to)j(the)f(input)e(celestial)i(co)s(ordinate)g(in)f(the)227
4303 y(image.)382 4564 y Fe(FTXYPX\(xpos,ypos,xrval,y)o(rva)o(l,xr)o
(pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 4677
y(coordtype,)45 b(>)i(xpix,ypix,status\))0 5012 y Fd(9.10)136
b(File)45 b(Chec)l(ksum)g(Subroutines)0 5262 y Fi(The)33
b(follo)m(wing)e(routines)h(either)h(compute)g(or)h(v)-5
b(alidate)32 b(the)i(c)m(hec)m(ksums)f(for)g(the)h(CHDU.)g(The)e(D)m(A)
-8 b(T)g(ASUM)0 5375 y(k)m(eyw)m(ord)33 b(is)e(used)g(to)i(store)f(the)
h(n)m(umerical)d(v)-5 b(alue)32 b(of)g(the)g(32-bit,)h(1's)g(complemen)
m(t)f(c)m(hec)m(ksum)h(for)f(the)g(data)0 5488 y(unit)25
b(alone.)39 b(If)25 b(there)h(is)g(no)f(data)i(unit)e(then)g(the)h(v)-5
b(alue)26 b(is)f(set)h(to)h(zero.)40 b(The)26 b(n)m(umerical)e(v)-5
b(alue)26 b(is)f(stored)h(as)g(an)0 5601 y(ASCI)s(I)20
b(string)h(of)i(digits,)f(enclosed)g(in)e(quotes,)25
b(b)s(ecause)d(the)g(v)-5 b(alue)22 b(ma)m(y)g(b)s(e)f(to)s(o)i(large)f
(to)h(represen)m(t)f(as)g(a)h(32-bit)0 5714 y(signed)k(in)m(teger.)40
b(The)27 b(CHECKSUM)g(k)m(eyw)m(ord)i(is)e(used)g(to)h(store)h(the)f
(ASCI)s(I)e(enco)s(ded)i(COMPLEMENT)f(of)p eop
%%Page: 100 106
100 105 bop 0 299 a Fi(100)1274 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0
555 y Fi(the)c(c)m(hec)m(ksum)h(for)f(the)h(en)m(tire)f(HDU.)h(Storing)
e(the)i(complemen)m(t,)g(rather)f(than)g(the)h(actual)f(c)m(hec)m
(ksum,)i(forces)0 668 y(the)k(c)m(hec)m(ksum)h(for)f(the)h(whole)e(HDU)
i(to)g(equal)f(zero.)47 b(If)31 b(the)i(\014le)e(has)h(b)s(een)f(mo)s
(di\014ed)f(since)i(the)g(c)m(hec)m(ksums)0 781 y(w)m(ere)39
b(computed,)i(then)e(the)g(HDU)g(c)m(hec)m(ksum)h(will)c(usually)g(not)
j(equal)g(zero.)66 b(These)39 b(c)m(hec)m(ksum)g(k)m(eyw)m(ord)0
894 y(con)m(v)m(en)m(tions)33 b(are)g(based)f(on)g(a)g(pap)s(er)f(b)m
(y)h(Rob)g(Seaman)g(published)d(in)i(the)h(pro)s(ceedings)f(of)h(the)h
(AD)m(ASS)f(IV)0 1007 y(conference)f(in)e(Baltimore)h(in)g(No)m(v)m(em)
m(b)s(er)h(1994)h(and)e(a)h(later)f(revision)f(in)g(June)g(1995.)0
1237 y Fh(1)81 b Fi(Compute)33 b(and)g(write)g(the)h(D)m(A)-8
b(T)g(ASUM)35 b(and)e(CHECKSUM)g(k)m(eyw)m(ord)h(v)-5
b(alues)33 b(for)g(the)h(CHDU)g(in)m(to)g(the)227 1350
y(curren)m(t)25 b(header.)38 b(The)24 b(D)m(A)-8 b(T)g(ASUM)27
b(v)-5 b(alue)24 b(is)f(the)i(32-bit)g(c)m(hec)m(ksum)g(for)f(the)h
(data)g(unit,)g(expressed)f(as)h(a)227 1463 y(decimal)30
b(in)m(teger)g(enclosed)g(in)f(single)g(quotes.)41 b(The)30
b(CHECKSUM)g(k)m(eyw)m(ord)g(v)-5 b(alue)30 b(is)f(a)i(16-c)m(haracter)
227 1576 y(string)i(whic)m(h)f(is)h(the)g(ASCI)s(I-enco)s(ded)f(v)-5
b(alue)33 b(for)h(the)f(complemen)m(t)h(of)g(the)f(c)m(hec)m(ksum)i
(for)e(the)h(whole)227 1689 y(HDU.)h(If)e(these)g(k)m(eyw)m(ords)h
(already)f(exist,)h(their)e(v)-5 b(alues)33 b(will)e(b)s(e)i(up)s
(dated)f(only)g(if)g(necessary)i(\(i.e.,)h(if)227 1802
y(the)c(\014le)e(has)h(b)s(een)g(mo)s(di\014ed)e(since)i(the)h
(original)d(k)m(eyw)m(ord)j(v)-5 b(alues)30 b(w)m(ere)h(computed\).)382
2033 y Fe(FTPCKS\(unit,)44 b(>)k(status\))0 2263 y Fh(2)81
b Fi(Up)s(date)28 b(the)h(CHECKSUM)e(k)m(eyw)m(ord)i(v)-5
b(alue)28 b(in)f(the)i(CHDU,)g(assuming)e(that)i(the)f(D)m(A)-8
b(T)g(ASUM)30 b(k)m(eyw)m(ord)227 2376 y(exists)35 b(and)g(already)g
(has)g(the)h(correct)g(v)-5 b(alue.)55 b(This)34 b(routine)g
(calculates)i(the)g(new)f(c)m(hec)m(ksum)h(for)f(the)227
2489 y(curren)m(t)40 b(header)g(unit,)i(adds)d(it)h(to)h(the)f(data)h
(unit)e(c)m(hec)m(ksum,)44 b(enco)s(des)c(the)g(v)-5
b(alue)40 b(in)m(to)g(an)g(ASCI)s(I)227 2602 y(string,)30
b(and)g(writes)f(the)i(string)e(to)i(the)g(CHECKSUM)e(k)m(eyw)m(ord.)
382 2833 y Fe(FTUCKS\(unit,)44 b(>)k(status\))0 3063
y Fh(3)81 b Fi(V)-8 b(erify)34 b(the)g(CHDU)h(b)m(y)g(computing)e(the)i
(c)m(hec)m(ksums)g(and)f(comparing)g(them)g(with)f(the)i(k)m(eyw)m
(ords.)53 b(The)227 3176 y(data)34 b(unit)e(is)g(v)m(eri\014ed)g
(correctly)h(if)f(the)i(computed)f(c)m(hec)m(ksum)g(equals)g(the)g(v)-5
b(alue)33 b(of)g(the)g(D)m(A)-8 b(T)g(ASUM)227 3289 y(k)m(eyw)m(ord.)64
b(The)37 b(c)m(hec)m(ksum)i(for)f(the)g(en)m(tire)f(HDU)i(\(header)f
(plus)e(data)j(unit\))d(is)h(correct)i(if)e(it)h(equals)227
3402 y(zero.)55 b(The)34 b(output)g(D)m(A)-8 b(T)g(A)m(OK)37
b(and)d(HDUOK)h(parameters)g(in)e(this)h(subroutine)e(are)j(in)m
(tegers)g(whic)m(h)227 3515 y(will)24 b(ha)m(v)m(e)j(a)f(v)-5
b(alue)26 b(=)g(1)g(if)f(the)i(data)f(or)g(HDU)h(is)e(v)m(eri\014ed)h
(correctly)-8 b(,)28 b(a)e(v)-5 b(alue)26 b(=)f(0)i(if)e(the)h(D)m(A)-8
b(T)g(ASUM)28 b(or)227 3628 y(CHECKSUM)h(k)m(eyw)m(ord)g(is)g(not)g
(presen)m(t,)h(or)f(v)-5 b(alue)29 b(=)g(-1)h(if)e(the)i(computed)f(c)m
(hec)m(ksum)h(is)e(not)i(correct.)382 3858 y Fe(FTVCKS\(unit,)44
b(>)k(dataok,hduok,status\))0 4089 y Fh(4)81 b Fi(Compute)25
b(and)h(return)f(the)i(c)m(hec)m(ksum)g(v)-5 b(alues)25
b(for)h(the)h(CHDU)f(\(as)h(double)e(precision)g(v)-5
b(ariables\))25 b(without)227 4202 y(creating)45 b(or)f(mo)s(difying)e
(the)j(CHECKSUM)e(and)h(D)m(A)-8 b(T)g(ASUM)46 b(k)m(eyw)m(ords.)83
b(This)43 b(routine)g(is)h(used)227 4315 y(in)m(ternally)29
b(b)m(y)h(FTV)m(CKS,)g(but)g(ma)m(y)h(b)s(e)e(useful)g(in)g(other)i
(situations)e(as)h(w)m(ell.)382 4545 y Fe(FTGCKS\(unit,)44
b(>)k(datasum,hdusum,status\))0 4776 y Fh(5)81 b Fi(Enco)s(de)33
b(a)h(c)m(hec)m(ksum)h(v)-5 b(alue)33 b(\(stored)h(in)f(a)h(double)f
(precision)f(v)-5 b(ariable\))33 b(in)m(to)g(a)i(16-c)m(haracter)h
(string.)50 b(If)227 4889 y(COMPLEMENT)30 b(=)g(.true.)41
b(then)30 b(the)g(32-bit)h(sum)e(v)-5 b(alue)30 b(will)e(b)s(e)i
(complemen)m(ted)g(b)s(efore)g(enco)s(ding.)382 5120
y Fe(FTESUM\(sum,complement,)42 b(>)47 b(checksum\))0
5350 y Fh(6)81 b Fi(Deco)s(de)39 b(a)f(16)h(c)m(haracter)h(c)m(hec)m
(ksum)e(string)f(in)m(to)h(a)h(double)d(precision)g(v)-5
b(alue.)64 b(If)37 b(COMPLEMENT)g(=)227 5463 y(.true.)k(then)30
b(the)h(32-bit)f(sum)g(v)-5 b(alue)30 b(will)d(b)s(e)j(complemen)m(ted)
h(after)f(deco)s(ding.)382 5694 y Fe(FTDSUM\(checksum,compleme)o(nt,)41
b(>)48 b(sum\))p eop
%%Page: 101 107
101 106 bop 0 299 a Fg(9.11.)113 b(D)m(A)-8 b(TE)31 b(AND)g(TIME)f
(UTILITY)g(R)m(OUTINES)1767 b Fi(101)0 555 y Fd(9.11)180
b(Date)46 b(and)f(Time)g(Utilit)l(y)i(Routines)0 805
y Fi(The)29 b(follo)m(wing)f(routines)h(help)f(to)j(construct)f(or)f
(parse)h(the)g(FITS)f(date/time)h(strings.)40 b(Starting)29
b(in)f(the)i(y)m(ear)0 918 y(2000,)k(the)d(FITS)g(D)m(A)-8
b(TE)32 b(k)m(eyw)m(ord)g(v)-5 b(alues)30 b(\(and)i(the)f(v)-5
b(alues)31 b(of)g(other)h(`D)m(A)-8 b(TE-')33 b(k)m(eyw)m(ords\))f(m)m
(ust)f(ha)m(v)m(e)i(the)0 1031 y(form)j('YYYY-MM-DD')k(\(date)e(only\))
e(or)h('YYYY-MM-DDThh:mm:ss.ddd...')61 b(\(date)38 b(and)e(time\))g
(where)0 1144 y(the)30 b(n)m(um)m(b)s(er)f(of)i(decimal)e(places)h(in)f
(the)h(seconds)g(v)-5 b(alue)30 b(is)f(optional.)40 b(These)30
b(times)g(are)g(in)f(UTC.)h(The)g(older)0 1257 y('dd/mm/yy')g(date)h
(format)g(ma)m(y)g(not)g(b)s(e)e(used)h(for)g(dates)h(after)g(01)g(Jan)
m(uary)f(2000.)0 1486 y Fh(1)81 b Fi(Get)31 b(the)g(curren)m(t)f
(system)g(date.)42 b(The)29 b(returned)h(y)m(ear)h(has)f(4)h(digits)e
(\(1999,)j(2000,)h(etc.\))382 1714 y Fe(FTGSDT\()46 b(>)h(day,)g
(month,)f(year,)g(status)g(\))0 1943 y Fh(2)81 b Fi(Get)34
b(the)g(curren)m(t)g(system)f(date)i(and)e(time)g(string)g
(\('YYYY-MM-DDThh:mm:ss'\).)53 b(The)33 b(time)h(will)d(b)s(e)227
2056 y(in)25 b(UTC/GMT)h(if)f(a)m(v)-5 b(ailable,)26
b(as)h(indicated)d(b)m(y)i(a)g(returned)f(timeref)g(v)-5
b(alue)26 b(=)f(0.)40 b(If)26 b(the)g(returned)e(v)-5
b(alue)227 2169 y(of)31 b(timeref)f(=)h(1)g(then)f(this)g(indicates)f
(that)j(it)e(w)m(as)h(not)g(p)s(ossible)d(to)j(con)m(v)m(ert)i(the)d
(lo)s(cal)g(time)h(to)g(UTC,)227 2281 y(and)f(th)m(us)g(the)h(lo)s(cal)
e(time)h(w)m(as)h(returned.)382 2510 y Fe(FTGSTM\(>)45
b(datestr,)h(timeref,)f(status\))0 2739 y Fh(3)81 b Fi(Construct)26
b(a)i(date)g(string)e(from)h(the)g(input)e(date)j(v)-5
b(alues.)39 b(If)27 b(the)g(y)m(ear)h(is)f(b)s(et)m(w)m(een)g(1900)i
(and)e(1998,)j(inclu-)227 2852 y(siv)m(e,)37 b(then)d(the)i(returned)d
(date)j(string)e(will)e(ha)m(v)m(e)37 b(the)e(old)f(FITS)g(format)i
(\('dd/mm/yy'\),)h(otherwise)227 2964 y(the)32 b(date)g(string)e(will)e
(ha)m(v)m(e)33 b(the)e(new)g(FITS)g(format)g(\('YYYY-MM-DD'\).)36
b(Use)c(FTTM2S)f(instead)f(to)227 3077 y(alw)m(a)m(ys)h(return)e(a)i
(date)g(string)f(using)e(the)j(new)f(FITS)g(format.)382
3306 y Fe(FTDT2S\()46 b(year,)g(month,)g(day,)h(>)g(datestr,)f
(status\))0 3535 y Fh(4)81 b Fi(Construct)34 b(a)i(new-format)f(date)h
(+)f(time)g(string)f(\('YYYY-MM-DDThh:mm:ss.ddd...'\).)57
b(If)34 b(the)i(y)m(ear,)227 3647 y(mon)m(th,)d(and)e(da)m(y)h(v)-5
b(alues)31 b(all)g(=)g(0)h(then)g(only)f(the)h(time)f(is)g(enco)s(ded)g
(with)g(format)h('hh:mm:ss.ddd...'.)227 3760 y(The)j(decimals)f
(parameter)i(sp)s(eci\014es)d(ho)m(w)j(man)m(y)f(decimal)f(places)h(of)
g(fractional)g(seconds)g(to)h(include)227 3873 y(in)29
b(the)i(string.)40 b(If)29 b(`decimals')h(is)g(negativ)m(e,)h(then)g
(only)e(the)i(date)g(will)c(b)s(e)j(return)f(\('YYYY-MM-DD'\).)382
4102 y Fe(FTTM2S\()46 b(year,)g(month,)g(day,)h(hour,)f(minute,)g
(second,)g(decimals,)764 4215 y(>)h(datestr,)f(status\))0
4443 y Fh(5)81 b Fi(Return)44 b(the)g(date)i(as)f(read)f(from)h(the)g
(input)d(string,)48 b(where)c(the)h(string)f(ma)m(y)h(b)s(e)f(in)g
(either)g(the)h(old)227 4556 y(\('dd/mm/yy'\))31 b(or)g(new)e
(\('YYYY-MM-DDThh:mm:ss')k(or)d('YYYY-MM-DD'\))k(FITS)c(format.)382
4785 y Fe(FTS2DT\(datestr,)43 b(>)48 b(year,)e(month,)g(day,)h
(status\))0 5013 y Fh(6)81 b Fi(Return)30 b(the)h(date)h(and)f(time)g
(as)g(read)g(from)g(the)h(input)d(string,)h(where)h(the)h(string)e(ma)m
(y)i(b)s(e)e(in)g(either)h(the)227 5126 y(old)d(or)g(new)g(FITS)g
(format.)40 b(The)28 b(returned)f(hours,)h(min)m(utes,)g(and)g(seconds)
g(v)-5 b(alues)28 b(will)d(b)s(e)j(set)h(to)g(zero)227
5239 y(if)j(the)i(input)d(string)h(do)s(es)h(not)h(include)d(the)i
(time)g(\('dd/mm/yy')g(or)h('YYYY-MM-DD'\))j(.)c(Similarly)-8
b(,)227 5352 y(the)36 b(returned)e(y)m(ear,)j(mon)m(th,)g(and)d(date)i
(v)-5 b(alues)35 b(will)d(b)s(e)j(set)h(to)g(zero)g(if)e(the)h(date)h
(is)e(not)i(included)c(in)227 5465 y(the)f(input)d(string)i
(\('hh:mm:ss.ddd...'\).)382 5694 y Fe(FTS2TM\(datestr,)43
b(>)48 b(year,)e(month,)g(day,)h(hour,)f(minute,)g(second,)g(status\))p
eop
%%Page: 102 108
102 107 bop 0 299 a Fi(102)1274 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0
555 y Fd(9.12)136 b(General)45 b(Utilit)l(y)i(Subroutines)0
805 y Fi(The)30 b(follo)m(wing)f(utilit)m(y)f(subroutines)h(ma)m(y)i(b)
s(e)e(useful)g(for)h(certain)g(applications:)0 1060 y
Fh(1)81 b Fi(Return)29 b(the)i(starting)f(b)m(yte)h(address)e(of)i(the)
f(CHDU)h(and)f(the)h(next)f(HDU.)382 1315 y Fe(FTGHAD\(iunit,)44
b(>)j(curaddr,nextaddr\))0 1569 y Fh(2)81 b Fi(Con)m(v)m(ert)31
b(a)g(c)m(haracter)h(string)d(to)i(upp)s(ercase)e(\(op)s(erates)j(in)d
(place\).)382 1824 y Fe(FTUPCH\(string\))0 2078 y Fh(3)81
b Fi(Compare)43 b(the)i(input)d(template)i(string)f(against)h(the)h
(reference)f(string)f(to)i(see)g(if)e(they)h(matc)m(h.)82
b(The)227 2191 y(template)35 b(string)f(ma)m(y)h(con)m(tain)f(wildcard)
e(c)m(haracters:)51 b('*')35 b(will)d(matc)m(h)j(an)m(y)g(sequence)g
(of)f(c)m(haracters)227 2304 y(\(including)f(zero)j(c)m(haracters\))h
(and)e('reference)h(string.)55 b(If)35 b(CASESN)f(=)h(.true.)56
b(then)35 b(the)g(matc)m(h)i(will)227 2417 y(b)s(e)29
b(case)h(sensitiv)m(e.)40 b(The)29 b(returned)f(MA)-8
b(TCH)30 b(parameter)g(will)d(b)s(e)h(.true.)41 b(if)28
b(the)i(2)g(strings)e(matc)m(h,)j(and)227 2530 y(EXA)m(CT)i(will)e(b)s
(e)h(.true.)49 b(if)32 b(the)i(matc)m(h)g(is)e(exact)i(\(i.e.,)h(if)d
(no)h(wildcard)e(c)m(haracters)j(w)m(ere)g(used)e(in)g(the)227
2643 y(matc)m(h\).)42 b(Both)31 b(strings)e(m)m(ust)i(b)s(e)e(68)j(c)m
(haracters)f(or)g(less)f(in)f(length.)382 2898 y Fe
(FTCMPS\(str_template,stri)o(ng,)o(case)o(sen,)41 b(>)47
b(match,exact\))0 3152 y Fh(4)81 b Fi(T)-8 b(est)31 b(that)g(the)f(k)m
(eyw)m(ord)h(name)f(con)m(tains)h(only)e(legal)i(c)m(haracters:)42
b(A-Z,0-9,)32 b(h)m(yphen,)d(and)h(underscore.)382 3407
y Fe(FTTKEY\(keyword,)43 b(>)48 b(status\))0 3662 y Fh(5)81
b Fi(T)-8 b(est)31 b(that)g(the)f(k)m(eyw)m(ord)h(record)f(con)m(tains)
h(only)e(legal)h(prin)m(table)f(ASCI)s(I)g(c)m(haracters)382
3916 y Fe(FTTREC\(card,)44 b(>)k(status\))0 4171 y Fh(6)81
b Fi(T)-8 b(est)25 b(whether)f(the)h(curren)m(t)f(header)h(con)m(tains)
f(an)m(y)h(NULL)g(\(ASCI)s(I)e(0\))j(c)m(haracters.)40
b(These)24 b(c)m(haracters)j(are)227 4284 y(illegal)33
b(in)g(the)i(header,)g(but)f(they)g(will)e(go)j(undetected)g(b)m(y)f
(most)h(of)g(the)f(CFITSIO)f(k)m(eyw)m(ord)i(header)227
4397 y(routines,)28 b(b)s(ecause)g(the)h(n)m(ull)d(is)h(in)m(terpreted)
g(as)i(the)f(normal)f(end-of-string)h(terminator.)40
b(This)26 b(routine)227 4509 y(returns)i(the)g(p)s(osition)f(of)i(the)g
(\014rst)f(n)m(ull)e(c)m(haracter)k(in)e(the)g(header,)h(or)g(zero)g
(if)f(there)h(are)g(no)f(n)m(ulls.)38 b(F)-8 b(or)227
4622 y(example)36 b(a)g(returned)f(v)-5 b(alue)36 b(of)g(110)h(w)m
(ould)e(indicate)g(that)i(the)f(\014rst)f(NULL)h(is)f(lo)s(cated)h(in)f
(the)h(30th)227 4735 y(c)m(haracter)28 b(of)f(the)g(second)f(k)m(eyw)m
(ord)h(in)e(the)i(header)f(\(recall)g(that)h(eac)m(h)h(header)e(record)
h(is)e(80)i(c)m(haracters)227 4848 y(long\).)55 b(Note)36
b(that)g(this)e(is)g(one)h(of)g(the)g(few)g(FITSIO)f(routines)g(in)f
(whic)m(h)h(the)h(returned)f(v)-5 b(alue)35 b(is)f(not)227
4961 y(necessarily)c(equal)f(to)j(the)e(status)h(v)-5
b(alue\).)382 5216 y Fe(FTNCHK\(unit,)44 b(>)k(status\))0
5470 y Fh(7)81 b Fi(P)m(arse)27 b(a)f(header)h(k)m(eyw)m(ord)g(record)f
(and)g(return)f(the)i(name)f(of)h(the)f(k)m(eyw)m(ord)h(and)f(the)h
(length)e(of)i(the)g(name.)227 5583 y(The)34 b(k)m(eyw)m(ord)h(name)f
(normally)f(o)s(ccupies)g(the)i(\014rst)e(8)i(c)m(haracters)g(of)g(the)
f(record,)i(except)f(under)e(the)227 5696 y(HIERAR)m(CH)e(con)m(v)m(en)
m(tion)g(where)f(the)h(name)f(can)h(b)s(e)f(up)f(to)i(70)g(c)m
(haracters)h(in)d(length.)p eop
%%Page: 103 109
103 108 bop 0 299 a Fg(9.12.)73 b(GENERAL)30 b(UTILITY)g(SUBR)m
(OUTINES)1934 b Fi(103)382 555 y Fe(FTGKNM\(card,)44
b(>)k(keyname,)d(keylength,)g(status\))0 811 y Fh(8)81
b Fi(P)m(arse)34 b(a)h(header)f(k)m(eyw)m(ord)h(record.)52
b(This)32 b(subroutine)g(parses)i(the)g(input)f(header)h(record)g(to)h
(return)e(the)227 924 y(v)-5 b(alue)26 b(\(as)h(a)g(c)m(haracter)g
(string\))f(and)g(commen)m(t)h(strings.)38 b(If)26 b(the)g(k)m(eyw)m
(ord)h(has)f(no)g(v)-5 b(alue)26 b(\(columns)f(9-10)227
1037 y(not)i(equal)e(to)i('=)f('\),)i(then)e(the)g(v)-5
b(alue)26 b(string)f(is)g(returned)g(blank)g(and)g(the)h(commen)m(t)i
(string)d(is)g(set)h(equal)227 1150 y(to)31 b(column)f(9)g(-)h(80)g(of)
g(the)f(input)f(string.)382 1406 y Fe(FTPSVC\(card,)44
b(>)k(value,comment,status\))0 1662 y Fh(9)81 b Fi(Construct)35
b(a)i(sequence)f(k)m(eyw)m(ord)h(name)f(\(R)m(OOT)g(+)g(nnn\).)57
b(This)34 b(subroutine)g(app)s(ends)g(the)j(sequence)227
1775 y(n)m(um)m(b)s(er)29 b(to)i(the)g(ro)s(ot)g(string)e(to)i(create)h
(a)f(k)m(eyw)m(ord)g(name)f(\(e.g.,)i('NAXIS')f(+)f(2)h(=)f('NAXIS2'\))
382 2032 y Fe(FTKEYN\(keyroot,seq_no,)42 b(>)47 b(keyword,status\))0
2288 y Fh(10)f Fi(Construct)30 b(a)g(sequence)g(k)m(eyw)m(ord)h(name)f
(\(n)f(+)h(R)m(OOT\).)g(This)e(subroutine)g(concatenates)k(the)f
(sequence)227 2401 y(n)m(um)m(b)s(er)20 b(to)j(the)e(fron)m(t)h(of)g
(the)f(ro)s(ot)h(string)f(to)h(create)h(a)f(k)m(eyw)m(ord)g(name)g
(\(e.g.,)j(1)d(+)f('CTYP')g(=)g('1CTYP'\))382 2657 y
Fe(FTNKEY\(seq_no,keyroot,)42 b(>)47 b(keyword,status\))0
2913 y Fh(11)f Fi(Determine)34 b(the)g(datat)m(yp)s(e)g(of)g(a)g(k)m
(eyw)m(ord)h(v)-5 b(alue)33 b(string.)49 b(This)32 b(subroutine)g
(parses)h(the)h(k)m(eyw)m(ord)g(v)-5 b(alue)227 3026
y(string)30 b(\(usually)e(columns)h(11-30)k(of)d(the)h(header)f
(record\))g(to)i(determine)d(its)h(datat)m(yp)s(e.)382
3282 y Fe(FTDTYP\(value,)44 b(>)j(dtype,status\))0 3538
y Fh(11)f Fi(Return)c(the)i(class)f(of)g(input)e(header)i(record.)79
b(The)43 b(record)g(is)f(classi\014ed)f(in)m(to)i(one)h(of)f(the)g
(follo)m(wing)227 3651 y(categories)35 b(\(the)f(class)e(v)-5
b(alues)33 b(are)g(de\014ned)f(in)g(\014tsio.h\).)48
b(Note)35 b(that)e(this)f(is)g(one)i(of)f(the)g(few)g(FITSIO)227
3764 y(routines)d(that)g(do)s(es)h(not)f(return)f(a)i(status)g(v)-5
b(alue.)334 4020 y Fe(Class)94 b(Value)619 b(Keywords)95
4133 y(TYP_STRUC_KEY)92 b(10)j(SIMPLE,)46 b(BITPIX,)g(NAXIS,)g(NAXISn,)
g(EXTEND,)g(BLOCKED,)1002 4246 y(GROUPS,)g(PCOUNT,)g(GCOUNT,)g(END)1002
4359 y(XTENSION,)g(TFIELDS,)f(TTYPEn,)h(TBCOLn,)g(TFORMn,)g(THEAP,)1002
4472 y(and)h(the)g(first)f(4)i(COMMENT)e(keywords)f(in)i(the)g(primary)
f(array)1002 4585 y(that)h(define)f(the)h(FITS)g(format.)95
4698 y(TYP_CMPRS_KEY)92 b(20)j(The)47 b(experimental)e(keywords)g(used)
i(in)g(the)g(compressed)1002 4811 y(image)g(format)f(ZIMAGE,)g
(ZCMPTYPE,)f(ZNAMEn,)h(ZVALn,)1002 4924 y(ZTILEn,)g(ZBITPIX,)g
(ZNAXISn,)f(ZSCALE,)h(ZZERO,)g(ZBLANK)95 5036 y(TYP_SCAL_KEY)140
b(30)95 b(BSCALE,)46 b(BZERO,)g(TSCALn,)g(TZEROn)95 5149
y(TYP_NULL_KEY)140 b(40)95 b(BLANK,)46 b(TNULLn)95 5262
y(TYP_DIM_KEY)188 b(50)95 b(TDIMn)95 5375 y(TYP_RANG_KEY)140
b(60)95 b(TLMINn,)46 b(TLMAXn,)g(TDMINn,)g(TDMAXn,)g(DATAMIN,)f
(DATAMAX)95 5488 y(TYP_UNIT_KEY)140 b(70)95 b(BUNIT,)46
b(TUNITn)95 5601 y(TYP_DISP_KEY)140 b(80)95 b(TDISPn)95
5714 y(TYP_HDUID_KEY)d(90)j(EXTNAME,)46 b(EXTVER,)g(EXTLEVEL,)f
(HDUNAME,)g(HDUVER,)h(HDULEVEL)p eop
%%Page: 104 110
104 109 bop 0 299 a Fi(104)1274 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)95
555 y Fe(TYP_CKSUM_KEY)45 b(100)94 b(CHECKSUM,)46 b(DATASUM)95
668 y(TYP_WCS_KEY)141 b(110)94 b(CTYPEn,)46 b(CUNITn,)g(CRVALn,)g
(CRPIXn,)g(CROTAn,)f(CDELTn)1002 781 y(CDj_is,)h(PVj_ms,)g(LONPOLEs,)f
(LATPOLEs)1002 894 y(TCTYPn,)h(TCTYns,)g(TCUNIn,)g(TCUNns,)g(TCRVLn,)f
(TCRVns,)h(TCRPXn,)1002 1007 y(TCRPks,)g(TCDn_k,)g(TCn_ks,)g(TPVn_m,)g
(TPn_ms,)f(TCDLTn,)h(TCROTn)1002 1120 y(jCTYPn,)g(jCTYns,)g(jCUNIn,)g
(jCUNns,)g(jCRVLn,)f(jCRVns,)h(iCRPXn,)1002 1233 y(iCRPns,)g(jiCDn,)94
b(jiCDns,)46 b(jPVn_m,)g(jPn_ms,)f(jCDLTn,)h(jCROTn)1002
1346 y(\(i,j,m,n)g(are)h(integers,)e(s)i(is)h(any)f(letter\))95
1458 y(TYP_REFSYS_KEY)d(120)j(EQUINOXs,)f(EPOCH,)g(MJD-OBSs,)f
(RADECSYS,)g(RADESYSs)95 1571 y(TYP_COMM_KEY)140 b(130)47
b(COMMENT,)f(HISTORY,)f(\(blank)h(keyword\))95 1684 y(TYP_CONT_KEY)140
b(140)47 b(CONTINUE)95 1797 y(TYP_USER_KEY)140 b(150)47
b(all)g(other)g(keywords)430 2023 y(class)f(=)h(FTGKCL)f(\(char)h
(*card\))0 2275 y Fh(12)f Fi(P)m(arse)f(the)g('TF)m(ORM')h(binary)d
(table)i(column)e(format)i(string.)83 b(This)43 b(subroutine)g(parses)h
(the)h(input)227 2388 y(TF)m(ORM)27 b(c)m(haracter)g(string)e(and)h
(returns)f(the)h(in)m(teger)g(datat)m(yp)s(e)h(co)s(de,)h(the)e(rep)s
(eat)g(coun)m(t)h(of)f(the)g(\014eld,)227 2501 y(and,)f(in)d(the)i
(case)g(of)g(c)m(haracter)h(string)d(\014elds,)i(the)f(length)g(of)h
(the)g(unit)e(string.)37 b(The)23 b(follo)m(wing)f(datat)m(yp)s(e)227
2613 y(co)s(des)h(are)h(returned)e(\(the)h(negativ)m(e)h(of)g(the)f(v)
-5 b(alue)22 b(is)g(returned)g(if)g(the)h(column)f(con)m(tains)h(v)-5
b(ariable-length)227 2726 y(arra)m(ys\):)764 2978 y Fe(Datatype)761
b(DATACODE)46 b(value)764 3091 y(bit,)g(X)907 b(1)764
3204 y(byte,)46 b(B)811 b(11)764 3317 y(logical,)45 b(L)668
b(14)764 3430 y(ASCII)46 b(character,)f(A)286 b(16)764
3543 y(short)46 b(integer,)g(I)381 b(21)764 3656 y(integer,)45
b(J)668 b(41)764 3768 y(real,)46 b(E)811 b(42)764 3881
y(double)46 b(precision,)f(D)238 b(82)764 3994 y(complex)809
b(83)764 4107 y(double)46 b(complex)475 b(163)382 4333
y(FTBNFM\(tform,)44 b(>)j(datacode,repeat,width,stat)o(us\))0
4585 y Fh(13)f Fi(P)m(arse)38 b(the)f('TF)m(ORM')h(k)m(eyw)m(ord)g(v)-5
b(alue)36 b(that)i(de\014nes)e(the)h(column)f(format)i(in)d(an)i(ASCI)s
(I)f(table.)61 b(This)227 4698 y(routine)30 b(parses)h(the)g(input)f
(TF)m(ORM)h(c)m(haracter)i(string)d(and)g(returns)g(the)i(datat)m(yp)s
(e)g(co)s(de,)f(the)h(width)227 4811 y(of)40 b(the)h(column,)g(and)f
(\(if)f(it)g(is)h(a)g(\015oating)g(p)s(oin)m(t)f(column\))g(the)h(n)m
(um)m(b)s(er)f(of)h(decimal)f(places)h(to)h(the)227 4924
y(righ)m(t)27 b(of)h(the)f(decimal)f(p)s(oin)m(t.)39
b(The)27 b(returned)f(datat)m(yp)s(e)i(co)s(des)f(are)h(the)g(same)f
(as)h(for)f(the)g(binary)f(table,)227 5036 y(listed)39
b(ab)s(o)m(v)m(e,)44 b(with)39 b(the)h(follo)m(wing)f(additional)f
(rules:)59 b(in)m(teger)41 b(columns)e(that)h(are)h(b)s(et)m(w)m(een)g
(1)g(and)227 5149 y(4)36 b(c)m(haracters)i(wide)c(are)j(de\014ned)d(to)
j(b)s(e)e(short)h(in)m(tegers)g(\(co)s(de)g(=)g(21\).)58
b(Wider)35 b(in)m(teger)h(columns)f(are)227 5262 y(de\014ned)k(to)i(b)s
(e)e(regular)g(in)m(tegers)i(\(co)s(de)f(=)g(41\).)71
b(Similarly)-8 b(,)39 b(Fixed)g(decimal)g(p)s(oin)m(t)g(columns)g
(\(with)227 5375 y(TF)m(ORM)30 b(=)g('Fw.d'\))g(are)g(de\014ned)f(to)h
(b)s(e)g(single)e(precision)g(reals)h(\(co)s(de)i(=)e(42\))i(if)e(w)g
(is)g(b)s(et)m(w)m(een)h(1)h(and)227 5488 y(7)i(c)m(haracters)h(wide,)e
(inclusiv)m(e.)44 b(Wider)31 b('F')i(columns)e(will)f(return)h(a)i
(double)e(precision)f(data)j(co)s(de)g(\(=)227 5601 y(82\).)54
b('Ew.d')34 b(format)g(columns)f(will)f(ha)m(v)m(e)j(dataco)s(de)g(=)f
(42,)j(and)c('Dw.d')i(format)f(columns)f(will)f(ha)m(v)m(e)227
5714 y(dataco)s(de)g(=)e(82.)p eop
%%Page: 105 111
105 110 bop 0 299 a Fg(9.12.)73 b(GENERAL)30 b(UTILITY)g(SUBR)m
(OUTINES)1934 b Fi(105)382 555 y Fe(FTASFM\(tform,)44
b(>)j(datacode,width,decimals,st)o(atus)o(\))0 825 y
Fh(14)f Fi(Calculate)30 b(the)h(starting)f(column)g(p)s(ositions)e(and)
i(total)h(ASCI)s(I)e(table)i(width)d(based)j(on)f(the)h(input)d(arra)m
(y)227 938 y(of)f(ASCI)s(I)e(table)h(TF)m(ORM)h(v)-5
b(alues.)39 b(The)26 b(SP)-8 b(A)m(CE)27 b(input)d(parameter)j
(de\014nes)f(ho)m(w)h(man)m(y)f(blank)g(spaces)227 1051
y(to)40 b(lea)m(v)m(e)h(b)s(et)m(w)m(een)f(eac)m(h)g(column)f(\(it)g
(is)f(recommended)h(to)h(ha)m(v)m(e)h(one)e(space)h(b)s(et)m(w)m(een)g
(columns)e(for)227 1164 y(b)s(etter)31 b(h)m(uman)e(readabilit)m(y\).)
382 1434 y Fe(FTGABC\(tfields,tform,spa)o(ce,)41 b(>)48
b(rowlen,tbcol,status\))0 1704 y Fh(15)e Fi(P)m(arse)36
b(a)f(template)g(string)f(and)h(return)f(a)h(formatted)h(80-c)m
(haracter)h(string)d(suitable)g(for)h(app)s(ending)d(to)227
1817 y(\(or)40 b(deleting)f(from\))g(a)h(FITS)f(header)h(\014le.)67
b(This)38 b(subroutine)f(is)i(useful)f(for)h(parsing)f(lines)g(from)h
(an)227 1930 y(ASCI)s(I)34 b(template)i(\014le)f(and)f(reformatting)i
(them)f(in)m(to)h(legal)f(FITS)f(header)i(records.)55
b(The)35 b(formatted)227 2043 y(string)30 b(ma)m(y)h(then)f(b)s(e)g
(passed)g(to)i(the)e(FTPREC,)h(FTMCRD,)g(or)f(FTDKEY)h(subroutines)d
(to)k(app)s(end)227 2156 y(or)f(mo)s(dify)d(a)j(FITS)f(header)g
(record.)382 2426 y Fe(FTGTHD\(template,)43 b(>)48 b
(card,hdtype,status\))0 2696 y Fi(The)23 b(input)g(TEMPLA)-8
b(TE)23 b(c)m(haracter)j(string)d(generally)g(should)f(con)m(tain)i(3)h
(tok)m(ens:)38 b(\(1\))25 b(the)f(KEYNAME,)h(\(2\))0
2809 y(the)h(V)-10 b(ALUE,)26 b(and)f(\(3\))i(the)f(COMMENT)g(string.)
38 b(The)25 b(TEMPLA)-8 b(TE)26 b(string)f(m)m(ust)g(adhere)h(to)g(the)
g(follo)m(wing)0 2922 y(format:)0 3192 y Fh(-)80 b Fi(The)24
b(KEYNAME)g(tok)m(en)h(m)m(ust)e(b)s(egin)g(in)f(columns)h(1-8)i(and)e
(b)s(e)h(a)g(maxim)m(um)f(of)h(8)g(c)m(haracters)h(long.)38
b(If)24 b(the)227 3305 y(\014rst)32 b(8)h(c)m(haracters)h(of)e(the)h
(template)g(line)d(are)j(blank)e(then)h(the)h(remainder)e(of)h(the)h
(line)e(is)g(considered)227 3418 y(to)42 b(b)s(e)e(a)h(FITS)f(commen)m
(t)h(\(with)f(a)h(blank)e(k)m(eyw)m(ord)i(name\).)72
b(A)41 b(legal)g(FITS)f(k)m(eyw)m(ord)h(name)f(ma)m(y)227
3531 y(only)34 b(con)m(tain)i(the)f(c)m(haracters)h(A-Z,)f(0-9,)j(and)c
('-')i(\(min)m(us)e(sign\))g(and)g(underscore.)54 b(This)33
b(subroutine)227 3644 y(will)39 b(automatically)i(con)m(v)m(ert)i(an)m
(y)f(lo)m(w)m(ercase)h(c)m(haracters)f(to)h(upp)s(ercase)d(in)g(the)i
(output)f(string.)72 b(If)227 3757 y(KEYNAME)33 b(=)f('COMMENT')h(or)g
('HISTOR)-8 b(Y')32 b(then)h(the)f(remainder)f(of)i(the)g(line)e(is)h
(considered)f(to)227 3870 y(b)s(e)f(a)h(FITS)e(COMMENT)h(or)h(HISTOR)-8
b(Y)30 b(record,)g(resp)s(ectiv)m(ely)-8 b(.)0 4140 y
Fh(-)80 b Fi(The)26 b(V)-10 b(ALUE)26 b(tok)m(en)h(m)m(ust)e(b)s(e)h
(separated)g(from)f(the)i(KEYNAME)f(tok)m(en)h(b)m(y)f(one)g(or)g(more)
g(spaces)g(and/or)227 4253 y(an)i('=')g(c)m(haracter.)41
b(The)27 b(datat)m(yp)s(e)i(of)f(the)g(V)-10 b(ALUE)27
b(tok)m(en)i(\(n)m(umeric,)f(logical,)g(or)g(c)m(haracter)h(string\))e
(is)227 4366 y(automatically)32 b(determined)e(and)i(the)g(output)f
(CARD)h(string)f(is)g(formatted)h(accordingly)-8 b(.)45
b(The)31 b(v)-5 b(alue)227 4478 y(tok)m(en)34 b(ma)m(y)f(b)s(e)f
(forced)g(to)i(b)s(e)e(in)m(terpreted)f(as)i(a)g(string)f(\(e.g.)48
b(if)32 b(it)g(is)f(a)i(string)f(of)g(n)m(umeric)g(digits\))f(b)m(y)227
4591 y(enclosing)f(it)g(in)f(single)g(quotes.)0 4862
y Fh(-)80 b Fi(The)37 b(COMMENT)f(tok)m(en)i(is)e(optional,)i(but)f(if)
f(presen)m(t)h(m)m(ust)f(b)s(e)h(separated)g(from)g(the)g(V)-10
b(ALUE)37 b(tok)m(en)227 4974 y(b)m(y)j(at)h(least)g(one)f(blank)f
(space.)70 b(A)40 b(leading)f('/')i(c)m(haracter)h(ma)m(y)f(b)s(e)e
(used)h(to)g(mark)g(the)h(b)s(eginning)227 5087 y(of)33
b(the)f(commen)m(t)h(\014eld,)f(otherwise)f(the)i(commen)m(t)g(\014eld)
e(b)s(egins)f(with)h(the)h(\014rst)g(non-blank)e(c)m(haracter)227
5200 y(follo)m(wing)f(the)i(v)-5 b(alue)30 b(tok)m(en.)0
5470 y Fh(-)80 b Fi(One)32 b(exception)h(to)g(the)g(ab)s(o)m(v)m(e)h
(rules)d(is)g(that)i(if)f(the)g(\014rst)g(non-blank)f(c)m(haracter)j
(in)d(the)i(template)g(string)227 5583 y(is)h(a)h(min)m(us)e(sign)h
(\('-'\))i(follo)m(w)m(ed)e(b)m(y)h(a)g(single)e(tok)m(en,)k(or)e(a)g
(single)e(tok)m(en)j(follo)m(w)m(ed)e(b)m(y)h(an)f(equal)h(sign,)227
5696 y(then)29 b(it)f(is)g(in)m(terpreted)f(as)i(the)g(name)g(of)g(a)g
(k)m(eyw)m(ord)g(whic)m(h)e(is)h(to)h(b)s(e)f(deleted)h(from)f(the)h
(FITS)f(header.)p eop
%%Page: 106 112
106 111 bop 0 299 a Fi(106)1274 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)0
555 y Fh(-)80 b Fi(The)40 b(second)g(exception)g(is)f(that)i(if)e(the)h
(template)g(string)f(starts)h(with)f(a)i(min)m(us)d(sign)h(and)g(is)g
(follo)m(w)m(ed)227 668 y(b)m(y)33 b(2)g(tok)m(ens)g(then)g(the)f
(second)h(tok)m(en)h(is)d(in)m(terpreted)h(as)h(the)g(new)f(name)g(for)
h(the)g(k)m(eyw)m(ord)g(sp)s(eci\014ed)227 781 y(b)m(y)h(\014rst)e(tok)
m(en.)52 b(In)33 b(this)f(case)j(the)e(old)g(k)m(eyw)m(ord)h(name)g
(\(\014rst)f(tok)m(en\))i(is)d(returned)h(in)f(c)m(haracters)j(1-8)227
894 y(of)e(the)g(returned)e(CARD)i(string,)f(and)g(the)h(new)f(k)m(eyw)
m(ord)h(name)g(\(the)g(second)f(tok)m(en\))i(is)e(returned)f(in)227
1007 y(c)m(haracters)c(41-48)h(of)e(the)f(returned)g(CARD)g(string.)39
b(These)25 b(old)g(and)g(new)g(names)g(ma)m(y)h(then)f(b)s(e)g(passed)
227 1120 y(to)31 b(the)g(FTMNAM)g(subroutine)e(whic)m(h)g(will)e(c)m
(hange)32 b(the)e(k)m(eyw)m(ord)h(name.)0 1361 y(The)f(HDTYPE)g(output)
g(parameter)h(indicates)e(ho)m(w)i(the)f(returned)g(CARD)g(string)f
(should)g(b)s(e)h(in)m(terpreted:)382 1602 y Fe(hdtype)857
b(interpretation)382 1715 y(------)523 b(-------------------------)o
(----)o(---)o(----)o(----)o(---)o(----)o(--)525 1828
y(-2)572 b(Modify)46 b(the)h(name)g(of)g(the)g(keyword)f(given)g(in)h
(CARD\(1:8\))1193 1941 y(to)g(the)g(new)g(name)g(given)f(in)h
(CARD\(41:48\))525 2167 y(-1)572 b(CARD\(1:8\))45 b(contains)h(the)h
(name)g(of)g(a)g(keyword)f(to)h(be)g(deleted)1193 2280
y(from)g(the)g(FITS)f(header.)573 2506 y(0)572 b(append)46
b(the)h(CARD)g(string)f(to)h(the)g(FITS)g(header)f(if)h(the)1193
2619 y(keyword)f(does)h(not)g(already)e(exist,)h(otherwise)g(update)
1193 2732 y(the)h(value/comment)d(if)j(the)g(keyword)f(is)h(already)f
(present)1193 2844 y(in)h(the)g(header.)573 3070 y(1)572
b(simply)46 b(append)g(this)h(keyword)f(to)h(the)g(FITS)g(header)f
(\(CARD)1193 3183 y(is)h(either)f(a)i(HISTORY)e(or)h(COMMENT)f
(keyword\).)573 3409 y(2)572 b(This)47 b(is)g(a)g(FITS)g(END)g(record;)
f(it)h(should)f(not)h(be)g(written)1193 3522 y(to)g(the)g(FITS)g
(header)f(because)g(FITSIO)g(automatically)1193 3635
y(appends)g(the)h(END)g(record)f(when)h(the)f(header)h(is)g(closed.)0
3876 y Fi(EXAMPLES:)30 b(The)g(follo)m(wing)f(lines)f(illustrate)h(v)-5
b(alid)29 b(input)f(template)j(strings:)286 4118 y Fe(INTVAL)46
b(7)i(This)f(is)g(an)g(integer)f(keyword)286 4231 y(RVAL)524
b(34.6)142 b(/)239 b(This)46 b(is)i(a)f(floating)f(point)g(keyword)286
4343 y(EVAL=-12.45E-03)92 b(This)46 b(is)i(a)f(floating)f(point)g
(keyword)g(in)h(exponential)e(notation)286 4456 y(lval)i(F)g(This)g(is)
g(a)h(boolean)e(keyword)859 4569 y(This)h(is)g(a)g(comment)f(keyword)g
(with)h(a)g(blank)f(keyword)g(name)286 4682 y(SVAL1)h(=)g('Hello)f
(world')142 b(/)95 b(this)47 b(is)g(a)g(string)f(keyword)286
4795 y(SVAL2)94 b('123.5')g(this)47 b(is)g(also)f(a)i(string)e(keyword)
286 4908 y(sval3)94 b(123+)h(/)g(this)47 b(is)g(also)f(a)i(string)e
(keyword)g(with)g(the)h(value)g('123+)189 b(')286 5021
y(#)48 b(the)f(following)e(template)h(line)g(deletes)g(the)h(DATE)g
(keyword)286 5134 y(-)h(DATE)286 5247 y(#)g(the)f(following)e(template)
h(line)g(modifies)g(the)h(NAME)f(keyword)g(to)h(OBJECT)286
5360 y(-)h(NAME)e(OBJECT)0 5601 y Fh(16)g Fi(P)m(arse)35
b(the)g(input)e(string)h(con)m(taining)g(a)h(list)f(of)h(ro)m(ws)f(or)h
(ro)m(w)g(ranges,)h(and)e(return)g(in)m(teger)h(arra)m(ys)g(con-)227
5714 y(taining)25 b(the)h(\014rst)f(and)g(last)h(ro)m(w)g(in)e(eac)m(h)
j(range.)40 b(F)-8 b(or)26 b(example,)h(if)d(ro)m(wlist)h(=)g("3-5,)k
(6,)e(8-9")h(then)d(it)h(will)p eop
%%Page: 107 113
107 112 bop 0 299 a Fg(9.12.)73 b(GENERAL)30 b(UTILITY)g(SUBR)m
(OUTINES)1934 b Fi(107)227 555 y(return)34 b(n)m(umranges)h(=)g(3,)h
(rangemin)e(=)h(3,)i(6,)g(8)e(and)g(rangemax)g(=)g(5,)i(6,)g(9.)55
b(A)m(t)36 b(most,)h('maxranges')227 668 y(n)m(um)m(b)s(er)31
b(of)h(ranges)f(will)e(b)s(e)j(returned.)43 b('maxro)m(ws')32
b(is)f(the)h(maxim)m(um)f(n)m(um)m(b)s(er)f(of)i(ro)m(ws)g(in)e(the)i
(table;)227 781 y(an)m(y)e(ro)m(ws)f(or)g(ranges)g(larger)g(than)g
(this)f(will)e(b)s(e)j(ignored.)39 b(The)29 b(ro)m(ws)g(m)m(ust)g(b)s
(e)f(sp)s(eci\014ed)g(in)f(increasing)227 894 y(order,)33
b(and)f(the)g(ranges)h(m)m(ust)f(not)g(o)m(v)m(erlap.)47
b(A)33 b(min)m(us)d(sign)i(ma)m(y)h(b)s(e)e(use)h(to)h(sp)s(ecify)e
(all)g(the)i(ro)m(ws)f(to)227 1007 y(the)h(upp)s(er)d(or)j(lo)m(w)m(er)
g(b)s(ound,)e(so)i("50-")h(means)e(all)g(the)h(ro)m(ws)f(from)g(50)h
(to)h(the)e(end)g(of)h(the)f(table,)i(and)227 1120 y("-")e(means)e(all)
f(the)i(ro)m(ws)f(in)f(the)i(table,)f(from)g(1)h(-)g(maxro)m(ws.)191
1380 y Fe(FTRWRG\(rowlist,)44 b(maxrows,)h(maxranges,)g(>)525
1492 y(numranges,)g(rangemin,)g(rangemax,)h(status\))p
eop
%%Page: 108 114
108 113 bop 0 299 a Fi(108)1274 b Fg(CHAPTER)29 b(9.)112
b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30 b(SUBR)m(OUTINES)p
eop
%%Page: 109 115
109 114 bop 0 1225 a Ff(Chapter)65 b(10)0 1687 y Fl(Summary)76
b(of)i(all)f(FITSIO)0 1937 y(User-In)-6 b(terface)77
b(Subroutines)0 2429 y Fi(Error)29 b(Status)i(Routines)e(page)i(63)382
2696 y Fe(FTVERS\()46 b(>)h(version\))382 2809 y(FTGERR\(status,)d(>)j
(errtext\))382 2922 y(FTGMSG\()f(>)h(errmsg\))382 3035
y(FTRPRT)f(\(stream,)f(>)j(status\))382 3147 y(FTPMSG\(errmsg\))382
3260 y(FTPMRK)382 3373 y(FTCMSG)382 3486 y(FTCMRK)0 3753
y Fi(FITS)30 b(File)f(Op)s(en)g(and)h(Close)g(Subroutines:)38
b(page)31 b(69)382 4020 y Fe(FTOPEN\(unit,filename,rwm)o(ode)o(,)42
b(>)47 b(blocksize,status\))382 4133 y(FTDKOPEN\(unit,filename,r)o(wmo)
o(de,)41 b(>)48 b(blocksize,status\))382 4246 y
(FTNOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(status\))382
4359 y(FTDOPN\(unit,filename,rwm)o(ode)o(,)42 b(>)47
b(status\))382 4472 y(FTTOPN\(unit,filename,rwm)o(ode)o(,)42
b(>)47 b(status\))382 4585 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42
b(>)47 b(status\))382 4698 y(FTREOPEN\(unit,)d(>)j(newunit,)f(status\))
382 4811 y(FTINIT\(unit,filename,blo)o(cks)o(ize,)41
b(>)48 b(status\))382 4924 y(FTDKINIT\(unit,filename,b)o(loc)o(ksiz)o
(e,)42 b(>)47 b(status\))382 5036 y(FTTPLT\(unit,)d(filename,)i
(tplfilename,)e(>)j(status\))382 5149 y(FTFLUS\(unit,)d(>)k(status\))
382 5262 y(FTCLOS\(unit,)c(>)k(status\))382 5375 y(FTDELT\(unit,)c(>)k
(status\))382 5488 y(FTGIOU\()e(>)h(iounit,)f(status\))382
5601 y(FTFIOU\(iounit,)e(>)j(status\))0 5714 y(CFITS2Unit\(fitsfile)c
(*ptr\))141 b(\(C)48 b(routine\))1882 5942 y Fi(109)p
eop
%%Page: 110 116
110 115 bop 0 299 a Fi(110)281 b Fg(CHAPTER)30 b(10.)112
b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10
b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(CUnit2FITS\(int)44
b(unit\))380 b(\(C)47 b(routine\))382 668 y(FTEXTN\(filename,)c(>)48
b(nhdu,)e(status\))382 781 y(FTFLNM\(unit,)e(>)k(filename,)d(status\))
382 894 y(FTFLMD\(unit,)f(>)k(iomode,)e(status\))382
1007 y(FFURLT\(unit,)e(>)k(urltype,)d(status\))382 1120
y(FTIURL\(filename,)e(>)48 b(filetype,)d(infile,)h(outfile,)f(extspec,)
h(filter,)716 1233 y(binspec,)f(colspec,)h(status\))382
1346 y(FTRTNM\(filename,)d(>)48 b(rootname,)d(status\))382
1458 y(FTEXIST\(filename,)e(>)k(exist,)f(status\))0 1695
y Fi(HDU-Lev)m(el)32 b(Op)s(erations:)39 b(page)31 b(72)382
1932 y Fe(FTMAHD\(unit,nhdu,)43 b(>)k(hdutype,status\))382
2045 y(FTMRHD\(unit,nmove,)c(>)k(hdutype,status\))382
2158 y(FTGHDN\(unit,)d(>)k(nhdu\))382 2271 y(FTMNHD\(unit,)c(hdutype,)i
(extname,)f(extver,)h(>)i(status\))382 2384 y(FTGHDT\(unit,)c(>)k
(hdutype,)d(status\))382 2497 y(FTTHDU\(unit,)f(>)k(hdunum,)e(status\))
382 2610 y(FTCRHD\(unit,)e(>)k(status\))382 2723 y
(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382
2836 y(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o
(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716
2949 y(status\))382 3061 y(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o
(,tfo)o(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at)f(>)48
b(status\))382 3174 y(FTRSIM\(unit,bitpix,naxis)o(,na)o(xes,)o(stat)o
(us\))382 3287 y(FTDHDU\(unit,)c(>)k(hdutype,status\))382
3400 y(FTCPFL\(iunit,ounit,previ)o(ous)o(,)42 b(current,)j(following,)g
(>)j(status\))382 3513 y(FTCOPY\(iunit,ounit,morek)o(eys)o(,)42
b(>)47 b(status\))382 3626 y(FTCPHD\(inunit,)d(outunit,)h(>)j(status\))
382 3739 y(FTCPDT\(iunit,ounit,)42 b(>)48 b(status\))0
3976 y Fi(Subroutines)28 b(to)j(sp)s(ecify)e(or)h(mo)s(dify)f(the)h
(structure)g(of)h(the)f(CHDU:)h(page)h(75)382 4213 y
Fe(FTRDEF\(unit,)44 b(>)k(status\))93 b(\(DEPRECATED\))382
4326 y(FTPDEF\(unit,bitpix,naxis)o(,na)o(xes,)o(pcou)o(nt,)o(gcou)o
(nt,)41 b(>)48 b(status\))93 b(\(DEPRECATED\))382 4439
y(FTADEF\(unit,rowlen,tfiel)o(ds,)o(tbco)o(l,tf)o(orm)o(,nro)o(ws)42
b(>)47 b(status\))94 b(\(DEPRECATED\))382 4551 y
(FTBDEF\(unit,tfields,tfor)o(m,v)o(arid)o(at,n)o(row)o(s)42
b(>)47 b(status\))94 b(\(DEPRECATED\))382 4664 y(FTDDEF\(unit,bytlen,)
42 b(>)48 b(status\))93 b(\(DEPRECATED\))382 4777 y
(FTPTHP\(unit,theap,)43 b(>)k(status\))0 5014 y Fi(Header)31
b(Space)f(and)g(P)m(osition)g(Subroutines:)38 b(page)31
b(76)382 5251 y Fe(FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))382
5364 y(FTGHSP\(iunit,)d(>)j(keysexist,keysadd,status\))382
5477 y(FTGHPS\(iunit,)d(>)j(keysexist,key_no,status\))0
5714 y Fi(Read)31 b(or)f(W)-8 b(rite)31 b(Standard)e(Header)i
(Subroutines:)38 b(page)31 b(77)p eop
%%Page: 111 117
111 116 bop 3764 299 a Fi(111)382 555 y Fe(FTPHPS\(unit,bitpix,naxis)o
(,na)o(xes,)41 b(>)48 b(status\))382 668 y(FTPHPR\(unit,simple,bitpi)o
(x,n)o(axis)o(,nax)o(es,)o(pcou)o(nt,g)o(cou)o(nt,e)o(xten)o(d,)41
b(>)48 b(status\))382 781 y(FTGHPR\(unit,maxdim,)42 b(>)48
b(simple,bitpix,naxis,naxe)o(s,p)o(coun)o(t,gc)o(oun)o(t,ex)o(tend)o(,)
716 894 y(status\))382 1007 y(FTPHTB\(unit,rowlen,nrows)o(,tf)o(ield)o
(s,tt)o(ype)o(,tbc)o(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42
b(>)716 1120 y(status\))382 1233 y(FTGHTB\(unit,maxdim,)g(>)48
b(rowlen,nrows,tfields,tty)o(pe,)o(tbco)o(l,tf)o(orm)o(,tun)o(it,)716
1346 y(extname,status\))382 1458 y(FTPHBN\(unit,nrows,tfield)o(s,t)o
(type)o(,tfo)o(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at)41
b(>)48 b(status\))382 1571 y(FTGHBN\(unit,maxdim,)42
b(>)48 b(nrows,tfields,ttype,tfor)o(m,t)o(unit)o(,ext)o(nam)o(e,va)o
(rida)o(t,)716 1684 y(status\))0 1942 y Fi(W)-8 b(rite)31
b(Keyw)m(ord)f(Subroutines:)38 b(page)31 b(78)382 2199
y Fe(FTPREC\(unit,card,)43 b(>)k(status\))382 2312 y
(FTPCOM\(unit,comment,)42 b(>)48 b(status\))382 2425
y(FTPHIS\(unit,history,)42 b(>)48 b(status\))382 2538
y(FTPDAT\(unit,)c(>)k(status\))382 2651 y(FTPKY[JLS]\(unit,keyword,)o
(key)o(val,)o(comm)o(ent)o(,)42 b(>)47 b(status\))382
2764 y(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o
(omme)o(nt,)41 b(>)48 b(status\))382 2877 y(FTPKLS\(unit,keyword,keyv)o
(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 2990 y(FTPLSW\(unit,)d(>)k
(status\))382 3103 y(FTPKYU\(unit,keyword,comm)o(ent)o(,)42
b(>)47 b(status\))382 3216 y(FTPKN[JLS]\(unit,keyroot,)o(sta)o(rtno)o
(,no_)o(key)o(s,ke)o(yval)o(s,c)o(omme)o(nts,)41 b(>)47
b(status\))382 3329 y(FTPKN[EDFG]\(unit,keyroot)o(,st)o(artn)o(o,no)o
(_ke)o(ys,k)o(eyva)o(ls,)o(deci)o(mals)o(,co)o(mmen)o(ts,)41
b(>)907 3441 y(status\))382 3554 y(FTCPKYinunit,)j(outunit,)i(innum,)g
(outnum,)f(keyroot,)h(>)h(status\))382 3667 y
(FTPKYT\(unit,keyword,intv)o(al,)o(dblv)o(al,c)o(omm)o(ent,)41
b(>)48 b(status\))382 3780 y(FTPKTP\(unit,)c(filename,)i(>)h(status\))
382 3893 y(FTPUNT\(unit,keyword,unit)o(s,)41 b(>)48 b(status\))0
4151 y Fi(Insert)30 b(Keyw)m(ord)g(Subroutines:)38 b(page)31
b(80)382 4408 y Fe(FTIREC\(unit,key_no,card,)41 b(>)47
b(status\))382 4521 y(FTIKY[JLS]\(unit,keyword,)o(key)o(val,)o(comm)o
(ent)o(,)42 b(>)47 b(status\))382 4634 y(FTIKLS\(unit,keyword,keyv)o
(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 4747 y
(FTIKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o
(nt,)41 b(>)48 b(status\))382 4860 y(FTIKYU\(unit,keyword,comm)o(ent)o
(,)42 b(>)47 b(status\))0 5118 y Fi(Read)31 b(Keyw)m(ord)f
(Subroutines:)38 b(page)31 b(81)382 5375 y Fe(FTGREC\(unit,key_no,)42
b(>)48 b(card,status\))382 5488 y(FTGKYN\(unit,key_no,)42
b(>)48 b(keyword,value,comment,st)o(atu)o(s\))382 5601
y(FTGCRD\(unit,keyword,)42 b(>)48 b(card,status\))382
5714 y(FTGNXK\(unit,inclist,ninc)o(,ex)o(clis)o(t,ne)o(xc,)41
b(>)48 b(card,status\))p eop
%%Page: 112 118
112 117 bop 0 299 a Fi(112)281 b Fg(CHAPTER)30 b(10.)112
b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10
b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTGKEY\(unit,keyword,)42
b(>)48 b(value,comment,status\))382 668 y(FTGKY[EDJLS]\(unit,keywor)o
(d,)41 b(>)48 b(keyval,comment,status\))382 781 y
(FTGKN[EDJLS]\(unit,keyroo)o(t,s)o(tart)o(no,m)o(ax_)o(keys)o(,)42
b(>)47 b(keyvals,nfound,status\))382 894 y(FTGKYT\(unit,keyword,)42
b(>)48 b(intval,dblval,comment,s)o(tat)o(us\))382 1007
y(FTGUNT\(unit,keyword,)42 b(>)48 b(units,status\))0
1263 y Fi(Mo)s(dify)29 b(Keyw)m(ord)h(Subroutines:)38
b(page)31 b(82)382 1519 y Fe(FTMREC\(unit,key_no,card,)41
b(>)47 b(status\))382 1632 y(FTMCRD\(unit,keyword,card)o(,)42
b(>)47 b(status\))382 1745 y(FTMNAM\(unit,oldkey,keywo)o(rd,)41
b(>)48 b(status\))382 1858 y(FTMCOM\(unit,keyword,comm)o(ent)o(,)42
b(>)47 b(status\))382 1971 y(FTMKY[JLS]\(unit,keyword,)o(key)o(val,)o
(comm)o(ent)o(,)42 b(>)47 b(status\))382 2084 y
(FTMKLS\(unit,keyword,keyv)o(al,)o(comm)o(ent,)41 b(>)47
b(status\))382 2197 y(FTMKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o
(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))382 2310
y(FTMKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0
2566 y Fi(Up)s(date)30 b(Keyw)m(ord)g(Subroutines:)38
b(page)32 b(83)382 2822 y Fe(FTUCRD\(unit,keyword,card)o(,)42
b(>)47 b(status\))382 2935 y(FTUKY[JLS]\(unit,keyword,)o(key)o(val,)o
(comm)o(ent)o(,)42 b(>)47 b(status\))382 3048 y
(FTUKLS\(unit,keyword,keyv)o(al,)o(comm)o(ent,)41 b(>)47
b(status\))382 3161 y(FTUKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o
(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))382 3274
y(FTUKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0
3530 y Fi(Delete)32 b(Keyw)m(ord)e(Subroutines:)38 b(page)31
b(84)382 3786 y Fe(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382
3899 y(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 4155
y Fi(De\014ne)31 b(Data)h(Scaling)d(P)m(arameters)i(and)f(Unde\014ned)f
(Pixel)g(Flags:)41 b(page)31 b(84)382 4411 y Fe
(FTPSCL\(unit,bscale,bzero)o(,)42 b(>)47 b(status\))382
4524 y(FTTSCL\(unit,colnum,tscal)o(,tz)o(ero,)41 b(>)48
b(status\))382 4637 y(FTPNUL\(unit,blank,)43 b(>)k(status\))382
4750 y(FTSNUL\(unit,colnum,snull)41 b(>)47 b(status\))382
4863 y(FTTNUL\(unit,colnum,tnull)41 b(>)47 b(status\))0
5119 y Fi(FITS)30 b(Primary)e(Arra)m(y)j(or)f(IMA)m(GE)i(Extension)d
(I/O)i(Subroutines:)38 b(page)31 b(85)382 5375 y Fe(FTGIDT\(unit,)44
b(>)k(bitpix,status\))382 5488 y(FTGIET\(unit,)c(>)k(bitpix,status\))
382 5601 y(FTGIDM\(unit,)c(>)k(naxis,status\))382 5714
y(FTGISZ\(unit,)c(maxdim,)i(>)i(naxes,status\))p eop
%%Page: 113 119
113 118 bop 3764 299 a Fi(113)382 555 y Fe(FTGIPR\(unit,)44
b(maxdim,)i(>)i(bitpix,naxis,naxes,stat)o(us\))382 668
y(FTPPR[BIJED]\(unit,group,)o(fpi)o(xel,)o(nele)o(men)o(ts,v)o(alue)o
(s,)41 b(>)48 b(status\))382 781 y(FTPPN[BIJED]\(unit,group,)o(fpi)o
(xel,)o(nele)o(men)o(ts,v)o(alue)o(s,n)o(ullv)o(al)42
b(>)47 b(status\))382 894 y(FTPPRU\(unit,group,fpixel)o(,ne)o(leme)o
(nts,)41 b(>)47 b(status\))382 1007 y(FTGPV[BIJED]\(unit,group,)o(fpi)o
(xel,)o(nele)o(men)o(ts,n)o(ullv)o(al,)41 b(>)48 b
(values,anyf,status\))382 1120 y(FTGPF[BIJED]\(unit,group,)o(fpi)o
(xel,)o(nele)o(men)o(ts,)41 b(>)48 b(values,flagvals,anyf,sta)o(tus)o
(\))382 1233 y(FTPGP[BIJED]\(unit,group,)o(fpa)o(rm,n)o(parm)o(,va)o
(lues)o(,)42 b(>)47 b(status\))382 1346 y(FTGGP[BIJED]\(unit,group,)o
(fpa)o(rm,n)o(parm)o(,)42 b(>)47 b(values,status\))382
1458 y(FTP2D[BIJED]\(unit,group,)o(dim)o(1,na)o(xis1)o(,na)o(xis2)o
(,ima)o(ge,)41 b(>)48 b(status\))382 1571 y(FTP3D[BIJED]\(unit,group,)o
(dim)o(1,di)o(m2,n)o(axi)o(s1,n)o(axis)o(2,n)o(axis)o(3,cu)o(be,)41
b(>)48 b(status\))382 1684 y(FTG2D[BIJED]\(unit,group,)o(nul)o(lval)o
(,dim)o(1,n)o(axis)o(1,na)o(xis)o(2,)42 b(>)47 b(image,anyf,status\))
382 1797 y(FTG3D[BIJED]\(unit,group,)o(nul)o(lval)o(,dim)o(1,d)o(im2,)o
(naxi)o(s1,)o(naxi)o(s2,n)o(axi)o(s3,)41 b(>)1002 1910
y(cube,anyf,status\))382 2023 y(FTPSS[BIJED]\(unit,group,)o(nax)o(is,n)
o(axes)o(,fp)o(ixel)o(s,lp)o(ixe)o(ls,a)o(rray)o(,)h(>)47
b(status\))382 2136 y(FTGSV[BIJED]\(unit,group,)o(nax)o(is,n)o(axes)o
(,fp)o(ixel)o(s,lp)o(ixe)o(ls,i)o(ncs,)o(nul)o(lval)o(,)42
b(>)1002 2249 y(array,anyf,status\))382 2362 y
(FTGSF[BIJED]\(unit,group,)o(nax)o(is,n)o(axes)o(,fp)o(ixel)o(s,lp)o
(ixe)o(ls,i)o(ncs,)f(>)1002 2475 y(array,flagvals,anyf,statu)o(s\))0
2739 y Fi(T)-8 b(able)30 b(Column)e(Information)i(Subroutines:)38
b(page)31 b(88)382 3003 y Fe(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\))
382 3115 y(FTGNCL\(unit,)e(>)k(ncols,)e(status\))382
3228 y(FTGCNO\(unit,casesen,colt)o(emp)o(late)o(,)c(>)47
b(colnum,status\))382 3341 y(FTGCNN\(unit,casesen,colt)o(emp)o(late)o
(,)42 b(>)47 b(colnam,colnum,status\))382 3454 y(FTGTCL\(unit,colnum,)
42 b(>)48 b(datacode,repeat,width,st)o(atu)o(s\))382
3567 y(FTEQTY\(unit,colnum,)42 b(>)48 b(datacode,repeat,width,st)o(atu)
o(s\))382 3680 y(FTGCDW\(unit,colnum,)42 b(>)48 b(dispwidth,status\))
382 3793 y(FTGACL\(unit,colnum,)42 b(>)716 3906 y
(ttype,tbcol,tunit,tform,)o(tsca)o(l,t)o(zero)o(,snu)o(ll,)o(tdis)o
(p,st)o(atu)o(s\))382 4019 y(FTGBCL\(unit,colnum,)g(>)716
4132 y(ttype,tunit,datatype,rep)o(eat,)o(tsc)o(al,t)o(zero)o(,tn)o
(ull,)o(tdis)o(p,s)o(tatu)o(s\))382 4245 y(FTPTDM\(unit,colnum,naxis)o
(,na)o(xes,)f(>)48 b(status\))382 4357 y(FTGTDM\(unit,colnum,maxdi)o
(m,)41 b(>)48 b(naxis,naxes,status\))382 4470 y
(FTDTDM\(unit,tdimstr,coln)o(um,)o(maxd)o(im,)41 b(>)48
b(naxis,naxes,)c(status\))382 4583 y(FFGRSZ\(unit,)g(>)k
(nrows,status\))0 4847 y Fi(Lo)m(w-Lev)m(el)31 b(T)-8
b(able)30 b(Access)i(Subroutines:)38 b(page)31 b(91)382
5111 y Fe(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41
b(>)48 b(string,status\))382 5224 y(FTPTBS\(unit,frow,startch)o(ar,)o
(ncha)o(rs,s)o(tri)o(ng,)41 b(>)48 b(status\))382 5337
y(FTGTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 b(>)48
b(array,status\))382 5450 y(FTPTBB\(unit,frow,startch)o(ar,)o(ncha)o
(rs,a)o(rra)o(y,)42 b(>)47 b(status\))0 5714 y Fi(Edit)29
b(Ro)m(ws)i(or)f(Columns)f(page)i(92)p eop
%%Page: 114 120
114 119 bop 0 299 a Fi(114)281 b Fg(CHAPTER)30 b(10.)112
b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10
b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTIROW\(unit,frow,nrows,)41
b(>)48 b(status\))382 668 y(FTDROW\(unit,frow,nrows,)41
b(>)48 b(status\))382 781 y(FTDRRG\(unit,rowrange,)42
b(>)47 b(status\))382 894 y(FTDRWS\(unit,rowlist,nrow)o(s,)41
b(>)48 b(status\))382 1007 y(FTICOL\(unit,colnum,ttype)o(,tf)o(orm,)41
b(>)48 b(status\))382 1120 y(FTICLS\(unit,colnum,ncols)o(,tt)o(ype,)o
(tfor)o(m,)41 b(>)48 b(status\))382 1233 y(FTMVEC\(unit,colnum,newve)o
(cle)o(n,)42 b(>)47 b(status\))382 1346 y(FTDCOL\(unit,colnum,)42
b(>)48 b(status\))382 1458 y(FTCPCL\(inunit,outunit,in)o(col)o(num,)o
(outc)o(oln)o(um,c)o(reat)o(eco)o(l,)42 b(>)47 b(status\);)0
1716 y Fi(Read)31 b(and)e(W)-8 b(rite)31 b(Column)e(Data)j(Routines)d
(page)i(93)382 1974 y Fe(FTPCL[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)
o(ele)o(m,ne)o(leme)o(nts)o(,val)o(ues,)41 b(>)47 b(status\))382
2087 y(FTPCN[BIJED]\(unit,colnum)o(,fr)o(ow,f)o(elem)o(,ne)o(leme)o
(nts,)o(val)o(ues,)o(null)o(val)41 b(>)48 b(status\))382
2199 y(FTPCLX\(unit,colnum,frow,)o(fbi)o(t,nb)o(it,l)o(ray)o(,)42
b(>)47 b(status\))382 2312 y(FTPCLU\(unit,colnum,frow,)o(fel)o(em,n)o
(elem)o(ent)o(s,)42 b(>)47 b(status\))382 2425 y
(FTGCL\(unit,colnum,frow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42
b(>)47 b(values,status\))382 2538 y(FTGCV[SBIJEDCM]\(unit,col)o(num)o
(,fro)o(w,fe)o(lem)o(,nel)o(emen)o(ts,)o(null)o(val,)41
b(>)1098 2651 y(values,anyf,status\))382 2764 y
(FTGCF[SLBIJEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)o(ele)o(m,ne)o(leme)o
(nts)o(,)h(>)1193 2877 y(values,flagvals,anyf,stat)o(us\))382
2990 y(FTGSV[BIJED]\(unit,colnum)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o
(ls,l)o(pix)o(els,)o(incs)o(,nu)o(llva)o(l,)g(>)1002
3103 y(array,anyf,status\))382 3216 y(FTGSF[BIJED]\(unit,colnum)o(,na)o
(xis,)o(naxe)o(s,f)o(pixe)o(ls,l)o(pix)o(els,)o(incs)o(,)g(>)1002
3329 y(array,flagvals,anyf,statu)o(s\))382 3441 y
(FTGCX\(unit,colnum,frow,f)o(bit)o(,nbi)o(t,)g(>)47 b(lray,status\))382
3554 y(FTGCX[IJD]\(unit,colnum,f)o(row)o(,nro)o(ws,f)o(bit)o(,nbi)o(t,)
42 b(>)47 b(array,status\))382 3667 y(FTGDES\(unit,colnum,rownu)o(m,)41
b(>)48 b(nelements,offset,status\))382 3780 y
(FTPDES\(unit,colnum,rownu)o(m,n)o(elem)o(ents)o(,of)o(fset)o(,)42
b(>)47 b(status\))0 4038 y Fi(Ro)m(w)31 b(Selection)f(and)f(Calculator)
h(Routines:)40 b(page)31 b(96)382 4295 y Fe(FTFROW\(unit,expr,firstro)o
(w,)41 b(nrows,)47 b(>)g(n_good_rows,)d(row_status,)h(status\))382
4408 y(FTFFRW\(unit,)f(expr,)j(>)g(rownum,)f(status\))382
4521 y(FTSROW\(inunit,)e(outunit,)h(expr,)i(>)g(status)f(\))382
4634 y(FTCROW\(unit,datatype,exp)o(r,f)o(irst)o(row,)o(nel)o(emen)o
(ts,n)o(ulv)o(al,)41 b(>)620 4747 y(array,anynul,status\))382
4860 y(FTCALC\(inunit,)j(expr,)i(outunit,)g(parName,)f(parInfo,)h(>)h
(status\))382 4973 y(FTCALC_RNG\(inunit,)c(expr,)j(outunit,)g(parName,)
f(parInfo,)573 5086 y(nranges,)g(firstrow,)h(lastrow,)f(>)j(status\))
382 5199 y(FTTEXP\(unit,)c(expr,)j(>)g(datatype,)e(nelem,)h(naxis,)h
(naxes,)f(status\))0 5456 y Fi(Celestial)29 b(Co)s(ordinate)h(System)g
(Subroutines:)38 b(page)31 b(98)382 5714 y Fe(FTGICS\(unit,)44
b(>)k(xrval,yrval,xrpix,yrpix)o(,xin)o(c,yi)o(nc,)o(rot,)o(coor)o(dty)o
(pe,s)o(tatu)o(s\))p eop
%%Page: 115 121
115 120 bop 3764 299 a Fi(115)382 555 y Fe(FTGTCS\(unit,xcol,ycol,)42
b(>)716 668 y(xrval,yrval,xrpix,yrpix,)o(xinc)o(,yi)o(nc,r)o(ot,c)o
(oor)o(dtyp)o(e,st)o(atu)o(s\))382 781 y(FTWLDP\(xpix,ypix,xrval,y)o
(rva)o(l,xr)o(pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241
894 y(coordtype,)j(>)i(xpos,ypos,status\))382 1007 y
(FTXYPX\(xpos,ypos,xrval,y)o(rva)o(l,xr)o(pix,)o(yrp)o(ix,x)o(inc,)o
(yin)o(c,ro)o(t,)1241 1120 y(coordtype,)e(>)i(xpix,ypix,status\))0
1340 y Fi(File)30 b(Chec)m(ksum)f(Subroutines:)39 b(page)31
b(99)382 1560 y Fe(FTPCKS\(unit,)44 b(>)k(status\))382
1673 y(FTUCKS\(unit,)c(>)k(status\))382 1785 y(FTVCKS\(unit,)c(>)k
(dataok,hduok,status\))382 1898 y(FTGCKS\(unit,)c(>)k
(datasum,hdusum,status\))382 2011 y(FTESUM\(sum,complement,)42
b(>)47 b(checksum\))382 2124 y(FTDSUM\(checksum,compleme)o(nt,)41
b(>)48 b(sum\))0 2457 y Fi(Time)29 b(and)h(Date)i(Utilit)m(y)e
(Subroutines:)38 b(page)31 b(101)382 2677 y Fe(FTGSDT\()46
b(>)h(day,)g(month,)f(year,)g(status)g(\))382 2790 y(FTGSTM\(>)f
(datestr,)h(timeref,)f(status\))382 2903 y(FTDT2S\()h(year,)g(month,)g
(day,)h(>)g(datestr,)f(status\))382 3016 y(FTTM2S\()g(year,)g(month,)g
(day,)h(hour,)f(minute,)g(second,)g(decimals,)764 3129
y(>)h(datestr,)f(status\))382 3242 y(FTS2DT\(datestr,)d(>)48
b(year,)e(month,)g(day,)h(status\))382 3354 y(FTS2TM\(datestr,)c(>)48
b(year,)e(month,)g(day,)h(hour,)f(minute,)g(second,)g(status\))0
3574 y Fi(General)30 b(Utilit)m(y)g(Subroutines:)38 b(page)31
b(102)382 3794 y Fe(FTGHAD\(unit,)44 b(>)k(curaddr,nextaddr\))382
3907 y(FTUPCH\(string\))382 4020 y(FTCMPS\(str_template,stri)o(ng,)o
(case)o(sen,)41 b(>)47 b(match,exact\))382 4133 y(FTTKEY\(keyword,)c(>)
48 b(status\))382 4246 y(FTTREC\(card,)c(>)k(status\))382
4359 y(FTNCHK\(unit,)c(>)k(status\))382 4472 y(FTGKNM\(unit,)c(>)k
(keyword,)d(keylength,)g(status\))382 4585 y(FTPSVC\(card,)f(>)k
(value,comment,status\))382 4698 y(FTKEYN\(keyroot,seq_no,)42
b(>)47 b(keyword,status\))382 4811 y(FTNKEY\(seq_no,keyroot,)42
b(>)47 b(keyword,status\))382 4924 y(FTDTYP\(value,)d(>)j
(dtype,status\))382 5036 y(class)f(=)i(FTGKCL\(card\))382
5149 y(FTASFM\(tform,)c(>)j(datacode,width,decimals,st)o(atus)o(\))382
5262 y(FTBNFM\(tform,)d(>)j(datacode,repeat,width,stat)o(us\))382
5375 y(FTGABC\(tfields,tform,spa)o(ce,)41 b(>)48 b
(rowlen,tbcol,status\))382 5488 y(FTGTHD\(template,)43
b(>)48 b(card,hdtype,status\))382 5601 y(FTRWRG\(rowlist,)43
b(maxrows,)j(maxranges,)f(>)i(numranges,)e(rangemin,)716
5714 y(rangemax,)g(status\))p eop
%%Page: 116 122
116 121 bop 0 299 a Fi(116)281 b Fg(CHAPTER)30 b(10.)112
b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10
b(A)m(CE)30 b(SUBR)m(OUTINES)p eop
%%Page: 117 123
117 122 bop 0 1225 a Ff(Chapter)65 b(11)0 1687 y Fl(P)-6
b(arameter)77 b(De\014nitions)0 2180 y Fe(anyf)47 b(-)g(\(logical\))e
(set)i(to)g(TRUE)g(if)g(any)g(of)g(the)g(returned)f(data)g(values)h
(are)f(undefined)0 2293 y(array)g(-)i(\(any)e(datatype)g(except)g
(character\))f(array)h(of)i(bytes)e(to)h(be)g(read)g(or)g(written.)0
2406 y(bitpix)f(-)i(\(integer\))d(bits)h(per)h(pixel:)f(8,)i(16,)f(32,)
f(-32,)h(or)g(-64)0 2518 y(blank)f(-)i(\(integer\))d(value)h(used)h
(for)g(undefined)e(pixels)h(in)i(integer)d(primary)h(array)0
2631 y(blocksize)f(-)j(\(integer\))d(2880-byte)g(logical)h(record)g
(blocking)g(factor)477 2744 y(\(if)h(0)h(<)f(blocksize)e(<)j(11\))f(or)
g(the)g(actual)f(block)g(size)h(in)g(bytes)477 2857 y(\(if)g(10)g(<)h
(blocksize)d(<)j(28800\).)93 b(As)47 b(of)g(version)f(3.3)h(of)g
(FITSIO,)477 2970 y(blocksizes)e(greater)h(than)h(2880)f(are)h(no)g
(longer)g(supported.)0 3083 y(bscale)f(-)i(\(double)d(precision\))g
(scaling)h(factor)g(for)h(the)g(primary)f(array)0 3196
y(bytlen)g(-)i(\(integer\))d(length)h(of)h(the)g(data)g(unit,)f(in)h
(bytes)0 3309 y(bzero)f(-)i(\(double)e(precision\))f(zero)h(point)h
(for)g(primary)e(array)i(scaling)0 3422 y(card)g(-)g(\(character*80\))d
(header)i(record)g(to)h(be)h(read)e(or)h(written)0 3535
y(casesen)f(-)h(\(logical\))f(will)g(string)g(matching)g(be)h(case)g
(sensitive?)0 3648 y(checksum)f(-)h(\(character*16\))d(encoded)i
(checksum)f(string)0 3760 y(colname)h(-)h(\(character\))e(ASCII)h(name)
h(of)g(the)g(column)0 3873 y(colnum)f(-)i(\(integer\))d(number)h(of)h
(the)g(column)f(\(first)g(column)g(=)i(1\))0 3986 y(coltemplate)d(-)i
(\(character\))e(template)g(string)i(to)g(be)g(matched)f(to)h(column)f
(names)0 4099 y(comment)g(-)h(\(character\))e(the)i(keyword)f(comment)g
(field)0 4212 y(comments)g(-)h(\(character)e(array\))h(keyword)g
(comment)g(fields)0 4325 y(compid)g(-)i(\(integer\))d(the)i(type)f(of)i
(computer)d(that)i(the)g(program)e(is)j(running)d(on)0
4438 y(complement)g(-)i(\(logical\))f(should)g(the)h(checksum)e(be)i
(complemented?)0 4551 y(coordtype)e(-)j(\(character\))c(type)j(of)g
(coordinate)e(projection)g(\(-SIN,)h(-TAN,)h(-ARC,)477
4664 y(-NCP,)g(-GLS,)f(-MER,)g(or)i(-AIT\))0 4777 y(cube)f(-)g(3D)g
(data)g(cube)g(of)g(the)g(appropriate)d(datatype)0 4890
y(curaddr)i(-)h(\(integer\))f(starting)f(address)h(\(in)h(bytes\))f(of)
h(the)g(CHDU)0 5002 y(datacode)f(-)h(\(integer\))e(symbolic)h(code)g
(of)i(the)f(binary)f(table)g(column)g(datatype)0 5115
y(dataok)g(-)i(\(integer\))d(was)i(the)g(data)f(unit)h(verification)d
(successful)h(\(=1\))i(or)430 5228 y(not)f(\(=)i(-1\).)94
b(Equals)46 b(zero)h(if)g(the)g(DATASUM)f(keyword)f(is)j(not)f
(present.)0 5341 y(datasum)f(-)h(\(double)f(precision\))f(32-bit)h(1's)
h(complement)e(checksum)h(for)h(the)f(data)h(unit)0 5454
y(datatype)f(-)h(\(character\))e(datatype)g(\(format\))h(of)h(the)g
(binary)f(table)g(column)0 5567 y(datestr)94 b(-)47 b(\(string\))f
(FITS)g(date/time)f(string:)h('YYYY-MM-DDThh:mm:ss.ddd')o(,)525
5680 y('YYYY-MM-dd',)e(or)j('dd/mm/yy')1882 5942 y Fi(117)p
eop
%%Page: 118 124
118 123 bop 0 299 a Fi(118)1779 b Fg(CHAPTER)30 b(11.)112
b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y Fe(day)47
b(-)g(\(integer\))f(current)f(day)i(of)h(the)e(month)0
668 y(dblval)g(-)i(\(double)d(precision\))g(fractional)g(part)i(of)g
(the)g(keyword)f(value)0 781 y(decimals)g(-)h(\(integer\))e(number)h
(of)i(decimal)d(places)h(to)i(be)f(displayed)0 894 y(dim1)g(-)g
(\(integer\))e(actual)h(size)h(of)g(the)g(first)g(dimension)e(of)i(the)
g(image)f(or)h(cube)g(array)0 1007 y(dim2)g(-)g(\(integer\))e(actual)h
(size)h(of)g(the)g(second)f(dimension)g(of)h(the)g(cube)f(array)0
1120 y(dispwidth)f(-)j(\(integer\))d(-)i(the)g(display)f(width)h
(\(length)e(of)j(string\))d(for)i(a)h(column)0 1233 y(dtype)e(-)i
(\(character\))d(datatype)g(of)i(the)g(keyword)f(\('C',)g('L',)h('I',)
94 b(or)48 b('F'\))764 1346 y(C)f(=)h(character)d(string)764
1458 y(L)i(=)h(logical)764 1571 y(I)f(=)h(integer)764
1684 y(F)f(=)h(floating)d(point)h(number)0 1797 y(errmsg)g(-)i
(\(character*80\))43 b(oldest)k(error)f(message)g(on)h(the)g(internal)e
(stack)0 1910 y(errtext)h(-)h(\(character*30\))d(descriptive)h(error)h
(message)g(corresponding)e(to)j(error)g(number)0 2023
y(casesen)f(-)h(\(logical\))f(true)g(if)h(column)f(name)h(matching)f
(is)h(case)f(sensitive)0 2136 y(exact)g(-)i(\(logical\))d(do)i(the)g
(strings)f(match)g(exactly,)g(or)h(were)g(wildcards)e(used?)0
2249 y(exclist)94 b(\(character)45 b(array\))h(list)g(of)h(names)g(to)g
(be)g(excluded)f(from)g(search)0 2362 y(exists)142 b(-)47
b(flag)g(indicating)e(whether)g(the)i(file)g(or)g(compressed)e(file)i
(exists)f(on)h(disk)0 2475 y(extend)f(-)i(\(logical\))d(true)h(if)i
(there)e(may)h(be)g(extensions)e(following)g(the)i(primary)f(data)0
2588 y(extname)g(-)h(\(character\))e(value)h(of)i(the)e(EXTNAME)g
(keyword)g(\(if)h(not)g(blank\))0 2700 y(fbit)g(-)g(\(integer\))e
(first)i(bit)g(in)g(the)g(field)f(to)h(be)g(read)g(or)g(written)0
2813 y(felem)f(-)i(\(integer\))d(first)h(pixel)h(of)g(the)g(element)f
(vector)g(\(ignored)f(for)i(ASCII)g(tables\))0 2926 y(filename)f(-)h
(\(character\))e(name)h(of)i(the)e(FITS)h(file)0 3039
y(flagvals)f(-)h(\(logical)f(array\))g(True)g(if)h(corresponding)e
(data)h(element)g(is)h(undefined)0 3152 y(fparm)f(-)i(\(integer\))d
(sequence)h(number)g(of)h(the)g(first)f(group)h(parameter)e(to)i(read)g
(or)g(write)0 3265 y(fpixel)f(-)i(\(integer\))d(the)i(first)f(pixel)g
(position)0 3378 y(fpixels)g(-)h(\(integer)f(array\))g(the)h(first)f
(included)g(pixel)g(in)h(each)g(dimension)0 3491 y(frow)g(-)g
(\(integer\))e(beginning)h(row)h(number)f(\(first)g(row)h(of)g(table)f
(=)i(1\))0 3604 y(gcount)e(-)i(\(integer\))d(value)h(of)h(the)g(GCOUNT)
f(keyword)g(\(usually)g(=)h(1\))0 3717 y(group)f(-)i(\(integer\))d
(sequence)h(number)g(of)h(the)g(data)f(group)h(\(=0)g(for)g
(non-grouped)d(data\))0 3830 y(hdtype)i(-)i(\(integer\))d(header)h
(record)g(type:)g(-1=delete;)93 b(0=append)46 b(or)h(replace;)907
3942 y(1=append;)e(2=this)h(is)h(the)g(END)g(keyword)0
4055 y(hduok)f(-)i(\(integer\))d(was)i(the)g(HDU)g(verification)d
(successful)h(\(=1\))i(or)430 4168 y(not)f(\(=)i(-1\).)94
b(Equals)46 b(zero)h(if)g(the)g(CHECKSUM)e(keyword)h(is)h(not)g
(present.)0 4281 y(hdusum)f(-)i(\(double)d(precision\))g(32)j(bit)e
(1's)h(complement)e(checksum)h(for)h(the)g(entire)f(CHDU)0
4394 y(hdutype)g(-)h(\(integer\))f(type)g(of)h(HDU:)g(0)g(=)h(primary)e
(array)g(or)h(IMAGE,)f(1)i(=)f(ASCII)g(table,)907 4507
y(2)g(=)h(binary)e(table,)g(-1)h(=)h(unknown)0 4620 y(history)e(-)h
(\(character\))e(the)i(HISTORY)f(keyword)g(comment)f(string)0
4733 y(hour)i(-)g(\(integer\))e(hour)i(from)g(0)g(-)h(23)0
4846 y(image)e(-)i(2D)f(image)f(of)i(the)e(appropriate)f(datatype)0
4959 y(inclist)94 b(\(character)45 b(array\))h(list)g(of)h(names)g(to)g
(be)g(included)f(in)h(search)0 5072 y(incs)g(-)g(\(integer)f(array\))g
(sampling)f(interval)h(for)h(pixels)f(in)h(each)g(FITS)f(dimension)0
5185 y(intval)g(-)i(\(integer\))d(integer)h(part)g(of)h(the)g(keyword)f
(value)0 5297 y(iounit)g(-)i(\(integer\))d(value)h(of)h(an)h(unused)e
(I/O)h(unit)f(number)0 5410 y(iunit)g(-)i(\(integer\))d(logical)h(unit)
h(number)f(associated)f(with)h(the)h(input)g(FITS)f(file,)h(1-199)0
5523 y(key_no)f(-)i(\(integer\))d(sequence)g(number)h(\(starting)g
(with)g(1\))i(of)f(the)g(keyword)e(record)0 5636 y(keylength)g(-)j
(\(integer\))d(length)h(of)h(the)g(keyword)f(name)p eop
%%Page: 119 125
119 124 bop 3764 299 a Fi(119)0 555 y Fe(keyroot)46 b(-)h
(\(character\))e(root)i(string)f(for)h(the)g(keyword)e(name)0
668 y(keysadd)h(-\(integer\))f(number)h(of)h(new)g(keyword)f(records)g
(which)g(can)h(fit)g(in)g(the)g(CHU)0 781 y(keysexist)e(-)j
(\(integer\))d(number)h(of)h(existing)f(keyword)g(records)f(in)j(the)f
(CHU)0 894 y(keyval)f(-)i(value)e(of)h(the)g(keyword)f(in)h(the)g
(appropriate)e(datatype)0 1007 y(keyvals)h(-)h(\(array\))f(value)g(of)i
(the)f(keywords)e(in)i(the)g(appropriate)e(datatype)0
1120 y(keyword)h(-)h(\(character*8\))d(name)j(of)g(a)h(keyword)0
1233 y(lray)f(-)g(\(logical)f(array\))g(array)g(of)h(logical)f(values)g
(corresponding)e(to)k(the)e(bit)h(array)0 1346 y(lpixels)f(-)h
(\(integer)f(array\))g(the)h(last)f(included)g(pixel)g(in)i(each)e
(dimension)0 1458 y(match)g(-)i(\(logical\))d(do)i(the)g(2)h(strings)d
(match?)0 1571 y(maxdim)h(-)i(\(integer\))d(dimensioned)g(size)h(of)h
(the)g(NAXES,)f(TTYPE,)g(TFORM)h(or)g(TUNIT)f(arrays)0
1684 y(max_keys)g(-)h(\(integer\))e(maximum)h(number)g(of)h(keywords)f
(to)h(search)f(for)0 1797 y(minute)g(-)i(\(integer\))d(minute)h(of)h
(an)g(hour)g(\(0)g(-)h(59\))0 1910 y(month)e(-)i(\(integer\))d(current)
h(month)g(of)h(the)g(year)g(\(1)g(-)h(12\))0 2023 y(morekeys)e(-)h
(\(integer\))e(will)i(leave)f(space)h(in)g(the)g(header)f(for)h(this)f
(many)h(more)g(keywords)0 2136 y(naxes)f(-)i(\(integer)d(array\))h
(size)h(of)g(each)g(dimension)e(in)i(the)g(FITS)g(array)0
2249 y(naxis)f(-)i(\(integer\))d(number)h(of)h(dimensions)e(in)j(the)e
(FITS)h(array)0 2362 y(naxis1)f(-)i(\(integer\))d(length)h(of)h(the)g
(X/first)f(axis)g(of)i(the)f(FITS)f(array)0 2475 y(naxis2)g(-)i
(\(integer\))d(length)h(of)h(the)g(Y/second)f(axis)g(of)h(the)g(FITS)g
(array)0 2588 y(naxis3)f(-)i(\(integer\))d(length)h(of)h(the)g(Z/third)
f(axis)g(of)i(the)f(FITS)f(array)0 2700 y(nbit)h(-)g(\(integer\))e
(number)h(of)i(bits)e(in)h(the)g(field)g(to)g(read)g(or)g(write)0
2813 y(nchars)f(-)i(\(integer\))d(number)h(of)h(characters)e(to)i(read)
g(and)g(return)0 2926 y(ncols)f(-)i(\(integer\))d(number)h(of)h
(columns)0 3039 y(nelements)e(-)j(\(integer\))d(number)h(of)h(data)g
(elements)e(to)j(read)e(or)h(write)0 3152 y(nexc)142
b(\(integer\))93 b(number)46 b(of)h(names)g(in)g(the)g(exclusion)e
(list)i(\(may)f(=)i(0\))0 3265 y(nhdu)f(-)g(\(integer\))e(absolute)h
(number)g(of)h(the)g(HDU)g(\(1st)g(HDU)g(=)g(1\))0 3378
y(ninc)142 b(\(integer\))93 b(number)46 b(of)h(names)g(in)g(the)g
(inclusion)e(list)0 3491 y(nmove)h(-)i(\(integer\))d(number)h(of)h
(HDUs)g(to)g(move)g(\(+)g(or)g(-\),)g(relative)f(to)h(current)f
(position)0 3604 y(nfound)g(-)i(\(integer\))d(number)h(of)h(keywords)f
(found)g(\(highest)g(keyword)f(number\))0 3717 y(no_keys)h(-)h
(\(integer\))f(number)g(of)h(keywords)e(to)j(write)e(in)h(the)g
(sequence)0 3830 y(nparm)f(-)i(\(integer\))d(number)h(of)h(group)g
(parameters)e(to)i(read)g(or)g(write)0 3942 y(nrows)f(-)i(\(integer\))d
(number)h(of)h(rows)g(in)g(the)g(table)0 4055 y(nullval)f(-)h(value)g
(to)g(represent)e(undefined)g(pixels,)h(of)h(the)g(appropriate)e
(datatype)0 4168 y(nextaddr)h(-)h(\(integer\))e(starting)h(address)g
(\(in)h(bytes\))f(of)h(the)g(HDU)g(following)e(the)i(CHDU)0
4281 y(offset)f(-)i(\(integer\))d(byte)h(offset)h(in)g(the)g(heap)f(to)
h(the)g(first)g(element)f(of)h(the)g(array)0 4394 y(oldkey)f(-)i
(\(character\))c(old)j(name)g(of)g(keyword)f(to)h(be)g(modified)0
4507 y(ounit)f(-)i(\(integer\))d(logical)h(unit)h(number)f(associated)f
(with)h(the)h(output)f(FITS)h(file)g(1-199)0 4620 y(pcount)f(-)i
(\(integer\))d(value)h(of)h(the)g(PCOUNT)f(keyword)g(\(usually)g(=)h
(0\))0 4733 y(repeat)f(-)i(\(integer\))d(length)h(of)h(element)f
(vector)g(\(e.g.)g(12J\);)h(ignored)f(for)g(ASCII)h(table)0
4846 y(rot)g(-)g(\(double)f(precision\))f(celestial)g(coordinate)g
(rotation)h(angle)g(\(degrees\))0 4959 y(rowlen)g(-)i(\(integer\))d
(length)h(of)h(a)h(table)e(row,)h(in)g(characters)e(or)i(bytes)0
5072 y(rowlist)f(-)h(\(integer)f(array\))g(list)h(of)g(row)g(numbers)e
(to)j(be)f(deleted)f(in)h(increasing)e(order)0 5185 y(rownum)h(-)i
(\(integer\))d(number)h(of)h(the)g(row)g(\(first)f(row)h(=)g(1\))0
5297 y(rowrange-)e(\(string\))h(list)g(of)i(rows)e(or)h(row)g(ranges)f
(to)i(be)f(deleted)0 5410 y(rwmode)f(-)i(\(integer\))d(file)h(access)h
(mode:)f(0)h(=)h(readonly,)d(1)j(=)f(readwrite)0 5523
y(second)142 b(\(double\)-)45 b(second)h(within)g(minute)g(\(0)h(-)h
(60.9999999999\))c(\(leap)i(second!\))0 5636 y(seq_no)g(-)i
(\(integer\))d(the)i(sequence)e(number)h(to)i(append)e(to)h(the)g
(keyword)f(root)g(name)p eop
%%Page: 120 126
120 125 bop 0 299 a Fi(120)1779 b Fg(CHAPTER)30 b(11.)112
b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y Fe(simple)46
b(-)i(\(logical\))d(does)h(the)h(FITS)g(file)g(conform)e(to)j(all)f
(the)f(FITS)h(standards)0 668 y(snull)f(-)i(\(character\))d(value)h
(used)h(to)g(represent)e(undefined)g(values)h(in)i(ASCII)e(table)0
781 y(space)g(-)i(\(integer\))d(number)h(of)h(blank)g(spaces)f(to)h
(leave)f(between)g(ASCII)h(table)f(columns)0 894 y(startchar)f(-)j
(\(integer\))d(first)h(character)g(in)h(the)g(row)g(to)g(be)g(read)0
1007 y(startno)f(-)h(\(integer\))f(value)g(of)h(the)g(first)f(keyword)g
(sequence)g(number)g(\(usually)f(1\))0 1120 y(status)h(-)i(\(integer\))
d(returned)g(error)i(status)f(code)g(\(0)i(=)f(OK\))0
1233 y(str_template)d(\(character\))h(template)h(string)g(to)h(be)g
(matched)f(to)h(reference)e(string)0 1346 y(stream)h(-)i(\(character\))
c(output)i(stream)g(for)h(the)g(report:)f(either)g('STDOUT')g(or)h
('STDERR')0 1458 y(string)f(-)i(\(character\))c(character)i(string)0
1571 y(sum)h(-)g(\(double)f(precision\))f(32)i(bit)g(unsigned)f
(checksum)f(value)0 1684 y(tbcol)h(-)i(\(integer)d(array\))h(column)h
(number)f(of)h(the)g(first)f(character)f(in)j(the)e(field\(s\))0
1797 y(tdisp)g(-)i(\(character\))d(Fortran)g(type)i(display)f(format)g
(for)h(the)g(table)f(column)0 1910 y(template-\(character\))c(template)
k(string)g(for)h(a)g(FITS)g(header)f(record)0 2023 y(tfields)g(-)h
(\(integer\))f(number)g(of)h(fields)f(\(columns\))f(in)i(the)g(table)0
2136 y(tform)f(-)i(\(character)d(array\))h(format)g(of)h(the)g
(column\(s\);)e(allowed)h(values)g(are:)430 2249 y(For)g(ASCII)h
(tables:)93 b(Iw,)47 b(Aw,)g(Fww.dd,)f(Eww.dd,)g(or)h(Dww.dd)430
2362 y(For)f(binary)h(tables:)e(rL,)i(rX,)g(rB,)g(rI,)g(rJ,)g(rA,)g
(rAw,)f(rE,)h(rD,)g(rC,)g(rM)430 2475 y(where)f('w'=width)f(of)i(the)g
(field,)f('d'=no.)g(of)h(decimals,)f('r'=repeat)f(count)430
2588 y(Note)h(that)h(the)g('rAw')f(form)h(is)g(non-standard)d
(extension)i(to)h(the)430 2700 y(TFORM)f(keyword)g(syntax)g(that)g(is)i
(not)f(specifically)d(defined)i(in)h(the)430 2813 y(Binary)f(Tables)g
(definition)f(document.)0 2926 y(theap)h(-)i(\(integer\))d(zero)i
(indexed)f(byte)g(offset)g(of)h(starting)f(address)g(of)h(the)g(heap)
430 3039 y(relative)e(to)i(the)g(beginning)e(of)j(the)f(binary)f(table)
g(data)0 3152 y(tnull)g(-)i(\(integer\))d(value)h(used)h(to)g
(represent)f(undefined)f(values)h(in)h(binary)f(table)0
3265 y(ttype)g(-)i(\(character)d(array\))h(label)g(for)h(table)g
(column\(s\))0 3378 y(tscal)f(-)i(\(double)e(precision\))f(scaling)g
(factor)i(for)f(table)h(column)0 3491 y(tunit)f(-)i(\(character)d
(array\))h(physical)f(unit)i(for)g(table)f(column\(s\))0
3604 y(tzero)g(-)i(\(double)e(precision\))f(scaling)g(zero)i(point)f
(for)h(table)g(column)0 3717 y(unit)94 b(-)48 b(\(integer\))d(logical)h
(unit)h(number)f(associated)f(with)h(the)h(FITS)g(file)f(\(1-199\))0
3830 y(units)g(-)i(\(character\))d(the)h(keyword)g(units)h(string)f
(\(e.g.,)g('km/s'\))0 3942 y(value)g(-)i(\(character\))d(the)h(keyword)
g(value)h(string)0 4055 y(values)f(-)i(array)e(of)h(data)g(values)f(of)
h(the)g(appropriate)e(datatype)0 4168 y(varidat)h(-)h(\(integer\))f
(size)g(in)h(bytes)g(of)g(the)g('variable)e(length)h(data)h(area')525
4281 y(following)e(the)i(binary)f(table)h(data)f(\(usually)g(=)h(0\))0
4394 y(version)f(-)h(\(real\))f(current)g(revision)g(number)g(of)h(the)
g(library)0 4507 y(width)f(-)i(\(integer\))d(width)h(of)i(the)f
(character)e(string)h(field)0 4620 y(xcol)h(-)g(\(integer\))e(number)h
(of)i(the)f(column)f(containing)f(the)i(X)g(coordinate)e(values)0
4733 y(xinc)i(-)g(\(double)f(precision\))f(X)i(axis)g(coordinate)e
(increment)g(at)i(reference)f(pixel)g(\(deg\))0 4846
y(xpix)h(-)g(\(double)f(precision\))f(X)i(axis)g(pixel)f(location)0
4959 y(xpos)h(-)g(\(double)f(precision\))f(X)i(axis)g(celestial)e
(coordinate)g(\(usually)h(RA\))h(\(deg\))0 5072 y(xrpix)f(-)i(\(double)
e(precision\))f(X)i(axis)g(reference)e(pixel)h(array)h(location)0
5185 y(xrval)f(-)i(\(double)e(precision\))f(X)i(axis)g(coordinate)e
(value)h(at)h(the)g(reference)e(pixel)i(\(deg\))0 5297
y(ycol)g(-)g(\(integer\))e(number)h(of)i(the)f(column)f(containing)f
(the)i(X)g(coordinate)e(values)0 5410 y(year)i(-)g(\(integer\))e(last)i
(2)g(digits)g(of)g(the)g(year)f(\(00)h(-)h(99\))0 5523
y(yinc)f(-)g(\(double)f(precision\))f(Y)i(axis)g(coordinate)e
(increment)g(at)i(reference)f(pixel)g(\(deg\))0 5636
y(ypix)h(-)g(\(double)f(precision\))f(y)i(axis)g(pixel)f(location)p
eop
%%Page: 121 127
121 126 bop 3764 299 a Fi(121)0 555 y Fe(ypos)47 b(-)g(\(double)f
(precision\))f(y)i(axis)g(celestial)e(coordinate)g(\(usually)h(DEC\))g
(\(deg\))0 668 y(yrpix)g(-)i(\(double)e(precision\))f(Y)i(axis)g
(reference)e(pixel)h(array)h(location)0 781 y(yrval)f(-)i(\(double)e
(precision\))f(Y)i(axis)g(coordinate)e(value)h(at)h(the)g(reference)e
(pixel)i(\(deg\))p eop
%%Page: 122 128
122 127 bop 0 299 a Fi(122)1779 b Fg(CHAPTER)30 b(11.)112
b(P)-8 b(ARAMETER)30 b(DEFINITIONS)p eop
%%Page: 123 129
123 128 bop 0 1225 a Ff(Chapter)65 b(12)0 1687 y Fl(FITSIO)76
b(Error)h(Status)h(Co)6 b(des)0 2180 y Fe(Status)46 b(codes)g(in)i(the)
f(range)f(-99)h(to)g(-999)94 b(and)47 b(1)h(to)f(999)g(are)g(reserved)e
(for)i(future)0 2293 y(FITSIO)f(use.)95 2518 y(0)96 b(OK,)47
b(no)g(error)0 2631 y(101)95 b(input)46 b(and)h(output)f(files)g(are)h
(the)g(same)0 2744 y(103)95 b(too)47 b(many)f(FITS)h(files)f(open)h(at)
g(once;)f(all)h(internal)f(buffers)g(full)0 2857 y(104)95
b(error)46 b(opening)g(existing)f(file)0 2970 y(105)95
b(error)46 b(creating)g(new)g(FITS)h(file;)f(\(does)h(a)g(file)g(with)g
(this)f(name)h(already)f(exist?\))0 3083 y(106)95 b(error)46
b(writing)g(record)g(to)h(FITS)g(file)0 3196 y(107)95
b(end-of-file)44 b(encountered)h(while)h(reading)g(record)g(from)h
(FITS)g(file)0 3309 y(108)95 b(error)46 b(reading)g(record)g(from)h
(file)0 3422 y(110)95 b(error)46 b(closing)g(FITS)g(file)0
3535 y(111)95 b(internal)45 b(array)i(dimensions)e(exceeded)0
3648 y(112)95 b(Cannot)46 b(modify)g(file)g(with)h(readonly)f(access)0
3760 y(113)95 b(Could)46 b(not)h(allocate)e(memory)0
3873 y(114)95 b(illegal)45 b(logical)h(unit)h(number;)f(must)g(be)i
(between)d(1)j(-)f(199,)g(inclusive)0 3986 y(115)95 b(NULL)46
b(input)h(pointer)e(to)j(routine)0 4099 y(116)95 b(error)46
b(seeking)g(position)f(in)j(file)0 4325 y(121)95 b(invalid)45
b(URL)i(prefix)f(on)i(file)e(name)0 4438 y(122)95 b(tried)46
b(to)h(register)f(too)h(many)f(IO)h(drivers)0 4551 y(123)95
b(driver)46 b(initialization)e(failed)0 4664 y(124)95
b(matching)45 b(driver)h(is)h(not)g(registered)0 4777
y(125)95 b(failed)46 b(to)h(parse)f(input)h(file)f(URL)0
4890 y(126)95 b(parse)46 b(error)g(in)i(range)e(list)0
5115 y(151)95 b(bad)47 b(argument)e(in)i(shared)f(memory)g(driver)0
5228 y(152)95 b(null)46 b(pointer)g(passed)g(as)h(an)h(argument)0
5341 y(153)95 b(no)47 b(more)f(free)h(shared)f(memory)g(handles)0
5454 y(154)95 b(shared)46 b(memory)g(driver)g(is)h(not)g(initialized)0
5567 y(155)95 b(IPC)47 b(error)f(returned)f(by)j(a)f(system)f(call)0
5680 y(156)95 b(no)47 b(memory)f(in)h(shared)f(memory)g(driver)1882
5942 y Fi(123)p eop
%%Page: 124 130
124 129 bop 0 299 a Fi(124)1613 b Fg(CHAPTER)30 b(12.)112
b(FITSIO)30 b(ERR)m(OR)g(ST)-8 b(A)g(TUS)30 b(CODES)0
555 y Fe(157)95 b(resource)45 b(deadlock)h(would)g(occur)0
668 y(158)95 b(attempt)45 b(to)j(open/create)c(lock)j(file)g(failed)0
781 y(159)95 b(shared)46 b(memory)g(block)g(cannot)g(be)h(resized)f(at)
h(the)g(moment)0 1120 y(201)95 b(header)46 b(not)h(empty;)f(can't)g
(write)g(required)g(keywords)0 1233 y(202)95 b(specified)45
b(keyword)h(name)g(was)h(not)g(found)g(in)g(the)g(header)0
1346 y(203)95 b(specified)45 b(header)h(record)g(number)g(is)h(out)g
(of)g(bounds)0 1458 y(204)95 b(keyword)45 b(value)i(field)f(is)h(blank)
0 1571 y(205)95 b(keyword)45 b(value)i(string)f(is)h(missing)f(the)h
(closing)f(quote)g(character)0 1684 y(207)95 b(illegal)45
b(character)h(in)h(keyword)f(name)g(or)i(header)e(record)0
1797 y(208)95 b(keyword)45 b(does)i(not)g(have)g(expected)e(name.)i
(Keyword)e(out)i(of)g(sequence?)0 1910 y(209)95 b(keyword)45
b(does)i(not)g(have)g(expected)e(integer)h(value)0 2023
y(210)95 b(could)46 b(not)h(find)g(the)f(required)g(END)h(header)f
(keyword)0 2136 y(211)95 b(illegal)45 b(BITPIX)i(keyword)e(value)0
2249 y(212)95 b(illegal)45 b(NAXIS)i(keyword)f(value)0
2362 y(213)95 b(illegal)45 b(NAXISn)i(keyword)e(value:)h(must)h(be)g(0)
h(or)f(positive)e(integer)0 2475 y(214)95 b(illegal)45
b(PCOUNT)i(keyword)e(value)0 2588 y(215)95 b(illegal)45
b(GCOUNT)i(keyword)e(value)0 2700 y(216)95 b(illegal)45
b(TFIELDS)h(keyword)g(value)0 2813 y(217)95 b(negative)45
b(ASCII)i(or)g(binary)f(table)g(width)h(value)f(\(NAXIS1\))0
2926 y(218)95 b(negative)45 b(number)h(of)h(rows)g(in)g(ASCII)g(or)g
(binary)f(table)g(\(NAXIS2\))0 3039 y(219)95 b(column)46
b(name)g(\(TTYPE)g(keyword\))g(not)h(found)0 3152 y(220)95
b(illegal)45 b(SIMPLE)i(keyword)e(value)0 3265 y(221)95
b(could)46 b(not)h(find)g(the)f(required)g(SIMPLE)g(header)g(keyword)0
3378 y(222)95 b(could)46 b(not)h(find)g(the)f(required)g(BITPIX)g
(header)g(keyword)0 3491 y(223)95 b(could)46 b(not)h(find)g(the)f
(required)g(NAXIS)g(header)g(keyword)0 3604 y(224)95
b(could)46 b(not)h(find)g(all)f(the)h(required)f(NAXISn)g(keywords)g
(in)h(the)g(header)0 3717 y(225)95 b(could)46 b(not)h(find)g(the)f
(required)g(XTENSION)g(header)g(keyword)0 3830 y(226)95
b(the)47 b(CHDU)f(is)h(not)g(an)g(ASCII)g(table)f(extension)0
3942 y(227)95 b(the)47 b(CHDU)f(is)h(not)g(a)h(binary)e(table)g
(extension)0 4055 y(228)95 b(could)46 b(not)h(find)g(the)f(required)g
(PCOUNT)g(header)g(keyword)0 4168 y(229)95 b(could)46
b(not)h(find)g(the)f(required)g(GCOUNT)g(header)g(keyword)0
4281 y(230)95 b(could)46 b(not)h(find)g(the)f(required)g(TFIELDS)g
(header)g(keyword)0 4394 y(231)95 b(could)46 b(not)h(find)g(all)f(the)h
(required)f(TBCOLn)g(keywords)g(in)h(the)g(header)0 4507
y(232)95 b(could)46 b(not)h(find)g(all)f(the)h(required)f(TFORMn)g
(keywords)g(in)h(the)g(header)0 4620 y(233)95 b(the)47
b(CHDU)f(is)h(not)g(an)g(IMAGE)g(extension)0 4733 y(234)95
b(illegal)45 b(TBCOL)i(keyword)f(value;)g(out)h(of)g(range)0
4846 y(235)95 b(this)46 b(operation)g(only)g(allowed)g(for)h(ASCII)f
(or)h(BINARY)g(table)f(extension)0 4959 y(236)95 b(column)46
b(is)h(too)g(wide)f(to)i(fit)f(within)f(the)h(specified)e(width)h(of)h
(the)g(ASCII)g(table)0 5072 y(237)95 b(the)47 b(specified)e(column)h
(name)h(template)e(matched)h(more)h(than)f(one)h(column)f(name)0
5185 y(241)95 b(binary)46 b(table)g(row)h(width)f(is)i(not)e(equal)h
(to)g(the)g(sum)g(of)g(the)g(field)f(widths)0 5297 y(251)95
b(unrecognizable)44 b(type)i(of)h(FITS)g(extension)0
5410 y(252)95 b(unrecognizable)44 b(FITS)i(record)0 5523
y(253)95 b(END)47 b(keyword)e(contains)h(non-blank)f(characters)g(in)i
(columns)f(9-80)0 5636 y(254)95 b(Header)46 b(fill)g(area)h(contains)f
(non-blank)f(characters)p eop
%%Page: 125 131
125 130 bop 3764 299 a Fi(125)0 555 y Fe(255)95 b(Data)46
b(fill)h(area)g(contains)e(non-blank)g(on)j(non-zero)d(values)0
668 y(261)95 b(unable)46 b(to)h(parse)f(the)h(TFORM)g(keyword)e(value)i
(string)0 781 y(262)95 b(unrecognizable)44 b(TFORM)i(datatype)f(code)0
894 y(263)95 b(illegal)45 b(TDIMn)i(keyword)f(value)0
1120 y(301)95 b(illegal)45 b(HDU)i(number;)f(less)h(than)f(1)i(or)f
(greater)f(than)h(internal)e(buffer)h(size)0 1233 y(302)95
b(column)46 b(number)g(out)h(of)g(range)f(\(1)h(-)h(999\))0
1346 y(304)95 b(attempt)45 b(to)j(move)e(to)h(negative)f(file)h(record)
f(number)0 1458 y(306)95 b(attempted)45 b(to)i(read)g(or)g(write)f(a)i
(negative)d(number)h(of)i(bytes)e(in)h(the)g(FITS)g(file)0
1571 y(307)95 b(illegal)45 b(starting)h(row)h(number)f(for)h(table)f
(read)h(or)g(write)f(operation)0 1684 y(308)95 b(illegal)45
b(starting)h(element)g(number)g(for)h(table)f(read)h(or)g(write)f
(operation)0 1797 y(309)95 b(attempted)45 b(to)i(read)g(or)g(write)f
(character)g(string)g(in)h(non-character)d(table)i(column)0
1910 y(310)95 b(attempted)45 b(to)i(read)g(or)g(write)f(logical)g
(value)g(in)i(non-logical)c(table)j(column)0 2023 y(311)95
b(illegal)45 b(ASCII)i(table)f(TFORM)h(format)f(code)g(for)h(attempted)
e(operation)0 2136 y(312)95 b(illegal)45 b(binary)i(table)f(TFORM)g
(format)g(code)h(for)g(attempted)e(operation)0 2249 y(314)95
b(value)46 b(for)h(undefined)e(pixels)h(has)h(not)g(been)g(defined)0
2362 y(317)95 b(attempted)45 b(to)i(read)g(or)g(write)f(descriptor)f
(in)i(a)h(non-descriptor)c(field)0 2475 y(320)95 b(number)46
b(of)h(array)f(dimensions)f(out)i(of)g(range)0 2588 y(321)95
b(first)46 b(pixel)g(number)g(is)i(greater)d(than)i(the)g(last)g(pixel)
f(number)0 2700 y(322)95 b(attempt)45 b(to)j(set)f(BSCALE)f(or)h
(TSCALn)f(scaling)g(parameter)f(=)i(0)0 2813 y(323)95
b(illegal)45 b(axis)i(length)f(less)h(than)f(1)0 3039
y(340)h(NOT_GROUP_TABLE)d(340)142 b(Grouping)45 b(function)h(error)0
3152 y(341)95 b(HDU_ALREADY_MEMBER)0 3265 y(342)47 b(MEMBER_NOT_FOUND)0
3378 y(343)g(GROUP_NOT_FOUND)0 3491 y(344)g(BAD_GROUP_ID)0
3604 y(345)g(TOO_MANY_HDUS_TRACKED)0 3717 y(346)g(HDU_ALREADY_TRACKED)0
3830 y(347)g(BAD_OPTION)0 3942 y(348)g(IDENTICAL_POINTERS)0
4055 y(349)g(BAD_GROUP_ATTACH)0 4168 y(350)g(BAD_GROUP_DETACH)0
4394 y(360)g(NGP_NO_MEMORY)665 b(malloc)46 b(failed)0
4507 y(361)h(NGP_READ_ERR)713 b(read)46 b(error)h(from)f(file)0
4620 y(362)h(NGP_NUL_PTR)761 b(null)46 b(pointer)g(passed)g(as)h(an)g
(argument.)1575 4733 y(Passing)f(null)g(pointer)g(as)h(a)h(name)f(of)
1575 4846 y(template)f(file)g(raises)g(this)h(error)0
4959 y(363)g(NGP_EMPTY_CURLINE)473 b(line)46 b(read)h(seems)f(to)h(be)h
(empty)e(\(used)1575 5072 y(internally\))0 5185 y(364)h
(NGP_UNREAD_QUEUE_FULL)281 b(cannot)46 b(unread)g(more)g(then)h(1)g
(line)g(\(or)g(single)1575 5297 y(line)g(twice\))0 5410
y(365)g(NGP_INC_NESTING)569 b(too)46 b(deep)h(include)f(file)h(nesting)
e(\(infinite)1575 5523 y(loop,)h(template)g(includes)f(itself)i(?\))0
5636 y(366)g(NGP_ERR_FOPEN)665 b(fopen\(\))45 b(failed,)h(cannot)g
(open)h(template)e(file)p eop
%%Page: 126 132
126 131 bop 0 299 a Fi(126)1613 b Fg(CHAPTER)30 b(12.)112
b(FITSIO)30 b(ERR)m(OR)g(ST)-8 b(A)g(TUS)30 b(CODES)0
555 y Fe(367)47 b(NGP_EOF)953 b(end)46 b(of)i(file)e(encountered)f(and)
i(not)g(expected)0 668 y(368)g(NGP_BAD_ARG)761 b(bad)46
b(arguments)g(passed.)g(Usually)f(means)1575 781 y(internal)h(parser)g
(error.)g(Should)g(not)h(happen)0 894 y(369)g(NGP_TOKEN_NOT_EXPECT)329
b(token)46 b(not)h(expected)e(here)0 1120 y(401)95 b(error)46
b(attempting)f(to)i(convert)f(an)h(integer)f(to)h(a)h(formatted)d
(character)g(string)0 1233 y(402)95 b(error)46 b(attempting)f(to)i
(convert)f(a)h(real)g(value)f(to)i(a)f(formatted)e(character)h(string)0
1346 y(403)95 b(cannot)46 b(convert)g(a)h(quoted)f(string)g(keyword)g
(to)h(an)g(integer)0 1458 y(404)95 b(attempted)45 b(to)i(read)g(a)g
(non-logical)e(keyword)h(value)g(as)h(a)h(logical)e(value)0
1571 y(405)95 b(cannot)46 b(convert)g(a)h(quoted)f(string)g(keyword)g
(to)h(a)h(real)e(value)0 1684 y(406)95 b(cannot)46 b(convert)g(a)h
(quoted)f(string)g(keyword)g(to)h(a)h(double)e(precision)f(value)0
1797 y(407)95 b(error)46 b(attempting)f(to)i(read)g(character)e(string)
h(as)h(an)h(integer)0 1910 y(408)95 b(error)46 b(attempting)f(to)i
(read)g(character)e(string)h(as)h(a)h(real)e(value)0
2023 y(409)95 b(error)46 b(attempting)f(to)i(read)g(character)e(string)
h(as)h(a)h(double)e(precision)f(value)0 2136 y(410)95
b(bad)47 b(keyword)e(datatype)h(code)0 2249 y(411)95
b(illegal)45 b(number)i(of)g(decimal)f(places)g(while)g(formatting)f
(floating)h(point)g(value)0 2362 y(412)95 b(numerical)45
b(overflow)g(during)i(implicit)e(datatype)h(conversion)0
2475 y(413)95 b(error)46 b(compressing)f(image)0 2588
y(414)95 b(error)46 b(uncompressing)e(image)0 2700 y(420)95
b(error)46 b(in)h(date)g(or)g(time)g(conversion)0 2926
y(431)95 b(syntax)46 b(error)g(in)h(parser)f(expression)0
3039 y(432)95 b(expression)45 b(did)i(not)f(evaluate)g(to)h(desired)f
(type)0 3152 y(433)95 b(vector)46 b(result)g(too)h(large)f(to)h(return)
f(in)i(array)0 3265 y(434)95 b(data)46 b(parser)g(failed)g(not)h(sent)g
(an)g(out)g(column)0 3378 y(435)95 b(bad)47 b(data)f(encounter)f(while)
i(parsing)f(column)0 3491 y(436)95 b(parse)46 b(error:)g(output)g(file)
h(not)g(of)g(proper)f(type)0 3717 y(501)95 b(celestial)45
b(angle)h(too)h(large)g(for)f(projection)0 3830 y(502)95
b(bad)47 b(celestial)e(coordinate)g(or)i(pixel)f(value)0
3942 y(503)95 b(error)46 b(in)h(celestial)e(coordinate)g(calculation)0
4055 y(504)95 b(unsupported)44 b(type)j(of)g(celestial)e(projection)0
4168 y(505)95 b(required)45 b(celestial)g(coordinate)g(keywords)h(not)h
(found)0 4281 y(506)95 b(approximate)44 b(wcs)j(keyword)f(values)g
(were)h(returned)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF