aboutsummaryrefslogtreecommitdiff
path: root/pkg/tbtables/cfitsio/cfitsio.ps
blob: 53d0810c9e11f4b965bfbd71f5d5a489a5fc59fa (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
9853
9854
9855
9856
9857
9858
9859
9860
9861
9862
9863
9864
9865
9866
9867
9868
9869
9870
9871
9872
9873
9874
9875
9876
9877
9878
9879
9880
9881
9882
9883
9884
9885
9886
9887
9888
9889
9890
9891
9892
9893
9894
9895
9896
9897
9898
9899
9900
9901
9902
9903
9904
9905
9906
9907
9908
9909
9910
9911
9912
9913
9914
9915
9916
9917
9918
9919
9920
9921
9922
9923
9924
9925
9926
9927
9928
9929
9930
9931
9932
9933
9934
9935
9936
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947
9948
9949
9950
9951
9952
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976
9977
9978
9979
9980
9981
9982
9983
9984
9985
9986
9987
9988
9989
9990
9991
9992
9993
9994
9995
9996
9997
9998
9999
10000
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010
10011
10012
10013
10014
10015
10016
10017
10018
10019
10020
10021
10022
10023
10024
10025
10026
10027
10028
10029
10030
10031
10032
10033
10034
10035
10036
10037
10038
10039
10040
10041
10042
10043
10044
10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055
10056
10057
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112
10113
10114
10115
10116
10117
10118
10119
10120
10121
10122
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133
10134
10135
10136
10137
10138
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162
10163
10164
10165
10166
10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195
10196
10197
10198
10199
10200
10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230
10231
10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
10278
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310
10311
10312
10313
10314
10315
10316
10317
10318
10319
10320
10321
10322
10323
10324
10325
10326
10327
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344
10345
10346
10347
10348
10349
10350
10351
10352
10353
10354
10355
10356
10357
10358
10359
10360
10361
10362
10363
10364
10365
10366
10367
10368
10369
10370
10371
10372
10373
10374
10375
10376
10377
10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
10394
10395
10396
10397
10398
10399
10400
10401
10402
10403
10404
10405
10406
10407
10408
10409
10410
10411
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
10427
10428
10429
10430
10431
10432
10433
10434
10435
10436
10437
10438
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
10461
10462
10463
10464
10465
10466
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552
10553
10554
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
10612
10613
10614
10615
10616
10617
10618
10619
10620
10621
10622
10623
10624
10625
10626
10627
10628
10629
10630
10631
10632
10633
10634
10635
10636
10637
10638
10639
10640
10641
10642
10643
10644
10645
10646
10647
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688
10689
10690
10691
10692
10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
11068
11069
11070
11071
11072
11073
11074
11075
11076
11077
11078
11079
11080
11081
11082
11083
11084
11085
11086
11087
11088
11089
11090
11091
11092
11093
11094
11095
11096
11097
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
11129
11130
11131
11132
11133
11134
11135
11136
11137
11138
11139
11140
11141
11142
11143
11144
11145
11146
11147
11148
11149
11150
11151
11152
11153
11154
11155
11156
11157
11158
11159
11160
11161
11162
11163
11164
11165
11166
11167
11168
11169
11170
11171
11172
11173
11174
11175
11176
11177
11178
11179
11180
11181
11182
11183
11184
11185
11186
11187
11188
11189
11190
11191
11192
11193
11194
11195
11196
11197
11198
11199
11200
11201
11202
11203
11204
11205
11206
11207
11208
11209
11210
11211
11212
11213
11214
11215
11216
11217
11218
11219
11220
11221
11222
11223
11224
11225
11226
11227
11228
11229
11230
11231
11232
11233
11234
11235
11236
11237
11238
11239
11240
11241
11242
11243
11244
11245
11246
11247
11248
11249
11250
11251
11252
11253
11254
11255
11256
11257
11258
11259
11260
11261
11262
11263
11264
11265
11266
11267
11268
11269
11270
11271
11272
11273
11274
11275
11276
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287
11288
11289
11290
11291
11292
11293
11294
11295
11296
11297
11298
11299
11300
11301
11302
11303
11304
11305
11306
11307
11308
11309
11310
11311
11312
11313
11314
11315
11316
11317
11318
11319
11320
11321
11322
11323
11324
11325
11326
11327
11328
11329
11330
11331
11332
11333
11334
11335
11336
11337
11338
11339
11340
11341
11342
11343
11344
11345
11346
11347
11348
11349
11350
11351
11352
11353
11354
11355
11356
11357
11358
11359
11360
11361
11362
11363
11364
11365
11366
11367
11368
11369
11370
11371
11372
11373
11374
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385
11386
11387
11388
11389
11390
11391
11392
11393
11394
11395
11396
11397
11398
11399
11400
11401
11402
11403
11404
11405
11406
11407
11408
11409
11410
11411
11412
11413
11414
11415
11416
11417
11418
11419
11420
11421
11422
11423
11424
11425
11426
11427
11428
11429
11430
11431
11432
11433
11434
11435
11436
11437
11438
11439
11440
11441
11442
11443
11444
11445
11446
11447
11448
11449
11450
11451
11452
11453
11454
11455
11456
11457
11458
11459
11460
11461
11462
11463
11464
11465
11466
11467
11468
11469
11470
11471
11472
11473
11474
11475
11476
11477
11478
11479
11480
11481
11482
11483
11484
11485
11486
11487
11488
11489
11490
11491
11492
11493
11494
11495
11496
11497
11498
11499
11500
11501
11502
11503
11504
11505
11506
11507
11508
11509
11510
11511
11512
11513
11514
11515
11516
11517
11518
11519
11520
11521
11522
11523
11524
11525
11526
11527
11528
11529
11530
11531
11532
11533
11534
11535
11536
11537
11538
11539
11540
11541
11542
11543
11544
11545
11546
11547
11548
11549
11550
11551
11552
11553
11554
11555
11556
11557
11558
11559
11560
11561
11562
11563
11564
11565
11566
11567
11568
11569
11570
11571
11572
11573
11574
11575
11576
11577
11578
11579
11580
11581
11582
11583
11584
11585
11586
11587
11588
11589
11590
11591
11592
11593
11594
11595
11596
11597
11598
11599
11600
11601
11602
11603
11604
11605
11606
11607
11608
11609
11610
11611
11612
11613
11614
11615
11616
11617
11618
11619
11620
11621
11622
11623
11624
11625
11626
11627
11628
11629
11630
11631
11632
11633
11634
11635
11636
11637
11638
11639
11640
11641
11642
11643
11644
11645
11646
11647
11648
11649
11650
11651
11652
11653
11654
11655
11656
11657
11658
11659
11660
11661
11662
11663
11664
11665
11666
11667
11668
11669
11670
11671
11672
11673
11674
11675
11676
11677
11678
11679
11680
11681
11682
11683
11684
11685
11686
11687
11688
11689
11690
11691
11692
11693
11694
11695
11696
11697
11698
11699
11700
11701
11702
11703
11704
11705
11706
11707
11708
11709
11710
11711
11712
11713
11714
11715
11716
11717
11718
11719
11720
11721
11722
11723
11724
11725
11726
11727
11728
11729
11730
11731
11732
11733
11734
11735
11736
11737
11738
11739
11740
11741
11742
11743
11744
11745
11746
11747
11748
11749
11750
11751
11752
11753
11754
11755
11756
11757
11758
11759
11760
11761
11762
11763
11764
11765
11766
11767
11768
11769
11770
11771
11772
11773
11774
11775
11776
11777
11778
11779
11780
11781
11782
11783
11784
11785
11786
11787
11788
11789
11790
11791
11792
11793
11794
11795
11796
11797
11798
11799
11800
11801
11802
11803
11804
11805
11806
11807
11808
11809
11810
11811
11812
11813
11814
11815
11816
11817
11818
11819
11820
11821
11822
11823
11824
11825
11826
11827
11828
11829
11830
11831
11832
11833
11834
11835
11836
11837
11838
11839
11840
11841
11842
11843
11844
11845
11846
11847
11848
11849
11850
11851
11852
11853
11854
11855
11856
11857
11858
11859
11860
11861
11862
11863
11864
11865
11866
11867
11868
11869
11870
11871
11872
11873
11874
11875
11876
11877
11878
11879
11880
11881
11882
11883
11884
11885
11886
11887
11888
11889
11890
11891
11892
11893
11894
11895
11896
11897
11898
11899
11900
11901
11902
11903
11904
11905
11906
11907
11908
11909
11910
11911
11912
11913
11914
11915
11916
11917
11918
11919
11920
11921
11922
11923
11924
11925
11926
11927
11928
11929
11930
11931
11932
11933
11934
11935
11936
11937
11938
11939
11940
11941
11942
11943
11944
11945
11946
11947
11948
11949
11950
11951
11952
11953
11954
11955
11956
11957
11958
11959
11960
11961
11962
11963
11964
11965
11966
11967
11968
11969
11970
11971
11972
11973
11974
11975
11976
11977
11978
11979
11980
11981
11982
11983
11984
11985
11986
11987
11988
11989
11990
11991
11992
11993
11994
11995
11996
11997
11998
11999
12000
12001
12002
12003
12004
12005
12006
12007
12008
12009
12010
12011
12012
12013
12014
12015
12016
12017
12018
12019
12020
12021
12022
12023
12024
12025
12026
12027
12028
12029
12030
12031
12032
12033
12034
12035
12036
12037
12038
12039
12040
12041
12042
12043
12044
12045
12046
12047
12048
12049
12050
12051
12052
12053
12054
12055
12056
12057
12058
12059
12060
12061
12062
12063
12064
12065
12066
12067
12068
12069
12070
12071
12072
12073
12074
12075
12076
12077
12078
12079
12080
12081
12082
12083
12084
12085
12086
12087
12088
12089
12090
12091
12092
12093
12094
12095
12096
12097
12098
12099
12100
12101
12102
12103
12104
12105
12106
12107
12108
12109
12110
12111
12112
12113
12114
12115
12116
12117
12118
12119
12120
12121
12122
12123
12124
12125
12126
12127
12128
12129
12130
12131
12132
12133
12134
12135
12136
12137
12138
12139
12140
12141
12142
12143
12144
12145
12146
12147
12148
12149
12150
12151
12152
12153
12154
12155
12156
12157
12158
12159
12160
12161
12162
12163
12164
12165
12166
12167
12168
12169
12170
12171
12172
12173
12174
12175
12176
12177
12178
12179
12180
12181
12182
12183
12184
12185
12186
12187
12188
12189
12190
12191
12192
12193
12194
12195
12196
12197
12198
12199
12200
12201
12202
12203
12204
12205
12206
12207
12208
12209
12210
12211
12212
12213
12214
12215
12216
12217
12218
12219
12220
12221
12222
12223
12224
12225
12226
12227
12228
12229
12230
12231
12232
12233
12234
12235
12236
12237
12238
12239
12240
12241
12242
12243
12244
12245
12246
12247
12248
12249
12250
12251
12252
12253
12254
12255
12256
12257
12258
12259
12260
12261
12262
12263
12264
12265
12266
12267
12268
12269
12270
12271
12272
12273
12274
12275
12276
12277
12278
12279
12280
12281
12282
12283
12284
12285
12286
12287
12288
12289
12290
12291
12292
12293
12294
12295
12296
12297
12298
12299
12300
12301
12302
12303
12304
12305
12306
12307
12308
12309
12310
12311
12312
12313
12314
12315
12316
12317
12318
12319
12320
12321
12322
12323
12324
12325
12326
12327
12328
12329
12330
12331
12332
12333
12334
12335
12336
12337
12338
12339
12340
12341
12342
12343
12344
12345
12346
12347
12348
12349
12350
12351
12352
12353
12354
12355
12356
12357
12358
12359
12360
12361
12362
12363
12364
12365
12366
12367
12368
12369
12370
12371
12372
12373
12374
12375
12376
12377
12378
12379
12380
12381
12382
12383
12384
12385
12386
12387
12388
12389
12390
12391
12392
12393
12394
12395
12396
12397
12398
12399
12400
12401
12402
12403
12404
12405
12406
12407
12408
12409
12410
12411
12412
12413
12414
12415
12416
12417
12418
12419
12420
12421
12422
12423
12424
12425
12426
12427
12428
12429
12430
12431
12432
12433
12434
12435
12436
12437
12438
12439
12440
12441
12442
12443
12444
12445
12446
12447
12448
12449
12450
12451
12452
12453
12454
12455
12456
12457
12458
12459
12460
12461
12462
12463
12464
12465
12466
12467
12468
12469
12470
12471
12472
12473
12474
12475
12476
12477
12478
12479
12480
12481
12482
12483
12484
12485
12486
12487
12488
12489
12490
12491
12492
12493
12494
12495
12496
12497
12498
12499
12500
12501
12502
12503
12504
12505
12506
12507
12508
12509
12510
12511
12512
12513
12514
12515
12516
12517
12518
12519
12520
12521
12522
12523
12524
12525
12526
12527
12528
12529
12530
12531
12532
12533
12534
12535
12536
12537
12538
12539
12540
12541
12542
12543
12544
12545
12546
12547
12548
12549
12550
12551
12552
12553
12554
12555
12556
12557
12558
12559
12560
12561
12562
12563
12564
12565
12566
12567
12568
12569
12570
12571
12572
12573
12574
12575
12576
12577
12578
12579
12580
12581
12582
12583
12584
12585
12586
12587
12588
12589
12590
12591
12592
12593
12594
12595
12596
12597
12598
12599
12600
12601
12602
12603
12604
12605
12606
12607
12608
12609
12610
12611
12612
12613
12614
12615
12616
12617
12618
12619
12620
12621
12622
12623
12624
12625
12626
12627
12628
12629
12630
12631
12632
12633
12634
12635
12636
12637
12638
12639
12640
12641
12642
12643
12644
12645
12646
12647
12648
12649
12650
12651
12652
12653
12654
12655
12656
12657
12658
12659
12660
12661
12662
12663
12664
12665
12666
12667
12668
12669
12670
12671
12672
12673
12674
12675
12676
12677
12678
12679
12680
12681
12682
12683
12684
12685
12686
12687
12688
12689
12690
12691
12692
12693
12694
12695
12696
12697
12698
12699
12700
12701
12702
12703
12704
12705
12706
12707
12708
12709
12710
12711
12712
12713
12714
12715
12716
12717
12718
12719
12720
12721
12722
12723
12724
12725
12726
12727
12728
12729
12730
12731
12732
12733
12734
12735
12736
12737
12738
12739
12740
12741
12742
12743
12744
12745
12746
12747
12748
12749
12750
12751
12752
12753
12754
12755
12756
12757
12758
12759
12760
12761
12762
12763
12764
12765
12766
12767
12768
12769
12770
12771
12772
12773
12774
12775
12776
12777
12778
12779
12780
12781
12782
12783
12784
12785
12786
12787
12788
12789
12790
12791
12792
12793
12794
12795
12796
12797
12798
12799
12800
12801
12802
12803
12804
12805
12806
12807
12808
12809
12810
12811
12812
12813
12814
12815
12816
12817
12818
12819
12820
12821
12822
12823
12824
12825
12826
12827
12828
12829
12830
12831
12832
12833
12834
12835
12836
12837
12838
12839
12840
12841
12842
12843
12844
12845
12846
12847
12848
12849
12850
12851
12852
12853
12854
12855
12856
12857
12858
12859
12860
12861
12862
12863
12864
12865
12866
12867
12868
12869
12870
12871
12872
12873
12874
12875
12876
12877
12878
12879
12880
12881
12882
12883
12884
12885
12886
12887
12888
12889
12890
12891
12892
12893
12894
12895
12896
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
%%Title: cfitsio.dvi
%%Pages: 168
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -N0 cfitsio
%DVIPSParameters: dpi=600, compressed
%DVIPSSource:  TeX output 2004.12.02:1427
%%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 (cfitsio.dvi)
@start
%DVIPSBitmapFont: Fa cmti10 10.95 17
/Fa 17 118 df<49B712C018F818FE903B0003FE0003FF9438007F804BEC1FC0F00FE0F0
07F014074BEC03F8F001FCA2140F4BEC00FEA3141F4B15FFA3143F5DA3027F5D5DA219FE
14FF92C81203A34917FC4A1507A219F813034A150F19F0A20107EE1FE05CF03FC0A2010F
EE7F804A16006060011F4B5A4A4A5A4D5AA2013F4B5A4AEC3FC04DC7FC017F15FEEE03FC
4AEB0FF001FFEC7FE0B8128004FCC8FC16E0403E7BBD45>68 D<49B648B6FC495DA2D900
0390C7000313004B5D4B5DA2180714074B5DA2180F140F4B5DA2181F141F4B5DA2183F14
3F4B5DA2187F147F4B5DA218FF91B8FC96C7FCA292C712015B4A5DA2170313034A5DA217
0713074A5DA2170F130F4A5DA2171F131F4A5DA2173F133F4A5DA2017F157FA24A5D496C
4A7EB66CB67EA3483E7BBD44>72 D<001FB500F090B512F0485DA226003FF0C7380FFC00
4AEC03F04A5D715A017F1503A24A5DA201FF150795C7FC91C8FCA2485E170E5BA2000316
1E171C5BA20007163C17385BA2000F167817705BA2001F16F05F5BA2003F1501A2495DA2
007F1503A2495DA2160794C8FC48C8FC5E160E161E6C151C163C5E5E5E6C6C13014B5A00
1F4A5A6C6C011FC9FC6D133E6C6C13F83903FC07F0C6B512C0013F90CAFCEB07F83C406F
BD44>85 D<147E49B47E903907C1C38090391F80EFC090383F00FF017E137F4914804848
133F485AA248481400120F5B001F5C157E485AA215FE007F5C90C7FCA21401485C5AA214
03EDF0385AA21407EDE078020F1370127C021F13F0007E013F13E0003E137FECF3E1261F
01E313C03A0F8781E3803A03FF00FF00D800FC133E252977A72E>97
D<EB1FC0EA0FFF5CA2EA003FA291C7FCA25BA2137EA213FEA25BA21201A25BA21203A25B
147E3907F1FF809038F783E09038EF01F013FE390FF800F8A24913FC49137C485A157E5B
15FE123FA290C7FCA248130115FC127EA2140300FE14F85AA2EC07F0A215E048130F15C0
141F15800078EB3F00127C147E003C5B383E01F8381E03E06C485A6CB4C7FCEA01F81F40
76BE2A>I<EC3F80903801FFE0903807E0F890381F803CEB3E0001FC131E485A485A1207
4848133E49133C121F4848137C15F8EC03F0397F000FE0ECFF809038FFFC00B512C048C8
FCA45AA61506150E151E007C143C15786C14F0EC01E06CEB07C0390F801F003807C0FC38
01FFF038007F801F2976A72A>101 D<EC03F0EC0FFC91383E0E1C9138FC077E903901F0
03FE1303903807E001D90FC013FCEB1F80A2EB3F004914F8137E01FE1303A2484814F0A2
150712034914E0A2150F12074914C0A2151FA216805B153F1203ED7F006D5BA200015B00
00495A9038F80F7E90387C1EFEEB1FF8903807E0FC90C7FC1401A25DA21403A25D001C13
07007F5C48130F5D4A5A4AC7FC48137E00F85B387C03F0381FFFC0D803FEC8FC273B7CA7
2A>103 D<1478EB01FCA21303A314F8EB00E01400AD137C48B4FC38038F80EA0707000E
13C0121E121CEA3C0F1238A2EA781F00701380A2EAF03F140012005B137E13FE5BA21201
5BA212035B1438120713E0000F1378EBC070A214F0EB80E0A2EB81C01383148038078700
EA03FEEA00F8163E79BC1C>105 D<EB07F0EA03FF14E0A2EA000FA214C0A2131FA21480
A2133FA21400A25BA2137EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA25B
A2121FA25BA2123FA290C7FCA25A1307127EA2EAFE0F130E12FCA2131E131CA2EA7C3813
78EA3C70EA1FE0EA0780144079BE17>108 D<D801F0D93F80137F3D07FC01FFE003FFC0
3D0F3E07C1F80F83F03D0E1F0F00FC1E01F8001E011C90387C3800001C49D97E707F003C
01F05C0038157F4A5C26783FC05C12704A91C7FC91C7127E00F003FE1301494A5CEA007E
A20301140301FE5F495CA203031407000160495C180F03075D0003051F13E0494A1480A2
030FEC3F810007F001C0495CA2031F91383E0380120F494AEC0700A2033F150E001FEF1E
1C4991C7EA0FF80007C7000EEC03E0432979A74A>I<D801F0EB3F803A07FC01FFE03A0F
3E07C1F83A0E1F0F00FC001E011C137C001C49137E003C13F012385C38783FC012705C91
C7FC00F015FE495CEA007EA2150101FE5C5BA2150300015D5B15075E0003020F13704914
C0A2031F13F00007ED80E05B1681EE01C0120F49EC0380A2EE0700001FEC0F0E49EB07FC
0007C7EA01F02C2979A733>I<EC1FC0ECFFF8903803F07C90380FC01FEB1F8090393F00
0F80017E14C0491307484814E0485A12075B000F15F0485AA2485AA2ED0FE0127F90C7FC
A2151F4815C05AA2ED3F80A2ED7F00A248147E007C5C007E13015D4A5A003E495A6C495A
4A5A260F803EC7FC3807C0FC3801FFF038003F80242977A72E>I<903903E001F890390F
F807FE903A1E7C1E0F80903A1C3E3C07C0013C137801389038E003E0EB783F017001C013
F0ED80019038F07F0001E015F8147E1603000113FEA2C75AA20101140717F05CA2010314
0F17E05CA20107EC1FC0A24A1480163F010F15005E167E5E131F4B5A6E485A4B5A90393F
B80F80DA9C1FC7FCEC0FFCEC03E049C9FCA2137EA213FEA25BA21201A25BA21203A2387F
FFE0B5FCA22D3A80A72E>I<D801F013FC3A07FC07FF803A0F3E0F03C0260E1F1C13E000
1EEB380F001C1370003CEBE01F123814C0D8783F14C00070903880070092C7FC91C8FC12
F05BEA007EA313FE5BA312015BA312035BA312075BA3120F5BA3121F5B0007C9FC232979
A726>114 D<EC7F80903801FFE0903807C0F890381F003C013E131C013C131E017C133E
49137E15FEA2000114FCA215706D13007FEBFFC014FC6C13FF15806D13C06D13E0010F13
F01300140F14071403120C123F387F80011403D8FF0013E0A300FCEB07C000F0EB0F8012
700078EB1F006C133C381F01F83807FFE0C690C7FC1F297AA725>I<EB01C0EB03F01307
A25CA2130FA25CA2131FA25CA2133FA291C7FCA2007FB51280B6FC1500D8007EC7FC13FE
A25BA21201A25BA21203A25BA21207A25BA2120FA25BA2121F141C1380A2003F133C1438
EB0078147014F05C495AEA1F03495A6C48C7FCEA07FCEA01F0193A78B81E>I<137C48B4
141C26038F80137EEA0707000E7F001E15FE121CD83C0F5C12381501EA781F007001805B
A2D8F03F1303140000005D5B017E1307A201FE5C5B150F1201495CA2151F0003EDC1C049
1481A2153F1683EE0380A2ED7F07000102FF13005C01F8EBDF0F00009038079F0E90397C
0F0F1C90391FFC07F8903907F001F02A2979A731>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fb cmmi10 10.95 1
/Fb 1 63 df<126012F8B4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01
FF9038007FC0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1F
F0EE07FCEE01FF9338007FC0EF1FF0EF07F8EF01FCA2EF07F8EF1FF0EF7FC0933801FF00
EE07FCEE1FF0EE7FC04B48C7FCED07FCED1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC049
48C9FCEB07FCEB1FF0EB7FC04848CAFCEA07FCEA1FF0EA7FC048CBFC12FC1270363678B1
47>62 D 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 12 58
/Fd 58 122 df<ED0FFF4AB512C0020F14F0027F80903A01FFF803FC499038C000FE010F
EB00034948497E49485B5C495A4C138001FF6E13005CA3705AEE01F893C8FCA74BB51280
B9FCA5C69038E00003B3B0007FD9FFC1B6FCA538467EC53E>12 D<B612F8A91D097F9A25
>45 D<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F0F788E1F
>I<EC3FF849B5FC010F14E0013F14F890397FF01FFC9039FFC007FE4890380001FF4848
6D1380000716C049147F000F16E049143F001F16F0A2003F16F8A249141F007F16FCA600
FF16FEB3A3007F16FCA56C6CEC3FF8A3001F16F0A2000F16E06D147F000716C06D14FF6C
6C4913806C6D4813006C6D485A90397FF01FFC6DB55A010F14E0010314809026003FF8C7
FC2F427CC038>48 D<EC03C01407141F147FEB03FF133FB6FCA413C3EA0003B3B3ADB712
FCA5264177C038>I<ECFFE0010F13FE013F6D7E90B612E0000315F82607FC0313FE3A0F
E0007FFFD81F806D138048C7000F13C0488001C015E001F07F00FF6E13F07F17F881A46C
5A6C5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1FFC4B5A5E4B5A4B5A4A90C7
FC4A5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8D907E014F0495A495A49C8
FC017C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D417BC038>I<ECFFF00107
13FF011F14C0017F14F049C66C7ED803F8EB3FFED807E06D7E81D80FF86D138013FE001F
16C07FA66C5A6C4815806C485BC814005D5E4B5A4B5A4B5A4A5B020F1380902607FFFEC7
FC15F815FF16C090C713F0ED3FFCED0FFEEEFF80816F13C017E0A26F13F0A217F8A3EA0F
C0EA3FF0487EA2487EA217F0A25D17E06C5A494913C05BD83F80491380D81FF0491300D8
0FFEEBFFFE6CB612F800015D6C6C14C0011F49C7FC010113E02D427BC038>I<163FA25E
5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F07143E147E147C14
F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A120F5B48C7FC123E
5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038>I<0007150301E0143F01
FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0C9FCAAEC3FF001C1B5FC01
C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D13804915C0497F6C4815E0
C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D6C4815E05B007EC74813C0
123E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6CB612F0C65D013F1480010F
01FCC7FC010113C02D427BC038>I<4AB47E021F13F0027F13FC49B6FC01079038807F80
90390FFC001FD93FF014C04948137F4948EBFFE048495A5A1400485A120FA248486D13C0
EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000FF017F13E091B512F89039
F9F01FFC9039FBC007FE9039FF8003FF17804A6C13C05B6F13E0A24915F0A317F85BA412
7FA5123FA217F07F121FA2000F4A13E0A26C6C15C06D4913806C018014006C6D485A6C90
38E01FFC6DB55A011F5C010714C0010191C7FC9038003FF02D427BC038>I<121E121F13
FC90B712FEA45A17FC17F817F017E017C0A2481680007EC8EA3F00007C157E5E00785D15
014B5A00F84A5A484A5A5E151FC848C7FC157E5DA24A5A14035D14074A5AA2141F5D143F
A2147F5D14FFA25BA35B92C8FCA35BA55BAA6D5A6D5A6D5A2F447AC238>I<EC7FF00103
B5FC010F14C0013F14F090397F801FFC3A01FC0003FE48486D7E497F4848EC7F80163F48
4815C0A2001F151FA27FA27F7F01FE143F6D158002C0137F02F014006C01FC5B6E485A6C
9038FF83FCEDE7F86CECFFE06C5D6C92C7FC6D14C06D80010F14F882013F8090B7FC4801
3F14802607FC0F14C0260FF80314E04848C6FC496D13F0003F141F48481307496D13F815
0000FF157F90C8123F161F160FA21607A36D15F0127F160F6D15E06C6C141F6DEC3FC06C
6CEC7F80D80FFE903801FF003A07FFC00FFE6C90B55AC615F0013F14C0010F91C7FC0100
13F02D427BC038>I<EC7FF0903807FFFE011F6D7E017F14E09039FFE03FF0489038800F
F848496C7E48488048486D7E001F80003F1680A2484815C08117E0A212FF17F0A617F8A4
5D127FA3003F5CA26C7E5D6C6C5B12076C6C133E6CEBC07C6CEBFFF8013F5B010F01C013
F00101130090C8FCA217E05DA2EA03C0D80FF015C0487E486C491380A217004B5A150F5E
49495A6C48495A01C0EBFFE0260FF0035B6CB65A6C4AC7FC6C14F86C6C13E0D907FEC8FC
2D427BC038>I<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C0C7
FCAEEA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F2C78AB1F>
I<EE1F80A24C7EA24C7EA34C7EA24B7FA34B7FA24B7FA34B7F169F031F80161F82033F80
ED3E07037E80157C8203FC804B7E02018115F0820203814B137F0207815D173F020F814B
7F021F8292C77EA24A82023E80027E82027FB7FCA291B87EA2498302F0C8FCA20103834A
157F0107834A153FA249488284011F8491C97E4984133E017E82B6020FB612F0A54C457C
C455>65 D<B9FC18F018FE727E19E026003FFCC700077F05017F716C7E727E727EA27213
80A37213C0A74E1380A24E1300A24E5A4E5A4E5A4D5B05075B94B5128091B700FCC7FC18
F018FF19E002FCC7000113F8716C7EF01FFE727E7213801AC07213E0A27213F0A31AF8A7
1AF0A2601AE0604E13C0604E138095B5120005075BBA12F86119C04EC7FC18E045447CC3
50>I<DCFFF01470031F01FF14F04AB6EAE0010207EDF803023FEDFE0791B539E001FF0F
4949C7EA3F9F010701F0EC0FFF4901C0804990C87E4948814948814948167F4849163F48
49161F5A4A160F485B19074890CAFC19035A5BA2007F1801A34994C7FC12FFAE127F7F1A
F0A2123FA27F6C18011AE06C7F19036C6D17C06E16077E6C6DEE0F806C6DEE1F006D6C5E
6D6C167E6D6C6C5D6D6D4A5A6D01F0EC07F0010101FEEC1FE06D903AFFF001FF80023F90
B6C7FC020715FC020115F0DA001F1480030001F8C8FC44467AC451>I<B9FC18F018FE72
7E19E026003FFEC7001F13F805017F9438003FFF060F7F727F727F727F84737E737EA273
7EA2737EA21B80A2851BC0A51BE0AD1BC0A51B8061A21B006162193F624F5A19FF624E5B
06075B4E5B063F90C7FC4DB45A050F13F8BA5A19C04EC8FC18F095C9FC4B447CC356>I<
BA12F8A485D8001F90C71201EF003F180F180318011800A2197E193EA3191EA21778A285
A405F890C7FCA316011603161F92B5FCA5ED001F160316011600A2F101E01778A2F103C0
A494C7FC1907A21A80A2190FA2191FA2193FF17F0061601807181F4DB5FCBBFC61A44344
7DC34A>I<BA1280A419C026003FFEC7121F1701EF007F183F181F180F180719E01803A3
1801A3EE01E0F000F0A419001603A31607160F167F91B6FCA59138FE007F160F16071603
A31601A693C9FCAFB712F0A53C447CC346>I<DCFFF01470031F01FF14F04AB6EAE00102
07EDF803023FEDFE0791B539E001FF0F4949C7EA3F9F010701F0EC0FFF4901C0804990C8
7E4948814948814948167F4849163F4849161F5A4A160F485B19074890CAFC19035A5BA2
007F1801A34994C8FC12FFAD057FB612F0127F7FA3003FDC0001EBF000A27F7EA26C7FA2
6C7F807E6C7F6C7F6D7E6D6C5D6D6C7E6D6D5C6D01F05C010101FE143F6D903AFFF001FF
9F023F90B6120F0207EDFC030201EDF000DA001F02C01330030001FCC9FC4C467AC458>
I<B7D88003B612FEA526003FFEC9EBF800B3A791B9FCA54AC9FCB3AAB7D88003B612FEA5
4F447CC358>I<B712E0A5D8001F90C7FCB3B3B3A4B712E0A523447DC32A>I<B76C0103B5
12F8A526003FFEC93807E0004F5A4F5A077EC7FC614E5A4E5A4E5AF01F804EC8FC187E60
4D5AEF07F0EF0FC04D5A4DC9FC177E4C5AEE03F04C5A4C5A4C7EEE7FF04C7E5D4B7F4B7F
4B7FED3F3FDB7E1F7F03FC806E486C7F4B7E4B6C7F0380804B6C7F4A7F717E84717F8371
7F85717F83717F85717F187F727E86727F84727F86727F84B76C90B612FCA54E447CC358
>75 D<B712F0A526003FFECAFCB3B1F00780A4180F1900A460A360A2187EA218FE170117
031707171F177FEE03FFB95AA539447CC343>I<B500FE067FB512806E95B6FCA26F5EA2
D8003F50C7FC013D6DEE03DFA2013C6DEE079FA26E6CEE0F1FA26E6C161EA26E6C163CA3
6E6C1678A26E6C16F0A26E6DEC01E0A26E6DEC03C0A36E6DEC0780A26F6CEC0F00A26F6C
141EA26F6C5CA36F6C5CA26F6C5CA26F6D485AA26F6D485AA26F6D485AA3706C48C7FCA2
93383FF81EA2706C5AA2706C5AA3706C5AA2705BA2705BA2705BA2B6057FB6128071C7FC
A2173E171C61447CC36A>I<B64BB512FE8181A281D8003F6D91C7EA780081013D7F8113
3C6E7E6E7F6E7F6E7F6E7F82806E7F6E7F6F7E6F7F83816F7F6F7F6F7F6F7F6F7F838270
7F707F707F707F8482707F707F717E7113807113C019E0837113F07113F87113FC7113FE
19FF847213F884848484A28484197F193F191FA2190F1907B61603190119001A78A24F44
7CC358>I<B9FC18F018FE727E19E0D8001F90C7000F7F05017F716C7E727E727E721380
A21AC084A21AE0A91AC0A24E1380A21A00604E5A4E5A4D485A050F5B92B712C096C7FC18
FC18C092CBFCB3A7B712E0A543447DC34D>80 D<B812F8EFFFC018F818FE727ED8001F90
C7003F13E005037F05007F727E727E727EA28684A286A762A24E90C7FCA24E5A61187F94
3801FFF005075B053F138092B7C8FC18F818E018F892C77FEF3FFF050F7F717F717FA271
7FA2717FA785A61B0F85A2187F73131F72141EB700E06DEB803E72EBE0FC72EBFFF80601
14F0726C13E0CC0007138050457DC354>82 D<DAFFE0131C010701FE133C013F9038FF80
7C90B6EAE0FC4815F9489038801FFF3907FC00014848EB007F4848143F4848140F491407
007F15035B1601160012FF177CA27FA26D153C7F7F6D92C7FC6C7EEBFFE014FE6CEBFFF0
15FF6C15E016FC6C816C6F7E6C826C826C6C81011F810107811300020F80140003077FED
007F82040F1380828212F082A282A27EA218007EA26C5D6C5E6D14036D5D6D140701F84A
5A01FFEC3FF002F8EBFFE0486CB65AD8FC1F92C7FCD8F80714FC48C614F0480107138031
467AC43E>I<003FBA12E0A59026FE000FEB8003D87FE09338003FF049171F90C71607A2
007E1803007C1801A300781800A400F819F8481978A5C81700B3B3A20107B8FCA545437C
C24E>I<B76C010FB512F8A526003FFEC93803E000B3B3A9011F17076280190F6D606F15
1F6D95C7FC6D6D5D197E6D6D5D6D6D1403DA7FFC4A5A6EB4EC3FF0020F9039F003FFE06E
90B61280020193C8FC6E6C14FC030F14E09226007FFEC9FC4D457CC356>I<B792B6FCA5
26003FFECAEAFC00806D606F15016D608119036D606F15076D606F150F6D6081191F6D6D
93C7FC61027F163E6F157E023F167C8119FC6E6D5C18016E5E7013036E5E8218076E6D5C
180F6E5E70131F6E93C8FC705B037F143E82187E033F147C7013FC6F5C17816F5C17C117
C36F5C17E76F5C17FF6F5CA36F91C9FCA2705AA2705AA3705AA2705AA2705AA250457EC3
55>I<B600FE017FB691B512FEA526007FFCC8D83FFEC9EA7C006E82013F701778807415
F86D705F6F7014016D705FA26F7014036D64814E6D14076D646F70140F6D041E94C7FCA2
6F023E6D5C6DDC3C7F151E81027F037C6D5CF0783F6F70147C023F4B6C1578A26F01016F
13F86E4B6C5D16806E02036F485A4E7E04C0EEE0036E4A486C5DA2DCE00FEDF0076E4B6C
5D16F06E4A6F48C8FC051E7F04F8705A6E4A027F131EA2DCFC7CEDFE3E037F0178023F13
3C04FE16FF033F01F85E4D8004FF17F86F496E5BA36F496E5BA26F604D80A26F90C86C5B
A36F486F90C9FCA26F48167EA30478163C6F457EC374>I<903801FFE0011F13FE017F6D
7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00F0
90C7FCA40203B5FC91B6FC1307013F13F19038FFFC01000313E0000F1380381FFE00485A
5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EBFF
F86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 D<EB7FC0B5FCA512037EB1ED0FF8
92B57E02C314E002CF14F89139DFC03FFC9139FF000FFE02FCEB03FF4A6D13804A15C04A
6D13E05CEF7FF0A218F8173FA318FCAC18F8A2177F18F0A3EFFFE06E15C06E5B6E491380
027C491300496C495A903AFC1FC07FFC496CB512F0D9F00314C049C691C7FCC8EA1FF036
467DC43E>I<EC3FFC49B512C0010F14F0013F14FC90397FF003FE9039FFC001FF000349
5A48494813805B120F485AA2485A6F1300007F6E5AED00784991C7FCA212FFAC6C7EA312
3F6DEC03C0A26C6C1407000F16806D140F6C6DEB1F006C6D133E6C01F05B3A007FFC03F8
6DB55A010F14C0010391C7FC9038003FF82A2F7CAD32>I<EE03FEED07FFA5ED001F160F
B1EC3FE0903803FFFC010FEBFF8F013F14CF9039FFF807FF48EBC00148903880007F4890
C7123F4848141F49140F121F485AA3127F5BA212FFAC127FA37F123FA26C6C141FA26C6C
143F0007157F6C6C91B5FC6CD9C00314FC6C9038F01FEF6DB5128F011FEBFE0F010713F8
9026007FC0EBF80036467CC43E>I<EC3FF80103B57E010F14E0013F8090397FF83FF890
39FFC007FC48496C7E48496C7E48486D1380485A001FED7FC05B003FED3FE0A2127F5B17
F0161F12FFA290B7FCA401F0C9FCA5127FA27FA2123F17F06C7E16016C6C15E06C6C1403
6C6DEB07C06C6DEB0F806C01F0EB3F0090397FFE01FE011FB55A010714F0010114C09026
001FFEC7FC2C2F7DAD33>I<EDFF80020F13E0027F13F049B512F849EB8FFC90390FFE0F
FE90381FFC1F14F8133FEB7FF0A2ED0FFCEBFFE0ED03F0ED00C01600ABB612F8A5C601E0
C7FCB3B0007FEBFFE0A527467DC522>I<DAFFE0137E010F9039FE03FF80013FEBFF8F90
B812C048D9C07F133F489038001FF84848EB0FFC4848903907FE1F80001F9238FF0F0049
6D90C7FCA2003F82A8001F93C7FCA26D5B000F5D6C6C495A6C6C495A6C9038C07FF04890
B55A1680D8078F49C8FC018013E0000F90CAFCA47F7F7F90B612C016FC6CEDFF8017E06C
826C16FC7E000382000F82D81FF0C77ED83FC014074848020113808248C9FC177FA46D15
FF007F17006D5C6C6C4A5A6C6C4A5AD80FFEEC3FF83B07FFC001FFF0000190B612C06C6C
92C7FC010F14F8D9007F90C8FC32427DAC38>I<EB7FC0B5FCA512037EB1ED07FE92383F
FF8092B512E002C114F89139C7F03FFC9138CF801F9139DF000FFE14DE14FC4A6D7E5CA2
5CA35CB3A7B60083B512FEA537457CC43E>I<137C48B4FC4813804813C0A24813E0A56C
13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFFA512037EB3AFB6FCA518467CC520
>I<EB7FC0B5FCA512037EB293387FFFE0A593380FE0004C5A4CC7FC167E5EED03F8ED07
E04B5A4B5A037FC8FC15FEECC1FCECC3FE14C7ECDFFF91B57E82A202F97F02E17F02C07F
EC807F6F7E826F7E816F7F836F7F816F7F83707E163FB60003B512F8A535457DC43B>
107 D<EB7FC0B5FCA512037EB3B3B3A3B61280A519457CC420>I<90277F8007FEEC0FFC
B590263FFFC090387FFF8092B5D8F001B512E002816E4880913D87F01FFC0FE03FF8913D
8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D013C130F02BC5D02F86D496D7E
A24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7CAC5E>I<90397F8007FEB59038
3FFF8092B512E0028114F8913987F03FFC91388F801F000390399F000FFE6C139E14BC02
F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>I<EC1FFC49B512C0010714F001
1F14FC90397FF80FFF9026FFC0017F48496C7F4848C7EA3FE000078248486E7E49140F00
1F82A2003F82491407007F82A400FF1780AA007F1700A46C6C4A5AA2001F5E6D141F000F
5E6C6C4A5AA26C6C6CEBFFE06C6D485B27007FF80F90C7FC6DB55A010F14F8010114C090
26001FFCC8FC312F7DAD38>I<90397FC00FF8B590B57E02C314E002CF14F89139DFC03F
FC9139FF001FFE000301FCEB07FF6C496D13804A15C04A6D13E05C7013F0A2EF7FF8A4EF
3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913806E4913006E495A9139DFC07F
FC02CFB512F002C314C002C091C7FCED1FF092C9FCADB67EA536407DAC3E>I<DA3FE013
1E902603FFFC133E010F01FF137E013F1480903AFFF80FE0FE489038E003F148EBC00148
90388000FB4890C7127F49143F001F151F485A160F5B127FA3485AAC6C7EA46C7EA26C6C
141F163F6C6C147F6C15FF6C6D5A6C9038E003EF6C9038F01FCF6DB5128F011FEBFE0F01
0313F89038007FC091C7FCAD0307B512FCA536407CAC3B>I<90387F807FB53881FFE002
8313F0028F13F8ED8FFC91389F1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8ED
01E092C7FCA35CB3A5B612E0A5272D7DAC2E>I<90391FFC038090B51287000314FF120F
381FF003383FC00049133F48C7121F127E00FE140FA215077EA27F01E090C7FC13FE387F
FFF014FF6C14C015F06C14FC6C800003806C15806C7E010F14C0EB003F020313E0140000
F0143FA26C141F150FA27EA26C15C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A
00FC5CD8F03F13E026E007FEC7FC232F7CAD2C>I<EB01E0A51303A41307A2130FA2131F
A2133F137F13FF1203000F90B51280B7FCA4C601E0C7FCB3A3ED01E0A9150302F013C013
7F150790393FF80F8090391FFC1F006DB5FC6D13FC01015B9038003FE023407EBE2C>I<
D97FC049B4FCB50103B5FCA50003EC000F6C81B3A85EA25EA25E7E6E491380017FD901F7
13FE9138F807E76DB512C7010F1407010313FE9026007FF0EBFC00372E7CAC3E>I<B690
3803FFFCA5000101E09038003E006C163C80017F5D8017F8013F5D6E1301011F5D6E1303
010F5D6E13076D5DED800F6D92C7FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8
F8023F5B15FD021F5B15FF6E5BA36E5BA26E90C8FCA26E5AA26E5AA21578362C7EAB3B>
I<B5D8FE1FB539801FFFF0A500019027C0003FE0C7EA7C007114786E17F86C6F6C5C6E16
01017F6E6C5CA26E011F1403013F6F5C6E013F1407011F6F5CA26E0179140F010F048090
C7FC6E01F95C6D02F0EBC01E15806D902681E07F5B18E003C3157C6D9139C03FF07815E7
6DDA801F5B18F803FF14F96E9039000FFDE018FF6E486D5BA36E486D5BA26E486D90C8FC
A24B7F02075DA26E48147C4B143C4C2C7EAB51>I<B500FE90383FFFF0A5C601F0903803
E0006D6C495A013F4A5A6D6C49C7FC6E5B6D6C137E6DEB807C6D6D5A6DEBC1F0EDE3E06D
EBF7C06EB45A806E90C8FC5D6E7E6E7F6E7FA24A7F4A7F8291381F3FFCEC3E1F027C7F4A
6C7E49486C7F01036D7F49487E02C08049486C7F49C76C7E013E6E7E017E141FB500E090
B512FCA5362C7EAB3B>I<B6903803FFFCA5000101E09038003E006C163C80017F5D8017
F8013F5D6E1301011F5D6E1303010F5D6E13076D5DED800F6D92C7FC15C05E6DEBE01E16
3E6D143CEDF07C027F1378EDF8F8023F5B15FD021F5B15FF6E5BA36E5BA26E90C8FCA26E
5AA26E5AA21578A215F85D14015D001F1303D83F805B387FC007D8FFE05B140F92C9FC5C
143E495A387FC1F8EB07F06CB45A6C5B000790CAFCEA01FC36407EAB3B>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 14.4 62
/Ff 62 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<171F4D7E4D7EA24D7EA34C7FA24C7FA3
4C7FA34C7FA24C7FA34C8083047F80167E8304FE804C7E03018116F8830303814C7E0307
8116E083030F814C7E031F81168083033F8293C77E4B82157E8403FE824B800201835D84
0203834B800207835D844AB87EA24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82
010185A24A820103854A82010785A24A82010F855C011F717FEBFFFCB600F8020FB712E0
A55B547BD366>65 D<BA12C019FEF1FFC01AF01AFCD8000701F0C7000313FFDE007F7F73
7F070F7F737F878587858785A287A84F5BA263616361634F5B4F5B077F90C7FC4E485A06
0713F892B812E097C8FC861AF003F0C7000313FE9539003FFF80070F13E0737F07017F87
737F747E1C807413C0A27413E0A31CF0A386A362A31CE0A2621CC0A250138097B5FC1C00
4F5B19074F5B073F13F04EB55ABC128098C7FC1AF81AC007F8C8FC54527CD160>I<9326
01FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003
EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F88249
49824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181F
A3485B1B0FA25AA298C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C
1A1F6C7F1C006C6D606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC
4C5A6D6DEE7F806D6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0
020091B612C0033F93C8FC030715FCDB007F14E0040101FCC9FC525479D261>I<BA7E19
FCF1FF801AF01AFCD8000701F0C7000F13FF060014C0071F7F070713F807017F737F747E
747F747F86747F747F8886888688A2757EA31D8087A21DC0A51DE0A387A963A31DC0A51D
80A2631D00A3515AA2646264505B6264505B505B5090C7FCF2FFFE4F5B07075B071F5B96
B512C0060F91C8FCBB5A1AF01AC007FCC9FC19805B527CD167>I<BC1280A5D8000701F8
C7000114C0F0001F19071901851A7F1A3F1A1FA2F20FE0A21A07A31A03A318F81BF01A01
A497C7FC1701A317031707170F177F92B6FCA59238F8007F170F170717031701A317001B
3EA31B7CA395C8FCA21BFCA21BF8A21A01A31A031BF01A071A0FA21A1F1A3FF27FE0F101
FF1907191F0603B5FCBCFCA21BC0A34F517CD058>I<BB12FEA5D8000701F8C700077FF0
007F191F190785858586861B80A21A1FA31A0FA41BC006F81307A497C7FCA31701A31703
1707170F177F92B6FCA59238F8007F170F170717031701A31700A795C9FCB3B812F8A54A
517CD055>I<932601FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8
EA803F0203DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC4948
48C9FC4901F8824949824949824949824949824990CA7E494883A2484983485B1B7F485B
481A3FA24849181FA3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7
003FEBC000A36C7FA36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93
B5FC6D13FF6D6C6D5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EA
C07F033FEE001F030703FC1307DB007F02E01301040149CAFC5B5479D26A>I<B8D8C003
B8FCA5D8000701F8C9001FEBE000B3AE92BAFCA503F8C9121FB3B1B8D8C003B8FCA56052
7CD169>I<B812C0A5D8000701F8C7FCB3B3B3B2B812C0A52A527CD132>I<B800C091B612
F8A5D8000701F8C90003EBF8009738007F8051C7FC505AF203F8F20FF0505A505A505A50
C8FCF101FCF107F84F5A4F5A4F5A4F5A07FEC9FCF003FC4E5A4E5A4E5A4E5A4E5ADD01FE
CAFC4D5A4D5A4D5A4D7E173F4D7E4C487E4C7F5E4C804C804C80EEFF7F9226F9FE3F7FDB
FBFC809226FFF81F7F4C7EDCC0077F0480804C7E4B6D804B6D804B8284727F727F868472
7F727F8784728087737F85737F87737F85737F88857380747F888697B512FCB800C0013F
ECFFFEA55F527CD169>75 D<B812F8A5D8000701F8CAFCB3B3A91A7CA41AFC1AF8A51901
A31903A219071AF0190FA2191F193F197F19FF180360183F4DB5FCBB12E0A546527CD151
>I<B600FC073FB512FE6F61A26F96B6FCA2D80007F5C00070EF01EFA202EF6DEF03CFA2
02E76DEF078FA202E36DEF0F0FA202E16D171EA302E06D173CA26F6C1778A26F6C17F0A2
6F6DED01E0A26F6DED03C0A36F6DED0780A26F6DED0F00A26F6D151EA26F6D5DA3706C5D
A2706C5DA2706D495AA2706D495AA2706D495AA3706D49C7FCA2706D131EA2706D5BA271
6C5BA3716C5BA271EB81E0A271EBC3C0A271EBE780A27101FFC8FCA3715BA2715BA2725A
A2725AA2D93FFC6F5AB74DB712FEA2725AA2725A77527CD180>I<B600FC93B7FC8181A2
82D800076E9239003FFC0070EE07E08282A28202EF7F02E77F02E380A202E18002E0806F
7F6F7F6F7FA26F7F6F7F6F806F80A26F80707F707F707F707FA2707F7080708070808583
717F717F717F717FA27114807114C07114E07213F07213F8A27213FC7213FE7213FF7214
87A27214C77214E77313F77313FF85A285858585A28586868686A286868686A2D93FFC18
7FB7173F1B1F1B0F1B07755A60527CD169>I<93380FFFC00303B6FC031F15E092B712FC
0203D9FC0013FF020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE49
01E0ED1FFF49496F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A
83481B804A83481BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA4
6C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C
5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01
E0011F13F0020F01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13
E0565479D265>I<BAFC19F819FF1AE086D8000701F0C7001F13FC060113FF726C138073
13C0070F13E01BF0857313F81BFCA27313FEA41BFFA81BFEA31BFC61A21BF84F13F04F13
E0614F13C04F13004E485A061F5B92B812F01AC04FC7FC19E003F8CBFCB3AEB812C0A550
527CD15C>I<B912F0F0FF8019F819FF1AC0D8000701F0C714F0060F7F060113FE727F73
7F737F85737F87A2737FA387A863A2616363A24F5B4F5B4F90C8FC4F5A06035B060F13F0
95B512C092B8C9FC19F819E019F89226F0000313FE9439007FFF80727F727F727F727F72
7F8684A28684A787A71D1C75133EA38575137E73157C7513FC731401B86C6D9038F803F8
07039038FE07F07390B512E0736C14C0080F1400CEEA7FFC5F537CD164>82
D<91260FFF80130791B500F85B010702FF5B011FEDC03F49EDF07F9026FFFC006D5A4801
E0EB0FFD4801800101B5FC4848C87E48488149150F001F824981123F4981007F82A28412
FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86CECFF8016FC6CEDFFC017F06C
16FC6C16FF6C17C06C836C836D826D82010F821303010082021F16801400030F15C0ED00
7F040714E01600173F050F13F08383A200788200F882A3187FA27EA219E07EA26CEFFFC0
A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFFC003FFE0
486C90B65AD8FC0393C7FC48C66C14FC48010F14F048D9007F90C8FC3C5479D24B>I<00
3FBC1280A59126C0003F9038C0007F49C71607D87FF8060113C001E08449197F49193F90
C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0A55351
7BD05E>I<B800C00103B612FCA5D8000701F8CAEBF000F31F80B3B3B11B3FA26D97C7FC
81637F1B7E6D6D17FE505A6E7E505A6E6D15076E4D5A6E6D4B5A6E6D4B5A6E01F84B5A6E
6DDA03FFC8FC6E6CB46CEB0FFE6F9039F001FFF8030F90B65A030316C0DB007F92C9FC04
0F14F8DC007F13805E537CD167>I<B700FE031FB512FEA5D8001F01F0CA383FFE00F307
F06D626F170F6D62811B1F6D6D601B3F6D97C7FC6F5F6D197E821BFE6E6D5E1A016E6D5E
1A036E60701507A26E6D5E1A0F6E6D5E1A1F6E6070153FA26E6D93C8FC626E6E147E1AFE
6F5E711301A26F6D5C19036F6D5C19076F5E71130FA26F6D5C191F6F6D5C193F6F93C9FC
715BA26FEC807E19FE706D5A18C1705C18E3705C18F318F770EBFFE0A2705CA2705CA370
91CAFCA2705BA2715AA3715AA2715AA2715A715A5F537DD166>I<B700FC017FB600FE91
B612F0A5D8003F01C0C8001F01E0C9EBF8006F71EE0FC06D7161876F1C1F6D7196C7FC6F
8373606D1E3E6F836D7160876F1CFC6D666F4B801F016D66704A806E525A88704A17076E
059F5F70021F80080F160F6E6570023F806EDC3E074CC8FC8870027E5F6EDC7C03163E70
02FC804F6C167E6E1C7C700101814F6C16FC6E745B70010317016E4C6D5D060716C00580
496D14036F63DDC00F16E04F6D14076F07F05BDDE01F170F6F92C76C5D1DF8DDF03E6E14
1F6F98C9FCDDF87E16FC067C6E5C6FF1FE3EDDFCFC177E6F4A6E147C1DFFDDFFF06E14FC
6F62A24E816F62A270496F5BA24E817061A295C97E7061A270487090CAFCA37048705AA2
4D1601040360A27048705A84537DD18B>I<EC7FFF0107B512F0013F14FE90B77E48D9E0
0F7F2703FE000113F0486C6D7F6EEB3FFC48826E131F83707FA36C496D7FA26C90C7FC6C
5AC9FCA6037FB5FC020FB6FC91B7FC01071487013FEBF0074913803901FFFC004813F048
5B485B485B4890C7FC5A5BA2485AA45EA26D5C007F151D163D6C6C02797F6C6D01F113F8
6C9026C003E1EBFFE06C9026F81FC014F06C90B5487EC6ED001F011F01FC010713E00101
01E090C8FC3C387CB641>97 D<EB3FF0B5FCA51203C6FCB3A4923801FFE0030F13FE033F
EBFFC092B612F002F301017F913AF7F8003FFEDAFFE0EB0FFF03806D7F92C76C7F4A6E7F
4A824A6E7FA2727EA285A28584A31A80AC1A00A44E5AA36118FF616E4A5BA26E4A5B6E4A
5B6F495BDACFC04990C7FCDA87F0EB7FFC913A03FE03FFF849C6B612E0496D148049011F
01FCC8FC90C7000313C041547BD24B>I<913801FFF8021FEBFF8091B612F0010315FC01
0F9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F
138091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15
C07E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF00103
90B55A01001580023F49C7FC020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707
B3A4913801FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC0101
B5FC49487F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37E
A26C7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07F
CF6D90B5128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC002
3F13FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F48496D
7E48178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFC
A6127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F
806D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113
F034387CB63D>I<ED3FFC0203B5FC020F14C0023F14E09139FFF81FF0499038C03FF849
EB807F49903800FFFC495A495AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0A5
26007FF8C8FCB3B3A7007FB512FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C001
0FDAFC1F13E0013FECFF7F90267FFC0F9038FF9FF09026FFE001EBF83F48496C13E04849
90387FF01F4890C7D83FF813E0489338FC0FC0F0078048486E6CC7FCA2003F82A9001F5E
A26C6C4A5AA26C5E6C6D495A6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01C3
14F02607C03F90C9FC91CBFCA2120FA37FA213F813FE90B7FC6C16F817FF18C06C836C83
6C836D828448B9FC12074848C700031480D81FF8EC003F4848150748486F13C083485A83
A56D5D007F18806D5D003F18006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A6C
01FE011F5B6C6CB71280010F03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3F
F0B5FCA51203C6FCB3A4EE1FFC93B512C0030314F0030F8092391FE07FFC92393F001FFE
037C8003F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0
A542537BD24B>I<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FC
ADEB3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>I<EB3FF0B5FCA51203C6FCB3A5
4CB512F8A59339003FFE00EF1FF0EF3FC04D5A4DC7FCEE03FEEE07F84C5A4C5AEE7FC04C
C8FC4B5A4B5AED0FF8ED1FE04B7E4B7EECF1FF02F37F02F77F91B6FC83159F030F7F02FE
80DAF8077F4A7E6F7F6F7F83707E82707F84707F707F82707F84707F177F717E4D13C0B6
D8F003B6FCA540537CD247>107 D<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD2
25>I<D93FF0D91FFCEDFFE0B591B500C0010713FE030302F0011F6D7E030F6E017F8092
271FE07FFCD9FF037F922A3F001FFE01F8007F0003027C9126FF03E080C602F06DD90780
137FDAF1E0038FC77FDAF3C0159EDAF7806D01BC143F07FC8102FFC75C4A5EA24A5EA44A
5EB3ACB6D8F807B6D8C03FB512FEA567367BB570>I<D93FF0EB1FFCB591B512C0030314
F0030F8092391FE07FFC92393F001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F
8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542367BB54B>I<913801FFE0021F13FE
91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F
48496D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC007F18
80A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD9
3FFE011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387CB643
>I<903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F8007FFE00
03D9FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380
AC1A0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC91
26FBFE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B
>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3
E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AA
B612FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF8
1307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13
FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC003F
030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001
F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C38
7CB635>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90B6FC
B8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC
6DEBFFF86D6C5B021F5B020313802A4D7ECB34>I<D93FF8913801FFC0B50207B5FCA500
03ED001FC61607B3AE5FA35FA2017F5D173B177B6D6C14F3DC01E313F06D6CD907C3EBFF
C0903A0FFFC03F836D90B51203010114FE6D6C13F8020701E091C7FC42377BB54B>I<B6
00F00107B5FCA5000101F8C8EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15FC6D
5E6F13016D5E8117036D5E6F13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E177E
023F147C6F13FC6E5C16816E5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F5A
A36F5AA26F5AA26F5AA26F5A6F5A40367DB447>I<B6D8E07FB5D8C003B512C0A5000101
F0C701F0C7381FF8006E027FED07E06C715DA26E023F150F017F705DA26E181F013F4B6C
92C7FC6E606D70143E94B5FC6F177E6D4A6E137C03C001F315FC6D715B160303E001E114
016D020702E05B03F013C06D71485A160F03F8D9807F13076D05F85B93381F003F03FC16
0F027F4902FC5BDBFE3E011F131F023F04FE90C8FC167EDBFF7C010F5B6E01FCECFF3E4C
6D137E6E5FA24C7F6E5F4C7F6E5FA24C7F6E5F4C147FA26E5F93C8123F6F5EA2033E6FC9
FC5A367DB461>I<007FB500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C
6D6D495A6D4B5A6F495A6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8F
E06EEBCFC06EEBFF806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD
7F03F87F4A486C7E4A486C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A
49486D7F01076F7E49486E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>I<B600
F00107B5FCA5C601F8C8EA7FE06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F1301
6D5E6F13036D5E8117076D6D5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E023F14
7C6F13FCA26E6D5A16816EEBC1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5AA26F
5AA26F5AA26F5AA26F5AA35E150F5E151F93C9FC5DD81FC0133E486C137E486C137C486C
13FC5D14015D14034A5A6C48485A49485A263FC07FCAFCEB81FE6CB45A6C13F000035BC6
90CBFC404D7DB447>I<001FB8FC1880A3912680007F130001FCC7B5FC01F0495B495D49
495B495B4B5B48C75C5D4B5B5F003E4A90C7FC92B5FC4A5B5E4A5B5CC7485B5E4A5B5C4A
5B93C8FC91B5FC495B5D4949EB0F805B495B5D495B49151F4949140092C7FC495A485E48
5B5C485E485B4A5C48495B4815074849495A91C712FFB8FCA37E31357CB43C>I
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fg cmbx12 20.74 23
/Fg 23 121 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<F103F84F
7E4F7EA24F7EA34F7FA24F7FA396B57EA24E80A34E80A24E80A34E80A24E80A34E81A24E
81A219BFDEFF9F80191F4D6D80A218FE05036D8018FC05076D80A218F8050F6D8018F005
1F6D80A260053F6E8060057F6E80A26005FF6E8095C7FC4C6F80A25F04036F805F04076F
80A25F040F6F805F041F6F80A25F043F70805F047F7080A25F04FF708094C9FC4B7180A2
5E030371805E4BBB7EA34B86A24B86A3DB3FE0CA6C805E037F7280A25E03FF7280A24A90
CB6C80A25D02037380A24A487280A25D020F7380A24B84021F885D023F7480A24B85027F
895D902607FFFC7380B86C031FB912E0A8837979F892>65 D<BDFC1CFEF4FFC01DF81DFF
1EC01EF08AC7003F49C9000F14FE090180756C800A1F807680768076807680A27680A277
7FA2208089A320C0A289A565A32080A3531400A29AB55AA2525C6764525C525C525C525C
5249C7FC51B55A090714F0093F14C00807B6C8FC93BA12F81DC0651DFCF5FF801EF04CCA
14FC0A3F13FF0A0F800A0314E076807614FC777F777F2080897714C020E0A27714F0A220
F88920FCA47714FEA96520FCA45314F8A26520F06520E05314C0659AB61280521500525C
1C0F5214F899B65A09075DC05A9CC7FC1EFC1EF01EC053C8FC1DE00AF8C9FC777679F58A
>I<96267FFFE01670063FB6ED01F80503B700F01403053F04FC14074CB96C130F040706
E0131F043F72133F93BA00FC137F0303DC00076D13FF030F03C09039003FFF814B02FCC8
000713C3037F02E0030113F792B600806F6CB5FC02034ACA121F4A02F8834A02E0834A4A
1701027F4A8391B548CC7E494A85495C4C854988494A85494A85495C8A4991CDFC90B548
86A2484A1B7FA2481E3F5D481E1F5D5A1F0FA2485CA3481E075DA2F703F0489BC7FCA45D
A2B6FCB27EA281A47EA2F703F06FF307F87EA36C80A21F0F7E6F1CF07E6F1B1F7E20E06C
6E1B3F816DF57FC06D80F7FF806D806D6E4F13006D6E616D525A826D6E4F5A6D6E4F5A6E
6D6C4E5A021F6EF0FFE06E6E4D5B6E02F84D5B6E02FE050F90C7FC02006E6CEE3FFE6F02
F0EEFFFC031F02FE03035B6FDAFFC0021F13E0030303FF0103B55A030093B7C8FC043F18
FC040718F0040118C0DC003F94C9FC050316F8DD003F1580DE007F01F0CAFC757A75F78C
>I<92383FFFF80207B612E0027F15FC49B87E010717E0011F83499026F0007F13FC4948
C7000F7F90B502036D7E486E6D806F6D80727F486E6E7F8486727FA28684A26C5C72806C
5C6D90C8FC6D5AEB0FF8EB03E090CAFCA70507B6FC041FB7FC0303B8FC157F0203B9FC02
1FECFE0391B612800103ECF800010F14C04991C7FC017F13FC90B512F04814C0485C4891
C8FC485B5A485B5C5A5CA2B5FC5CA360A36E5DA26C5F6E5D187E6C6D846E4A48806C6D4A
4814FC6C6ED90FF0ECFFFC6C02E090263FE07F14FE00019139FC03FFC06C91B6487E013F
4B487E010F4B1307010303F01301D9003F0280D9003F13FC020101F8CBFC57507ACE5E>
97 D<97380FFFE00607B6FCA8F00003190086B3AD93383FFF800307B512F8033F14FF4A
B712C0020716F0021F16FC027F9039FE007FFE91B500F0EB0FFF01030280010190B5FC49
49C87E49498149498149498149498190B548814884484A8192CAFC5AA2485BA25A5C5AA3
5A5CA4B5FCAF7EA4807EA37EA2807EA26C7F616C6E5D6C606C80616D6D5D6D6D5D6D6D92
B67E6D6D4A15FC010301FF0207EDFFFE6D02C0EB3FFE6D6C9039FC01FFF86E90B65A020F
16C002031600DA007F14FC030F14E09226007FFEC749C7FC5F797AF76C>100
D<93387FFF80030FB512FC037FECFF804AB712E0020716F8021F16FE027FD9F8077F49B5
D8C000804991C7003F13E04901FC020F7F49496E7F49498049496E7F49496E7F90B55A48
727E92C914804884485B1BC048841BE0485BA27313F05AA25C5AA21BF885A2B5FCA391BA
FCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F86C7F1A0F6C6E17F06C191F6F17
E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13006D6D6CEC0FFE6D02E0EC3FFC
6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002034CC7FC020016F8031F15E003
0392C8FCDB000F13E04D507BCE58>I<903801FFFCB6FCA8C67E131F7FB3AD95380FFFE0
95B512FE05036E7E050F15E0053F15F84D81932701FFF01F7F4CD900077FDC07FC6D80DC
0FF06D80DC1FC07F4C48824CC8FC047E6F7F5EEDFDF85E03FF707F5EA25EA25EA293C9FC
A45DB3B3A6B8D8E003B81280A8617879F76C>104 D<EB01FCEB07FF011F13C0497F497F
90B57EA24880A24880A76C5CA26C5CA26D5B6D5B6D5B010790C8FCEB01FC90CAFCB29038
01FFFC007FB5FCA8C67E131F7FB3B3B3A5B81280A8297979F835>I<902601FFF891380F
FFE0B692B512FE05036E7E050F15E0053F15F84D81932701FFF01F7F4CD900077FDC07FC
6D80C66CDA0FF06D80011FDA1FC07F6D4A48824CC8FC047E6F7F5EEDF9F85E03FB707F5E
15FF5EA25EA293C9FCA45DB3B3A6B8D8E003B81280A8614E79CD6C>110
D<902601FFFCEC7FFEB6020FB512F0057F14FE4CB712C0040716F0041F82047F16FE93B5
C66C7F92B500F0010F14C0C66C0380010380011F4AC76C806D4A6E8004F06F7F4C6F7F4C
6F7F4C8193C915804B7014C0861DE0A27414F0A27414F8A47513FCA57513FEAF5113FCA5
98B512F8A31DF0621DE0621DC0621D806F5E701800704B5B505B704B5B7092B55A04FC4A
5C704A5C706C010F5C05E0013F49C7FC9227FE7FFC01B55A70B712F0040F16C0040393C8
FC040015F8053F14C0050301F0C9FC94CCFCB3A6B812E0A85F6F7ACD6C>112
D<902601FFF8EB07FEB691383FFFC094B512F00403804C14FE4C8093261FFC3F13809326
3FE07F13C0DC7F80B5FCC66C5D011FDAFE0114E06DEBF9FC16F815FB16F016E015FF16C0
7114C05E72138095381FFE0093C76C5AF001E095C8FCA25DA65DB3B3A2B812F8A8434E7A
CD4F>114 D<15FFA75CA55CA45CA25CA25CA25CA25C91B5FCA25B5B5B131F5B90B9FC12
0FBAFCA6D8000791C9FCB3B3A3F01FE0AE183F7014C07F187F7014806D16FF826D4B1300
6E6D485AEEFE0F6E90B55A020F5D6E5D020115C06E6C5C031F49C7FC030113F03B6E7CEC
4B>116 D<007FB7023FB612F0A8D8000302C0020191C7FC6D6E9138007FF0705E6D4E5A
6E6D4A5B6E6D4A90C8FC6E6D5C704A5A6E4C5A6E6E5C6E6E495A6E6E495A7113FF6E6E48
5B6F4A5B6F6D4890C9FC6F01FE5B71485A6FEC9FF86F14BF6FECFFF06F5D616F5D7091CA
FC705B828470808270807080854C805E4C80854C804C81EE7FE7DCFFE3804B01C1804B01
80804D804B487F4B486D7F031F6E7F4B486D7F4B48824B487F4C6D804A496D804A90C880
4A844A48814A486F7F4A486F7F4B6F7F4A48844A486F80010F01F881B76C91B712FEA85F
4D7DCC66>120 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fh cmsl10 10.95 39
/Fh 39 91 df<1530157015E0EC03C0EC0780EC0F00141E5C147C5C5C495A1303495A5C
130F49C7FCA2133E137E137C13FC5B1201A2485AA25B1207A2485AA3485AA448C8FCA45A
127EA512FE5AA95AA87EA2127CA5123C123EA2121EA2121F7EA26C7EA26C7EA26C7E1200
13707FA213181C5A74C323>40 D<497E806D7E1470147880A280A280A2EC0780A215C014
03A215E0A3EC01F0A615F8AF140315F0A5140715E0A4140F15C0A3141F1580A3EC3F00A2
143E147EA2147C14FC5C13015C13035C13075C495AA249C7FC131E133E5B13785B485A48
5A12075B000EC8FC5A5A12F05A1D5A7FC323>I<007FB5FCA2B512FEA418067C961E>45
D<121EEA3F80EA7FC012FFA41380EA7F00123C0A0A788919>I<1703EF0780170FA2EF1F
00A2173EA25FA25FA24C5AA24C5AA24C5AA24C5AA24CC7FCA2163E167E167C5EA24B5AA2
4B5AA24B5AA24B5AA24BC8FCA2153EA25DA25DA24A5AA24A5AA24A5AA24A5AA24AC9FCA2
143EA25CA25CA2495AA2495AA2495AA2495A131F91CAFC133EA25BA25BA2485AA2485AA2
485AA2485AA248CBFCA2123EA25AA25AA21270315B7FC32D>I<EC07F8EC3FFF9138FC0F
C0903903F003E0903907C001F0D90F8013F849C7FC013E14FC017E147C017C147E13FC48
5AA20003157F5B1207A2120F5BA2121F16FF5BA2123FA44848EB01FEA648C7EA03FCA5ED
07F8A25A16F0A2150F16E0A3ED1FC0A21680007E143F1600157E123E003F5C4A5AD81F80
5B000FEB07E06C6C485A2603F03FC7FC3800FFFCEB1FE0283F79BC2D>I<157015F01401
1407143F903803FFE0137FEBFFCFEBF80F1300141F15C0A5143F1580A5147F1500A55C5C
A513015CA513035CA513075CA5130F5CA3131F497EB612F8A31D3D78BC2D>I<EC01FE91
380FFFE0023F13F89138FC07FC903901E001FE903907C000FF49C7EA7F80011E15C0163F
4915E05B0170141F13FF80A35A163FA26C90C7FC137E0118EC7FC090C8FCEEFF80A24B13
00A24B5A5E4B5A4B5A4B5A5E4B5A4BC7FC15FEEC01F84A5A4A5A4A5A4AC8FC143E5C5CEB
01E04948130E49485B49C7FC131E495C13705B48485C484814F0000FB6FC5A485D5AB7FC
5EA22B3D7CBC2D>I<EC07FC91383FFF809138F80FE0903903C007F09039078003FC9038
0F0001011C14FE013C14FF137F1480EBFFC0A31480A291380003FE137E90C7FCED07FC16
F8150F16F0ED1FE016C0ED3F80ED7E005DEC07F0903803FF8015F090380001FC6E7EED7F
80ED3FC0A2ED1FE016F0A316F8A4120EEA3F80486C133F16F012FFA216E0157F5B48C7EA
FFC000F01580007049130012786C495A003EEB07F86C495A390FE03FE00003B51280C649
C7FCEB1FE0283F7ABC2D>I<161C163C167CA216FCED01F815031507150FA2151DED3BF0
157315E315C31401EC038391380707E0140E141CA2143814709138E00FC0EB01C0148013
03EB0700130E49EB1F805B133013705B485A4848EB3F0090C7FC5A120E5A5A48147E1260
B8FCA3C73801FE00A25DA41403A25DA314074A7E0107B512F8A3283E7BBD2D>I<010614
03D90780131F90390FF801FE91B512FC16F816F016E0168049EBFE0015F890381C7FC091
C8FCA3133C1338A513781370A2EC1FE0ECFFF8903873E03E9038FF001F01FCEB0F804914
C049EB07E04914F049130390C7FC16F8A61507A21206EA3F80487EA2150F00FF15F0A249
14E090C7121F00FC15C000F0143F00701580ED7F0012786C14FE4A5A6C495A390F800FE0
3907E03FC06CB5C7FCC613FCEB1FE0283F7ABC2D>I<ED7F80913803FFE091380FC0F091
383E003802FC131C495A494813FE903807E003EB0FC090381F8007133FD97F0013FC01FE
1303ED01F0484890C7FC1203A2485AA2120F5BA2001FEB3F809038E0FFE0393FE3C0F890
38E7007C01EE7F01FC133F4848EB1F80A24914C05B16E0A2485AA216F05BA2ED3FE0A290
C7FCA4157F16C0A316804814FF007E1500007F5C14016C5C4A5A6C6C485A4A5A6C6C485A
2607E07FC7FC3803FFFEC613F8EB3FC0273F78BC2D>I<EA0380120713E090B712805AA2
17005E485D5E001EC85A484A5A00385D150300784A5A00704AC7FC151E5D485CC8127015
F04A5A4A5A4A5A4AC8FC140E141E5C147C14785C1301495AA213075C130F495AA2133F91
C9FC5BA25B5B1201A312035BA21207A3485AA5121F5BA26C5AEA0780294074BD2D>I<EC
03FC91381FFF8091387C07E0903901F001F0903903C000F84948137C49C7123E131E013E
141F133C137C137813F8A3163F486C143E167E6D147C6C6C14FC6E13F89138C001F09138
F003E090397FF807C09138FC0F0090383FFF3E6D13F86D13E06D7F01017F8101077F9039
1F1FFF80D93E0F13C0EBF8072601F00113E048486C13F04848137F4848131F001FEC0FF8
90C71207003E1403A2481401A300FC15F05AA3ED03E0A26CEC07C0007C1580007E140F00
3EEC1F00003F143E6C6C5B6C6C485A3907F00FE00001B512806C6C48C7FCEB0FF0283F7A
BC2D>I<EC07F8EC3FFE9138FC0F80903901F007C0903907E003E0D90FC013F090381F80
01013F14F8EB7F004914FC48481300A24848EB01FEA21207A3485AA41503121F5BA31507
A2000F15FC150FA2151F1207153F000315F86C6C137F000014EF90387C01CF90393E078F
F090380FFE1FEB03F890C713E0A2ED3FC0A3ED7F8016005D003F5C487E4A5A00FF495A5D
4A5A49485A48495A007049C7FC0078137E383E03FC381FFFF06C13C0D801FEC8FC273F79
BC2D>I<17E016011603831607A2160FA2161F83163FA2167F167716F7EEE7FCED01E316
C3150316831507EE03FEED0F01150E151E151C153C03387FED7800157015F05D4A488017
7F4A5AA24AC7FCA2020E81173F5C021FB6FC5CA20270C7EA3FE0171F5CA2495AA2494881
170F49C8FCA2130EA24982013C1507A2137CD801FE4B7E2607FF80EC3FFEB500F00107B5
12FC19F85E3E417DC044>65 D<013FB7FC18E018FC903B007FE00007FE6E48903801FF80
9438007FC05DF03FE0F01FF0A3027F16F892C8FCA54A16F04A153F19E0187F19C0F0FF80
01014B13004A4A5A4D5AEF1FF04D5ADC03FFC7FC49B612F8EFFF8002F8C7EA3FE0EF0FF0
EF07FC717E010715014A81711380A319C0130F5CA5011F4B13805C19005F601707013F4B
5A4A4A5A4D5A4D5A017F913801FF8001FF020F90C7FCB812FC17F094C8FC3D3E7DBD40>
I<DCFFC01338030F01F01378037F01FC13F0913A01FF803F01913A07FC000781DA1FE0EB
03C3DA7FC0EB01E74AC812FF4948ED7FE0D907FC153F495A4948151F495A4948150F4948
16C018074890C9FC485AA2485A000F1880491603121FA248481607A295C7FC485AA412FF
5BA75BA2181C183C1838A27F007F1778187018F0003F5F6D150160001F16036C6C4B5A95
C7FC6C6C5D6C6C151E6C6C5D6C6C15F86D6C495A6D6CEB07C0D91FF0EB1F80D907FE01FE
C8FC0101B512F86D6C13E0DA07FEC9FC3D4276BF42>I<013FB7FC18E018F8903B007FF0
000FFE6E48EB01FF9438007FC04B6E7E180F85727E727E147F4B6E7EA2727EA302FF1780
92C9FCA54918C05CA41A8013034A5DA41A0013074A5DA261A24E5A130F4A5E180F61181F
61011F4C5A5C4E5A4EC7FC4D5A4D5A013F4B5A4A4A5AEF3FE0EF7F80017F4A48C8FC01FF
EC1FFCB812F0178004FCC9FC423E7DBD45>I<013FB812F8A39026007FF0C7127F6E4814
0F18034B14011800A31978147F4B1570A502FF147092C7FCA3190017F0495D4A1301A216
07161F91B6FC495DA29138FC003F160F1607160301075D5CA219E0180119C0010FEC0700
4A90C712031980A218071900011F5E5C181EA2183E183C013F167C4A15FC4D5A1707017F
151F01FF4AB45AB9FCA2603D3E7DBD3E>I<013FB812E0A3903A007FF000016E48EB003F
180F4B14071803A31801147F4B15C0A514FF92C71270A395C7FC17F0495D5C1601160316
07161F49B65AA39138FC003F160F160701075D4A1303A5010F4AC8FC5C93C9FCA4131F5C
A5133F5CA3137FEBFFF0B612F8A33B3E7DBD3B>I<4BB46C1370031F01F013F0037F9038
FC01E0913A03FF807E03913A0FF8000F83DA1FE0EB07C7DA7F80EB01EF4AC812FFD903FE
16C04948157F4948153F495A4948151F495A4948168091C9120F5A485AA2485A000F1800
4982121FA248485EA295C7FC485AA412FF5BA6043FB512E05BA29339001FFC00715AA260
7F127FA2171F123F6D5EA2121F7F000F163F6C7E6C6C4B5A7F6C6C15FF6C6DEB01EFD93F
C0EB07C7D91FF0EB1F87D907FE9038FE03800101B5EAF8016D6C01E0C8FCDA07FEC9FC3C
4276BF47>I<013FB5D8F807B6FC04F015FEA29026007FF0C7380FFE006E486E5AA24B5D
A4180F147F4B5DA4181F14FF92C85BA4183F5B4A5EA491B8FC5B6102FCC8127FA318FF13
074A93C7FCA45F130F4A5DA41703131F4A5DA41707133F4A5DA3017F150F496C4A7EB6D8
E01FB512FC6115C0483E7DBD44>I<011FB512FC5BA29039003FF8006E5AA25DA5143F5D
A5147F5DA514FF92C7FCA55B5CA513035CA513075CA5130F5CA5131F5CA3133F497E007F
B512F0A2B6FC263E7EBD21>I<013FB500F8010FB5FC4C5BA29026007FF0C7000313E06E
486E130019FC4B15F04E5A4E5A4E5A061EC7FC027F5D4B5C4D5A4D5AEF07804DC8FC02FF
141E92C7127C5FEE01E04C5A4C5A49021FC9FC4A5B5E4C7E5D03077F01035B9139FC1F3F
E0153C4B6C7E15F09139FFE00FF84913C092380007FC5C4A6D7E5C707E130F4A6D7F8417
7F717EA2011F6F7E5C717EA2717EA2013F6F7E5C84A2017F83496C4A13E0B600E0017F13
FFA24B90B6FC483E7DBD47>75 D<013FB512FEA25E9026007FF8C8FCEC3FE0A25DA5147F
5DA514FF92C9FCA55B5CA513035CA513075CA21838A21870130F5CA218E0A3011F15014A
15C01703A21707EF0F80013F151F4A143F177FEFFF00017F140301FF143FB9FC5FA2353E
7DBD39>I<90263FFFF093381FFFF85013F0629026007FF8EFF000023F4D5AA2023B9338
01DFC0A2DA39FCED039FA2F1073F14790271040E5BEC70FE191C19381A7F02F01670DAE0
7F94C7FC19E0A2F001C06201016D6C495A02C05FF00700A2180E6F6C14010103161C0280
03385BA218706F7EF0E00313070200DA01C05BA2923907F00380A294380700075B010E90
2603F80E5C5FA25F190F011E6D6C5A011C605FA2EEFDC0DB00FF141F013C5D013860013C
92C7FC017C5C01FE027E143F2607FF80017C4A7EB500FC037FB512E004785E4A1338553E
7CBD53>I<90263FFFE0023FB5FC6F16FEA29026003FF8020313C0021F030013004A6C15
7C023B163C6F15381439810238167802787FDA707F157082153F82031F15F002F07FDAE0
0F5D8215078203031401010180DAC0015D82811780047F1303010315C04A013F5C17E016
1F17F0040F1307010715F891C7000791C7FC17FC160317FE04015B4915FF010E6E130E18
8E177F18CEEF3FDE011E16FE011C6F5AA2170FA21707133C01386F5A133C017C150113FE
2607FF801400B512FC18705C483E7DBD44>I<923803FF80031F13F09238FE01FE913903
F0003FDA0FC0EB1FC0DA3F80EB07E0027EC76C7E49486E7E49488149486E7E4948157F49
5A013F17804948ED3FC049C9FCA24848EE1FE012035B000718F05B120FA2485A19F8123F
5BA2127FA219F04848163FA5F07FE0A35BF0FFC0A219805F19007F4D5A127F4D5A60003F
160F6D5E001F4C5A4D5A6C6C4B5A95C7FC6C6C15FE00034B5A6C6C4A5A6C6C4A5A017FEC
1FC06D6C495AD90FE001FEC8FC903903F807F80100B512C0DA0FFCC9FC3D4276BF47>I<
013FB612FEEFFFE018F8903B007FF0000FFC6E48EB01FF7113804BEC7FC0183F19E0F01F
F0A2147F5D19F8A402FFED3FF092C8FCA219E0A2F07FC05B4AEDFF8019004D5A4D5AEF0F
F80103ED3FE04A903801FF8091B648C7FC17F002FCCAFCA213075CA5130F5CA5131F5CA5
133F5CA3137F497EB612E0A25D3D3E7DBD3E>I<013FB612F017FF18E0903B007FF0003F
F86E48EB07FCEF01FE4B6D7EF07F8019C0183F19E0147F4B15F0A502FFED7FE092C8FCA2
19C0F0FF80A2494B13004A5D4D5AEF0FF04D5AEF7F800103DA07FEC7FC91B612F0178091
39FC0007E0EE03F8EE00FC0107814A147F717EA284A2130F5CA484011F157F5CA4190201
3F17075CA2F0F00F017F170E496C143FB600E0011F131C94380FF83C4B01071378CA3801
FFE09438003F8040407DBD43>82 D<9238FF80070207EBE00F021FEBF81E91387F00FE02
FCEB1F3ED903F0EB0FFE49481307494813034AEB01FC49C7FC491400133E137E177C4915
78A57F1770A26D1500808080EB7FFEECFFE06D13FEEDFFC06D14F06D14FC010380010080
143F02031480DA003F13C015031500EE7FE0163F161FA2160F121CA31607160F003C16C0
A31780003E151F1700007E5D007F153E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03A
F87F803F8027F01FFFFEC7FCD8E00713F839C0007FC030427BBF33>I<0007B912F0A33C
0FFE000FF8003F01F0160F01C04A13034848160190C7FC121EF000E048141F5E1238A212
781270153F5E5AA3C81600157F5EA515FF93C9FCA55C5DA514035DA514075DA5140F5DA3
141FEC7FFC0003B7FCA33C3D76BC42>I<B600E090B512FC4B15F8A2000101C0C7000F13
006C49EC03FCEF01F091C9FC60A317015A495EA417031203495EA4170712074993C7FCA4
5F120F49150EA4171E121F49151CA4173C123F491538A31778177017F05F001F15015F16
036D4A5A000F93C8FC5E6C6C141E6C6C5C000115F86C6C495A017FEB07C090393FC03F80
90260FFFFEC9FC010313F89038007FC03E4073BD44>I<B6020FB5FC19FEA2000301E002
0113E06C01809138007F8091C9EA7E006C173C18386E15781870017F16F0604D5A804D5A
133F4DC7FCA26E140E171E011F151C173C17386E1478010F15705FA24C5A8001074A5AA2
4CC8FC5E6E130E0103141E161C163C16386E5B13015EA24B5A14FF6D495AA24BC9FC5D15
8EEC7F9E159C15B8A215F0143F5DA25DA26E5AA292CAFCA2140E404074BD44>I<B6017F
B5D88007B512804A1A00A2000701C0010101E0C713F06C90C80180EC3FC06C48735A99C7
FC057F150E1B1E6D191C6C1A3C1B3805FF15787214705E636EEB03BF017F4E5AEE073F50
5A040E7F051F4AC8FC161C6E170E013F143862167804706D5BEEF00F04E05D90381FE001
04C015F003035E0480140106F85B9226070007130302F05F010F010E150797C9FC5D190E
4BEB03FC616E5A01075F5D61DAF9C014FE05015BECFB8002FF6F5A7F92C75CA24A93CAFC
835C606D5A605C604A15781870594074BD5D>I<010FB500F090B512F85B5FD9003F9026
80003F1300DA0FFEC7EA1FF84BEC0FE00207168096C7FC6E6C141E181C6E6C143C606E6D
5B4D5ADB7FC05B4D5A92383FE0074DC8FC92381FF01E171C6F6C5A5F923807FCF0EEFDE0
6FB45A5F6F90C9FCA26F7FA2707EA216FF4B7FED03DF9238079FF0ED0F1F92380E0FF815
1C92383C07FC15784B6C7EEC01E04B6C7EEC038002076D7F4AC7FC021E6E7E5C02386E7E
5C02F06E7E495A49486E7E130749486E7E497E017F4B7E2603FFF091383FFF80007F01FC
49B512FEB55CA2453E7EBD44>I<B66C0103B51280A3000101F0C8EBF0006C49ED7FC06D
486FC7FC6E153E013F163C606D6C5D606D6C4A5A17036D6C4A5A95C8FC6E140E0103151E
5F6D6C14385F6D6D13F04C5ADA7FC05B4C5AEDE007023F49C9FC161E91381FF01C5E9138
0FF8785E6E6C5AEDFDC015FF6E5B93CAFC6E5AA35DA21403A45DA21407A45DA2140FA414
1F4A7E013FB512F0A3413E75BD44>I<010FB712FEA39239C00007FCD91FFCC7EA0FF814
F04AEC1FF00280EC3FE091C8EA7FC0013EEDFF80A2013C4A13004C5A494A5A4C5A13704C
5A4C5A494A5A4C5AA290C74890C7FC4B5A4B5A4B5AA24B5A4B5A4B5A4B5AA24A90C8FC4A
5A4A5A4A5AA24A5A4A5A4A48EB01C04A5AEF03804990C7FC495A495A494814071800495A
49485C495A495A171E4890C8123E485A4848157E484815FE4C5A484814074848141F4848
EB01FFB8FC5FA2373E7BBD38>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fi cmbx10 10.95 50
/Fi 50 123 df<EDFFF8020F13FF027F8049B612E001079038C01FF090390FFE0007D91F
F8497ED93FE0131F4948497E13FF5C5A91C7FCA2705A705AEE03C093C8FCA6EE03FCB8FC
A50001903880001F160FB3AB007FD9FE03B512F0A534407EBF3A>12
D<B612E0A91B097F9823>45 D<ECFFE0010713FC011F13FF017F14C0D9FFE07F48903880
3FF03A03FE000FF848486D7EA248486D7E001F81A348486D1380A3007F16C0A500FF16E0
B3A2007F16C0A5003F16806D5BA2001F1600A2000F5D6D13076C6C495A6C6C495A6C6D48
5A6C9038E0FFE06DB55A011F91C7FC010713FC010013E02B3D7CBB34>48
D<140F143F5C495A130F48B5FCB6FCA313F7EAFE071200B3B3A8007FB612F0A5243C78BB
34>I<903803FF80013F13F890B512FE00036E7E4881260FF80F7F261FC0037F4848C67F
486C6D7E6D6D7E487E6D6D7EA26F1380A46C5A6C5A6C5A0007C7FCC8FC4B1300A25E153F
5E4B5AA24B5A5E4A5B4A5B4A48C7FC5D4A5AEC1FE04A5A4A5A9139FF000F80EB01FC495A
4948EB1F00495AEB1F8049C7FC017E5C5B48B7FC485D5A5A5A5A5AB7FC5EA4293C7BBB34
>I<903801FFE0010F13FE013F6D7E90B612E04801817F3A03FC007FF8D807F06D7E82D8
0FFC131F6D80121F7FA56C5A5E6C48133FD801F05CC8FC4B5A5E4B5A4A5B020F5B902607
FFFEC7FC15F815FEEDFFC0D9000113F06E6C7E6F7E6F7E6F7E1780A26F13C0A217E0EA0F
C0487E487E487E487EA317C0A25D491580127F49491300D83FC0495A6C6C495A3A0FFE01
FFF86CB65A6C5DC61580013F49C7FC010313E02B3D7CBB34>I<ED01F815031507A2150F
151F153FA2157F15FF5C5CA25C5CEC1FBFEC3F3F143E147C14FCEB01F814F0EB03E01307
EB0FC0EB1F801400133E137E5B485A5B485A1207485A5B48C7FC5A127E5AB812F8A5C838
7FF800AA49B612F8A52D3C7DBB34>I<00071538D80FE0EB01F801FE133F90B6FC5E5E5E
5E93C7FC5D15F85D15C04AC8FC0180C9FCA9ECFFC0018713FC019F13FF90B67E020113E0
9039F8007FF0496D7E01C06D7E5B6CC77FC8120F82A31780A21207EA1FC0487E487E12FF
7FA21700A25B4B5A6C5A01805C6CC7123F6D495AD81FE0495A260FFC075B6CB65A6C92C7
FCC614FC013F13F0010790C8FC293D7BBB34>I<EC07FF023F13C049B512F001078049EB
03FC90383FF80090397FE001FE9038FFC0034849487E48495AA2485A120FA2485A6F5A00
3F6E5A6F5A92C8FC485AA21402EC3FFE00FF496C7E01F9B512E001FB809138E03FF89039
FF800FFC4A6C7E825B6F13804915C0A317E05BA4127FA5123FA26D15C0121FA2000F4A13
806D150012076C6C495A6C6D485A6C9038E07FF86DB55A6D5C6D1480010749C7FC010013
F02B3D7CBB34>I<121F7F13F890B712F0A45A17E017C0178017005E5E5A007EC7EA01F8
4B5A007C4A5A4B5A4B5A93C7FC485C157E5DC7485A4A5AA24A5A140F5D141F143F5D147F
A214FF92C8FC5BA25BA3495AA3130FA5131FAA6D5A6D5A6D5A2C3F7ABD34>I<ECFFF001
0713FE011F6D7E017F14E09039FFC07FF03A01FE001FF848486D7E48486D7E1503485A82
81121FA27F7F7F6D5B02C05B14F06C6D485A9138FE0FF89138FF9FF06CECFFE06C5D5E6C
92C7FC6C816D14E0011F80498090B67E48812607FE3F7F48486C1480381FF807D9F00114
C048486C7E007F8049010F13E0150348487F81167FA2163FA36D15C0127FEE7F807F6C6C
ECFF006C6C5B01FEEB07FE3A0FFFC03FFC6C90B55A000115E06C6C5C011F49C7FC010113
F02B3D7CBB34>I<903801FFE0010F13FC013F13FF90B612C04801E07F489038003FF048
486D7E000F6E7E485A6F7E123F48488081178012FFA217C0A517E0A4007F5CA4003F5C6C
7E5D6C7E00075C3903FF80FB6C13FF6C6C13F36D13C3010F018313C090380008031400A2
4B1380EA03F0487E486C1500487E4B5AA25E151F4B5A495C6C48EBFFE049485B2607FC0F
5B6CB6C7FC6C14FC6C14F06D13C0D90FFEC8FC2B3D7CBB34>I<16FCA24B7EA24B7EA34B
7FA24B7FA34B7FA24B7FA34B7F157C03FC7FEDF87FA2020180EDF03F0203804B7E020781
15C082020F814B7E021F811500824A81023E7F027E81027C7FA202FC814A147F49B77EA3
4982A2D907E0C7001F7F4A80010F835C83011F8391C87E4983133E83017E83017C81B500
FC91B612FCA5463F7CBE4F>65 D<B812F8EFFF8018F018FC8426003FFCC7EA3FFF050F13
807113C07113E08319F0A27113F8A719F05FA24D13E019C04D13804D1300EF3FFE933801
FFF891B712E0188018F818FE02FCC7380FFF80050313C07113E07113F019F8F07FFCA2F0
3FFEA219FFA38460A419FE187FA2F0FFFC4D13F85F4D13F0053F13E0BA12C0190018FC18
F095C7FC403E7DBD4A>I<922607FFC0130E92B500FC131E020702FF133E023FEDC07E91
B7EAE1FE01039138803FFB499039F80003FF4901C01300013F90C8127F4948151FD9FFF8
150F48491507485B4A1503481701485B18004890CAFC197E5A5B193E127FA349170012FF
AC127F7F193EA2123FA27F6C187E197C6C7F19FC6C6D16F86C6D150119F06C6D15036C6D
ED07E0D97FFEED0FC06D6CED3F80010F01C0ECFF006D01F8EB03FE6D9039FF801FFC0100
91B55A023F15E002071580020002FCC7FC030713C03F407ABE4C>I<B812F8EFFF8018F0
18FC18FF26003FFCC76C13C005077F05017F716C7E727E727E727E721380A27213C0A272
13E0A21AF084A21AF8A41AFCA5197FA319FFA51AF8A41AF0A2601AE0A24E13C0A24E1380
4E1300604E5A4E5A4D485A050713E0057F5BBA5A4EC7FC18F818C005F8C8FC463E7DBD50
>I<BAFCA4198026003FFEC7123F1707170183183FA2181FF00FC0A31807EE07C0A3F003
E0A3160F95C7FC161F163F16FF91B6FCA54AC6FC163F161F040F147CA2160719F8A593C7
1201A219F01803A21807A2180FF01FE0183F18FF1703173FBAFCA219C0A33E3D7DBC45>
I<B912FEA48426003FFEC77E170F1703170084A284F01F80A3180FA2EE07C0A2F007C0A4
040F90C7FCA2161F163F16FF91B6FCA54AC6FC163F161F160FA21607A693C9FCACB712E0
A53A3D7DBC42>I<922607FFC0130E92B500FC131E020702FF133E023FEDC07E91B7EAE1
FE01039138803FFB499039F80003FF4901C01300013F90C8127F4948151FD9FFF8150F48
491507485B4A1503481701485B18004890CAFC197E5A5B193E127FA34994C7FC12FFAB04
07B612FC127F7FA3003F92C7383FFE00A27F7EA26C7FA26C7F6C7FA26C7F6C7FD97FFE15
7F6D6C7E010F01E014FF6D01F813036D9038FF801F010091B512F3023F15C00207ED803E
02009138FE000E030701E090C7FC46407ABE52>I<B7D8803FB612E0A526003FFEC8000F
EB8000B3A491B9FCA54AC8120FB3A7B7D8803FB612E0A54B3E7DBD52>I<B71280A52600
3FFEC7FCB3B3B0B71280A5213E7DBD28>I<B712E0A526003FFEC9FCB3AD183EA4187E18
7CA418FCA21701A2EF03F8A21707170F171F177FEE01FF160FB9FC18F0A4373E7DBD3F>
76 D<B6037FB512E0A2818181D8003F6D9139001F800081A281816E7E6E7F6E7F80826E
7F6E7F6E7F6E7F157F826F7F6F7F6F7F6F7F81836F7F6F7F707E701380A27013C07013E0
7013F07013F87013FCA27013FEEF7FFF71139F7113DF8319FF8383838384A28484848484
A284B600C080197F193F191FA24B3E7DBD52>78 D<ED3FFF0203B512F0021F14FE027F6E
7E902701FFF80713E00107D9C00013F84990C7EA3FFCD93FFCEC0FFF49486E7F49486E7F
48496E7F4A80488448496F7EA24890C96C7E4884A249161F003F84A34848701380A400FF
19C0AD007F19806D5EA3003F1900A26D5E6C60A26C6D4B5AA26C6D4B5A6C6D4A5BA26C6D
4A5B6C6D4A5B6D6C4A5B6DB4023F90C7FC6D01C0EBFFFE0107D9F80713F8010190B612E0
6D5E021F4AC8FC020314F0DA003F90C9FC42407ABE4F>I<B812F017FF18C018F018FC26
003FFCC77FEF1FFF7113807113C07113E0A27113F0A319F8A819F0A34D13E019C05F4D13
80053F1300EFFFFE91B712F860188005FCC7FC4ACAFCB3A4B77EA53D3E7DBD47>I<B87E
17FCEFFF8018F08428003FFC000113FE9338003FFF050F7F717F717FA2858385A761A25F
61614D5B4D90C8FCEF3FFE4CB45A91B712F018C04DC9FC717E9126FC000F7F040113F070
7F717EA2717EA2717EA685A6F207C019C0A271140F07E01380B76DEBF01F719038FC3F00
7190B5FC716C5B061F13F8CB000113E04A3F7DBD4E>82 D<903A03FFC001C0011FEBF803
017FEBFE0748B6128F4815DF48010013FFD80FF8130F48481303497F4848EB007F127F49
143F161F12FF160FA27F1607A27F7F01FC91C7FCEBFF806C13F8ECFFC06C14FCEDFF806C
15E016F86C816C816C816C16806C6C15C07F010715E0EB007F020714F0EC003F15030300
13F8167F163F127800F8151FA2160FA27EA217F07E161F6C16E06D143F01E015C001F8EC
7F8001FEEB01FF9026FFE00713004890B55A486C14F8D8F81F5CD8F00314C027E0003FFE
C7FC2D407ABE3A>I<003FB912FCA5903BFE003FFE003FD87FF0EE0FFE01C01603491601
90C71500197E127EA2007C183EA400FC183F48181FA5C81600B3AF010FB712F8A5403D7C
BC49>I<903807FFC0013F13F848B6FC48812607FE037F260FF8007F6DEB3FF0486C806F
7EA36F7EA26C5A6C5AEA01E0C8FC153F91B5FC130F137F3901FFFE0F4813E0000F138038
1FFE00485A5B485A12FF5BA4151F7F007F143F6D90387BFF806C6C01FB13FE391FFF07F3
6CEBFFE100031480C6EC003FD91FF890C7FC2F2B7DA933>97 D<13FFB5FCA512077EAFED
FFE0020713FC021FEBFF80027F80DAFF8113F09139FC003FF802F06D7E4A6D7E4A13074A
80701380A218C082A318E0AA18C0A25E1880A218005E6E5C6E495A6E495A02FCEB7FF090
3AFCFF01FFE0496CB55AD9F01F91C7FCD9E00713FCC7000113C033407DBE3A>I<EC7FF0
0107B5FC011F14C0017F14E09039FFF01FF0489038800FF848EB001F4848EB3FFC120F48
5AA2485AA2007FEC1FF849EB0FF0ED03C000FF91C7FCAB127F7FA3003F153E7F001F157E
6C6C147C6C6C14FC91388001F86C9038C003F0C69038F81FE06DB512C0011F14800107EB
FE009038007FF0272B7DA92E>I<EE07F8ED07FFA5ED003F161FAFEC7FF0903807FFFE01
1FEBFF9F017F14DF9039FFF01FFF48EBC00348EB00014848EB007F485A001F153F5B123F
A2127F5BA212FFAA127FA37F123FA26C6C147F120F6D14FF6C6C01037F6C6D48EBFFE06C
EBF03F6C6CB512BF6D143F010713FC010001E0EBE00033407DBE3A>I<ECFFF0010713FE
011F6D7E017F809039FFE07FE0489038801FF048496C7E48486D7E48486D7E121F491301
003F81A2485A6F1380A212FFA290B7FCA401F0C9FCA5127FA27F123FEE0F806C7E161F6C
6C15006C6C5C6C6D137E6C9038E001FC6C9038F80FF8013FB55A6D14C0010391C7FC9038
007FF8292B7DA930>I<EC07FE91387FFF8049B512C0010714E090390FFE3FF0EB1FF090
393FE07FF8EB7FC013FF1480A2489038003FF0ED1FE0ED0FC092C7FCAAB612E0A5000101
80C7FCB3AC007FEBFF80A525407DBF20>I<903A03FF8007F0013F9038F83FF8499038FC
FFFC48B712FE48018313F93A07FC007FC34848EB3FE1001FEDF1FC4990381FF0F8170000
3F81A7001F5DA26D133F000F5D6C6C495A3A03FF83FF8091B5C7FC4814FC01BF5BD80F03
138090CAFCA2487EA27F13F06CB6FC16F016FC6C15FF17806C16C06C16E01207001F16F0
393FE000034848EB003F49EC1FF800FF150F90C81207A56C6CEC0FF06D141F003F16E001
F0147FD81FFC903801FFC02707FF800F13006C90B55AC615F8013F14E0010101FCC7FC2F
3D7DA834>I<13FFB5FCA512077EAFED1FF8EDFFFE02036D7E4A80DA0FE07F91381F007F
023C805C4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5333F7CBE3A>I<EA01F8487E487E
487E481380A66C13006C5A6C5A6C5AC8FCA913FFB5FCA512077EB3ABB512F8A515407CBF
1D>I<13FFB5FCA512077EB3B3AFB512FCA5163F7CBE1D>108 D<01FFD91FF8ECFFC0B590
B5010713F80203DAC01F13FE4A6E487FDA0FE09026F07F077F91261F003FEBF801000701
3EDAF9F0806C0178ECFBC04A6DB4486C7FA24A92C7FC4A5CA34A5CB3A4B5D8FE07B5D8F0
3FEBFF80A551297CA858>I<01FFEB1FF8B5EBFFFE02036D7E4A80DA0FE07F91381F007F
0007013C806C5B4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A533297CA83A>I<EC7FF090
3803FFFE011FEBFFC0017F14F09039FFE03FF8489038800FFC3A03FE0003FE48486D7E00
0F168048486D13C0A2003F16E049147F007F16F0A400FF16F8AA007F16F0A46C6CECFFE0
A2001F16C06C6C491380A26C6C4913003A03FF800FFE6C9038E03FFC6C6CB512F0011F14
C0010791C7FC9038007FF02D2B7DA934>I<01FFEBFFE0B5000713FC021FEBFF80027F80
DAFF8113F09139FC007FF8000701F06D7E6C496D7E4A130F4A6D7E1880A27013C0A38218
E0AA4C13C0A318805E18005E6E5C6E495A6E495A02FCEBFFF0DAFF035B92B55A029F91C7
FC028713FC028113C00280C9FCACB512FEA5333B7DA83A>I<3901FE01FE00FF903807FF
804A13E04A13F0EC3F1F91387C3FF8000713F8000313F0EBFFE0A29138C01FF0ED0FE091
388007C092C7FCA391C8FCB3A2B6FCA525297DA82B>114 D<90383FFC1E48B512BE0007
14FE5A381FF00F383F800148C7FC007E147EA200FE143EA27E7F6D90C7FC13F8EBFFE06C
13FF15C06C14F06C806C806C806C80C61580131F1300020713C014000078147F00F8143F
151F7EA27E16806C143F6D140001E013FF9038F803FE90B55A15F0D8F87F13C026E00FFE
C7FC222B7DA929>I<EB07C0A5130FA4131FA3133F137FA213FF5A1207001FEBFFFEB6FC
A40001EBC000B3151FA96CEBE03EA2017F137EECF8FC90383FFFF86D13F0010713E00100
1380203B7EB929>I<D9FF80EB0FF8B5EB0FFFA50007EC007F6C153FB3A5167FA316FF6C
5C4B7F6C903AC007DFFFE09138F01F9F6DB5121F6D13FE010F13F8010101E0EBE000332A
7CA83A>I<B500FC90383FFFC0A5000101C0903803E0006E1307A26C5E6E130F017F5D6E
131F013F92C7FC6E5B011F143E6E137E010F147C6E13FCA26D5C15816D5C15C36D5C15E7
6D5C15FF6E5BA36E90C8FCA26E5AA26E5AA26E5AA26E5AA232287EA737>I<B5D8FC03B5
1280A5C69026E0007FC7FC6E13FE6D6C5B6D6C485A6D6C485A010F13076D6C485AED9FC0
6DEBFF806D91C8FC6D5B6E5AA2143F6E7E140F814A7F4A7F4A7F02FE7F903801FC7F4948
6C7E02F07F49486C7E49486C7E011F7F49486C7FD97F008001FE6D7FB5D8C007EBFFC0A5
32287EA737>120 D<B500FC90383FFFC0A5000101C0903803E0006E1307A26C5E6E130F
017F5D6E131F013F92C7FC6E5B011F143E6E137E010F147C6E13FCA26D5C15816D5C15C3
6D5C15E76D5C15FF6E5BA36E90C8FCA26E5AA26E5AA26E5AA26E5AA35D14075D000E130F
D83F805B387FC01FD8FFE090C9FC5C143E147E5CEBC1F8387FC3F0387E0FE06CB45A6C5B
6C48CAFCEA03F8323B7EA737>I<003FB612F8A4D9F80113F001C014E0495A494813C04A
1380007E15005C4A5A007C5C147F4A5A495B5DC65A495B495BA249EB007C495A5C137F49
4813FC484913F85C5A48EBC00114804814034813004848130749131F007FECFFF0B7FCA4
26287DA72E>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fj cmr10 10.95 92
/Fj 92 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<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0BA12F0A26C18E03C167BA147>
61 D<EB0780EB1FE0A2497EA46D5AA2EB078090C8FCA8130380A4130791C7FCA65BA313
1EA2133E133C137CA25B1201485A485A120F485A485A127FA248C7127C15FEEC01FFA480
157F6C141EA26C6C133C1578390FC001E03907F00FC03901FFFE0038003FF020407BAC2B
>I<EB1FF890B5FC3903E01FC0390F0007F0001EEB03F848EB01FC4814FE140000FE14FF
7E7FA46CC7FC123EC7EA01FEA2EC03FCEC07F815F0EC0FC0EC1F80EC3F00143E5C147814
F85C13015CA2495AA25CAB91C7FC90C8FCA8EB0780EB1FE0A2497EA46D5AA2EB07802040
7BBF2B>I<ED7FE0913807FFFE91391F801F809139780001E0D901E0EB0078D90780141E
49C87E011E6F7E0138ED01C0496F7E4916700001177848488249D93F80131C28070001FF
F07F48902607E07C130F000E90260FC01E7F001E90263F00071480001C49903803800300
3C01FED901C013C0003849ECFE010101EC00FF267803F8027F13E000701700495AA200F0
18F000E01870495AA96D7E12F01270A26D7E007818E0263801FC5C01005C003C7F001C01
7F49EB01C0001E6DEB077F000E903B0FC01E3F8380000F903B07E07C1F87006C903A01FF
F007FE3C0380003F8001F86D90CAFC6C7E120013707F011EEE03F06D160F6D6CED3FC0D9
01E0913801FE00D90078EC1FF0913A1F8003FF800207B500F8C7FC9126007FFEC8FC3C41
7BBF47>I<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A2913801C7FC15C3A291380381
FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D7EA349486D7E91B6FCA249
819138800001A249C87EA24982010E157FA2011E82011C153FA2013C820138151FA20178
82170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D417DC044>I<B712FCEEFF80
17F00001903980000FF86C6CC7EA03FE707E701380EF7FC0EF3FE0A2EF1FF0A218F8A317
0F171FA318F0A2EF3FE0177F18C0EFFF804C1300EE03FCEE0FF8EE7FE091B6C7FC17E091
C7EA07FCEE01FE933800FF80EF7FC0EF3FE0EF1FF018F8170F18FC1707A218FEA718FC17
0FA2EF1FF818F0173FEF7FE0EFFFC00403138048486C90380FFE00B85A17E094C7FC373E
7DBD40>I<DB3FF01306912603FFFE130E020F9038FF801E913A3FF007E03E9139FF8000
F8D903FEC7EA7C7ED907F8EC1EFE4948140FD93FE0140749481403495A91C81201484815
0012034848167E5B000F173EA24848161EA2123F5B180E127FA349160012FFAC127F7F18
0EA2123FA27F001F171E181C6C7EA20007173C6D16386C6C1678000117706C6C16F06EEC
01E06D6C15C06D6C1403D90FF0EC07806D6CEC1F00D903FE143E902600FF8013F891393F
F007F0020FB512C0020391C7FC9138003FF037427BBF42>I<B712FCEEFF8017E0000190
39C0001FF86C6C48EB03FEEE00FF717E717EEF0FE084717E717E170184717EA21980187F
19C0A3F03FE0A519F0AB19E0A5F07FC0A21980A218FF19004D5AA24D5A6017074D5A4D5A
EF7FC04DC7FCEE03FE48486CEB1FF8B85A178004FCC8FC3C3E7DBD45>I<B912E0A30001
9038C000016C6C48EB001FEF0FF01703A217011700A31870A418381638A41800A21678A2
16F81501150791B5FCA3EC8007150115001678A21638A2180EA3181C93C7FCA4183C1838
A21878A318F8EF01F0A21707170F173F48486CEB03FFB912E0A3373E7DBD3E>I<B91280
A300019038C000036C6C48EB007FEF1FC0170F1707A21703A31701A4EF00E0A21638A318
00A31678A216F81501150791B5FCA3EC8007150115001678A21638A693C8FCAF3801FFE0
B612F0A3333E7DBD3B>I<DB3FE0130C912603FFFE131C021F9038FF803C913A7FF00FC0
7C9139FF0001F0D903FC90380078FC4948143DD91FE0141F4948140F4948140701FF1503
4890C8FC491501485A000716005B000F177C5B001F173CA2485AA2181C127FA25B95C7FC
12FFAB041FB512F0127FA26D9139000FFE00EF03FC123FA27F121FA26C7EA212077F1203
6C7E7F6C7F6D6C14076D7E6D6C140FD907F8141ED903FEEC3C7C902600FF80EBF83C913A
7FF007F01C021FB5EAC00C020391C8FC9138003FF03C427BBF47>I<B6D8C01FB512F8A3
000101E0C7383FFC0026007F80EC0FF0B3A691B7FCA30280C7120FB3A92601FFE0EC3FFC
B6D8C01FB512F8A33D3E7DBD44>I<B612F0A3C6EBF000EB3FC0B3B3B2EBFFF0B612F0A3
1C3E7EBD21>I<011FB512FCA3D9000713006E5A1401B3B3A6123FEA7F80EAFFC0A44A5A
1380D87F005B007C130700385C003C495A6C495A6C495A2603E07EC7FC3800FFF8EB3FC0
26407CBD2F>I<B600C090387FFFFCA3000101E0C7000F138026007F80913807FE0018F8
18E0604D5A4DC7FC173E5F5F4C5A4C5A4C5A4C5A4CC8FC163E5E5E4B5A4B5AED07804B7E
151F4B7E4B7E15FF913881EFF8913883C7FCEC878791388F03FE91389E01FF14BCDAF800
7F4A6D7E5C4A6D7E4A6D7EA2707E707EA2707E707EA2707F717E84173F717E717EA2717E
848419802601FFE04A13C0B600C090B6FCA3403E7DBD47>I<B612F8A3000101E0C9FC38
007F80B3B0EF0380A517071800A45FA35FA25F5F5F4C5A160748486C133FB8FCA3313E7D
BD39>I<B500C093B512C0A300016D4BEBE000D8007F1880D977F0ED03BFA3D973F8ED07
3FA3D971FC150EA2D970FE151CA3027F1538A36E6C1470A36E6C14E0A26E6CEB01C0A36E
6CEB0380A36E6CEB0700A26E6C130EA36E6C5BA3037F5BA26F6C5AA36F6C5AA392380FE1
C0A3923807F380A26FB4C7FCA36F5AA213F8486C6D5AD807FFEFFFE0B500F80178017FEB
FFC0A34A3E7CBD53>I<B56C91B512F88080D8007F030713006EEC01FC6E6E5A1870EB77
FCEB73FEA2EB71FF01707FA26E7E6E7EA26E7E6E7EA26E7E6E7EA26E7E6E7FA26F7E6F7E
A26F7E6F7EA26F7E6F7EA26F7E6F1380A2EE7FC0EE3FE0A2EE1FF0EE0FF8A2EE07FCEE03
FEA2EE01FF7013F0A2177F173FA2171F170FA2170701F81503487ED807FF1501B500F814
00A218703D3E7DBD44>I<ED7FE0913807FFFE91391FC03F8091397E0007E04948EB03F8
D907F0EB00FE4948147F49486E7E49486E7E49C86C7E01FE6F7E00018349150300038348
486F7EA248486F7EA2001F188049167F003F18C0A3007F18E049163FA300FF18F0AC007F
18E06D167FA4003F18C0A26C6CEEFF80A36C6C4B1300A26C6C4B5A00035F6D150700015F
6C6C4B5A6D5E6D6C4A5A6D6C4A5A6D6C4AC7FC6D6C14FED901FCEB03F8D9007FEB0FE091
391FC03F80912607FFFEC8FC9138007FE03C427BBF47>I<B712F8EEFF8017E000019039
C0003FF86C6C48EB07FCEE01FE707EEF7F80EF3FC018E0A2EF1FF0A218F8A818F0A2EF3F
E0A218C0EF7F80EFFF004C5AEE07FCEE3FF091B612C04CC7FC0280C9FCB3A73801FFE0B6
12C0A3353E7DBD3E>I<ED7FE0913807FFFE91391FC03F8091397F000FE0D901FCEB03F8
D907F0EB00FE4948147F49486E7E49486E7E49C86C7E498248486F7E4915030003834848
6F7EA2000F834981001F1880A24848EE7FC0A3007F18E0A249163FA200FF18F0AC007F18
E0A26D167FA3003F18C0A26C6CEEFF80A3000F18006D5D0007DA0F805B6C6C90393FE003
FCED70706C6C496C485A6C6C48486C485A017FD9800E5BD93F819038061FC0D91FC19038
073F80D90FE14AC7FCD907F1EB03FE902601FDC013F8903A007EE007E091271FF03FC013
180207B5FC9139007FE1E0DB0001143883711378A2706C13F0EFFF0318FFA27113E0A371
13C0711380711300715AEF01F83D527BBF47>I<B712C016FCEEFF800001D9C00013E06C
6C48EB1FF0EE07FCEE01FE707E84717EA2717EA284A760177F606017FF95C7FCEE01FCEE
07F8EE1FE0EEFF8091B500FCC8FC16F091388001FCED003FEE1FC0707E707E8316038316
0183A383A484A4F0C004190EA28218E0057F131E2601FFE0161CB600C0EB3FF094381FF8
3805071370CA3801FFE09438003F803F407DBD43>I<D907FC131890391FFF8038017FEB
E0783901FC03F83A03F0007CF8D807C0133F4848130F001F140748C7FC003E1403007E14
01A2007C140012FC1678A46C1538A27EA26C6C14007F7FEA3FF8EBFF806C13F86CEBFF80
6C14F06C14FC6C14FF6C15C0013F14E0010714F0EB007F020713F89138007FFC150FED07
FE15031501ED00FFA200E0157FA3163FA27EA3163E7E167E6C157C6C15FC6C15F86D1301
6DEB03F06DEB07E0D8F9FCEB0FC03AF07F803F8090391FFFFE00D8E00713F839C0007FC0
28427BBF33>I<003FB91280A3903AF0007FE001018090393FC0003F48C7ED1FC0007E17
07127C00781703A300701701A548EF00E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7D
BC42>I<B600C090B512F8A3000101E0C70007130026007F80EC01FC715A1870B3B3A401
3F16F06E5DA21701011F5E80010F15036E4A5A010793C7FC6D6C5C6D6C141E6D6C5C027F
14F86E6C485A91390FF00FE00203B51280020049C8FCED1FF03D407DBD44>I<B691380F
FFFEA3000301E0020113E06C01809138007F806CEF3F00017F163E181C6E153C013F1638
A26E1578011F1670A26D6C5DA26E140101075EA26E140301035EA26D6C4AC7FCA2806D15
0EA26F131E027F141CA26F133C023F1438A26E6C5BA26F13F0020F5CA2EDF80102075CA2
6E6C485AA2EDFE07020191C8FCA26F5A6E130EA2ED7F9CA216DCED3FF8A36F5AA36F5AA2
6F5AA36F5A3F407EBD44>I<B500FE017FB5D88007B5FCA3000301C0010101E0C713F86C
90C849EC3FE07148EC0F807E7215006E143F017F190E84A26D6C60A24D7E6D6C60A2EFE7
F86D6C60A2933801C3FC6E18F001076104037F6E0281140101036104077F17006D6C4D5A
A2040EEB7F806D6C4DC7FCA24CEB3FC0DA7F80160EA24CEB1FE003C0161E023F171C0478
14F0DBE070010F133C021F173804F014F84C1307DA0FF05EA2DBF1C0EB03FCDA07F95EA2
DBFB80EB01FEDA03FF6F5AA293C8FCA26E5FA24B157F020094C8FCA24B81037C153EA203
78151E0338151C58407EBD5D>I<007FB5D8C003B512E0A3C649C7EBFC00D93FF8EC3FE0
6D48EC1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C14706D6D13F04C5ADA7FC05B02
3F13036F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C6E6C5A913801FF7016F06E
5B6F5AA26F7E6F7EA28282153FED3BFEED71FF15F103E07F913801C07F0203804B6C7EEC
07004A6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D7F130149486E7E4A6E7E13
0749C86C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC0103B512FEA33F3E7EBD44>
I<B66C0103B51280A3000101F0C8EBF8006C6C48ED3FC0725A013F041EC7FC6D7E606D6C
15386D6C1578606D6C5D6E14016D5E6D6D1303606E6C49C8FC6E6C5B170E6E6C131E171C
6E6C5B6E6C137817706E6C13F06F5B6E13016EEB83C05FED7FC7DB3FE7C9FC16EFED1FFE
5E150F6F5AB3A4ED1FFC020FB512FCA3413E7FBD44>I<003FB712F8A391C7EA1FF013F8
01E0EC3FE00180EC7FC090C8FC003EEDFF80A2003C4A1300007C4A5A12784B5A4B5AA200
704A5AA24B5A4B5AA2C8485A4A90C7FCA24A5A4A5AA24A5AA24A5A4A5AA24A5A4A5AA249
90C8FCA2495A4948141CA2495A495AA2495A495A173C495AA24890C8FC485A1778485A48
4815F8A24848140116034848140F4848143FED01FFB8FCA32E3E7BBD38>I<EAFFFCA4EA
F000B3B3B3B3ABEAFFFCA40E5B77C319>I<486C13C00003130101001380481303000EEB
070048130E0018130C0038131C003013180070133800601330A300E01370481360A400CF
EB678039FFC07FE001E013F0A3007F133FA2003F131F01C013E0390F0007801C1C73BE2D
>I<EAFFFCA4EA003CB3B3B3B3ABEAFFFCA40E5B7FC319>I<EA0180120313005A120E5A12
181238123012701260A312E05AA412CFEAFFC013E0A3127FA2123F13C0EA0F000B1C7ABE
19>96 D<EB0FF8EBFFFE3903F01F8039078007E0000F6D7E9038E001F8D81FF07F6E7EA3
157F6C5AEA0380C8FCA4EC1FFF0103B5FC90381FF87FEB7F803801FC00EA07F8EA0FE048
5A485AA248C7FCEE038012FEA315FFA3007F5BEC03BF3B3F80071F8700261FC00E13CF3A
07F03C0FFE3A01FFF807FC3A003FC001F0292A7DA82D>I<EA01FC12FFA3120712031201
B1EC03FC91381FFF8091387C07E09039FDE001F09039FFC000FC4A137E91C77E49158049
141F17C0EE0FE0A217F0A2160717F8AA17F0A2160FA217E0161F17C06D1580EE3F006D5C
6E13FE9039F3C001F89039F1E003F09039E0780FC09026C03FFFC7FCC7EA07F82D407EBE
33>I<49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A5B12
1FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316806C
6C13076C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC222A
7DA828>I<ED01FC15FFA3150715031501B114FF010713E190381F80F990387E003D4913
1FD803F81307485A49130348481301121F123F5B127FA290C7FCA25AAA7E7FA2123FA26C
7E000F14037F000714076C6C497E6C6C497ED8007C017913F890383F01F190380FFFC190
3A01FE01FC002D407DBE33>I<EB01FE90380FFFC090383F03F09038FC01F848486C7E48
48137E48487F000F158049131F001F15C04848130FA2127F16E090C7FCA25AA290B6FCA2
90C9FCA67EA27F123F16E06C7E1501000F15C06C6C13036DEB07806C6C1400C66C131E01
7E5B90381F80F8903807FFE0010090C7FC232A7EA828>I<EC1FC0EC7FF8903801F83C90
3807E07E90380FC0FFEB1FC1EB3F811401137FEC00FE01FE137C1500AEB6FCA3C648C7FC
B3AE487E007F13FFA320407EBF1C>I<167C903903F801FF903A1FFF078F8090397E0FDE
1F9038F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F147E6D
13FE00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC120EA3
120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE003E14
0048157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800
FE017FC7FC90383FFFFC010313C0293D7EA82D>I<EA01FC12FFA3120712031201B1EC01
FE913807FFC091381E07E091387803F09138E001F8D9FDC07F148001FF6D7E91C7FCA25B
A25BB3A6486C497EB5D8F87F13FCA32E3F7DBE33>I<EA01E0EA07F8A2487EA46C5AA2EA
01E0C8FCACEA01FC127FA3120712031201B3AC487EB512F0A3143E7DBD1A>I<1478EB01
FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E127F38FF
807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185BD1C>I<
EA01FC12FFA3120712031201B292B51280A392383FFC0016E0168093C7FC153C5D5D4A5A
EC07C04A5A4AC8FC143E147F4A7E13FD9038FFDFC0EC9FE0140F496C7E01FC7F496C7E14
01816E7E81826F7E151F826F7EA282486C14FEB539F07FFFE0A32B3F7EBE30>I<EA01FC
12FFA3120712031201B3B3B1487EB512F8A3153F7DBE1A>I<2701F801FE14FF00FF9027
07FFC00313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603F9C0
6D487F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CECFF80
B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E09138
7803F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C49
7EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F8131F48
48EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA44815
FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F
80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC00FF
90381FFF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F805B
EE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE91
38C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A
7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8130E4848
EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E1507
6C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7FCAD4B7E
92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C100031381
EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I<90383FC0
603901FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400A27E7E7E
6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB001F
EC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB03C0903880078039F3E01F
0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112031207001F
B512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090381F8700
EB07FEEB01F81B397EB723>I<D801FC14FE00FF147FA3000714030003140100011400B3
A51501A31503120015076DEB06FF017E010E13806D4913FC90381FC078903807FFE00100
903880FE002E297DA733>I<B539E00FFFE0A32707FE000313006C48EB00FC5E00015D7F
00005DA26D13016D5CA26D6C485AA2ECC007011F91C7FCA290380FE00EA2ECF01E010713
1CA26D6C5AA2ECFC7801011370A2ECFEF001005BA2EC7FC0A36E5AA26EC8FCA3140E2B28
7EA630>I<B53BC3FFFE03FFF8A3290FFE003FE00013C06C486D48EB3F806C4817006D01
0F141E00016F131C15076D163C00004A6C1338A2017F5E4B7E151DD93F805DED3DFC1538
D91FC04A5AED78FE9238707E03D90FE0017F5BEDE03F02F0140701070387C7FC9138F1C0
1F02F9148F010315CE9138FB800F02FF14DE6D15FCED00076D5DA24A1303027E5CA2027C
1301023C5C023813003D287EA642>I<B539F01FFFE0A30003D9C00F1300C690388007F8
D97F0013E002805BD93FC05B011F49C7FC90380FE00EECF01E6D6C5A01035B6D6C5A6E5A
EB00FF6E5A6E5A81141F814A7E81147BECF1FC903801E1FEECC0FF01037F49486C7ED90F
007F011E6D7E013E130F496D7E01FC80486C80000F4A7EB539803FFFF8A32D277FA630>
I<B539E00FFFE0A32707FE000313006C48EB01FC6F5A00015D7F00005DA2017F495AA2EC
8003013F5CA26D6C48C7FCA26E5A010F130EA26D6C5AA2ECF83C01031338A26D6C5AA2EC
FEF001005BA2EC7FC0A36E5AA36EC8FCA2140EA2141E141C143C1438A214780018137012
7EB45BA2495AA248485AD87E07C9FCEA780EEA3C3CEA1FF8EA07E02B3A7EA630>I<001F
B61280A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A5A147F5D
4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B4848130712
07491400485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>I<B812F0A2
2C0280982D>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fk cmr12 14.4 16
/Fk 16 116 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<B812FEEFFFE018FC18FF2600
7FFCC7000F13C06D4802017F011F9238003FF8F00FFC727EF001FF727F737E737E737E19
0F86737EA2737E737EA21B8085A21BC01A7F1BE0A4F23FF0A51BF8AE1BF0A4F27FE0A41B
C01AFF1B80A24F1300A24F5AA24F5AA24F5A4F5A4F5A4F5A4F5A4E90C7FC4E5AF00FFCF0
3FF8013FEEFFE0496C020F5BBAC8FC18FC18E04DC9FC4D527BD159>68
D<B600FC030FB512E0A4C691CAEBFC00D97FFCEF3FF06D48EF1FC0011F616E71C7FC130F
1A0E6E171E0107181CA26E173C6D1838816D60A26F16F06D6081027F4C5AA281023F4C5A
A26F1507021F94C8FC81020F160EA26F151E0207161CA26F153C6E1638826E5EA27014F0
6E5E821801037F5D82033F4A5AA2701307031F92C9FC82030F140EA270131E0307141CA2
70133C6F143817806F5CA2EFC0F06F5C17E017E1047F5B17F193383FF380A217FF7090CA
FCA2705AA3705AA3705AA2705AA3705A53547ED158>86 D<EB7F80B5FCA41203C6FC137F
B3A6ED07FC92387FFF800281B512E0913987F00FF891398F8001FC029EC7B4FC02BC6E7E
02F86E7E4A6E7E4A6E7E4A1407844A6E7EA2841701A284A283A21980AB19005FA360A24D
5AA24D5A804D5A6E5D6E4A5AD97E784A5A6E4AC7FCD97C1EEB01FE6E495A903A7807E01F
F00201B512C0902670007F90C8FC90C7EA0FF839547DD241>98 D<EC0FFE91387FFFE049
B512F8903907F801FE90391FE0001FD93F80EB078049C7EA0FC001FE143F484815E00003
157F485A485AA2485AEE3FC0003FED0F004991C7FCA2127FA35B12FFAB127F7FA3123F6D
1570121F6D15F0000F16E06D140112076C6CEC03C06D15806C6C14076C6DEB0F00D93FC0
131E6D6C137C903907FC03F06DB55AD9007F1380DA0FF8C7FC2C367CB434>I<EC0FF891
B5FC010314C090390FF80FF090391FC003FC90397F8001FE49C77E4848EC7F804848143F
49EC1FC0485A000FED0FE05B001F16F01607485AA2007F16F8A25B160312FF90B7FCA301
80C9FCA8127F7FA2123FA26D1538121F17786C6C1570000716F06D15E06C6C14016C6CEC
03C06C6C15806D6C130F6D6CEB1F00D90FF0133C903907FE01F80101B512E06D6C1380DA
07FCC7FC2D367DB434>101 D<1378EA01FE487E487FA66C90C7FC6C5AEA007890C8FCB0
EB7F80B5FCA41203C6FC137FB3B3A43801FFE0B61280A419507CCF21>105
D<01FFD907FEEC03FFB590261FFFC0010F13E0037F01F0013F13F8912701F80FFC9038FC
07FE913D03C003FE01E001FF000390260700019038038000C6010E6D6C48C76C7E6D48DA
7F8E6E7E4A159CA24ADA3FF86E7E02605D14E04A5DA34A5DB3AD2601FFE0DAFFF0EC7FF8
B6D8C07F9026FFE03FB512F0A45C347CB363>109 D<01FFEB07FCB590383FFF8092B512
E0913901F00FF8913903C007FC000349C66C7EC6010E13016D486D7E5C143002706E7E14
6014E05CA35CB3AD2601FFE0903801FFE0B600C0B612C0A43A347CB341>I<EC0FFC9138
7FFF8049B512E0903907F807F890391FE001FE90393F80007F017EC7EA1F80496E7E4848
6E7E00038248486E7EA248486E7EA248486E7EA2003F82A24848ED7F80A400FF17C0AB00
7F1780A26D15FFA2003F1700A2001F5E6D1401000F5E6D140300075E6C6C4A5A6C6C4A5A
A2D8007FEC3F806D6C49C7FC90391FE001FE903907F807F86DB55AD9007F1380DA0FFCC8
FC32367CB43B>I<01FFEB1F80B5EB7FF0913801FFF8913803E1FC91380783FE0003EB0F
07C6131EEB7F1C1438143091387003FC91386000F0160014E05CA45CB3AA8048487EB612
F0A427347DB32E>114 D<D907FE13C090387FFF8148B512E33907F803FF390FC0007F48
48133F48C7121F003E140F007E1407127C00FC1403A315017EA27E7F6C6C90C7FC13F013
FF6C13F86CEBFF806C14E06C14F86C14FEC680013F1480010714C0D9003F13E014039138
007FF0151F00E0140FED07F8A26C1403A215017EA36C15F0A26C14036C15E015076DEB0F
C06DEB1F80D8FDF0EB3F0039F8FC01FE39F07FFFF8D8E01F13E0D8C00390C7FC25367CB4
2E>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fl cmbx12 17.28 20
/Fl 20 117 df<F00FE04E7EA24E7EA34E7EA24E7EA34D7FA24D80A24D80A34D80A24D80
A34D80A2DD7FBF7FA2181F05FF8017FE04016D7FA24D7E04038217F804076D80A24D7E04
0F8217E0041F6D80A24D7F043F825F047F6E7FA294C77E4C825E03016F7FA24C80030384
5E03076F80A24C80030F845E031F6F80A24C81033F845E037F707F93B9FCA292BA7EA24A
85A203FCC912070203865D020771805D86020F864B82021F865D87023F864B83027F8692
CBFC874A864A840101875C496C728090381FFFC0B700E092B812FEA66F647BE37A>65
D<4DB5ED03C0057F02F014070407B600FE140F047FDBFFC0131F4BB800F0133F030F05FC
137F033F9127F8007FFE13FF92B6C73807FF814A02F0020113C3020702C09138007FE74A
91C9001FB5FC023F01FC16074A01F08291B54882490280824991CB7E4949844949844949
8449865D49498490B5FC484A84A2484A84A24891CD127FA25A4A1A3F5AA348491A1FA448
99C7FCA25CA3B5FCB07EA380A27EA2F50FC0A26C7FA37E6E1A1F6C1D80A26C801D3F6C6E
1A00A26C6E616D1BFE6D7F6F4E5A7F6D6D4E5A6D6D4E5A6D6D4E5A6D6E171F6D02E04D5A
6E6DEFFF806E01FC4C90C7FC020F01FFEE07FE6E02C0ED1FF8020102F8ED7FF06E02FF91
3803FFE0033F02F8013F1380030F91B648C8FC030117F86F6C16E004071680DC007F02F8
C9FC050191CAFC626677E375>67 D<BD12E0A41CF0A2D8000102C0C71207F1003F1A0F1A
031A001B7F1B3FF31FF81B0FA21B07A21B03A21B011CFCA31B00A419FCA21C7EA41C00A2
1801A31803A21807180F183FEF01FF93B6FCA6EEC001EF003F180F18071803A21801A318
00A896C9FCB3A5B912F8A657617AE065>70 D<B912E0A6C702E0C7FCB3B3B3B3AEB912E0
A633627CE13C>73 D<BB7E1AFCF2FFC01BF81BFE757ED800010280C7001F80070114F073
6C7F081F7F747F747F7414807414C0A27414E0A21DF0A27513F8A41DFCA91DF8A498B512
F0A21DE0A25014C01D8062501400505B505B087F5B4FB512E0071F5C93B9C7FC1BFC1BF0
1B8008F0C8FC04C0CCFCB3B3A2B97EA65E627AE16E>80 D<DBFFFCEC01E0020FD9FFE013
03027F02FC130749B7130F0107EEC01F011F16F049D9C007EBF83F4948C7383FFE7FD9FF
F8020FB5FC4801E014014849804849153F91C97E484882001F834982003F83845B007F18
7FA2193FA200FF181FA27F190FA27FA26D17078080806C01F893C7FC80ECFF8015F86CEC
FFC016FC6CEDFFE017FE6CEEFFE018F86C17FE6C717E6C846C846D17F86D836D836D8313
036D18806D6C17C0020F17E01401DA000F16F01500040715F8EE007F1703050014FC183F
84060713FE84A2007C8300FC83A2197FA3193F7EA31AFC7EA27F1AF86D177F7F1AF06D17
FF6D18E06D5E01FF18C06E4B138002E04B130002F84B5A02FFED3FFC01CF01E0ECFFF801
8301FF010F5B010191B65A6D6C5E48011F93C7FC48010315FC48D9003F14E048020149C8
FC476677E35A>83 D<001FBEFCA64849C79126E0000F148002E0180091C8171F498601F8
1A0349864986A2491B7FA2491B3F007F1DC090C9181FA4007E1C0FA600FE1DE0481C07A5
CA95C7FCB3B3B3A3021FBAFCA663617AE070>I<913803FFFE027FEBFFF00103B612FE01
0F6F7E4916E090273FFE001F7FD97FE001077FD9FFF801017F486D6D7F717E486D6E7F85
717FA2717FA36C496E7FA26C5B6D5AEB1FC090C9FCA74BB6FC157F0207B7FC147F49B612
07010F14C0013FEBFE004913F048B512C04891C7FC485B4813F85A5C485B5A5CA2B55AA4
5FA25F806C5E806C047D7F6EEB01F96C6DD903F1EBFF806C01FED90FE114FF6C9027FFC0
7FC01580000191B5487E6C6C4B7E011F02FC130F010302F001011400D9001F90CBFC4943
7CC14E>97 D<92380FFFF04AB67E020F15F0023F15FC91B77E01039039FE001FFF4901F8
010113804901E0010713C04901804913E0017F90C7FC49484A13F0A2485B485B5A5C5A71
13E0485B7113C048701380943800FE0095C7FC485BA4B5FCAE7EA280A27EA2806C18FCA2
6C6D150119F87E6C6D15036EED07F06C18E06C6D150F6D6DEC1FC06D01E0EC7F806D6DEC
FF00010701FCEB03FE6D9039FFC03FFC010091B512F0023F5D020F1580020102FCC7FCDA
000F13C03E437BC148>99 D<92380FFFC04AB512FC020FECFF80023F15E091B712F80103
D9FE037F499039F0007FFF011F01C0011F7F49496D7F4990C76C7F49486E7F4849804884
4A804884485B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA41A0002C0CBFCA67EA3
80A27EA27E6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17016D6C4B5A6D6D4A5A
6D01E04A5A6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D6C90B55A021F15F802
0715E0020092C8FC030713F041437CC14A>101 D<EE3FFC0307B51280033F14C04AB612
F0020715F84A9038F03FFC4AEB807F913A7FFE00FFFE4A5A4B4813FF4913F05B4913E0A2
4913C0A27013FE4949EB7FFCEF3FF8EF1FF0EF07C094C7FCB0B812C0A6D8001F01C0C8FC
B3B3B0007FB612FCA638657CE431>I<F107F8DB7FFEEC3FFE020FB5D8F001B5FC027FDA
FE03148049B7128F49DCDFFD13C0010FD9F00FEBFFC149D9800114014990C7EBFC034948
6E6C7E4948EC3FFF48496E018113800780130048F0C03E97C7FC48496E7FA34884A96C60
A36C6D4A5BA26C60A26C6D4A90C8FC6D6C4A5A6D6C4A5A6D6D485BDBF00F5B4990B612C0
60D97C7F4AC9FCD9FC0F14F09126007FFECAFC92CCFC1201A47FA27F8014F091B77E18FE
6CEFFFC019F06D17FC19FF6D846D846D846D84013F8490BAFC0003854801E0C712014890
C9000F7F484816014848EE007F4848717E8512FF5B85A56D5F007F616D173F003F616D17
7F6C6C4D5A6C01C003035B6C6D4B5B6C01F8031F5BC601FF92B5C7FC6D01F8011F5B011F
90B712F8010717E0010094C8FC020F15F0DA003F01FCC9FC4A607CC151>I<EB0FE0EB3F
F8497E48B5FCA24880A24880A76C5CA26C91C7FCA238007FFC6D5AEB0FE090C9FCAF9038
07FF80007FB5FCA6C6FC7F7FB3B3AEB712C0A622657BE42C>105
D<903807FF80B6FCA6C6FC7F7FB3B3B3B3ADB712E0A623647BE32C>108
D<902607FF80D91FFFEEFFF8B691B500F00207EBFF80040702FC023F14E0041F02FF91B6
12F84C6F488193267FE07F6D4801037F922781FE001F9027E00FF0007FC6DA83F86D9026
F01FC06D7F6DD987F06D4A487F6DD98FC0DBF87EC7804C6D027C80039FC76E488203BEEE
FDF003BC6E4A8003FC04FF834B5FA24B5FA24B94C8FCA44B5EB3B2B7D8F007B7D8803FB6
12FCA67E417BC087>I<902607FF80EB1FFFB691B512F0040714FC041F14FF4C8193267F
E07F7F922781FE001F7FC6DA83F86D7F6DD987F07F6DD98FC0814C7F039FC78015BE03BC
8003FC825DA25DA25DA45DB3B2B7D8F007B71280A651417BC05A>I<923807FFE092B6FC
020715E0021F15F8027F15FE494848C66C6C7E010701F0010F13E04901C001037F49496D
7F4990C87F49486F7E49486F7E48496F13804819C04A814819E048496F13F0A24819F8A3
48496F13FCA34819FEA4B518FFAD6C19FEA46C6D4B13FCA36C19F8A26C6D4B13F0A26C19
E06C6D4B13C0A26C6D4B13806C6D4B13006D6C4B5A6D6D495B6D6D495B010701F0010F13
E06D01FE017F5B010090B7C7FC023F15FC020715E0020092C8FC030713E048437CC151>
I<D90FFFEB0FFCB690383FFF8093B512E04B14F04B14F8923907FC7FFC92390FE0FFFEC6
EC1F806DD93F0113FF6D133E157E157C15F8A215F07013FEA24BEB7FFCEF3FF8EF0FE04B
90C7FCA55DB3B0B712F8A638417BC042>114 D<913A3FFF8007800107B5EAF81F011FEC
FE7F017F91B5FC48B8FC48EBE0014890C7121FD80FFC1407D81FF0801600485A007F167F
49153FA212FF171FA27F7F7F6D92C7FC13FF14E014FF6C14F8EDFFC06C15FC16FF6C16C0
6C16F06C826C826C826C82013F1680010F16C01303D9007F15E0020315F0EC001F150004
1F13F81607007C150100FC81177F6C163FA2171F7EA26D16F0A27F173F6D16E06D157F6D
16C001FEEDFF806D0203130002C0EB0FFE02FCEB7FFC01DFB65A010F5DD8FE0315C026F8
007F49C7FC48010F13E035437BC140>I<EC07E0A6140FA5141FA3143FA2147FA214FF5B
A25B5B5B5B137F48B5FC000F91B512FEB8FCA5D8001F01E0C8FCB3AFEF0FC0AC171F6D6D
1480A2173F6D16006F5B6D6D137E6D6D5B6DEBFF836EEBFFF86E5C020F14C002035C9126
003FFCC7FC325C7DDA3F>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fm cmbx12 24.88 41
/Fm 41 123 df[<96380FFFFE060FB612E04DB712FC051F16FF94B912C0040784041F18
F8047F9126FC001F7F4BB6008001017F030702F8C8EA3FFF4B02E0030F7F033F02804B7F
4B49C9127F92B54893B57E4A02F05D4A4A4B804A4A5D4A4A84634A91C9FC4A5BA24A5B51
80755C91B5FC5EA3755CA2755C755C755CE23FFEC8FCF40FF899CAFCAF083FB612FCBFFC
A9C702FCC912038787B3B3B3B2003FB800F0013FB812F0A9>116
144 123 271 129 12 D[<EB1FE0EBFFFC00037F486D7E488048804880A24880A281B6FC
81A281A416807EA37EA27E7E6C14BF6C143FC613FCEB1FE090C7FC157F1600A55D5DA214
015DA214035D1407A24A5AA24A5AA24A5A147F5D4AC7FC5B495A5C1307495A495A495AEB
FFC0485B4890C8FC485A5B6C5A6C5A6C5A>33 70 111 270 65 39
D[<F31FE0F37FF8A2517EA2507FA3507FA25080A35080A25080A35080A25080A397B67E
A24F81A34F81A24F82A34F82A24F82A21AFBDF3FF981A2DF7FF1811AF06207FF6D80A24E
01C081871A804E6E80A24E0100828761060F6E81A24E48838761063F6E81A24E48838761
06FF6F80A24D498388614D7080A24D90C8FC768160050F7081A260051F708160053F7081
A260057F70816005FF7180A2604C7280604C7280A295CAFC4C72815F040F7281A294BDFC
4C88A24C88A34C88A293BE7E05E0CB7E5F4B7480A24B497280A294CCFC4B7481A24B4873
81A25E031F7481A24B487381A25E037F7481A24B487480A25E4A7680A24A497480A293CE
FC4A7681A24A4875814A7E0107B512FCB96C043FBA12FCA9>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[<BC0207BB12F8A9C70003
03C0CC001F4AC8FCB3B3B395BEFCA906C0CC121FB3B3B3A6BC0207BB12F8A9>165
142 120 269 182 I[<BC12C0A9C7000103E0C8FCB3B3B3B3B3B3B0BC12C0A9>74
142 122 269 87 I[<BC12F8A9C7000303C0CEFCB3B3B3B3A5F8FF80A4672100A667A368
A21F07A41F0FA3555AA21F3FA21F7FA21FFFA2666668666666666653B5FC65650B1F5C1D
7F0A03B6FC1C1F0903B7FCC1FCA468A5>121 142 120 269 140
76 D[<B900E04EB912F884848484A2848585C700037094C7000302FCC7FC73DF000F90C8
FC7C5A85858585A27081708170817081868270817081708187837181718171817181A271
8171817181728188847281728172817281A2728172817381738189857381738173818985
73817481748174818A867481748174818A8675817581758175818B877581758175818C88
7681768176817681A276817681768177158021C0897715E07715F07715F87715FCA27715
FE7715FF7815877815C722E78A7815F77815FF8AA28A8A8B8B8BA28B8B8B8BA28B8C8C8C
8CA28C8C8C8CA28D8D8D8D8DA24A6D8849B500FE88B900FC86227FA2223F221F220F2207
A27C5A>165 142 120 269 182 78 D[<97B512F0077FECFFE00607B712FE067FEEFFE0
0503B912FC051FF0FF80057F19E00403BB12FC040F9226E0007F14FF043F02FCC7000315
C04C02E0DA007F804BB60080031F14F8030702FCC9000314FE4B4A70804B02E0706C8003
7F0280051F14E092B6CB6C804A4A72804A4A72804A02F00600804A4A737F4A4A73804A8B
4A4A738091B6CD6C80494A7480A2494A7480494A7480498C4C86498D4C87498D494A7580
A290B68B4C87488EA24892CF6C80A3488E4B88A2488EA3484A761580A34823C0A5484A76
15E0A7B621F0B36C23E0A26F64A56C23C0A46F646C2380A36C23006F64A26C6AA270636C
6AA26C6A70636C6A70636D69A26D6E98B65AA26D6E505DA26D6E5092C7FC6D6870626D6E
505C6D686D6F4F5C6E6E4F5C6E6E4F5CA26E6E96B65A6E6E4E92C8FC6E6E4E5C020102FF
060F14F86E6F4D5C6F6E4D5C6F02F094B65A030F6E4C92C9FC6F02FE04075C03016E6C03
1F14F86F03F092B65A043F02FE020715C0040FDAFFF090B7CAFC040392B812FC04001AF0
051F198005074ECBFCDD007F17E0060F94CCFCDE007F15E0070002F0CDFC>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<0003BC12F81CFCA51CF80480C7123F03F0C84814F048
028018E04AC9B612C04A5D02F04B15804A19004E5C4A5D4A4B5C6391C9485C604993B65A
634D5D495D98C7FC4D5C4D5C000F5E62494B5C4D5C94B6FC624C5D4C92C8FC5EC95D4C5C
5E4C5C614C5C93B6FC4B5D614B92C9FC5D4B5C604B5C5D4B4AEC07FC6092B65A5C604A92
C8EA0FF84A5C5C5F4A5C4A5C4A181F5F91B65A495D491AF094C9123F495C5B494A167F5E
494A16FF496090B65A4C5D484B5D484F13E04892C95A4B5E484A93B5FC481803484A151F
4B0203B6FC4891BAFCBDFCA21CC0A47E565C7ADB67>I E
%EndDVIPSBitmapFont
end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin

%%EndSetup
%%Page: 1 1
1 0 bop 240 1799 a Fm(CFITSIO)76 b(User's)g(Reference)i(Guide)727
2258 y Fl(An)53 b(In)l(terface)f(to)i(FITS)g(F)-13 b(ormat)53
b(Files)1263 2518 y(for)h(C)f(Programmers)1667 3013 y
Fk(V)-10 b(ersion)38 b(2.5)1727 3916 y Fj(HEASAR)m(C)1764
4029 y(Co)s(de)30 b(662)1363 4142 y(Go)s(ddard)f(Space)i(Fligh)m(t)f
(Cen)m(ter)1522 4255 y(Green)m(b)s(elt,)g(MD)i(20771)1857
4367 y(USA)1561 5239 y Fk(Decem)m(b)s(er)37 b(2004)p
eop
%%Page: 2 2
2 1 bop 0 299 a Fj(ii)p eop
%%Page: 3 3
3 2 bop 0 1267 a Fm(Con)-6 b(ten)g(ts)0 1858 y Fi(1)84
b(In)m(tro)s(duction)3136 b(1)136 2020 y Fj(1.1)125 b(A)30
b(Brief)g(Ov)m(erview)84 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(1)136 2182
y(1.2)94 b(Sources)30 b(of)h(FITS)f(Soft)m(w)m(are)h(and)f(Information)
37 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(.)131 b(1)136 2344 y(1.3)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(.)131 b(2)136 2506
y(1.4)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(3)0 2766 y Fi(2)119 b(Creating)34 b(the)h(CFITSIO)e(Library)2256
b(5)136 2928 y Fj(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(5)345 3090 y(2.1.1)106 b(Unix)30 b(Systems)44
b(.)h(.)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(5)345 3252 y(2.1.2)106 b(VMS)33 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(7)345 3413 y(2.1.3)106 b(Windo)m(ws)30 b(PCs)g(.)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(7)345 3575 y(2.1.4)106 b(Macin)m(tosh)31 b(PCs)55
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
(.)131 b(7)136 3737 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(8)136 3899 y(2.3)94 b(Linking)29 b(Programs)h(with)f(CFITSIO)
45 b(.)g(.)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
4061 y(2.4)94 b(Getting)31 b(Started)g(with)e(CFITSIO)60
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(9)136 4223 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(.)85 b(10)0 4483 y Fi(3)119 b(A)35 b(FITS)f(Primer)2917
b(13)0 4742 y(4)119 b(Programming)35 b(Guidelines)2482
b(15)136 4904 y Fj(4.1)94 b(CFITSIO)29 b(De\014nitions)42
b(.)j(.)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 5066 y(4.2)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(17)136 5228 y(4.3)94 b(F)-8 b(unction)31 b(Names)f(and)g(V)-8
b(ariable)30 b(Datat)m(yp)s(es)41 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(18)136 5390 y(4.4)94 b(Supp)s(ort)29 b(for)h(Unsigned)f(In)m(tegers)i
(and)f(Signed)f(Bytes)86 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(19)136 5552
y(4.5)94 b(Dealing)31 b(with)e(Character)h(Strings)60
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(21)136 5714 y(4.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(22)1912 5942 y(iii)p eop
%%Page: 4 4
4 3 bop 0 299 a Fj(iv)3310 b Fh(CONTENTS)136 555 y Fj(4.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(22)136
720 y(4.8)94 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(23)136 885 y(4.9)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(23)136 1049 y(4.10)49 b(V)-8 b(ariable-Length)31 b(Arra)m(ys)f(in)f
(Binary)h(T)-8 b(ables)30 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(24)136 1214 y(4.11)49 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(25)136 1379 y(4.12)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(26)136
1543 y(4.13)49 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(26)0 1817 y Fi(5)f(Basic)36 b(CFITSIO)d(In)m(terface)h(Routines)2074
b(29)136 1982 y Fj(5.1)94 b(CFITSIO)29 b(Error)h(Status)g(Routines)88
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(29)136
2146 y(5.2)94 b(FITS)30 b(File)g(Access)h(Routines)f(.)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(30)136 2311 y(5.3)94 b(HDU)32 b(Access)f(Routines)71
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(33)136 2476 y(5.4)94 b(Header)31 b(Keyw)m(ord)f(Read/W)-8
b(rite)32 b(Routines)39 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(35)345 2640 y(5.4.1)106 b(Keyw)m(ord)30 b(Reading)g(Routines)64
b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(35)345
2805 y(5.4.2)106 b(Keyw)m(ord)30 b(W)-8 b(riting)30 b(Routines)85
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(37)136
2970 y(5.5)94 b(Primary)29 b(Arra)m(y)i(or)f(IMA)m(GE)i(Extension)d
(I/O)h(Routines)53 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(39)136 3135 y(5.6)94
b(Image)32 b(Compression)e(.)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(42)136 3299
y(5.7)94 b(ASCI)s(I)29 b(and)h(Binary)g(T)-8 b(able)30
b(Routines)84 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(45)345 3464 y(5.7.1)106 b(Create)32 b(New)e(T)-8 b(able)83
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(45)345 3629 y(5.7.2)106 b(Column)29 b(Information)g(Routines)h(.)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(46)345 3793 y(5.7.3)106
b(Routines)30 b(to)h(Edit)e(Ro)m(ws)i(or)f(Columns)38
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(48)345 3958 y(5.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(50)345 4123 y(5.7.5)106 b(Ro)m(w)31
b(Selection)f(and)g(Calculator)f(Routines)87 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 4287 y(5.8)94 b(Utilit)m(y)30 b(Routines)c(.)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(53)345 4452 y(5.8.1)106 b(File)30 b(Chec)m(ksum)g
(Routines)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(53)345 4617 y(5.8.2)106 b(Date)32 b(and)e(Time)f(Utilit)m(y)h
(Routines)89 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(54)345
4781 y(5.8.3)106 b(General)31 b(Utilit)m(y)e(Routines)j(.)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(56)0
5055 y Fi(6)119 b(The)35 b(CFITSIO)e(Iterator)g(F)-9
b(unction)2154 b(63)136 5220 y Fj(6.1)94 b(The)30 b(Iterator)i(W)-8
b(ork)31 b(F)-8 b(unction)44 b(.)h(.)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 5385 y(6.2)94 b(The)30 b(Iterator)i(Driv)m
(er)e(F)-8 b(unction)77 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(.)85 b(66)136 5549 y(6.3)94 b(Guidelines)28
b(for)i(Using)g(the)g(Iterator)i(F)-8 b(unction)44 b(.)i(.)g(.)f(.)h(.)
g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
(.)f(.)85 b(67)136 5714 y(6.4)94 b(Complete)31 b(List)e(of)i(Iterator)g
(Routines)61 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(68)p eop
%%Page: 5 5
5 4 bop 0 299 a Fh(CONTENTS)3334 b Fj(v)0 555 y Fi(7)119
b(Celestial)34 b(Co)s(ordinate)h(System)f(Routines)1882
b(71)136 717 y Fj(7.1)125 b(Self-con)m(tained)30 b(W)m(CS)g(Routines)e
(.)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(72)0 978 y Fi(8)119 b(Hierarc)m(hical)36 b(Grouping)g(Routines)2163
b(75)136 1140 y Fj(8.1)94 b(Grouping)29 b(T)-8 b(able)30
b(Routines)86 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(76)136 1302 y(8.2)94 b(Group)30 b(Mem)m(b)s(er)g(Routines)
g(.)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(78)0 1563 y Fi(9)119 b(Sp)s(ecialized)36 b(CFITSIO)d(In)m(terface)h
(Routines)1777 b(81)136 1725 y Fj(9.1)94 b(FITS)30 b(File)g(Access)h
(Routines)f(.)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(81)136 1887 y(9.2)94 b(HDU)32 b(Access)f(Routines)71
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(84)136 2049 y(9.3)94 b(Sp)s(ecialized)29 b(Header)h(Keyw)m(ord)
h(Routines)73 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(86)345 2211 y(9.3.1)106 b(Header)31 b(Information)e(Routines)63
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(86)345 2373
y(9.3.2)106 b(Read)31 b(and)f(W)-8 b(rite)30 b(the)h(Required)e(Keyw)m
(ords)51 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(86)345 2536 y(9.3.3)106
b(W)-8 b(rite)31 b(Keyw)m(ord)f(Routines)25 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(88)345 2698 y(9.3.4)106
b(Insert)30 b(Keyw)m(ord)g(Routines)88 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(90)345 2860 y(9.3.5)106 b(Read)31
b(Keyw)m(ord)f(Routines)44 b(.)i(.)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(91)345 3022 y(9.3.6)106 b(Mo)s(dify)29 b(Keyw)m(ord)i
(Routines)k(.)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(92)345 3184 y(9.3.7)106 b(Up)s(date)31 b(Keyw)m(ord)f(Routines)25
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(93)136
3346 y(9.4)94 b(De\014ne)31 b(Data)h(Scaling)d(and)h(Unde\014ned)f
(Pixel)g(P)m(arameters)43 b(.)j(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(94)136 3508 y(9.5)94
b(Sp)s(ecialized)29 b(FITS)g(Primary)g(Arra)m(y)i(or)f(IMA)m(GE)h
(Extension)f(I/O)g(Routines)54 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)
85 b(95)136 3670 y(9.6)94 b(Sp)s(ecialized)29 b(FITS)g(ASCI)s(I)g(and)h
(Binary)f(T)-8 b(able)30 b(Routines)86 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f
(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(99)345
3832 y(9.6.1)106 b(General)31 b(Column)d(Routines)50
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(99)345
3994 y(9.6.2)106 b(Lo)m(w-Lev)m(el)32 b(T)-8 b(able)30
b(Access)h(Routines)39 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(.)40
b(100)345 4156 y(9.6.3)106 b(W)-8 b(rite)31 b(Column)e(Data)j(Routines)
51 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(.)40 b(100)345
4318 y(9.6.4)106 b(Read)31 b(Column)d(Data)k(Routines)71
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(.)40 b(102)0 4579
y Fi(10)67 b(Extended)35 b(File)f(Name)g(Syn)m(tax)2278
b(105)136 4741 y Fj(10.1)49 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(.)40 b(105)136 4903 y(10.2)49 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(.)40 b(108)345 5066
y(10.2.1)61 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(.)40 b(108)345 5228 y(10.2.2)61
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(.)40 b(108)345
5390 y(10.2.3)61 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(.)40 b(110)136 5552
y(10.3)49 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(.)40
b(111)136 5714 y(10.4)49 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(.)40 b(113)p eop
%%Page: 6 6
6 5 bop 0 299 a Fj(vi)3310 b Fh(CONTENTS)136 555 y Fj(10.5)49
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(.)40 b(114)136 721 y(10.6)49 b(Image)32
b(Tile-Compression)27 b(Sp)s(eci\014cation)89 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(.)40 b(114)136 887 y(10.7)49
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(.)40 b(115)136 1053
y(10.8)49 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(.)40
b(116)136 1219 y(10.9)49 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(.)40 b(117)136
1385 y(10.10)t(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(.)40
b(118)345 1551 y(10.10.1)16 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(.)
40 b(119)345 1718 y(10.10.2)16 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(.)40
b(121)345 1884 y(10.10.3)16 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(.)40
b(122)345 2050 y(10.10.4)16 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(.)40
b(123)345 2216 y(10.10.5)16 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(.)40
b(124)345 2382 y(10.10.6)16 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(.)40
b(126)136 2548 y(10.11)35 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(.)40 b(127)0
2828 y Fi(11)32 b(T)-9 b(emplate)34 b(Files)2933 b(131)136
2994 y Fj(11.1)49 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(.)40
b(131)136 3160 y(11.2)49 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(.)40
b(132)136 3326 y(11.3)49 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(.)40
b(133)136 3492 y(11.4)49 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(.)40 b(133)136 3658 y(11.5)49 b(Errors)63 b(.)46
b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(134)136 3824 y(11.6)49
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(.)40 b(134)0
4105 y Fi(12)67 b(Lo)s(cal)35 b(FITS)g(Con)m(v)m(en)m(tions)2462
b(137)136 4271 y Fj(12.1)49 b(64-Bit)32 b(Long)f(In)m(tegers)61
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(.)40 b(137)136 4437 y(12.2)49 b(Long)31 b(String)e(Keyw)m(ord)h(V)
-8 b(alues.)64 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(.)
40 b(138)136 4603 y(12.3)49 b(Arra)m(ys)31 b(of)f(Fixed-Length)h
(Strings)d(in)h(Binary)h(T)-8 b(ables)77 b(.)46 b(.)f(.)h(.)g(.)g(.)f
(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
b(139)136 4769 y(12.4)49 b(Keyw)m(ord)31 b(Units)e(Strings)40
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
(.)40 b(139)136 4935 y(12.5)49 b(HIERAR)m(CH)31 b(Con)m(v)m(en)m(tion)g
(for)f(Extended)g(Keyw)m(ord)g(Names)91 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)
g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(140)136 5101
y(12.6)49 b(Tile-Compressed)29 b(Image)i(F)-8 b(ormat)52
b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
b(140)0 5382 y Fi(13)67 b(Optimizing)34 b(Programs)2588
b(143)136 5548 y Fj(13.1)49 b(Ho)m(w)32 b(CFITSIO)c(Manages)k(Data)g
(I/O)78 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(.)40
b(143)136 5714 y(13.2)49 b(Optimization)29 b(Strategies)76
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(.)40
b(144)p eop
%%Page: 7 7
7 6 bop 0 299 a Fh(CONTENTS)3284 b Fj(vii)0 555 y Fi(A)57
b(Index)35 b(of)g(Routines)2789 b(147)0 806 y(B)62 b(P)m(arameter)34
b(De\014nitions)2598 b(151)0 1057 y(C)60 b(CFITSIO)33
b(Error)i(Status)f(Co)s(des)2255 b(157)p eop
%%Page: 8 8
8 7 bop 0 299 a Fj(viii)3258 b Fh(CONTENTS)p eop
%%Page: 1 9
1 8 bop 0 1225 a Fg(Chapter)65 b(1)0 1687 y Fm(In)-6
b(tro)6 b(duction)0 2216 y Ff(1.1)180 b(A)45 b(Brief)g(Ov)l(erview)0
2495 y Fj(CFITSIO)38 b(is)h(a)h(mac)m(hine-indep)s(enden)m(t)e(library)
f(of)j(routines)e(for)i(reading)f(and)g(writing)e(data)k(\014les)d(in)h
(the)0 2608 y(FITS)c(\(Flexible)f(Image)i(T)-8 b(ransp)s(ort)34
b(System\))h(data)h(format.)56 b(It)35 b(can)h(also)f(read)g(IRAF)h
(format)f(image)h(\014les)0 2721 y(and)g(ra)m(w)h(binary)e(data)i(arra)
m(ys)g(b)m(y)g(con)m(v)m(erting)h(them)e(on)h(the)g(\015y)f(in)m(to)h
(a)g(virtual)e(FITS)h(format)h(\014le.)59 b(This)0 2833
y(library)30 b(is)i(written)g(in)f(ANSI)i(C)f(and)g(pro)m(vides)g(a)h
(p)s(o)m(w)m(erful)e(y)m(et)j(simple)d(in)m(terface)i(for)g(accessing)g
(FITS)f(\014les)0 2946 y(whic)m(h)j(will)f(run)h(on)h(most)h(commonly)f
(used)g(computers)g(and)g(w)m(orkstations.)59 b(CFITSIO)35
b(supp)s(orts)f(all)i(the)0 3059 y(features)26 b(describ)s(ed)d(in)h
(the)h(o\016cial)g(NOST)f(de\014nition)f(of)j(the)f(FITS)g(format)h
(and)e(can)i(read)f(and)g(write)g(all)f(the)0 3172 y(curren)m(tly)d
(de\014ned)f(t)m(yp)s(es)i(of)g(extensions,)h(including)18
b(ASCI)s(I)j(tables)g(\(T)-8 b(ABLE\),)23 b(Binary)e(tables)h(\(BINT)-8
b(ABLE\))0 3285 y(and)27 b(IMA)m(GE)h(extensions.)39
b(The)27 b(CFITSIO)f(routines)g(insulate)g(the)h(programmer)g(from)g
(ha)m(ving)f(to)i(deal)f(with)0 3398 y(the)e(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
3511 y(kno)m(wledge)30 b(ab)s(out)g(the)h(structure)f(and)g(usage)h(of)
f(FITS)g(\014les.)0 3671 y(CFITSIO)k(also)i(con)m(tains)h(a)f(set)h(of)
f(F)-8 b(ortran)36 b(callable)f(wrapp)s(er)g(routines)f(whic)m(h)h
(allo)m(w)h(F)-8 b(ortran)36 b(programs)0 3784 y(to)31
b(call)e(the)h(CFITSIO)e(routines.)40 b(See)30 b(the)g(companion)f
(\\FITSIO)g(User's)h(Guide")f(for)h(the)g(de\014nition)e(of)i(the)0
3897 y(F)-8 b(ortran)39 b(subroutine)c(calling)i(sequences.)63
b(These)38 b(wrapp)s(ers)e(replace)i(the)g(older)f(F)-8
b(ortran)39 b(FITSIO)d(library)0 4010 y(whic)m(h)29 b(is)h(no)g(longer)
g(supp)s(orted.)0 4170 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 4283
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 4396 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 4509 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
4622 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 4734 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 4847 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 5322 y Ff(1.2)135 b(Sources)45 b(of)g(FITS)f(Soft)l(w)
l(are)i(and)f(Information)0 5601 y Fj(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 5714
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:)1927 5942 y(1)p eop
%%Page: 2 10
2 9 bop 0 299 a Fj(2)2452 b Fh(CHAPTER)30 b(1.)71 b(INTR)m(ODUCTION)382
555 y Fe(http://heasarc.gsfc.nasa)o(.go)o(v/fi)o(tsio)382
668 y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o(/fi)o(tsio)o(/c)0
902 y Fj(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 1015 y(sen)m(t)31 b(to)g(the)g(primary)d
(author:)382 1249 y Fe(Dr.)47 b(William)f(Pence)810 b(Telephone:)92
b(\(301\))47 b(286-4599)382 1362 y(HEASARC,)e(Code)i(662)811
b(E-mail:)45 b(pence@tetra.gsfc.nasa.gov)382 1475 y(NASA/Goddard)f
(Space)j(Flight)f(Center)382 1588 y(Greenbelt,)f(MD)i(20771,)f(USA)0
1822 y Fj(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 1935 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
2048 y(FITS)h(Supp)s(ort)f(O\016ce)i(at)g Fe(http://fits.gsfc.nasa.gov)
o Fj(.)42 b(In)32 b(particular,)g(the)h('NOST)f(FITS)g(Standard')0
2161 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 2274 y(additional)28 b(historical)h(bac)m(kground)h(and)g
(practical)g(advice)g(on)g(using)f(FITS)h(\014les.)0
2434 y(The)38 b(HEASAR)m(C)g(also)h(pro)m(vides)e(a)i(v)m(ery)g
(sophisticated)f(FITS)f(\014le)h(analysis)f(program)h(called)g(`Fv')h
(whic)m(h)0 2547 y(can)34 b(b)s(e)f(used)g(to)h(displa)m(y)e(and)h
(edit)g(the)h(con)m(ten)m(ts)i(of)e(an)m(y)g(FITS)f(\014le)f(as)i(w)m
(ell)f(as)h(construct)g(new)f(FITS)g(\014les)0 2660 y(from)j(scratc)m
(h.)61 b(The)36 b(displa)m(y)f(functions)g(in)g(Fv)i(allo)m(w)f(users)g
(to)i(in)m(teractiv)m(ely)e(adjust)g(the)h(brigh)m(tness)f(and)0
2773 y(con)m(trast)i(of)f(images,)h(pan,)g(zo)s(om,)h(and)d(blink)e
(images,)39 b(and)d(measure)h(the)f(p)s(ositions)f(and)h(brigh)m
(tnesses)g(of)0 2886 y(ob)5 b(jects)33 b(within)d(images.)46
b(FITS)31 b(tables)h(can)h(b)s(e)e(displa)m(y)m(ed)g(lik)m(e)h(a)g
(spread)g(sheet,)h(and)f(then)f(mo)s(di\014ed)f(using)0
2999 y(p)s(o)m(w)m(erful)25 b(calculator)i(and)e(sorting)h(functions.)
38 b(Fv)27 b(is)e(freely)h(a)m(v)-5 b(ailable)26 b(for)g(most)h(Unix)e
(platforms,)i(Mac)g(PCs,)0 3112 y(and)34 b(Windo)m(ws)f(PCs.)52
b(CFITSIO)33 b(users)h(ma)m(y)h(also)f(b)s(e)g(in)m(terested)h(in)e
(the)h(FTOOLS)f(pac)m(k)-5 b(age)37 b(of)d(programs)0
3225 y(that)27 b(can)f(b)s(e)g(used)f(to)i(manipulate)e(and)g(analyze)i
(FITS)e(format)i(\014les.)38 b(Fv)27 b(and)e(FTOOLS)g(are)i(a)m(v)-5
b(ailable)25 b(from)0 3337 y(their)k(resp)s(ectiv)m(e)i(W)-8
b(eb)31 b(sites)f(at:)382 3572 y Fe(http://fv.gsfc.nasa.gov)382
3685 y(http://heasarc.gsfc.nasa)o(.go)o(v/ft)o(ools)0
4014 y Ff(1.3)135 b(Ac)l(kno)l(wledgemen)l(ts)0 4264
y Fj(The)34 b(dev)m(elopmen)m(t)g(of)g(the)g(p)s(o)m(w)m(erful)f
(features)h(in)f(CFITSIO)g(w)m(as)h(made)g(p)s(ossible)e(through)h
(collab)s(orations)0 4377 y(with)d(man)m(y)h(p)s(eople)f(or)g
(organizations)h(from)g(around)f(the)h(w)m(orld.)41 b(The)30
b(follo)m(wing)g(in)f(particular)h(ha)m(v)m(e)i(made)0
4490 y(esp)s(ecially)d(signi\014can)m(t)g(con)m(tributions:)0
4650 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 4763 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 4876 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 4989 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
5102 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 5215 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 5328 y(and)30 b(R)m(OOT)g(proto)s(cols.)0 5488
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
5601 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 5714 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.)
p eop
%%Page: 3 11
3 10 bop 0 299 a Fh(1.4.)72 b(LEGAL)30 b(STUFF)2995 b
Fj(3)0 555 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 668 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)0 781 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
894 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 1007 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 1120 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 1233
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 1346 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 1458 y(enhancemen)m(ts)j(to)g(the)g(lexical)e(parser.)0
1619 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 1732 y(Access)31 b(La)m(y)m(er.)0 1892 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
2005 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 2165 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 2278 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 2391 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 2503 y(description)j(of)j(the)g(AXAF)g(Data)h(Mo)s
(del.)0 2664 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 2777 y(Jean-loup)29 b(Gailly)g(and)h(others.)0
2937 y(The)e(new)h(compressed)g(image)g(data)h(format)f(\(where)g(the)g
(image)g(is)f(tiled)g(and)g(the)h(compressed)g(b)m(yte)h(stream)0
3050 y(from)k(eac)m(h)i(tile)f(is)e(stored)i(in)f(a)h(binary)e(table\))
j(w)m(as)f(implemen)m(ted)e(in)h(collab)s(oration)g(with)f(Ric)m(hard)h
(White)0 3163 y(\(STScI\),)c(P)m(erry)g(Green\014eld)g(\(STScI\))g(and)
f(Doug)i(T)-8 b(o)s(dy)30 b(\(NO)m(A)m(O\).)0 3323 y(Doug)h(Mink)f
(\(SA)m(O\))g(pro)m(vided)f(the)i(routines)e(for)h(con)m(v)m(erting)i
(IRAF)e(format)h(images)f(in)m(to)h(FITS)e(format.)0
3483 y(In)e(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 3596 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 3756 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 3869 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 3982
y(Gan,)j(Emily)d(Greene,)j(Gretc)m(hen)g(Green,)f(Jo)s(e)g(Harrington,)
g(Cheng)g(Ho,)h(Phil)d(Ho)s(dge,)i(Jim)f(Ingham,)h(Y)-8
b(oshi-)0 4095 y(tak)j(a)44 b(Ishisaki,)g(Diab)f(Jerius,)h(Mark)g
(Levine,)h(T)-8 b(o)s(dd)42 b(Karak)-5 b(askian,)46 b(Edw)m(ard)c
(King,)j(Scott)f(Ko)s(c)m(h,)i(Claire)0 4208 y(Larkin,)c(Rob)f
(Managan,)j(Eric)c(Mandel,)j(Ric)m(hard)d(Mathar,)k(John)c(Matto)m(x,)
46 b(Carsten)41 b(Mey)m(er,)k(Emi)39 b(Miy-)0 4320 y(ata,)44
b(Stefan)c(Mo)s(c)m(hnac)m(ki,)k(Mik)m(e)d(Noble,)h(Oliv)m(er)d(Ob)s
(erdorf,)i(Cliv)m(e)e(P)m(age,)45 b(Arvind)38 b(P)m(armar,)43
b(Je\013)e(P)m(edelt)m(y)-8 b(,)0 4433 y(Tim)31 b(P)m(earson,)j
(Philipp)s(e)28 b(Prugniel,)j(Maren)h(Purv)m(es,)h(Scott)g(Randall,)f
(Chris)e(Rogers,)k(Arnold)c(Rots,)k(Barry)0 4546 y(Sc)m(hlesinger,)h
(Robin)f(Stebbins,)h(Andrew)f(Szymk)m(o)m(wiak,)j(Allyn)c(T)-8
b(ennan)m(t,)37 b(P)m(eter)g(T)-8 b(eub)s(en,)35 b(James)h(Theiler,)0
4659 y(Doug)c(T)-8 b(o)s(dy)g(,)32 b(Shiro)e(Ueno,)j(Stev)m(e)f(W)-8
b(alton,)33 b(Arc)m(hie)f(W)-8 b(arno)s(c)m(k,)33 b(Alan)e(W)-8
b(atson,)33 b(Dan)f(Whipple,)e(Wim)h(Wim-)0 4772 y(mers,)f(P)m(eter)i
(Y)-8 b(oung,)31 b(Jianjun)d(Xu,)i(and)g(Nelson)g(Zarate.)0
5216 y Ff(1.4)135 b(Legal)46 b(Stu\013)0 5488 y Fj(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
5601 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 5714 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.)p eop
%%Page: 4 12
4 11 bop 0 299 a Fj(4)2452 b Fh(CHAPTER)30 b(1.)71 b(INTR)m(ODUCTION)0
555 y Fj(P)m(ermission)28 b(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 668
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 781 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 941 y(DISCLAIMER:)0
1101 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-)0
1214 y(THER)42 b(EXPRESSED,)f(IMPLIED,)i(OR)e(ST)-8 b(A)g(TUTOR)g(Y,)43
b(INCLUDING,)f(BUT)h(NOT)e(LIMITED)h(TO,)0 1327 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 1440 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 1553 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
1666 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 1779 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
1892 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 2005 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
2118 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 2230 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 2343 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 2456
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 2569 y(VICES)29 b(PR)m(O)m(VIDED)j(HEREUNDER.")0
2729 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 2842 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 2955 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
3068 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 3181 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
3341 y(An)h(alternate)i(v)m(ersion)e(of)h(the)g(compress.c)g(\014le)f
(\(called)g(compress)p 2381 3341 28 4 v 33 w(alternate.c\))i(is)e(pro)m
(vided)f(for)i(users)e(who)0 3454 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
3567 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 3680 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 3793 y(with)32 b(`compress)p 600 3793
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
3906 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 4019 y(to)31 b(the)g(standard)e(v)m(ersion.)p
eop
%%Page: 5 13
5 12 bop 0 1225 a Fg(Chapter)65 b(2)0 1687 y Fm(Creating)77
b(the)h(CFITSIO)e(Library)0 2216 y Ff(2.1)135 b(Building)45
b(the)h(Library)0 2466 y Fj(The)h(CFITSIO)f(co)s(de)h(is)g(con)m
(tained)g(in)f(ab)s(out)h(40)h(C)f(source)h(\014les)e(\(*.c\))j(and)e
(header)g(\014les)f(\(*.h\).)93 b(On)0 2579 y(V)-10 b(AX/VMS)31
b(systems)g(2)f(assem)m(bly-co)s(de)h(\014les)e(\(vmsieeed.mar)h(and)g
(vmsieeer.mar\))h(are)f(also)h(needed.)0 2739 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
2959 y Fe(OPERATING)46 b(SYSTEM)523 b(COMPILER)143 3072
y(Sun)47 b(OS)1002 b(gcc)47 b(and)g(cc)g(\(3.0.1\))143
3185 y(Sun)g(Solaris)762 b(gcc)47 b(and)g(cc)143 3298
y(Silicon)f(Graphics)g(IRIX)285 b(gcc)47 b(and)g(cc)143
3411 y(Silicon)f(Graphics)g(IRIX64)189 b(MIPS)143 3523
y(Dec)47 b(Alpha)f(OSF/1)572 b(gcc)47 b(and)g(cc)143
3636 y(DECstation)93 b(Ultrix)428 b(gcc)143 3749 y(Dec)47
b(Alpha)f(OpenVMS)476 b(cc)143 3862 y(DEC)47 b(VAX/VMS)762
b(gcc)47 b(and)g(cc)143 3975 y(HP-UX)1049 b(gcc)143 4088
y(IBM)47 b(AIX)954 b(gcc)143 4201 y(Linux)1049 b(gcc)143
4314 y(MkLinux)953 b(DR3)143 4427 y(Windows)46 b(95/98/NT)523
b(Borland)46 b(C++)h(V4.5)143 4540 y(Windows)f(95/98/NT/ME/XP)235
b(Microsoft/Compaq)43 b(Visual)j(C++)h(v5.0,)g(v6.0)143
4653 y(Windows)f(95/98/NT)523 b(Cygwin)46 b(gcc)143 4765
y(MacOS)h(7.1)f(or)i(greater)332 b(Metrowerks)45 b(10.+)143
4878 y(MacOS-X)h(10.1)h(or)g(greater)189 b(cc)47 b(\(gcc\))0
5098 y Fj(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 5211 y(supp)s(orted.)0 5495 y Fd(2.1.1)112
b(Unix)38 b(Systems)0 5714 y Fj(The)30 b(CFITSIO)f(library)f(is)h
(built)f(on)j(Unix)e(systems)h(b)m(y)g(t)m(yping:)1927
5942 y(5)p eop
%%Page: 6 14
6 13 bop 0 299 a Fj(6)1580 b Fh(CHAPTER)30 b(2.)112 b(CREA)-8
b(TING)30 b(THE)g(CFITSIO)f(LIBRAR)-8 b(Y)48 555 y Fe(>)95
b(./configure)45 b([--prefix=/target/insta)o(llat)o(ion)o(/pat)o(h])48
668 y(>)95 b(make)476 b(\(or)95 b('make)46 b(shared'\))48
781 y(>)95 b(make)47 b(install)93 b(\(this)46 b(step)h(is)g(optional\))
0 1037 y Fj(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 1150 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
1263 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 1375 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 1488 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 1601 y('mak)m(e)j(install')c
(command.)41 b(F)-8 b(or)31 b(example,)143 1857 y Fe(>)48
b(./configure)c(--prefix=/usr1/local)0 2113 y Fj(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 2226 y(necessary)33 b(include)c(\014les)j(to)g(/usr1/lo)s
(cal/include)f(\(assuming)g(of)h(course)g(that)h(the)f(pro)s(cess)g
(has)g(p)s(ermission)0 2338 y(to)f(write)f(to)h(these)g(directories\).)
0 2499 y(The)d('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 2612 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 2724
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 2724 28
4 v 33 w(LIBRAR)-8 b(Y)p 3514 2724 V 34 w(P)g(A)g(TH)28
b(or)0 2837 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
3093 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 3206 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
3319 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 3432 y(enough)f(to)h(share)g(copies)f(of)h
(the)g(shared)f(library)g(at)h(run)g(time.)143 3545 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 3658 y(library)f(can)h(be)g(installed)e(without)h
(relinking)f(all)i(the)g(software)334 3770 y(that)g(uses)f(it)i(\(as)e
(long)h(as)g(the)g(subroutine)e(names)i(and)f(calling)334
3883 y(sequences)f(remain)h(unchanged\).)143 3996 y(4.)95
b(No)47 b(run-time)f(penalty.)0 4252 y Fj(The)30 b(disadv)-5
b(an)m(tages)31 b(are:)143 4508 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
4621 y(specially)f(or)h(have)f(LD_LIBRARY_PATH)e(set)j(right.)143
4733 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 4846 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
4959 y(either)f(really)h(slow)f(or)h(really)f(heavily)g(loaded.)0
5215 y Fj(On)32 b(Mac)i(OS)e(X)i(platforms)e(the)h('mak)m(e)h(shared')f
(command)f(w)m(orks)h(lik)m(e)g(on)g(other)g(UNIX)g(platforms,)g(but)g
(a)0 5328 y(.dylib)d(\014le)h(will)e(b)s(e)i(created)i(instead)f(of)g
(.so.)46 b(If)31 b(installed)f(in)h(a)h(nonstandard)f(lo)s(cation,)h
(add)f(its)h(lo)s(cation)f(to)0 5441 y(the)g(D)m(YLD)p
422 5441 V 34 w(LIBRAR)-8 b(Y)p 872 5441 V 33 w(P)g(A)g(TH)31
b(en)m(vironmen)m(t)f(v)-5 b(ariable)29 b(so)i(that)g(the)f(library)e
(can)j(b)s(e)f(found)f(at)i(run)e(time.)0 5601 y(On)h(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 5714
y(\014gure)i(to)h(enable)f("extended)h(ANSI")f(features.)p
eop
%%Page: 7 15
7 14 bop 0 299 a Fh(2.1.)72 b(BUILDING)31 b(THE)f(LIBRAR)-8
b(Y)2507 b Fj(7)0 555 y(By)31 b(default,)g(a)g(set)h(of)f(F)-8
b(ortran-callable)31 b(wrapp)s(er)e(routines)h(are)h(also)g(built)e
(and)h(included)f(in)g(the)i(CFITSIO)0 668 y(library)-8
b(.)68 b(If)40 b(these)g(wrapp)s(er)f(routines)g(are)h(not)h(needed)e
(\(i.e.,)44 b(the)c(CFITSIO)f(library)e(will)h(not)i(b)s(e)g(link)m(ed)
0 781 y(to)d(an)m(y)f(F)-8 b(ortran)37 b(applications)d(whic)m(h)h
(call)g(FITSIO)g(subroutines\))f(then)i(they)g(ma)m(y)h(b)s(e)e
(omitted)h(from)g(the)0 894 y(build)26 b(b)m(y)k(t)m(yping)f('mak)m(e)h
(all-no\014tsio')f(instead)f(of)i(simply)d(t)m(yping)i('mak)m(e'.)42
b(This)27 b(will)g(reduce)i(the)h(size)f(of)h(the)0 1007
y(CFITSIO)f(library)f(sligh)m(tly)-8 b(.)0 1167 y(Most)37
b(32-bit)g(op)s(erating)f(systems)g(ha)m(v)m(e)i(only)d(supp)s(orted)g
(disk)g(\014les)g(up)g(to)i(2.1GB)i(\(2**31)g(b)m(ytes\))e(in)e(size.)0
1280 y(Starting)c(with)f(v)m(ersion)h(2.1)h(of)g(CFITSIO,)e(FITS)h
(\014les)f(larger)h(than)g(this)g(limit)e(\(up)i(to)h(6)g(terab)m
(ytes\))h(can)f(b)s(e)0 1393 y(read)25 b(and)g(written)f(on)h
(platforms)f(that)h(supp)s(ort)f(large)h(\014les)f(\(e.g.,)k(at)e
(least)f(some)h(LINUX)f(platforms)f(and)h(So-)0 1506
y(laris\).)36 b(T)-8 b(o)22 b(enable)e(this)g(feature,)j(CFITSIO)d(m)m
(ust)h(b)s(e)f(compiled)f(with)h(the)h('-D)p 2731 1506
28 4 v 34 w(LAR)m(GEFILE)p 3298 1506 V 33 w(SOUR)m(CE')g(and)0
1619 y(`-D)p 129 1619 V 34 w(FILE)p 374 1619 V 32 w(OFFSET)p
774 1619 V 32 w(BITS=64')g(compiler)e(\015ags.)37 b(Some)21
b(platforms)e(ma)m(y)i(also)f(require)f(the)h(`-D)p 3380
1619 V 34 w(LAR)m(GE)p 3736 1619 V 33 w(FILES')0 1732
y(compiler)29 b(\015ag.)42 b(It)30 b(app)s(ears)g(that)h(in)e(most)i
(cases)g(it)g(is)e(not)i(necessary)g(to)g(also)f(include)f(these)i
(compiler)e(\015ags)0 1844 y(when)k(compiling)f(programs)h(that)i(link)
d(to)i(the)g(CFITSIO)f(library)-8 b(.)49 b(See)34 b(the)g(`CFITSIO)f
(Size)g(Limitations')0 1957 y(section)e(in)e(Chapter)g(4)i(for)f
(further)f(details.)0 2118 y(It)g(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 2230 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
2343 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 2456 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
2762 y Fd(2.1.2)112 b(VMS)0 2984 y Fj(On)28 b(V)-10 b(AX/VMS)31
b(and)d(ALPHA/VMS)i(systems)f(the)h(mak)m(e)p 2100 2984
V 34 w(g\015oat.com)h(command)e(\014le)f(ma)m(y)i(b)s(e)f(executed)h
(to)0 3097 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 3210 y(The)37
b(mak)m(e)p 405 3210 V 33 w(d\015oat.com)i(and)d(mak)m(e)p
1279 3210 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 3322 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 3435 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 3548 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
3854 y Fd(2.1.3)112 b(Windo)m(ws)37 b(PCs)0 4076 y Fj(A)28
b(precompiled)e(DLL)i(v)m(ersion)f(of)h(CFITSIO)e(is)h(a)m(v)-5
b(ailable)28 b(for)f(IBM-PC)h(users)g(of)g(the)g(Borland)f(or)h
(Microsoft)0 4189 y(Visual)44 b(C++)g(compilers)g(in)g(the)i(\014les)e
(c\014tsio)s(dll)p 1802 4189 V 31 w(2xxx)p 2022 4189
V 33 w(b)s(orland.zip)e(and)j(c\014tsio)s(dll)p 3078
4189 V 30 w(2xxx)p 3297 4189 V 33 w(v)m(cc.zip,)50 b(where)0
4302 y('2xxx')45 b(represen)m(ts)f(the)g(curren)m(t)g(release)h(n)m(um)
m(b)s(er.)81 b(These)44 b(zip)f(arc)m(hiv)m(es)h(also)h(con)m(tains)f
(other)g(\014les)g(and)0 4414 y(instructions)28 b(on)i(ho)m(w)h(to)g
(use)f(the)h(CFITSIO)d(DLL)j(library)-8 b(.)0 4575 y(The)28
b(CFITSIO)g(library)e(ma)m(y)j(also)g(b)s(e)f(built)f(from)h(the)h
(source)g(co)s(de)g(using)f(the)h(mak)m(e\014le.b)s(c)f(or)h(mak)m
(e\014le.v)m(cc)0 4688 y(\014les.)54 b(Finally)-8 b(,)35
b(the)g(mak)m(ep)s(c.bat)h(\014le)e(giv)m(es)i(an)f(example)g(of)g
(building)c(CFITSIO)j(with)f(the)j(Borland)e(C++)0 4800
y(v4.5)d(compiler)e(using)g(older)h(DOS)g(commands.)0
5106 y Fd(2.1.4)112 b(Macin)m(tosh)38 b(PCs)0 5328 y
Fj(When)30 b(building)d(on)j(Mac)h(OS-X,)g(users)e(should)g(follo)m(w)g
(the)i(Unix)e(instructions,)f(ab)s(o)m(v)m(e.)0 5488
y(The)h(classic)f(MacOS)h(v)m(ersion)g(\(OS)g(9)g(or)g(earlier\))f(of)i
(the)f(CFITSIO)e(library)g(can)i(b)s(e)g(built)e(b)m(y)i(\(1\))h(un)e
(binhex)0 5601 y(and)e(unstu\013)g(c\014tsio)p 714 5601
V 33 w(mac.sit.hqx,)i(\(2\))g(put)e(CFitsioPPC.mcp)f(in)h(the)h
(c\014tsio)g(directory)-8 b(,)28 b(and)e(\(3\))i(load)f(CFit-)0
5714 y(sioPPC.mcp)i(in)m(to)i(Co)s(deW)-8 b(arrior)30
b(Pro)g(5)h(and)f(mak)m(e.)42 b(This)29 b(builds)e(the)k(CFITSIO)e
(library)f(for)i(PPC.)g(There)p eop
%%Page: 8 16
8 15 bop 0 299 a Fj(8)1580 b Fh(CHAPTER)30 b(2.)112 b(CREA)-8
b(TING)30 b(THE)g(CFITSIO)f(LIBRAR)-8 b(Y)0 555 y Fj(are)31
b(also)f(targets)i(for)e(b)s(oth)g(the)g(test)i(program)e(and)f(the)i
(sp)s(eed)e(test)j(program.)0 715 y(T)-8 b(o)27 b(use)f(the)h(MacOS)g
(p)s(ort)f(y)m(ou)h(can)g(add)f(C\014tsio)g(PPC.lib)e(to)j(y)m(our)g
(Co)s(deW)-8 b(arrior)26 b(Pro)g(5)h(pro)5 b(ject.)40
b(Note)28 b(that)0 828 y(this)h(only)h(has)g(b)s(een)g(tested)h(for)f
(the)g(PPC)g(and)g(probably)e(w)m(on't)j(w)m(ork)g(on)f(68k)h(Macs.)0
1162 y Ff(2.2)135 b(T)-11 b(esting)46 b(the)f(Library)0
1412 y Fj(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
1525 y(included)28 b(with)h(the)h(release.)41 b(On)30
b(Unix)f(systems,)i(t)m(yp)s(e:)191 1782 y Fe(\045)47
b(make)g(testprog)191 1895 y(\045)g(testprog)f(>)h(testprog.lis)191
2008 y(\045)g(diff)g(testprog.lis)d(testprog.out)191
2121 y(\045)j(cmp)g(testprog.fit)e(testprog.std)0 2378
y Fj(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 2636
y Fe($)47 b(cc)h(testprog.c)191 2749 y($)f(link)g(testprog,)e
(cfitsio/lib,)g(alpha$library:vaxcrtl/l)o(ib)191 2862
y($)i(run)g(testprog)0 3119 y Fj(The)42 b(test)h(program)f(should)e
(pro)s(duce)h(a)i(FITS)e(\014le)h(called)f(`testprog.\014t')j(that)f
(is)e(iden)m(tical)g(to)i(the)f(`test-)0 3232 y(prog.std')35
b(FITS)e(\014le)h(included)d(with)i(this)g(release.)53
b(The)34 b(diagnostic)g(messages)h(\(whic)m(h)f(w)m(ere)h(pip)s(ed)d
(to)j(the)0 3345 y(\014le)g(testprog.lis)h(in)f(the)i(Unix)e(example\))
h(should)e(b)s(e)i(iden)m(tical)f(to)i(the)f(listing)e(con)m(tained)j
(in)e(the)h(\014le)g(test-)0 3458 y(prog.out.)63 b(The)37
b('di\013)7 b(')37 b(and)g('cmp')h(commands)g(sho)m(wn)f(ab)s(o)m(v)m
(e)i(should)c(not)j(rep)s(ort)f(an)m(y)h(di\013erences)f(in)g(the)0
3571 y(\014les.)64 b(\(There)38 b(ma)m(y)h(b)s(e)f(some)h(minor)e
(format)i(di\013erences,)h(suc)m(h)e(as)h(the)g(presence)f(or)h
(absence)g(of)f(leading)0 3684 y(zeros,)31 b(or)g(3)f(digit)g(exp)s
(onen)m(ts)g(in)f(n)m(um)m(b)s(ers,)g(whic)m(h)g(can)i(b)s(e)f
(ignored\).)0 3844 y(The)e(F)-8 b(ortran)30 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)f
(on)g(Unix)e(systems)i(with:)191 4101 y Fe(\045)47 b(f77)g(-o)g
(testf77)f(testf77.f)g(-L.)g(-lcfitsio)g(-lnsl)g(-lsocket)95
4214 y(or)191 4327 y(\045)h(f77)g(-f)g(-o)h(testf77)d(testf77.f)h(-L.)h
(-lcfitsio)188 b(\(under)46 b(SUN)h(O/S\))95 4440 y(or)191
4553 y(\045)g(f77)g(-o)g(testf77)f(testf77.f)g(-Wl,-L.)f(-lcfitsio)h
(-lm)h(-lnsl)f(-lsocket)f(\(HP/UX\))191 4779 y(\045)i(testf77)f(>)i
(testf77.lis)191 4892 y(\045)f(diff)g(testf77.lis)e(testf77.out)191
5005 y(\045)i(cmp)g(testf77.fit)e(testf77.std)0 5262
y Fj(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 5375 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
5488 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 5601 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 5714 y(v)-5
b(ariables.)p eop
%%Page: 9 17
9 16 bop 0 299 a Fh(2.3.)72 b(LINKING)30 b(PR)m(OGRAMS)h(WITH)f
(CFITSIO)1975 b Fj(9)0 555 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 668 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
781 y(using)f(F)i(format.)0 941 y(A)37 b(few)f(other)g(utilit)m(y)f
(programs)h(are)h(included)d(with)h(CFITSIO;)g(the)i(\014rst)e(four)h
(of)g(this)g(programs)g(can)h(b)s(e)0 1054 y(compiled)c(an)i(link)m(ed)
e(b)m(y)i(t)m(yping)f(`mak)m(e)i(program)p 1815 1054
28 4 v 33 w(name')f(where)f(`program)p 2746 1054 V 33
w(name')h(is)f(the)h(actual)g(name)g(of)0 1167 y(the)c(program:)191
1467 y Fe(speed)46 b(-)i(measures)d(the)i(maximum)f(throughput)f(\(in)i
(MB)g(per)g(second\))668 1580 y(for)g(writing)f(and)h(reading)f(FITS)g
(files)h(with)f(CFITSIO.)191 1806 y(listhead)f(-)j(lists)e(all)h(the)g
(header)f(keywords)g(in)h(any)g(FITS)f(file)191 2032
y(fitscopy)f(-)j(copies)e(any)h(FITS)g(file)f(\(especially)f(useful)h
(in)h(conjunction)811 2145 y(with)g(the)g(CFITSIO's)e(extended)h(input)
g(filename)g(syntax\).)191 2371 y(cookbook)f(-)j(a)f(sample)f(program)g
(that)h(performs)e(common)i(read)f(and)811 2483 y(write)h(operations)e
(on)i(a)g(FITS)g(file.)191 2709 y(iter_a,)f(iter_b,)g(iter_c)g(-)h
(examples)f(of)h(the)g(CFITSIO)f(iterator)f(routine)0
3091 y Ff(2.3)135 b(Linking)45 b(Programs)h(with)f(CFITSIO)0
3350 y Fj(When)25 b(linking)e(applications)h(soft)m(w)m(are)j(with)d
(the)i(CFITSIO)e(library)-8 b(,)25 b(sev)m(eral)h(system)g(libraries)d
(usually)g(need)0 3463 y(to)36 b(b)s(e)f(sp)s(eci\014ed)f(on)h(the)g
(link)f(command)h(line.)54 b(On)34 b(Unix)h(systems,)i(the)e(most)h
(reliable)d(w)m(a)m(y)k(to)f(determine)0 3576 y(what)26
b(libraries)e(are)i(required)f(is)g(to)i(t)m(yp)s(e)f('mak)m(e)i
(testprog')f(and)f(see)h(what)f(libraries)e(the)i(con\014gure)g(script)
f(has)0 3689 y(added.)39 b(The)25 b(t)m(ypical)h(libraries)d(that)j
(need)g(to)g(b)s(e)g(added)f(are)h(-lm)g(\(the)g(math)g(library\))e
(and)h(-lnsl)f(and)i(-lso)s(c)m(k)m(et)0 3802 y(\(needed)k(only)f(for)h
(FTP)g(and)f(HTTP)g(\014le)g(access\).)43 b(These)30
b(latter)g(2)g(libraries)d(are)k(not)f(needed)g(on)g(VMS)g(and)0
3915 y(Windo)m(ws)f(platforms,)h(b)s(ecause)g(FTP)h(\014le)e(access)j
(is)d(not)i(curren)m(tly)e(supp)s(orted)g(on)h(those)h(platforms.)0
4075 y(Note)i(that)g(when)e(upgrading)f(to)j(a)f(new)m(er)g(v)m(ersion)
f(of)h(CFITSIO)f(it)g(is)g(usually)f(necessary)i(to)h(recompile,)f(as)0
4188 y(w)m(ell)d(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 4569 y Ff(2.4)135 b(Getting)46 b(Started)g(with)f(CFITSIO)0
4829 y Fj(In)27 b(order)h(to)g(e\013ectiv)m(ely)h(use)f(the)g(CFITSIO)e
(library)g(it)h(is)g(recommended)h(that)g(new)f(users)h(b)s(egin)e(b)m
(y)i(reading)0 4942 y(the)g(\\CFITSIO)g(Quic)m(k)f(Start)h(Guide".)40
b(It)28 b(con)m(tains)g(all)g(the)g(basic)g(information)e(needed)i(to)h
(write)e(programs)0 5055 y(that)d(p)s(erform)f(most)h(t)m(yp)s(es)g(of)
g(op)s(erations)f(on)h(FITS)f(\014les.)38 b(The)23 b(set)i(of)f
(example)f(FITS)h(utilit)m(y)e(programs)h(that)0 5168
y(are)29 b(a)m(v)-5 b(ailable)28 b(from)g(the)g(CFITSIO)f(w)m(eb)i
(site)f(are)h(also)f(v)m(ery)h(useful)e(for)h(learning)f(ho)m(w)h(to)h
(use)f(CFITSIO.)f(T)-8 b(o)0 5281 y(learn)22 b(ev)m(en)h(more)g(ab)s
(out)f(the)h(capabilities)d(of)j(the)g(CFITSIO)e(library)f(the)j(follo)
m(wing)e(steps)h(are)h(recommended:)0 5441 y(1.)41 b(Read)31
b(the)f(follo)m(wing)f(short)h(`FITS)g(Primer')f(c)m(hapter)i(for)f(an)
h(o)m(v)m(erview)g(of)f(the)h(structure)f(of)g(FITS)g(\014les.)0
5601 y(2.)40 b(Review)27 b(the)g(Programming)f(Guidelines)f(in)h
(Chapter)g(4)i(to)g(b)s(ecome)f(familiar)e(with)h(the)i(con)m(v)m(en)m
(tions)g(used)0 5714 y(b)m(y)i(the)h(CFITSIO)e(in)m(terface.)p
eop
%%Page: 10 18
10 17 bop 0 299 a Fj(10)1535 b Fh(CHAPTER)30 b(2.)112
b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR)-8 b(Y)0
555 y Fj(3.)74 b(Refer)41 b(to)h(the)g(co)s(okb)s(o)s(ok.c,)j
(listhead.c,)f(and)c(\014tscop)m(y)-8 b(.c)43 b(programs)e(that)h(are)g
(included)c(with)i(this)h(re-)0 668 y(lease)g(for)f(examples)g(of)h
(routines)e(that)i(p)s(erform)e(v)-5 b(arious)40 b(common)h(FITS)f
(\014le)f(op)s(erations.)71 b(T)m(yp)s(e)40 b('mak)m(e)0
781 y(program)p 339 781 28 4 v 33 w(name')30 b(to)h(compile)f(and)f
(link)g(these)i(programs)f(on)g(Unix)f(systems.)0 941
y(4.)40 b(W)-8 b(rite)29 b(a)f(simple)e(program)i(to)g(read)g(or)g
(write)f(a)i(FITS)e(\014le)g(using)g(the)h(Basic)g(In)m(terface)h
(routines)e(describ)s(ed)0 1054 y(in)i(Chapter)h(5.)0
1214 y(5.)79 b(Scan)43 b(through)f(the)h(more)g(sp)s(ecialized)f
(routines)f(that)j(are)f(describ)s(ed)e(in)h(the)h(follo)m(wing)f(c)m
(hapters)h(to)0 1327 y(b)s(ecome)31 b(familiar)d(with)h(the)i
(functionalit)m(y)d(that)j(they)g(pro)m(vide.)0 1660
y Ff(2.5)135 b(Example)46 b(Program)0 1910 y Fj(The)c(follo)m(wing)g
(listing)f(sho)m(ws)h(an)h(example)g(of)g(ho)m(w)g(to)g(use)g(the)g
(CFITSIO)f(routines)f(in)h(a)h(C)g(program.)0 2023 y(Refer)26
b(to)g(the)g(co)s(okb)s(o)s(ok.c)g(program)f(that)i(is)d(included)f
(with)h(the)i(CFITSIO)e(distribution)e(for)j(other)h(example)0
2136 y(routines.)0 2296 y(This)37 b(program)i(creates)h(a)f(new)f(FITS)
g(\014le,)j(con)m(taining)d(a)h(FITS)f(image.)67 b(An)38
b(`EXPOSURE')h(k)m(eyw)m(ord)g(is)0 2409 y(written)26
b(to)h(the)f(header,)i(then)e(the)h(image)f(data)i(are)f(written)e(to)i
(the)g(FITS)f(\014le)f(b)s(efore)i(closing)e(the)i(FITS)f(\014le.)0
2665 y Fe(#include)46 b("fitsio.h")92 b(/*)47 b(required)f(by)h(every)g
(program)e(that)i(uses)g(CFITSIO)93 b(*/)0 2778 y(main\(\))0
2891 y({)191 3004 y(fitsfile)45 b(*fptr;)333 b(/*)47
b(pointer)f(to)h(the)g(FITS)g(file;)f(defined)g(in)h(fitsio.h)f(*/)191
3117 y(int)h(status,)f(ii,)h(jj;)191 3230 y(long)94 b(fpixel)46
b(=)i(1,)f(naxis)f(=)i(2,)f(nelements,)e(exposure;)191
3343 y(long)i(naxes[2])e(=)j({)f(300,)g(200)g(};)142
b(/*)47 b(image)g(is)g(300)g(pixels)f(wide)h(by)g(200)g(rows)f(*/)191
3456 y(short)g(array[200][300];)191 3681 y(status)g(=)h(0;)429
b(/*)48 b(initialize)d(status)h(before)g(calling)g(fitsio)g(routines)f
(*/)191 3794 y(fits_create_file\(&fptr,)c("testfile.fits",)j
(&status\);)140 b(/*)48 b(create)e(new)h(file)f(*/)191
4020 y(/*)h(Create)f(the)h(primary)f(array)g(image)h(\(16-bit)e(short)i
(integer)f(pixels)g(*/)191 4133 y(fits_create_img\(fptr,)c(SHORT_IMG,)j
(naxis,)h(naxes,)g(&status\);)191 4359 y(/*)h(Write)f(a)i(keyword;)d
(must)i(pass)g(the)g(ADDRESS)e(of)j(the)f(value)f(*/)191
4472 y(exposure)f(=)j(1500.;)191 4585 y(fits_update_key\(fptr,)42
b(TLONG,)k("EXPOSURE",)f(&exposure,)430 4698 y("Total)h(Exposure)f
(Time",)h(&status\);)191 4924 y(/*)h(Initialize)e(the)i(values)f(in)h
(the)g(image)g(with)f(a)i(linear)e(ramp)g(function)g(*/)191
5036 y(for)h(\(jj)g(=)g(0;)g(jj)h(<)f(naxes[1];)e(jj++\))382
5149 y(for)i(\(ii)g(=)g(0;)g(ii)g(<)h(naxes[0];)d(ii++\))573
5262 y(array[jj][ii])f(=)j(ii)h(+)f(jj;)191 5488 y(nelements)e(=)j
(naxes[0])d(*)j(naxes[1];)474 b(/*)48 b(number)e(of)h(pixels)f(to)h
(write)g(*/)191 5714 y(/*)g(Write)f(the)h(array)g(of)g(integers)e(to)j
(the)f(image)f(*/)p eop
%%Page: 11 19
11 18 bop 0 299 a Fh(2.5.)72 b(EXAMPLE)31 b(PR)m(OGRAM)2618
b Fj(11)191 555 y Fe(fits_write_img\(fptr,)42 b(TSHORT,)k(fpixel,)g
(nelements,)f(array[0],)g(&status\);)191 781 y(fits_close_file\(fptr,)d
(&status\);)570 b(/*)47 b(close)g(the)g(file)f(*/)191
1007 y(fits_report_error\(stderr)o(,)c(status\);)93 b(/*)47
b(print)g(out)g(any)f(error)h(messages)e(*/)191 1120
y(return\()h(status)g(\);)0 1233 y(})p eop
%%Page: 12 20
12 19 bop 0 299 a Fj(12)1535 b Fh(CHAPTER)30 b(2.)112
b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR)-8 b(Y)p
eop
%%Page: 13 21
13 20 bop 0 1225 a Fg(Chapter)65 b(3)0 1687 y Fm(A)78
b(FITS)f(Primer)0 2180 y Fj(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)e(w)m(as)h(\014rst)g(dev)m(elop)s(ed)f(in)f(the)i(late)h(1970's)
h(as)e(a)g(standard)f(data)i(in)m(terc)m(hange)f(format)g(b)s(et)m(w)m
(een)h(v)-5 b(arious)0 2679 y(astronomical)34 b(observ)-5
b(atories.)51 b(Since)33 b(then)h(FITS)f(has)h(b)s(ecome)g(the)h
(standard)e(data)i(format)f(supp)s(orted)e(b)m(y)0 2791
y(most)f(astronomical)f(data)h(analysis)e(soft)m(w)m(are)j(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,)26 b(suc)m(h)h(as)h(a)f
(1-D)h(sp)s(ectrum,)f(a)h(2-D)g(image,)h(or)e(a)g(3-D)i(data)f(cub)s
(e.)39 b(Fiv)m(e)27 b(di\013eren)m(t)g(primary)e(data)j(t)m(yp)s(es)0
3290 y(are)e(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 Fj(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 Fj(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 Fj(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 Fj(13)p eop
%%Page: 14 22
14 21 bop 0 299 a Fj(14)2398 b Fh(CHAPTER)30 b(3.)112
b(A)30 b(FITS)g(PRIMER)0 555 y Fj(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,)h(ab)s(o)m(v)m
(e)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\))c(so)i(it)e(is)h(b)s(etter)g(to)h(rely)e(on)h
(standard)g(in)m(terface)g(soft)m(w)m(are)i(lik)m(e)d(CFITSIO)g(to)i
(correctly)g(construct)0 1619 y(or)i(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 Fj(BITPIX)39
b({)h(de\014nes)f(the)g(data)h(t)m(yp)s(e)g(of)f(the)h(arra)m(y:)59
b(8,)42 b(16,)h(32,)g(-32,)g(-64)d(for)f(unsigned)f(8{bit)h(b)m(yte,)
227 3284 y(16{bit)h(signed)f(in)m(teger,)j(32{bit)f(signed)d(in)m
(teger,)43 b(32{bit)d(IEEE)f(\015oating)g(p)s(oin)m(t,)i(and)f(64{bit)g
(IEEE)227 3397 y(double)29 b(precision)g(\015oating)h(p)s(oin)m(t,)g
(resp)s(ectiv)m(ely)-8 b(.)136 3585 y Fc(\017)46 b Fj(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 Fj(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 Fj(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 Fj(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 Fj(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 Fj(TF)m(ORMn)31
b({)f(the)h(data)g(t)m(yp)s(e)f(of)h(the)g(column)136
5106 y Fc(\017)46 b Fj(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 Fj(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 23
15 22 bop 0 1225 a Fg(Chapter)65 b(4)0 1687 y Fm(Programming)77
b(Guidelines)0 2216 y Ff(4.1)135 b(CFITSIO)44 b(De\014nitions)0
2466 y Fj(An)m(y)30 b(program)g(that)h(uses)f(the)h(CFITSIO)d(in)m
(terface)j(m)m(ust)f(include)e(the)j(\014tsio.h)e(header)h(\014le)g
(with)f(the)h(state-)0 2579 y(men)m(t)95 2818 y Fe(#include)46
b("fitsio.h")0 3057 y Fj(This)29 b(header)i(\014le)g(con)m(tains)g(the)
g(protot)m(yp)s(es)h(for)f(all)f(the)h(CFITSIO)f(user)g(in)m(terface)i
(routines)e(as)h(w)m(ell)f(as)i(the)0 3170 y(de\014nitions)e(of)i(v)-5
b(arious)31 b(constan)m(ts)i(used)e(in)g(the)i(in)m(terface.)46
b(It)32 b(also)g(de\014nes)f(a)i(C)f(structure)f(of)h(t)m(yp)s(e)h
(`\014ts\014le')0 3283 y(that)j(is)f(used)g(b)m(y)g(CFITSIO)f(to)j
(store)f(the)g(relev)-5 b(an)m(t)36 b(parameters)g(that)g(de\014ne)f
(the)h(format)g(of)g(a)g(particular)0 3396 y(FITS)c(\014le.)47
b(Application)31 b(programs)i(m)m(ust)g(de\014ne)f(a)h(p)s(oin)m(ter)f
(to)h(this)f(structure)h(for)f(eac)m(h)i(FITS)e(\014le)g(that)i(is)0
3508 y(to)i(b)s(e)f(op)s(ened.)56 b(This)34 b(structure)h(is)g
(initialized)d(\(i.e.,)38 b(memory)d(is)g(allo)s(cated)g(for)h(the)g
(structure\))f(when)g(the)0 3621 y(FITS)h(\014le)f(is)h(\014rst)f(op)s
(ened)h(or)g(created)i(with)d(the)h(\014ts)p 1949 3621
28 4 v 33 w(op)s(en)p 2172 3621 V 32 w(\014le)f(or)i(\014ts)p
2596 3621 V 32 w(create)p 2864 3621 V 34 w(\014le)f(routines.)58
b(This)34 b(\014ts\014le)0 3734 y(p)s(oin)m(ter)c(is)h(then)g(passed)g
(as)g(the)h(\014rst)e(argumen)m(t)i(to)g(ev)m(ery)g(other)g(CFITSIO)d
(routine)i(that)h(op)s(erates)g(on)f(the)0 3847 y(FITS)h(\014le.)47
b(Application)31 b(programs)i(m)m(ust)g(not)g(directly)e(read)i(or)g
(write)f(elemen)m(ts)h(in)f(this)g(\014ts\014le)f(structure)0
3960 y(b)s(ecause)f(the)h(de\014nition)d(of)j(the)f(structure)g(ma)m(y)
h(c)m(hange)g(in)f(future)f(v)m(ersions)h(of)g(CFITSIO.)0
4120 y(A)45 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)e(constan)m(ts)j
(are)f(also)f(de\014ned)g(in)f(\014tsio.h)h(for)g(the)h(con)m(v)m
(enience)h(of)f(application)0 4233 y(programmers.)55
b(Use)35 b(of)h(these)f(sym)m(b)s(olic)f(constan)m(ts)i(rather)f(than)g
(the)h(actual)f(n)m(umeric)f(v)-5 b(alue)35 b(will)d(help)i(to)0
4346 y(mak)m(e)d(the)g(source)f(co)s(de)h(more)g(readable)e(and)h
(easier)h(for)f(others)g(to)h(understand.)0 4585 y Fe(String)46
b(Lengths,)g(for)h(use)f(when)h(allocating)e(character)g(arrays:)95
4811 y(#define)h(FLEN_FILENAME)e(1025)j(/*)g(max)g(length)f(of)h(a)h
(filename)857 b(*/)95 4924 y(#define)46 b(FLEN_KEYWORD)140
b(72)95 b(/*)47 b(max)g(length)f(of)h(a)h(keyword)905
b(*/)95 5036 y(#define)46 b(FLEN_CARD)284 b(81)95 b(/*)47
b(max)g(length)f(of)h(a)h(FITS)f(header)f(card)476 b(*/)95
5149 y(#define)46 b(FLEN_VALUE)236 b(71)95 b(/*)47 b(max)g(length)f(of)
h(a)h(keyword)e(value)g(string)285 b(*/)95 5262 y(#define)46
b(FLEN_COMMENT)140 b(73)95 b(/*)47 b(max)g(length)f(of)h(a)h(keyword)e
(comment)g(string)189 b(*/)95 5375 y(#define)46 b(FLEN_ERRMSG)188
b(81)95 b(/*)47 b(max)g(length)f(of)h(a)h(CFITSIO)e(error)g(message)237
b(*/)95 5488 y(#define)46 b(FLEN_STATUS)188 b(31)95 b(/*)47
b(max)g(length)f(of)h(a)h(CFITSIO)e(status)g(text)g(string)h(*/)95
5714 y(Note)g(that)g(FLEN_KEYWORD)d(is)j(longer)f(than)h(the)g(nominal)
f(8-character)f(keyword)1905 5942 y Fj(15)p eop
%%Page: 16 24
16 23 bop 0 299 a Fj(16)1763 b Fh(CHAPTER)29 b(4.)112
b(PR)m(OGRAMMING)32 b(GUIDELINES)95 555 y Fe(name)47
b(length)f(because)g(the)h(HIERARCH)e(convention)g(supports)h(longer)g
(keyword)g(names.)0 781 y(Access)g(modes)g(when)h(opening)f(a)h(FITS)g
(file:)95 1007 y(#define)f(READONLY)94 b(0)95 1120 y(#define)46
b(READWRITE)g(1)0 1346 y(BITPIX)g(data)h(type)f(code)h(values)f(for)h
(FITS)g(images:)95 1571 y(#define)f(BYTE_IMG)284 b(8)96
b(/*)f(8-bit)46 b(unsigned)f(integers)h(*/)95 1684 y(#define)g
(SHORT_IMG)189 b(16)95 b(/*)47 b(16-bit)141 b(signed)46
b(integers)g(*/)95 1797 y(#define)g(LONG_IMG)237 b(32)95
b(/*)47 b(32-bit)141 b(signed)46 b(integers)g(*/)95 1910
y(#define)g(FLOAT_IMG)141 b(-32)95 b(/*)47 b(32-bit)f(single)g
(precision)f(floating)h(point)g(*/)95 2023 y(#define)g(DOUBLE_IMG)93
b(-64)i(/*)47 b(64-bit)f(double)g(precision)f(floating)h(point)g(*/)95
2249 y(The)h(following)f(4)h(data)g(type)f(codes)h(are)g(also)f
(supported)g(by)h(CFITSIO:)95 2362 y(#define)f(LONGLONG_IMG)f(64)i(/*)g
(64-bit)f(long)h(signed)f(integers)f(*/)95 2475 y(#define)h(SBYTE_IMG)
93 b(10)143 b(/*)95 b(8-bit)46 b(signed)g(integers,)g(equivalent)f(to)i
(*/)1241 2588 y(/*)95 b(BITPIX)46 b(=)h(8,)h(BSCALE)e(=)h(1,)g(BZERO)g
(=)g(-128)g(*/)95 2700 y(#define)f(USHORT_IMG)93 b(20)i(/*)47
b(16-bit)f(unsigned)g(integers,)f(equivalent)g(to)i(*/)1241
2813 y(/*)95 b(BITPIX)46 b(=)h(16,)g(BSCALE)f(=)i(1,)f(BZERO)f(=)i
(32768)e(*/)95 2926 y(#define)g(ULONG_IMG)141 b(40)95
b(/*)47 b(32-bit)f(unsigned)g(integers,)f(equivalent)g(to)i(*/)1241
3039 y(/*)95 b(BITPIX)46 b(=)h(32,)g(BSCALE)f(=)i(1,)f(BZERO)f(=)i
(2147483648)d(*/)0 3265 y(Codes)h(for)h(the)g(data)g(type)f(of)i
(binary)e(table)g(columns)g(and/or)g(for)h(the)0 3378
y(data)g(type)f(of)h(variables)f(when)g(reading)g(or)h(writing)f
(keywords)g(or)h(data:)1432 3604 y(DATATYPE)714 b(TFORM)46
b(CODE)95 3717 y(#define)g(TBIT)476 b(1)96 b(/*)1335
b('X')47 b(*/)95 3830 y(#define)f(TBYTE)381 b(11)95 b(/*)47
b(8-bit)f(unsigned)g(byte,)332 b('B')47 b(*/)95 3942
y(#define)f(TLOGICAL)237 b(14)95 b(/*)47 b(logicals)e(\(int)i(for)g
(keywords)236 b(*/)1289 4055 y(/*)95 b(and)46 b(char)h(for)g(table)f
(cols)142 b('L')47 b(*/)95 4168 y(#define)f(TSTRING)285
b(16)95 b(/*)47 b(ASCII)f(string,)666 b('A')47 b(*/)95
4281 y(#define)f(TSHORT)333 b(21)95 b(/*)47 b(signed)f(short,)666
b('I')47 b(*/)95 4394 y(#define)f(TINT32BIT)189 b(41)95
b(/*)47 b(signed)f(32-bit)g(int,)428 b('J')47 b(*/)95
4507 y(#define)f(TLONG)381 b(41)95 b(/*)47 b(signed)f(long,)905
b(*/)95 4620 y(#define)46 b(TFLOAT)333 b(42)95 b(/*)47
b(single)f(precision)f(float,)189 b('E')47 b(*/)95 4733
y(#define)f(TDOUBLE)285 b(82)95 b(/*)47 b(double)f(precision)f(float,)
189 b('D')47 b(*/)95 4846 y(#define)f(TCOMPLEX)237 b(83)95
b(/*)47 b(complex)f(\(pair)g(of)h(floats\))141 b('C')47
b(*/)95 4959 y(#define)f(TDBLCOMPLEX)f(163)95 b(/*)47
b(double)f(complex)g(\(2)h(doubles\))e('M')i(*/)95 5185
y(The)g(following)f(data)g(type)h(codes)f(are)h(also)g(supported)e(by)i
(CFITSIO:)95 5297 y(#define)f(TINT)429 b(31)95 b(/*)47
b(int)1335 b(*/)95 5410 y(#define)46 b(TSBYTE)333 b(12)95
b(/*)47 b(8-bit)f(signed)g(byte,)428 b('S')47 b(*/)95
5523 y(#define)f(TUINT)381 b(30)95 b(/*)47 b(unsigned)e(int)715
b('V')47 b(*/)95 5636 y(#define)f(TUSHORT)285 b(20)95
b(/*)47 b(unsigned)e(short)619 b('U')95 b(*/)p eop
%%Page: 17 25
17 24 bop 0 299 a Fh(4.2.)72 b(CURRENT)30 b(HEADER)h(D)m(A)-8
b(T)g(A)32 b(UNIT)e(\(CHDU\))1786 b Fj(17)95 555 y Fe(#define)46
b(TULONG)333 b(40)95 b(/*)47 b(unsigned)e(long)858 b(*/)95
668 y(#define)46 b(TLONGLONG)189 b(81)95 b(/*)47 b(64-bit)f(long)h
(signed)f(integer)f('K')i(*/)0 894 y(HDU)g(type)g(code)f(values)g
(\(value)g(returned)g(when)h(moving)f(to)h(new)g(HDU\):)95
1120 y(#define)f(IMAGE_HDU)93 b(0)i(/*)48 b(Primary)d(Array)i(or)g
(IMAGE)f(HDU)h(*/)95 1233 y(#define)f(ASCII_TBL)93 b(1)i(/*)48
b(ASCII)94 b(table)46 b(HDU)h(*/)95 1346 y(#define)f(BINARY_TBL)f(2)95
b(/*)48 b(Binary)e(table)g(HDU)h(*/)95 1458 y(#define)f(ANY_HDU)142
b(-1)94 b(/*)48 b(matches)d(any)i(type)g(of)g(HDU)g(*/)0
1684 y(Column)f(name)h(and)g(string)f(matching)f(case-sensitivity:)95
1910 y(#define)h(CASESEN)142 b(1)g(/*)48 b(do)f(case-sensitive)d
(string)i(match)g(*/)95 2023 y(#define)g(CASEINSEN)g(0)142
b(/*)48 b(do)f(case-insensitive)c(string)j(match)h(*/)0
2249 y(Logical)f(states)g(\(if)h(TRUE)f(and)h(FALSE)g(are)g(not)g
(already)e(defined\):)95 2475 y(#define)h(TRUE)h(1)95
2588 y(#define)f(FALSE)h(0)0 2813 y(Values)f(to)h(represent)f
(undefined)f(floating)g(point)i(numbers:)95 3039 y(#define)f
(FLOATNULLVALUE)e(-9.11912E-36F)95 3152 y(#define)i(DOUBLENULLVALUE)e
(-9.1191291391491E-36)0 3378 y(Image)i(compression)f(algorithm)g
(definitions)95 3604 y(#define)h(RICE_1)285 b(11)95 3717
y(#define)46 b(GZIP_1)285 b(21)95 3830 y(#define)46 b(PLIO_1)285
b(31)0 4306 y Ff(4.2)135 b(Curren)l(t)46 b(Header)f(Data)h(Unit)g
(\(CHDU\))0 4585 y Fj(The)37 b(concept)h(of)g(the)f(Curren)m(t)g
(Header)g(and)g(Data)i(Unit,)g(or)e(CHDU,)h(is)e(fundamen)m(tal)h(to)h
(the)f(use)g(of)h(the)0 4698 y(CFITSIO)31 b(library)-8
b(.)44 b(A)32 b(simple)f(FITS)g(image)i(ma)m(y)g(only)e(con)m(tain)i(a)
f(single)f(Header)i(and)f(Data)h(unit)e(\(HDU\),)0 4811
y(but)39 b(in)f(general)i(FITS)f(\014les)g(can)h(con)m(tain)g(m)m
(ultiple)e(Header)i(Data)h(Units)e(\(also)h(kno)m(wn)f(as)h
(`extensions'\),)0 4924 y(concatenated)c(one)f(after)f(the)h(other)f
(in)f(the)h(\014le.)52 b(The)33 b(user)h(can)g(sp)s(ecify)f(whic)m(h)g
(HDU)i(should)d(b)s(e)h(initially)0 5036 y(op)s(ened)j(at)i(run)d(time)
i(b)m(y)g(giving)f(the)h(HDU)h(name)f(or)g(n)m(um)m(b)s(er)f(after)h
(the)g(ro)s(ot)h(\014le)e(name.)60 b(F)-8 b(or)38 b(example,)0
5149 y('m)m(y\014le.\014ts[4]')h(op)s(ens)e(the)h(5th)h(HDU)g(in)e(the)
h(\014le)f(\(note)i(that)g(the)f(n)m(um)m(b)s(ering)e(starts)j(with)e
(0\),)k(and)c('m)m(y-)0 5262 y(\014le.\014ts[EVENTS])j(op)s(ens)g(the)h
(HDU)h(with)d(the)i(name)g('EVENTS')g(\(as)g(de\014ned)f(b)m(y)h(the)g
(EXTNAME)g(or)0 5375 y(HDUNAME)35 b(k)m(eyw)m(ords\).)50
b(If)33 b(no)g(HDU)h(is)e(sp)s(eci\014ed)g(then)h(CFITSIO)e(op)s(ens)i
(the)g(\014rst)g(HDU)h(\(the)g(primary)0 5488 y(arra)m(y\))24
b(b)m(y)e(default.)38 b(The)22 b(CFITSIO)f(routines)h(whic)m(h)g(read)g
(and)g(write)h(data)g(only)f(op)s(erate)h(within)e(the)i(op)s(ened)0
5601 y(HDU,)32 b(Other)e(CFITSIO)f(routines)h(are)h(pro)m(vided)e(to)j
(mo)m(v)m(e)g(to)f(and)f(op)s(en)g(an)m(y)h(other)g(existing)f(HDU)h
(within)0 5714 y(the)g(FITS)e(\014le)h(or)g(to)h(app)s(end)e(or)h
(insert)f(new)h(HDUs)h(in)e(the)i(FITS)f(\014le.)p eop
%%Page: 18 26
18 25 bop 0 299 a Fj(18)1763 b Fh(CHAPTER)29 b(4.)112
b(PR)m(OGRAMMING)32 b(GUIDELINES)0 555 y Ff(4.3)135 b(F)-11
b(unction)44 b(Names)i(and)f(V)-11 b(ariable)46 b(Datat)l(yp)t(es)0
806 y Fj(Most)33 b(of)f(the)g(CFITSIO)f(routines)g(ha)m(v)m(e)i(b)s
(oth)e(a)i(short)e(name)h(as)h(w)m(ell)e(as)h(a)g(longer)g(descriptiv)m
(e)f(name.)45 b(The)0 919 y(short)32 b(name)g(is)f(only)g(5)i(or)f(6)g
(c)m(haracters)h(long)f(and)g(is)f(similar)e(to)k(the)f(subroutine)e
(name)i(in)f(the)h(F)-8 b(ortran-77)0 1032 y(v)m(ersion)37
b(of)h(FITSIO.)f(The)h(longer)f(name)h(is)f(more)h(descriptiv)m(e)f
(and)g(it)g(is)g(recommended)h(that)g(it)g(b)s(e)f(used)0
1145 y(instead)30 b(of)g(the)h(short)f(name)g(to)h(more)g(clearly)f(do)
s(cumen)m(t)g(the)g(source)h(co)s(de.)0 1305 y(Man)m(y)c(of)f(the)g
(CFITSIO)f(routines)g(come)i(in)d(families)g(whic)m(h)h(di\013er)g
(only)g(in)g(the)h(data)h(t)m(yp)s(e)f(of)g(the)g(asso)s(ciated)0
1418 y(parameter\(s\).)45 b(The)31 b(data)h(t)m(yp)s(e)g(of)g(these)g
(routines)e(is)h(indicated)f(b)m(y)h(the)h(su\016x)e(of)i(the)g
(routine)e(name.)44 b(The)0 1530 y(short)27 b(routine)g(names)h(ha)m(v)
m(e)h(a)f(1)g(or)f(2)h(c)m(haracter)i(su\016x)c(\(e.g.,)31
b('j')c(in)g('\013pkyj'\))h(while)d(the)j(long)f(routine)g(names)0
1643 y(ha)m(v)m(e)32 b(a)e(4)h(c)m(haracter)h(or)e(longer)g(su\016x)g
(as)g(sho)m(wn)g(in)f(the)i(follo)m(wing)e(table:)191
1905 y Fe(Long)285 b(Short)94 b(Data)191 2018 y(Names)237
b(Names)94 b(Type)191 2131 y(-----)237 b(-----)94 b(----)191
2244 y(_bit)381 b(x)190 b(bit)191 2357 y(_byt)381 b(b)190
b(unsigned)46 b(byte)191 2469 y(_sbyt)333 b(sb)142 b(signed)46
b(byte)191 2582 y(_sht)381 b(i)190 b(short)47 b(integer)191
2695 y(_lng)381 b(j)190 b(long)47 b(integer)191 2808
y(_lnglng)237 b(jj)142 b(8-byte)46 b(LONGLONG)g(integer)g(\(see)g(note)
h(below\))191 2921 y(_usht)333 b(ui)142 b(unsigned)46
b(short)g(integer)191 3034 y(_ulng)333 b(uj)142 b(unsigned)46
b(long)g(integer)191 3147 y(_uint)333 b(uk)142 b(unsigned)46
b(int)h(integer)191 3260 y(_int)381 b(k)190 b(int)47
b(integer)191 3373 y(_flt)381 b(e)190 b(real)47 b(exponential)e
(floating)g(point)i(\(float\))191 3486 y(_fixflt)237
b(f)190 b(real)47 b(fixed-decimal)d(format)i(floating)g(point)g
(\(float\))191 3599 y(_dbl)381 b(d)190 b(double)46 b(precision)g(real)g
(floating-point)e(\(double\))191 3711 y(_fixdbl)237 b(g)190
b(double)46 b(precision)g(fixed-format)e(floating)i(point)g(\(double\))
191 3824 y(_cmp)381 b(c)190 b(complex)46 b(reals)g(\(pairs)h(of)g
(float)f(values\))191 3937 y(_fixcmp)237 b(fc)142 b(complex)46
b(reals,)g(fixed-format)f(floating)g(point)191 4050 y(_dblcmp)237
b(m)190 b(double)46 b(precision)g(complex)f(\(pairs)i(of)g(double)f
(values\))191 4163 y(_fixdblcmp)93 b(fm)142 b(double)46
b(precision)g(complex,)f(fixed-format)g(floating)g(point)191
4276 y(_log)381 b(l)190 b(logical)46 b(\(int\))191 4389
y(_str)381 b(s)190 b(character)46 b(string)0 4650 y Fj(The)32
b(logical)g(data)i(t)m(yp)s(e)f(corresp)s(onds)e(to)j(`in)m(t')e(for)h
(logical)f(k)m(eyw)m(ord)h(v)-5 b(alues,)33 b(and)f(`b)m(yte')i(for)f
(logical)f(binary)0 4763 y(table)39 b(columns.)66 b(In)39
b(other)g(w)m(ords,)i(the)f(v)-5 b(alue)38 b(when)h(writing)e(a)j
(logical)e(k)m(eyw)m(ord)i(m)m(ust)f(b)s(e)g(stored)g(in)f(an)0
4876 y(`in)m(t')g(v)-5 b(ariable,)38 b(and)g(m)m(ust)f(b)s(e)g(stored)h
(in)f(a)h(`c)m(har')h(arra)m(y)f(when)f(reading)g(or)g(writing)f(to)j
(`L')f(columns)e(in)h(a)0 4989 y(binary)e(table.)59 b(Inplicit)34
b(data)j(t)m(yp)s(e)f(con)m(v)m(ersion)h(is)f(not)h(supp)s(orted)d(for)
i(logical)g(table)h(columns,)g(but)f(is)f(for)0 5102
y(k)m(eyw)m(ords,)30 b(so)f(a)h(logical)e(k)m(eyw)m(ord)i(ma)m(y)f(b)s
(e)g(read)f(and)h(cast)h(to)g(an)m(y)f(n)m(umerical)f(data)h(t)m(yp)s
(e;)h(a)g(returned)d(v)-5 b(alue)0 5215 y(=)30 b(0)h(indicates)e
(false,)h(and)g(an)m(y)h(other)f(v)-5 b(alue)30 b(=)g(true.)0
5375 y(The)37 b(`in)m(t')h(data)g(t)m(yp)s(e)g(ma)m(y)g(b)s(e)f(2)h(b)m
(ytes)h(long)e(on)g(some)h(IBM)h(PC)e(compatible)g(systems)g(and)g(is)g
(usually)f(4)0 5488 y(b)m(ytes)27 b(long)f(on)h(most)g(other)g
(systems.)39 b(Some)27 b(64-bit)g(mac)m(hines,)g(ho)m(w)m(ev)m(er,)i
(lik)m(e)d(the)h(Dec)h(Alpha/OSF,)e(de\014ne)0 5601 y(the)j(`short',)h
(`in)m(t',)g(and)e(`long')h(in)m(teger)h(data)g(t)m(yp)s(es)f(to)h(b)s
(e)e(2,)i(4,)g(and)f(8)g(b)m(ytes)h(long,)f(resp)s(ectiv)m(ely)-8
b(.)40 b(The)29 b(FITS)0 5714 y(standard)j(only)g(supp)s(orts)g(2)h
(and)g(4)g(b)m(yte)h(in)m(teger)f(data)h(t)m(yp)s(es,)g(so)f(CFITSIO)f
(in)m(ternally)f(con)m(v)m(erts)j(b)s(et)m(w)m(een)p
eop
%%Page: 19 27
19 26 bop 0 299 a Fh(4.4.)72 b(SUPPOR)-8 b(T)30 b(F)m(OR)g(UNSIGNED)h
(INTEGERS)f(AND)h(SIGNED)f(BYTES)942 b Fj(19)0 555 y(4)31
b(and)f(8)g(b)m(ytes)h(when)f(reading)f(or)h(writing)f(`long')h(in)m
(tegers)h(on)f(Alpha/OSF)f(systems.)0 715 y(The)e(8-b)m(yte)i
('LONGLONG')f(in)m(teger)g(data)g(t)m(yp)s(e)g(is)e(supp)s(orted)g(on)i
(most)f(platforms.)39 b(CFITSIO)26 b(de\014nes)h(the)0
828 y(LONGLONG)i(data)g(t)m(yp)s(e)g(to)h(b)s(e)e(equiv)-5
b(alen)m(t)29 b(to)g('long)g(long')g(on)f(most)i(Unix)d(platforms)h
(and)g(on)h(Mac)h(OS-X.)0 941 y(Since)36 b(most)i(Windo)m(ws)e
(compilers)g(don't)h(supp)s(ort)e(the)j('long)f(long')g(data)g(t)m(yp)s
(e,)j(LONGLONG)d(is)f(de\014ned)0 1054 y(instead)e(to)h(b)s(e)f(equiv)
-5 b(alen)m(t)33 b(to)i(')p 1141 1054 28 4 v 1175 1054
V 66 w(in)m(t64'.)54 b(If)34 b(the)g(compiler)f(do)s(es)h(not)h(supp)s
(ort)d(a)j(8-b)m(yte)h(in)m(teger)f(data)g(t)m(yp)s(e)0
1167 y(then)d(LONGLONG)h(is)f(de\014ned)f(to)i(b)s(e)f(equiv)-5
b(alen)m(t)33 b(to)g('long'.)48 b(Note)34 b(that)f(the)g(C)f(format)h
(sp)s(eci\014er)e(to)i(prin)m(t)0 1280 y(out)38 b(these)g(long)g(in)m
(teger)g(v)-5 b(alues)37 b(is)g("\045lld")g(on)h(most)g(unix)e(mac)m
(hines,)k(except)e(on)g(OSF)g(platforms)e(where)0 1393
y("\045ld")d(m)m(ust)g(b)s(e)f(used.)49 b(On)32 b(Windo)m(ws)g
(platform)h(that)g(ha)m(v)m(e)i(the)p 2385 1393 V 2417
1393 V 99 w(in)m(t64)e(data)h(t)m(yp)s(e,)h(the)e(format)h(sp)s
(eci\014er)0 1506 y(is)29 b("\045INT64d".)0 1666 y(When)23
b(dealing)f(with)g(the)i(FITS)f(b)m(yte)h(data)g(t)m(yp)s(e)f(it)g(is)g
(imp)s(ortan)m(t)f(to)i(remem)m(b)s(er)f(that)h(the)g(ra)m(w)f(v)-5
b(alues)23 b(\(b)s(efore)0 1779 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
1892 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 2005 y(ranging)33 b(from)h(0)g(to)h(255.)53
b(Some)34 b(C)g(compilers)f(de\014ne)g(a)h('c)m(har')h(v)-5
b(ariable)33 b(as)i(signed,)f(so)g(it)g(is)f(imp)s(ortan)m(t)g(to)0
2118 y(explicitly)28 b(declare)i(a)h(n)m(umeric)e(c)m(har)i(v)-5
b(ariable)29 b(as)i('unsigned)d(c)m(har')j(to)g(a)m(v)m(oid)g(an)m(y)g
(am)m(biguit)m(y)0 2278 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 2391 y(as)33
b(though)f(it)g(w)m(ere)h(a)g(`B')g(\(b)m(yte\))h(column.)46
b(F)-8 b(or)33 b(example)f(a)h(`11X')h(data)f(t)m(yp)s(e)g(column)e
(can)i(b)s(e)f(in)m(terpreted)0 2503 y(the)c(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
2616 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 2777 y(The)36 b(complex)h(and)f(double)g(precision)f(complex)i
(data)h(t)m(yp)s(es)f(are)g(not)g(directly)f(supp)s(orted)f(in)h(ANSI)g
(C)h(so)0 2889 y(these)g(data)g(t)m(yp)s(es)f(should)e(b)s(e)i(in)m
(terpreted)g(as)g(pairs)f(of)i(\015oat)g(or)f(double)f(v)-5
b(alues,)37 b(resp)s(ectiv)m(ely)-8 b(,)38 b(where)e(the)0
3002 y(\014rst)30 b(v)-5 b(alue)29 b(in)h(eac)m(h)h(pair)e(is)h(the)g
(real)g(part,)h(and)e(the)i(second)f(is)g(the)g(imaginary)f(part.)0
3470 y Ff(4.4)135 b(Supp)t(ort)44 b(for)h(Unsigned)h(In)l(tegers)g(and)
f(Signed)g(Bytes)0 3747 y Fj(Although)32 b(FITS)g(do)s(es)g(not)h
(directly)f(supp)s(ort)f(unsigned)f(in)m(tegers)j(as)g(one)g(of)g(its)g
(fundamen)m(tal)e(data)j(t)m(yp)s(es,)0 3860 y(FITS)27
b(can)h(still)e(b)s(e)h(used)g(to)i(e\016cien)m(tly)f(store)g(unsigned)
e(in)m(teger)i(data)h(v)-5 b(alues)27 b(in)g(images)h(and)f(binary)f
(tables.)0 3973 y(The)42 b(con)m(v)m(en)m(tion)i(used)e(in)f(FITS)h
(\014les)g(is)f(to)j(store)f(the)g(unsigned)d(in)m(tegers)j(as)g
(signed)f(in)m(tegers)h(with)e(an)0 4086 y(asso)s(ciated)33
b(o\013set)g(\(sp)s(eci\014ed)e(b)m(y)h(the)g(BZER)m(O)g(or)g(TZER)m
(On)f(k)m(eyw)m(ord\).)47 b(F)-8 b(or)33 b(example,)f(to)h(store)g
(unsigned)0 4199 y(16-bit)f(in)m(teger)g(v)-5 b(alues)31
b(in)f(a)i(FITS)f(image)h(the)f(image)h(w)m(ould)f(b)s(e)f(de\014ned)h
(as)h(a)g(signed)e(16-bit)i(in)m(teger)g(\(with)0 4312
y(BITPIX)d(k)m(eyw)m(ord)g(=)g(SHOR)-8 b(T)p 1132 4312
V 32 w(IMG)30 b(=)e(16\))j(with)c(the)j(k)m(eyw)m(ords)f(BSCALE)f(=)h
(1.0)h(and)f(BZER)m(O)g(=)f(32768.)0 4425 y(Th)m(us)34
b(the)h(unsigned)e(v)-5 b(alues)34 b(of)h(0,)i(32768,)h(and)d(65535,)j
(for)d(example,)h(are)f(ph)m(ysically)e(stored)i(in)f(the)h(FITS)0
4538 y(image)k(as)f(-32768,)43 b(0,)e(and)d(32767,)k(resp)s(ectiv)m
(ely;)g(CFITSIO)37 b(automatically)h(adds)f(the)i(BZER)m(O)f(o\013set)h
(to)0 4650 y(these)g(v)-5 b(alues)38 b(when)g(they)g(are)h(read.)65
b(Similarly)-8 b(,)38 b(in)f(the)i(case)h(of)e(unsigned)f(32-bit)i(in)m
(tegers)f(the)h(BITPIX)0 4763 y(k)m(eyw)m(ord)c(w)m(ould)e(b)s(e)h
(equal)g(to)i(LONG)p 1392 4763 V 32 w(IMG)f(=)g(32)g(and)f(BZER)m(O)g
(w)m(ould)g(b)s(e)g(equal)g(to)h(2147483648)k(\(i.e.)54
b(2)0 4876 y(raised)29 b(to)i(the)g(31st)g(p)s(o)m(w)m(er\).)0
5036 y(The)j(CFITSIO)g(in)m(terface)h(routines)f(will)e(e\016cien)m
(tly)j(and)f(transparen)m(tly)h(apply)e(the)i(appropriate)f(o\013set)i
(in)0 5149 y(these)29 b(cases)h(so)f(in)f(general)h(application)e
(programs)i(do)g(not)g(need)f(to)i(b)s(e)e(concerned)h(with)f(ho)m(w)h
(the)g(unsigned)0 5262 y(v)-5 b(alues)43 b(are)i(actually)f(stored)g
(in)e(the)j(FITS)e(\014le.)81 b(As)44 b(a)g(con)m(v)m(enience)i(for)d
(users,)k(CFITSIO)c(has)h(sev)m(eral)0 5375 y(prede\014ned)19
b(constan)m(ts)j(for)f(the)g(v)-5 b(alue)20 b(of)h(BITPIX)g(\(USHOR)-8
b(T)p 2189 5375 V 33 w(IMG,)21 b(ULONG)p 2790 5375 V
33 w(IMG\))h(and)e(for)h(the)g(TF)m(ORMn)0 5488 y(v)-5
b(alue)35 b(in)f(the)i(case)g(of)g(binary)e(tables)h(\(`U')i(and)e
(`V'\))h(whic)m(h)e(programmers)h(can)h(use)f(when)g(creating)h(FITS)0
5601 y(\014les)i(con)m(taining)g(unsigned)f(in)m(teger)i(v)-5
b(alues.)65 b(The)39 b(follo)m(wing)e(co)s(de)i(fragmen)m(t)g
(illustrates)e(ho)m(w)i(to)h(write)e(a)0 5714 y(FITS)30
b(1-D)h(primary)e(arra)m(y)h(of)h(unsigned)d(16-bit)j(in)m(tegers:)p
eop
%%Page: 20 28
20 27 bop 0 299 a Fj(20)1763 b Fh(CHAPTER)29 b(4.)112
b(PR)m(OGRAMMING)32 b(GUIDELINES)286 555 y Fe(unsigned)46
b(short)g(uarray[100];)286 668 y(int)h(naxis,)f(status;)286
781 y(long)h(naxes[10],)e(group,)h(firstelem,)f(nelements;)334
894 y(...)286 1007 y(status)h(=)i(0;)286 1120 y(naxis)f(=)g(1;)286
1233 y(naxes[0])f(=)h(100;)286 1346 y(fits_create_img\(fptr,)42
b(USHORT_IMG,)j(naxis,)h(naxes,)g(&status\);)286 1571
y(firstelem)g(=)h(1;)286 1684 y(nelements)f(=)h(100;)286
1797 y(fits_write_img\(fptr,)c(TUSHORT,)i(firstelem,)g(nelements,)1241
1910 y(uarray,)h(&status\);)334 2023 y(...)0 2264 y Fj(In)40
b(the)h(ab)s(o)m(v)m(e)i(example,)g(the)f(2nd)e(parameter)h(in)f
(\014ts)p 1998 2264 28 4 v 33 w(create)p 2267 2264 V
34 w(img)g(tells)g(CFITSIO)g(to)i(write)e(the)h(header)0
2377 y(k)m(eyw)m(ords)34 b(appropriate)f(for)g(an)g(arra)m(y)i(of)e
(16-bit)h(unsigned)e(in)m(tegers)i(\(i.e.,)h(BITPIX)e(=)g(16)i(and)e
(BZER)m(O)g(=)0 2490 y(32768\).)41 b(Then)23 b(the)h(\014ts)p
834 2490 V 32 w(write)p 1069 2490 V 32 w(img)g(routine)f(writes)f(the)j
(arra)m(y)f(of)g(unsigned)e(short)h(in)m(tegers)h(\(uarra)m(y\))h(in)m
(to)f(the)0 2603 y(primary)f(arra)m(y)i(of)g(the)g(FITS)f(\014le.)38
b(Similarly)-8 b(,)23 b(a)i(32-bit)h(unsigned)c(in)m(teger)j(image)h
(ma)m(y)f(b)s(e)f(created)i(b)m(y)f(setting)0 2716 y(the)34
b(second)f(parameter)h(in)e(\014ts)p 1130 2716 V 33 w(create)p
1399 2716 V 34 w(img)h(equal)g(to)h(`ULONG)p 2330 2716
V 33 w(IMG')g(and)f(b)m(y)h(calling)d(the)j(\014ts)p
3491 2716 V 33 w(write)p 3727 2716 V 32 w(img)0 2829
y(routine)i(with)f(the)i(second)f(parameter)h(=)f(TULONG)h(to)g(write)f
(the)g(arra)m(y)h(of)g(unsigned)e(long)h(image)h(pixel)0
2942 y(v)-5 b(alues.)0 3102 y(An)27 b(analogous)g(set)g(of)g(routines)f
(are)h(a)m(v)-5 b(ailable)27 b(for)f(reading)g(or)h(writing)e(unsigned)
g(in)m(teger)i(v)-5 b(alues)27 b(and)f(signed)0 3215
y(b)m(yte)i(v)-5 b(alues)27 b(in)g(a)h(FITS)f(binary)f(table)i
(extension.)39 b(When)28 b(sp)s(ecifying)d(the)j(TF)m(ORMn)g(k)m(eyw)m
(ord)g(v)-5 b(alue)27 b(whic)m(h)0 3328 y(de\014nes)36
b(the)h(format)g(of)g(a)h(column,)f(CFITSIO)e(recognized)j(3)f
(additional)e(data)i(t)m(yp)s(e)g(co)s(des)g(b)s(esides)e(those)0
3440 y(already)29 b(de\014ned)g(in)f(the)i(FITS)f(standard:)40
b(`U')30 b(meaning)f(a)h(16-bit)g(unsigned)e(in)m(teger)i(column,)f
(`V')h(for)g(a)g(32-)0 3553 y(bit)25 b(unsigned)e(in)m(teger)j(column,)
g(and)f('S')g(for)g(a)h(signed)f(b)m(yte)h(column.)38
b(These)25 b(non-standard)g(data)h(t)m(yp)s(e)g(co)s(des)0
3666 y(are)36 b(not)g(actually)g(written)f(in)m(to)g(the)h(FITS)g
(\014le)e(but)i(instead)f(are)h(just)f(used)g(in)m(ternally)f(within)f
(CFITSIO.)0 3779 y(The)d(follo)m(wing)f(co)s(de)h(fragmen)m(t)h
(illustrates)e(ho)m(w)h(to)h(use)f(these)h(features:)286
4020 y Fe(unsigned)46 b(short)g(uarray[100];)286 4133
y(unsigned)g(int)95 b(varray[100];)286 4359 y(int)47
b(colnum,)f(tfields,)g(status;)286 4472 y(long)h(nrows,)f(firstrow,)f
(firstelem,)g(nelements,)g(pcount;)286 4698 y(char)i(extname[])e(=)j
("Test_table";)521 b(/*)47 b(extension)f(name)g(*/)286
4924 y(/*)i(define)e(the)h(name,)f(data)h(type,)f(and)h(physical)e
(units)i(for)g(the)g(2)g(columns)f(*/)286 5036 y(char)h(*ttype[])f(=)h
({)g("Col_1",)f("Col_2",)g("Col_3")f(};)286 5149 y(char)i(*tform[])f(=)
h({)g("1U",)285 b("1V",)190 b("1S"};)94 b(/*)47 b(special)f(CFITSIO)g
(codes)g(*/)286 5262 y(char)h(*tunit[])f(=)h({)g(")h(",)381
b(")48 b(",)190 b(")47 b(")h(};)334 5375 y(...)525 5601
y(/*)f(write)g(the)f(header)h(keywords)e(*/)286 5714
y(status)94 b(=)48 b(0;)p eop
%%Page: 21 29
21 28 bop 0 299 a Fh(4.5.)72 b(DEALING)31 b(WITH)f(CHARA)m(CTER)g
(STRINGS)1816 b Fj(21)286 555 y Fe(nrows)142 b(=)48 b(1;)286
668 y(tfields)e(=)i(3)286 781 y(pcount)94 b(=)48 b(0;)286
894 y(fits_create_tbl\(fptr,)42 b(BINARY_TBL,)j(nrows,)h(tfields,)g
(ttype,)g(tform,)764 1007 y(tunit,)g(extname,)f(&status\);)525
1233 y(/*)i(write)g(the)f(unsigned)g(shorts)g(to)h(the)g(1st)g(column)f
(*/)286 1346 y(colnum)190 b(=)47 b(1;)286 1458 y(firstrow)94
b(=)47 b(1;)286 1571 y(firstelem)f(=)h(1;)286 1684 y(nelements)f(=)h
(100;)286 1797 y(fits_write_col\(fptr,)c(TUSHORT,)i(colnum,)h
(firstrow,)f(firstelem,)668 1910 y(nelements,)g(uarray,)h(&status\);)
525 2136 y(/*)h(now)g(write)f(the)h(unsigned)f(longs)g(to)h(the)g(2nd)g
(column)f(*/)286 2249 y(colnum)190 b(=)47 b(2;)286 2362
y(fits_write_col\(fptr,)c(TUINT,)j(colnum,)g(firstrow,)f(firstelem,)668
2475 y(nelements,)g(varray,)h(&status\);)334 2588 y(...)0
2865 y Fj(Note)22 b(that)g(the)f(non-standard)f(TF)m(ORM)h(v)-5
b(alues)20 b(for)h(the)g(3)g(columns,)h(`U')f(and)g(`V',)h(tell)e
(CFITSIO)f(to)j(write)e(the)0 2978 y(k)m(eyw)m(ords)27
b(appropriate)e(for)h(unsigned)e(16-bit)j(and)e(unsigned)g(32-bit)h(in)
m(tegers,)i(resp)s(ectiv)m(ely)d(\(i.e.,)j(TF)m(ORMn)0
3091 y(=)39 b('1I')i(and)e(TZER)m(On)f(=)h(32678)j(for)e(unsigned)d
(16-bit)j(in)m(tegers,)j(and)c(TF)m(ORMn)h(=)f('1J')h(and)f(TZER)m(On)0
3204 y(=)c(2147483648)40 b(for)35 b(unsigned)e(32-bit)i(in)m(tegers\).)
56 b(The)35 b('S')g(TF)m(ORMn)g(v)-5 b(alue)35 b(tells)g(CFITSIO)e(to)j
(write)f(the)0 3317 y(k)m(eyw)m(ords)30 b(appropriate)f(for)h(a)g
(signed)f(8-bit)h(b)m(yte)g(column)f(with)f(TF)m(ORMn)i(=)g('1B')h(and)
e(TZER)m(On)g(=)g(-128.)0 3430 y(The)h(calls)f(to)j(\014ts)p
628 3430 28 4 v 32 w(write)p 863 3430 V 32 w(col)e(then)g(write)g(the)h
(arra)m(ys)f(of)h(unsigned)d(in)m(teger)j(v)-5 b(alues)30
b(to)h(the)f(columns.)0 3784 y Ff(4.5)135 b(Dealing)47
b(with)e(Character)h(Strings)0 4039 y Fj(The)36 b(c)m(haracter)j
(string)c(v)-5 b(alues)37 b(in)e(a)i(FITS)f(header)h(or)g(in)e(an)i
(ASCI)s(I)e(column)h(in)f(a)j(FITS)e(table)g(extension)0
4152 y(are)j(generally)g(padded)f(out)h(with)f(non-signi\014can)m(t)g
(space)h(c)m(haracters)i(\(ASCI)s(I)d(32\))i(to)g(\014ll)d(up)h(the)h
(header)0 4264 y(record)33 b(or)h(the)f(column)g(width.)48
b(When)33 b(reading)g(a)h(FITS)e(string)h(v)-5 b(alue,)34
b(the)f(CFITSIO)f(routines)h(will)d(strip)0 4377 y(o\013)38
b(these)f(non-signi\014can)m(t)f(trailing)f(spaces)i(and)g(will)d
(return)i(a)i(n)m(ull-terminated)d(string)h(v)-5 b(alue)36
b(con)m(taining)0 4490 y(only)d(the)h(signi\014can)m(t)e(c)m
(haracters.)52 b(Leading)33 b(spaces)h(in)f(a)h(FITS)f(string)f(are)i
(considered)f(signi\014can)m(t.)50 b(If)33 b(the)0 4603
y(string)h(con)m(tains)h(all)f(blanks,)h(then)f(CFITSIO)g(will)e
(return)i(a)h(single)e(blank)h(c)m(haracter,)k(i.e,)e(the)f(\014rst)f
(blank)0 4716 y(is)29 b(considered)f(to)j(b)s(e)e(signi\014can)m(t,)g
(since)g(it)g(distinguishes)e(the)j(string)e(from)i(a)g(n)m(ull)d(or)j
(unde\014ned)e(string,)h(but)0 4829 y(the)i(remaining)d(trailing)g
(spaces)j(are)g(not)g(signi\014can)m(t.)0 4989 y(Similarly)-8
b(,)37 b(when)g(writing)f(string)h(v)-5 b(alues)37 b(to)i(a)g(FITS)e
(\014le)g(the)h(CFITSIO)f(routines)g(exp)s(ect)h(to)h(get)g(a)g(n)m
(ull-)0 5102 y(terminated)32 b(string)g(as)h(input;)f(CFITSIO)f(will)f
(pad)i(the)h(string)f(with)f(blanks)g(if)h(necessary)h(when)f(writing)e
(it)0 5215 y(to)h(the)g(FITS)e(\014le.)0 5375 y(When)j(calling)f
(CFITSIO)g(routines)h(that)h(return)e(a)i(c)m(haracter)h(string)e(it)g
(is)f(vital)h(that)h(the)g(size)f(of)h(the)g(c)m(har)0
5488 y(arra)m(y)38 b(b)s(e)g(large)g(enough)f(to)i(hold)d(the)i(en)m
(tire)g(string)f(of)h(c)m(haracters,)k(otherwise)37 b(CFITSIO)f(will)f
(o)m(v)m(erwrite)0 5601 y(whatev)m(er)g(memory)e(lo)s(cations)g(follo)m
(w)g(the)h(c)m(har)h(arra)m(y)-8 b(,)35 b(p)s(ossibly)c(causing)i(the)h
(program)g(to)g(execute)h(incor-)0 5714 y(rectly)-8 b(.)41
b(This)29 b(t)m(yp)s(e)h(of)h(error)f(can)h(b)s(e)f(di\016cult)e(to)j
(debug,)f(so)h(programmers)f(should)e(alw)m(a)m(ys)j(ensure)f(that)h
(the)p eop
%%Page: 22 30
22 29 bop 0 299 a Fj(22)1763 b Fh(CHAPTER)29 b(4.)112
b(PR)m(OGRAMMING)32 b(GUIDELINES)0 555 y Fj(c)m(har)27
b(arra)m(ys)g(are)g(allo)s(cated)g(enough)f(space)i(to)f(hold)f(the)g
(longest)h(p)s(ossible)e(string,)h Fi(including)i Fj(the)f(terminat-)0
668 y(ing)j(NULL)h(c)m(haracter.)45 b(The)30 b(\014tsio.h)g(\014le)h
(con)m(tains)g(the)g(follo)m(wing)f(de\014ned)g(constan)m(ts)i(whic)m
(h)e(programmers)0 781 y(are)h(strongly)f(encouraged)h(to)g(use)f
(whenev)m(er)g(they)h(are)f(allo)s(cating)g(space)h(for)f(c)m(har)h
(arra)m(ys:)0 1025 y Fe(#define)46 b(FLEN_FILENAME)e(1025)j(/*)g(max)g
(length)f(of)h(a)g(filename)f(*/)0 1138 y(#define)g(FLEN_KEYWORD)140
b(72)95 b(/*)47 b(max)g(length)f(of)h(a)g(keyword)94
b(*/)0 1251 y(#define)46 b(FLEN_CARD)284 b(81)95 b(/*)47
b(length)f(of)h(a)h(FITS)e(header)g(card)h(*/)0 1364
y(#define)f(FLEN_VALUE)236 b(71)95 b(/*)47 b(max)g(length)f(of)h(a)g
(keyword)f(value)h(string)f(*/)0 1477 y(#define)g(FLEN_COMMENT)140
b(73)95 b(/*)47 b(max)g(length)f(of)h(a)g(keyword)f(comment)g(string)g
(*/)0 1590 y(#define)g(FLEN_ERRMSG)188 b(81)95 b(/*)47
b(max)g(length)f(of)h(a)g(CFITSIO)f(error)h(message)e(*/)0
1703 y(#define)h(FLEN_STATUS)188 b(31)95 b(/*)47 b(max)g(length)f(of)h
(a)g(CFITSIO)f(status)g(text)h(string)f(*/)0 1947 y Fj(F)-8
b(or)23 b(example,)g(when)e(declaring)g(a)h(c)m(har)g(arra)m(y)h(to)f
(hold)f(the)h(v)-5 b(alue)21 b(string)g(of)h(FITS)f(k)m(eyw)m(ord,)k
(use)c(the)h(follo)m(wing)0 2060 y(statemen)m(t:)191
2304 y Fe(char)47 b(value[FLEN_VALUE];)0 2548 y Fj(Note)41
b(that)f(FLEN)p 686 2548 28 4 v 33 w(KEYW)m(ORD)g(is)e(longer)h(than)g
(needed)g(for)g(the)h(nominal)d(8-c)m(haracter)42 b(k)m(eyw)m(ord)e
(name)0 2661 y(b)s(ecause)30 b(the)h(HIERAR)m(CH)f(con)m(v)m(en)m(tion)
i(supp)s(orts)c(longer)i(k)m(eyw)m(ord)h(names.)0 2992
y Ff(4.6)135 b(Implicit)46 b(Data)g(T)l(yp)t(e)f(Con)l(v)l(ersion)0
3242 y Fj(The)29 b(CFITSIO)e(routines)h(that)i(read)f(and)f(write)h(n)m
(umerical)e(data)j(can)g(p)s(erform)d(implicit)f(data)k(t)m(yp)s(e)f
(con)m(v)m(er-)0 3355 y(sion.)38 b(This)24 b(means)i(that)g(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)g(do)s(es)f(not)h(need)f(to)i(b)s(e)e(the)0
3468 y(same)g(as)f(the)h(data)g(t)m(yp)s(e)g(of)f(the)h(v)-5
b(alue)24 b(in)f(the)h(FITS)g(\014le.)38 b(Data)26 b(t)m(yp)s(e)f(con)m
(v)m(ersion)f(is)g(supp)s(orted)e(for)i(n)m(umerical)0
3581 y(and)37 b(string)f(data)h(t)m(yp)s(es)h(\(if)e(the)h(string)f
(con)m(tains)i(a)f(v)-5 b(alid)36 b(n)m(um)m(b)s(er)g(enclosed)g(in)g
(quotes\))i(when)e(reading)h(a)0 3694 y(FITS)30 b(header)h(k)m(eyw)m
(ord)g(v)-5 b(alue)30 b(and)g(for)h(n)m(umeric)f(v)-5
b(alues)30 b(when)g(reading)g(or)g(writing)f(v)-5 b(alues)30
b(in)g(the)h(primary)0 3807 y(arra)m(y)24 b(or)g(a)h(table)e(column.)38
b(CFITSIO)22 b(returns)h(status)h(=)f(NUM)p 2267 3807
V 34 w(O)m(VERFLO)m(W)i(if)d(the)i(con)m(v)m(erted)i(data)e(v)-5
b(alue)0 3920 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 4032 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 4193 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
4306 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
4637 y Ff(4.7)135 b(Data)46 b(Scaling)0 4887 y Fj(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 5000 y(scaled)h(automatically)h(b)m(y)f(the)g(BSCALE)g
(and)g(BZER)m(O)g(\(or)h(TSCALn)e(and)h(TZER)m(On\))f(header)h(v)-5
b(alues)37 b(if)0 5113 y(they)31 b(are)f(presen)m(t)h(in)e(the)h
(header.)41 b(The)30 b(scaled)g(data)h(that)g(is)e(returned)h(to)h(the)
f(reading)g(program)g(will)e(ha)m(v)m(e)382 5357 y Fe(output)46
b(value)g(=)i(\(FITS)e(value\))g(*)i(BSCALE)e(+)h(BZERO)0
5601 y Fj(\(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 5714 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)p
eop
%%Page: 23 31
23 30 bop 0 299 a Fh(4.8.)72 b(SUPPOR)-8 b(T)30 b(F)m(OR)g(IEEE)g
(SPECIAL)f(V)-10 b(ALUES)1863 b Fj(23)0 555 y(rounded)35
b(to)j(the)f(nearest)h(in)m(teger\).)61 b(The)36 b(\014ts)p
1673 555 28 4 v 32 w(set)p 1816 555 V 34 w(bscale)h(and)f(\014ts)p
2430 555 V 32 w(set)p 2573 555 V 34 w(tscale)h(routines)f(\(describ)s
(ed)f(in)h(the)0 668 y(`Adv)-5 b(anced')29 b(c)m(hapter\))h(ma)m(y)g(b)
s(e)e(used)h(to)g(o)m(v)m(erride)h(the)f(scaling)f(parameters)h
(de\014ned)f(in)g(the)h(header)g(\(e.g.,)i(to)0 781 y(turn)e(o\013)i
(the)g(scaling)e(so)i(that)g(the)f(program)g(can)h(read)f(the)h(ra)m(w)
f(unscaled)g(v)-5 b(alues)29 b(from)h(the)h(FITS)e(\014le\).)0
941 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 1054 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 1167 y(and)35
b(TZER)m(On\))f(k)m(eyw)m(ord)i(v)-5 b(alues)34 b(if)h(they)g(they)g
(exist)h(in)e(the)h(header.)55 b(These)35 b(k)m(eyw)m(ords)h(m)m(ust)f
(ha)m(v)m(e)i(b)s(een)0 1280 y(written)30 b(to)i(the)g(header)f(b)s
(efore)g(an)m(y)g(data)h(is)f(written)f(for)h(them)g(to)h(ha)m(v)m(e)h
(an)m(y)e(immediate)g(e\013ect.)45 b(One)30 b(ma)m(y)0
1393 y(also)g(use)h(the)f(\014ts)p 623 1393 V 33 w(set)p
767 1393 V 33 w(bscale)h(and)e(\014ts)p 1367 1393 V 33
w(set)p 1511 1393 V 33 w(tscale)i(routines)f(to)h(de\014ne)f(or)g(o)m
(v)m(erride)h(the)g(scaling)e(k)m(eyw)m(ords)i(in)0 1506
y(the)e(header)g(\(e.g.,)i(to)e(turn)f(o\013)h(the)g(scaling)f(so)h
(that)h(the)f(program)f(can)h(write)f(the)h(ra)m(w)g(unscaled)f(v)-5
b(alues)28 b(in)m(to)0 1619 y(the)e(FITS)g(\014le\).)39
b(If)25 b(scaling)g(is)h(p)s(erformed,)f(the)i(in)m(v)m(erse)f(scaled)g
(output)f(v)-5 b(alue)26 b(that)h(is)e(written)g(in)m(to)h(the)h(FITS)0
1732 y(\014le)i(will)f(ha)m(v)m(e)430 1992 y Fe(FITS)46
b(value)h(=)g(\(\(input)f(value\))g(-)h(BZERO\))f(/)i(BSCALE)0
2252 y Fj(\(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 2365 y(Rounding)33 b(to)j(the)g(nearest)g(in)m(teger,)h
(rather)e(than)g(truncation,)i(is)d(p)s(erformed)g(when)g(writing)f(in)
m(teger)j(data)0 2478 y(t)m(yp)s(es)30 b(to)i(the)e(FITS)g(\014le.)0
2812 y Ff(4.8)135 b(Supp)t(ort)44 b(for)h(IEEE)h(Sp)t(ecial)f(V)-11
b(alues)0 3062 y Fj(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 3175 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 3288 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 3401 y(v)-5 b(alues\).)54 b(The)34 b(CFITSIO)f(routines)h
(that)h(read)g(\015oating)f(p)s(oin)m(t)g(data)i(in)d(FITS)h(\014les)g
(recognize)h(these)h(IEEE)0 3514 y(sp)s(ecial)22 b(v)-5
b(alues)24 b(and)f(b)m(y)g(default)g(in)m(terpret)h(the)g(o)m(v)m
(er\015o)m(w)h(and)e(in\014nit)m(y)e(v)-5 b(alues)24
b(as)g(b)s(eing)e(equiv)-5 b(alen)m(t)23 b(to)i(a)f(NaN,)0
3627 y(and)36 b(con)m(v)m(ert)i(the)e(under\015o)m(w)f(and)h
(denormalized)f(v)-5 b(alues)35 b(in)m(to)i(zeros.)59
b(In)36 b(some)g(cases)i(programmers)d(ma)m(y)0 3740
y(w)m(an)m(t)d(access)h(to)g(the)e(ra)m(w)h(IEEE)f(v)-5
b(alues,)31 b(without)g(an)m(y)h(mo)s(di\014cation)e(b)m(y)h(CFITSIO.)f
(This)g(can)i(b)s(e)f(done)g(b)m(y)0 3853 y(calling)26
b(the)j(\014ts)p 567 3853 V 32 w(read)p 771 3853 V 33
w(img)e(or)h(\014ts)p 1209 3853 V 33 w(read)p 1414 3853
V 32 w(col)g(routines)f(while)f(sp)s(ecifying)g(0.0)j(as)f(the)g(v)-5
b(alue)28 b(of)g(the)g(NULL)-10 b(V)g(AL)0 3966 y(parameter.)59
b(This)35 b(will)e(force)k(CFITSIO)e(to)i(simply)d(pass)i(the)h(IEEE)f
(v)-5 b(alues)35 b(through)h(to)h(the)g(application)0
4079 y(program)31 b(without)f(an)m(y)i(mo)s(di\014cation.)42
b(This)29 b(is)i(not)g(fully)e(supp)s(orted)h(on)h(V)-10
b(AX/VMS)32 b(mac)m(hines,)f(ho)m(w)m(ev)m(er,)0 4192
y(where)f(there)g(is)g(no)g(easy)h(w)m(a)m(y)g(to)h(b)m(ypass)e(the)g
(default)g(in)m(terpretation)f(of)i(the)g(IEEE)e(sp)s(ecial)g(v)-5
b(alues.)0 4526 y Ff(4.9)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
4776 y Fj(Nearly)35 b(all)f(the)i(CFITSIO)e(routines)g(return)g(an)h
(error)g(status)h(v)-5 b(alue)34 b(in)g(2)i(w)m(a)m(ys:)51
b(as)36 b(the)f(v)-5 b(alue)35 b(of)h(the)f(last)0 4889
y(parameter)29 b(in)e(the)h(function)f(call,)i(and)f(as)g(the)h
(returned)e(v)-5 b(alue)28 b(of)g(the)h(function)e(itself.)39
b(This)26 b(pro)m(vides)i(some)0 5002 y(\015exibilit)m(y)33
b(in)h(the)i(w)m(a)m(y)h(programmers)e(can)h(test)h(if)e(an)g(error)h
(o)s(ccurred,)g(as)g(illustrated)e(in)g(the)i(follo)m(wing)f(2)0
5115 y(co)s(de)c(fragmen)m(ts:)191 5375 y Fe(if)47 b(\()h
(fits_write_record\(fptr,)41 b(card,)46 b(&status\))g(\))430
5488 y(printf\(")f(Error)h(occurred)g(while)g(writing)g(keyword."\);)0
5714 y(or,)p eop
%%Page: 24 32
24 31 bop 0 299 a Fj(24)1763 b Fh(CHAPTER)29 b(4.)112
b(PR)m(OGRAMMING)32 b(GUIDELINES)191 668 y Fe(fits_write_record\(fptr,)
41 b(card,)47 b(&status\);)191 781 y(if)g(\()h(status)e(\))430
894 y(printf\(")f(Error)h(occurred)g(while)g(writing)g(keyword."\);)0
1109 y Fj(A)27 b(listing)e(of)j(all)e(the)h(CFITSIO)f(status)i(co)s(de)
f(v)-5 b(alues)27 b(is)f(giv)m(en)h(at)h(the)g(end)e(of)i(this)e(do)s
(cumen)m(t.)39 b(Programmers)0 1222 y(are)33 b(encouraged)g(to)g(use)f
(the)h(sym)m(b)s(olic)d(mnemonics)h(\(de\014ned)h(in)f(\014tsio.h\))h
(rather)g(than)g(the)h(actual)g(in)m(teger)0 1335 y(status)e(v)-5
b(alues)29 b(to)j(impro)m(v)m(e)e(the)g(readabilit)m(y)f(of)i(their)e
(co)s(de.)0 1495 y(The)j(CFITSIO)f(library)e(uses)j(an)g(`inherited)f
(status')i(con)m(v)m(en)m(tion)g(for)f(the)h(status)f(parameter)h(whic)
m(h)e(means)0 1608 y(that)37 b(if)e(a)i(routine)e(is)h(called)f(with)g
(a)i(p)s(ositiv)m(e)e(input)g(v)-5 b(alue)36 b(of)g(the)h(status)f
(parameter)h(as)g(input,)f(then)g(the)0 1721 y(routine)i(will)d(exit)k
(immediately)e(without)g(c)m(hanging)i(the)f(v)-5 b(alue)38
b(of)h(the)g(status)g(parameter.)65 b(Th)m(us,)40 b(if)e(one)0
1834 y(passes)24 b(the)h(status)g(v)-5 b(alue)24 b(returned)g(from)g
(eac)m(h)i(CFITSIO)d(routine)g(as)i(input)e(to)i(the)g(next)g(CFITSIO)e
(routine,)0 1947 y(then)28 b(whenev)m(er)g(an)g(error)g(is)g(detected)h
(all)f(further)f(CFITSIO)f(pro)s(cessing)h(will)f(cease.)42
b(This)26 b(con)m(v)m(en)m(tion)k(can)0 2060 y(simplify)f(the)k(error)f
(c)m(hec)m(king)i(in)d(application)g(programs)h(b)s(ecause)h(it)f(is)g
(not)h(necessary)g(to)g(c)m(hec)m(k)i(the)d(v)-5 b(alue)0
2173 y(of)30 b(the)g(status)h(parameter)f(after)h(ev)m(ery)g(single)d
(CFITSIO)h(routine)g(call.)40 b(If)30 b(a)g(program)g(con)m(tains)g(a)h
(sequence)0 2285 y(of)d(sev)m(eral)h(CFITSIO)e(calls,)h(one)g(can)h
(just)e(c)m(hec)m(k)j(the)f(status)f(v)-5 b(alue)28 b(after)h(the)f
(last)g(call.)39 b(Since)28 b(the)g(returned)0 2398 y(status)33
b(v)-5 b(alues)32 b(are)h(generally)f(distinctiv)m(e,)g(it)h(should)d
(b)s(e)j(p)s(ossible)d(to)j(determine)f(whic)m(h)g(routine)g
(originally)0 2511 y(returned)d(the)i(error)f(status.)0
2671 y(CFITSIO)c(also)h(main)m(tains)g(an)g(in)m(ternal)f(stac)m(k)j
(of)f(error)f(messages)h(\(80-c)m(haracter)j(maxim)m(um)26
b(length\))h(whic)m(h)0 2784 y(in)35 b(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 2897 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 3010 y(whenev)m(er)h(a)g(program)g(detects)h(a)f
(CFITSIO)e(error.)66 b(The)38 b(function)g(\014ts)p 2653
3010 28 4 v 32 w(rep)s(ort)p 2931 3010 V 32 w(error)h(will)d(prin)m(t)i
(out)h(the)0 3123 y(en)m(tire)30 b(error)f(message)h(stac)m(k,)i(or)d
(alternativ)m(ely)h(one)g(ma)m(y)g(call)f(\014ts)p 2376
3123 V 32 w(read)p 2580 3123 V 33 w(errmsg)g(to)h(get)h(the)f(error)f
(messages)0 3236 y(one)i(at)g(a)g(time.)0 3563 y Ff(4.10)136
b(V)-11 b(ariable-Length)45 b(Arra)l(ys)g(in)g(Binary)g(T)-11
b(ables)0 3813 y Fj(CFITSIO)33 b(pro)m(vides)h(easy-to-use)i(supp)s
(ort)d(for)i(reading)f(and)g(writing)f(data)i(in)f(v)-5
b(ariable)33 b(length)h(\014elds)g(of)h(a)0 3926 y(binary)f(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 4039 y(where)25 b(`t')i(is)d(the)i(data)g(t)m(yp)s(e)g
(co)s(de)g(\(e.g.,)j(I,)c(J,)h(E,)f(D,)i(etc.\))40 b(and)25
b(`len')h(is)e(an)i(in)m(teger)g(sp)s(ecifying)d(the)j(maxim)m(um)0
4152 y(length)g(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
4264 y(if)33 b(the)h(TF)m(ORM)h(k)m(eyw)m(ord)g(v)-5
b(alue)33 b(is)g(simply)f(sp)s(eci\014ed)h(as)h('1PE')h(instead)e(of)h
('1PE\(400\))j(\),)f(then)d(CFITSIO)0 4377 y(will)27
b(automatically)i(scan)g(the)h(table)f(when)g(it)g(is)f(closed)h(to)h
(determine)f(the)g(maxim)m(um)f(length)h(of)h(the)f(v)m(ector)0
4490 y(and)h(will)d(app)s(end)i(this)g(v)-5 b(alue)30
b(to)h(the)g(TF)m(ORMn)f(v)-5 b(alue.)0 4650 y(The)29
b(same)h(routines)f(that)h(read)f(and)g(write)g(data)h(in)f(an)g
(ordinary)f(\014xed)h(length)g(binary)f(table)h(extension)h(are)0
4763 y(also)40 b(used)e(for)i(v)-5 b(ariable)38 b(length)h(\014elds,)h
(ho)m(w)m(ev)m(er,)k(the)c(routine)e(parameters)i(tak)m(e)h(on)f(a)g
(sligh)m(tly)d(di\013eren)m(t)0 4876 y(in)m(terpretation)30
b(as)g(describ)s(ed)f(b)s(elo)m(w.)0 5036 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
5149 y(main)30 b(\014xed-length)h(FITS)f(binary)g(table.)43
b(The)31 b(size)g(of)g(the)h(heap,)f(in)f(b)m(ytes,)i(is)f(sp)s
(eci\014ed)e(b)m(y)i(the)h(PCOUNT)0 5262 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
5375 y(usually)25 b(b)s(e)j(set)g(to)g(zero.)41 b(CFITSIO)26
b(will)f(recompute)j(the)g(size)f(of)h(the)g(heap)g(as)g(the)g(data)g
(is)f(written)f(and)i(will)0 5488 y(automatically)d(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 5601
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 5714 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.)p eop
%%Page: 25 33
25 32 bop 0 299 a Fh(4.11.)73 b(MUL)-8 b(TIPLE)30 b(A)m(CCESS)f(TO)g
(THE)i(SAME)f(FITS)f(FILE)1515 b Fj(25)0 555 y(By)30
b(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)0 668 y(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 781 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 894 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 1007 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 1120 y(mo)m(v)m(ed.)0
1280 y(When)g(writing)f(to)i(a)g(v)-5 b(ariable)29 b(length)g(\014eld)f
(the)i(en)m(tire)f(arra)m(y)h(of)g(v)-5 b(alues)29 b(for)h(a)g(giv)m
(en)f(ro)m(w)h(of)g(the)g(table)f(m)m(ust)0 1393 y(b)s(e)e(written)f
(with)h(a)h(single)e(call)g(to)j(\014ts)p 1363 1393 28
4 v 32 w(write)p 1598 1393 V 32 w(col.)40 b(The)27 b(total)h(length)f
(of)h(the)g(arra)m(y)g(is)e(giv)m(en)i(b)m(y)f(nelemen)m(ts)g(+)0
1506 y(\014rstelem)33 b(-)g(1.)51 b(Additional)31 b(elemen)m(ts)j
(cannot)g(b)s(e)f(app)s(ended)f(to)i(an)f(existing)g(v)m(ector)i(at)f
(a)g(later)f(time)h(since)0 1619 y(an)m(y)c(attempt)g(to)g(do)f(so)g
(will)e(simply)f(o)m(v)m(erwrite)k(all)e(the)i(previously)c(written)j
(data.)41 b(Note)30 b(also)f(that)h(the)f(new)0 1732
y(data)c(will)d(b)s(e)i(written)g(to)h(a)g(new)f(area)i(of)f(the)f
(heap)h(and)f(the)h(heap)f(space)h(used)f(b)m(y)h(the)f(previous)g
(write)f(cannot)0 1844 y(b)s(e)32 b(reclaimed.)45 b(F)-8
b(or)34 b(this)d(reason)h(eac)m(h)i(ro)m(w)f(of)f(a)h(v)-5
b(ariable)31 b(length)h(\014eld)f(should)f(only)i(b)s(e)f(written)h
(once.)47 b(An)0 1957 y(exception)37 b(to)g(this)f(general)g(rule)f(o)s
(ccurs)i(when)e(setting)i(elemen)m(ts)g(of)g(an)f(arra)m(y)h(as)g
(unde\014ned.)57 b(One)36 b(m)m(ust)0 2070 y(\014rst)30
b(write)g(a)i(dumm)m(y)d(v)-5 b(alue)31 b(in)m(to)g(the)g(arra)m(y)g
(with)f(\014ts)p 1977 2070 V 32 w(write)p 2212 2070 V
32 w(col,)i(and)e(then)h(call)f(\014ts)p 3086 2070 V
32 w(write)p 3321 2070 V 32 w(col)p 3464 2070 V 33 w(n)m(ul)g(to)i
(\015ag)0 2183 y(the)g(desired)e(elemen)m(ts)i(as)g(unde\014ned.)43
b(\(Do)33 b(not)f(use)g(the)g(\014ts)p 2197 2183 V 32
w(write)p 2432 2183 V 32 w(coln)m(ull)e(routines)g(with)h(v)-5
b(ariable)31 b(length)0 2296 y(\014elds\).)45 b(Note)33
b(that)g(the)f(ro)m(ws)h(of)f(a)g(table,)h(whether)f(\014xed)f(or)h(v)
-5 b(ariable)31 b(length,)i(do)f(not)g(ha)m(v)m(e)h(to)g(b)s(e)f
(written)0 2409 y(consecutiv)m(ely)f(and)e(ma)m(y)i(b)s(e)f(written)f
(in)h(an)m(y)g(order.)0 2569 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
2682 y(c)m(haracter)22 b(string)d(can)i(b)s(e)e(written.)37
b(The)20 b(`\014rstelem')f(and)h(`nelemen)m(ts')h(parameter)f(v)-5
b(alues)20 b(in)f(the)h(\014ts)p 3526 2682 V 33 w(write)p
3762 2682 V 32 w(col)0 2795 y(routine)34 b(are)i(ignored)e(and)g(the)i
(n)m(um)m(b)s(er)d(of)j(c)m(haracters)g(to)g(write)e(is)h(simply)d
(determined)i(b)m(y)h(the)g(length)g(of)0 2908 y(the)c(input)d(n)m
(ull-terminated)g(c)m(haracter)k(string.)0 3068 y(The)21
b(\014ts)p 305 3068 V 33 w(write)p 541 3068 V 32 w(descript)f(routine)h
(is)f(useful)g(in)g(situations)h(where)g(m)m(ultiple)e(ro)m(ws)j(of)g
(a)g(v)-5 b(ariable)20 b(length)h(column)0 3181 y(ha)m(v)m(e)32
b(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 3294 y(use)c(\014ts)p
280 3294 V 32 w(write)p 515 3294 V 32 w(descript)f(to)h(write)f(the)h
(same)h(descriptor)d(v)-5 b(alues)26 b(in)m(to)g(the)g(other)g(ro)m
(ws;)h(all)e(the)h(ro)m(ws)g(will)d(then)0 3407 y(p)s(oin)m(t)29
b(to)i(the)g(same)g(storage)h(lo)s(cation)e(th)m(us)g(sa)m(ving)g(disk)
f(space.)0 3567 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 3680 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
3793 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 3906 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
4019 y(of)e(a)f(v)-5 b(ariable)29 b(column)h(with)f(the)h(\014ts)p
1329 4019 V 33 w(read)p 1534 4019 V 32 w(descript)g(routine.)0
4432 y Ff(4.11)136 b(Multiple)45 b(Access)g(to)g(the)g(Same)h(FITS)d
(File)0 4698 y Fj(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 4811 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 4924 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 5036 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 5149 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 5262 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
5375 y(\014ts)p 127 5375 V 32 w(op)s(en)p 349 5375 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 5488 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 5601 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
5714 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)p eop
%%Page: 26 34
26 33 bop 0 299 a Fj(26)1763 b Fh(CHAPTER)29 b(4.)112
b(PR)m(OGRAMMING)32 b(GUIDELINES)0 555 y Fj(mo)s(di\014cations)e(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
668 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 781 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 894 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 1007 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 1120 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
1233 y(doing)f(I/O)i(to)g(di\013eren)m(t)f(HDUs)h(in)e(the)h(same)h
(\014le.)0 1571 y Ff(4.12)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 1822 y Fj(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 1935 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 2047 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
2160 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 2273
y(the)33 b(NAXISn)f(v)-5 b(alue)32 b(should)f(b)s(e)h(up)s(dated)g
(using)f(the)i(\014ts)p 2069 2273 28 4 v 33 w(up)s(date)p
2378 2273 V 32 w(k)m(ey)g(routine)f(b)s(efore)h(mo)m(ving)f(to)i
(another)0 2386 y(extension)c(or)g(closing)g(the)g(FITS)g(\014le.)0
2546 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 2659 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 2772 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
2885 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 3045 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 3158
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 3271 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 3384 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 3497 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 3610 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 3723 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
3836 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 3949 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
4061 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 4174 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
4287 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
4400 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 4513 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 4626 y(closing)c(the)i(table.)0
4964 y Ff(4.13)136 b(CFITSIO)44 b(Size)h(Limitations)0
5215 y Fj(CFITSIO)29 b(places)i(v)m(ery)g(few)g(restrictions)e(on)i
(the)g(size)f(of)h(FITS)f(\014les)g(that)h(it)g(reads)f(or)h(writes.)41
b(There)30 b(are)i(a)0 5328 y(few)e(limits,)e(ho)m(w)m(ev)m(er,)k(that)
f(ma)m(y)g(a\013ect)h(some)f(extreme)g(cases:)0 5488
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 5601 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 5714
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)p
eop
%%Page: 27 35
27 34 bop 0 299 a Fh(4.13.)73 b(CFITSIO)28 b(SIZE)h(LIMIT)-8
b(A)g(TIONS)2300 b Fj(27)0 555 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
668 y(constan)m(t)31 b(F)m(OPEN)p 690 668 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 781
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 894 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
1054 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 1167 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
1280 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 1393 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
1506 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
1619 y(records)30 b(in)f(the)i(FITS)e(\014les.)0 1779
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 1892 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 2005
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
2118 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 2230 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 2343 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
2456 y('-D)p 129 2456 V 34 w(LAR)m(GEFILE)p 696 2456
V 33 w(SOUR)m(CE')h(and)g(`-D)p 1491 2456 V 34 w(FILE)p
1736 2456 V 33 w(OFFSET)p 2137 2456 V 32 w(BITS=64')h(compiler)e
(\015ags.)78 b(Some)43 b(platforms)0 2569 y(ma)m(y)c(also)f(require)f
(the)h(`-D)p 1002 2569 V 34 w(LAR)m(GE)p 1358 2569 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 2682 y(b)m(ytes)27
b(instead)f(of)h(4-b)m(ytes)h(for)f(the)g(`o\013)p 1371
2682 V 33 w(t')g(data)h(t)m(yp)s(e)f(that)g(is)f(used)g(to)h(store)h
(\014le)e(o\013set)h(p)s(ositions.)38 b(It)27 b(app)s(ears)0
2795 y(that)i(in)d(most)j(cases)g(it)e(is)g(not)h(necessary)h(to)g
(also)f(include)d(these)k(compiler)d(\015ags)j(when)e(compiling)e
(programs)0 2908 y(that)31 b(link)d(to)j(the)g(CFITSIO)e(library)-8
b(.)0 3068 y(If)21 b(CFITSIO)e(is)h(compiled)g(with)g(the)h(-D)p
1386 3068 V 33 w(LAR)m(GEFILE)p 1952 3068 V 34 w(SOUR)m(CE)f(and)g(-D)p
2654 3068 V 34 w(FILE)p 2899 3068 V 33 w(OFFSET)p 3300
3068 V 32 w(BITS=64)h(\015ags)0 3181 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)0 3294
y(2**31)k(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 3407 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 3520 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
3633 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 3745 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
3858 y(m)m(ust)30 b(b)s(e)g(less)g(than)g(this)f(limit.)0
4019 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 4131 y(AIX)g(op)s(erating)g(systems.)p
eop
%%Page: 28 36
28 35 bop 0 299 a Fj(28)1763 b Fh(CHAPTER)29 b(4.)112
b(PR)m(OGRAMMING)32 b(GUIDELINES)p eop
%%Page: 29 37
29 36 bop 0 1225 a Fg(Chapter)65 b(5)0 1687 y Fm(Basic)77
b(CFITSIO)f(In)-6 b(terface)77 b(Routines)0 2180 y Fj(This)29
b(c)m(hapter)j(describ)s(es)d(the)j(basic)e(routines)g(in)g(the)h
(CFITSIO)e(user)i(in)m(terface)g(that)h(pro)m(vide)e(all)g(the)i(func-)
0 2293 y(tions)i(normally)f(needed)i(to)g(read)g(and)f(write)g(most)i
(FITS)e(\014les.)53 b(It)35 b(is)f(recommended)g(that)i(these)f
(routines)0 2406 y(b)s(e)d(used)g(for)g(most)h(applications)e(and)h
(that)h(the)f(more)h(adv)-5 b(anced)33 b(routines)e(describ)s(ed)g(in)g
(the)i(next)f(c)m(hapter)0 2518 y(only)d(b)s(e)h(used)g(in)f(sp)s
(ecial)g(circumstances)h(when)f(necessary)-8 b(.)0 2679
y(The)30 b(follo)m(wing)f(con)m(v)m(en)m(tions)i(are)g(used)e(in)h
(this)f(c)m(hapter)i(in)e(the)h(description)f(of)h(eac)m(h)i(function:)
0 2839 y(1.)39 b(Most)25 b(functions)d(ha)m(v)m(e)j(2)f(names:)37
b(a)24 b(long)g(descriptiv)m(e)e(name)i(and)f(a)i(short)e(concise)h
(name.)38 b(Both)25 b(names)f(are)0 2952 y(listed)e(on)h(the)g(\014rst)
f(line)g(of)h(the)h(follo)m(wing)d(descriptions,)i(separated)g(b)m(y)h
(a)f(slash)f(\(/\))i(c)m(haracter.)40 b(Programmers)0
3065 y(ma)m(y)27 b(use)g(either)f(name)h(in)e(their)h(programs)h(but)f
(the)h(long)f(names)h(are)g(recommended)f(to)i(help)d(do)s(cumen)m(t)i
(the)0 3177 y(co)s(de)k(and)e(mak)m(e)j(it)e(easier)g(to)h(read.)0
3338 y(2.)42 b(A)30 b(righ)m(t)g(arro)m(w)h(sym)m(b)s(ol)e(\()p
Fb(>)p Fj(\))i(is)f(used)g(in)f(the)i(function)e(descriptions)f(to)k
(separate)f(the)g(input)e(parameters)0 3451 y(from)k(the)g(output)f
(parameters)i(in)e(the)h(de\014nition)e(of)i(eac)m(h)h(routine.)48
b(This)31 b(sym)m(b)s(ol)h(is)g(not)h(actually)g(part)g(of)0
3563 y(the)e(C)f(calling)e(sequence.)0 3724 y(3.)41 b(The)30
b(function)f(parameters)i(are)g(de\014ned)e(in)g(more)h(detail)g(in)f
(the)h(alphab)s(etical)f(listing)f(in)h(App)s(endix)f(B.)0
3884 y(4.)39 b(The)23 b(\014rst)g(argumen)m(t)g(in)g(almost)g(all)g
(the)g(functions)f(is)h(a)h(p)s(oin)m(ter)e(to)i(a)g(structure)f(of)h
(t)m(yp)s(e)g(`\014ts\014le'.)37 b(Memory)0 3997 y(for)26
b(this)f(structure)g(is)g(allo)s(cated)h(b)m(y)g(CFITSIO)e(when)h(the)h
(FITS)g(\014le)f(is)g(\014rst)g(op)s(ened)g(or)h(created)h(and)e(is)g
(freed)0 4110 y(when)k(the)i(FITS)f(\014le)f(is)g(closed.)0
4270 y(5.)53 b(The)34 b(last)g(argumen)m(t)g(in)f(almost)i(all)e(the)h
(functions)f(is)g(the)i(error)f(status)g(parameter.)53
b(It)35 b(m)m(ust)f(b)s(e)f(equal)0 4383 y(to)k(0)g(on)f(input,)g
(otherwise)g(the)g(function)f(will)f(immediately)g(exit)i(without)g
(doing)f(an)m(ything.)58 b(A)36 b(non-zero)0 4496 y(output)27
b(v)-5 b(alue)26 b(indicates)h(that)g(an)g(error)g(o)s(ccurred)g(in)f
(the)h(function.)38 b(In)27 b(most)g(cases)h(the)g(status)f(v)-5
b(alue)27 b(is)f(also)0 4608 y(returned)j(as)i(the)f(v)-5
b(alue)30 b(of)h(the)f(function)f(itself.)0 4935 y Ff(5.1)135
b(CFITSIO)44 b(Error)h(Status)h(Routines)0 5168 y Fi(1)81
b Fj(Return)27 b(a)j(descriptiv)m(e)d(text)j(string)d(\(30)j(c)m(har)f
(max.\))41 b(corresp)s(onding)27 b(to)i(a)g(CFITSIO)e(error)h(status)h
(co)s(de.)95 5385 y Fe(void)47 b(fits_get_errstatus)c(/)k(ffgerr)f
(\(int)h(status,)f(>)h(char)g(*err_text\))0 5601 y Fi(2)81
b Fj(Return)35 b(the)h(top)g(\(oldest\))g(80-c)m(haracter)j(error)c
(message)i(from)e(the)h(in)m(ternal)f(CFITSIO)f(stac)m(k)j(of)f(error)
227 5714 y(messages)45 b(and)e(shift)g(an)m(y)h(remaining)e(messages)j
(on)f(the)g(stac)m(k)h(up)e(one)h(lev)m(el.)81 b(Call)42
b(this)h(routine)1905 5942 y(29)p eop
%%Page: 30 38
30 37 bop 0 299 a Fj(30)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)227
555 y Fj(rep)s(eatedly)25 b(to)i(get)g(eac)m(h)g(message)f(in)f
(sequence.)39 b(The)26 b(function)e(returns)h(a)h(v)-5
b(alue)25 b(=)g(0)h(and)g(a)g(n)m(ull)d(error)227 668
y(message)32 b(when)d(the)i(error)f(stac)m(k)i(is)d(empt)m(y)-8
b(.)95 923 y Fe(int)47 b(fits_read_errmsg)d(/)j(ffgmsg)f(\(char)h
(*err_msg\))0 1178 y Fi(3)81 b Fj(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 1291
y(on)d(the)h(CFITSIO)e(stac)m(k)j(to)f(the)f(sp)s(eci\014ed)f(\014le)g
(stream)i(\(normally)e(to)i(stdout)f(or)g(stderr\).)40
b(If)26 b(the)i(input)227 1404 y(status)j(v)-5 b(alue)30
b(=)g(0)h(then)f(this)f(routine)g(do)s(es)h(nothing.)95
1659 y Fe(void)47 b(fits_report_error)c(/)48 b(ffrprt)e(\(FILE)g
(*stream,)g(>)h(status\))0 1914 y Fi(4)81 b Fj(The)44
b(\014ts)p 461 1914 28 4 v 32 w(write)p 696 1914 V 32
w(errmark)g(routine)g(puts)g(an)h(in)m(visible)c(mark)m(er)k(on)g(the)g
(CFITSIO)e(error)h(stac)m(k.)85 b(The)227 2027 y(\014ts)p
354 2027 V 33 w(clear)p 574 2027 V 33 w(errmark)31 b(routine)h(can)h
(then)f(b)s(e)f(used)h(to)h(delete)g(an)m(y)g(more)f(recen)m(t)i(error)
e(messages)h(on)g(the)227 2140 y(stac)m(k,)42 b(bac)m(k)c(to)g(the)g(p)
s(osition)e(of)i(the)g(mark)m(er.)63 b(This)36 b(preserv)m(es)h(an)m(y)
h(older)f(error)g(messages)i(on)f(the)227 2253 y(stac)m(k.)77
b(The)41 b(\014ts)p 855 2253 V 32 w(clear)p 1074 2253
V 33 w(errmsg)g(routine)g(simply)e(clears)j(all)f(the)h(messages)g
(\(and)g(marks\))f(from)h(the)227 2365 y(stac)m(k.)g(These)31
b(routines)e(are)i(called)e(without)h(an)m(y)g(argumen)m(ts.)95
2620 y Fe(void)47 b(fits_write_errmark)c(/)k(ffpmrk)f(\(void\))95
2733 y(void)h(fits_clear_errmark)c(/)k(ffcmrk)f(\(void\))95
2846 y(void)h(fits_clear_errmsg)c(/)48 b(ffcmsg)e(\(void\))0
3179 y Ff(5.2)135 b(FITS)44 b(File)i(Access)e(Routines)0
3419 y Fi(1)81 b Fj(Op)s(en)29 b(an)h(existing)f(data)i(\014le.)227
3663 y Fe(int)47 b(fits_open_file)d(/)k(ffopen)418 3776
y(\(fitsfile)d(**fptr,)h(char)h(*filename,)e(int)i(iomode,)f(>)h(int)g
(*status\))227 4002 y(int)g(fits_open_diskfile)c(/)k(ffdkopen)418
4115 y(\(fitsfile)e(**fptr,)h(char)h(*filename,)e(int)i(iomode,)f(>)h
(int)g(*status\))227 4340 y(int)g(fits_open_data)d(/)k(ffdopn)418
4453 y(\(fitsfile)d(**fptr,)h(char)h(*filename,)e(int)i(iomode,)f(>)h
(int)g(*status\))227 4679 y(int)g(fits_open_table)d(/)j(fftopn)418
4792 y(\(fitsfile)e(**fptr,)h(char)h(*filename,)e(int)i(iomode,)f(>)h
(int)g(*status\))227 5018 y(int)g(fits_open_image)d(/)j(ffiopn)418
5131 y(\(fitsfile)e(**fptr,)h(char)h(*filename,)e(int)i(iomode,)f(>)h
(int)g(*status\))227 5375 y Fj(The)41 b(iomo)s(de)g(parameter)h
(determines)f(the)g(read/write)g(access)i(allo)m(w)m(ed)f(in)e(the)h
(\014le)g(and)g(can)h(ha)m(v)m(e)227 5488 y(v)-5 b(alues)31
b(of)h(READONL)-8 b(Y)32 b(\(0\))g(or)g(READ)m(WRITE)g(\(1\).)44
b(The)31 b(\014lename)g(parameter)h(giv)m(es)g(the)f(name)h(of)227
5601 y(the)f(\014le)f(to)h(b)s(e)f(op)s(ened,)h(follo)m(w)m(ed)f(b)m(y)
h(an)f(optional)g(argumen)m(t)h(giving)f(the)h(name)f(or)h(index)e(n)m
(um)m(b)s(er)h(of)227 5714 y(the)d(extension)f(within)f(the)h(FITS)g
(\014le)g(that)h(should)e(b)s(e)h(mo)m(v)m(ed)i(to)f(and)f(op)s(ened)g
(\(e.g.,)k Fe(myfile.fits+3)p eop
%%Page: 31 39
31 38 bop 0 299 a Fh(5.2.)72 b(FITS)30 b(FILE)g(A)m(CCESS)f(R)m
(OUTINES)2244 b Fj(31)227 555 y(or)36 b Fe(myfile.fits[3])d
Fj(mo)m(v)m(es)k(to)g(the)g(3rd)f(extension)f(within)f(the)j(\014le,)g
(and)e Fe(myfile.fits[events])227 668 y Fj(mo)m(v)m(es)d(to)f(the)g
(extension)f(with)f(the)h(k)m(eyw)m(ord)h(EXTNAME)g(=)f('EVENTS'\).)227
816 y(The)37 b(\014ts)p 548 816 28 4 v 32 w(op)s(en)p
770 816 V 32 w(disk\014le)e(routine)h(is)g(similar)e(to)k(the)f(\014ts)
p 2241 816 V 33 w(op)s(en)p 2464 816 V 32 w(\014le)f(routine)g(except)i
(that)f(it)g(do)s(es)g(not)227 929 y(supp)s(ort)22 b(the)h(extended)h
(\014lename)e(syn)m(tax)i(in)e(the)i(input)d(\014le)i(name.)38
b(This)22 b(routine)g(simply)f(tries)i(to)h(op)s(en)227
1042 y(the)36 b(sp)s(eci\014ed)d(input)h(\014le)g(on)h(magnetic)h
(disk.)54 b(This)33 b(routine)h(is)h(mainly)e(for)i(use)g(in)f(cases)i
(where)f(the)227 1155 y(\014lename)e(\(or)i(directory)e(path\))h(con)m
(tains)g(square)g(or)g(curly)e(brac)m(k)m(et)k(c)m(haracters)f(that)f
(w)m(ould)f(confuse)227 1268 y(the)e(extended)f(\014lename)g(parser.)
227 1416 y(The)j(\014ts)p 544 1416 V 32 w(op)s(en)p 766
1416 V 32 w(data)h(routine)d(is)h(similar)e(to)k(the)f(\014ts)p
2113 1416 V 32 w(op)s(en)p 2335 1416 V 33 w(\014le)e(routine)h(except)i
(that)f(it)g(will)d(mo)m(v)m(e)k(to)227 1529 y(the)23
b(\014rst)f(HDU)h(con)m(taining)f(signi\014can)m(t)f(data,)k(if)d(a)h
(HDU)g(name)f(or)h(n)m(um)m(b)s(er)e(to)i(op)s(en)f(w)m(as)h(not)f
(explicitly)227 1642 y(sp)s(eci\014ed)36 b(as)h(part)h(of)f(the)h
(\014lename.)60 b(In)37 b(this)f(case,)k(it)d(will)e(lo)s(ok)i(for)g
(the)g(\014rst)g(IMA)m(GE)h(HDU)g(with)227 1755 y(NAXIS)e(>)f(0,)j(or)d
(the)h(\014rst)f(table)g(that)i(do)s(es)e(not)h(con)m(tain)g(the)g
(strings)e(`GTI')i(\(Go)s(o)s(d)g(Time)e(In)m(terv)-5
b(al)227 1868 y(extension\))31 b(or)f(`OBST)-8 b(ABLE')31
b(in)e(the)h(EXTNAME)h(k)m(eyw)m(ord)g(v)-5 b(alue.)227
2016 y(The)25 b(\014ts)p 536 2016 V 32 w(op)s(en)p 758
2016 V 32 w(table)g(and)f(\014ts)p 1305 2016 V 33 w(op)s(en)p
1528 2016 V 32 w(image)h(routines)f(are)h(similar)e(to)i(\014ts)p
2828 2016 V 33 w(op)s(en)p 3051 2016 V 32 w(data)h(except)f(they)h
(will)227 2129 y(mo)m(v)m(e)h(to)g(the)f(\014rst)f(signi\014can)m(t)f
(table)i(HDU)g(or)g(image)g(HDU)g(in)e(the)i(\014le,)g(resp)s(ectiv)m
(ely)-8 b(,)27 b(if)d(a)i(HDU)h(name)227 2242 y(or)k(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.)227
2390 y(IRAF)c(images)f(\(.imh)g(format)h(\014les\))e(and)h(ra)m(w)h
(binary)d(data)k(arra)m(ys)e(ma)m(y)h(also)g(b)s(e)f(op)s(ened)f(with)g
(READ-)227 2503 y(ONL)-8 b(Y)37 b(access.)60 b(CFITSIO)35
b(will)f(automatically)i(test)i(if)d(the)i(input)d(\014le)i(is)f(an)i
(IRAF)f(image,)j(and)d(if,)227 2616 y(so)c(will)d(con)m(v)m(ert)k(it)e
(on)g(the)h(\015y)f(in)m(to)h(a)g(virtual)d(FITS)i(image)h(b)s(efore)f
(it)g(is)g(op)s(ened)f(b)m(y)i(the)g(application)227
2729 y(program.)64 b(If)37 b(the)h(input)f(\014le)g(is)g(a)h(ra)m(w)g
(binary)f(data)h(arra)m(y)h(of)f(n)m(um)m(b)s(ers,)h(then)e(the)i(data)
f(t)m(yp)s(e)h(and)227 2842 y(dimensions)34 b(of)i(the)g(arra)m(y)h(m)m
(ust)f(b)s(e)f(sp)s(eci\014ed)f(in)h(square)h(brac)m(k)m(ets)h(follo)m
(wing)e(the)h(name)g(of)h(the)f(\014le)227 2955 y(\(e.g.)56
b('ra)m(w\014le.dat[i512,512]')38 b(op)s(ens)c(a)i(512)g(x)f(512)h
(short)e(in)m(teger)i(image\).)55 b(See)35 b(the)g(`Extended)g(File)227
3068 y(Name)k(Syn)m(tax')g(c)m(hapter)g(for)e(more)i(details)e(on)h(ho)
m(w)g(to)h(sp)s(ecify)e(the)h(ra)m(w)h(\014le)e(name.)64
b(The)38 b(ra)m(w)g(\014le)227 3181 y(is)j(con)m(v)m(erted)h(on)f(the)h
(\015y)f(in)m(to)g(a)g(virtual)f(FITS)g(image)i(in)e(memory)h(that)h
(is)e(then)h(op)s(ened)g(b)m(y)g(the)227 3294 y(application)29
b(program)h(with)f(READONL)-8 b(Y)31 b(access.)227 3442
y(Programs)g(can)g(read)f(the)h(input)d(\014le)i(from)g(the)h('stdin')e
(\014le)h(stream)h(if)e(a)i(dash)f(c)m(haracter)i(\('-'\))g(is)e(giv)m
(en)227 3555 y(as)f(the)f(\014lename.)39 b(Files)28 b(can)g(also)g(b)s
(e)g(op)s(ened)f(o)m(v)m(er)j(the)e(net)m(w)m(ork)h(using)e(FTP)h(or)g
(HTTP)g(proto)s(cols)g(b)m(y)227 3668 y(supplying)f(the)k(appropriate)e
(URL)i(as)f(the)h(\014lename.)227 3816 y(The)43 b(input)e(\014le)h(can)
i(b)s(e)f(mo)s(di\014ed)e(in)g(v)-5 b(arious)43 b(w)m(a)m(ys)h(to)g
(create)g(a)g(virtual)d(\014le)i(\(usually)e(stored)i(in)227
3929 y(memory\))31 b(that)g(is)f(then)g(op)s(ened)f(b)m(y)i(the)f
(application)f(program)h(b)m(y)h(supplying)c(a)k(\014ltering)e(or)h
(binning)227 4042 y(sp)s(eci\014er)d(in)g(square)h(brac)m(k)m(ets)h
(follo)m(wing)e(the)h(\014lename.)39 b(Some)29 b(of)f(the)g(more)h
(common)f(\014ltering)f(meth-)227 4155 y(o)s(ds)32 b(are)h(illustrated)
e(in)g(the)i(follo)m(wing)f(paragraphs,)h(but)f(users)g(should)e(refer)
j(to)g(the)g('Extended)g(File)227 4268 y(Name)e(Syn)m(tax')g(c)m
(hapter)g(for)f(a)h(complete)g(description)d(of)j(the)f(full)f(\014le)g
(\014ltering)g(syn)m(tax.)227 4416 y(When)e(op)s(ening)e(an)i(image,)g
(a)h(rectangular)e(subset)g(of)h(the)g(ph)m(ysical)e(image)i(ma)m(y)h
(b)s(e)e(op)s(ened)f(b)m(y)i(listing)227 4529 y(the)k(\014rst)e(and)h
(last)g(pixel)f(in)g(eac)m(h)j(dimension)c(\(and)i(optional)f(pixel)g
(skipping)f(factor\):)227 4765 y Fe(myimage.fits[101:200,301:)o(400])
227 5001 y Fj(will)f(create)k(and)e(op)s(en)f(a)i(100x100)i(pixel)c
(virtual)g(image)h(of)h(that)g(section)f(of)h(the)f(ph)m(ysical)f
(image,)j(and)227 5114 y Fe(myimage.fits[*,-*])d Fj(op)s(ens)k(a)h
(virtual)e(image)i(that)g(is)f(the)h(same)g(size)g(as)f(the)h(ph)m
(ysical)f(image)h(but)227 5227 y(has)d(b)s(een)g(\015ipp)s(ed)e(in)h
(the)h(v)m(ertical)h(direction.)227 5375 y(When)d(op)s(ening)f(a)h
(table,)h(the)f(\014ltering)e(syn)m(tax)j(can)f(b)s(e)f(used)h(to)g
(add)g(or)g(delete)g(columns)f(or)h(k)m(eyw)m(ords)227
5488 y(in)f(the)h(virtual)f(table:)39 b Fe(myfile.fits[events][col)j
(!time;)k(PI)h(=)h(PHA*1.2])26 b Fj(op)s(ens)h(a)h(virtual)f(ta-)227
5601 y(ble)k(in)f(whic)m(h)g(the)i(TIME)f(column)f(has)h(b)s(een)g
(deleted)g(and)g(a)g(new)g(PI)g(column)g(has)g(b)s(een)g(added)f(with)
227 5714 y(a)41 b(v)-5 b(alue)39 b(1.2)j(times)d(that)i(of)f(the)h(PHA)
f(column.)69 b(Similarly)-8 b(,)39 b(one)i(can)f(\014lter)g(a)g(table)g
(to)h(k)m(eep)g(only)p eop
%%Page: 32 40
32 39 bop 0 299 a Fj(32)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)227
555 y Fj(those)35 b(ro)m(ws)e(that)i(satisfy)e(a)h(selection)g
(criterion:)46 b Fe(myfile.fits[events][pha)c(>)47 b(50])33
b Fj(creates)j(and)227 668 y(op)s(ens)31 b(a)g(virtual)f(table)h(con)m
(taining)g(only)f(those)i(ro)m(ws)f(with)f(a)h(PHA)h(v)-5
b(alue)30 b(greater)j(than)e(50.)44 b(A)31 b(large)227
781 y(n)m(um)m(b)s(er)d(of)h(b)s(o)s(olean)g(and)f(mathematical)i(op)s
(erators)f(can)g(b)s(e)g(used)f(in)g(the)h(selection)g(expression.)39
b(One)227 894 y(can)25 b(also)f(\014lter)g(table)g(ro)m(ws)g(using)f
('Go)s(o)s(d)i(Time)e(In)m(terv)-5 b(al')25 b(extensions,)g(and)f
(spatial)f(region)h(\014lters)g(as)g(in)227 1007 y Fe
(myfile.fits[events][gtifi)o(lter)o(\(\)])14 b Fj(and)19
b Fe(myfile.fits[events][regfil)o(ter)o(\()42 b("stars.rng"\)])p
Fj(.)227 1167 y(Finally)-8 b(,)31 b(table)g(columns)f(ma)m(y)i(b)s(e)f
(binned)e(or)i(histogrammed)g(to)h(generate)h(a)e(virtual)f(image.)44
b(F)-8 b(or)32 b(ex-)227 1280 y(ample,)c Fe(myfile.fits[events][bin)41
b(\(X,Y\)=4])26 b Fj(will)e(result)j(in)f(a)i(2-dimensional)d(image)j
(calculated)227 1393 y(b)m(y)35 b(binning)c(the)k(X)f(and)g(Y)h
(columns)e(in)g(the)i(ev)m(en)m(t)h(table)e(with)f(a)i(bin)e(size)h(of)
h(4)f(in)g(eac)m(h)h(dimension.)227 1506 y(The)30 b(TLMINn)g(and)f
(TLMAXn)h(k)m(eyw)m(ords)h(will)d(b)s(e)h(used)h(b)m(y)g(default)g(to)h
(determine)e(the)i(range)f(of)h(the)227 1619 y(image.)227
1779 y(A)j(single)e(program)h(can)g(op)s(en)g(the)h(same)f(FITS)g
(\014le)f(more)i(than)f(once)h(and)f(then)g(treat)h(the)g(resulting)227
1892 y(\014ts\014le)29 b(p)s(oin)m(ters)g(as)h(though)g(they)g(w)m(ere)
h(completely)f(indep)s(enden)m(t)e(FITS)h(\014les.)39
b(Using)30 b(this)f(facilit)m(y)-8 b(,)30 b(a)227 2005
y(program)i(can)f(op)s(en)g(a)h(FITS)f(\014le)f(t)m(wice,)j(mo)m(v)m(e)
g(to)f(2)g(di\013eren)m(t)f(extensions)g(within)e(the)i(\014le,)g(and)g
(then)227 2118 y(read)g(and)e(write)h(data)h(in)e(those)i(extensions)f
(in)f(an)m(y)i(order.)0 2397 y Fi(2)81 b Fj(Create)31
b(and)f(op)s(en)f(a)i(new)f(empt)m(y)h(output)f(FITS)f(\014le.)227
2677 y Fe(int)47 b(fits_create_file)d(/)j(ffinit)418
2790 y(\(fitsfile)e(**fptr,)h(char)h(*filename,)e(>)i(int)g(*status\))
227 3016 y(int)g(fits_create_diskfile)42 b(/)48 b(ffdkinit)418
3129 y(\(fitsfile)d(**fptr,)h(char)h(*filename,)e(>)i(int)g(*status\))
227 3409 y Fj(An)36 b(error)h(will)d(b)s(e)i(returned)f(if)g(the)i(sp)s
(eci\014ed)e(\014le)h(already)g(exists,)i(unless)d(the)i(\014lename)e
(is)h(pre\014xed)227 3522 y(with)29 b(an)h(exclamation)g(p)s(oin)m(t)f
(\(!\).)42 b(In)29 b(that)i(case)g(CFITSIO)d(will)g(o)m(v)m(erwrite)i
(\(delete\))h(an)m(y)g(existing)e(\014le)227 3635 y(with)35
b(the)h(same)h(name.)57 b(Note)38 b(that)e(the)h(exclamation)f(p)s(oin)
m(t)f(is)g(a)i(sp)s(ecial)d(UNIX)i(c)m(haracter)i(so)e(if)f(it)227
3748 y(is)d(used)f(on)h(the)h(command)f(line)f(it)h(m)m(ust)g(b)s(e)g
(preceded)g(b)m(y)g(a)g(bac)m(kslash)g(to)i(force)e(the)h(UNIX)g(shell)
d(to)227 3860 y(accept)i(the)f(c)m(haracter)h(as)e(part)g(of)h(the)g
(\014lename.)227 4021 y(The)26 b(output)h(\014le)f(will)e(b)s(e)i
(written)g(to)h(the)g('stdout')g(\014le)f(stream)h(if)f(a)h(dash)f(c)m
(haracter)i(\('-'\))g(or)f(the)g(string)227 4134 y('stdout')34
b(is)e(giv)m(en)h(as)h(the)f(\014lename.)48 b(Similarly)-8
b(,)31 b('-.gz')k(or)e('stdout.gz')i(will)c(cause)i(the)h(\014le)e(to)i
(b)s(e)e(gzip)227 4247 y(compressed)e(b)s(efore)g(it)g(is)g(written)f
(out)i(to)g(the)f(stdout)h(stream.)227 4407 y(Optionally)-8
b(,)38 b(the)f(name)h(of)f(a)h(template)g(\014le)e(that)i(is)e(used)h
(to)h(de\014ne)f(the)g(structure)g(of)g(the)h(new)f(\014le)227
4520 y(ma)m(y)i(b)s(e)f(sp)s(eci\014ed)e(in)h(paren)m(theses)i(follo)m
(wing)d(the)j(output)e(\014le)h(name.)64 b(The)38 b(template)g(\014le)g
(ma)m(y)h(b)s(e)227 4633 y(another)32 b(FITS)e(\014le,)h(in)f(whic)m(h)
g(case)j(the)e(new)g(\014le,)g(at)h(the)g(time)f(it)f(is)h(op)s(ened,)g
(will)d(b)s(e)j(an)g(exact)i(cop)m(y)227 4746 y(of)38
b(the)g(template)h(\014le)e(except)h(that)h(the)f(data)g(structures)g
(\(images)g(and)f(tables\))h(will)d(b)s(e)j(\014lled)d(with)227
4858 y(zeros.)41 b(Alternativ)m(ely)-8 b(,)29 b(the)g(template)h
(\014le)e(ma)m(y)h(b)s(e)f(an)h(ASCI)s(I)e(format)i(text)h(\014le)e
(con)m(taining)h(directiv)m(es)227 4971 y(that)g(de\014ne)e(the)h(k)m
(eyw)m(ords)g(to)g(b)s(e)g(created)h(in)d(eac)m(h)j(HDU)g(of)f(the)g
(\014le.)39 b(See)28 b(the)g('Extended)f(File)g(Name)227
5084 y(Syn)m(tax')k(section)g(for)f(a)h(complete)f(description)f(of)h
(the)h(template)g(\014le)e(syn)m(tax.)227 5245 y(The)g(\014ts)p
540 5245 28 4 v 33 w(create)p 809 5245 V 34 w(disk\014le)e(routine)i
(is)g(similar)e(to)j(the)g(\014ts)p 2238 5245 V 32 w(create)p
2506 5245 V 34 w(\014le)f(routine)g(except)h(that)g(it)f(do)s(es)h(not)
227 5357 y(supp)s(ort)36 b(the)i(extended)g(\014lename)f(syn)m(tax)h
(in)f(the)h(input)e(\014le)h(name.)63 b(This)36 b(routine)h(simply)e
(tries)i(to)227 5470 y(create)f(the)e(sp)s(eci\014ed)e(\014le)h(on)g
(magnetic)i(disk.)49 b(This)32 b(routine)h(is)g(mainly)f(for)i(use)f
(in)g(cases)h(where)g(the)227 5583 y(\014lename)f(\(or)i(directory)e
(path\))h(con)m(tains)g(square)g(or)g(curly)e(brac)m(k)m(et)k(c)m
(haracters)f(that)f(w)m(ould)f(confuse)227 5696 y(the)e(extended)f
(\014lename)g(parser.)p eop
%%Page: 33 41
33 40 bop 0 299 a Fh(5.3.)72 b(HDU)31 b(A)m(CCESS)e(R)m(OUTINES)2488
b Fj(33)0 555 y Fi(3)81 b Fj(Close)27 b(a)g(previously)e(op)s(ened)i
(FITS)g(\014le.)39 b(The)27 b(\014rst)f(routine)h(simply)e(closes)i
(the)h(\014le,)f(whereas)g(the)h(second)227 668 y(one)41
b(also)f(DELETES)f(THE)h(FILE,)g(whic)m(h)f(can)i(b)s(e)e(useful)g(in)g
(cases)i(where)e(a)i(FITS)e(\014le)h(has)g(b)s(een)227
781 y(partially)29 b(created,)i(but)f(then)g(an)g(error)g(o)s(ccurs)g
(whic)m(h)g(prev)m(en)m(ts)g(it)g(from)g(b)s(eing)f(completed.)95
1033 y Fe(int)47 b(fits_close_file)d(/)j(ffclos)g(\(fitsfile)e(*fptr,)h
(>)h(int)g(*status\))95 1258 y(int)g(fits_delete_file)d(/)j(ffdelt)f
(\(fitsfile)g(*fptr,)g(>)h(int)g(*status\))0 1510 y Fi(4)81
b Fj(Return)21 b(the)i(name,)h(I/O)e(mo)s(de)g(\(READONL)-8
b(Y)24 b(or)e(READ)m(WRITE\),)i(and/or)e(the)g(\014le)g(t)m(yp)s(e)g
(\(e.g.)40 b('\014le://',)227 1623 y('ftp://'\))32 b(of)f(the)f(op)s
(ened)g(FITS)g(\014le.)95 1875 y Fe(int)47 b(fits_file_name)d(/)k
(ffflnm)e(\(fitsfile)f(*fptr,)h(>)i(char)e(*filename,)f(int)i
(*status\))95 2100 y(int)g(fits_file_mode)d(/)k(ffflmd)e(\(fitsfile)f
(*fptr,)h(>)i(int)f(*iomode,)e(int)i(*status\))95 2326
y(int)g(fits_url_type)e(/)i(ffurlt)f(\(fitsfile)f(*fptr,)h(>)i(char)f
(*urltype,)e(int)i(*status\))0 2659 y Ff(5.3)135 b(HDU)46
b(Access)e(Routines)0 2909 y Fj(The)30 b(follo)m(wing)f(functions)g(p)s
(erform)g(op)s(erations)g(on)i(Header-Data)h(Units)e(\(HDUs\))i(as)e(a)
h(whole.)0 3161 y Fi(1)81 b Fj(Mo)m(v)m(e)44 b(to)g(a)f(di\013eren)m(t)
f(HDU)h(in)f(the)h(\014le.)76 b(The)43 b(\014rst)f(routine)f(mo)m(v)m
(es)j(to)g(a)f(sp)s(eci\014ed)e(absolute)h(HDU)227 3273
y(n)m(um)m(b)s(er)g(\(starting)g(with)g(1)g(for)h(the)g(primary)d(arra)
m(y\))k(in)d(the)i(FITS)f(\014le,)j(and)d(the)g(second)h(routine)227
3386 y(mo)m(v)m(es)35 b(a)e(relativ)m(e)g(n)m(um)m(b)s(er)f(HDUs)i
(forw)m(ard)e(or)h(bac)m(kw)m(ard)h(from)f(the)g(curren)m(t)g(HDU.)h(A)
f(n)m(ull)e(p)s(oin)m(ter)227 3499 y(ma)m(y)g(b)s(e)f(giv)m(en)g(for)g
(the)g(hdut)m(yp)s(e)f(parameter)i(if)e(it's)h(v)-5 b(alue)30
b(is)f(not)i(needed.)40 b(The)30 b(third)e(routine)i(mo)m(v)m(es)227
3612 y(to)39 b(the)g(\(\014rst\))f(HDU)i(whic)m(h)d(has)h(the)h(sp)s
(eci\014ed)d(extension)i(t)m(yp)s(e)h(and)f(EXTNAME)g(and)g(EXTVER)227
3725 y(k)m(eyw)m(ord)26 b(v)-5 b(alues)25 b(\(or)h(HDUNAME)h(and)e
(HDUVER)h(k)m(eyw)m(ords\).)40 b(The)24 b(hdut)m(yp)s(e)h(parameter)h
(ma)m(y)g(ha)m(v)m(e)227 3838 y(a)d(v)-5 b(alue)21 b(of)h(IMA)m(GE)p
935 3838 28 4 v 34 w(HDU,)h(ASCI)s(I)p 1476 3838 V 31
w(TBL,)f(BINAR)-8 b(Y)p 2101 3838 V 34 w(TBL,)22 b(or)g(ANY)p
2676 3838 V 34 w(HDU)g(where)g(ANY)p 3396 3838 V 33 w(HDU)h(means)227
3951 y(that)33 b(only)f(the)g(extname)i(and)d(extv)m(er)j(v)-5
b(alues)32 b(will)d(b)s(e)j(used)g(to)h(lo)s(cate)g(the)g(correct)g
(extension.)47 b(If)32 b(the)227 4064 y(input)h(v)-5
b(alue)35 b(of)g(extv)m(er)h(is)e(0)i(then)e(the)i(EXTVER)e(k)m(eyw)m
(ord)i(is)e(ignored)g(and)h(the)g(\014rst)f(HDU)i(with)e(a)227
4177 y(matc)m(hing)27 b(EXTNAME)h(\(or)f(HDUNAME\))i(k)m(eyw)m(ord)e
(will)d(b)s(e)j(found.)38 b(If)27 b(no)f(matc)m(hing)h(HDU)h(is)e
(found)227 4290 y(in)f(the)h(\014le)f(then)h(the)g(curren)m(t)g(HDU)g
(will)e(remain)h(unc)m(hanged)g(and)h(a)g(status)g(=)g(BAD)p
3246 4290 V 33 w(HDU)p 3484 4290 V 34 w(NUM)h(will)227
4403 y(b)s(e)j(returned.)95 4654 y Fe(int)47 b(fits_movabs_hdu)d(/)j
(ffmahd)286 4767 y(\(fitsfile)f(*fptr,)g(int)h(hdunum,)e(>)j(int)f
(*hdutype,)e(int)i(*status\))95 4993 y(int)g(fits_movrel_hdu)d(/)j
(ffmrhd)286 5106 y(\(fitsfile)f(*fptr,)g(int)h(nmove,)f(>)h(int)g
(*hdutype,)e(int)i(*status\))95 5332 y(int)g(fits_movnam_hdu)d(/)j
(ffmnhd)286 5445 y(\(fitsfile)f(*fptr,)g(int)h(hdutype,)e(char)i
(*extname,)e(int)i(extver,)f(>)h(int)g(*status\))0 5696
y Fi(2)81 b Fj(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(curren)m(t)i(HDU)g(remains)e
(unc)m(hanged.)p eop
%%Page: 34 42
34 41 bop 0 299 a Fj(34)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)95
555 y Fe(int)47 b(fits_get_num_hdus)c(/)48 b(ffthdu)286
668 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*hdunum,)f(int)h(*status\))0
922 y Fi(3)81 b Fj(Return)31 b(the)h(n)m(um)m(b)s(er)f(of)h(the)h
(curren)m(t)e(HDU)i(\(CHDU\))h(in)c(the)j(FITS)e(\014le)g(\(where)h
(the)g(primary)f(arra)m(y)h(=)227 1034 y(1\).)42 b(This)28
b(function)h(returns)h(the)g(HDU)h(n)m(um)m(b)s(er)e(rather)h(than)h(a)
f(status)h(v)-5 b(alue.)95 1288 y Fe(int)47 b(fits_get_hdu_num)d(/)j
(ffghdn)286 1401 y(\(fitsfile)f(*fptr,)g(>)h(int)g(*hdunum\))0
1654 y Fi(4)81 b Fj(Return)38 b(the)h(t)m(yp)s(e)h(of)f(the)h(curren)m
(t)f(HDU)h(in)e(the)h(FITS)g(\014le.)66 b(The)39 b(p)s(ossible)e(v)-5
b(alues)38 b(for)h(hdut)m(yp)s(e)f(are:)227 1767 y(IMA)m(GE)p
546 1767 28 4 v 34 w(HDU,)31 b(ASCI)s(I)p 1095 1767 V
32 w(TBL,)f(or)g(BINAR)-8 b(Y)p 1840 1767 V 34 w(TBL.)95
2021 y Fe(int)47 b(fits_get_hdu_type)c(/)48 b(ffghdt)286
2133 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*hdutype,)e(int)i(*status\))0
2387 y Fi(5)81 b Fj(Cop)m(y)24 b(all)f(or)h(part)g(of)g(the)g(HDUs)h
(in)e(the)h(FITS)g(\014le)f(asso)s(ciated)h(with)f(infptr)f(and)i(app)s
(end)e(them)i(to)h(the)g(end)227 2500 y(of)f(the)f(FITS)f(\014le)h
(asso)s(ciated)g(with)f(outfptr.)38 b(If)23 b('previous')f(is)g(true)h
(\(not)h(0\),)i(then)d(an)m(y)g(HDUs)h(preceding)227
2613 y(the)35 b(curren)m(t)f(HDU)g(in)f(the)i(input)d(\014le)h(will)f
(b)s(e)h(copied)h(to)h(the)f(output)g(\014le.)51 b(Similarly)-8
b(,)32 b('curren)m(t')j(and)227 2726 y('follo)m(wing')28
b(determine)g(whether)g(the)h(curren)m(t)g(HDU,)g(and/or)g(an)m(y)g
(follo)m(wing)e(HDUs)j(in)d(the)i(input)e(\014le)227
2838 y(will)g(b)s(e)i(copied)h(to)g(the)g(output)f(\014le.)40
b(Th)m(us,)29 b(if)f(all)h(3)h(parameters)g(are)g(true,)g(then)g(the)f
(en)m(tire)h(input)e(\014le)227 2951 y(will)33 b(b)s(e)h(copied.)55
b(On)35 b(exit,)h(the)g(curren)m(t)f(HDU)h(in)d(the)j(input)d(\014le)i
(will)d(b)s(e)j(unc)m(hanged,)h(and)f(the)g(last)227
3064 y(HDU)c(in)e(the)i(output)f(\014le)f(will)f(b)s(e)i(the)g(curren)m
(t)h(HDU.)95 3318 y Fe(int)47 b(fits_copy_file)d(/)k(ffcpfl)286
3431 y(\(fitsfile)e(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(previous,)e
(int)i(current,)477 3544 y(int)g(following,)e(>)j(int)f(*status\))0
3797 y Fi(6)81 b Fj(Cop)m(y)34 b(the)h(curren)m(t)f(HDU)h(from)f(the)g
(FITS)g(\014le)g(asso)s(ciated)g(with)g(infptr)e(and)i(app)s(end)e(it)i
(to)h(the)g(end)f(of)227 3910 y(the)39 b(FITS)e(\014le)g(asso)s(ciated)
i(with)e(outfptr.)64 b(Space)38 b(ma)m(y)h(b)s(e)e(reserv)m(ed)i(for)f
(MOREKEYS)f(additional)227 4023 y(k)m(eyw)m(ords)31 b(in)e(the)i
(output)f(header.)95 4276 y Fe(int)47 b(fits_copy_hdu)e(/)i(ffcopy)286
4389 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(morekeys,)e
(>)j(int)f(*status\))0 4642 y Fi(7)81 b Fj(Cop)m(y)43
b(the)h(header)g(\(and)f(not)h(the)g(data\))h(from)e(the)h(CHDU)g(asso)
s(ciated)g(with)f(infptr)e(to)k(the)f(CHDU)227 4755 y(asso)s(ciated)27
b(with)e(outfptr.)39 b(If)26 b(the)h(curren)m(t)f(output)g(HDU)h(is)f
(not)g(completely)g(empt)m(y)-8 b(,)29 b(then)d(the)h(CHDU)227
4868 y(will)32 b(b)s(e)i(closed)g(and)g(a)h(new)f(HDU)h(will)d(b)s(e)i
(app)s(ended)e(to)j(the)g(output)f(\014le.)52 b(An)34
b(empt)m(y)h(output)f(data)227 4981 y(unit)29 b(will)f(b)s(e)i(created)
h(with)e(all)g(v)-5 b(alues)30 b(initially)d(=)j(0\).)95
5235 y Fe(int)47 b(fits_copy_header)d(/)j(ffcphd)286
5348 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(>)i(int)g
(*status\))0 5601 y Fi(8)81 b Fj(Delete)34 b(the)f(CHDU)h(in)e(the)h
(FITS)f(\014le.)49 b(An)m(y)33 b(follo)m(wing)f(HDUs)h(will)e(b)s(e)h
(shifted)g(forw)m(ard)h(in)f(the)h(\014le,)g(to)227 5714
y(\014ll)j(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)p
eop
%%Page: 35 43
35 42 bop 0 299 a Fh(5.4.)72 b(HEADER)31 b(KEYW)m(ORD)g(READ/WRITE)g(R)
m(OUTINES)1495 b Fj(35)227 555 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
668 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 781 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 894 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 1007 y(to)36 b(p)s(oin)m(t)e(to)
h(the)g(previous)e(HDU.)j(The)e(output)h(hdut)m(yp)s(e)e(parameter)i
(returns)f(the)h(t)m(yp)s(e)g(of)f(the)h(new)227 1120
y(CHDU.)c(A)g(n)m(ull)d(p)s(oin)m(ter)h(ma)m(y)i(b)s(e)f(giv)m(en)h
(for)f(hdut)m(yp)s(e)f(if)g(the)i(returned)e(v)-5 b(alue)30
b(is)f(not)i(needed.)95 1401 y Fe(int)47 b(fits_delete_hdu)d(/)j
(ffdhdu)286 1514 y(\(fitsfile)f(*fptr,)g(>)h(int)g(*hdutype,)e(int)i
(*status\))0 1872 y Ff(5.4)135 b(Header)46 b(Keyw)l(ord)g(Read/W)-11
b(rite)46 b(Routines)0 2128 y Fj(These)35 b(routines)f(read)g(or)h
(write)g(k)m(eyw)m(ords)g(in)f(the)h(Curren)m(t)f(Header)h(Unit)f
(\(CHU\).)i(Wild)e(card)g(c)m(haracters)0 2240 y(\(*,)28
b(?,)g(or)e(#\))h(ma)m(y)g(b)s(e)f(used)g(when)f(sp)s(ecifying)g(the)i
(name)f(of)h(the)g(k)m(eyw)m(ord)g(to)g(b)s(e)f(read:)39
b(a)27 b(')10 b(?')39 b(will)24 b(matc)m(h)k(an)m(y)0
2353 y(single)33 b(c)m(haracter)i(at)g(that)f(p)s(osition)e(in)h(the)h
(k)m(eyw)m(ord)h(name)f(and)f(a)h('*')h(will)d(matc)m(h)i(an)m(y)h
(length)e(\(including)0 2466 y(zero\))d(string)e(of)h(c)m(haracters.)42
b(The)28 b('#')h(c)m(haracter)i(will)26 b(matc)m(h)k(an)m(y)f
(consecutiv)m(e)h(string)e(of)h(decimal)f(digits)f(\(0)0
2579 y(-)35 b(9\).)55 b(When)35 b(a)g(wild)e(card)i(is)f(used)g(the)h
(routine)f(will)e(only)i(searc)m(h)i(for)f(a)g(matc)m(h)h(from)e(the)h
(curren)m(t)g(header)0 2692 y(p)s(osition)25 b(to)j(the)f(end)f(of)h
(the)g(header)g(and)f(will)e(not)j(resume)g(the)g(searc)m(h)g(from)g
(the)g(top)g(of)g(the)g(header)g(bac)m(k)g(to)0 2805
y(the)k(original)f(header)h(p)s(osition)e(as)j(is)e(done)h(when)f(no)h
(wildcards)e(are)j(included)c(in)i(the)h(k)m(eyw)m(ord)h(name.)43
b(The)0 2918 y(\014ts)p 127 2918 28 4 v 32 w(read)p 331
2918 V 33 w(record)32 b(routine)f(ma)m(y)h(b)s(e)g(used)f(to)h(set)h
(the)f(starting)g(p)s(osition)e(when)h(doing)g(wild)e(card)j(searc)m
(hs.)46 b(A)0 3031 y(status)29 b(v)-5 b(alue)29 b(of)g(KEY)p
809 3031 V 32 w(NO)p 980 3031 V 33 w(EXIST)f(is)g(returned)f(if)h(the)h
(sp)s(eci\014ed)e(k)m(eyw)m(ord)j(to)f(b)s(e)g(read)f(is)g(not)i(found)
d(in)h(the)0 3144 y(header.)0 3459 y Fd(5.4.1)112 b(Keyw)m(ord)38
b(Reading)f(Routines)0 3684 y Fi(1)81 b Fj(Return)33
b(the)h(n)m(um)m(b)s(er)e(of)i(existing)f(k)m(eyw)m(ords)i(\(not)f
(coun)m(ting)g(the)g(END)g(k)m(eyw)m(ord\))h(and)e(the)h(amoun)m(t)h
(of)227 3797 y(space)e(curren)m(tly)e(a)m(v)-5 b(ailable)31
b(for)h(more)g(k)m(eyw)m(ords.)46 b(It)32 b(returns)e(morek)m(eys)j(=)f
(-1)g(if)f(the)h(header)g(has)g(not)227 3910 y(y)m(et)27
b(b)s(een)d(closed.)39 b(Note)26 b(that)g(CFITSIO)d(will)g(dynamically)
g(add)h(space)i(if)e(required)f(when)h(writing)f(new)227
4023 y(k)m(eyw)m(ords)32 b(to)g(a)f(header)g(so)h(in)e(practice)h
(there)h(is)e(no)h(limit)e(to)j(the)f(n)m(um)m(b)s(er)f(of)i(k)m(eyw)m
(ords)f(that)h(can)g(b)s(e)227 4136 y(added)e(to)h(a)f(header.)41
b(A)30 b(n)m(ull)e(p)s(oin)m(ter)i(ma)m(y)g(b)s(e)g(en)m(tered)h(for)f
(the)g(morek)m(eys)h(parameter)g(if)e(it's)h(v)-5 b(alue)30
b(is)227 4249 y(not)h(needed.)95 4530 y Fe(int)47 b(fits_get_hdrspace)c
(/)48 b(ffghsp)286 4642 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*keysexist,)e
(int)i(*morekeys,)e(int)i(*status\))0 4924 y Fi(2)81
b Fj(Return)28 b(the)h(sp)s(eci\014ed)e(k)m(eyw)m(ord.)41
b(In)29 b(the)g(\014rst)f(routine,)h(the)g(datat)m(yp)s(e)h(parameter)g
(sp)s(eci\014es)d(the)i(desired)227 5036 y(returned)e(data)h(t)m(yp)s
(e)g(of)g(the)g(k)m(eyw)m(ord)h(v)-5 b(alue)27 b(and)g(can)h(ha)m(v)m
(e)h(one)f(of)g(the)g(follo)m(wing)e(sym)m(b)s(olic)h(constan)m(t)227
5149 y(v)-5 b(alues:)46 b(TSTRING,)33 b(TLOGICAL)f(\(==)h(in)m(t\),)i
(TBYTE,)e(TSHOR)-8 b(T,)33 b(TUSHOR)-8 b(T,)32 b(TINT,)h(TUINT,)227
5262 y(TLONG,)39 b(TULONG,)f(TFLO)m(A)-8 b(T,)39 b(TDOUBLE,)g
(TCOMPLEX,)e(and)h(TDBLCOMPLEX.)h(Within)227 5375 y(the)c(con)m(text)h
(of)e(this)g(routine,)g(TSTRING)g(corresp)s(onds)e(to)j(a)g('c)m(har*')
h(data)f(t)m(yp)s(e,)h(i.e.,)f(a)g(p)s(oin)m(ter)e(to)227
5488 y(a)e(c)m(haracter)i(arra)m(y)-8 b(.)43 b(Data)32
b(t)m(yp)s(e)f(con)m(v)m(ersion)g(will)d(b)s(e)i(p)s(erformed)g(for)g
(n)m(umeric)g(v)-5 b(alues)30 b(if)g(the)g(k)m(eyw)m(ord)227
5601 y(v)-5 b(alue)35 b(do)s(es)g(not)g(ha)m(v)m(e)h(the)f(same)h(data)
g(t)m(yp)s(e.)55 b(If)34 b(the)h(v)-5 b(alue)35 b(of)g(the)g(k)m(eyw)m
(ord)h(is)e(unde\014ned)f(\(i.e.,)k(the)227 5714 y(v)-5
b(alue)30 b(\014eld)f(is)h(blank\))f(then)h(an)g(error)g(status)h(=)f
(V)-10 b(ALUE)p 2280 5714 V 33 w(UNDEFINED)31 b(will)d(b)s(e)i
(returned.)p eop
%%Page: 36 44
36 43 bop 0 299 a Fj(36)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)227
555 y Fj(The)36 b(second)g(routine)f(returns)g(the)h(k)m(eyw)m(ord)h(v)
-5 b(alue)35 b(as)h(a)h(c)m(haracter)h(string)d(\(a)h(literal)f(cop)m
(y)i(of)f(what)227 668 y(is)d(in)f(the)i(v)-5 b(alue)33
b(\014eld\))f(regardless)h(of)g(the)h(in)m(trinsic)d(data)j(t)m(yp)s(e)
g(of)f(the)h(k)m(eyw)m(ord.)50 b(The)33 b(third)f(routine)227
781 y(returns)d(the)i(en)m(tire)f(80-c)m(haracter)j(header)e(record)f
(of)g(the)h(k)m(eyw)m(ord.)227 927 y(If)f(a)h(NULL)f(commen)m(t)i(p)s
(oin)m(ter)d(is)g(supplied)f(then)i(the)g(commen)m(t)i(string)d(will)f
(not)i(b)s(e)g(returned.)95 1160 y Fe(int)47 b(fits_read_key)e(/)i
(ffgky)286 1273 y(\(fitsfile)f(*fptr,)g(int)h(datatype,)e(char)i
(*keyname,)e(>)i(DTYPE)g(*value,)334 1386 y(char)g(*comment,)e(int)i
(*status\))95 1612 y(int)g(fits_read_keyword)c(/)48 b(ffgkey)286
1725 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h(char)g(*value,)f
(char)g(*comment,)334 1838 y(int)h(*status\))95 2063
y(int)g(fits_read_card)d(/)k(ffgcrd)286 2176 y(\(fitsfile)e(*fptr,)g
(char)g(*keyname,)g(>)h(char)g(*card,)f(int)h(*status\))0
2410 y Fi(3)81 b Fj(Return)27 b(the)h(n)m(th)h(header)f(record)g(in)f
(the)h(CHU.)h(The)e(\014rst)h(k)m(eyw)m(ord)h(in)d(the)j(header)f(is)f
(at)i(k)m(eyn)m(um)f(=)g(1;)i(if)227 2523 y(k)m(eyn)m(um)g(=)f(0)i
(then)e(these)h(routines)f(simply)e(reset)k(the)f(in)m(ternal)e
(CFITSIO)g(p)s(oin)m(ter)h(to)i(the)f(b)s(eginning)227
2635 y(of)f(the)g(header)g(so)g(that)g(subsequen)m(t)f(k)m(eyw)m(ord)h
(op)s(erations)g(will)d(start)j(at)h(the)f(top)g(of)f(the)h(header)g
(\(e.g.,)227 2748 y(prior)38 b(to)i(searc)m(hing)f(for)g(k)m(eyw)m
(ords)h(using)e(wild)e(cards)j(in)f(the)i(k)m(eyw)m(ord)g(name\).)68
b(The)38 b(\014rst)h(routine)227 2861 y(returns)j(the)h(en)m(tire)g
(80-c)m(haracter)i(header)e(record,)j(while)41 b(the)i(second)g
(routine)f(parses)g(the)h(record)227 2974 y(and)35 b(returns)f(the)i
(name,)h(v)-5 b(alue,)36 b(and)f(commen)m(t)h(\014elds)e(as)i(separate)
g(c)m(haracter)h(strings.)54 b(If)35 b(a)h(NULL)227 3087
y(commen)m(t)c(p)s(oin)m(ter)d(is)g(giv)m(en)i(on)f(input,)f(then)h
(the)g(commen)m(t)i(string)d(will)f(not)j(b)s(e)e(returned.)95
3320 y Fe(int)47 b(fits_read_record)d(/)j(ffgrec)286
3433 y(\(fitsfile)f(*fptr,)g(int)h(keynum,)e(>)j(char)f(*card,)f(int)h
(*status\))95 3659 y(int)g(fits_read_keyn)d(/)k(ffgkyn)286
3772 y(\(fitsfile)e(*fptr,)g(int)h(keynum,)e(>)j(char)f(*keyname,)e
(char)h(*value,)334 3885 y(char)h(*comment,)e(int)i(*status\))0
4118 y Fi(4)81 b Fj(Return)44 b(the)i(next)g(k)m(eyw)m(ord)g(whose)f
(name)h(matc)m(hes)g(one)g(of)g(the)f(strings)g(in)f('inclist')g(but)h
(do)s(es)g(not)227 4231 y(matc)m(h)31 b(an)m(y)g(of)g(the)f(strings)f
(in)g('exclist'.)41 b(The)30 b(strings)f(in)g(inclist)f(and)i(exclist)g
(ma)m(y)g(con)m(tain)h(wild)d(card)227 4344 y(c)m(haracters)34
b(\(*,)f(?,)f(and)f(#\))h(as)g(describ)s(ed)e(at)j(the)f(b)s(eginning)d
(of)j(this)f(section.)45 b(This)30 b(routine)h(searc)m(hes)227
4457 y(from)k(the)g(curren)m(t)g(header)g(p)s(osition)e(to)j(the)f(end)
f(of)h(the)h(header,)g(only)-8 b(,)36 b(and)e(do)s(es)h(not)g(con)m
(tin)m(ue)h(the)227 4570 y(searc)m(h)c(from)e(the)h(top)g(of)g(the)g
(header)g(bac)m(k)g(to)h(the)f(original)e(p)s(osition.)40
b(The)31 b(curren)m(t)f(header)h(p)s(osition)227 4683
y(ma)m(y)e(b)s(e)e(reset)h(with)f(the)h(\013grec)g(routine.)39
b(Note)29 b(that)g(nexc)f(ma)m(y)g(b)s(e)f(set)h(=)g(0)g(if)f(there)h
(are)g(no)g(k)m(eyw)m(ords)227 4796 y(to)h(b)s(e)f(excluded.)38
b(This)27 b(routine)g(returns)g(status)h(=)g(KEY)p 2268
4796 28 4 v 32 w(NO)p 2439 4796 V 33 w(EXIST)f(if)g(a)i(matc)m(hing)f
(k)m(eyw)m(ord)h(is)e(not)227 4909 y(found.)95 5142 y
Fe(int)47 b(fits_find_nextkey)c(/)48 b(ffgnxk)286 5255
y(\(fitsfile)e(*fptr,)g(char)g(**inclist,)f(int)i(ninc,)g(char)f
(**exclist,)334 5368 y(int)h(nexc,)f(>)i(char)e(*card,)h(int)94
b(*status\))0 5601 y Fi(5)81 b Fj(Return)25 b(the)h(ph)m(ysical)e
(units)h(string)g(from)g(an)h(existing)f(k)m(eyw)m(ord.)39
b(This)25 b(routine)g(uses)g(a)h(lo)s(cal)g(con)m(v)m(en)m(tion,)227
5714 y(sho)m(wn)f(in)f(the)h(follo)m(wing)f(example,)i(in)e(whic)m(h)g
(the)i(k)m(eyw)m(ord)f(units)f(are)i(enclosed)f(in)f(square)h(brac)m(k)
m(ets)h(in)p eop
%%Page: 37 45
37 44 bop 0 299 a Fh(5.4.)72 b(HEADER)31 b(KEYW)m(ORD)g(READ/WRITE)g(R)
m(OUTINES)1495 b Fj(37)227 555 y(the)30 b(b)s(eginning)d(of)j(the)g(k)m
(eyw)m(ord)g(commen)m(t)g(\014eld.)39 b(A)30 b(n)m(ull)e(string)g(is)h
(returned)f(if)h(no)g(units)f(are)i(de\014ned)227 668
y(for)g(the)h(k)m(eyw)m(ord.)239 913 y Fe(VELOCITY=)809
b(12.3)46 b(/)i([km/s])e(orbital)g(speed)95 1139 y(int)h
(fits_read_key_unit)c(/)48 b(ffgunt)286 1252 y(\(fitsfile)e(*fptr,)g
(char)g(*keyname,)g(>)h(char)g(*unit,)f(int)h(*status\))0
1497 y Fi(6)81 b Fj(Concatenate)39 b(the)f(header)f(k)m(eyw)m(ords)h
(in)f(the)g(CHDU)h(in)m(to)g(a)g(single)e(long)h(string)g(of)h(c)m
(haracters.)64 b(This)227 1610 y(pro)m(vides)27 b(a)i(con)m(v)m(enien)m
(t)g(w)m(a)m(y)g(of)g(passing)e(all)g(or)h(part)g(of)g(the)h(header)f
(information)e(in)h(a)i(FITS)e(HDU)i(to)227 1723 y(other)i
(subroutines.)38 b(Eac)m(h)31 b(80-c)m(haracter)h(\014xed-length)e(k)m
(eyw)m(ord)g(record)g(is)f(app)s(ended)f(to)j(the)f(output)227
1836 y(c)m(haracter)j(string,)e(in)f(order,)h(with)f(no)h(in)m(terv)m
(ening)g(separator)h(or)f(terminating)f(c)m(haracters.)45
b(The)31 b(last)227 1949 y(header)i(record)g(is)f(terminated)h(with)f
(a)h(NULL)g(c)m(haracter.)50 b(This)32 b(routine)g(allo)s(cates)h
(memory)g(for)g(the)227 2062 y(returned)c(c)m(haracter)j(arra)m(y)-8
b(,)32 b(so)f(the)f(calling)f(program)h(m)m(ust)g(free)h(the)g(memory)f
(when)f(\014nished.)227 2210 y(Selected)g(k)m(eyw)m(ords)f(ma)m(y)h(b)s
(e)e(excluded)g(from)h(the)g(returned)f(c)m(haracter)j(string.)39
b(If)27 b(the)i(second)f(param-)227 2323 y(eter)h(\(no)s(commen)m(ts\))
g(is)e(TR)m(UE)h(\(nonzero\))h(then)e(an)m(y)i(COMMENT,)f(HISTOR)-8
b(Y,)27 b(or)h(blank)f(k)m(eyw)m(ords)227 2435 y(in)i(the)i(header)f
(will)e(not)i(b)s(e)g(copied)g(to)h(the)g(output)f(string.)227
2583 y(The)25 b('exclist')h(parameter)g(ma)m(y)g(b)s(e)f(used)g(to)h
(supply)d(a)j(list)f(of)g(k)m(eyw)m(ords)h(that)h(are)f(to)g(b)s(e)f
(excluded)f(from)227 2696 y(the)29 b(output)g(c)m(haracter)h(string.)40
b(Wild)27 b(card)i(c)m(haracters)h(\(*,)g(?,)f(and)g(#\))g(ma)m(y)g(b)s
(e)f(used)g(in)g(the)h(excluded)227 2809 y(k)m(eyw)m(ord)h(names.)41
b(If)29 b(no)g(additional)f(k)m(eyw)m(ords)i(are)g(to)g(b)s(e)f
(excluded,)g(then)g(set)h(nexc)g(=)f(0)h(and)f(sp)s(ecify)227
2922 y(NULL)i(for)f(the)g(the)h(**header)g(parameter.)95
3167 y Fe(int)47 b(fits_hdr2str)286 3280 y(\(fitsfile)f(*fptr,)g(int)h
(nocomments,)d(char)j(**exclist,)e(int)i(nexc,)286 3393
y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i(*status\))0
3681 y Fd(5.4.2)112 b(Keyw)m(ord)38 b(W)-9 b(riting)35
b(Routines)0 3888 y Fi(1)81 b Fj(W)-8 b(rite)31 b(a)h(k)m(eyw)m(ord)g
(of)f(the)h(appropriate)e(data)i(t)m(yp)s(e)g(in)m(to)f(the)h(CHU.)f
(The)g(\014rst)g(routine)f(simply)f(app)s(ends)227 4001
y(a)34 b(new)f(k)m(eyw)m(ord)h(whereas)f(the)g(second)h(routine)e(will)
f(up)s(date)h(the)i(v)-5 b(alue)32 b(and)h(commen)m(t)h(\014elds)e(of)i
(the)227 4114 y(k)m(eyw)m(ord)g(if)f(it)g(already)g(exists,)h
(otherwise)f(it)g(app)s(ends)f(a)i(new)f(k)m(eyw)m(ord.)51
b(Note)35 b(that)f(the)g(address)e(to)227 4227 y(the)37
b(v)-5 b(alue,)37 b(and)e(not)i(the)f(v)-5 b(alue)35
b(itself,)i(m)m(ust)f(b)s(e)f(en)m(tered.)59 b(The)35
b(datat)m(yp)s(e)i(parameter)g(sp)s(eci\014es)e(the)227
4340 y(data)40 b(t)m(yp)s(e)f(of)g(the)g(k)m(eyw)m(ord)g(v)-5
b(alue)39 b(with)e(one)i(of)g(the)g(follo)m(wing)f(v)-5
b(alues:)57 b(TSTRING,)38 b(TLOGICAL)227 4452 y(\(==)e(in)m(t\),)i
(TBYTE,)f(TSHOR)-8 b(T,)35 b(TUSHOR)-8 b(T,)36 b(TINT,)g(TUINT,)g
(TLONG,)g(TULONG,)g(TFLO)m(A)-8 b(T,)227 4565 y(TDOUBLE.)24
b(Within)e(the)h(con)m(text)i(of)f(this)e(routine,)i(TSTRING)f(corresp)
s(onds)f(to)i(a)g('c)m(har*')g(data)h(t)m(yp)s(e,)227
4678 y(i.e.,)j(a)e(p)s(oin)m(ter)g(to)h(a)f(c)m(haracter)i(arra)m(y)-8
b(.)40 b(A)27 b(n)m(ull)d(p)s(oin)m(ter)h(ma)m(y)i(b)s(e)f(en)m(tered)h
(for)f(the)g(commen)m(t)h(parameter)227 4791 y(in)i(whic)m(h)g(case)j
(the)e(k)m(eyw)m(ord)h(commen)m(t)h(\014eld)d(will)e(b)s(e)j(unmo)s
(di\014ed)d(or)k(left)f(blank.)95 5036 y Fe(int)47 b(fits_write_key)d
(/)k(ffpky)286 5149 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(char)i
(*keyname,)e(DTYPE)h(*value,)477 5262 y(char)h(*comment,)e(>)j(int)f
(*status\))95 5488 y(int)g(fits_update_key)d(/)j(ffuky)286
5601 y(\(fitsfile)f(*fptr,)g(int)h(datatype,)e(char)i(*keyname,)e
(DTYPE)h(*value,)477 5714 y(char)h(*comment,)e(>)j(int)f(*status\))p
eop
%%Page: 38 46
38 45 bop 0 299 a Fj(38)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
555 y Fi(2)81 b Fj(W)-8 b(rite)43 b(a)h(k)m(eyw)m(ord)f(with)f(a)i(n)m
(ull)d(or)i(unde\014ned)e(v)-5 b(alue)42 b(\(i.e.,)47
b(the)d(v)-5 b(alue)42 b(\014eld)g(in)g(the)h(k)m(eyw)m(ord)h(is)e
(left)227 668 y(blank\).)69 b(The)40 b(\014rst)f(routine)g(simply)f
(app)s(ends)g(a)j(new)e(k)m(eyw)m(ord)i(whereas)f(the)g(second)g
(routine)g(will)227 781 y(up)s(date)27 b(the)h(v)-5 b(alue)28
b(and)f(commen)m(t)i(\014elds)d(of)i(the)g(k)m(eyw)m(ord)g(if)f(it)g
(already)h(exists,)g(otherwise)f(it)h(app)s(ends)227
894 y(a)h(new)g(k)m(eyw)m(ord.)40 b(A)29 b(n)m(ull)e(p)s(oin)m(ter)h
(ma)m(y)h(b)s(e)g(en)m(tered)g(for)g(the)g(commen)m(t)g(parameter)h(in)
d(whic)m(h)h(case)i(the)227 1007 y(k)m(eyw)m(ord)h(commen)m(t)h
(\014eld)c(will)g(b)s(e)i(unmo)s(di\014ed)d(or)k(left)f(blank.)95
1261 y Fe(int)47 b(fits_write_key_null)c(/)k(ffpkyu)286
1374 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*comment,)g(>)h
(int)g(*status\))95 1599 y(int)g(fits_update_key_null)c(/)k(ffukyu)286
1712 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*comment,)g(>)h
(int)g(*status\))0 1966 y Fi(3)81 b Fj(W)-8 b(rite)39
b(\(app)s(end\))f(a)h(COMMENT)g(or)g(HISTOR)-8 b(Y)38
b(k)m(eyw)m(ord)i(to)f(the)g(CHU.)h(The)e(commen)m(t)i(or)f(history)227
2079 y(string)30 b(will)d(b)s(e)j(con)m(tin)m(ued)g(o)m(v)m(er)i(m)m
(ultiple)c(k)m(eyw)m(ords)j(if)e(it)h(is)f(longer)h(than)g(70)i(c)m
(haracters.)95 2333 y Fe(int)47 b(fits_write_comment)c(/)48
b(ffpcom)286 2446 y(\(fitsfile)e(*fptr,)g(char)g(*comment,)g(>)h(int)g
(*status\))95 2672 y(int)g(fits_write_history)c(/)48
b(ffphis)286 2785 y(\(fitsfile)e(*fptr,)g(char)g(*history,)g(>)h(int)g
(*status\))0 3039 y Fi(4)81 b Fj(W)-8 b(rite)28 b(the)h(D)m(A)-8
b(TE)29 b(k)m(eyw)m(ord)g(to)g(the)g(CHU.)f(The)g(k)m(eyw)m(ord)h(v)-5
b(alue)28 b(will)d(con)m(tain)k(the)g(curren)m(t)f(system)g(date)227
3152 y(as)k(a)g(c)m(haracter)h(string)d(in)g('yyyy-mm-ddThh:mm:ss')f
(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 3264 y(in)c(the)g(header,)i(then)e(this)f(routine)h(will)e
(simply)g(up)s(date)i(the)h(k)m(eyw)m(ord)g(v)-5 b(alue)27
b(with)f(the)i(curren)m(t)g(date.)95 3518 y Fe(int)47
b(fits_write_date)d(/)j(ffpdat)286 3631 y(\(fitsfile)f(*fptr,)g(>)h
(int)g(*status\))0 3885 y Fi(5)81 b Fj(W)-8 b(rite)33
b(a)h(user)f(sp)s(eci\014ed)f(k)m(eyw)m(ord)i(record)f(in)m(to)g(the)h
(CHU.)g(This)d(is)i(a)h(lo)m(w{lev)m(el)f(routine)g(whic)m(h)f(can)i(b)
s(e)227 3998 y(used)f(to)h(write)e(an)m(y)i(arbitrary)e(record)h(in)m
(to)h(the)f(header.)50 b(The)32 b(record)i(m)m(ust)f(conform)g(to)h
(the)g(all)e(the)227 4111 y(FITS)e(format)h(requiremen)m(ts.)95
4365 y Fe(int)47 b(fits_write_record)c(/)48 b(ffprec)286
4478 y(\(fitsfile)e(*fptr,)g(char)g(*card,)g(>)i(int)f(*status\))0
4732 y Fi(6)81 b Fj(Up)s(date)34 b(an)g(80-c)m(haracter)j(record)e(in)e
(the)h(CHU.)h(If)f(a)h(k)m(eyw)m(ord)f(with)g(the)g(input)f(name)h
(already)g(exists,)227 4845 y(then)f(it)g(is)f(o)m(v)m(erwritten)h(b)m
(y)g(the)g(v)-5 b(alue)33 b(of)g(card.)49 b(This)31 b(could)h(mo)s
(dify)f(the)j(k)m(eyw)m(ord)f(name)g(as)h(w)m(ell)e(as)227
4958 y(the)e(v)-5 b(alue)29 b(and)f(commen)m(t)j(\014elds.)39
b(If)29 b(the)g(k)m(eyw)m(ord)h(do)s(esn't)f(already)g(exist)g(then)h
(a)f(new)g(k)m(eyw)m(ord)h(card)227 5070 y(is)g(app)s(ended)e(to)j(the)
g(header.)95 5324 y Fe(int)47 b(fits_update_card)d(/)j(ffucrd)286
5437 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*card,)g(>)i
(int)f(*status\))0 5691 y Fi(7)81 b Fj(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.)p eop
%%Page: 39 47
39 46 bop 0 299 a Fh(5.5.)72 b(PRIMAR)-8 b(Y)31 b(ARRA)-8
b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)f(I/O)g(R)m(OUTINES)1011
b Fj(39)95 555 y Fe(int)47 b(fits_modify_comment)c(/)k(ffmcom)286
668 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*comment,)g(>)h
(int)g(*status\))0 907 y Fi(8)81 b Fj(W)-8 b(rite)32
b(the)g(ph)m(ysical)f(units)g(string)g(in)m(to)h(an)g(existing)f(k)m
(eyw)m(ord.)46 b(This)31 b(routine)g(uses)h(a)g(lo)s(cal)g(con)m(v)m
(en)m(tion,)227 1020 y(sho)m(wn)g(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 1133 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 1372 y Fe(VELOCITY=)809
b(12.3)46 b(/)i([km/s])e(orbital)g(speed)95 1598 y(int)h
(fits_write_key_unit)c(/)k(ffpunt)286 1711 y(\(fitsfile)f(*fptr,)g
(char)g(*keyname,)g(char)g(*unit,)g(>)i(int)f(*status\))0
1950 y Fi(9)81 b Fj(Rename)30 b(an)h(existing)e(k)m(eyw)m(ord,)i
(preserving)e(the)h(curren)m(t)h(v)-5 b(alue)29 b(and)h(commen)m(t)i
(\014elds.)95 2189 y Fe(int)47 b(fits_modify_name)d(/)j(ffmnam)286
2302 y(\(fitsfile)f(*fptr,)g(char)g(*oldname,)g(char)g(*newname,)g(>)h
(int)g(*status\))0 2541 y Fi(10)f Fj(Delete)36 b(a)f(k)m(eyw)m(ord)g
(record.)54 b(The)34 b(space)i(o)s(ccupied)d(b)m(y)i(the)g(k)m(eyw)m
(ord)g(is)f(reclaimed)g(b)m(y)g(mo)m(ving)h(all)f(the)227
2654 y(follo)m(wing)d(header)i(records)f(up)g(one)h(ro)m(w)f(in)g(the)g
(header.)48 b(The)32 b(\014rst)g(routine)f(deletes)i(a)g(k)m(eyw)m(ord)
g(at)h(a)227 2767 y(sp)s(eci\014ed)22 b(p)s(osition)g(in)h(the)h
(header)f(\(the)i(\014rst)e(k)m(eyw)m(ord)h(is)f(at)h(p)s(osition)e
(1\),)k(whereas)e(the)g(second)g(routine)227 2880 y(deletes)29
b(a)g(sp)s(eci\014cally)d(named)i(k)m(eyw)m(ord.)41 b(Wild)27
b(card)h(c)m(haracters)i(ma)m(y)f(b)s(e)f(used)g(when)f(sp)s(ecifying)g
(the)227 2993 y(name)k(of)f(the)h(k)m(eyw)m(ord)g(to)g(b)s(e)e
(deleted.)95 3232 y Fe(int)47 b(fits_delete_record)c(/)48
b(ffdrec)286 3345 y(\(fitsfile)e(*fptr,)g(int)142 b(keynum,)94
b(>)47 b(int)g(*status\))95 3571 y(int)g(fits_delete_key)d(/)j(ffdkey)
286 3684 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(>)h(int)g
(*status\))0 4014 y Ff(5.5)135 b(Primary)46 b(Arra)l(y)f(or)g(IMA)l(GE)
f(Extension)i(I/O)f(Routines)0 4264 y Fj(These)22 b(routines)f(read)i
(or)f(write)g(data)h(v)-5 b(alues)22 b(in)f(the)h(primary)f(data)i
(arra)m(y)g(\(i.e.,)i(the)d(\014rst)g(HDU)h(in)e(a)i(FITS)e(\014le\))0
4377 y(or)32 b(an)g(IMA)m(GE)h(extension.)46 b(There)31
b(are)i(also)f(routines)f(to)i(get)g(information)d(ab)s(out)i(the)g
(data)h(t)m(yp)s(e)g(and)e(size)0 4490 y(of)c(the)g(image.)40
b(Users)27 b(should)e(also)i(read)g(the)g(follo)m(wing)e(c)m(hapter)j
(on)f(the)g(CFITSIO)e(iterator)j(function)d(whic)m(h)0
4603 y(pro)m(vides)32 b(a)i(more)f(`ob)5 b(ject)35 b(orien)m(ted')e
(metho)s(d)g(of)g(reading)f(and)h(writing)e(images.)50
b(The)32 b(iterator)i(function)e(is)0 4716 y(a)f(little)f(more)h
(complicated)f(to)i(use,)f(but)f(the)h(adv)-5 b(an)m(tages)32
b(are)f(that)h(it)e(usually)f(tak)m(es)j(less)e(co)s(de)h(to)g(p)s
(erform)0 4829 y(the)j(same)h(op)s(eration,)f(and)f(the)i(resulting)d
(program)h(oftens)i(runs)d(faster)i(b)s(ecause)g(the)h(FITS)e(\014les)g
(are)h(read)0 4942 y(and)c(written)f(using)g(the)i(most)f(e\016cien)m
(t)h(blo)s(c)m(k)f(size.)0 5102 y(C)25 b(programmers)h(should)e(note)i
(that)g(the)h(ordering)d(of)i(arra)m(ys)g(in)f(FITS)g(\014les,)h(and)f
(hence)h(in)f(all)f(the)i(CFITSIO)0 5215 y(calls,)38
b(is)e(more)h(similar)e(to)i(the)h(dimensionalit)m(y)c(of)j(arra)m(ys)g
(in)f(F)-8 b(ortran)38 b(rather)f(than)f(C.)h(F)-8 b(or)38
b(instance)f(if)f(a)0 5328 y(FITS)28 b(image)h(has)f(NAXIS1)h(=)f(100)i
(and)e(NAXIS2)h(=)f(50,)i(then)e(a)h(2-D)h(arra)m(y)f(just)f(large)h
(enough)f(to)i(hold)d(the)0 5441 y(image)k(should)d(b)s(e)i(declared)g
(as)g(arra)m(y[50][100])k(and)c(not)h(as)f(arra)m(y[100][50].)0
5601 y(The)h(`datat)m(yp)s(e')h(parameter)g(sp)s(eci\014es)d(the)j
(data)g(t)m(yp)s(e)f(of)g(the)g(`n)m(ulv)-5 b(al')30
b(and)h(`arra)m(y')h(p)s(oin)m(ters)e(and)g(can)i(ha)m(v)m(e)0
5714 y(one)h(of)g(the)g(follo)m(wing)e(v)-5 b(alues:)45
b(TBYTE,)33 b(TSBYTE,)f(TSHOR)-8 b(T,)32 b(TUSHOR)-8
b(T,)32 b(TINT,)h(TUINT,)f(TLONG,)p eop
%%Page: 40 48
40 47 bop 0 299 a Fj(40)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
555 y Fj(TLONGLONG,)c(TULONG,)g(TFLO)m(A)-8 b(T,)27 b(TDOUBLE.)f
(Automatic)h(data)g(t)m(yp)s(e)g(con)m(v)m(ersion)f(is)f(p)s(erformed)g
(if)0 668 y(the)j(data)h(t)m(yp)s(e)f(of)f(the)i(FITS)e(arra)m(y)h
(\(as)g(de\014ned)f(b)m(y)h(the)g(BITPIX)f(k)m(eyw)m(ord\))i(di\013ers)
d(from)i(that)g(sp)s(eci\014ed)e(b)m(y)0 781 y('datat)m(yp)s(e'.)54
b(The)34 b(data)h(v)-5 b(alues)34 b(are)g(also)h(automatically)f
(scaled)g(b)m(y)g(the)h(BSCALE)f(and)f(BZER)m(O)h(k)m(eyw)m(ord)0
894 y(v)-5 b(alues)30 b(as)g(they)h(are)g(b)s(eing)e(read)h(or)g
(written)g(in)f(the)h(FITS)g(arra)m(y)-8 b(.)0 1147 y
Fi(1)81 b Fj(Get)39 b(the)f(data)h(t)m(yp)s(e)f(or)g(equiv)-5
b(alen)m(t)37 b(data)i(t)m(yp)s(e)f(of)g(the)h(image.)64
b(The)37 b(\014rst)g(routine)g(returns)g(the)h(ph)m(ys-)227
1260 y(ical)j(data)g(t)m(yp)s(e)h(of)f(the)g(FITS)f(image,)k(as)e(giv)m
(en)f(b)m(y)g(the)g(BITPIX)g(k)m(eyw)m(ord,)j(with)c(allo)m(w)m(ed)h(v)
-5 b(alues)227 1373 y(of)44 b(BYTE)p 609 1373 28 4 v
33 w(IMG)g(\(8\),)k(SHOR)-8 b(T)p 1376 1373 V 32 w(IMG)44
b(\(16\),)49 b(LONG)p 2140 1373 V 33 w(IMG)44 b(\(32\),)49
b(FLO)m(A)-8 b(T)p 2948 1373 V 33 w(IMG)44 b(\(-32\),)49
b(and)43 b(DOU-)227 1486 y(BLE)p 415 1486 V 33 w(IMG)f(\(-64\).)75
b(The)40 b(second)i(routine)e(is)g(similar,)i(except)g(that)g(if)e(the)
h(image)h(pixel)d(v)-5 b(alues)41 b(are)227 1599 y(scaled,)28
b(with)f(non-default)f(v)-5 b(alues)27 b(for)g(the)h(BZER)m(O)f(and)g
(BSCALE)g(k)m(eyw)m(ords,)h(then)f(the)h(routine)f(will)227
1712 y(return)35 b(the)h('equiv)-5 b(alen)m(t')35 b(data)h(t)m(yp)s(e)g
(that)g(is)f(needed)g(to)i(store)f(the)g(scaled)f(v)-5
b(alues.)56 b(F)-8 b(or)36 b(example,)h(if)227 1824 y(BITPIX)27
b(=)f(16)i(and)e(BSCALE)h(=)f(0.1)i(then)f(the)g(equiv)-5
b(alen)m(t)26 b(data)i(t)m(yp)s(e)f(is)f(FLO)m(A)-8 b(T)p
3196 1824 V 33 w(IMG.)28 b(Similarly)23 b(if)227 1937
y(BITPIX)28 b(=)g(16,)i(BSCALE)d(=)h(1,)h(and)f(BZER)m(O)g(=)g(32768,)j
(then)d(the)g(the)h(pixel)d(v)-5 b(alues)28 b(span)f(the)i(range)227
2050 y(of)i(an)f(unsigned)e(short)i(in)m(teger)h(and)f(the)h(returned)e
(data)i(t)m(yp)s(e)f(will)e(b)s(e)i(USHOR)-8 b(T)p 3168
2050 V 32 w(IMG.)95 2303 y Fe(int)47 b(fits_get_img_type)c(/)48
b(ffgidt)286 2416 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*bitpix,)f(int)h
(*status\))95 2642 y(int)g(fits_get_img_equivtype)42
b(/)48 b(ffgiet)286 2755 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*bitpix,)f
(int)h(*status\))0 3008 y Fi(2)81 b Fj(Get)34 b(the)g(n)m(um)m(b)s(er)e
(of)i(dimensions,)e(and/or)i(the)g(size)f(of)h(eac)m(h)h(dimension)c
(in)h(the)i(image)g(.)50 b(The)33 b(n)m(um)m(b)s(er)227
3121 y(of)h(axes)f(in)f(the)h(image)h(is)e(giv)m(en)h(b)m(y)g(naxis,)g
(and)g(the)g(size)g(of)g(eac)m(h)i(dimension)30 b(is)i(giv)m(en)h(b)m
(y)g(the)h(naxes)227 3234 y(arra)m(y)d(\(a)g(maxim)m(um)f(of)g(maxdim)f
(dimensions)f(will)f(b)s(e)j(returned\).)95 3487 y Fe(int)47
b(fits_get_img_dim)d(/)j(ffgidm)286 3600 y(\(fitsfile)f(*fptr,)g(>)h
(int)g(*naxis,)f(int)h(*status\))95 3826 y(int)g(fits_get_img_size)c(/)
48 b(ffgisz)286 3939 y(\(fitsfile)e(*fptr,)g(int)h(maxdim,)e(>)j(long)f
(*naxes,)e(int)i(*status\))95 4164 y(int)g(fits_get_img_param)c(/)48
b(ffgipr)286 4277 y(\(fitsfile)e(*fptr,)g(int)h(maxdim,)e(>)j(int)f
(*bitpix,)e(int)i(*naxis,)f(long)h(*naxes,)334 4390 y(int)g(*status\))0
4643 y Fi(3)81 b Fj(Create)23 b(a)f(new)g(primary)e(arra)m(y)j(or)f
(IMA)m(GE)i(extension)d(with)g(a)i(sp)s(eci\014ed)e(data)i(t)m(yp)s(e)f
(and)g(size.)37 b(If)22 b(the)h(FITS)227 4756 y(\014le)29
b(is)g(curren)m(tly)f(empt)m(y)i(then)g(a)g(primary)e(arra)m(y)i(is)f
(created,)i(otherwise)e(a)h(new)f(IMA)m(GE)i(extension)e(is)227
4869 y(app)s(ended)g(to)i(the)g(\014le.)95 5122 y Fe(int)47
b(fits_create_img)d(/)j(ffcrim)286 5235 y(\()h(fitsfile)d(*fptr,)h(int)
h(bitpix,)f(int)h(naxis,)f(long)h(*naxes,)f(>)h(int)g(*status\))0
5488 y Fi(4)81 b Fj(W)-8 b(rite)39 b(a)g(rectangular)f(subimage)g(\(or)
h(the)g(whole)f(image\))h(to)g(the)g(FITS)f(data)h(arra)m(y)-8
b(.)67 b(The)38 b(fpixel)f(and)227 5601 y(lpixel)27 b(arra)m(ys)j(giv)m
(e)g(the)g(co)s(ordinates)f(of)g(the)h(\014rst)f(\(lo)m(w)m(er)h(left)f
(corner\))h(and)f(last)g(\(upp)s(er)f(righ)m(t)h(corner\))227
5714 y(pixels)g(in)g(FITS)h(image)g(to)h(b)s(e)f(written)f(to.)p
eop
%%Page: 41 49
41 48 bop 0 299 a Fh(5.5.)72 b(PRIMAR)-8 b(Y)31 b(ARRA)-8
b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)f(I/O)g(R)m(OUTINES)1011
b Fj(41)95 555 y Fe(int)47 b(fits_write_subset)c(/)48
b(ffpss)286 668 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(long)i
(*fpixel,)e(long)i(*lpixel,)334 781 y(DTYPE)f(*array,)g(>)i(int)f
(*status\))0 1018 y Fi(5)81 b Fj(W)-8 b(rite)38 b(pixels)f(in)m(to)h
(the)h(FITS)f(data)h(arra)m(y)-8 b(.)66 b('fpixel')37
b(is)g(an)h(arra)m(y)h(of)g(length)f(NAXIS)g(whic)m(h)f(giv)m(es)i(the)
227 1131 y(co)s(ordinate)k(of)g(the)g(starting)f(pixel)f(to)j(b)s(e)e
(written)g(to,)k(suc)m(h)d(that)g(fpixel[0])f(is)g(in)f(the)i(range)g
(1)g(to)227 1244 y(NAXIS1,)30 b(fpixel[1])d(is)g(in)g(the)i(range)g(1)f
(to)h(NAXIS2,)h(etc.)41 b(The)28 b(\014rst)f(routine)h(simply)d(writes)
j(the)g(arra)m(y)227 1357 y(of)e(pixels)d(to)j(the)g(FITS)f(\014le)f
(\(doing)h(data)h(t)m(yp)s(e)g(con)m(v)m(ersion)f(if)g(necessary\))h
(whereas)f(the)g(second)h(routine)227 1470 y(will)f(substitute)i(the)h
(appropriate)f(FITS)g(n)m(ull)f(v)-5 b(alue)27 b(for)h(an)m(y)g(elemen)
m(ts)g(whic)m(h)f(are)h(equal)f(to)i(the)f(input)227
1582 y(v)-5 b(alue)25 b(of)h(n)m(ulv)-5 b(al)23 b(\(note)j(that)g(this)
f(parameter)g(giv)m(es)h(the)g(address)e(of)h(the)h(n)m(ull)d(v)-5
b(alue,)26 b(not)g(the)f(n)m(ull)e(v)-5 b(alue)227 1695
y(itself)7 b(\).)45 b(F)-8 b(or)33 b(in)m(teger)f(FITS)f(arra)m(ys,)i
(the)g(FITS)e(n)m(ull)f(v)-5 b(alue)31 b(is)g(de\014ned)g(b)m(y)h(the)g
(BLANK)g(k)m(eyw)m(ord)h(\(an)227 1808 y(error)h(is)f(returned)h(if)f
(the)h(BLANK)h(k)m(eyw)m(ord)f(do)s(esn't)h(exist\).)52
b(F)-8 b(or)35 b(\015oating)f(p)s(oin)m(t)g(FITS)f(arra)m(ys)i(the)227
1921 y(sp)s(ecial)29 b(IEEE)h(NaN)h(\(Not-a-Num)m(b)s(er\))h(v)-5
b(alue)30 b(will)e(b)s(e)h(written)h(in)m(to)g(the)h(FITS)e(\014le.)40
b(If)30 b(a)h(n)m(ull)d(p)s(oin)m(ter)227 2034 y(is)40
b(en)m(tered)h(for)f(n)m(ulv)-5 b(al,)42 b(then)e(the)g(n)m(ull)f(v)-5
b(alue)40 b(is)f(ignored)h(and)f(this)h(routine)f(b)s(eha)m(v)m(es)i
(the)g(same)g(as)227 2147 y(\014ts)p 354 2147 28 4 v
33 w(write)p 590 2147 V 32 w(pix.)95 2384 y Fe(int)47
b(fits_write_pix)d(/)k(ffppx)286 2497 y(\(fitsfile)e(*fptr,)g(int)h
(datatype,)e(long)i(*fpixel,)e(long)i(nelements,)334
2610 y(DTYPE)f(*array,)g(int)h(*status\);)95 2836 y(int)g
(fits_write_pixnull)c(/)48 b(ffppxn)286 2949 y(\(fitsfile)e(*fptr,)g
(int)h(datatype,)e(long)i(*fpixel,)e(long)i(nelements,)334
3061 y(DTYPE)f(*array,)g(DTYPE)h(*nulval,)e(>)j(int)f(*status\);)0
3298 y Fi(6)81 b Fj(Set)24 b(FITS)g(data)i(arra)m(y)f(elemen)m(ts)g
(equal)f(to)h(the)g(appropriate)e(n)m(ull)g(pixel)g(v)-5
b(alue.)38 b(F)-8 b(or)25 b(in)m(teger)g(FITS)f(arra)m(ys,)227
3411 y(the)34 b(FITS)e(n)m(ull)f(v)-5 b(alue)33 b(is)f(de\014ned)g(b)m
(y)h(the)h(BLANK)f(k)m(eyw)m(ord)h(\(an)f(error)g(is)f(returned)g(if)g
(the)i(BLANK)227 3524 y(k)m(eyw)m(ord)23 b(do)s(esn't)g(exist\).)38
b(F)-8 b(or)23 b(\015oating)f(p)s(oin)m(t)g(FITS)g(arra)m(ys)g(the)h
(sp)s(ecial)e(IEEE)h(NaN)h(\(Not-a-Num)m(b)s(er\))227
3637 y(v)-5 b(alue)33 b(will)d(b)s(e)j(written)f(in)m(to)h(the)h(FITS)e
(\014le.)48 b(Note)34 b(that)g('\014rstelem')f(is)f(a)i(scalar)f
(giving)f(the)h(o\013set)h(to)227 3750 y(the)d(\014rst)e(pixel)g(to)i
(b)s(e)f(written)f(in)h(the)g(equiv)-5 b(alen)m(t)30
b(1-dimensional)e(arra)m(y)j(of)g(image)f(pixels.)95
3987 y Fe(int)47 b(fits_write_null_img)c(/)k(ffpprn)286
4100 y(\(fitsfile)f(*fptr,)g(long)g(firstelem,)f(long)i(nelements,)e(>)
i(int)g(*status\))0 4337 y Fi(7)81 b Fj(Read)33 b(a)h(rectangular)g
(subimage)f(\(or)h(the)g(whole)f(image\))h(from)f(the)h(FITS)f(data)h
(arra)m(y)-8 b(.)52 b(The)33 b(fpixel)f(and)227 4450
y(lpixel)27 b(arra)m(ys)j(giv)m(e)g(the)g(co)s(ordinates)f(of)g(the)h
(\014rst)f(\(lo)m(w)m(er)h(left)f(corner\))h(and)f(last)g(\(upp)s(er)f
(righ)m(t)h(corner\))227 4563 y(pixels)c(to)j(b)s(e)e(read)h(from)g
(the)g(FITS)f(image.)40 b(Unde\014ned)25 b(FITS)h(arra)m(y)i(elemen)m
(ts)f(will)d(b)s(e)i(returned)g(with)227 4675 y(a)k(v)-5
b(alue)29 b(=)f(*n)m(ullv)-5 b(al,)28 b(\(note)i(that)g(this)e
(parameter)i(giv)m(es)f(the)h(address)e(of)h(the)h(n)m(ull)d(v)-5
b(alue,)29 b(not)h(the)f(n)m(ull)227 4788 y(v)-5 b(alue)35
b(itself)7 b(\))35 b(unless)f(n)m(ulv)-5 b(al)34 b(=)i(0)g(or)f(*n)m
(ulv)-5 b(al)35 b(=)g(0,)j(in)c(whic)m(h)g(case)j(no)f(c)m(hec)m(ks)h
(for)e(unde\014ned)f(pixels)227 4901 y(will)28 b(b)s(e)i(p)s(erformed.)
95 5138 y Fe(int)47 b(fits_read_subset)d(/)j(ffgsv)286
5251 y(\(fitsfile)f(*fptr,)g(int)94 b(datatype,)46 b(long)g(*fpixel,)g
(long)g(*lpixel,)g(long)h(*inc,)334 5364 y(DTYPE)f(*nulval,)g(>)h
(DTYPE)g(*array,)f(int)h(*anynul,)e(int)i(*status\))0
5601 y Fi(8)81 b Fj(Read)32 b(pixels)f(from)h(the)g(FITS)g(data)h(arra)
m(y)-8 b(.)48 b('fpixel')31 b(is)h(the)g(starting)g(pixel)f(lo)s
(cation)h(and)g(is)g(an)g(arra)m(y)h(of)227 5714 y(length)g(NAXIS)g
(suc)m(h)g(that)h(fpixel[0])e(is)g(in)g(the)i(range)f(1)h(to)g(NAXIS1,)
g(fpixel[1])e(is)h(in)f(the)h(range)h(1)f(to)p eop
%%Page: 42 50
42 49 bop 0 299 a Fj(42)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)227
555 y Fj(NAXIS2,)f(etc.)41 b(The)28 b(nelemen)m(ts)g(parameter)g(sp)s
(eci\014es)f(the)h(n)m(um)m(b)s(er)f(of)h(pixels)f(to)i(read.)39
b(If)28 b(fpixel)e(is)h(set)227 668 y(to)36 b(the)f(\014rst)f(pixel,)h
(and)g(nelemen)m(ts)f(is)g(set)i(equal)f(to)g(the)g(NAXIS1)h(v)-5
b(alue,)36 b(then)e(this)g(routine)g(w)m(ould)227 781
y(read)28 b(the)g(\014rst)f(ro)m(w)h(of)g(the)h(image.)40
b(Alternativ)m(ely)-8 b(,)28 b(if)f(nelemen)m(ts)h(is)f(set)h(equal)g
(to)g(NAXIS1)g(*)h(NAXIS2)227 894 y(then)h(it)g(w)m(ould)f(read)i(an)f
(en)m(tire)g(2D)h(image,)g(or)g(the)f(\014rst)g(plane)f(of)i(a)g(3-D)g
(datacub)s(e.)227 1063 y(The)39 b(\014rst)f(routine)g(will)f(return)g
(an)m(y)j(unde\014ned)d(pixels)g(in)h(the)h(FITS)f(arra)m(y)i(equal)e
(to)i(the)f(v)-5 b(alue)39 b(of)227 1176 y(*n)m(ullv)-5
b(al)41 b(\(note)i(that)g(this)e(parameter)i(giv)m(es)g(the)f(address)g
(of)g(the)h(n)m(ull)d(v)-5 b(alue,)45 b(not)e(the)f(n)m(ull)e(v)-5
b(alue)227 1289 y(itself)7 b(\))39 b(unless)f(n)m(ulv)-5
b(al)37 b(=)i(0)h(or)f(*n)m(ulv)-5 b(al)38 b(=)h(0,)j(in)c(whic)m(h)g
(case)j(no)e(c)m(hec)m(ks)i(for)e(unde\014ned)e(pixels)h(will)227
1402 y(b)s(e)c(p)s(erformed.)51 b(The)34 b(second)g(routine)g(is)f
(similar)f(except)j(that)g(an)m(y)g(unde\014ned)d(pixels)g(will)g(ha)m
(v)m(e)k(the)227 1515 y(corresp)s(onding)29 b(n)m(ullarra)m(y)f(elemen)
m(t)j(set)g(equal)f(to)h(TR)m(UE)g(\(=)f(1\).)95 1813
y Fe(int)47 b(fits_read_pix)e(/)i(ffgpxv)286 1926 y(\(fitsfile)f
(*fptr,)g(int)94 b(datatype,)46 b(long)g(*fpixel,)g(long)g(nelements,)
334 2039 y(DTYPE)g(*nulval,)g(>)h(DTYPE)g(*array,)f(int)h(*anynul,)e
(int)i(*status\))95 2265 y(int)g(fits_read_pixnull)c(/)48
b(ffgpxf)286 2378 y(\(fitsfile)e(*fptr,)g(int)94 b(datatype,)46
b(long)g(*fpixel,)g(long)g(nelements,)334 2491 y(>)i(DTYPE)e(*array,)g
(char)g(*nullarray,)f(int)i(*anynul,)f(int)g(*status\))0
2869 y Ff(5.6)135 b(Image)46 b(Compression)0 3129 y Fj(CFITSIO)29
b(no)m(w)h(transparen)m(tly)g(supp)s(orts)e(2)j(t)m(yp)s(es)f(of)h
(image)g(compression:)0 3289 y(1\))j(The)f(en)m(tire)h(FITS)e(\014le)h
(ma)m(y)h(b)s(e)f(externally)g(compressed)g(with)f(the)i(gzip)f(or)g
(Unix)f(compress)i(algorithm,)0 3402 y(pro)s(ducing)22
b(a)j(*.gz)h(or)f(*.Z)g(\014le,)g(resp)s(ectiv)m(ely)-8
b(.)38 b(When)25 b(reading)e(compressed)i(\014les)e(of)i(this)e(t)m(yp)
s(e,)k(CFITSIO)c(\014rst)0 3515 y(uncompresses)j(the)i(en)m(tire)f
(\014le)f(in)m(to)h(memory)g(b)s(efore)g(p)s(erforming)e(the)i
(requested)g(read)g(op)s(erations.)39 b(Output)0 3628
y(\014les)30 b(can)h(b)s(e)f(directly)f(written)h(in)f(the)i(gzip)f
(compressed)g(format)h(if)f(the)h(user-sp)s(eci\014ed)d(\014lename)i
(ends)g(with)0 3741 y(`.gz'.)42 b(In)29 b(this)f(case,)j(CFITSIO)d
(initially)e(writes)j(the)h(uncompressed)e(\014le)h(in)f(memory)i(and)f
(then)g(compresses)0 3853 y(it)k(and)f(writes)g(it)h(to)g(disk)f(when)g
(the)h(FITS)f(\014le)h(is)f(closed,)h(th)m(us)g(sa)m(ving)g(user)f
(disk)g(space.)49 b(Read)33 b(and)g(write)0 3966 y(access)c(to)g(these)
f(compressed)f(FITS)g(\014les)g(is)g(generally)g(quite)g(fast;)i(the)f
(main)e(limitation)g(is)h(that)h(there)g(m)m(ust)0 4079
y(b)s(e)i(enough)g(a)m(v)-5 b(ailable)30 b(memory)g(\(or)h(sw)m(ap)f
(space\))h(to)g(hold)e(the)i(en)m(tire)f(uncompressed)f(FITS)h(\014le.)
0 4239 y(2\))36 b(CFITSIO)d(also)i(supp)s(orts)e(a)i(new)m(er)g(image)h
(compression)e(format)h(in)f(whic)m(h)f(the)i(image)h(is)e(divided)e
(in)m(to)0 4352 y(a)43 b(grid)e(of)h(rectangular)g(tiles,)j(and)c(eac)m
(h)j(tile)d(of)i(pixels)d(is)i(individually)36 b(compressed.)76
b(The)42 b(compressed)0 4465 y(tiles)36 b(are)h(stored)g(in)e(ro)m(ws)i
(of)f(a)i(v)-5 b(ariable)35 b(length)h(arra)m(y)h(column)f(in)f(a)i
(FITS)f(binary)f(table,)j(but)e(CFITSIO)0 4578 y(recognizes)31
b(that)f(the)g(binary)f(table)g(extension)h(con)m(tains)g(an)g(image)g
(and)g(treats)h(it)e(as)h(if)f(it)h(w)m(ere)g(an)g(IMA)m(GE)0
4691 y(extension.)46 b(This)31 b(tile-compressed)g(format)i(is)e(esp)s
(ecially)g(w)m(ell)g(suited)g(for)h(compressing)g(v)m(ery)g(large)h
(images)0 4804 y(b)s(ecause)e(a\))h(the)g(FITS)e(header)h(k)m(eyw)m
(ords)h(remain)e(uncompressed)g(for)h(rapid)e(read)i(access,)i(and)e(b)
s(ecause)g(b\))0 4917 y(it)j(is)g(p)s(ossible)e(to)j(extract)i(and)d
(uncompress)f(sections)i(of)f(the)h(image)g(without)f(ha)m(ving)g(to)h
(uncompress)f(the)0 5030 y(en)m(tire)e(image.)45 b(This)30
b(format)j(is)e(also)g(m)m(uc)m(h)h(more)g(e\013ectiv)m(e)i(in)d
(compressing)f(\015oating)i(p)s(oin)m(t)f(images)h(\(using)0
5143 y(a)f(lossy)e(compression)h(algorithm\))g(than)g(simply)e
(compressing)h(the)i(image)f(using)f(gzip)h(or)g(compress.)0
5303 y(A)g(detailed)g(description)e(of)j(this)e(format)i(is)e(a)m(v)-5
b(ailable)30 b(at:)0 5601 y Fe(http://heasarc.gsfc.nasa)o(.gov)o(/doc)o
(s/s)o(oftw)o(are/)o(fit)o(sio/)334 5714 y(compression/compress_imag)o
(e.h)o(tml)p eop
%%Page: 43 51
43 50 bop 0 299 a Fh(5.6.)72 b(IMA)m(GE)31 b(COMPRESSION)2567
b Fj(43)0 555 y(The)36 b(N-dimensional)f(FITS)h(image)h(can)g(b)s(e)g
(divided)d(in)m(to)j(an)m(y)g(desired)e(rectangular)i(grid)f(of)h
(compression)0 668 y(tiles.)75 b(By)43 b(default)e(the)i(tiles)e(are)h
(c)m(hosen)h(to)g(corresp)s(ond)e(to)i(the)f(ro)m(ws)h(of)f(the)g
(image,)k(eac)m(h)d(con)m(taining)0 781 y(NAXIS1)36 b(pixels.)56
b(F)-8 b(or)36 b(example,)h(a)g(800)g(x)f(800)h(x)f(4)g(pixel)e(data)j
(cub)s(e)e(w)m(ould)g(b)s(e)g(divided)e(in)i(to)h(3200)i(tiles)0
894 y(con)m(taining)30 b(800)h(pixels)d(eac)m(h)k(b)m(y)e(default.)40
b(Alternativ)m(ely)-8 b(,)30 b(this)f(data)i(cub)s(e)e(could)g(b)s(e)h
(divided)d(in)m(to)j(256)i(tiles)0 1007 y(that)c(are)g(eac)m(h)g(100)h
(X)e(100)i(X)e(1)h(pixels)d(in)h(size,)i(or)f(4)h(tiles)e(con)m
(taining)h(800)i(x)e(800)h(X)g(1)g(pixels,)e(or)h(a)h(single)e(tile)0
1120 y(con)m(taining)j(the)h(en)m(tire)f(data)h(cub)s(e.)40
b(Note)31 b(that)f(the)f(image)h(dimensions)d(are)j(not)f(required)f
(to)i(b)s(e)f(an)h(in)m(teger)0 1233 y(m)m(ultiple)j(of)j(the)g(tile)e
(dimensions,)h(so,)i(for)e(example,)i(this)e(data)h(cub)s(e)f(could)f
(also)i(b)s(e)f(divided)d(in)m(to)k(250)h(X)0 1346 y(200)32
b(pixel)c(tiles,)i(in)f(whic)m(h)g(case)j(the)e(last)g(tile)g(in)f(eac)
m(h)j(ro)m(w)e(w)m(ould)f(only)h(con)m(tain)g(50)i(X)e(200)i(pixels.)0
1506 y(Curren)m(tly)-8 b(,)29 b(3)i(image)f(compression)g(algorithms)f
(are)h(supp)s(orted:)39 b(Rice,)31 b(GZIP)-8 b(,)30 b(and)g(PLIO.)g
(Rice)g(and)f(GZIP)0 1619 y(are)34 b(general)f(purp)s(ose)f(algorithms)
g(that)i(can)g(b)s(e)f(used)g(to)h(compress)f(almost)h(an)m(y)f(image.)
51 b(The)32 b(PLIO)h(algo-)0 1732 y(rithm,)38 b(on)f(the)g(other)h
(hand,)g(is)e(more)i(sp)s(ecialized)d(and)i(w)m(as)h(dev)m(elop)s(ed)e
(for)h(use)g(in)f(IRAF)i(to)g(store)g(pixel)0 1844 y(data)31
b(qualit)m(y)f(masks.)41 b(It)30 b(is)g(designed)f(to)i(only)f(w)m(ork)
g(on)h(images)f(con)m(taining)g(p)s(ositiv)m(e)g(in)m(tegers)g(with)g
(v)-5 b(alues)0 1957 y(up)29 b(to)i(ab)s(out)g(2**24.)42
b(Other)30 b(image)h(compression)e(algorithms)h(ma)m(y)h(b)s(e)e(supp)s
(orted)g(in)g(the)h(future.)0 2118 y(The)41 b(3)g(supp)s(orted)f(image)
h(compression)f(algorithms)g(are)i(all)e('loss-less')h(when)f(applied)f
(to)j(in)m(teger)g(FITS)0 2230 y(images;)34 b(the)f(pixel)e(v)-5
b(alues)31 b(are)i(preserv)m(ed)g(exactly)g(with)e(no)i(loss)e(of)i
(information)e(during)f(the)j(compression)0 2343 y(and)i(uncompression)
f(pro)s(cess.)57 b(Floating)36 b(p)s(oin)m(t)f(FITS)g(images)h(\(whic)m
(h)f(ha)m(v)m(e)i(BITPIX)f(=)f(-32)i(or)f(-64\))i(are)0
2456 y(\014rst)33 b(quan)m(tized)h(in)m(to)g(scaled)g(in)m(teger)h
(pixel)d(v)-5 b(alues)33 b(b)s(efore)h(b)s(eing)f(compressed.)51
b(This)32 b(tec)m(hnique)i(pro)s(duces)0 2569 y(m)m(uc)m(h)27
b(higher)e(compression)h(factors)h(than)g(simply)d(using)h(GZIP)h(to)i
(compress)e(the)h(image,)h(but)e(it)g(also)h(means)0
2682 y(that)46 b(the)f(original)f(\015oating)h(v)-5 b(alue)45
b(pixel)e(v)-5 b(alues)45 b(ma)m(y)h(not)f(b)s(e)g(precisely)f
(returned)g(when)g(the)h(image)h(is)0 2795 y(uncompressed.)55
b(When)35 b(done)h(prop)s(erly)-8 b(,)35 b(this)g(only)f(discards)g
(the)i('noise')g(from)f(the)h(\015oating)f(p)s(oin)m(t)g(v)-5
b(alues)0 2908 y(without)25 b(losing)h(an)m(y)g(signi\014can)m(t)g
(information.)37 b(The)26 b(amoun)m(t)h(of)g(noise)f(that)h(is)e
(discarded)g(can)i(b)s(e)e(con)m(trolled)0 3021 y(b)m(y)30
b(the)h('noise)p 511 3021 28 4 v 32 w(bits')f(compression)f(parameter.)
0 3181 y(No)42 b(sp)s(ecial)e(action)i(is)e(required)g(to)i(read)g
(tile-compressed)e(images)i(b)s(ecause)f(all)g(the)g(CFITSIO)f
(routines)0 3294 y(that)33 b(read)g(normal)f(uncompressed)g(FITS)g
(images)h(can)g(also)g(read)g(images)g(in)e(the)i(tile-compressed)f
(format;)0 3407 y(CFITSIO)39 b(essen)m(tially)h(treats)h(the)g(binary)e
(table)h(that)i(con)m(tains)f(the)f(compressed)h(tiles)e(as)i(if)f(it)g
(w)m(ere)h(an)0 3520 y(IMA)m(GE)31 b(extension.)0 3680
y(When)d(creating)h(\(writing\))f(a)h(new)f(image)h(with)e(CFITSIO,)h
(a)h(normal)e(uncompressed)h(FITS)g(primary)e(arra)m(y)0
3793 y(or)k(IMA)m(GE)h(extension)f(will)d(b)s(e)i(written)h(unless)e
(the)i(tile-compressed)f(format)i(has)f(b)s(een)f(sp)s(eci\014ed)f(in)h
(1)h(of)h(2)0 3906 y(p)s(ossible)d(w)m(a)m(ys:)0 4066
y(1\))d(A)m(t)g(run)d(time,)j(when)e(sp)s(ecifying)f(the)i(name)g(of)g
(the)g(output)g(FITS)f(\014le)g(to)i(b)s(e)e(created)i(at)g(run)d
(time,)j(the)g(user)0 4179 y(can)j(indicate)g(that)g(images)h(should)d
(b)s(e)h(written)h(in)e(tile-compressed)i(format)g(b)m(y)g(enclosing)g
(the)g(compression)0 4292 y(parameters)23 b(in)e(square)h(brac)m(k)m
(ets)i(follo)m(wing)d(the)h(ro)s(ot)h(disk)e(\014le)g(name.)39
b(The)21 b(`imcop)m(y')i(example)f(program)g(that)0 4405
y(included)30 b(with)i(the)i(CFITSIO)d(distribution)f(can)j(b)s(e)g
(used)f(for)h(this)g(purp)s(ose)e(to)j(compress)f(or)g(uncompress)0
4517 y(images.)58 b(Here)36 b(are)h(some)f(examples)g(of)g(the)g
(extended)g(\014le)f(name)h(syn)m(tax)h(for)f(sp)s(ecifying)e
(tile-compressed)0 4630 y(output)c(images:)191 4924 y
Fe(myfile.fit[compress])185 b(-)48 b(use)f(the)g(default)e(compression)
g(algorithm)g(\(Rice\))1432 5036 y(and)i(the)g(default)e(tile)i(size)g
(\(row)f(by)i(row\))191 5262 y(myfile.fit[compress)42
b(GZIP])47 b(-)g(use)g(the)g(specified)e(compression)g(algorithm;)191
5375 y(myfile.fit[compress)d(Rice])238 b(only)46 b(the)h(first)g
(letter)f(of)h(the)g(algorithm)191 5488 y(myfile.fit[compress)42
b(PLIO])238 b(name)46 b(is)i(required.)191 5714 y(myfile.fit[compress)
42 b(R)48 b(100,100])141 b(-)47 b(use)g(Rice)g(compression)e(and)p
eop
%%Page: 44 52
44 51 bop 0 299 a Fj(44)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)1861
555 y Fe(100)47 b(x)h(100)f(pixel)f(tile)h(size)191 781
y(myfile.fit[compress)42 b(R)48 b(100,100;2])d(-)i(as)h(above,)e(and)h
(also)f(use)h(noisebits)e(=)j(2)0 1031 y Fj(2\))29 b(Before)g(calling)d
(the)i(CFITSIO)e(routine)h(to)i(write)e(the)h(image)g(header)g(k)m(eyw)
m(ords)g(\(e.g.,)j(\014ts)p 3335 1031 28 4 v 32 w(create)p
3603 1031 V 34 w(image\))0 1144 y(the)37 b(programmer)g(can)g(call)g
(the)g(routines)f(describ)s(ed)f(b)s(elo)m(w)h(to)i(sp)s(ecify)e(the)h
(compression)f(algorithm)h(and)0 1257 y(the)d(tiling)e(pattern)i(that)h
(is)e(to)i(b)s(e)e(used.)51 b(There)34 b(are)h(3)f(routines)f(for)h(sp)
s(ecifying)e(the)i(v)-5 b(arious)33 b(compression)0 1370
y(parameters)e(and)e(3)i(corresp)s(onding)e(routines)g(to)i(return)e
(the)i(curren)m(t)f(v)-5 b(alues)30 b(of)g(the)h(parameters:)95
1619 y Fe(int)47 b(fits_set_compression_type\()o(fit)o(sfil)o(e)42
b(*fptr,)k(int)h(comptype,)e(int)i(*status\))95 1732
y(int)g(fits_set_tile_dim\(fitsfile)41 b(*fptr,)46 b(int)h(ndim,)f
(long)h(*tilesize,)e(int)i(*status\))95 1845 y(int)g
(fits_set_noise_bits\(fitsfi)o(le)41 b(*fptr,)47 b(int)f(noisebits,)f
(int)i(*status\))95 2071 y(int)g(fits_get_compression_type\()o(fit)o
(sfil)o(e)42 b(*fptr,)k(int)h(*comptype,)e(int)i(*status\))95
2184 y(int)g(fits_get_tile_dim\(fitsfile)41 b(*fptr,)46
b(int)h(ndim,)f(long)h(*tilesize,)e(int)i(*status\))95
2297 y(int)g(fits_get_noise_bits\(fitsfi)o(le)41 b(*fptr,)47
b(int)f(*noisebits,)f(int)i(*status\))0 2547 y Fj(3)24
b(sym)m(b)s(olic)d(constan)m(ts)k(are)e(de\014ned)f(for)h(use)g(as)g
(the)h(v)-5 b(alue)22 b(of)i(the)f(`compt)m(yp)s(e')h(parameter:)38
b(GZIP)p 3447 2547 V 32 w(1,)25 b(RICE)p 3802 2547 V
32 w(1,)0 2660 y(or)i(PLIO)p 336 2660 V 32 w(1.)39 b(En)m(tering)26
b(NULL)h(for)f(compt)m(yp)s(e)h(will)d(turn)i(o\013)h(the)g
(tile-compression)e(and)h(cause)h(normal)f(FITS)0 2773
y(images)k(to)i(b)s(e)d(written.)0 2933 y(The)h('noisebits')g
(parameter)i(is)e(only)g(used)g(when)g(compressing)g(\015oating)h(p)s
(oin)m(t)f(images.)43 b(The)30 b(default)g(v)-5 b(alue)0
3046 y(is)24 b(4.)40 b(Decreasing)25 b(the)h(v)-5 b(alue)24
b(of)h(noisebits)f(will)e(impro)m(v)m(e)j(the)h(o)m(v)m(erall)f
(compression)f(e\016ciency)h(at)h(the)f(exp)s(ense)0
3159 y(of)31 b(losing)e(more)h(information.)0 3319 y(A)g(small)e
(example)h(program)g(called)g('imcop)m(y')g(is)g(included)e(with)h
(CFITSIO)g(that)i(can)f(b)s(e)g(used)g(to)h(compress)0
3432 y(\(or)44 b(uncompress\))g(an)m(y)g(FITS)g(image.)82
b(This)42 b(program)i(can)h(b)s(e)e(used)h(to)g(exp)s(erimen)m(t)g
(with)f(the)h(v)-5 b(arious)0 3545 y(compression)29 b(options)h(on)g
(existing)g(FITS)f(images)i(as)f(sho)m(wn)g(in)f(these)i(examples:)0
3794 y Fe(1\))95 b(imcopy)46 b(infile.fit)f('outfile.fit[compress]')334
4020 y(This)i(will)f(use)h(the)g(default)f(compression)f(algorithm)g
(\(Rice\))h(and)h(the)334 4133 y(default)f(tile)h(size)f(\(row)h(by)g
(row\))0 4359 y(2\))95 b(imcopy)46 b(infile.fit)f
('outfile.fit[compress)d(GZIP]')334 4585 y(This)47 b(will)f(use)h(the)g
(GZIP)g(compression)e(algorithm)g(and)i(the)g(default)334
4698 y(tile)g(size)f(\(row)h(by)g(row\).)94 b(The)47
b(allowed)f(compression)f(algorithms)g(are)334 4811 y(Rice,)h(GZIP,)h
(and)g(PLIO.)94 b(Only)46 b(the)h(first)g(letter)f(of)h(the)g
(algorithm)334 4924 y(name)g(needs)f(to)h(be)g(specified.)0
5149 y(3\))95 b(imcopy)46 b(infile.fit)f('outfile.fit[compress)d(G)47
b(100,100]')334 5375 y(This)g(will)f(use)h(the)g(GZIP)g(compression)e
(algorithm)g(and)i(100)g(X)g(100)g(pixel)334 5488 y(tiles.)0
5714 y(4\))95 b(imcopy)46 b(infile.fit)f('outfile.fit[compress)d(R)47
b(100,100;)f(4]')p eop
%%Page: 45 53
45 52 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29 b(AND)i(BINAR)-8
b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864 b Fj(45)334
668 y Fe(This)47 b(will)f(use)h(the)g(Rice)g(compression)e(algorithm,)g
(100)h(X)i(100)f(pixel)334 781 y(tiles,)f(and)h(noise_bits)e(=)j(4)f
(\(assuming)e(the)i(input)g(image)f(has)h(a)334 894 y(floating)f(point)
g(data)h(type\).)93 b(Decreasing)45 b(the)i(value)g(of)g(noisebits)334
1007 y(will)g(improve)f(the)g(overall)g(compression)f(efficiency)g(at)i
(the)g(expense)334 1120 y(of)g(losing)f(more)h(information.)0
1346 y(5\))95 b(imcopy)46 b(infile.fit)f(outfile.fit)334
1571 y(If)i(the)g(input)g(file)f(is)h(in)h(tile-compressed)43
b(format,)j(then)h(it)g(will)f(be)334 1684 y(uncompressed)f(to)i(the)g
(output)f(file.)94 b(Otherwise,)45 b(it)i(simply)f(copies)334
1797 y(the)h(input)f(image)h(to)g(the)g(output)f(image.)0
2023 y(6\))95 b(imcopy)46 b('infile.fit[1001:1500,20)o(01:2)o(500])o(')
89 b(outfile.fit)334 2249 y(This)47 b(extracts)e(a)j(500)f(X)g(500)g
(pixel)f(section)g(of)h(the)g(much)g(larger)334 2362
y(input)f(image)h(\(which)f(may)h(be)g(in)g(tile-compressed)d
(format\).)93 b(The)334 2475 y(output)46 b(is)h(a)h(normal)e
(uncompressed)e(FITS)j(image.)0 2700 y(7\))95 b(imcopy)46
b('infile.fit[1001:1500,20)o(01:2)o(500])o(')89 b(outfile.fit.gz)334
2926 y(Same)47 b(as)g(above,)f(except)g(the)h(output)f(file)h(is)g
(externally)e(compressed)334 3039 y(using)h(the)h(gzip)g(algorithm.)0
3513 y Ff(5.7)135 b(ASCI)t(I)45 b(and)f(Binary)h(T)-11
b(able)45 b(Routines)0 3768 y Fj(These)36 b(routines)f(p)s(erform)g
(read)i(and)e(write)h(op)s(erations)g(on)g(columns)f(of)i(data)g(in)e
(FITS)h(ASCI)s(I)e(or)j(Binary)0 3881 y(tables.)46 b(Note)33
b(that)g(in)d(the)j(follo)m(wing)d(discussions,)g(the)i(\014rst)g(ro)m
(w)g(and)f(column)g(in)g(a)h(table)g(is)g(at)g(p)s(osition)f(1)0
3994 y(not)g(0.)0 4154 y(Users)k(should)f(also)i(read)f(the)h(follo)m
(wing)e(c)m(hapter)j(on)e(the)h(CFITSIO)e(iterator)i(function)f(whic)m
(h)f(pro)m(vides)h(a)0 4267 y(more)j(`ob)5 b(ject)39
b(orien)m(ted')f(metho)s(d)g(of)g(reading)f(and)h(writing)e(table)i
(columns.)62 b(The)37 b(iterator)i(function)d(is)i(a)0
4380 y(little)c(more)i(complicated)f(to)h(use,)h(but)e(the)g(adv)-5
b(an)m(tages)38 b(are)d(that)i(it)e(usually)e(tak)m(es)k(less)d(co)s
(de)i(to)g(p)s(erform)0 4493 y(the)e(same)h(op)s(eration,)f(and)f(the)i
(resulting)d(program)h(oftens)i(runs)d(faster)i(b)s(ecause)g(the)h
(FITS)e(\014les)g(are)h(read)0 4606 y(and)c(written)f(using)g(the)i
(most)f(e\016cien)m(t)h(blo)s(c)m(k)f(size.)0 4924 y
Fd(5.7.1)112 b(Create)38 b(New)f(T)-9 b(able)0 5149 y
Fi(1)81 b Fj(Create)40 b(a)f(new)g(ASCI)s(I)e(or)i(bin)m(table)f(table)
h(extension.)67 b(If)39 b(the)g(FITS)g(\014le)f(is)g(curren)m(tly)g
(empt)m(y)i(then)f(a)227 5262 y(dumm)m(y)25 b(primary)e(arra)m(y)j
(will)d(b)s(e)i(created)i(b)s(efore)e(app)s(ending)e(the)j(table)f
(extension)h(to)g(it.)39 b(The)25 b(tblt)m(yp)s(e)227
5375 y(parameter)39 b(de\014nes)e(the)h(t)m(yp)s(e)h(of)f(table)g(and)f
(can)i(ha)m(v)m(e)g(v)-5 b(alues)38 b(of)g(ASCI)s(I)p
2924 5375 28 4 v 31 w(TBL)g(or)g(BINAR)-8 b(Y)p 3659
5375 V 34 w(TBL.)227 5488 y(The)29 b(naxis2)f(parameter)i(giv)m(es)f
(the)h(initial)c(n)m(um)m(b)s(er)i(of)h(ro)m(ws)g(to)h(b)s(e)f(created)
h(in)e(the)h(table,)g(and)g(should)227 5601 y(normally)f(b)s(e)h(set)h
(=)g(0.)40 b(CFITSIO)29 b(will)e(automatically)i(increase)h(the)f(size)
h(of)g(the)g(table)f(as)h(additional)227 5714 y(ro)m(ws)d(are)g
(written.)39 b(A)27 b(non-zero)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)g(ma)m
(y)g(b)s(e)f(sp)s(eci\014ed)f(to)j(reserv)m(e)f(space)h(for)e(that)i
(man)m(y)p eop
%%Page: 46 54
46 53 bop 0 299 a Fj(46)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)227
555 y Fj(ro)m(ws,)41 b(ev)m(en)e(if)f(a)h(few)m(er)g(n)m(um)m(b)s(er)e
(of)i(ro)m(ws)f(will)e(b)s(e)i(written.)65 b(The)38 b(tunit)f(and)h
(extname)i(parameters)227 668 y(are)e(optional)e(and)h(a)h(n)m(ull)d(p)
s(oin)m(ter)h(ma)m(y)i(b)s(e)f(giv)m(en)g(if)g(they)g(are)h(not)f
(de\014ned.)61 b(The)37 b(FITS)f(Standard)227 781 y(recommends)29
b(that)h(only)f(letters,)h(digits,)f(and)g(the)g(underscore)g(c)m
(haracter)i(b)s(e)e(used)g(in)f(column)g(names)227 894
y(\(the)d(tt)m(yp)s(e)g(parameter\))g(with)d(no)i(em)m(b)s(edded)f
(spaces.)40 b(T)-8 b(railing)21 b(blank)i(c)m(haracters)j(are)e(not)h
(signi\014can)m(t.)227 1007 y(It)36 b(is)f(recommended)g(that)i(all)e
(the)h(column)e(names)i(in)e(a)j(giv)m(en)e(table)h(b)s(e)f(unique)f
(within)f(the)j(\014rst)g(8)227 1120 y(c)m(haracters,)25
b(and)c(strongly)f(recommended)h(that)h(the)f(names)h(b)s(e)e(unique)g
(within)e(the)k(\014rst)e(16)i(c)m(haracters.)95 1478
y Fe(int)47 b(fits_create_tbl)d(/)j(ffcrtb)286 1591 y(\(fitsfile)f
(*fptr,)g(int)h(tbltype,)e(long)i(naxis2,)f(int)h(tfields,)e(char)i
(*ttype[],)334 1704 y(char)g(*tform[],)e(char)i(*tunit[],)e(char)i
(*extname,)e(int)i(*status\))0 1992 y Fd(5.7.2)112 b(Column)37
b(Information)f(Routines)0 2199 y Fi(1)81 b Fj(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 2312 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 2424 y(header)e(of)h(the)
g(table.)95 2670 y Fe(int)47 b(fits_get_num_rows)c(/)48
b(ffgnrw)286 2783 y(\(fitsfile)e(*fptr,)g(>)h(long)g(*nrows,)f(int)h
(*status\);)95 3008 y(int)g(fits_get_num_cols)c(/)48
b(ffgncl)286 3121 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*ncols,)f(int)h
(*status\);)0 3366 y Fi(2)81 b Fj(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 3479 y(name.)48
b(If)32 b(casesen)i(=)e(CASESEN)g(then)g(the)h(column)e(name)i(matc)m
(h)h(will)c(b)s(e)i(case-sensitiv)m(e,)i(whereas)227
3592 y(if)26 b(casesen)i(=)e(CASEINSEN)g(then)h(the)g(case)h(will)c(b)s
(e)i(ignored.)39 b(As)27 b(a)g(general)g(rule,)f(the)h(column)f(names)
227 3705 y(should)j(b)s(e)g(treated)j(as)e(case)i(INsensitiv)m(e.)227
3853 y(The)26 b(input)f(column)g(name)h(template)h(ma)m(y)g(b)s(e)f
(either)g(the)h(exact)h(name)e(of)h(the)f(column)f(to)j(b)s(e)d(searc)m
(hed)227 3966 y(for,)k(or)f(it)g(ma)m(y)h(con)m(tain)g(wild)d(card)i(c)
m(haracters)i(\(*,)g(?,)f(or)f(#\),)h(or)f(it)g(ma)m(y)h(con)m(tain)g
(the)f(in)m(teger)h(n)m(um)m(b)s(er)227 4079 y(of)k(the)f(desired)e
(column)h(\(with)g(the)i(\014rst)e(column)g(=)h(1\).)46
b(The)32 b(`*')h(wild)d(card)i(c)m(haracter)h(matc)m(hes)h(an)m(y)227
4192 y(sequence)h(of)g(c)m(haracters)h(\(including)c(zero)j(c)m
(haracters\))i(and)d(the)h(`?')53 b(c)m(haracter)36 b(matc)m(hes)g(an)m
(y)f(single)227 4305 y(c)m(haracter.)42 b(The)29 b(#)h(wildcard)d(will)
g(matc)m(h)k(an)m(y)e(consecutiv)m(e)i(string)e(of)g(decimal)g(digits)f
(\(0-9\).)43 b(If)29 b(more)227 4418 y(than)43 b(one)f(column)g(name)g
(in)f(the)i(table)g(matc)m(hes)g(the)g(template)g(string,)i(then)d(the)
h(\014rst)e(matc)m(h)j(is)227 4530 y(returned)28 b(and)h(the)g(status)h
(v)-5 b(alue)29 b(will)d(b)s(e)j(set)h(to)g(COL)p 2171
4530 28 4 v 32 w(NOT)p 2408 4530 V 32 w(UNIQUE)f(as)h(a)f(w)m(arning)f
(that)i(a)g(unique)227 4643 y(matc)m(h)e(w)m(as)g(not)f(found.)39
b(T)-8 b(o)27 b(\014nd)f(the)h(other)g(cases)h(that)g(matc)m(h)g(the)g
(template,)g(call)e(the)i(routine)e(again)227 4756 y(lea)m(ving)f(the)g
(input)e(status)i(v)-5 b(alue)25 b(equal)f(to)i(COL)p
1950 4756 V 32 w(NOT)p 2187 4756 V 32 w(UNIQUE)f(and)f(the)h(next)h
(matc)m(hing)f(name)g(will)227 4869 y(then)30 b(b)s(e)g(returned.)40
b(Rep)s(eat)30 b(this)g(pro)s(cess)g(un)m(til)e(a)j(status)g(=)f(COL)p
2628 4869 V 32 w(NOT)p 2865 4869 V 32 w(F)m(OUND)i(is)d(returned.)227
5017 y(The)36 b(FITS)g(Standard)g(recommends)g(that)i(only)d(letters,)k
(digits,)e(and)f(the)h(underscore)f(c)m(haracter)j(b)s(e)227
5130 y(used)32 b(in)g(column)g(names)g(\(with)g(no)h(em)m(b)s(edded)f
(spaces\).)49 b(T)-8 b(railing)30 b(blank)i(c)m(haracters)i(are)f(not)h
(signif-)227 5243 y(ican)m(t.)57 b(It)36 b(is)f(recommended)g(that)h
(all)f(the)h(column)e(names)i(in)e(a)i(giv)m(en)g(table)g(b)s(e)f
(unique)f(within)f(the)227 5356 y(\014rst)i(8)i(c)m(haracters,)h(and)e
(strongly)f(recommended)g(that)i(the)f(names)g(b)s(e)f(unique)f(within)
f(the)j(\014rst)f(16)227 5469 y(c)m(haracters.)95 5714
y Fe(int)47 b(fits_get_colnum)d(/)j(ffgcno)p eop
%%Page: 47 55
47 54 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29 b(AND)i(BINAR)-8
b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864 b Fj(47)286
555 y Fe(\(fitsfile)46 b(*fptr,)g(int)h(casesen,)e(char)i(*templt,)e(>)
j(int)f(*colnum,)334 668 y(int)g(*status\))95 894 y(int)g
(fits_get_colname)d(/)j(ffgcnn)286 1007 y(\(fitsfile)f(*fptr,)g(int)h
(casesen,)e(char)i(*templt,)e(>)j(char)e(*colname,)334
1120 y(int)h(*colnum,)f(int)g(*status\))0 1350 y Fi(3)81
b Fj(Return)30 b(the)i(data)g(t)m(yp)s(e,)h(v)m(ector)g(rep)s(eat)f(v)
-5 b(alue,)31 b(and)g(the)h(width)e(in)g(b)m(ytes)i(of)g(a)g(column)e
(in)g(an)i(ASCI)s(I)e(or)227 1463 y(binary)k(table.)55
b(Allo)m(w)m(ed)35 b(v)-5 b(alues)35 b(for)g(the)h(data)g(t)m(yp)s(e)f
(in)f(ASCI)s(I)g(tables)h(are:)51 b(TSTRING,)35 b(TSHOR)-8
b(T,)227 1576 y(TLONG,)36 b(TFLO)m(A)-8 b(T,)36 b(and)f(TDOUBLE.)i
(Binary)d(tables)i(also)g(supp)s(ort)e(these)i(t)m(yp)s(es:)52
b(TLOGICAL,)227 1689 y(TBIT,)38 b(TBYTE,)h(TCOMPLEX)e(and)h
(TDBLCOMPLEX.)h(The)f(negativ)m(e)h(of)g(the)g(data)g(t)m(yp)s(e)g(co)s
(de)227 1802 y(v)-5 b(alue)31 b(is)f(returned)g(if)g(it)g(is)h(a)g(v)-5
b(ariable)30 b(length)g(arra)m(y)i(column.)42 b(Note)32
b(that)g(in)d(the)j(case)g(of)f(a)g('J')h(32-bit)227
1914 y(in)m(teger)f(binary)d(table)i(column,)f(this)g(routine)g(will)e
(return)i(data)i(t)m(yp)s(e)f(=)g(TINT32BIT)g(\(whic)m(h)f(in)g(fact)
227 2027 y(is)35 b(equiv)-5 b(alen)m(t)35 b(to)i(TLONG\).)f(With)f
(most)h(curren)m(t)g(C)f(compilers,)h(a)h(v)-5 b(alue)35
b(in)f(a)j('J')f(column)e(has)i(the)227 2140 y(same)29
b(size)f(as)h(an)f('in)m(t')h(v)-5 b(ariable,)28 b(and)f(ma)m(y)j(not)e
(b)s(e)g(equiv)-5 b(alen)m(t)28 b(to)h(a)g('long')f(v)-5
b(ariable,)28 b(whic)m(h)f(is)h(64-bits)227 2253 y(long)i(on)h(an)f
(increasing)f(n)m(um)m(b)s(er)g(of)h(compilers.)227 2398
y(The)22 b('rep)s(eat')h(parameter)g(returns)f(the)g(v)m(ector)i(rep)s
(eat)f(coun)m(t)g(on)f(the)h(binary)e(table)h(TF)m(ORMn)g(k)m(eyw)m
(ord)227 2511 y(v)-5 b(alue.)59 b(\(ASCI)s(I)35 b(table)i(columns)e
(alw)m(a)m(ys)i(ha)m(v)m(e)h(rep)s(eat)e(=)g(1\).)60
b(The)36 b('width')f(parameter)i(returns)f(the)227 2624
y(width)29 b(in)g(b)m(ytes)i(of)g(a)f(single)f(column)h(elemen)m(t)h
(\(e.g.,)h(a)f('10D')h(binary)d(table)h(column)f(will)f(ha)m(v)m(e)k
(width)227 2737 y(=)d(8,)i(an)e(ASCI)s(I)f(table)h('F12.2')j(column)d
(will)e(ha)m(v)m(e)j(width)e(=)h(12,)i(and)e(a)h(binary)d(table'60A')k
(c)m(haracter)227 2850 y(string)36 b(column)g(will)f(ha)m(v)m(e)j
(width)e(=)h(60\);)42 b(Note)c(that)g(this)e(routine)h(supp)s(orts)e
(the)i(lo)s(cal)g(con)m(v)m(en)m(tion)227 2963 y(for)42
b(sp)s(ecifying)d(arra)m(ys)k(of)f(\014xed)f(length)g(strings)f(within)
g(a)i(binary)e(table)h(c)m(haracter)j(column)c(using)227
3076 y(the)h(syn)m(tax)g(TF)m(ORM)g(=)g('rAw')f(where)g('r')h(is)f(the)
h(total)g(n)m(um)m(b)s(er)e(of)i(c)m(haracters)h(\(=)f(the)g(width)e
(of)227 3189 y(the)g(column\))f(and)f('w')i(is)e(the)i(width)e(of)h(a)h
(unit)e(string)g(within)f(the)j(column.)64 b(Th)m(us)37
b(if)g(the)i(column)227 3302 y(has)34 b(TF)m(ORM)h(=)f('60A12')j(then)d
(this)f(means)h(that)h(eac)m(h)g(ro)m(w)g(of)f(the)h(table)f(con)m
(tains)g(5)h(12-c)m(haracter)227 3415 y(substrings)22
b(within)g(the)i(60-c)m(haracter)j(\014eld,)e(and)e(th)m(us)h(in)f
(this)g(case)i(this)f(routine)f(will)e(return)i(t)m(yp)s(eco)s(de)227
3528 y(=)36 b(TSTRING,)f(rep)s(eat)h(=)f(60,)j(and)d(width)f(=)i(12.)57
b(The)35 b(n)m(um)m(b)s(er)g(of)h(substings)e(in)g(an)m(y)i(binary)e
(table)227 3640 y(c)m(haracter)i(string)d(\014eld)f(can)i(b)s(e)g
(calculated)g(b)m(y)f(\(rep)s(eat/width\).)52 b(A)34
b(n)m(ull)d(p)s(oin)m(ter)i(ma)m(y)i(b)s(e)e(giv)m(en)h(for)227
3753 y(an)m(y)d(of)g(the)f(output)g(parameters)h(that)g(are)g(not)f
(needed.)227 3899 y(The)46 b(second)g(routine,)j(\014t)p
1188 3899 28 4 v 33 w(get)p 1341 3899 V 34 w(eqcolt)m(yp)s(e)d(is)f
(similar)f(except)j(that)f(in)f(the)h(case)i(of)e(scaled)g(in)m(teger)
227 4012 y(columns)34 b(it)g(returns)g(the)h('equiv)-5
b(alen)m(t')35 b(data)h(t)m(yp)s(e)f(that)h(is)e(needed)g(to)i(store)g
(the)f(scaled)g(v)-5 b(alues,)36 b(and)227 4125 y(not)28
b(necessarily)f(the)h(ph)m(ysical)e(data)i(t)m(yp)s(e)g(of)g(the)g
(unscaled)e(v)-5 b(alues)28 b(as)f(stored)h(in)f(the)g(FITS)g(table.)40
b(F)-8 b(or)227 4237 y(example)37 b(if)g(a)h('1I')g(column)e(in)g(a)i
(binary)e(table)h(has)h(TSCALn)d(=)j(1)f(and)g(TZER)m(On)f(=)i(32768,)j
(then)227 4350 y(this)28 b(column)f(e\013ectiv)m(ely)j(con)m(tains)e
(unsigned)f(short)h(in)m(teger)h(v)-5 b(alues,)28 b(and)g(th)m(us)h
(the)f(returned)g(v)-5 b(alue)28 b(of)227 4463 y(t)m(yp)s(eco)s(de)34
b(will)c(b)s(e)j(TUSHOR)-8 b(T,)32 b(not)h(TSHOR)-8 b(T.)33
b(Similarly)-8 b(,)30 b(if)i(a)i(column)e(has)g(TTYPEn)g(=)h('1I')h
(and)227 4576 y(TSCALn)29 b(=)h(0.12,)i(then)e(the)h(returned)e(t)m(yp)
s(eco)s(de)i(will)c(b)s(e)j(TFLO)m(A)-8 b(T.)95 4806
y Fe(int)47 b(fits_get_coltype)d(/)j(ffgtcl)286 4919
y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(>)j(int)f(*typecode,)e(long)h
(*repeat,)334 5032 y(long)h(*width,)f(int)g(*status\))95
5258 y(int)h(fits_get_eqcoltype)c(/)48 b(ffeqty)286 5371
y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(>)j(int)f(*typecode,)e(long)h
(*repeat,)334 5484 y(long)h(*width,)f(int)g(*status\))0
5714 y Fi(4)81 b Fj(Return)29 b(the)h(displa)m(y)e(width)g(of)i(a)h
(column.)39 b(This)28 b(is)h(the)h(length)g(of)g(the)g(string)f(that)i
(will)c(b)s(e)i(returned)g(b)m(y)p eop
%%Page: 48 56
48 55 bop 0 299 a Fj(48)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)227
555 y Fj(the)k(\014ts)p 514 555 28 4 v 32 w(read)p 718
555 V 33 w(col)f(routine)f(when)g(reading)g(the)i(column)d(as)j(a)f
(formatted)h(string.)48 b(The)32 b(displa)m(y)g(width)227
668 y(is)c(determined)g(b)m(y)h(the)g(TDISPn)f(k)m(eyw)m(ord,)i(if)e
(presen)m(t,)i(otherwise)e(b)m(y)h(the)g(data)h(t)m(yp)s(e)f(of)h(the)f
(column.)95 1039 y Fe(int)47 b(fits_get_col_display_width)41
b(/)47 b(ffgcdw)286 1152 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(>)j
(int)f(*dispwidth,)e(int)h(*status\))0 1410 y Fi(5)81
b Fj(Return)27 b(the)i(n)m(um)m(b)s(er)e(of)i(and)e(size)i(of)f(the)h
(dimensions)d(of)i(a)h(table)f(column)g(in)f(a)h(binary)f(table.)40
b(Normally)227 1523 y(this)27 b(information)g(is)g(giv)m(en)h(b)m(y)g
(the)h(TDIMn)f(k)m(eyw)m(ord,)h(but)e(if)h(this)f(k)m(eyw)m(ord)h(is)f
(not)i(presen)m(t)f(then)g(this)227 1635 y(routine)i(returns)f(naxis)g
(=)h(1)h(and)f(naxes[0])h(equal)f(to)h(the)g(rep)s(eat)f(coun)m(t)h(in)
e(the)i(TF)m(ORM)g(k)m(eyw)m(ord.)95 1893 y Fe(int)47
b(fits_read_tdim)d(/)k(ffgtdm)286 2006 y(\(fitsfile)e(*fptr,)g(int)h
(colnum,)e(int)i(maxdim,)f(>)i(int)f(*naxis,)334 2119
y(long)g(*naxes,)f(int)g(*status\))0 2377 y Fi(6)81 b
Fj(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 2490 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 2603 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
2716 y(This)k(routine)g(is)h(called)f(b)m(y)h(\014ts)p
1350 2716 V 33 w(read)p 1555 2716 V 33 w(tdim.)95 2973
y Fe(int)47 b(fits_decode_tdim)d(/)j(ffdtdm)286 3086
y(\(fitsfile)f(*fptr,)g(char)g(*tdimstr,)g(int)h(colnum,)e(int)i
(maxdim,)f(>)i(int)e(*naxis,)334 3199 y(long)h(*naxes,)f(int)g
(*status\))0 3457 y Fi(7)81 b Fj(W)-8 b(rite)22 b(a)h(TDIMn)f(k)m(eyw)m
(ord)h(whose)f(v)-5 b(alue)22 b(has)h(the)f(form)g('\(l,m,n...\)')39
b(where)22 b(l,)h(m,)h(n...)38 b(are)23 b(the)g(dimensions)227
3570 y(of)31 b(a)g(m)m(ultidimension)26 b(arra)m(y)31
b(column)e(in)g(a)i(binary)d(table.)95 3828 y Fe(int)47
b(fits_write_tdim)d(/)j(ffptdm)286 3941 y(\(fitsfile)f(*fptr,)g(int)h
(colnum,)e(int)i(naxis,)f(long)h(*naxes,)f(>)h(int)g(*status\))0
4231 y Fd(5.7.3)112 b(Routines)37 b(to)g(Edit)f(Ro)m(ws)h(or)g(Columns)
0 4440 y Fi(1)81 b Fj(Insert)22 b(or)h(delete)g(ro)m(ws)f(in)g(an)h
(ASCI)s(I)e(or)i(binary)e(table.)38 b(When)22 b(inserting)f(ro)m(ws)i
(all)f(the)h(ro)m(ws)g(follo)m(wing)e(ro)m(w)227 4553
y(FR)m(O)m(W)29 b(are)f(shifted)f(do)m(wn)g(b)m(y)h(NR)m(O)m(WS)g(ro)m
(ws;)h(if)e(FR)m(O)m(W)i(=)e(0)h(then)f(the)h(blank)f(ro)m(ws)h(are)g
(inserted)e(at)227 4666 y(the)h(b)s(eginning)d(of)j(the)f(table.)40
b(The)26 b(\014rst)g(delete)h(routine)e(deletes)i(NR)m(O)m(WS)g
(consecutiv)m(e)h(ro)m(ws)e(starting)227 4779 y(with)i(ro)m(w)i(FIRSTR)
m(O)m(W.)g(The)f(second)g(delete)h(routine)e(tak)m(es)j(an)e(input)f
(string)g(that)i(lists)e(the)i(ro)m(ws)f(or)227 4891
y(ro)m(w)24 b(ranges)f(\(e.g.,)k('5-10,12,20-30'\),)k(whereas)23
b(the)h(third)d(delete)j(routine)e(tak)m(es)j(an)e(input)f(in)m(teger)h
(arra)m(y)227 5004 y(that)35 b(sp)s(eci\014es)e(eac)m(h)i(individual)30
b(ro)m(w)k(to)h(b)s(e)f(deleted.)52 b(In)34 b(b)s(oth)f(latter)i
(cases,)h(the)e(input)f(list)g(of)h(ro)m(ws)227 5117
y(to)e(delete)f(m)m(ust)f(b)s(e)g(sorted)h(in)e(ascending)h(order.)41
b(These)31 b(routines)e(up)s(date)h(the)h(NAXIS2)g(k)m(eyw)m(ord)g(to)
227 5230 y(re\015ect)g(the)g(new)f(n)m(um)m(b)s(er)f(of)h(ro)m(ws)h(in)
e(the)h(table.)95 5488 y Fe(int)47 b(fits_insert_rows)d(/)j(ffirow)286
5601 y(\(fitsfile)f(*fptr,)g(long)g(firstrow,)g(long)g(nrows,)g(>)i
(int)f(*status\))p eop
%%Page: 49 57
49 56 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29 b(AND)i(BINAR)-8
b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864 b Fj(49)95
555 y Fe(int)47 b(fits_delete_rows)d(/)j(ffdrow)286 668
y(\(fitsfile)f(*fptr,)g(long)g(firstrow,)g(long)g(nrows,)g(>)i(int)f
(*status\))95 894 y(int)g(fits_delete_rowrange)c(/)k(ffdrrg)286
1007 y(\(fitsfile)f(*fptr,)g(char)g(*rangelist,)f(>)j(int)e(*status\))
95 1233 y(int)h(fits_delete_rowlist)c(/)k(ffdrws)286
1346 y(\(fitsfile)f(*fptr,)g(long)g(*rowlist,)g(long)g(nrows,)g(>)i
(int)f(*status\))0 1600 y Fi(2)81 b Fj(Insert)36 b(or)h(delete)h
(column\(s\))e(in)g(an)h(ASCI)s(I)f(or)h(binary)e(table.)61
b(When)37 b(inserting,)g(COLNUM)g(sp)s(eci\014es)227
1713 y(the)28 b(column)f(n)m(um)m(b)s(er)g(that)h(the)g(\(\014rst\))g
(new)f(column)g(should)f(o)s(ccup)m(y)i(in)f(the)h(table.)40
b(NCOLS)26 b(sp)s(eci\014es)227 1826 y(ho)m(w)35 b(man)m(y)g(columns)e
(are)i(to)g(b)s(e)f(inserted.)52 b(An)m(y)35 b(existing)f(columns)f
(from)h(this)g(p)s(osition)e(and)i(higher)227 1939 y(are)c(shifted)e(o)
m(v)m(er)i(to)g(allo)m(w)e(ro)s(om)h(for)g(the)h(new)e(column\(s\).)40
b(The)29 b(index)e(n)m(um)m(b)s(er)h(on)h(all)f(the)h(follo)m(wing)227
2051 y(k)m(eyw)m(ords)34 b(will)c(b)s(e)j(incremen)m(ted)g(or)g
(decremen)m(ted)h(if)e(necessary)i(to)g(re\015ect)g(the)f(new)g(p)s
(osition)e(of)j(the)227 2164 y(column\(s\))25 b(in)f(the)i(table:)38
b(TBCOLn,)26 b(TF)m(ORMn,)h(TTYPEn,)e(TUNITn,)h(TNULLn,)g(TSCALn,)f
(TZE-)227 2277 y(R)m(On,)43 b(TDISPn,)g(TDIMn,)g(TLMINn,)g(TLMAXn,)g
(TDMINn,)g(TDMAXn,)h(TCTYPn,)e(TCRPXn,)227 2390 y(TCR)-10
b(VLn,)29 b(TCDL)-8 b(Tn,)30 b(TCR)m(OTn,)f(and)h(TCUNIn.)95
2644 y Fe(int)47 b(fits_insert_col)d(/)j(fficol)286 2757
y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(char)i(*ttype,)f(char)h
(*tform,)334 2870 y(>)h(int)e(*status\))95 3096 y(int)h
(fits_insert_cols)d(/)j(fficls)286 3209 y(\(fitsfile)f(*fptr,)g(int)h
(colnum,)e(int)i(ncols,)f(char)h(**ttype,)334 3322 y(char)g(**tform,)e
(>)j(int)f(*status\))95 3548 y(int)g(fits_delete_col)d(/)j
(ffdcol\(fitsfile)d(*fptr,)i(int)h(colnum,)f(>)h(int)g(*status\))0
3802 y Fi(3)81 b Fj(Cop)m(y)32 b(a)h(column)f(from)g(one)h(HDU)g(to)h
(another)e(\(or)h(to)h(the)f(same)g(HDU\).)h(If)e(create)p
3129 3802 28 4 v 34 w(col)h(=)f(TR)m(UE,)h(then)227 3915
y(a)40 b(new)e(column)g(will)e(b)s(e)j(inserted)f(in)f(the)i(output)g
(table,)i(at)f(p)s(osition)d(`outcolumn',)k(otherwise)e(the)227
4028 y(existing)e(output)h(column)e(will)g(b)s(e)h(o)m(v)m(erwritten)h
(\(in)f(whic)m(h)g(case)i(it)e(m)m(ust)h(ha)m(v)m(e)h(a)f(compatible)f
(data)227 4141 y(t)m(yp)s(e\).)k(If)29 b(outcoln)m(um)g(is)f(greater)j
(than)e(the)h(n)m(um)m(b)s(er)e(of)h(column)f(in)g(the)i(table,)g(then)
f(the)g(new)g(column)227 4254 y(will)g(b)s(e)i(app)s(ended)f(to)j(the)f
(end)f(of)g(the)h(table.)45 b(Note)33 b(that)f(the)g(\014rst)f(column)f
(in)h(a)h(table)f(is)g(at)i(coln)m(um)227 4366 y(=)j(1.)58
b(The)36 b(standard)f(indexed)f(k)m(eyw)m(ords)j(that)f(related)g(to)h
(the)f(column)f(\(e.g.,)k(TDISPn,)e(TUNITn,)227 4479
y(TCRPXn,)30 b(TCDL)-8 b(Tn,)29 b(etc.\))43 b(will)27
b(also)k(b)s(e)e(copied.)95 4734 y Fe(int)47 b(fits_copy_col)e(/)i
(ffcpcl)286 4846 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(int)i
(incolnum,)e(int)i(outcolnum,)334 4959 y(int)g(create_col,)e(>)i(int)g
(*status\);)0 5214 y Fi(4)81 b Fj(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 5327
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.)95 5581 y Fe(int)47 b(fits_modify_vector_len)42
b(/)48 b(ffmvec)286 5694 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(long)i
(newveclen,)e(>)j(int)e(*status\))p eop
%%Page: 50 58
50 57 bop 0 299 a Fj(50)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
555 y Fd(5.7.4)112 b(Read)38 b(and)h(W)-9 b(rite)35 b(Column)i(Data)g
(Routines)0 775 y Fj(The)e(follo)m(wing)e(routines)i(write)f(or)h(read)
g(data)h(v)-5 b(alues)35 b(in)f(the)h(curren)m(t)g(ASCI)s(I)f(or)h
(binary)f(table)h(extension.)0 888 y(If)e(a)g(write)f(op)s(eration)h
(extends)g(b)s(ey)m(ond)f(the)h(curren)m(t)g(size)g(of)g(the)g(table,)h
(then)f(the)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)g(in)f(the)0
1001 y(table)i(will)e(automatically)i(b)s(e)f(increased)h(and)f(the)i
(NAXIS2)f(k)m(eyw)m(ord)h(v)-5 b(alue)34 b(will)d(b)s(e)j(up)s(dated.)
51 b(A)m(ttempts)0 1114 y(to)31 b(read)f(b)s(ey)m(ond)g(the)h(end)e(of)
i(the)f(table)h(will)c(result)j(in)f(an)h(error.)0 1274
y(Automatic)c(data)f(t)m(yp)s(e)g(con)m(v)m(ersion)g(is)f(p)s(erformed)
g(for)g(n)m(umerical)g(data)h(t)m(yp)s(es)g(\(only\))g(if)f(the)h(data)
h(t)m(yp)s(e)f(of)g(the)0 1387 y(column)f(\(de\014ned)h(b)m(y)g(the)h
(TF)m(ORMn)f(k)m(eyw)m(ord\))h(di\013ers)e(from)h(the)h(data)g(t)m(yp)s
(e)f(of)h(the)f(calling)f(routine.)38 b(ASCI)s(I)0 1500
y(and)20 b(binary)e(tables)i(supp)s(ort)f(the)i(follo)m(wing)d(data)j
(t)m(yp)s(e)g(v)-5 b(alues:)35 b(TSTRING,)20 b(TBYTE,)g(TSBYTE,)g
(TSHOR)-8 b(T,)0 1613 y(TUSHOR)g(T,)22 b(TINT,)g(TUINT,)f(TLONG,)i
(TLONGLONG,)f(TULONG,)g(TFLO)m(A)-8 b(T,)23 b(or)f(TDOUBLE.)h(Binary)0
1726 y(tables)37 b(also)g(supp)s(ort)e(TLOGICAL)h(\(in)m(ternally)g
(mapp)s(ed)g(to)h(the)h(`c)m(har')g(data)g(t)m(yp)s(e\),)h(TCOMPLEX,)e
(and)0 1839 y(TDBLCOMPLEX.)0 1999 y(Note)25 b(that)g(within)c(the)j
(con)m(text)i(of)e(these)g(routines,)h(the)f(TSTRING)f(data)h(t)m(yp)s
(e)g(corresp)s(onds)f(to)h(a)h(C)e('c)m(har**')0 2112
y(data)35 b(t)m(yp)s(e,)h(i.e.,)g(a)f(p)s(oin)m(ter)e(to)j(an)e(arra)m
(y)h(of)g(p)s(oin)m(ters)e(to)i(an)g(arra)m(y)g(of)g(c)m(haracters.)54
b(This)33 b(is)g(di\013eren)m(t)h(from)0 2225 y(the)e(k)m(eyw)m(ord)h
(reading)e(and)g(writing)f(routines)h(where)h(TSTRING)f(corresp)s(onds)
g(to)h(a)h(C)e('c)m(har*')j(data)f(t)m(yp)s(e,)0 2338
y(i.e.,)f(a)f(single)f(p)s(oin)m(ter)g(to)i(an)f(arra)m(y)g(of)g(c)m
(haracters.)45 b(When)30 b(reading)h(strings)e(from)i(a)g(table,)h(the)
f(c)m(har)h(arra)m(ys)0 2451 y(ob)m(viously)d(m)m(ust)h(ha)m(v)m(e)i(b)
s(een)e(allo)s(cated)g(long)g(enough)g(to)h(hold)e(the)i(whole)e(FITS)h
(table)g(string.)0 2611 y(Numerical)h(data)i(v)-5 b(alues)32
b(are)h(automatically)g(scaled)f(b)m(y)g(the)h(TSCALn)e(and)h(TZER)m
(On)f(k)m(eyw)m(ord)i(v)-5 b(alues)32 b(\(if)0 2724 y(they)f(exist\).)0
2884 y(In)25 b(the)g(case)i(of)e(binary)f(tables)h(with)f(v)m(ector)j
(elemen)m(ts,)g(the)f('felem')f(parameter)h(de\014nes)f(the)g(starting)
g(elemen)m(t)0 2997 y(\(b)s(eginning)g(with)h(1,)i(not)g(0\))g(within)d
(the)i(cell)g(\(a)h(cell)e(is)g(de\014ned)g(as)i(the)f(in)m(tersection)
g(of)h(a)f(ro)m(w)h(and)e(a)i(column)0 3110 y(and)e(ma)m(y)h(con)m
(tain)g(a)h(single)d(v)-5 b(alue)26 b(or)h(a)g(v)m(ector)h(of)f(v)-5
b(alues\).)39 b(The)26 b(felem)h(parameter)g(is)f(ignored)f(when)h
(dealing)0 3223 y(with)33 b(ASCI)s(I)f(tables.)51 b(Similarly)-8
b(,)32 b(in)g(the)j(case)f(of)h(binary)d(tables)h(the)i('nelemen)m(ts')
f(parameter)g(sp)s(eci\014es)f(the)0 3336 y(total)27
b(n)m(um)m(b)s(er)e(of)h(v)m(ector)i(v)-5 b(alues)26
b(to)h(b)s(e)e(read)h(or)h(written)e(\(con)m(tin)m(uing)h(on)g
(subsequen)m(t)f(ro)m(ws)i(if)e(required\))g(and)0 3448
y(not)31 b(the)f(n)m(um)m(b)s(er)f(of)i(table)f(cells.)0
3714 y Fi(1)81 b Fj(W)-8 b(rite)30 b(elemen)m(ts)h(in)m(to)f(an)h(ASCI)
s(I)e(or)h(binary)e(table)j(column.)0 3980 y(The)38 b(\014rst)f
(routine)g(simply)f(writes)h(the)h(arra)m(y)h(of)f(v)-5
b(alues)38 b(to)h(the)f(FITS)g(\014le)f(\(doing)g(data)i(t)m(yp)s(e)g
(con)m(v)m(ersion)0 4093 y(if)g(necessary\))i(whereas)f(the)h(second)f
(routine)g(will)d(substitute)j(the)g(appropriate)f(FITS)h(n)m(ull)e(v)
-5 b(alue)40 b(for)g(all)0 4206 y(elemen)m(ts)33 b(whic)m(h)f(are)h
(equal)g(to)g(the)g(input)e(v)-5 b(alue)33 b(of)g(n)m(ulv)-5
b(al)31 b(\(note)j(that)f(this)f(parameter)h(giv)m(es)h(the)f(address)0
4319 y(of)40 b(n)m(ulv)-5 b(al,)42 b(not)e(the)g(n)m(ull)e(v)-5
b(alue)40 b(itself)7 b(\).)70 b(F)-8 b(or)40 b(in)m(teger)h(columns)e
(the)h(FITS)g(n)m(ull)e(v)-5 b(alue)39 b(is)h(de\014ned)f(b)m(y)h(the)0
4432 y(TNULLn)32 b(k)m(eyw)m(ord)i(\(an)g(error)e(is)h(returned)f(if)g
(the)i(k)m(eyw)m(ord)f(do)s(esn't)g(exist\).)50 b(F)-8
b(or)34 b(\015oating)f(p)s(oin)m(t)f(columns)0 4545 y(the)i(sp)s(ecial)
f(IEEE)h(NaN)h(\(Not-a-Num)m(b)s(er\))h(v)-5 b(alue)34
b(will)d(b)s(e)j(written)f(in)m(to)i(the)f(FITS)g(\014le.)51
b(If)34 b(a)h(n)m(ull)d(p)s(oin)m(ter)0 4658 y(is)g(en)m(tered)h(for)g
(n)m(ulv)-5 b(al,)32 b(then)h(the)g(n)m(ull)e(v)-5 b(alue)32
b(is)g(ignored)g(and)h(this)f(routine)f(b)s(eha)m(v)m(es)j(the)f(same)g
(as)h(the)f(\014rst)0 4771 y(routine.)39 b(The)26 b(second)i(routine)e
(m)m(ust)h(not)h(b)s(e)e(used)h(to)h(write)e(to)i(v)-5
b(ariable)26 b(length)h(arra)m(y)h(columns.)38 b(The)27
b(third)0 4883 y(routine)i(simply)f(writes)i(unde\014ned)e(pixel)h(v)-5
b(alues)29 b(to)i(the)g(column.)95 5149 y Fe(int)47 b(fits_write_col)d
(/)k(ffpcl)286 5262 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(int)i
(colnum,)f(long)g(firstrow,)334 5375 y(long)h(firstelem,)e(long)h
(nelements,)f(DTYPE)i(*array,)f(>)h(int)g(*status\))95
5601 y(int)g(fits_write_colnull)c(/)48 b(ffpcn)286 5714
y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(int)i(colnum,)f(long)g
(firstrow,)p eop
%%Page: 51 59
51 58 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29 b(AND)i(BINAR)-8
b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864 b Fj(51)286
555 y Fe(long)47 b(firstelem,)e(long)i(nelements,)e(DTYPE)h(*array,)g
(DTYPE)g(*nulval,)286 668 y(>)i(int)f(*status\))143 894
y(int)g(fits_write_col_null)c(/)k(ffpclu)334 1007 y(\(fitsfile)e
(*fptr,)h(int)h(colnum,)f(long)h(firstrow,)e(long)i(firstelem,)382
1120 y(long)f(nelements,)f(>)j(int)f(*status\))0 1375
y Fi(2)81 b Fj(Read)33 b(elemen)m(ts)h(from)f(an)g(ASCI)s(I)f(or)i
(binary)d(table)i(column.)49 b(The)33 b(data)h(t)m(yp)s(e)g(parameter)g
(sp)s(eci\014es)e(the)227 1488 y(data)c(t)m(yp)s(e)g(of)g(the)f(`n)m
(ulv)-5 b(al')27 b(and)g(`arra)m(y')h(p)s(oin)m(ters;)g(Unde\014ned)d
(arra)m(y)j(elemen)m(ts)g(will)d(b)s(e)i(returned)f(with)227
1601 y(a)k(v)-5 b(alue)29 b(=)f(*n)m(ullv)-5 b(al,)28
b(\(note)i(that)g(this)e(parameter)i(giv)m(es)f(the)h(address)e(of)h
(the)h(n)m(ull)d(v)-5 b(alue,)29 b(not)h(the)f(n)m(ull)227
1714 y(v)-5 b(alue)30 b(itself)7 b(\))30 b(unless)f(n)m(ulv)-5
b(al)30 b(=)g(0)h(or)g(*n)m(ulv)-5 b(al)29 b(=)i(0,)g(in)e(whic)m(h)h
(case)i(no)e(c)m(hec)m(king)i(for)e(unde\014ned)f(pixels)227
1827 y(will)i(b)s(e)i(p)s(erformed.)48 b(The)33 b(second)g(routine)g
(is)f(similar)f(except)j(that)g(an)m(y)g(unde\014ned)d(pixels)h(will)f
(ha)m(v)m(e)227 1940 y(the)g(corresp)s(onding)d(n)m(ullarra)m(y)h
(elemen)m(t)i(set)g(equal)f(to)h(TR)m(UE)f(\(=)h(1\).)227
2089 y(An)m(y)c(column,)f(regardless)f(of)h(it's)g(in)m(trinsic)e(data)
j(t)m(yp)s(e,)g(ma)m(y)g(b)s(e)e(read)i(as)f(a)g(string.)39
b(It)26 b(should)e(b)s(e)i(noted)227 2202 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)g(string)e(is)g(10)
j(-)e(100)i(times)e(slo)m(w)m(er)g(than)g(reading)g(the)227
2315 y(same)22 b(column)f(as)g(a)h(n)m(um)m(b)s(er)e(due)h(to)i(the)e
(large)h(o)m(v)m(erhead)h(in)d(constructing)h(the)h(formatted)g
(strings.)36 b(The)227 2428 y(displa)m(y)24 b(format)i(of)f(the)h
(returned)e(strings)g(will)f(b)s(e)i(determined)f(b)m(y)h(the)h(TDISPn)
e(k)m(eyw)m(ord,)j(if)d(it)h(exists,)227 2541 y(otherwise)31
b(b)m(y)g(the)g(data)h(t)m(yp)s(e)f(of)g(the)g(column.)42
b(The)30 b(length)h(of)g(the)g(returned)f(strings)g(\(not)h(including)
227 2654 y(the)26 b(n)m(ull)d(terminating)i(c)m(haracter\))i(can)f(b)s
(e)f(determined)f(with)g(the)i(\014ts)p 2703 2654 28
4 v 32 w(get)p 2855 2654 V 34 w(col)p 3000 2654 V 33
w(displa)m(y)p 3313 2654 V 31 w(width)e(routine.)227
2767 y(The)30 b(follo)m(wing)f(TDISPn)g(displa)m(y)g(formats)h(are)h
(curren)m(tly)e(supp)s(orted:)418 3011 y Fe(Iw.m)142
b(Integer)418 3124 y(Ow.m)g(Octal)47 b(integer)418 3237
y(Zw.m)142 b(Hexadecimal)45 b(integer)418 3350 y(Fw.d)142
b(Fixed)47 b(floating)e(point)418 3463 y(Ew.d)142 b(Exponential)45
b(floating)h(point)418 3576 y(Dw.d)142 b(Exponential)45
b(floating)h(point)418 3689 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
3934 y Fj(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 4046 y(displa)m(y)m(ed,)j(and)g(d)g
(is)g(the)g(n)m(um)m(b)s(er)g(of)g(digits)g(to)h(the)g(righ)m(t)f(of)g
(the)h(decimal.)39 b(The)27 b(.m)g(\014eld)f(is)h(optional.)95
4302 y Fe(int)47 b(fits_read_col)e(/)i(ffgcv)286 4415
y(\(fitsfile)f(*fptr,)g(int)h(datatype,)e(int)i(colnum,)f(long)g
(firstrow,)g(long)g(firstelem,)334 4528 y(long)h(nelements,)e(DTYPE)h
(*nulval,)g(DTYPE)g(*array,)g(int)h(*anynul,)e(int)i(*status\))95
4753 y(int)g(fits_read_colnull)c(/)48 b(ffgcf)286 4866
y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(int)i(colnum,)f(long)g
(firstrow,)g(long)g(firstelem,)286 4979 y(long)h(nelements,)e(DTYPE)h
(*array,)g(char)h(*nullarray,)e(int)h(*anynul,)g(int)h(*status\))0
5269 y Fd(5.7.5)112 b(Ro)m(w)37 b(Selection)f(and)j(Calculator)d
(Routines)0 5488 y Fj(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 5601 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 5714 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)p
eop
%%Page: 52 60
52 59 bop 0 299 a Fj(52)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
555 y Fj(for)c(eac)m(h)i(ro)m(w)f(of)g(the)g(table.)39
b(The)26 b(allo)m(w)m(ed)h(expression)e(syn)m(tax)j(is)d(describ)s(ed)g
(in)g(the)i(ro)m(w)g(\014lter)f(section)g(in)g(the)0
668 y(`Extended)32 b(File)f(Name)i(Syn)m(tax')g(c)m(hapter)g(of)f(this)
f(do)s(cumen)m(t.)46 b(The)32 b(expression)f(ma)m(y)i(also)f(b)s(e)f
(written)h(to)h(a)0 781 y(text)h(\014le,)g(and)f(the)h(name)f(of)h(the)
f(\014le,)h(prep)s(ended)d(with)h(a)i('@')g(c)m(haracter)h(ma)m(y)f(b)s
(e)f(supplied)d(for)j(the)h('expr')0 894 y(parameter)d(\(e.g.)42
b('@\014lename.txt'\).)f(The)30 b(expression)f(in)g(the)h(\014le)g(can)
g(b)s(e)g(arbitrarily)d(complex)j(and)g(extend)0 1007
y(o)m(v)m(er)35 b(m)m(ultiple)d(lines)h(of)h(the)g(\014le.)52
b(Lines)32 b(that)j(b)s(egin)e(with)g(2)h(slash)f(c)m(haracters)j
(\('//'\))g(will)c(b)s(e)h(ignored)h(and)0 1120 y(ma)m(y)d(b)s(e)f
(used)f(to)i(add)f(commen)m(ts)h(to)h(the)e(\014le.)0
1342 y Fi(1)81 b Fj(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 1455 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)95 1676 y Fe(int)47
b(fits_find_rows)d(/)k(fffrow)286 1789 y(\(fitsfile)e(*fptr,)93
b(char)47 b(*expr,)f(long)h(firstrow,)e(long)i(nrows,)286
1902 y(>)h(long)e(*n_good_rows,)f(char)h(*row_status,)92
b(int)47 b(*status\))0 2124 y Fi(2)81 b Fj(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)95 2346 y Fe(int)47 b(fits_find_first_row)c(/)k(ffffrw)286
2459 y(\(fitsfile)f(*fptr,)93 b(char)47 b(*expr,)f(>)i(long)e(*rownum,)
g(int)h(*status\))0 2681 y Fi(3)81 b Fj(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 2794 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 2907 y(\(preserv)m(e)31
b(the)g(TR)m(UE)f(ro)m(ws\).)95 3129 y Fe(int)47 b(fits_select_rows)d
(/)j(ffsrow)286 3242 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)93
b(char)46 b(*expr,)94 b(>)48 b(int)f(*status)e(\))0 3463
y Fi(4)81 b Fj(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 3576 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 3689 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 3802 y(not)d(an)g(ev)m(en)h(m)m(ultiple)c
(of)j(the)g(result)f(dimension.)42 b(Call)31 b(\014ts)p
2392 3802 28 4 v 32 w(test)p 2570 3802 V 34 w(expr)g(to)h(obtain)g(the)
g(dimensions)d(of)227 3915 y(the)i(results.)95 4137 y
Fe(int)47 b(fits_calc_rows)d(/)k(ffcrow)286 4250 y(\(fitsfile)e(*fptr,)
93 b(int)47 b(datatype,)f(char)g(*expr,)g(long)h(firstrow,)334
4363 y(long)g(nelements,)e(void)h(*nulval,)g(>)h(void)g(*array,)94
b(int)46 b(*anynul,)g(int)h(*status\))0 4585 y Fi(5)81
b Fj(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 4698 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 4811 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
4924 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 5036 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 5149 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 5262 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 5375 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 5488 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 5601 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 5714 y(written)j(to)h(a)g(column)e(with)g
(that)i(name.)p eop
%%Page: 53 61
53 60 bop 0 299 a Fh(5.8.)72 b(UTILITY)30 b(R)m(OUTINES)2693
b Fj(53)95 555 y Fe(int)47 b(fits_calculator)d(/)j(ffcalc)286
668 y(\(fitsfile)f(*infptr,)f(char)i(*expr,)f(fitsfile)f(*outfptr,)h
(char)g(*parName,)334 781 y(char)h(*parInfo,)e(>)95 b(int)47
b(*status\))0 1032 y Fi(6)81 b Fj(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 1145 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 1258 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.)95 1509 y Fe(int)47 b(fits_calculator_rng)c(/)k
(ffcalc_rng)286 1622 y(\(fitsfile)f(*infptr,)f(char)i(*expr,)f
(fitsfile)f(*outfptr,)h(char)g(*parName,)334 1735 y(char)h(*parInfo,)e
(int)i(nranges,)e(long)i(*firstrow,)e(long)i(*lastrow)334
1848 y(>)95 b(int)47 b(*status\))0 2099 y Fi(7)81 b Fj(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.)95 2350 y Fe(int)47 b(fits_test_expr)d(/)k(fftexp)
286 2463 y(\(fitsfile)e(*fptr,)g(char)g(*expr,)g(>)i(int)f(*datatype,)e
(long)h(*nelem,)g(int)h(*naxis,)334 2575 y(long)g(*naxes,)f(int)g
(*status\))0 2908 y Ff(5.8)135 b(Utilit)l(y)47 b(Routines)0
3161 y Fd(5.8.1)112 b(File)37 b(Chec)m(ksum)g(Routines)0
3380 y Fj(The)c(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 3493 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 3606 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 3719 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 3832 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)0 3945 y(the)f(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
4058 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 4170 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 4283 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
4396 y(conference)h(in)d(Baltimore)i(in)e(No)m(v)m(em)m(b)s(er)j(1994)h
(and)d(a)h(later)g(revision)e(in)g(June)h(1995.)47 b(See)32
b(App)s(endix)d(B)j(for)0 4509 y(the)f(de\014nition)d(of)i(the)h
(parameters)f(used)g(in)f(these)i(routines.)0 4760 y
Fi(1)81 b Fj(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 4873
y(curren)m(t)e(header.)46 b(If)32 b(the)g(k)m(eyw)m(ords)h(already)f
(exist,)g(their)g(v)-5 b(alues)31 b(will)f(b)s(e)h(up)s(dated)g(only)g
(if)h(necessary)227 4986 y(\(i.e.,)f(if)f(the)g(\014le)g(has)g(b)s(een)
f(mo)s(di\014ed)g(since)g(the)i(original)e(k)m(eyw)m(ord)h(v)-5
b(alues)30 b(w)m(ere)h(computed\).)95 5237 y Fe(int)47
b(fits_write_chksum)c(/)48 b(ffpcks)286 5350 y(\(fitsfile)e(*fptr,)g(>)
h(int)g(*status\))0 5601 y Fi(2)81 b Fj(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
5714 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)p eop
%%Page: 54 62
54 61 bop 0 299 a Fj(54)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)227
555 y Fj(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 668 y(string,)30
b(and)g(writes)f(the)i(string)e(to)i(the)g(CHECKSUM)e(k)m(eyw)m(ord.)95
897 y Fe(int)47 b(fits_update_chksum)c(/)48 b(ffupck)286
1010 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*status\))0 1238
y Fi(3)81 b Fj(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 1351 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 1464 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
1577 y(zero.)47 b(The)32 b(output)f(D)m(A)-8 b(T)g(A)m(OK)34
b(and)d(HDUOK)i(parameters)f(in)f(this)g(routine)g(are)h(in)m(tegers)h
(whic)m(h)e(will)227 1690 y(ha)m(v)m(e)36 b(a)f(v)-5
b(alue)34 b(=)g(1)h(if)e(the)i(data)g(or)f(HDU)h(is)f(v)m(eri\014ed)f
(correctly)-8 b(,)37 b(a)e(v)-5 b(alue)34 b(=)g(0)h(if)e(the)i(D)m(A)-8
b(T)g(ASUM)36 b(or)227 1803 y(CHECKSUM)29 b(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.)95 2144 y Fe(int)47
b(fits_verify_chksum)c(/)48 b(ffvcks)286 2257 y(\(fitsfile)e(*fptr,)g
(>)h(int)g(*dataok,)f(int)h(*hduok,)e(int)i(*status\))0
2486 y Fi(4)81 b Fj(Compute)40 b(and)g(return)g(the)h(c)m(hec)m(ksum)g
(v)-5 b(alues)40 b(for)h(the)g(CHDU)g(without)f(creating)h(or)g(mo)s
(difying)d(the)227 2599 y(CHECKSUM)33 b(and)h(D)m(A)-8
b(T)g(ASUM)35 b(k)m(eyw)m(ords.)52 b(This)32 b(routine)h(is)g(used)g
(in)m(ternally)f(b)m(y)i(\013v)m(c)m(ks,)i(but)d(ma)m(y)227
2711 y(b)s(e)d(useful)f(in)g(other)h(situations)f(as)i(w)m(ell.)95
2940 y Fe(int)47 b(fits_get_chksum/)d(/ffgcks)286 3053
y(\(fitsfile)i(*fptr,)g(>)h(unsigned)f(long)g(*datasum,)g(unsigned)f
(long)i(*hdusum,)334 3166 y(int)g(*status\))0 3394 y
Fi(5)81 b Fj(Enco)s(de)23 b(a)h(c)m(hec)m(ksum)g(v)-5
b(alue)23 b(in)m(to)g(a)h(16-c)m(haracter)j(string.)37
b(If)23 b(complm)g(is)f(non-zero)j(\(true\))f(then)f(the)h(32-bit)227
3507 y(sum)30 b(v)-5 b(alue)30 b(will)d(b)s(e)j(complemen)m(ted)g(b)s
(efore)g(enco)s(ding.)95 3736 y Fe(int)47 b(fits_encode_chksum)c(/)48
b(ffesum)286 3849 y(\(unsigned)e(long)g(sum,)h(int)g(complm,)f(>)h
(char)g(*ascii\);)0 4077 y Fi(6)81 b Fj(Deco)s(de)24
b(a)f(16-c)m(haracter)j(c)m(hec)m(ksum)e(string)e(in)m(to)g(a)i
(unsigned)d(long)h(v)-5 b(alue.)38 b(If)23 b(is)f(non-zero)h(\(true\).)
39 b(then)23 b(the)227 4190 y(32-bit)32 b(sum)e(v)-5
b(alue)31 b(will)e(b)s(e)i(complemen)m(ted)g(after)h(deco)s(ding.)43
b(The)31 b(c)m(hec)m(ksum)h(v)-5 b(alue)31 b(is)g(also)g(returned)227
4303 y(as)g(the)f(v)-5 b(alue)30 b(of)h(the)f(function.)95
4532 y Fe(unsigned)46 b(long)h(fits_decode_chksum)42
b(/)48 b(ffdsum)525 4645 y(\(char)e(*ascii,)g(int)h(complm,)f(>)h
(unsigned)f(long)h(*sum\);)0 4930 y Fd(5.8.2)112 b(Date)38
b(and)g(Time)e(Utilit)m(y)e(Routines)0 5149 y Fj(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
5262 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
5375 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
5488 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 5601 y('dd/mm/yy')d(date)g
(format)g(ma)m(y)h(not)f(b)s(e)f(used)g(for)h(dates)h(after)f(01)h(Jan)
m(uary)e(2000.)42 b(See)27 b(App)s(endix)d(B)j(for)g(the)0
5714 y(de\014nition)h(of)j(the)f(parameters)h(used)e(in)g(these)i
(routines.)p eop
%%Page: 55 63
55 62 bop 0 299 a Fh(5.8.)72 b(UTILITY)30 b(R)m(OUTINES)2693
b Fj(55)0 555 y Fi(1)81 b Fj(Get)23 b(the)f(curren)m(t)f(system)i
(date.)38 b(C)22 b(already)f(pro)m(vides)g(standard)g(library)f
(routines)h(for)g(getting)i(the)f(curren)m(t)227 668
y(date)k(and)e(time,)i(but)e(this)g(routine)g(is)g(pro)m(vided)g(for)g
(compatibilit)m(y)g(with)f(the)i(F)-8 b(ortran)26 b(FITSIO)e(library)-8
b(.)227 781 y(The)30 b(returned)f(y)m(ear)j(has)e(4)g(digits)f(\(1999,)
k(2000,)g(etc.\))95 1026 y Fe(int)47 b(fits_get_system_date/ffgsd)o(t)
286 1139 y(\()h(>)f(int)g(*day,)g(int)f(*month,)g(int)h(*year,)f(int)h
(*status)f(\))0 1384 y Fi(2)81 b Fj(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 1497 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 1610 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 1722 y(and)f(th)m(us)g(the)h(lo)s(cal)
e(time)h(w)m(as)h(returned.)95 1967 y Fe(int)47 b
(fits_get_system_time/ffgst)o(m)286 2080 y(\(>)h(char)e(*datestr,)f
(int)95 b(*timeref,)45 b(int)i(*status\))0 2325 y Fi(3)81
b Fj(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 2438 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 2551 y(the)32 b(date)f(string)f(will)f
(ha)m(v)m(e)j(the)g(new)e(FITS)h(format)g(\('YYYY-MM-DD'\).)36
b(Use)31 b(\014ts)p 3229 2551 28 4 v 33 w(time2str)g(instead)227
2664 y(to)g(alw)m(a)m(ys)g(return)f(a)g(date)h(string)f(using)f(the)h
(new)g(FITS)g(format.)95 2909 y Fe(int)47 b(fits_date2str/ffdt2s)286
3022 y(\(int)g(year,)f(int)h(month,)f(int)h(day,)g(>)g(char)g
(*datestr,)e(int)i(*status\))0 3267 y Fi(4)81 b Fj(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
3379 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 3492 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 3605 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'\).)95 3850 y
Fe(int)47 b(fits_time2str/fftm2s)286 3963 y(\(int)g(year,)f(int)h
(month,)f(int)h(day,)g(int)g(hour,)f(int)h(minute,)f(double)g(second,)
286 4076 y(int)h(decimals,)f(>)h(char)g(*datestr,)e(int)i(*status\))0
4321 y Fi(5)81 b Fj(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 4434 y(\('dd/mm/yy'\))29 b(or)f(new)f
(\('YYYY-MM-DDThh:mm:ss')k(or)d('YYYY-MM-DD'\))j(FITS)d(format.)40
b(Null)227 4547 y(p)s(oin)m(ters)30 b(ma)m(y)g(b)s(e)g(supplied)d(for)j
(an)m(y)h(un)m(w)m(an)m(ted)g(output)f(date)h(parameters.)95
4792 y Fe(int)47 b(fits_str2date/ffs2dt)286 4904 y(\(char)g(*datestr,)e
(>)i(int)g(*year,)f(int)h(*month,)f(int)h(*day,)f(int)h(*status\))0
5149 y Fi(6)81 b Fj(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 5262 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 5375
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 5488 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 5601 y(the)d(input)e(string)h
(\('hh:mm:ss.ddd...'\).)40 b(Null)27 b(p)s(oin)m(ters)g(ma)m(y)j(b)s(e)
e(supplied)d(for)k(an)m(y)g(un)m(w)m(an)m(ted)g(output)227
5714 y(date)i(and)f(time)g(parameters.)p eop
%%Page: 56 64
56 63 bop 0 299 a Fj(56)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)95
555 y Fe(int)47 b(fits_str2time/ffs2tm)286 668 y(\(char)g(*datestr,)e
(>)i(int)g(*year,)f(int)h(*month,)f(int)h(*day,)f(int)h(*hour,)286
781 y(int)g(*minute,)f(double)g(*second,)f(int)i(*status\))0
1068 y Fd(5.8.3)112 b(General)38 b(Utilit)m(y)c(Routines)0
1286 y Fj(The)c(follo)m(wing)f(utilit)m(y)f(routines)i(ma)m(y)h(b)s(e)e
(useful)g(for)h(certain)g(applications.)0 1520 y Fi(1)81
b Fj(Return)30 b(the)h(revision)e(n)m(um)m(b)s(er)h(of)h(the)g(CFITSIO)
f(library)-8 b(.)40 b(The)31 b(revision)e(n)m(um)m(b)s(er)h(will)e(b)s
(e)i(incremen)m(ted)227 1633 y(with)f(eac)m(h)j(new)e(release)g(of)h
(CFITSIO.)95 1867 y Fe(float)47 b(fits_get_version)c(/)48
b(ffvers)e(\()h(>)h(float)e(*version\))0 2100 y Fi(2)81
b Fj(W)-8 b(rite)33 b(an)h(80-c)m(haracter)i(message)e(to)g(the)g
(CFITSIO)e(error)h(stac)m(k.)51 b(Application)31 b(programs)i(should)f
(not)227 2213 y(normally)d(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.)95
2447 y Fe(void)47 b(fits_write_errmsg)c(/)48 b(ffpmsg)e(\(char)g
(*err_msg\))0 2681 y Fi(3)81 b Fj(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\).)95
2914 y Fe(void)47 b(fits_uppercase)d(/)j(ffupch)g(\(char)f(*string\))0
3148 y Fi(4)81 b Fj(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 3261 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 3374 y(\(including)26
b(zero)k(c)m(haracters\))h(and)d('\045')i(will)c(matc)m(h)k(an)m(y)f
(single)f(c)m(haracter)j(in)c(the)j(reference)f(string.)39
b(If)227 3487 y(casesen)25 b(=)f(CASESEN)f(=)h(TR)m(UE)h(then)e(the)i
(matc)m(h)g(will)d(b)s(e)h(case)j(sensitiv)m(e,)f(otherwise)e(the)i
(case)g(of)g(the)227 3600 y(letters)h(will)d(b)s(e)i(ignored)f(if)h
(casesen)h(=)f(CASEINSEN)f(=)h(F)-10 b(ALSE.)25 b(The)g(returned)g(MA)
-8 b(TCH)25 b(parameter)227 3713 y(will)30 b(b)s(e)h(TR)m(UE)i(if)e
(the)h(2)h(strings)e(matc)m(h,)j(and)d(EXA)m(CT)h(will)e(b)s(e)h(TR)m
(UE)i(if)e(the)h(matc)m(h)h(is)f(exact)h(\(i.e.,)227
3826 y(if)27 b(no)h(wildcard)e(c)m(haracters)j(w)m(ere)g(used)e(in)f
(the)j(matc)m(h\).)41 b(Both)28 b(strings)f(m)m(ust)h(b)s(e)f(68)i(c)m
(haracters)h(or)e(less)227 3938 y(in)h(length.)95 4172
y Fe(void)47 b(fits_compare_str)c(/)48 b(ffcmps)334 4285
y(\(char)e(*templt,)g(char)h(*string,)e(int)i(casesen,)f(>)h(int)g
(*match,)f(int)h(*exact\))0 4519 y Fi(5)81 b Fj(Split)28
b(a)k(string)e(con)m(taining)g(a)i(list)d(of)i(names)g(\(t)m(ypically)g
(\014le)f(names)h(or)g(column)e(names\))j(in)m(to)f(individual)227
4632 y(name)23 b(tok)m(ens)g(b)m(y)g(a)g(sequence)g(of)g(calls)e(to)j
(\014ts)p 1814 4632 28 4 v 32 w(split)p 2020 4632 V 31
w(names.)38 b(The)22 b(names)h(in)e(the)i(list)e(m)m(ust)h(b)s(e)g
(delimited)227 4745 y(b)m(y)45 b(a)f(comma)i(and/or)e(spaces.)83
b(This)43 b(routine)g(ignores)h(spaces)h(and)f(commas)h(that)g(o)s
(ccur)f(within)227 4857 y(paren)m(theses,)36 b(brac)m(k)m(ets,)h(or)e
(curly)e(brac)m(k)m(ets.)54 b(It)35 b(also)f(strips)f(an)m(y)i(leading)
e(and)h(trailing)e(blanks)h(from)227 4970 y(the)e(returned)e(name.)227
5116 y(This)g(routine)g(is)h(similar)d(to)k(the)g(ANSI)f(C)g('strtok')h
(function:)227 5262 y(The)37 b(\014rst)f(call)g(to)i(\014ts)p
1033 5262 V 32 w(split)p 1239 5262 V 31 w(names)f(has)g(a)g(non-n)m
(ull)d(input)h(string.)60 b(It)37 b(\014nds)e(the)i(\014rst)f(name)h
(in)f(the)227 5375 y(string)25 b(and)g(terminates)g(it)h(b)m(y)f(o)m(v)
m(erwriting)g(the)h(next)g(c)m(haracter)h(of)f(the)g(string)e(with)h(a)
h(n)m(ull)d(terminator)227 5488 y(and)31 b(returns)g(a)h(p)s(oin)m(ter)
e(to)j(the)e(name.)45 b(Eac)m(h)32 b(subsequen)m(t)f(call,)h(indicated)
e(b)m(y)h(a)h(NULL)g(v)-5 b(alue)31 b(of)h(the)227 5601
y(input)e(string,)i(returns)f(the)h(next)h(name,)f(searc)m(hing)g(from)
g(just)g(past)g(the)g(end)f(of)i(the)f(previous)f(name.)227
5714 y(It)g(returns)e(NULL)h(when)g(no)g(further)f(names)h(are)h
(found.)p eop
%%Page: 57 65
57 64 bop 0 299 a Fh(5.8.)72 b(UTILITY)30 b(R)m(OUTINES)2693
b Fj(57)143 555 y Fe(char)47 b(*fits_split_names\(char)42
b(*namelist\))0 797 y Fj(The)30 b(follo)m(wing)f(example)h(sho)m(ws)g
(ho)m(w)g(a)h(string)e(w)m(ould)h(b)s(e)f(split)g(in)m(to)h(3)h(names:)
191 1039 y Fe(myfile[1][bin)44 b(\(x,y\)=4],)h(file2.fits)93
b(file3.fits)191 1152 y(^^^^^^^^^^^^^^^^^^^^^^)c(^^^^^^^^^^)k
(^^^^^^^^^^)382 1264 y(1st)47 b(name)619 b(2nd)47 b(name)190
b(3rd)47 b(name)0 1506 y Fi(6)81 b Fj(T)-8 b(est)34 b(that)g(the)g(k)m
(eyw)m(ord)g(name)f(con)m(tains)h(only)e(legal)i(c)m(haracters)h
(\(A-Z,0-9,)h(h)m(yphen,)d(and)g(underscore\))227 1619
y(or)e(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)95 1861
y Fe(int)47 b(fits_test_keyword)c(/)48 b(fftkey)e(\(char)g(*keyname,)g
(>)h(int)g(*status\))95 2087 y(int)g(fits_test_record)d(/)j(fftrec)f
(\(char)h(*card,)f(>)h(int)g(*status\))0 2328 y Fi(7)81
b Fj(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 2441 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
2554 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 2667 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
2780 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 2893 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 3006 y(long\).)44 b(Note)33
b(that)f(this)f(is)f(one)i(of)g(the)g(few)f(CFITSIO)f(routines)g(in)h
(whic)m(h)f(the)i(returned)e(v)-5 b(alue)31 b(is)g(not)227
3119 y(necessarily)f(equal)f(to)j(the)e(status)h(v)-5
b(alue\).)95 3360 y Fe(int)47 b(fits_null_check)d(/)j(ffnchk)g(\(char)f
(*card,)g(>)h(int)g(*status\))0 3602 y Fi(8)81 b Fj(P)m(arse)25
b(a)g(header)g(k)m(eyw)m(ord)g(record)g(and)f(return)g(the)h(name)g(of)
g(the)g(k)m(eyw)m(ord,)i(and)d(the)h(length)g(of)g(the)g(name.)227
3715 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 3828 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.)95
4070 y Fe(int)47 b(fits_get_keyname)d(/)j(ffgknm)286
4182 y(\(char)g(*card,)f(>)h(char)g(*keyname,)e(int)i(*keylength,)e
(int)i(*status\))0 4424 y Fi(9)81 b Fj(P)m(arse)29 b(a)h(header)f(k)m
(eyw)m(ord)h(record,)f(returning)f(the)h(v)-5 b(alue)29
b(\(as)h(a)f(literal)f(c)m(haracter)j(string\))d(and)h(commen)m(t)227
4537 y(strings.)39 b(If)27 b(the)g(k)m(eyw)m(ord)h(has)f(no)g(v)-5
b(alue)27 b(\(columns)f(9-10)j(not)f(equal)e(to)i('=)g('\),)g(then)f(a)
h(n)m(ull)d(v)-5 b(alue)27 b(string)227 4650 y(is)j(returned)f(and)h
(the)g(commen)m(t)i(string)d(is)g(set)i(equal)f(to)h(column)e(9)i(-)g
(80)g(of)g(the)f(input)f(string.)95 4892 y Fe(int)47
b(fits_parse_value)d(/)j(ffpsvc)286 5005 y(\(char)g(*card,)f(>)h(char)g
(*value,)f(char)g(*comment,)g(int)h(*status\))0 5246
y Fi(10)f Fj(Construct)26 b(an)h(arra)m(y)g(indexed)e(k)m(eyw)m(ord)i
(name)f(\(R)m(OOT)g(+)h(nnn\).)38 b(This)25 b(routine)g(app)s(ends)g
(the)i(sequence)227 5359 y(n)m(um)m(b)s(er)i(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'\))95 5601 y Fe(int)47 b(fits_make_keyn)d(/)k
(ffkeyn)286 5714 y(\(char)f(*keyroot,)e(int)i(value,)f(>)h(char)g
(*keyname,)e(int)i(*status\))p eop
%%Page: 58 66
58 65 bop 0 299 a Fj(58)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
555 y Fi(11)46 b Fj(Construct)41 b(a)h(sequence)f(k)m(eyw)m(ord)h(name)
g(\(n)f(+)g(R)m(OOT\).)g(This)f(routine)g(concatenates)k(the)e
(sequence)227 668 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'\))95 1045 y Fe(int)47
b(fits_make_nkey)d(/)k(ffnkey)286 1158 y(\(int)f(value,)f(char)h
(*keyroot,)e(>)i(char)g(*keyname,)e(int)i(*status\))0
1422 y Fi(12)f Fj(Determine)40 b(the)h(data)f(t)m(yp)s(e)h(of)f(a)h(k)m
(eyw)m(ord)f(v)-5 b(alue)40 b(string.)69 b(This)38 b(routine)i(parses)f
(the)i(k)m(eyw)m(ord)f(v)-5 b(alue)227 1535 y(string)27
b(to)i(determine)e(its)g(data)i(t)m(yp)s(e.)40 b(Returns)27
b('C',)h('L',)h('I',)f('F')h(or)f('X',)g(for)g(c)m(haracter)i(string,)d
(logical,)227 1648 y(in)m(teger,)k(\015oating)g(p)s(oin)m(t,)e(or)i
(complex,)f(resp)s(ectiv)m(ely)-8 b(.)95 1912 y Fe(int)47
b(fits_get_keytype)d(/)j(ffdtyp)286 2025 y(\(char)g(*value,)f(>)h(char)
g(*dtype,)e(int)i(*status\))0 2288 y Fi(13)f Fj(Return)35
b(the)g(class)g(of)h(an)f(input)f(header)h(record.)56
b(The)35 b(record)g(is)f(classi\014ed)g(in)m(to)i(one)f(of)h(the)f
(follo)m(wing)227 2401 y(categories)c(\(the)f(class)f(v)-5
b(alues)29 b(are)g(de\014ned)f(in)g(\014tsio.h\).)40
b(Note)31 b(that)f(this)e(is)g(one)i(of)f(the)g(few)g(CFITSIO)227
2514 y(routines)h(that)g(do)s(es)h(not)f(return)f(a)i(status)g(v)-5
b(alue.)334 2778 y Fe(Class)94 b(Value)619 b(Keywords)95
2891 y(TYP_STRUC_KEY)92 b(10)j(SIMPLE,)46 b(BITPIX,)g(NAXIS,)g(NAXISn,)
g(EXTEND,)g(BLOCKED,)1002 3004 y(GROUPS,)g(PCOUNT,)g(GCOUNT,)g(END)1002
3117 y(XTENSION,)g(TFIELDS,)f(TTYPEn,)h(TBCOLn,)g(TFORMn,)g(THEAP,)1002
3230 y(and)h(the)g(first)f(4)i(COMMENT)e(keywords)f(in)i(the)g(primary)
f(array)1002 3343 y(that)h(define)f(the)h(FITS)g(format.)95
3456 y(TYP_CMPRS_KEY)92 b(20)j(The)47 b(experimental)e(keywords)g(used)
i(in)g(the)g(compressed)1002 3569 y(image)g(format)f(ZIMAGE,)g
(ZCMPTYPE,)f(ZNAMEn,)h(ZVALn,)1002 3681 y(ZTILEn,)g(ZBITPIX,)g
(ZNAXISn,)f(ZSCALE,)h(ZZERO,)g(ZBLANK)95 3794 y(TYP_SCAL_KEY)140
b(30)95 b(BSCALE,)46 b(BZERO,)g(TSCALn,)g(TZEROn)95 3907
y(TYP_NULL_KEY)140 b(40)95 b(BLANK,)46 b(TNULLn)95 4020
y(TYP_DIM_KEY)188 b(50)95 b(TDIMn)95 4133 y(TYP_RANG_KEY)140
b(60)95 b(TLMINn,)46 b(TLMAXn,)g(TDMINn,)g(TDMAXn,)g(DATAMIN,)f
(DATAMAX)95 4246 y(TYP_UNIT_KEY)140 b(70)95 b(BUNIT,)46
b(TUNITn)95 4359 y(TYP_DISP_KEY)140 b(80)95 b(TDISPn)95
4472 y(TYP_HDUID_KEY)d(90)j(EXTNAME,)46 b(EXTVER,)g(EXTLEVEL,)f
(HDUNAME,)g(HDUVER,)h(HDULEVEL)95 4585 y(TYP_CKSUM_KEY)f(100)94
b(CHECKSUM,)46 b(DATASUM)95 4698 y(TYP_WCS_KEY)141 b(110)94
b(CTYPEn,)46 b(CUNITn,)g(CRVALn,)g(CRPIXn,)g(CROTAn,)f(CDELTn)1002
4811 y(CDj_is,)h(PVj_ms,)g(LONPOLEs,)f(LATPOLEs)1002
4924 y(TCTYPn,)h(TCTYns,)g(TCUNIn,)g(TCUNns,)g(TCRVLn,)f(TCRVns,)h
(TCRPXn,)1002 5036 y(TCRPks,)g(TCDn_k,)g(TCn_ks,)g(TPVn_m,)g(TPn_ms,)f
(TCDLTn,)h(TCROTn)1002 5149 y(jCTYPn,)g(jCTYns,)g(jCUNIn,)g(jCUNns,)g
(jCRVLn,)f(jCRVns,)h(iCRPXn,)1002 5262 y(iCRPns,)g(jiCDn,)94
b(jiCDns,)46 b(jPVn_m,)g(jPn_ms,)f(jCDLTn,)h(jCROTn)1002
5375 y(\(i,j,m,n)g(are)h(integers,)e(s)i(is)h(any)f(letter\))95
5488 y(TYP_REFSYS_KEY)d(120)j(EQUINOXs,)f(EPOCH,)g(MJD-OBSs,)f
(RADECSYS,)g(RADESYSs)95 5601 y(TYP_COMM_KEY)140 b(130)47
b(COMMENT,)f(HISTORY,)f(\(blank)h(keyword\))95 5714 y(TYP_CONT_KEY)140
b(140)47 b(CONTINUE)p eop
%%Page: 59 67
59 66 bop 0 299 a Fh(5.8.)72 b(UTILITY)30 b(R)m(OUTINES)2693
b Fj(59)95 555 y Fe(TYP_USER_KEY)140 b(150)47 b(all)g(other)g(keywords)
95 781 y(int)g(fits_get_keyclass)c(/)48 b(ffgkcl)e(\(char)g(*card\))0
1034 y Fi(14)g Fj(P)m(arse)28 b(the)g('TF)m(ORM')g(binary)e(table)h
(column)g(format)g(string.)39 b(This)26 b(routine)g(parses)h(the)h
(input)e(TF)m(ORM)227 1147 y(c)m(haracter)38 b(string)c(and)h(returns)g
(the)g(in)m(teger)h(data)h(t)m(yp)s(e)f(co)s(de,)h(the)f(rep)s(eat)g
(coun)m(t)g(of)g(the)f(\014eld,)h(and,)227 1260 y(in)e(the)g(case)i(of)
f(c)m(haracter)h(string)e(\014elds,)g(the)h(length)f(of)h(the)g(unit)e
(string.)53 b(See)34 b(App)s(endix)e(B)j(for)g(the)227
1373 y(allo)m(w)m(ed)k(v)-5 b(alues)37 b(for)i(the)f(returned)g(t)m(yp)
s(eco)s(de)h(parameter.)65 b(A)39 b(n)m(ull)d(p)s(oin)m(ter)i(ma)m(y)h
(b)s(e)f(giv)m(en)g(for)h(an)m(y)227 1486 y(output)30
b(parameters)h(that)g(are)g(not)f(needed.)143 1739 y
Fe(int)47 b(fits_binary_tform)c(/)48 b(ffbnfm)334 1852
y(\(char)e(*tform,)g(>)i(int)f(*typecode,)e(long)h(*repeat,)g(long)g
(*width,)382 1965 y(int)h(*status\))0 2218 y Fi(15)f
Fj(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 2331 y(routine)28 b(parses)h(the)g(input)e
(TF)m(ORM)i(c)m(haracter)h(string)e(and)h(returns)e(the)i(data)h(t)m
(yp)s(e)f(co)s(de,)h(the)f(width)227 2443 y(of)f(the)f(column,)g(and)g
(\(if)g(it)g(is)f(a)i(\015oating)f(p)s(oin)m(t)g(column\))f(the)i(n)m
(um)m(b)s(er)e(of)h(decimal)g(places)g(to)h(the)f(righ)m(t)227
2556 y(of)39 b(the)f(decimal)f(p)s(oin)m(t.)64 b(The)38
b(returned)f(data)i(t)m(yp)s(e)f(co)s(des)g(are)h(the)g(same)f(as)h
(for)f(the)g(binary)f(table,)227 2669 y(with)25 b(the)i(follo)m(wing)e
(additional)f(rules:)37 b(in)m(teger)27 b(columns)e(that)i(are)f(b)s
(et)m(w)m(een)h(1)g(and)f(4)g(c)m(haracters)i(wide)227
2782 y(are)i(de\014ned)e(to)j(b)s(e)d(short)i(in)m(tegers)f(\(co)s(de)h
(=)g(TSHOR)-8 b(T\).)29 b(Wider)f(in)m(teger)i(columns)e(are)i
(de\014ned)e(to)j(b)s(e)227 2895 y(regular)38 b(in)m(tegers)g(\(co)s
(de)h(=)f(TLONG\).)h(Similarly)-8 b(,)37 b(Fixed)h(decimal)f(p)s(oin)m
(t)g(columns)g(\(with)h(TF)m(ORM)227 3008 y(=)d('Fw.d'\))g(are)h
(de\014ned)d(to)j(b)s(e)e(single)g(precision)f(reals)i(\(co)s(de)g(=)g
(TFLO)m(A)-8 b(T\))35 b(if)f(w)h(is)f(b)s(et)m(w)m(een)h(1)h(and)227
3121 y(7)42 b(c)m(haracters)h(wide,)g(inclusiv)m(e.)72
b(Wider)40 b('F')i(columns)e(will)f(return)h(a)i(double)e(precision)g
(data)i(co)s(de)227 3234 y(\(=)32 b(TDOUBLE\).)h('Ew.d')f(format)g
(columns)f(will)e(ha)m(v)m(e)34 b(dataco)s(de)f(=)e(TFLO)m(A)-8
b(T,)33 b(and)e('Dw.d')i(format)227 3347 y(columns)44
b(will)f(ha)m(v)m(e)k(dataco)s(de)f(=)f(TDOUBLE.)g(A)h(n)m(ull)d(p)s
(oin)m(ter)i(ma)m(y)g(b)s(e)g(giv)m(en)h(for)f(an)m(y)g(output)227
3460 y(parameters)31 b(that)g(are)g(not)f(needed.)95
3713 y Fe(int)47 b(fits_ascii_tform)d(/)j(ffasfm)286
3826 y(\(char)g(*tform,)f(>)h(int)g(*typecode,)e(long)i(*width,)e(int)i
(*decimals,)334 3939 y(int)g(*status\))0 4192 y Fi(16)f
Fj(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
4304 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 4417 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 4530
y(b)s(etter)31 b(h)m(uman)e(readabilit)m(y\).)95 4783
y Fe(int)47 b(fits_get_tbcol)d(/)k(ffgabc)286 4896 y(\(int)f(tfields,)f
(char)g(**tform,)g(int)h(space,)f(>)h(long)g(*rowlen,)334
5009 y(long)g(*tbcol,)f(int)g(*status\))0 5262 y Fi(17)g
Fj(P)m(arse)27 b(a)g(template)g(header)f(record)g(and)g(return)g(a)g
(formatted)h(80-c)m(haracter)j(string)25 b(suitable)g(for)h(app)s(end-)
227 5375 y(ing)39 b(to)g(\(or)h(deleting)e(from\))h(a)g(FITS)g(header)g
(\014le.)66 b(This)37 b(routine)h(is)g(useful)g(for)g(parsing)g(lines)f
(from)227 5488 y(an)c(ASCI)s(I)f(template)h(\014le)f(and)h
(reformatting)g(them)g(in)m(to)g(legal)g(FITS)f(header)h(records.)49
b(The)32 b(format-)227 5601 y(ted)i(string)f(ma)m(y)h(then)f(b)s(e)g
(passed)h(to)g(the)g(\014ts)p 1880 5601 28 4 v 32 w(write)p
2115 5601 V 32 w(record,)h(\013mcrd,)f(or)g(\014ts)p
3007 5601 V 32 w(delete)p 3271 5601 V 33 w(k)m(ey)h(routines)d(to)227
5714 y(app)s(end)d(or)h(mo)s(dify)f(a)i(FITS)e(header)h(record.)p
eop
%%Page: 60 68
60 67 bop 0 299 a Fj(60)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)95
555 y Fe(int)47 b(fits_parse_template)c(/)k(ffgthd)286
668 y(\(char)g(*templt,)e(>)j(char)e(*card,)g(int)h(*keytype,)f(int)h
(*status\))0 932 y Fj(The)31 b(input)f(templt)h(c)m(haracter)i(string)e
(generally)g(should)e(con)m(tain)j(3)g(tok)m(ens:)44
b(\(1\))33 b(the)f(KEYNAME,)g(\(2\))h(the)0 1045 y(V)-10
b(ALUE,)37 b(and)f(\(3\))i(the)f(COMMENT)g(string.)58
b(The)37 b(TEMPLA)-8 b(TE)36 b(string)g(m)m(ust)g(adhere)h(to)h(the)e
(follo)m(wing)0 1158 y(format:)0 1421 y Fi(-)80 b Fj(The)32
b(KEYNAME)h(tok)m(en)h(m)m(ust)f(b)s(egin)e(in)h(columns)f(1-8)j(and)e
(b)s(e)g(a)h(maxim)m(um)f(of)h(8)g(c)m(haracters)h(long.)48
b(A)227 1534 y(legal)28 b(FITS)g(k)m(eyw)m(ord)h(name)f(ma)m(y)h(only)e
(con)m(tain)i(the)g(c)m(haracters)g(A-Z,)g(0-9,)h(and)e('-')h(\(min)m
(us)e(sign\))h(and)227 1647 y(underscore.)40 b(This)26
b(routine)i(will)e(automatically)i(con)m(v)m(ert)i(an)m(y)f(lo)m(w)m
(ercase)h(c)m(haracters)g(to)g(upp)s(ercase)d(in)227
1760 y(the)k(output)f(string.)41 b(If)30 b(the)h(\014rst)f(8)h(c)m
(haracters)h(of)f(the)g(template)g(line)e(are)i(blank)e(then)i(the)g
(remainder)227 1873 y(of)g(the)f(line)f(is)h(considered)f(to)i(b)s(e)f
(a)g(FITS)g(commen)m(t)h(\(with)f(a)h(blank)e(k)m(eyw)m(ord)h(name\).)0
2137 y Fi(-)80 b Fj(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 2250 y(an)g('=')g(c)m(haracter.)41
b(The)25 b(data)h(t)m(yp)s(e)g(of)g(the)g(V)-10 b(ALUE)26
b(tok)m(en)g(\(n)m(umeric,)g(logical,)h(or)f(c)m(haracter)h(string\))e
(is)227 2363 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 2476 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
2588 y(enclosing)f(it)g(in)f(single)g(quotes.)0 2852
y Fi(-)80 b Fj(The)28 b(COMMENT)g(tok)m(en)h(is)e(optional,)h(but)g(if)
f(presen)m(t)h(m)m(ust)g(b)s(e)g(separated)g(from)g(the)g(V)-10
b(ALUE)29 b(tok)m(en)g(b)m(y)227 2965 y(at)i(least)g(one)g(blank)e
(space)i(and)e(a)i('/')g(c)m(haracter.)0 3229 y Fi(-)80
b Fj(One)29 b(exception)g(to)g(the)g(ab)s(o)m(v)m(e)i(rules)c(is)h
(that)h(if)f(the)h(\014rst)g(non-blank)e(c)m(haracter)j(in)e(the)h
(\014rst)f(8)h(c)m(haracters)227 3342 y(of)24 b(the)h(template)f
(string)f(is)g(a)h(min)m(us)f(sign)g(\('-'\))i(follo)m(w)m(ed)f(b)m(y)g
(a)g(single)f(tok)m(en,)j(or)e(a)h(single)d(tok)m(en)j(follo)m(w)m(ed)
227 3455 y(b)m(y)k(an)g(equal)g(sign,)g(then)g(it)f(is)h(in)m
(terpreted)f(as)i(the)f(name)g(of)h(a)f(k)m(eyw)m(ord)h(whic)m(h)e(is)g
(to)i(b)s(e)e(deleted)h(from)227 3568 y(the)i(FITS)e(header.)0
3831 y Fi(-)80 b Fj(The)32 b(second)g(exception)g(is)f(that)i(if)e(the)
h(template)g(string)f(starts)i(with)d(a)j(min)m(us)d(sign)h(and)g(is)g
(follo)m(w)m(ed)h(b)m(y)227 3944 y(2)h(tok)m(ens)g(\(without)f(an)g
(equals)g(sign)g(b)s(et)m(w)m(een)h(them\))f(then)g(the)h(second)f(tok)
m(en)i(is)d(in)m(terpreted)h(as)h(the)227 4057 y(new)f(name)h(for)f
(the)h(k)m(eyw)m(ord)g(sp)s(eci\014ed)e(b)m(y)i(\014rst)f(tok)m(en.)48
b(In)32 b(this)f(case)j(the)f(old)f(k)m(eyw)m(ord)h(name)f(\(\014rst)
227 4170 y(tok)m(en\))c(is)d(returned)f(in)h(c)m(haracters)i(1-8)g(of)g
(the)f(returned)e(CARD)j(string,)f(and)f(the)h(new)f(k)m(eyw)m(ord)i
(name)227 4283 y(\(the)35 b(second)e(tok)m(en\))j(is)d(returned)f(in)h
(c)m(haracters)i(41-48)h(of)e(the)g(returned)e(CARD)i(string.)50
b(These)34 b(old)227 4396 y(and)i(new)f(names)h(ma)m(y)h(then)f(b)s(e)f
(passed)g(to)i(the)f(\013mnam)g(routine)f(whic)m(h)g(will)e(c)m(hange)k
(the)f(k)m(eyw)m(ord)227 4509 y(name.)0 4773 y(The)30
b(k)m(eyt)m(yp)s(e)h(output)f(parameter)h(indicates)e(ho)m(w)i(the)f
(returned)g(CARD)g(string)f(should)g(b)s(e)g(in)m(terpreted:)382
5036 y Fe(keytype)857 b(interpretation)382 5149 y(-------)475
b(-------------------------)o(----)o(---)o(----)o(----)o(---)o(----)o
(--)525 5262 y(-2)572 b(Rename)46 b(the)h(keyword)f(with)h(name)f(=)i
(the)f(first)f(8)h(characters)e(of)j(CARD)1193 5375 y(to)f(the)g(new)g
(name)g(given)f(in)h(characters)e(41)j(-)f(48)g(of)g(CARD.)525
5601 y(-1)572 b(delete)46 b(the)h(keyword)f(with)h(this)f(name)h(from)g
(the)f(FITS)h(header.)p eop
%%Page: 61 69
61 68 bop 0 299 a Fh(5.8.)72 b(UTILITY)30 b(R)m(OUTINES)2693
b Fj(61)573 555 y Fe(0)572 b(append)46 b(the)h(CARD)g(string)f(to)h
(the)g(FITS)g(header)f(if)h(the)1193 668 y(keyword)f(does)h(not)g
(already)e(exist,)h(otherwise)g(update)1193 781 y(the)h(keyword)f
(value)g(and/or)g(comment)g(field)h(if)g(is)g(already)f(exists.)573
1007 y(1)572 b(This)47 b(is)g(a)g(HISTORY)f(or)h(COMMENT)f(keyword;)g
(append)g(it)h(to)g(the)g(header)573 1233 y(2)572 b(END)47
b(record;)f(do)h(not)g(explicitly)e(write)h(it)i(to)f(the)g(FITS)f
(file.)0 1458 y Fj(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
1682 y Fe(INTVAL)46 b(7)i(/)f(This)g(is)g(an)g(integer)f(keyword)286
1795 y(RVAL)524 b(34.6)142 b(/)239 b(This)46 b(is)i(a)f(floating)f
(point)g(keyword)286 1908 y(EVAL=-12.45E-03)92 b(/)47
b(This)g(is)g(a)g(floating)f(point)g(keyword)g(in)h(exponential)e
(notation)286 2021 y(lval)i(F)g(/)h(This)f(is)g(a)g(boolean)f(keyword)
859 2134 y(This)h(is)g(a)g(comment)f(keyword)g(with)h(a)g(blank)f
(keyword)g(name)286 2247 y(SVAL1)h(=)g('Hello)f(world')142
b(/)95 b(this)47 b(is)g(a)g(string)f(keyword)286 2360
y(SVAL2)94 b('123.5')g(this)47 b(is)g(also)f(a)i(string)e(keyword)286
2473 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 2586
y(#)48 b(the)f(following)e(template)h(line)g(deletes)g(the)h(DATE)g
(keyword)286 2699 y(-)h(DATE)286 2812 y(#)g(the)f(following)e(template)
h(line)g(modifies)g(the)h(NAME)f(keyword)g(to)h(OBJECT)286
2924 y(-)h(NAME)e(OBJECT)0 3149 y Fi(18)g Fj(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
3262 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)227 3375 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 3488 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 3601 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 3714 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 3827 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 3940 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
4165 y Fe(int)47 b(fits_parse_range)c(/)48 b(ffrwrg\(char)c(*rowlist,)i
(long)g(maxrows,)g(int)h(maxranges,)e(>)334 4278 y(int)i(*numranges,)e
(long)h(*rangemin,)f(long)i(*rangemax,)e(int)i(*status\))0
4503 y Fi(19)f Fj(Chec)m(k)37 b(that)g(the)g(Header)g(\014ll)e(b)m
(ytes)i(\(if)f(an)m(y\))h(are)g(all)f(blank.)58 b(These)36
b(are)h(the)g(b)m(ytes)g(that)g(ma)m(y)h(follo)m(w)227
4615 y(END)e(k)m(eyw)m(ord)g(and)f(b)s(efore)g(the)h(b)s(eginning)d(of)
j(data)g(unit,)f(or)h(the)g(end)f(of)g(the)h(HDU)g(if)f(there)g(is)g
(no)227 4728 y(data)c(unit.)191 4953 y Fe(int)47 b(ffchfl\(fitsfile)c
(*fptr,)k(>)g(int)g(*status\))0 5178 y Fi(20)f Fj(Chec)m(k)30
b(that)g(the)f(Data)i(\014ll)c(b)m(ytes)j(\(if)f(an)m(y\))h(are)g(all)e
(zero)i(\(for)f(IMA)m(GE)i(or)e(BINAR)-8 b(Y)30 b(T)-8
b(able)29 b(HDU\))i(or)e(all)227 5291 y(blanks)f(\(for)h(ASCI)s(I)f
(table)h(HDU\).)h(These)f(\014le)f(b)m(ytes)i(ma)m(y)f(b)s(e)g(lo)s
(cated)g(after)h(the)f(last)g(v)-5 b(alid)27 b(data)j(b)m(yte)227
5404 y(in)f(the)i(HDU)g(and)f(b)s(efore)g(the)g(ph)m(ysical)f(end)h(of)
h(the)f(HDU.)191 5629 y Fe(int)47 b(ffcdfl\(fitsfile)c(*fptr,)k(>)g
(int)g(*status\))p eop
%%Page: 62 70
62 69 bop 0 299 a Fj(62)1379 b Fh(CHAPTER)30 b(5.)71
b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)p
eop
%%Page: 63 71
63 70 bop 0 1225 a Fg(Chapter)65 b(6)0 1687 y Fm(The)77
b(CFITSIO)f(Iterator)i(F)-19 b(unction)0 2180 y Fj(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 Fj(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 Fj(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 Fj(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 Fj(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(63)p eop
%%Page: 64 72
64 71 bop 0 299 a Fj(64)1455 b Fh(CHAPTER)30 b(6.)112
b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0 555
y Fj(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(The)20 b(follo)m(wing)f(2)i(sections)f(describ)s(e)
f(these)i(steps)g(in)e(more)h(detail.)37 b(There)20 b(are)h(also)f(sev)
m(eral)h(example)f(programs)0 1440 y(included)28 b(with)h(the)h
(CFITSIO)f(distribution)e(whic)m(h)i(illustrate)g(ho)m(w)h(to)h(use)f
(the)h(iterator)f(function.)0 1789 y Ff(6.1)135 b(The)45
b(Iterator)h(W)-11 b(ork)45 b(F)-11 b(unction)0 2043
y Fj(The)42 b(user-supplied)d(iterator)k(w)m(ork)g(function)e(m)m(ust)h
(ha)m(v)m(e)i(the)f(follo)m(wing)e(set)i(of)g(input)d(parameters)j
(\(the)0 2156 y(function)29 b(can)i(b)s(e)e(giv)m(en)i(an)m(y)g
(desired)d(name\):)95 2429 y Fe(int)47 b(user_fn\()f(long)h(totaln,)e
(long)i(offset,)f(long)g(firstn,)g(long)h(nvalues,)716
2542 y(int)g(narrays,)e(iteratorCol)g(*data,)94 b(void)47
b(*userPointer)d(\))136 2815 y Fc(\017)i Fj(totaln)23
b({)g(the)f(total)i(n)m(um)m(b)s(er)d(of)h(table)h(ro)m(ws)f(or)g
(image)h(pixels)e(that)i(will)c(b)s(e)j(passed)g(to)h(the)g(w)m(ork)f
(function)227 2928 y(during)28 b(1)j(or)g(more)f(iterations.)136
3129 y Fc(\017)46 b Fj(o\013set)d({)f(the)h(o\013set)f(applied)e(to)j
(the)f(\014rst)f(table)h(ro)m(w)g(or)g(image)g(pixel)e(to)j(b)s(e)e
(passed)g(to)i(the)f(w)m(ork)227 3241 y(function.)54
b(In)34 b(other)i(w)m(ords,)g(this)e(is)g(the)h(n)m(um)m(b)s(er)f(of)h
(ro)m(ws)h(or)f(pixels)e(that)j(are)f(skipp)s(ed)e(o)m(v)m(er)j(b)s
(efore)227 3354 y(starting)29 b(the)h(iterations.)40
b(If)28 b(o\013set)j(=)e(0,)h(then)f(all)f(the)h(table)h(ro)m(ws)f(or)g
(image)h(pixels)d(will)g(b)s(e)h(passed)h(to)227 3467
y(the)i(w)m(ork)f(function.)136 3668 y Fc(\017)46 b Fj(\014rstn)26
b({)i(the)f(n)m(um)m(b)s(er)f(of)i(the)f(\014rst)g(table)g(ro)m(w)g(or)
g(image)h(pixel)d(\(starting)j(with)e(1\))i(that)f(is)g(b)s(eing)e
(passed)227 3781 y(in)k(this)h(particular)e(call)i(to)h(the)g(w)m(ork)f
(function.)136 3982 y Fc(\017)46 b Fj(n)m(v)-5 b(alues)34
b({)h(the)f(n)m(um)m(b)s(er)g(of)g(table)g(ro)m(ws)h(or)f(image)h
(pixels)d(that)j(are)g(b)s(eing)e(passed)h(in)f(this)h(particular)227
4095 y(call)g(to)i(the)f(w)m(ork)f(function.)53 b(n)m(v)-5
b(alues)34 b(will)e(alw)m(a)m(ys)j(b)s(e)f(less)g(than)g(or)h(equal)f
(to)i(totaln)f(and)f(will)e(ha)m(v)m(e)227 4208 y(the)i(same)f(v)-5
b(alue)33 b(on)g(eac)m(h)h(iteration,)g(except)g(p)s(ossibly)d(on)i
(the)g(last)g(call)g(whic)m(h)f(ma)m(y)h(ha)m(v)m(e)i(a)e(smaller)227
4321 y(v)-5 b(alue.)136 4522 y Fc(\017)46 b Fj(narra)m(ys)31
b({)g(the)g(n)m(um)m(b)s(er)f(of)h(arra)m(ys)g(of)g(data)h(that)f(are)g
(b)s(eing)f(passed)g(to)i(the)f(w)m(ork)g(function.)41
b(There)30 b(is)227 4635 y(one)h(arra)m(y)g(for)f(eac)m(h)i(image)e(or)
g(table)h(column.)136 4835 y Fc(\017)46 b Fj(*data)31
b({)e(arra)m(y)h(of)f(structures,)g(one)h(for)f(eac)m(h)h(column)e(or)h
(image.)41 b(Eac)m(h)29 b(structure)g(con)m(tains)g(a)h(p)s(oin)m(ter)
227 4948 y(to)h(the)g(arra)m(y)g(of)f(data)h(as)g(w)m(ell)e(as)i(other)
g(descriptiv)m(e)e(parameters)i(ab)s(out)f(that)h(arra)m(y)-8
b(.)136 5149 y Fc(\017)46 b Fj(*userP)m(oin)m(ter)25
b({)h(a)f(user)f(supplied)e(p)s(oin)m(ter)i(that)i(can)f(b)s(e)f(used)h
(to)g(pass)g(ancillary)e(information)g(from)i(the)227
5262 y(driv)m(er)g(function)g(to)h(the)g(w)m(ork)g(function.)38
b(This)24 b(p)s(oin)m(ter)h(is)g(passed)h(to)g(the)h(CFITSIO)d
(iterator)i(function)227 5375 y(whic)m(h)36 b(then)g(passes)g(it)g(on)h
(to)g(the)f(w)m(ork)h(function)e(without)h(an)m(y)h(mo)s(di\014cation.)
57 b(It)37 b(ma)m(y)g(p)s(oin)m(t)e(to)j(a)227 5488 y(single)27
b(n)m(um)m(b)s(er,)h(to)h(an)f(arra)m(y)h(of)g(v)-5 b(alues,)28
b(to)h(a)g(structure)f(con)m(taining)g(an)g(arbitrary)f(set)i(of)g
(parameters)227 5601 y(of)e(di\013eren)m(t)g(t)m(yp)s(es,)h(or)f(it)g
(ma)m(y)g(b)s(e)g(a)g(n)m(ull)e(p)s(oin)m(ter)h(if)g(it)h(is)f(not)h
(needed.)40 b(The)26 b(w)m(ork)h(function)f(m)m(ust)h(cast)227
5714 y(this)j(p)s(oin)m(ter)f(to)i(the)g(appropriate)e(data)i(t)m(yp)s
(e)g(b)s(efore)f(using)e(it)i(it.)p eop
%%Page: 65 73
65 72 bop 0 299 a Fh(6.1.)72 b(THE)30 b(ITERA)-8 b(TOR)30
b(W)m(ORK)g(FUNCTION)2021 b Fj(65)0 555 y(The)23 b(totaln,)j(o\013set,)
h(narra)m(ys,)e(data,)h(and)d(userP)m(oin)m(ter)h(parameters)g(are)g
(guaran)m(teed)h(to)g(ha)m(v)m(e)g(the)f(same)g(v)-5
b(alue)0 668 y(on)35 b(eac)m(h)i(iteration.)55 b(Only)33
b(\014rstn,)j(n)m(v)-5 b(alues,)36 b(and)e(the)i(arra)m(ys)f(of)h(data)
g(p)s(oin)m(ted)e(to)i(b)m(y)f(the)h(data)g(structures)0
781 y(ma)m(y)31 b(c)m(hange)g(on)g(eac)m(h)g(iterativ)m(e)g(call)f(to)h
(the)f(w)m(ork)h(function.)0 941 y(Note)43 b(that)g(the)f(iterator)g
(treats)h(an)f(image)g(as)g(a)g(long)g(1-D)h(arra)m(y)f(of)h(pixels)d
(regardless)h(of)h(it's)g(in)m(trinsic)0 1054 y(dimensionalit)m(y)-8
b(.)48 b(The)33 b(total)i(n)m(um)m(b)s(er)d(of)i(pixels)e(is)h(just)g
(the)h(pro)s(duct)e(of)i(the)g(size)g(of)f(eac)m(h)i(dimension,)e(and)0
1167 y(the)g(order)g(of)g(the)g(pixels)e(is)h(the)h(same)g(as)g(the)h
(order)e(that)h(they)h(are)f(stored)g(in)f(the)h(FITS)f(\014le.)47
b(If)33 b(the)g(w)m(ork)0 1280 y(function)26 b(needs)h(to)h(kno)m(w)f
(the)h(n)m(um)m(b)s(er)e(and)h(size)g(of)h(the)f(image)h(dimensions)c
(then)j(these)h(parameters)g(can)g(b)s(e)0 1393 y(passed)i(via)g(the)g
(userP)m(oin)m(ter)h(structure.)0 1553 y(The)f(iteratorCol)g(structure)
g(is)f(curren)m(tly)h(de\014ned)f(as)h(follo)m(ws:)0
1780 y Fe(typedef)46 b(struct)94 b(/*)47 b(structure)e(for)i(the)g
(iterator)e(function)h(column)g(information)f(*/)0 1893
y({)143 2005 y(/*)i(structure)f(elements)f(required)h(as)h(input)f(to)h
(fits_iterate_data:)c(*/)95 2231 y(fitsfile)j(*fptr;)332
b(/*)48 b(pointer)d(to)j(the)f(HDU)f(containing)f(the)i(column)f(or)i
(image)e(*/)95 2344 y(int)286 b(colnum;)e(/*)48 b(column)e(number)g(in)
h(the)g(table;)f(ignored)g(for)h(images)189 b(*/)95 2457
y(char)238 b(colname[70];)44 b(/*)k(name)e(\(TTYPEn\))g(of)h(the)g
(column;)f(null)g(for)h(images)285 b(*/)95 2570 y(int)h(datatype;)188
b(/*)48 b(output)e(data)g(type)h(\(converted)e(if)i(necessary\))e(*/)95
2683 y(int)286 b(iotype;)e(/*)48 b(type:)e(InputCol,)f(InputOutputCol,)
f(or)j(OutputCol)e(*/)95 2909 y(/*)j(output)e(structure)f(elements)h
(that)g(may)h(be)g(useful)f(for)h(the)g(work)g(function:)e(*/)95
3135 y(void)238 b(*array;)189 b(/*)47 b(pointer)f(to)h(the)g(array)f
(\(and)h(the)g(null)g(value\))f(*/)95 3247 y(long)238
b(repeat;)189 b(/*)47 b(binary)f(table)h(vector)f(repeat)g(value;)g
(set)238 b(*/)1050 3360 y(/*)g(equal)46 b(to)i(1)f(for)g(images)810
b(*/)95 3473 y(long)238 b(tlmin;)f(/*)47 b(legal)g(minimum)e(data)i
(value,)f(if)h(any)477 b(*/)95 3586 y(long)238 b(tlmax;)f(/*)47
b(legal)g(maximum)e(data)i(value,)f(if)h(any)477 b(*/)95
3699 y(char)238 b(unit[70];)93 b(/*)47 b(physical)f(unit)g(string)g
(\(BUNIT)h(or)g(TUNITn\))189 b(*/)95 3812 y(char)238
b(tdisp[70];)45 b(/*)i(suggested)e(display)h(format;)g(null)h(if)g
(none)190 b(*/)0 4038 y(})47 b(iteratorCol;)0 4264 y
Fj(Instead)34 b(of)g(directly)e(reading)h(or)h(writing)e(the)h(elemen)m
(ts)i(in)d(this)h(structure,)h(it)g(is)e(recommended)i(that)g(pro-)0
4377 y(grammers)c(use)g(the)h(access)h(functions)c(that)j(are)g(pro)m
(vided)e(for)h(this)g(purp)s(ose.)0 4538 y(The)25 b(\014rst)g(\014v)m
(e)h(elemen)m(ts)g(in)f(this)f(structure)i(m)m(ust)f(b)s(e)g(initially)
e(de\014ned)h(b)m(y)i(the)g(driv)m(er)e(routine)h(b)s(efore)g(calling)0
4650 y(the)f(iterator)g(routine.)37 b(The)23 b(CFITSIO)f(iterator)i
(routine)f(uses)g(this)f(information)g(to)i(determine)f(what)g(column)0
4763 y(or)32 b(arra)m(y)h(to)h(pass)e(to)h(the)g(w)m(ork)f(function,)g
(and)g(whether)g(the)g(arra)m(y)h(is)f(to)h(b)s(e)f(input)f(to)i(the)f
(w)m(ork)h(function,)0 4876 y(output)g(from)g(the)h(w)m(ork)f
(function,)g(or)h(b)s(oth.)49 b(The)33 b(CFITSIO)f(iterator)h(function)
f(\014lls)g(in)g(the)h(v)-5 b(alues)33 b(of)h(the)0 4989
y(remaining)28 b(structure)i(elemen)m(ts)h(b)s(efore)f(passing)f(it)h
(to)h(the)g(w)m(ork)f(function.)0 5149 y(The)d(arra)m(y)g(structure)g
(elemen)m(t)h(is)e(a)h(p)s(oin)m(ter)f(to)i(the)g(actual)f(data)h(arra)
m(y)g(and)e(it)h(m)m(ust)g(b)s(e)f(cast)j(to)e(the)h(correct)0
5262 y(data)k(t)m(yp)s(e)f(b)s(efore)f(it)h(is)f(used.)41
b(The)31 b(`rep)s(eat')g(structure)g(elemen)m(t)g(giv)m(e)g(the)h(n)m
(um)m(b)s(er)d(of)i(data)h(v)-5 b(alues)30 b(in)g(eac)m(h)0
5375 y(ro)m(w)g(of)g(the)g(table,)h(so)f(that)h(the)f(total)h(n)m(um)m
(b)s(er)d(of)i(data)h(v)-5 b(alues)29 b(in)g(the)h(arra)m(y)h(is)e(giv)
m(en)h(b)m(y)g(rep)s(eat)g(*)g(n)m(v)-5 b(alues.)0 5488
y(In)36 b(the)g(case)i(of)e(image)h(arra)m(ys)g(and)e(ASCI)s(I)g
(tables,)j(rep)s(eat)f(will)d(alw)m(a)m(ys)i(b)s(e)g(equal)g(to)h(1.)59
b(When)37 b(the)f(data)0 5601 y(t)m(yp)s(e)k(is)e(a)i(c)m(haracter)h
(string,)g(the)f(arra)m(y)g(p)s(oin)m(ter)e(is)h(actually)g(a)h(p)s
(oin)m(ter)e(to)j(an)e(arra)m(y)h(of)g(string)e(p)s(oin)m(ters)0
5714 y(\(i.e.,)30 b(c)m(har)f(**arra)m(y\).)42 b(The)29
b(other)g(output)g(structure)f(elemen)m(ts)i(are)f(pro)m(vided)f(for)g
(con)m(v)m(enience)j(in)c(case)j(that)p eop
%%Page: 66 74
66 73 bop 0 299 a Fj(66)1455 b Fh(CHAPTER)30 b(6.)112
b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0 555
y Fj(information)k(is)h(needed)g(within)e(the)j(w)m(ork)g(function.)55
b(An)m(y)35 b(other)h(information)e(ma)m(y)i(b)s(e)f(passed)h(from)f
(the)0 668 y(driv)m(er)29 b(routine)h(to)h(the)f(w)m(ork)h(function)e
(via)h(the)g(userP)m(oin)m(ter)g(parameter.)0 828 y(Up)s(on)h
(completion,)h(the)g(w)m(ork)h(routine)e(m)m(ust)h(return)f(an)h(in)m
(teger)g(status)g(v)-5 b(alue,)33 b(with)d(0)j(indicating)d(success)0
941 y(and)h(an)m(y)g(other)g(v)-5 b(alue)31 b(indicating)e(an)i(error)g
(whic)m(h)f(will)e(cause)k(the)f(iterator)h(function)e(to)i
(immediately)d(exit)0 1054 y(at)e(that)f(p)s(oin)m(t.)38
b(Return)25 b(status)i(v)-5 b(alues)25 b(in)f(the)i(range)h(1)f({)g
(1000)i(should)23 b(b)s(e)j(a)m(v)m(oided)g(since)f(these)i(are)f
(reserv)m(ed)0 1167 y(for)d(use)g(b)m(y)h(CFITSIO.)e(A)i(return)e
(status)i(v)-5 b(alue)23 b(of)h(-1)g(ma)m(y)g(b)s(e)f(used)f(to)j
(force)f(the)f(CFITSIO)f(iterator)i(function)0 1280 y(to)j(stop)g(at)g
(that)h(p)s(oin)m(t)d(and)h(return)g(con)m(trol)h(to)g(the)g(driv)m(er)
e(routine)h(after)h(writing)d(an)m(y)j(output)f(arra)m(ys)h(to)h(the)0
1393 y(FITS)e(\014le.)39 b(CFITSIO)26 b(do)s(es)g(not)i(considered)e
(this)g(to)i(b)s(e)e(an)h(error)g(condition,)g(so)g(an)m(y)g(further)f
(pro)s(cessing)g(b)m(y)0 1506 y(the)31 b(application)d(program)i(will)e
(con)m(tin)m(ue)j(normally)-8 b(.)0 1837 y Ff(6.2)135
b(The)45 b(Iterator)h(Driv)l(er)g(F)-11 b(unction)0 2087
y Fj(The)33 b(iterator)g(driv)m(er)f(function)g(m)m(ust)i(op)s(en)e
(the)i(necessary)f(FITS)g(\014les)f(and)h(p)s(osition)e(them)i(to)h
(the)g(correct)0 2200 y(HDU.)23 b(It)f(m)m(ust)g(also)h(initialize)c
(the)j(follo)m(wing)f(parameters)h(in)f(the)i(iteratorCol)f(structure)f
(\(de\014ned)g(ab)s(o)m(v)m(e\))j(for)0 2313 y(eac)m(h)31
b(column)e(or)h(image)g(b)s(efore)f(calling)g(the)h(CFITSIO)e(iterator)
i(function.)39 b(Sev)m(eral)30 b(`constructor')h(routines)0
2426 y(are)g(pro)m(vided)e(in)g(CFITSIO)g(for)h(this)f(purp)s(ose.)136
2670 y Fc(\017)46 b Fj(*fptr)30 b({)h(The)f(\014ts\014le)f(p)s(oin)m
(ter)g(to)j(the)e(table)g(or)h(image.)136 2853 y Fc(\017)46
b Fj(coln)m(um)29 b({)g(the)h(n)m(um)m(b)s(er)e(of)h(the)h(column)e(in)
g(the)h(table.)41 b(This)27 b(v)-5 b(alue)29 b(is)f(ignored)g(in)g(the)
i(case)g(of)g(images.)227 2966 y(If)j(coln)m(um)g(equals)g(0,)h(then)g
(the)f(column)f(name)i(will)c(b)s(e)j(used)g(to)h(iden)m(tify)e(the)h
(column)g(to)h(b)s(e)e(passed)227 3079 y(to)f(the)g(w)m(ork)f
(function.)136 3261 y Fc(\017)46 b Fj(colname)31 b({)f(the)g(name)h
(\(TTYPEn)e(k)m(eyw)m(ord\))i(of)f(the)h(column.)39 b(This)28
b(is)i(only)f(required)f(if)h(coln)m(um)h(=)g(0)227 3374
y(and)g(is)f(ignored)h(for)g(images.)136 3556 y Fc(\017)46
b Fj(datat)m(yp)s(e)29 b({)g(The)e(desired)g(data)h(t)m(yp)s(e)g(of)h
(the)f(arra)m(y)g(to)h(b)s(e)e(passed)h(to)h(the)f(w)m(ork)g(function.)
39 b(F)-8 b(or)28 b(n)m(umer-)227 3669 y(ical)f(data)h(the)f(data)h(t)m
(yp)s(e)g(do)s(es)f(not)g(need)g(to)h(b)s(e)f(the)g(same)h(as)f(the)h
(actual)f(data)h(t)m(yp)s(e)g(in)e(the)h(FITS)g(\014le,)227
3782 y(in)g(whic)m(h)h(case)h(CFITSIO)e(will)f(do)j(the)f(con)m(v)m
(ersion.)41 b(Allo)m(w)m(ed)28 b(v)-5 b(alues)28 b(are:)40
b(TSTRING,)28 b(TLOGICAL,)227 3895 y(TBYTE,)37 b(TSBYTE,)f(TSHOR)-8
b(T,)36 b(TUSHOR)-8 b(T,)37 b(TINT,)f(TLONG,)h(TULONG,)f(TFLO)m(A)-8
b(T,)38 b(TDOU-)227 4008 y(BLE.)33 b(If)g(the)g(input)e(v)-5
b(alue)32 b(of)h(data)h(t)m(yp)s(e)f(equals)f(0,)j(then)d(the)h
(existing)f(data)i(t)m(yp)s(e)f(of)g(the)g(column)f(or)227
4121 y(image)f(will)d(b)s(e)h(used)h(without)f(an)m(y)i(con)m(v)m
(ersion.)136 4303 y Fc(\017)46 b Fj(iot)m(yp)s(e)36 b({)g(de\014nes)e
(whether)h(the)h(data)g(arra)m(y)g(is)f(to)h(b)s(e)f(input)f(to)i(the)g
(w)m(ork)f(function)g(\(i.e,)i(read)e(from)227 4416 y(the)42
b(FITS)e(\014le\),)j(or)e(output)g(from)g(the)g(w)m(ork)g(function)f
(\(i.e.,)k(written)c(to)i(the)f(FITS)g(\014le\))f(or)h(b)s(oth.)227
4529 y(Allo)m(w)m(ed)28 b(v)-5 b(alues)28 b(are)g(InputCol,)f
(OutputCol,)h(or)g(InputOutputCol.)37 b(V)-8 b(ariable-length)27
b(arra)m(y)i(columns)227 4642 y(are)h(supp)s(orted)e(as)i(InputCol)d
(or)j(InputOutputCol)c(t)m(yp)s(es,)k(but)f(ma)m(y)h(not)g(b)s(e)e
(used)h(for)g(an)h(OutputCol)227 4755 y(t)m(yp)s(e.)0
4999 y(After)h(the)f(driv)m(er)f(routine)g(has)h(initialized)e(all)h
(these)h(parameters,)h(it)f(can)h(then)f(call)f(the)i(CFITSIO)e
(iterator)0 5112 y(function:)95 5357 y Fe(int)47 b
(fits_iterate_data\(int)42 b(narrays,)k(iteratorCol)f(*data,)h(long)g
(offset,)286 5470 y(long)h(nPerLoop,)e(int)i(\(*workFn\)\()e(\),)i
(void)g(*userPointer,)d(int)j(*status\);)136 5714 y Fc(\017)f
Fj(narra)m(ys)31 b({)f(the)h(n)m(um)m(b)s(er)e(of)h(columns)f(or)i
(images)f(that)h(are)g(to)g(b)s(e)f(passed)g(to)h(the)f(w)m(ork)h
(function.)p eop
%%Page: 67 75
67 74 bop 0 299 a Fh(6.3.)72 b(GUIDELINES)30 b(F)m(OR)h(USING)f(THE)g
(ITERA)-8 b(TOR)30 b(FUNCTION)1200 b Fj(67)136 555 y
Fc(\017)46 b Fj(*data)32 b({)f(p)s(oin)m(ter)e(to)i(arra)m(y)g(of)f
(structures)g(con)m(taining)g(information)f(ab)s(out)h(eac)m(h)h
(column)f(or)g(image.)136 736 y Fc(\017)46 b Fj(o\013set)31
b({)f(if)e(p)s(ositiv)m(e,)h(this)g(n)m(um)m(b)s(er)f(of)i(ro)m(ws)f
(at)h(the)g(b)s(eginning)d(of)j(the)f(table)h(\(or)g(pixels)d(in)i(the)
g(image\))227 849 y(will)f(b)s(e)i(skipp)s(ed)e(and)h(will)f(not)j(b)s
(e)e(passed)h(to)h(the)g(w)m(ork)f(function.)136 1030
y Fc(\017)46 b Fj(nP)m(erLo)s(op)38 b(-)h(sp)s(eci\014es)d(the)j(n)m
(um)m(b)s(er)e(of)h(table)g(ro)m(ws)h(\(or)f(n)m(um)m(b)s(er)f(of)i
(image)f(pixels\))f(that)i(are)g(to)g(b)s(e)227 1143
y(passed)29 b(to)h(the)f(w)m(ork)h(function)d(on)i(eac)m(h)i
(iteration.)40 b(If)28 b(nP)m(erLo)s(op)h(=)g(0)g(then)g(CFITSIO)f
(will)f(calculate)227 1256 y(the)22 b(optim)m(um)f(n)m(um)m(b)s(er)f
(for)h(greatest)j(e\016ciency)-8 b(.)38 b(If)21 b(nP)m(erLo)s(op)g(is)g
(negativ)m(e,)k(then)c(all)g(the)h(ro)m(ws)f(or)h(pixels)227
1368 y(will)33 b(b)s(e)i(passed)g(at)h(one)g(time,)h(and)d(the)i(w)m
(ork)g(function)e(will)f(only)h(b)s(e)h(called)g(once.)56
b(If)35 b(an)m(y)h(v)-5 b(ariable)227 1481 y(length)32
b(arra)m(ys)h(are)g(b)s(eing)e(pro)s(cessed,)i(then)g(the)f(nP)m(erLo)s
(op)h(v)-5 b(alue)32 b(is)f(ignored,)i(and)f(the)h(iterator)g(will)227
1594 y(alw)m(a)m(ys)e(pro)s(cess)f(one)h(ro)m(w)f(of)h(the)f(table)h
(at)g(a)g(time.)136 1775 y Fc(\017)46 b Fj(*w)m(orkFn)f(-)f(the)h(name)
f(\(actually)g(the)h(address\))f(of)g(the)g(w)m(ork)h(function)e(that)i
(is)e(to)i(b)s(e)f(called)f(b)m(y)227 1888 y(\014ts)p
354 1888 28 4 v 33 w(iterate)p 644 1888 V 33 w(data.)136
2069 y Fc(\017)j Fj(*userP)m(oin)m(ter)33 b(-)g(this)f(is)g(a)h(user)f
(supplied)e(p)s(oin)m(ter)i(that)h(can)g(b)s(e)g(used)f(to)h(pass)g
(ancillary)e(information)227 2182 y(from)i(the)g(driv)m(er)f(routine)g
(to)i(the)f(w)m(ork)g(function.)47 b(It)33 b(ma)m(y)h(p)s(oin)m(t)e(to)
i(a)f(single)f(n)m(um)m(b)s(er,)g(an)h(arra)m(y)-8 b(,)35
b(or)227 2295 y(to)c(a)g(structure)f(con)m(taining)g(an)g(arbitrary)f
(set)i(of)g(parameters.)136 2476 y Fc(\017)46 b Fj(*status)30
b(-)f(The)f(CFITSIO)f(error)h(status.)41 b(Should)26
b(=)i(0)h(on)g(input;)e(a)i(non-zero)h(output)e(v)-5
b(alue)28 b(indicates)227 2588 y(an)j(error.)0 2828 y(When)f(\014ts)p
392 2828 V 32 w(iterate)p 681 2828 V 34 w(data)h(is)e(called)g(it)g
(\014rst)h(allo)s(cates)g(memory)g(to)h(hold)d(all)h(the)h(requested)g
(columns)f(of)h(data)0 2941 y(or)f(image)h(pixel)d(arra)m(ys.)41
b(It)29 b(then)g(reads)g(the)h(input)d(data)j(from)f(the)g(FITS)f
(tables)h(or)h(images)f(in)m(to)g(the)h(arra)m(ys)0 3054
y(then)h(passes)h(the)g(structure)f(with)f(p)s(oin)m(ters)h(to)h(these)
g(data)h(arra)m(ys)f(to)g(the)g(w)m(ork)g(function.)43
b(After)32 b(the)g(w)m(ork)0 3167 y(function)k(returns,)h(the)h
(iterator)f(function)f(writes)g(an)m(y)h(output)g(columns)e(of)i(data)h
(or)f(images)g(bac)m(k)h(to)g(the)0 3279 y(FITS)31 b(\014les.)45
b(It)32 b(then)g(rep)s(eats)g(this)f(pro)s(cess)h(for)f(an)m(y)i
(remaining)d(sets)i(of)h(ro)m(ws)f(or)g(image)g(pixels)e(un)m(til)h(it)
g(has)0 3392 y(pro)s(cessed)c(the)i(en)m(tire)f(table)f(or)h(image)h
(or)f(un)m(til)e(the)i(w)m(ork)g(function)f(returns)g(a)h(non-zero)h
(status)f(v)-5 b(alue.)39 b(The)0 3505 y(iterator)32
b(then)g(frees)g(the)h(memory)e(that)i(it)f(initially)c(allo)s(cated)k
(and)g(returns)f(con)m(trol)h(to)h(the)f(driv)m(er)f(routine)0
3618 y(that)g(called)f(it.)0 3949 y Ff(6.3)135 b(Guidelines)46
b(for)f(Using)h(the)f(Iterator)h(F)-11 b(unction)0 4199
y Fj(The)34 b(totaln,)h(o\013set,)i(\014rstn,)d(and)f(n)m(v)-5
b(alues)34 b(parameters)g(that)h(are)f(passed)g(to)h(the)f(w)m(ork)g
(function)f(are)i(useful)0 4312 y(for)f(determining)e(ho)m(w)i(m)m(uc)m
(h)g(of)h(the)f(data)h(has)f(b)s(een)f(pro)s(cessed)h(and)f(ho)m(w)h(m)
m(uc)m(h)g(remains)f(left)h(to)h(do.)52 b(On)0 4425 y(the)36
b(v)m(ery)h(\014rst)f(call)f(to)i(the)f(w)m(ork)h(function)e(\014rstn)g
(will)e(b)s(e)j(equal)g(to)h(o\013set)g(+)f(1;)k(the)c(w)m(ork)g
(function)f(ma)m(y)0 4538 y(need)c(to)g(p)s(erform)f(v)-5
b(arious)30 b(initialization)d(tasks)32 b(b)s(efore)e(starting)h(to)g
(pro)s(cess)g(the)g(data.)43 b(Similarly)-8 b(,)28 b(\014rstn)h(+)0
4650 y(n)m(v)-5 b(alues)28 b(-)g(1)h(will)c(b)s(e)j(equal)f(to)i
(totaln)g(on)f(the)g(last)g(iteration,)h(at)g(whic)m(h)e(p)s(oin)m(t)g
(the)h(w)m(ork)h(function)d(ma)m(y)j(need)0 4763 y(to)k(p)s(erform)f
(some)h(clean)g(up)e(op)s(erations)h(b)s(efore)h(exiting)f(for)g(the)h
(last)g(time.)47 b(The)33 b(w)m(ork)f(function)g(can)h(also)0
4876 y(force)e(an)f(early)g(termination)f(of)i(the)g(iterations)e(b)m
(y)i(returning)d(a)j(status)g(v)-5 b(alue)29 b(=)h(-1.)0
5036 y(The)f(narra)m(ys)g(and)g(iteratorCol.datat)m(yp)s(e)h(argumen)m
(ts)g(allo)m(w)e(the)i(w)m(ork)f(function)f(to)i(double)e(c)m(hec)m(k)j
(that)f(the)0 5149 y(n)m(um)m(b)s(er)k(of)i(input)e(arra)m(ys)i(and)f
(their)f(data)j(t)m(yp)s(es)e(ha)m(v)m(e)i(the)f(exp)s(ected)g(v)-5
b(alues.)56 b(The)35 b(iteratorCol.fptr)g(and)0 5262
y(iteratorCol.coln)m(um)c(structure)g(elemen)m(ts)g(can)h(b)s(e)f(used)
f(if)h(the)g(w)m(ork)h(function)e(needs)h(to)h(read)f(or)g(write)g(the)
0 5375 y(v)-5 b(alues)30 b(of)h(other)g(k)m(eyw)m(ords)g(in)f(the)h
(FITS)f(\014le)g(asso)s(ciated)h(with)f(the)h(arra)m(y)-8
b(.)43 b(This)29 b(should)g(generally)h(only)g(b)s(e)0
5488 y(done)k(during)d(the)j(initialization)d(step)i(or)h(during)e(the)
i(clean)f(up)g(step)h(after)g(the)g(last)g(set)g(of)g(data)g(has)g(b)s
(een)0 5601 y(pro)s(cessed.)40 b(Extra)29 b(FITS)f(\014le)g(I/O)h
(during)d(the)j(main)f(pro)s(cessing)g(lo)s(op)g(of)h(the)g(w)m(ork)g
(function)f(can)h(seriously)0 5714 y(degrade)i(the)f(sp)s(eed)g(of)g
(the)h(program.)p eop
%%Page: 68 76
68 75 bop 0 299 a Fj(68)1455 b Fh(CHAPTER)30 b(6.)112
b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0 555
y Fj(If)i(v)-5 b(ariable-length)32 b(arra)m(y)h(columns)f(are)h(b)s
(eing)e(pro)s(cessed,)i(then)g(the)g(iterator)g(will)d(op)s(erate)k(on)
f(one)g(ro)m(w)g(of)0 668 y(the)j(table)f(at)h(a)g(time.)56
b(In)34 b(this)h(case)h(the)g(the)f(rep)s(eat)h(elemen)m(t)g(in)e(the)i
(in)m(teratorCol)f(structure)g(will)e(b)s(e)h(set)0 781
y(equal)c(to)h(the)g(n)m(um)m(b)s(er)e(of)h(elemen)m(ts)h(in)e(the)i
(curren)m(t)f(ro)m(w)g(that)h(is)f(b)s(eing)f(pro)s(cessed.)0
941 y(One)k(imp)s(ortan)m(t)f(feature)i(of)f(the)h(iterator)g(is)e
(that)i(the)f(\014rst)g(elemen)m(t)h(in)e(eac)m(h)i(arra)m(y)g(that)g
(is)e(passed)h(to)h(the)0 1054 y(w)m(ork)f(function)f(giv)m(es)h(the)g
(v)-5 b(alue)32 b(that)i(is)e(used)g(to)h(represen)m(t)g(n)m(ull)e(or)i
(unde\014ned)d(v)-5 b(alues)33 b(in)e(the)i(arra)m(y)-8
b(.)49 b(The)0 1167 y(real)40 b(data)h(then)g(b)s(egins)e(with)g(the)h
(second)h(elemen)m(t)g(of)g(the)f(arra)m(y)h(\(i.e.,)j(arra)m(y[1],)h
(not)c(arra)m(y[0]\).)73 b(If)40 b(the)0 1280 y(\014rst)e(arra)m(y)h
(elemen)m(t)g(is)f(equal)g(to)h(zero,)j(then)c(this)f(indicates)h(that)
h(all)f(the)g(arra)m(y)h(elemen)m(ts)g(ha)m(v)m(e)h(de\014ned)0
1393 y(v)-5 b(alues)32 b(and)g(there)h(are)g(no)g(unde\014ned)d(v)-5
b(alues.)47 b(If)33 b(arra)m(y[0])h(is)e(not)h(equal)f(to)h(zero,)i
(then)d(this)g(indicates)f(that)0 1506 y(some)j(of)g(the)g(data)h(v)-5
b(alues)33 b(are)h(unde\014ned)d(and)j(this)e(v)-5 b(alue)34
b(\(arra)m(y[0]\))i(is)c(used)h(to)i(represen)m(t)f(them.)51
b(In)33 b(the)0 1619 y(case)i(of)e(output)g(arra)m(ys)h(\(i.e.,)h
(those)f(arra)m(ys)g(that)g(will)d(b)s(e)i(written)f(bac)m(k)i(to)h
(the)e(FITS)g(\014le)f(b)m(y)i(the)g(iterator)0 1732
y(function)g(after)j(the)f(w)m(ork)f(function)g(exits\))h(the)g(w)m
(ork)g(function)e(m)m(ust)i(set)g(the)g(\014rst)f(arra)m(y)h(elemen)m
(t)g(to)h(the)0 1844 y(desired)f(n)m(ull)f(v)-5 b(alue)36
b(if)g(necessary)-8 b(,)40 b(otherwise)d(the)g(\014rst)g(elemen)m(t)g
(should)e(b)s(e)i(set)g(to)h(zero)g(to)g(indicate)e(that)0
1957 y(there)30 b(are)h(no)e(n)m(ull)f(v)-5 b(alues)30
b(in)e(the)i(output)g(arra)m(y)-8 b(.)42 b(CFITSIO)28
b(de\014nes)h(2)h(v)-5 b(alues,)30 b(FLO)m(A)-8 b(TNULL)e(V)g(ALUE)31
b(and)0 2070 y(DOUBLENULL)-10 b(V)g(ALUE,)37 b(that)f(can)h(b)s(e)e
(used)g(as)i(default)e(n)m(ull)f(v)-5 b(alues)35 b(for)h(\015oat)h(and)
e(double)g(data)i(t)m(yp)s(es,)0 2183 y(resp)s(ectiv)m(ely)-8
b(.)58 b(In)35 b(the)i(case)g(of)f(c)m(haracter)i(string)d(data)i(t)m
(yp)s(es,)h(a)e(n)m(ull)f(string)g(is)g(alw)m(a)m(ys)i(used)e(to)i
(represen)m(t)0 2296 y(unde\014ned)28 b(strings.)0 2456
y(In)33 b(some)h(applications)d(it)i(ma)m(y)h(b)s(e)f(necessary)h(to)g
(recursiv)m(ely)e(call)h(the)h(iterator)g(function.)49
b(An)33 b(example)g(of)0 2569 y(this)26 b(is)g(giv)m(en)h(b)m(y)g(one)h
(of)f(the)h(example)e(programs)h(that)h(is)e(distributed)e(with)i
(CFITSIO:)g(it)h(\014rst)f(calls)g(a)i(w)m(ork)0 2682
y(function)37 b(that)h(writes)g(out)g(a)g(2D)h(histogram)f(image.)64
b(That)38 b(w)m(ork)g(function)f(in)f(turn)h(calls)h(another)g(w)m(ork)
0 2795 y(function)28 b(that)i(reads)g(the)f(`X')i(and)e(`Y')h(columns)e
(in)g(a)i(table)g(to)g(calculate)g(the)f(v)-5 b(alue)30
b(of)f(eac)m(h)i(2D)f(histogram)0 2908 y(image)h(pixel.)39
b(Graphically)-8 b(,)29 b(the)h(program)g(structure)g(can)h(b)s(e)f
(describ)s(ed)e(as:)48 3153 y Fe(driver)46 b(-->)h(iterator)e(-->)i
(work1_fn)f(-->)h(iterator)e(-->)i(work2_fn)0 3399 y
Fj(Finally)-8 b(,)39 b(it)f(should)e(b)s(e)i(noted)g(that)h(the)g
(table)f(columns)f(or)h(image)h(arra)m(ys)g(that)g(are)f(passed)g(to)h
(the)g(w)m(ork)0 3512 y(function)34 b(do)i(not)g(all)e(ha)m(v)m(e)j(to)
f(come)h(from)e(the)h(same)g(FITS)f(\014le)f(and)h(instead)g(ma)m(y)h
(come)h(from)e(an)m(y)h(com-)0 3625 y(bination)31 b(of)i(sources)g(as)h
(long)e(as)i(they)f(ha)m(v)m(e)h(the)f(same)h(length.)48
b(The)32 b(length)h(of)g(the)g(\014rst)f(table)h(column)f(or)0
3738 y(image)f(arra)m(y)g(is)e(used)g(b)m(y)i(the)f(iterator)h(if)e
(they)i(do)f(not)h(all)e(ha)m(v)m(e)j(the)e(same)h(length.)0
4069 y Ff(6.4)135 b(Complete)47 b(List)e(of)g(Iterator)i(Routines)0
4319 y Fj(All)34 b(of)h(the)g(iterator)g(routines)f(are)h(listed)f(b)s
(elo)m(w.)53 b(Most)36 b(of)f(these)h(routines)d(do)i(not)g(ha)m(v)m(e)
i(a)e(corresp)s(onding)0 4432 y(short)30 b(function)f(name.)0
4678 y Fi(1)81 b Fj(Iterator)32 b(`constructor')h(functions)d(that)j
(set)f(the)g(v)-5 b(alue)31 b(of)h(elemen)m(ts)g(in)f(the)h
(iteratorCol)f(structure)g(that)227 4791 y(de\014ne)k(the)h(columns)e
(or)i(arra)m(ys.)56 b(These)36 b(set)g(the)g(\014ts\014le)e(p)s(oin)m
(ter,)i(column)e(name,)k(column)c(n)m(um)m(b)s(er,)227
4904 y(datat)m(yp)s(e,)28 b(and)e(iot)m(yp)s(e,)h(resp)s(ectiv)m(ely)-8
b(.)39 b(The)25 b(last)h(2)h(routines)e(allo)m(w)g(all)g(the)h
(parameters)h(to)f(b)s(e)g(set)g(with)227 5017 y(one)31
b(function)e(call)h(\(one)h(supplies)c(the)k(column)e(name,)i(the)f
(other)h(the)f(column)f(n)m(um)m(b)s(er\).)95 5262 y
Fe(int)47 b(fits_iter_set_file\(iterato)o(rCo)o(l)42
b(*col,)k(fitsfile)g(*fptr\);)95 5488 y(int)h
(fits_iter_set_colname\(iter)o(ato)o(rCol)41 b(*col,)46
b(char)h(*colname\);)95 5714 y(int)g(fits_iter_set_colnum\(itera)o(tor)
o(Col)41 b(*col,)47 b(int)g(colnum\);)p eop
%%Page: 69 77
69 76 bop 0 299 a Fh(6.4.)72 b(COMPLETE)29 b(LIST)g(OF)i(ITERA)-8
b(TOR)29 b(R)m(OUTINES)1638 b Fj(69)95 668 y Fe(int)47
b(fits_iter_set_datatype\(ite)o(rat)o(orCo)o(l)42 b(*col,)k(int)h
(datatype\);)95 894 y(int)g(fits_iter_set_iotype\(itera)o(tor)o(Col)41
b(*col,)47 b(int)g(iotype\);)95 1120 y(int)g
(fits_iter_set_by_name\(iter)o(ato)o(rCol)41 b(*col,)46
b(fitsfile)g(*fptr,)477 1233 y(char)h(*colname,)e(int)i(datatype,)93
b(int)47 b(iotype\);)95 1458 y(int)g(fits_iter_set_by_num\(itera)o(tor)
o(Col)41 b(*col,)47 b(fitsfile)e(*fptr,)477 1571 y(int)i(colnum,)f(int)
h(datatype,)93 b(int)47 b(iotype\);)0 1820 y Fi(2)81
b Fj(Iterator)38 b(`accessor')h(functions)d(that)h(return)g(the)g(v)-5
b(alue)37 b(of)g(the)g(elemen)m(t)h(in)e(the)h(iteratorCol)g(structure)
227 1933 y(that)31 b(describ)s(es)e(a)i(particular)d(data)j(column)f
(or)g(arra)m(y)95 2181 y Fe(fitsfile)46 b(*)h
(fits_iter_get_file\(iterato)o(rCol)41 b(*col\);)95 2407
y(char)47 b(*)h(fits_iter_get_colname\(i)o(ter)o(ator)o(Col)41
b(*col\);)95 2633 y(int)47 b(fits_iter_get_colnum\(itera)o(tor)o(Col)41
b(*col\);)95 2858 y(int)47 b(fits_iter_get_datatype\(ite)o(rat)o(orCo)o
(l)42 b(*col\);)95 3084 y(int)47 b(fits_iter_get_iotype\(itera)o(tor)o
(Col)41 b(*col\);)95 3310 y(void)47 b(*)h(fits_iter_get_array\(ite)o
(rat)o(orCo)o(l)42 b(*col\);)95 3536 y(long)47 b
(fits_iter_get_tlmin\(itera)o(tor)o(Col)41 b(*col\);)95
3762 y(long)47 b(fits_iter_get_tlmax\(itera)o(tor)o(Col)41
b(*col\);)95 3987 y(long)47 b(fits_iter_get_repeat\(iter)o(ato)o(rCol)
41 b(*col\);)95 4213 y(char)47 b(*)h(fits_iter_get_tunit\(ite)o(rat)o
(orCo)o(l)42 b(*col\);)95 4439 y(char)47 b(*)h
(fits_iter_get_tdisp\(ite)o(rat)o(orCo)o(l)42 b(*col\);)0
4687 y Fi(3)81 b Fj(The)29 b(CFITSIO)g(iterator)i(function)95
4936 y Fe(int)47 b(fits_iterate_data\(int)42 b(narrays,)94
b(iteratorCol)44 b(*data,)i(long)h(offset,)573 5049 y(long)f(nPerLoop,)
573 5161 y(int)h(\(*workFn\)\()e(long)h(totaln,)g(long)h(offset,)f
(long)g(firstn,)1289 5274 y(long)g(nvalues,)g(int)h(narrays,)e
(iteratorCol)g(*data,)1289 5387 y(void)h(*userPointer\),)573
5500 y(void)g(*userPointer,)573 5613 y(int)h(*status\);)p
eop
%%Page: 70 78
70 77 bop 0 299 a Fj(70)1455 b Fh(CHAPTER)30 b(6.)112
b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)p eop
%%Page: 71 79
71 78 bop 0 1225 a Fg(Chapter)65 b(7)0 1687 y Fm(Celestial)76
b(Co)6 b(ordinate)78 b(System)f(Routines)0 2180 y Fj(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
2293 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 2406 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 2518 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 2631 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 2744 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 2857 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
3094 y Fe(WCSLIB)47 b(-)95 b(supported)45 b(by)i(Mark)g(Calabretta)95
3207 y(WCSTools)f(-)h(supported)f(by)h(Doug)g(Mink)95
3320 y(AST)g(library)f(-)i(developed)d(by)i(the)g(U.K.)g(Starlink)e
(project)0 3556 y Fj(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 3669 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
3829 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
3942 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 4055 y(library)29
b(is)g(to)j(use)f(the)g(\014ts)p 942 4055 28 4 v 32 w(hdr2str)f
(routine)g(in)g(CFITSIO)f(\(de\014ned)h(b)s(elo)m(w\))g(to)i(cop)m(y)g
(the)f(header)g(k)m(eyw)m(ords)0 4168 y(in)m(to)j(one)f(long)h(string,)
f(and)g(then)g(pass)g(this)g(string)f(to)j(an)e(in)m(terface)h(routine)
f(in)f(the)i(external)f(library)e(that)0 4281 y(will)i(extract)j(the)g
(necessary)f(W)m(CS)g(information)f(\(e.g.,)k(see)e(the)f(astFitsChan)g
(and)f(astPutCards)h(routines)0 4394 y(in)29 b(the)i(Starlink)d(AST)h
(library\).)0 4631 y Fi(1)81 b Fj(Concatenate)38 b(the)f(header)f(k)m
(eyw)m(ords)h(in)e(the)h(CHDU)h(in)m(to)g(a)g(single)e(long)h(string)f
(of)i(c)m(haracters.)60 b(Eac)m(h)227 4744 y(80-c)m(haracter)28
b(\014xed-length)23 b(k)m(eyw)m(ord)i(record)g(is)f(app)s(ended)e(to)k
(the)f(output)f(c)m(haracter)i(string,)f(in)e(order,)227
4856 y(with)h(no)g(in)m(terv)m(ening)g(separator)h(or)g(terminating)f
(c)m(haracters.)40 b(The)24 b(last)h(header)f(record)h(is)e(terminated)
227 4969 y(with)32 b(a)h(NULL)f(c)m(haracter.)49 b(This)31
b(routine)h(allo)s(cates)h(memory)f(for)h(the)g(returned)e(c)m
(haracter)j(arra)m(y)-8 b(,)35 b(so)227 5082 y(the)c(calling)e(program)
h(m)m(ust)g(free)h(the)f(memory)g(when)g(\014nished.)227
5229 y(Selected)f(k)m(eyw)m(ords)f(ma)m(y)h(b)s(e)e(excluded)g(from)h
(the)g(returned)f(c)m(haracter)j(string.)39 b(If)27 b(the)i(second)f
(param-)227 5342 y(eter)h(\(no)s(commen)m(ts\))g(is)e(TR)m(UE)h
(\(nonzero\))h(then)e(an)m(y)i(COMMENT,)f(HISTOR)-8 b(Y,)27
b(or)h(blank)f(k)m(eyw)m(ords)227 5455 y(in)i(the)i(header)f(will)e
(not)i(b)s(e)g(copied)g(to)h(the)g(output)f(string.)227
5601 y(The)25 b('exclist')h(parameter)g(ma)m(y)g(b)s(e)f(used)g(to)h
(supply)d(a)j(list)f(of)g(k)m(eyw)m(ords)h(that)h(are)f(to)g(b)s(e)f
(excluded)f(from)227 5714 y(the)29 b(output)g(c)m(haracter)h(string.)40
b(Wild)27 b(card)i(c)m(haracters)h(\(*,)g(?,)f(and)g(#\))g(ma)m(y)g(b)s
(e)f(used)g(in)g(the)h(excluded)1905 5942 y(71)p eop
%%Page: 72 80
72 79 bop 0 299 a Fj(72)1003 b Fh(CHAPTER)30 b(7.)112
b(CELESTIAL)28 b(COORDINA)-8 b(TE)30 b(SYSTEM)f(R)m(OUTINES)227
555 y Fj(k)m(eyw)m(ord)h(names.)41 b(If)29 b(no)g(additional)f(k)m(eyw)
m(ords)i(are)g(to)g(b)s(e)f(excluded,)g(then)g(set)h(nexc)g(=)f(0)h
(and)f(sp)s(ecify)227 668 y(NULL)i(for)f(the)g(the)h(**header)g
(parameter.)95 890 y Fe(int)47 b(fits_hdr2str)286 1003
y(\(fitsfile)f(*fptr,)g(int)h(nocomments,)d(char)j(**exclist,)e(int)i
(nexc,)286 1116 y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i
(*status\))0 1444 y Ff(7.1)180 b(Self-con)l(tained)46
b(W)l(CS)f(Routines)0 1694 y Fj(The)21 b(follo)m(wing)f(routines)g(DO)h
(NOT)g(supp)s(ort)f(the)h(more)h(recen)m(t)g(W)m(CS)f(con)m(v)m(en)m
(tions)i(that)e(ha)m(v)m(e)i(b)s(een)e(appro)m(v)m(ed)0
1807 y(as)34 b(part)g(of)g(the)g(FITS)f(standard.)50
b(Consequen)m(tly)-8 b(,)34 b(the)g(follo)m(wing)f(routines)f(ARE)i(NO)
m(W)h(DEPRECA)-8 b(TED.)0 1920 y(It)30 b(is)f(STR)m(ONGL)-8
b(Y)30 b(RECOMMENDED)h(that)g(soft)m(w)m(are)g(dev)m(elop)s(ers)e(not)i
(use)f(these)g(routines,)f(and)h(instead)0 2033 y(use)g(an)g(external)h
(W)m(CS)f(library)-8 b(,)29 b(as)h(describ)s(ed)e(in)i(the)g(previous)f
(section.)0 2193 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 2306 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 2419 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
2532 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 2754 y Fi(1)81
b Fj(Get)41 b(the)f(v)-5 b(alues)40 b(of)h(the)f(basic)g(set)h(of)f
(standard)g(FITS)f(celestial)h(co)s(ordinate)g(system)h(k)m(eyw)m(ords)
f(from)227 2867 y(the)33 b(header)f(of)h(a)f(FITS)g(image)h(\(i.e.,)g
(the)g(primary)e(arra)m(y)h(or)h(an)f(IMA)m(GE)i(extension\).)46
b(These)33 b(v)-5 b(alues)227 2980 y(ma)m(y)35 b(then)f(b)s(e)g(passed)
f(to)i(the)g(\014ts)p 1462 2980 28 4 v 32 w(pix)p 1619
2980 V 31 w(to)p 1730 2980 V 34 w(w)m(orld)e(and)h(\014ts)p
2321 2980 V 32 w(w)m(orld)p 2574 2980 V 32 w(to)p 2686
2980 V 33 w(pix)f(routines)g(that)i(p)s(erform)e(the)227
3093 y(co)s(ordinate)e(transformations.)41 b(If)30 b(an)m(y)h(or)f(all)
g(of)h(the)g(W)m(CS)f(k)m(eyw)m(ords)h(are)g(not)g(presen)m(t,)g(then)g
(default)227 3206 y(v)-5 b(alues)25 b(will)d(b)s(e)i(returned.)38
b(If)24 b(the)i(\014rst)e(co)s(ordinate)h(axis)f(is)g(the)h
(declination-lik)m(e)e(co)s(ordinate,)j(then)f(this)227
3319 y(routine)30 b(will)d(sw)m(ap)k(them)f(so)h(that)g(the)f
(longitudinal-lik)m(e)d(co)s(ordinate)j(is)f(returned)h(as)g(the)h
(\014rst)e(axis.)227 3463 y(If)35 b(the)h(\014le)e(uses)h(the)g(new)m
(er)h('CDj)p 1454 3463 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 3576
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 3689 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
3801 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 3914 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 4027 y(W)m(CS)32 b(k)m(eyw)m(ord)h(v)-5
b(alues,)32 b(but)f(will)e(also)j(return)f(with)g(status)h(=)f(APPR)m
(O)m(X)p 2908 4027 V 34 w(W)m(CS)p 3149 4027 V 33 w(KEY,)g(to)i(w)m
(arn)f(the)227 4140 y(calling)h(program)h(that)h(appro)m(ximations)e
(ha)m(v)m(e)i(b)s(een)f(made.)52 b(It)35 b(is)e(then)h(up)f(to)i(the)f
(calling)f(program)227 4253 y(to)d(decide)f(whether)f(the)h(appro)m
(ximations)f(are)i(su\016cien)m(tly)d(accurate)k(for)e(the)g
(particular)e(application,)227 4366 y(or)46 b(whether)e(more)i(precise)
f(W)m(CS)g(transformations)g(m)m(ust)g(b)s(e)g(p)s(erformed)f(using)f
(new-st)m(yle)j(W)m(CS)227 4479 y(k)m(eyw)m(ords)31 b(directly)-8
b(.)95 4701 y Fe(int)47 b(fits_read_img_coord)c(/)k(ffgics)286
4814 y(\(fitsfile)f(*fptr,)g(>)h(double)f(*xrefval,)g(double)g
(*yrefval,)334 4927 y(double)g(*xrefpix,)f(double)i(*yrefpix,)e(double)
h(*xinc,)g(double)g(*yinc,)334 5040 y(double)g(*rot,)h(char)f
(*coordtype,)f(int)i(*status\))0 5262 y Fi(2)81 b Fj(Get)30
b(the)f(v)-5 b(alues)29 b(of)g(the)h(standard)e(FITS)h(celestial)g(co)s
(ordinate)g(system)g(k)m(eyw)m(ords)h(from)f(the)g(header)g(of)h(a)227
5375 y(FITS)23 b(table)h(where)f(the)h(X)g(and)g(Y)g(\(or)g(RA)g(and)f
(DEC\))h(co)s(ordinates)g(are)g(stored)g(in)e(2)i(separate)h(columns)
227 5488 y(of)30 b(the)f(table)g(\(as)h(in)e(the)i(Ev)m(en)m(t)g(List)f
(table)g(format)g(that)h(is)f(often)g(used)g(b)m(y)g(high)f(energy)h
(astroph)m(ysics)227 5601 y(missions\).)69 b(These)40
b(v)-5 b(alues)39 b(ma)m(y)i(then)f(b)s(e)f(passed)h(to)h(the)f(\014ts)
p 2511 5601 V 33 w(pix)p 2669 5601 V 31 w(to)p 2780 5601
V 34 w(w)m(orld)f(and)h(\014ts)p 3383 5601 V 32 w(w)m(orld)p
3636 5601 V 32 w(to)p 3748 5601 V 33 w(pix)227 5714 y(routines)30
b(that)g(p)s(erform)f(the)i(co)s(ordinate)f(transformations.)p
eop
%%Page: 73 81
73 80 bop 0 299 a Fh(7.1.)113 b(SELF-CONT)-8 b(AINED)30
b(W)m(CS)g(R)m(OUTINES)1984 b Fj(73)95 555 y Fe(int)47
b(fits_read_tbl_coord)c(/)k(ffgtcs)286 668 y(\(fitsfile)f(*fptr,)g(int)
h(xcol,)f(int)h(ycol,)f(>)i(double)e(*xrefval,)334 781
y(double)g(*yrefval,)f(double)i(*xrefpix,)e(double)h(*yrefpix,)f
(double)h(*xinc,)334 894 y(double)g(*yinc,)g(double)g(*rot,)h(char)f
(*coordtype,)f(int)i(*status\))0 1154 y Fi(3)81 b Fj(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
1267 y(image.)95 1526 y Fe(int)47 b(fits_pix_to_world)c(/)48
b(ffwldp)286 1639 y(\(double)e(xpix,)h(double)f(ypix,)g(double)g
(xrefval,)g(double)g(yrefval,)334 1752 y(double)g(xrefpix,)g(double)g
(yrefpix,)f(double)h(xinc,)h(double)f(yinc,)334 1865
y(double)g(rot,)h(char)f(*coordtype,)f(>)j(double)e(*xpos,)g(double)g
(*ypos,)334 1978 y(int)h(*status\))0 2238 y Fi(4)81 b
Fj(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
2351 y(image.)95 2611 y Fe(int)47 b(fits_world_to_pix)c(/)48
b(ffxypx)286 2723 y(\(double)e(xpos,)h(double)f(ypos,)g(double)g
(xrefval,)g(double)g(yrefval,)334 2836 y(double)g(xrefpix,)g(double)g
(yrefpix,)f(double)h(xinc,)h(double)f(yinc,)334 2949
y(double)g(rot,)h(char)f(*coordtype,)f(>)j(double)e(*xpix,)g(double)g
(*ypix,)334 3062 y(int)h(*status\))p eop
%%Page: 74 82
74 81 bop 0 299 a Fj(74)1003 b Fh(CHAPTER)30 b(7.)112
b(CELESTIAL)28 b(COORDINA)-8 b(TE)30 b(SYSTEM)f(R)m(OUTINES)p
eop
%%Page: 75 83
75 82 bop 0 1225 a Fg(Chapter)65 b(8)0 1687 y Fm(Hierarc)-6
b(hical)76 b(Grouping)h(Routines)0 2180 y Fj(These)34
b(functions)g(allo)m(w)g(for)g(the)h(creation)g(and)f(manipulation)e
(of)j(FITS)f(HDU)h(Groups,)h(as)f(de\014ned)e(in)g("A)0
2293 y(Hierarc)m(hical)22 b(Grouping)g(Con)m(v)m(en)m(tion)h(for)g
(FITS")f(b)m(y)h(Jennings,)g(P)m(ence,)i(F)-8 b(olk)24
b(and)e(Sc)m(hlesinger)g(\()h(h)m(ttp:)37 b(//ad-)0 2406
y(fwww.gsfc.nasa.go)m(v/other/con)m(v)m(ert/group.h)m(tml)27
b(\).)38 b(A)23 b(group)g(is)e(a)j(collection)e(of)h(HDUs)h(whose)e
(asso)s(ciation)0 2518 y(is)33 b(de\014ned)f(b)m(y)h(a)h
Fa(gr)-5 b(ouping)37 b(table)p Fj(.)50 b(HDUs)35 b(whic)m(h)d(are)i
(part)f(of)h(a)g(group)f(are)h(referred)f(to)h(as)g Fa(memb)-5
b(er)36 b(HDUs)0 2631 y Fj(or)i(simply)d(as)i Fa(memb)-5
b(ers)p Fj(.)63 b(Grouping)37 b(table)g(mem)m(b)s(er)g(HDUs)h(ma)m(y)g
(themselv)m(es)g(b)s(e)f(grouping)f(tables,)j(th)m(us)0
2744 y(allo)m(wing)29 b(for)h(the)h(construction)f(of)g(op)s(en-ended)g
(hierarc)m(hies)f(of)h(HDUs.)0 2904 y(Grouping)25 b(tables)i(con)m
(tain)g(one)g(ro)m(w)g(for)f(eac)m(h)i(mem)m(b)s(er)e(HDU.)i(The)e
(grouping)f(table)i(columns)e(pro)m(vide)h(iden-)0 3017
y(ti\014cation)h(information)f(that)i(allo)m(ws)f(applications)e(to)j
(reference)g(or)g("p)s(oin)m(t)f(to")h(the)g(mem)m(b)s(er)f(HDUs.)40
b(Mem-)0 3130 y(b)s(er)27 b(HDUs)h(are)g(exp)s(ected,)h(but)e(not)h
(required,)e(to)j(con)m(tain)f(a)g(set)g(of)g(GRPIDn/GRPLCn)f(k)m(eyw)m
(ords)h(in)e(their)0 3243 y(headers)k(for)h(eac)m(h)g(grouping)f(table)
g(that)h(they)g(are)g(referenced)g(b)m(y)-8 b(.)41 b(In)30
b(this)g(sense,)h(the)g(GRPIDn/GRPLCn)0 3356 y(k)m(eyw)m(ords)d("link")
e(the)i(mem)m(b)s(er)f(HDU)h(bac)m(k)g(to)g(its)f(Grouping)f(table.)40
b(Note)29 b(that)f(a)f(mem)m(b)s(er)g(HDU)h(need)g(not)0
3469 y(reside)h(in)g(the)h(same)g(FITS)f(\014le)h(as)g(its)f(grouping)g
(table,)h(and)f(that)i(a)f(giv)m(en)g(HDU)h(ma)m(y)g(b)s(e)e
(referenced)h(b)m(y)g(up)0 3582 y(to)h(999)h(grouping)d(tables)h(sim)m
(ultaneously)-8 b(.)0 3742 y(Grouping)21 b(tables)i(are)g(implemen)m
(ted)e(as)i(FITS)f(binary)f(tables)h(with)g(up)f(to)j(six)d
(pre-de\014ned)h(column)f(TTYPEn)0 3855 y(v)-5 b(alues:)35
b('MEMBER)p 752 3855 28 4 v 34 w(XTENSION',)20 b('MEMBER)p
1789 3855 V 33 w(NAME',)h('MEMBER)p 2620 3855 V 34 w(VERSION',)f
('MEMBER)p 3590 3855 V 34 w(POSITION',)0 3968 y('MEMBER)p
451 3968 V 34 w(URI)p 653 3968 V 32 w(TYPE')g(and)g('MEMBER)p
1601 3968 V 34 w(LOCA)-8 b(TION'.)20 b(The)f(\014rst)h(three)g(columns)
f(allo)m(w)h(mem)m(b)s(er)g(HDUs)0 4081 y(to)28 b(b)s(e)f(iden)m
(ti\014ed)e(b)m(y)i(reference)h(to)g(their)e(XTENSION,)h(EXTNAME)g(and)
g(EXTVER)g(k)m(eyw)m(ord)g(v)-5 b(alues.)39 b(The)0 4194
y(fourth)29 b(column)g(allo)m(ws)h(mem)m(b)s(er)f(HDUs)i(to)g(b)s(e)f
(iden)m(ti\014ed)e(b)m(y)i(HDU)h(p)s(osition)d(within)g(their)h(FITS)h
(\014le.)39 b(The)0 4307 y(last)f(t)m(w)m(o)h(columns)d(iden)m(tify)g
(the)i(FITS)f(\014le)g(in)f(whic)m(h)h(the)h(mem)m(b)s(er)f(HDU)h
(resides,)h(if)d(di\013eren)m(t)i(from)f(the)0 4419 y(grouping)29
b(table)h(FITS)g(\014le.)0 4580 y(Additional)22 b(user)i(de\014ned)f
("auxiliary")g(columns)g(ma)m(y)i(also)f(b)s(e)g(included)e(with)h(an)m
(y)i(grouping)e(table.)38 b(When)25 b(a)0 4693 y(grouping)h(table)i(is)
f(copied)g(or)g(mo)s(di\014ed)f(the)i(presence)g(of)f(auxiliary)f
(columns)g(is)h(alw)m(a)m(ys)h(tak)m(en)h(in)m(to)e(accoun)m(t)0
4805 y(b)m(y)k(the)g(grouping)f(supp)s(ort)g(functions;)g(ho)m(w)m(ev)m
(er,)j(the)e(grouping)f(supp)s(ort)g(functions)f(cannot)j(directly)e
(mak)m(e)0 4918 y(use)g(of)h(this)e(data.)0 5079 y(If)44
b(a)h(grouping)e(table)h(column)f(is)h(de\014ned)f(but)h(the)g(corresp)
s(onding)f(mem)m(b)s(er)g(HDU)j(information)c(is)i(un-)0
5191 y(a)m(v)-5 b(ailable)38 b(then)f(a)i(n)m(ull)d(v)-5
b(alue)38 b(of)g(the)g(appropriate)g(data)g(t)m(yp)s(e)h(is)e(inserted)
g(in)g(the)h(column)f(\014eld.)63 b(In)m(teger)0 5304
y(columns)25 b(\(MEMBER)p 811 5304 V 34 w(POSITION,)g(MEMBER)p
1771 5304 V 34 w(VERSION\))h(are)h(de\014ned)f(with)f(a)i(TNULLn)f(v)-5
b(alue)26 b(of)h(zero)0 5417 y(\(0\).)41 b(Character)27
b(\014eld)e(columns)h(\(MEMBER)p 1607 5417 V 34 w(XTENSION,)g(MEMBER)p
2600 5417 V 33 w(NAME,)i(MEMBER)p 3388 5417 V 34 w(URI)p
3590 5417 V 32 w(TYPE,)0 5530 y(MEMBER)p 426 5530 V 33
w(LOCA)-8 b(TION\))30 b(utilize)f(an)h(ASCI)s(I)f(n)m(ull)f(c)m
(haracter)k(to)f(denote)g(a)g(n)m(ull)d(\014eld)h(v)-5
b(alue.)0 5690 y(The)23 b(grouping)f(supp)s(ort)g(functions)g(b)s
(elong)h(to)h(t)m(w)m(o)h(basic)e(categories:)39 b(those)24
b(that)h(w)m(ork)e(with)g(grouping)f(table)1905 5942
y(75)p eop
%%Page: 76 84
76 83 bop 0 299 a Fj(76)1338 b Fh(CHAPTER)29 b(8.)112
b(HIERAR)m(CHICAL)30 b(GR)m(OUPING)h(R)m(OUTINES)0 555
y Fj(HDUs)26 b(\(\013gt**\))j(and)c(those)h(that)h(w)m(ork)f(with)e
(mem)m(b)s(er)i(HDUs)g(\(\013gm**\).)41 b(Tw)m(o)26 b(functions,)g
(\014ts)p 3360 555 28 4 v 32 w(cop)m(y)p 3573 555 V 34
w(group\(\))0 668 y(and)40 b(\014ts)p 314 668 V 33 w(remo)m(v)m(e)p
626 668 V 34 w(group\(\),)k(ha)m(v)m(e)e(the)f(option)f(to)i(recursiv)m
(ely)d(cop)m(y/delete)k(en)m(tire)e(groups.)71 b(Care)41
b(should)0 781 y(b)s(e)33 b(tak)m(en)h(when)f(emplo)m(ying)f(these)i
(functions)e(in)g(recursiv)m(e)h(mo)s(de)g(as)g(p)s(o)s(orly)f
(de\014ned)g(groups)h(could)f(cause)0 894 y(unpredictable)23
b(results.)38 b(The)25 b(problem)f(of)i(a)g(grouping)e(table)i
(directly)e(or)i(indirectly)d(referencing)i(itself)f(\(th)m(us)0
1007 y(creating)40 b(an)g(in\014nite)d(lo)s(op\))j(is)e(protected)j
(against;)k(in)38 b(fact,)44 b(neither)38 b(function)h(will)e(attempt)k
(to)f(cop)m(y)h(or)0 1120 y(delete)31 b(an)f(HDU)h(t)m(wice.)0
1453 y Ff(8.1)135 b(Grouping)45 b(T)-11 b(able)45 b(Routines)0
1693 y Fi(1)81 b Fj(Create)34 b(\(app)s(end\))f(a)h(grouping)e(table)i
(at)g(the)g(end)f(of)h(the)g(curren)m(t)f(FITS)g(\014le)g(p)s(oin)m
(ted)g(to)h(b)m(y)g(fptr.)49 b(The)227 1806 y(grpname)28
b(parameter)h(pro)m(vides)f(the)h(grouping)e(table)h(name)h(\(GRPNAME)g
(k)m(eyw)m(ord)g(v)-5 b(alue\))28 b(and)g(ma)m(y)227
1919 y(b)s(e)42 b(set)h(to)g(NULL)f(if)f(no)h(group)g(name)g(is)g(to)h
(b)s(e)e(sp)s(eci\014ed.)75 b(The)42 b(groupt)m(yp)s(e)g(parameter)g
(sp)s(eci\014es)227 2032 y(the)c(desired)f(structure)g(of)h(the)g
(grouping)e(table)i(and)f(ma)m(y)i(tak)m(e)g(on)f(the)g(v)-5
b(alues:)55 b(GT)p 3355 2032 V 33 w(ID)p 3490 2032 V
33 w(ALL)p 3705 2032 V 32 w(URI)227 2145 y(\(all)33 b(columns)f
(created\),)k(GT)p 1274 2145 V 33 w(ID)p 1409 2145 V
33 w(REF)d(\(ID)h(b)m(y)g(reference)g(columns\),)f(GT)p
2904 2145 V 33 w(ID)p 3039 2145 V 33 w(POS)f(\(ID)i(b)m(y)g(p)s
(osition)227 2258 y(columns\),)47 b(GT)p 801 2258 V 32
w(ID)p 935 2258 V 33 w(ALL)d(\(ID)g(b)m(y)f(reference)i(and)e(p)s
(osition)e(columns\),)47 b(GT)p 3028 2258 V 32 w(ID)p
3162 2258 V 33 w(REF)p 3383 2258 V 33 w(URI)d(\(ID)g(b)m(y)227
2371 y(reference)35 b(and)e(FITS)g(\014le)h(URI)f(columns\),)i(and)e
(GT)p 2129 2371 V 33 w(ID)p 2264 2371 V 33 w(POS)p 2481
2371 V 32 w(URI)h(\(ID)g(b)m(y)g(p)s(osition)e(and)i(FITS)f(\014le)227
2484 y(URI)e(columns\).)95 2742 y Fe(int)47 b(fits_create_group)c(/)48
b(ffgtcr)286 2855 y(\(fitsfile)e(*fptr,)g(char)g(*grpname,)g(int)h
(grouptype,)e(>)i(int)g(*status\))0 3113 y Fi(2)81 b
Fj(Create)26 b(\(insert\))f(a)g(grouping)f(table)h(just)g(after)h(the)f
(CHDU)h(of)g(the)f(curren)m(t)g(FITS)g(\014le)f(p)s(oin)m(ted)g(to)i(b)
m(y)g(fptr.)227 3226 y(All)i(HDUs)h(b)s(elo)m(w)f(the)h(the)g
(insertion)e(p)s(oin)m(t)g(will)g(b)s(e)h(shifted)f(do)m(wn)m(w)m(ards)
h(to)i(mak)m(e)g(ro)s(om)e(for)g(the)h(new)227 3339 y(HDU.)23
b(The)e(grpname)h(parameter)g(pro)m(vides)e(the)i(grouping)f(table)g
(name)h(\(GRPNAME)h(k)m(eyw)m(ord)f(v)-5 b(alue\))227
3451 y(and)25 b(ma)m(y)i(b)s(e)e(set)h(to)h(NULL)e(if)g(no)h(group)f
(name)h(is)f(to)h(b)s(e)f(sp)s(eci\014ed.)38 b(The)25
b(groupt)m(yp)s(e)h(parameter)g(sp)s(eci-)227 3564 y(\014es)g(the)h
(desired)e(structure)h(of)h(the)f(grouping)f(table)i(and)f(ma)m(y)h
(tak)m(e)h(on)e(the)h(v)-5 b(alues:)38 b(GT)p 3355 3564
V 33 w(ID)p 3490 3564 V 33 w(ALL)p 3705 3564 V 32 w(URI)227
3677 y(\(all)33 b(columns)f(created\),)k(GT)p 1274 3677
V 33 w(ID)p 1409 3677 V 33 w(REF)d(\(ID)h(b)m(y)g(reference)g
(columns\),)f(GT)p 2904 3677 V 33 w(ID)p 3039 3677 V
33 w(POS)f(\(ID)i(b)m(y)g(p)s(osition)227 3790 y(columns\),)28
b(GT)p 782 3790 V 33 w(ID)p 917 3790 V 33 w(ALL)g(\(ID)g(b)m(y)g
(reference)h(and)e(p)s(osition)f(columns\),)i(GT)p 2897
3790 V 33 w(ID)p 3032 3790 V 33 w(REF)p 3253 3790 V 32
w(URI)g(\(ID)h(b)m(y)f(ref-)227 3903 y(erence)g(and)e(FITS)h(\014le)f
(URI)h(columns\),)g(and)f(GT)p 1976 3903 V 33 w(ID)p
2111 3903 V 33 w(POS)p 2328 3903 V 32 w(URI)h(\(ID)g(b)m(y)g(p)s
(osition)e(and)i(FITS)f(\014le)g(URI)227 4016 y(columns\))k(.)95
4274 y Fe(int)47 b(fits_insert_group)c(/)48 b(ffgtis)286
4387 y(\(fitsfile)e(*fptr,)g(char)g(*grpname,)g(int)h(grouptype,)e(>)i
(int)g(*status\))0 4645 y Fi(3)81 b Fj(Change)20 b(the)h(structure)f
(of)h(an)g(existing)e(grouping)h(table)g(p)s(oin)m(ted)g(to)h(b)m(y)g
(gfptr.)37 b(The)20 b(groupt)m(yp)s(e)g(parameter)227
4758 y(\(see)27 b(\014ts)p 532 4758 V 32 w(create)p 800
4758 V 35 w(group\(\))e(for)h(v)-5 b(alid)24 b(parameter)i(v)-5
b(alues\))25 b(sp)s(eci\014es)g(the)g(new)g(structure)h(of)f(the)h
(grouping)227 4871 y(table.)43 b(This)29 b(function)h(only)g(adds)h(or)
g(remo)m(v)m(es)h(grouping)e(table)h(columns,)f(it)h(do)s(es)g(not)g
(add)g(or)g(delete)227 4984 y(group)26 b(mem)m(b)s(ers)f(\(i.e.,)j
(table)e(ro)m(ws\).)40 b(If)26 b(the)g(grouping)f(table)h(already)g
(has)g(the)h(desired)d(structure)i(then)227 5097 y(no)35
b(op)s(erations)e(are)i(p)s(erformed)e(and)h(function)f(simply)g
(returns)g(with)g(a)i(\(0\))g(success)g(status)g(co)s(de.)53
b(If)227 5210 y(the)32 b(requested)g(structure)g(c)m(hange)h(creates)g
(new)f(grouping)f(table)h(columns,)f(then)h(the)g(column)f(v)-5
b(alues)227 5323 y(for)30 b(all)g(existing)f(mem)m(b)s(ers)h(will)d(b)s
(e)j(\014lled)e(with)h(the)i(n)m(ull)d(v)-5 b(alues)30
b(appropriate)f(to)i(the)g(column)e(t)m(yp)s(e.)95 5581
y Fe(int)47 b(fits_change_group)c(/)48 b(ffgtch)286 5694
y(\(fitsfile)e(*gfptr,)f(int)i(grouptype,)e(>)j(int)f(*status\))p
eop
%%Page: 77 85
77 84 bop 0 299 a Fh(8.1.)72 b(GR)m(OUPING)31 b(T)-8
b(ABLE)31 b(R)m(OUTINES)2235 b Fj(77)0 555 y Fi(4)81
b Fj(Remo)m(v)m(e)41 b(the)e(group)g(de\014ned)f(b)m(y)h(the)h
(grouping)e(table)h(p)s(oin)m(ted)f(to)i(b)m(y)g(gfptr,)h(and)e
(optionally)f(all)g(the)227 668 y(group)29 b(mem)m(b)s(er)f(HDUs.)41
b(The)28 b(rmopt)h(parameter)g(sp)s(eci\014es)f(the)h(action)g(to)h(b)s
(e)e(tak)m(en)i(for)f(all)f(mem)m(b)s(ers)227 781 y(of)f(the)g(group)g
(de\014ned)e(b)m(y)i(the)g(grouping)f(table.)39 b(V)-8
b(alid)26 b(v)-5 b(alues)26 b(are:)40 b(OPT)p 2848 781
28 4 v 32 w(RM)p 3030 781 V 33 w(GPT)26 b(\(delete)i(only)e(the)227
894 y(grouping)32 b(table\))i(and)f(OPT)p 1259 894 V
32 w(RM)p 1441 894 V 33 w(ALL)g(\(recursiv)m(ely)f(delete)i(all)e(HDUs)
i(that)g(b)s(elong)e(to)i(the)g(group\).)227 1007 y(An)m(y)d(groups)g
(con)m(taining)g(the)g(grouping)f(table)h(gfptr)f(as)i(a)f(mem)m(b)s
(er)g(are)g(up)s(dated,)f(and)h(if)f(rmopt)h(==)227 1120
y(OPT)p 431 1120 V 32 w(RM)p 613 1120 V 33 w(GPT)21 b(all)f(mem)m(b)s
(ers)h(ha)m(v)m(e)h(their)e(GRPIDn)h(and)g(GRPLCn)f(k)m(eyw)m(ords)h
(up)s(dated)f(accordingly)-8 b(.)227 1233 y(If)36 b(rmopt)g(==)g(OPT)p
985 1233 V 32 w(RM)p 1167 1233 V 33 w(ALL,)g(then)g(other)h(groups)e
(that)i(con)m(tain)g(the)f(deleted)g(mem)m(b)s(ers)g(of)g(gfptr)227
1346 y(are)31 b(up)s(dated)e(to)i(re\015ect)g(the)g(deletion)e
(accordingly)-8 b(.)95 1582 y Fe(int)47 b(fits_remove_group)c(/)48
b(ffgtrm)286 1695 y(\(fitsfile)e(*gfptr,)f(int)i(rmopt,)f(>)i(int)f
(*status\))0 1932 y Fi(5)81 b Fj(Cop)m(y)28 b(\(app)s(end\))g(the)h
(group)f(de\014ned)g(b)m(y)h(the)f(grouping)g(table)h(p)s(oin)m(ted)e
(to)j(b)m(y)e(infptr,)g(and)g(optionally)f(all)227 2045
y(group)j(mem)m(b)s(er)h(HDUs,)g(to)h(the)f(FITS)f(\014le)f(p)s(oin)m
(ted)h(to)i(b)m(y)e(outfptr.)41 b(The)31 b(cp)s(opt)f(parameter)h(sp)s
(eci\014es)227 2158 y(the)c(action)g(to)g(b)s(e)f(tak)m(en)h(for)g(all)
e(mem)m(b)s(ers)h(of)g(the)h(group)f(infptr.)37 b(V)-8
b(alid)26 b(v)-5 b(alues)25 b(are:)40 b(OPT)p 3443 2158
V 32 w(GCP)p 3674 2158 V 32 w(GPT)227 2271 y(\(cop)m(y)d(only)f(the)g
(grouping)f(table\))h(and)f(OPT)p 1887 2271 V 32 w(GCP)p
2118 2271 V 33 w(ALL)h(\(recursiv)m(ely)f(cop)m(y)i(ALL)e(the)i(HDUs)f
(that)227 2384 y(b)s(elong)23 b(to)h(the)g(group)f(de\014ned)g(b)m(y)g
(infptr\).)37 b(If)23 b(the)h(cp)s(opt)g(==)f(OPT)p 2618
2384 V 32 w(GCP)p 2849 2384 V 32 w(GPT)h(then)f(the)h(mem)m(b)s(ers)f
(of)227 2497 y(infptr)h(ha)m(v)m(e)i(their)f(GRPIDn)g(and)g(GRPLCn)g(k)
m(eyw)m(ords)h(up)s(dated)e(to)i(re\015ect)g(the)g(existence)g(of)g
(the)f(new)227 2610 y(grouping)e(table)g(outfptr,)i(since)e(they)h(no)m
(w)g(b)s(elong)f(to)h(the)g(new)g(group.)38 b(If)23 b(cp)s(opt)h(==)f
(OPT)p 3460 2610 V 32 w(GCP)p 3691 2610 V 32 w(ALL)227
2723 y(then)29 b(the)g(new)g(grouping)f(table)h(outfptr)f(only)g(con)m
(tains)i(p)s(oin)m(ters)e(to)i(the)f(copied)f(mem)m(b)s(er)h(HDUs)h
(and)227 2836 y(not)38 b(the)g(original)d(mem)m(b)s(er)i(HDUs)h(of)g
(infptr.)60 b(Note)39 b(that,)h(when)d(cp)s(opt)g(==)g(OPT)p
3301 2836 V 32 w(GCP)p 3532 2836 V 33 w(ALL,)g(all)227
2949 y(mem)m(b)s(ers)h(of)h(the)f(group)g(de\014ned)f(b)m(y)i(infptr)d
(will)g(b)s(e)h(copied)h(to)h(a)g(single)e(FITS)h(\014le)g(p)s(oin)m
(ted)f(to)i(b)m(y)227 3061 y(outfptr)30 b(regardless)g(of)g(their)g
(\014le)f(distribution)e(in)i(the)i(original)d(group.)95
3298 y Fe(int)47 b(fits_copy_group)d(/)j(ffgtcp)286 3411
y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(cpopt,)f(>)h
(int)g(*status\))0 3648 y Fi(6)81 b Fj(Merge)40 b(the)f(t)m(w)m(o)h
(groups)e(de\014ned)g(b)m(y)h(the)g(grouping)f(table)g(HDUs)i(infptr)d
(and)h(outfptr)h(b)m(y)f(com)m(bining)227 3761 y(their)29
b(mem)m(b)s(ers)g(in)m(to)h(a)g(single)e(grouping)g(table.)41
b(All)28 b(mem)m(b)s(er)h(HDUs)h(\(ro)m(ws\))h(are)f(copied)f(from)g
(infptr)227 3874 y(to)f(outfptr.)39 b(If)26 b(mgopt)i(==)e(OPT)p
1419 3874 V 32 w(MR)m(G)p 1669 3874 V 34 w(COPY)g(then)g(infptr)f(con)m
(tin)m(ues)i(to)h(exist)f(unaltered)e(after)j(the)227
3987 y(merge.)57 b(If)36 b(the)f(mgopt)i(==)e(OPT)p 1474
3987 V 31 w(MR)m(G)p 1723 3987 V 34 w(MO)m(V)i(then)e(infptr)e(is)i
(deleted)h(after)g(the)g(merge.)57 b(In)35 b(b)s(oth)227
4100 y(cases,)d(the)e(GRPIDn)h(and)e(GRPLCn)h(k)m(eyw)m(ords)g(of)h
(the)g(mem)m(b)s(er)e(HDUs)i(are)g(up)s(dated)e(accordingly)-8
b(.)95 4337 y Fe(int)47 b(fits_merge_groups)c(/)48 b(ffgtmg)286
4450 y(\(fitsfile)e(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(mgopt,)f(>)
h(int)g(*status\))0 4687 y Fi(7)81 b Fj("Compact")24
b(the)f(group)g(de\014ned)f(b)m(y)h(grouping)e(table)i(p)s(oin)m(ted)f
(to)i(b)m(y)f(gfptr.)38 b(The)23 b(compaction)g(is)f(ac)m(hiev)m(ed)227
4799 y(b)m(y)37 b(merging)g(\(via)g(\014ts)p 1034 4799
V 32 w(merge)p 1303 4799 V 34 w(groups\(\)\))g(all)f(direct)h(mem)m(b)s
(er)g(HDUs)g(of)h(gfptr)e(that)i(are)g(themselv)m(es)227
4912 y(grouping)h(tables.)69 b(The)40 b(cmopt)g(parameter)h(de\014nes)e
(whether)g(the)i(merged)f(grouping)e(table)i(HDUs)227
5025 y(remain)j(after)i(merging)e(\(cmopt)i(==)f(OPT)p
1852 5025 V 32 w(CMT)p 2099 5025 V 32 w(MBR\))h(or)f(if)f(they)i(are)f
(deleted)g(after)h(merging)227 5138 y(\(cmopt)31 b(==)f(OPT)p
916 5138 V 32 w(CMT)p 1163 5138 V 32 w(MBR)p 1409 5138
V 34 w(DEL\).)g(If)g(the)h(grouping)d(table)j(con)m(tains)f(no)g
(direct)g(mem)m(b)s(er)f(HDUs)227 5251 y(that)i(are)f(themselv)m(es)g
(grouping)e(tables)i(then)f(this)g(function)f(do)s(es)i(nothing.)39
b(Note)31 b(that)g(this)d(function)227 5364 y(is)i(not)g(recursiv)m(e,)
g(i.e.,)h(only)f(the)g(direct)g(mem)m(b)s(er)g(HDUs)h(of)f(gfptr)g(are)
h(considered)e(for)h(merging.)95 5601 y Fe(int)47 b(fits_compact_group)
c(/)48 b(ffgtcm)286 5714 y(\(fitsfile)e(*gfptr,)f(int)i(cmopt,)f(>)i
(int)f(*status\))p eop
%%Page: 78 86
78 85 bop 0 299 a Fj(78)1338 b Fh(CHAPTER)29 b(8.)112
b(HIERAR)m(CHICAL)30 b(GR)m(OUPING)h(R)m(OUTINES)0 555
y Fi(8)81 b Fj(V)-8 b(erify)20 b(the)i(in)m(tegrit)m(y)f(of)g(the)g
(grouping)f(table)h(p)s(oin)m(ted)f(to)i(b)m(y)f(gfptr)g(to)h(mak)m(e)g
(sure)e(that)i(all)e(group)h(mem)m(b)s(ers)227 668 y(are)31
b(accessible)g(and)f(that)h(all)e(links)g(to)i(other)g(grouping)e
(tables)i(are)g(v)-5 b(alid.)40 b(The)30 b(\014rstfailed)e(parameter)
227 781 y(returns)e(the)i(mem)m(b)s(er)e(ID)h(\(ro)m(w)h(n)m(um)m(b)s
(er\))e(of)i(the)f(\014rst)f(mem)m(b)s(er)h(HDU)h(to)g(fail)e(v)m
(eri\014cation)g(\(if)h(p)s(ositiv)m(e)227 894 y(v)-5
b(alue\))35 b(or)f(the)h(\014rst)e(group)h(link)e(to)k(fail)d(\(if)g
(negativ)m(e)j(v)-5 b(alue\).)53 b(If)34 b(gfptr)g(is)f(successfully)g
(v)m(eri\014ed)g(then)227 1007 y(\014rstfailed)c(con)m(tains)h(a)h
(return)e(v)-5 b(alue)30 b(of)h(0.)95 1284 y Fe(int)47
b(fits_verify_group)c(/)48 b(ffgtvf)286 1397 y(\(fitsfile)e(*gfptr,)f
(>)j(long)f(*firstfailed,)d(int)j(*status\))0 1674 y
Fi(9)81 b Fj(Op)s(en)23 b(a)j(grouping)e(table)h(that)h(con)m(tains)f
(the)h(mem)m(b)s(er)e(HDU)i(p)s(oin)m(ted)e(to)i(b)m(y)f(mfptr.)38
b(The)25 b(grouping)f(table)227 1787 y(to)39 b(op)s(en)e(is)g
(de\014ned)g(b)m(y)h(the)g(grpid)e(parameter,)k(whic)m(h)d(con)m(tains)
h(the)g(k)m(eyw)m(ord)h(index)d(v)-5 b(alue)38 b(of)g(the)227
1900 y(GRPIDn/GRPLCn)d(k)m(eyw)m(ord\(s\))g(that)h(link)d(the)i(mem)m
(b)s(er)f(HDU)h(mfptr)f(to)i(the)f(grouping)e(table.)54
b(If)227 2013 y(the)30 b(grouping)e(table)h(resides)f(in)h(a)g(\014le)g
(other)g(than)h(the)f(mem)m(b)s(er)g(HDUs)h(\014le)e(then)h(an)h
(attempt)g(is)f(\014rst)227 2126 y(made)g(to)h(op)s(en)e(the)h(\014le)f
(readwrite,)h(and)f(failing)f(that)j(readonly)-8 b(.)39
b(A)29 b(p)s(oin)m(ter)f(to)i(the)f(op)s(ened)f(grouping)227
2238 y(table)j(HDU)g(is)e(returned)g(in)g(gfptr.)227
2397 y(Note)35 b(that)g(it)e(is)g(p)s(ossible,)f(although)i(unlik)m
(ely)d(and)i(undesirable,)f(for)i(the)g(GRPIDn/GRPLCn)f(k)m(ey-)227
2510 y(w)m(ords)k(in)f(a)h(mem)m(b)s(er)g(HDU)h(header)f(to)h(b)s(e)e
(non-con)m(tin)m(uous,)j(e.g.,)h(GRPID1,)g(GRPID2,)g(GRPID5,)227
2623 y(GRPID6.)i(In)29 b(suc)m(h)g(cases,)i(the)f(grpid)e(index)g(v)-5
b(alue)30 b(sp)s(eci\014ed)e(in)g(the)i(function)e(call)i(shall)e(iden)
m(tify)g(the)227 2736 y(\(grpid\)th)35 b(GRPID)g(v)-5
b(alue.)56 b(In)34 b(the)i(ab)s(o)m(v)m(e)h(example,)f(if)f(grpid)e(==)
i(3,)j(then)d(the)g(group)g(sp)s(eci\014ed)f(b)m(y)227
2849 y(GRPID5)d(w)m(ould)f(b)s(e)f(op)s(ened.)95 3126
y Fe(int)47 b(fits_open_group)d(/)j(ffgtop)286 3239 y(\(fitsfile)f
(*mfptr,)f(int)i(group,)f(>)i(fitsfile)d(**gfptr,)h(int)h(*status\))0
3516 y Fi(10)f Fj(Add)38 b(a)h(mem)m(b)s(er)f(HDU)i(to)f(an)g(existing)
e(grouping)h(table)h(p)s(oin)m(ted)e(to)j(b)m(y)e(gfptr.)66
b(The)38 b(mem)m(b)s(er)g(HDU)227 3629 y(ma)m(y)30 b(either)f(b)s(e)g
(p)s(oin)m(ted)f(to)i(mfptr)f(\(whic)m(h)f(m)m(ust)i(b)s(e)e(p)s
(ositioned)g(to)i(the)f(mem)m(b)s(er)g(HDU\))i(or,)f(if)e(mfptr)227
3742 y(==)36 b(NULL,)g(iden)m(ti\014ed)e(b)m(y)i(the)g(hdup)s(os)e
(parameter)i(\(the)h(HDU)g(p)s(osition)d(n)m(um)m(b)s(er,)i(Primary)e
(arra)m(y)227 3855 y(==)g(1\))i(if)e(b)s(oth)g(the)h(grouping)f(table)g
(and)h(the)g(mem)m(b)s(er)f(HDU)h(reside)f(in)g(the)h(same)g(FITS)f
(\014le.)53 b(The)227 3968 y(new)27 b(mem)m(b)s(er)f(HDU)h(shall)e(ha)m
(v)m(e)j(the)f(appropriate)f(GRPIDn)g(and)g(GRPLCn)g(k)m(eyw)m(ords)h
(created)h(in)e(its)227 4081 y(header.)44 b(Note)33 b(that)f(if)f(the)h
(mem)m(b)s(er)e(HDU)j(is)d(already)h(a)h(mem)m(b)s(er)f(of)h(the)g
(group)f(then)g(it)g(will)e(not)j(b)s(e)227 4194 y(added)e(a)h(second)f
(time.)95 4471 y Fe(int)47 b(fits_add_group_member)42
b(/)48 b(ffgtam)286 4584 y(\(fitsfile)e(*gfptr,)f(fitsfile)h(*mfptr,)g
(int)h(hdupos,)f(>)h(int)g(*status\))0 4938 y Ff(8.2)135
b(Group)45 b(Mem)l(b)t(er)f(Routines)0 5191 y Fi(1)81
b Fj(Return)29 b(the)h(n)m(um)m(b)s(er)f(of)i(mem)m(b)s(er)e(HDUs)i(in)
e(a)i(grouping)d(table)j(gfptr.)40 b(The)30 b(n)m(um)m(b)s(er)e(mem)m
(b)s(er)i(HDUs)h(is)227 5304 y(just)f(the)h(NAXIS2)f(v)-5
b(alue)30 b(\(n)m(um)m(b)s(er)g(of)g(ro)m(ws\))h(of)f(the)h(grouping)e
(table.)95 5581 y Fe(int)47 b(fits_get_num_members)c(/)k(ffgtnm)286
5694 y(\(fitsfile)f(*gfptr,)f(>)j(long)f(*nmembers,)e(int)h(*status\))p
eop
%%Page: 79 87
79 86 bop 0 299 a Fh(8.2.)72 b(GR)m(OUP)31 b(MEMBER)g(R)m(OUTINES)2295
b Fj(79)0 555 y Fi(2)81 b Fj(Return)34 b(the)h(n)m(um)m(b)s(er)f(of)i
(groups)e(to)i(whic)m(h)e(the)h(HDU)h(p)s(oin)m(ted)e(to)i(b)m(y)f
(mfptr)f(is)h(link)m(ed,)g(as)g(de\014ned)f(b)m(y)227
668 y(the)27 b(n)m(um)m(b)s(er)f(of)h(GRPIDn/GRPLCn)f(k)m(eyw)m(ord)i
(records)e(that)i(app)s(ear)e(in)f(its)i(header.)39 b(Note)28
b(that)g(eac)m(h)227 781 y(time)36 b(this)g(function)f(is)g(called,)j
(the)e(indices)f(of)i(the)f(GRPIDn/GRPLCn)g(k)m(eyw)m(ords)h(are)g(c)m
(hec)m(k)m(ed)h(to)227 894 y(mak)m(e)29 b(sure)e(they)g(are)h(con)m
(tin)m(uous)f(\(ie)h(no)f(gaps\))h(and)f(are)h(re-en)m(umerated)g(to)h
(eliminate)d(gaps)i(if)e(found.)95 1228 y Fe(int)47 b
(fits_get_num_groups)c(/)k(ffgmng)286 1341 y(\(fitsfile)f(*mfptr,)f(>)j
(long)f(*nmembers,)e(int)h(*status\))0 1563 y Fi(3)81
b Fj(Op)s(en)26 b(a)i(mem)m(b)s(er)f(of)h(the)f(grouping)g(table)g(p)s
(oin)m(ted)g(to)h(b)m(y)g(gfptr.)39 b(The)27 b(mem)m(b)s(er)g(to)i(op)s
(en)e(is)f(iden)m(ti\014ed)g(b)m(y)227 1676 y(its)j(ro)m(w)h(n)m(um)m
(b)s(er)e(within)f(the)i(grouping)g(table)g(as)h(giv)m(en)f(b)m(y)h
(the)f(parameter)h('mem)m(b)s(er')f(\(\014rst)h(mem)m(b)s(er)227
1788 y(==)g(1\))g(.)41 b(A)30 b(\014ts\014le)e(p)s(oin)m(ter)h(to)i
(the)f(op)s(ened)f(mem)m(b)s(er)g(HDU)i(is)e(returned)g(as)h(mfptr.)39
b(Note)31 b(that)g(if)e(the)227 1901 y(mem)m(b)s(er)f(HDU)h(resides)f
(in)f(a)i(FITS)f(\014le)f(di\013eren)m(t)h(from)g(the)h(grouping)e
(table)h(HDU)i(then)e(the)h(mem)m(b)s(er)227 2014 y(\014le)h(is)f
(\014rst)h(op)s(ened)f(readwrite)h(and,)g(failing)e(this,)i(op)s(ened)f
(readonly)-8 b(.)95 2236 y Fe(int)47 b(fits_open_member)d(/)j(ffgmop)
286 2349 y(\(fitsfile)f(*gfptr,)f(long)i(member,)f(>)h(fitsfile)f
(**mfptr,)f(int)i(*status\))0 2570 y Fi(4)81 b Fj(Cop)m(y)27
b(\(app)s(end\))f(a)i(mem)m(b)s(er)f(HDU)h(of)f(the)h(grouping)d(table)
j(p)s(oin)m(ted)e(to)i(b)m(y)f(gfptr.)39 b(The)27 b(mem)m(b)s(er)g(HDU)
h(is)227 2683 y(iden)m(ti\014ed)j(b)m(y)i(its)g(ro)m(w)g(n)m(um)m(b)s
(er)e(within)g(the)i(grouping)f(table)g(as)i(giv)m(en)f(b)m(y)f(the)i
(parameter)f('mem)m(b)s(er')227 2796 y(\(\014rst)j(mem)m(b)s(er)f(==)g
(1\).)58 b(The)35 b(cop)m(y)i(of)f(the)g(group)f(mem)m(b)s(er)g(HDU)i
(will)c(b)s(e)i(app)s(ended)f(to)j(the)f(FITS)227 2909
y(\014le)28 b(p)s(oin)m(ted)g(to)h(b)m(y)f(mfptr,)h(and)f(up)s(on)f
(return)g(mfptr)h(shall)f(p)s(oin)m(t)g(to)j(the)f(copied)f(mem)m(b)s
(er)g(HDU.)h(The)227 3022 y(cp)s(opt)e(parameter)h(ma)m(y)g(tak)m(e)h
(on)e(the)g(follo)m(wing)f(v)-5 b(alues:)39 b(OPT)p 2465
3022 28 4 v 32 w(MCP)p 2708 3022 V 32 w(ADD)29 b(whic)m(h)d(adds)g(a)i
(new)f(en)m(try)227 3135 y(in)c(gfptr)h(for)f(the)i(copied)e(mem)m(b)s
(er)h(HDU,)h(OPT)p 1907 3135 V 31 w(MCP)p 2149 3135 V
33 w(NADD)g(whic)m(h)e(do)s(es)h(not)g(add)f(an)h(en)m(try)h(in)d
(gfptr)227 3247 y(for)j(the)h(copied)e(mem)m(b)s(er,)i(and)f(OPT)p
1536 3247 V 32 w(MCP)p 1779 3247 V 32 w(REPL)g(whic)m(h)f(replaces)h
(the)g(original)e(mem)m(b)s(er)i(en)m(try)g(with)227
3360 y(the)31 b(copied)f(mem)m(b)s(er)f(en)m(try)-8 b(.)95
3582 y Fe(int)47 b(fits_copy_member)d(/)j(ffgmcp)286
3695 y(\(fitsfile)f(*gfptr,)f(fitsfile)h(*mfptr,)g(long)g(member,)g
(int)h(cpopt,)f(>)i(int)f(*status\))0 3916 y Fi(5)81
b Fj(T)-8 b(ransfer)34 b(a)i(group)f(mem)m(b)s(er)f(HDU)i(from)f(the)h
(grouping)e(table)h(p)s(oin)m(ted)f(to)i(b)m(y)f(infptr)f(to)i(the)f
(grouping)227 4029 y(table)h(p)s(oin)m(ted)f(to)i(b)m(y)f(outfptr.)58
b(The)35 b(mem)m(b)s(er)h(HDU)h(to)f(transfer)g(is)f(iden)m(ti\014ed)f
(b)m(y)i(its)g(ro)m(w)g(n)m(um)m(b)s(er)227 4142 y(within)k(infptr)g
(as)j(sp)s(eci\014ed)e(b)m(y)h(the)h(parameter)g('mem)m(b)s(er')f
(\(\014rst)g(mem)m(b)s(er)g(==)f(1\).)78 b(If)42 b(tfopt)h(==)227
4255 y(OPT)p 431 4255 V 32 w(MCP)p 674 4255 V 33 w(ADD)26
b(then)f(the)h(mem)m(b)s(er)e(HDU)i(is)f(made)g(a)h(mem)m(b)s(er)f(of)g
(outfptr)g(and)g(remains)f(a)i(mem)m(b)s(er)227 4368
y(of)34 b(infptr.)50 b(If)34 b(tfopt)g(==)g(OPT)p 1339
4368 V 32 w(MCP)p 1582 4368 V 32 w(MO)m(V)h(then)f(the)g(mem)m(b)s(er)f
(HDU)i(is)e(deleted)h(from)f(infptr)f(after)227 4481
y(the)f(transfer)f(to)h(outfptr.)95 4702 y Fe(int)47
b(fits_transfer_member)c(/)k(ffgmtf)286 4815 y(\(fitsfile)f(*infptr,)f
(fitsfile)h(*outfptr,)f(long)i(member,)e(int)i(tfopt,)334
4928 y(>)h(int)e(*status\))0 5149 y Fi(6)81 b Fj(Remo)m(v)m(e)31
b(a)e(mem)m(b)s(er)g(HDU)h(from)f(the)h(grouping)e(table)h(p)s(oin)m
(ted)f(to)i(b)m(y)g(gfptr.)40 b(The)29 b(mem)m(b)s(er)f(HDU)i(to)h(b)s
(e)227 5262 y(deleted)36 b(is)e(iden)m(ti\014ed)g(b)m(y)h(its)g(ro)m(w)
h(n)m(um)m(b)s(er)f(in)f(the)i(grouping)e(table)h(as)h(sp)s(eci\014ed)e
(b)m(y)i(the)f(parameter)227 5375 y('mem)m(b)s(er')41
b(\(\014rst)g(mem)m(b)s(er)g(==)f(1\).)74 b(The)41 b(rmopt)g(parameter)
h(ma)m(y)f(tak)m(e)i(on)e(the)h(follo)m(wing)d(v)-5 b(alues:)227
5488 y(OPT)p 431 5488 V 32 w(RM)p 613 5488 V 33 w(ENTR)d(Y)34
b(whic)m(h)d(remo)m(v)m(es)k(the)e(mem)m(b)s(er)g(HDU)h(en)m(try)f
(from)g(the)g(grouping)f(table)h(and)g(up-)227 5601 y(dates)40
b(the)f(mem)m(b)s(er's)f(GRPIDn/GRPLCn)g(k)m(eyw)m(ords,)k(and)c(OPT)p
2687 5601 V 32 w(RM)p 2869 5601 V 33 w(MBR)h(whic)m(h)f(remo)m(v)m(es)i
(the)227 5714 y(mem)m(b)s(er)30 b(HDU)h(en)m(try)g(from)f(the)g
(grouping)f(table)i(and)e(deletes)i(the)f(mem)m(b)s(er)g(HDU)h(itself.)
p eop
%%Page: 80 88
80 87 bop 0 299 a Fj(80)1338 b Fh(CHAPTER)29 b(8.)112
b(HIERAR)m(CHICAL)30 b(GR)m(OUPING)h(R)m(OUTINES)95 555
y Fe(int)47 b(fits_remove_member)c(/)48 b(ffgmrm)286
668 y(\(fitsfile)e(*fptr,)g(long)g(member,)g(int)h(rmopt,)f(>)i(int)f
(*status\))p eop
%%Page: 81 89
81 88 bop 0 1225 a Fg(Chapter)65 b(9)0 1687 y Fm(Sp)6
b(ecialized)77 b(CFITSIO)f(In)-6 b(terface)0 1937 y(Routines)0
2429 y Fj(The)28 b(basic)g(in)m(terface)i(routines)e(describ)s(ed)e
(previously)h(are)i(recommended)f(for)h(most)g(uses,)g(but)f(the)h
(routines)0 2542 y(describ)s(ed)g(in)g(this)h(c)m(hapter)h(are)h(also)e
(a)m(v)-5 b(ailable)31 b(if)e(necessary)-8 b(.)43 b(Some)31
b(of)g(these)g(routines)f(p)s(erform)f(more)i(sp)s(e-)0
2655 y(cialized)26 b(function)f(that)j(cannot)f(easily)f(b)s(e)g(done)h
(with)e(the)i(basic)g(in)m(terface)g(routines)f(while)e(others)j
(duplicate)0 2767 y(the)j(functionalit)m(y)f(of)h(the)g(basic)g
(routines)f(but)g(ha)m(v)m(e)i(a)g(sligh)m(tly)d(di\013eren)m(t)i
(calling)e(sequence.)41 b(See)31 b(App)s(endix)0 2880
y(B)g(for)f(the)g(de\014nition)e(of)j(eac)m(h)h(function)d(parameter.)0
3210 y Ff(9.1)135 b(FITS)44 b(File)i(Access)e(Routines)0
3446 y Fi(1)81 b Fj(Op)s(en)37 b(an)i(existing)g(FITS)f(\014le)g
(residing)f(in)h(core)i(computer)f(memory)-8 b(.)68 b(This)37
b(routine)h(is)h(analogous)g(to)227 3559 y(\014ts)p 354
3559 28 4 v 33 w(op)s(en)p 577 3559 V 32 w(\014le.)54
b(The)35 b('\014lename')f(is)g(curren)m(tly)h(ignored)f(b)m(y)h(this)f
(routine)g(and)h(ma)m(y)g(b)s(e)g(an)m(y)g(arbitrary)227
3672 y(string.)77 b(In)42 b(general,)k(the)d(application)e(m)m(ust)i
(ha)m(v)m(e)h(preallo)s(cated)e(an)g(initial)e(blo)s(c)m(k)j(of)g
(memory)f(to)227 3785 y(hold)h(the)i(FITS)f(\014le)g(prior)f(to)i
(calling)e(this)g(routine:)69 b('memptr')44 b(p)s(oin)m(ts)f(to)j(the)e
(starting)h(address)227 3898 y(and)39 b('memsize')h(giv)m(es)g(the)g
(initial)d(size)i(of)h(the)g(blo)s(c)m(k)f(of)h(memory)-8
b(.)69 b('mem)p 2958 3898 V 33 w(reallo)s(c')39 b(is)g(a)h(p)s(oin)m
(ter)e(to)227 4011 y(an)d(optional)g(function)e(that)j(CFITSIO)e(can)h
(call)f(to)i(allo)s(cate)g(additional)d(memory)-8 b(,)37
b(if)d(needed)g(\(only)227 4124 y(if)40 b(mo)s(de)f(=)h(READ)m
(WRITE\),)i(and)e(is)f(mo)s(deled)g(after)i(the)f(standard)g(C)g
('reallo)s(c')g(function;)k(a)d(n)m(ull)227 4237 y(p)s(oin)m(ter)f(ma)m
(y)h(b)s(e)f(giv)m(en)h(if)e(the)i(initial)d(allo)s(cation)i(of)h
(memory)f(is)g(all)f(that)i(will)d(b)s(e)i(required)f(\(e.g.,)227
4350 y(if)34 b(the)h(\014le)f(is)g(op)s(ened)g(with)g(mo)s(de)g(=)h
(READONL)-8 b(Y\).)36 b(The)e('deltasize')h(parameter)g(ma)m(y)h(b)s(e)
e(used)g(to)227 4463 y(suggest)g(a)f(minim)m(um)d(amoun)m(t)j(of)g
(additional)e(memory)i(that)g(should)e(b)s(e)h(allo)s(cated)h(during)e
(eac)m(h)j(call)227 4575 y(to)d(the)f(memory)f(reallo)s(cation)g
(function.)39 b(By)30 b(default,)f(CFITSIO)f(will)f(reallo)s(cate)k
(enough)e(additional)227 4688 y(space)44 b(to)g(hold)e(the)i(en)m(tire)
f(curren)m(tly)f(de\014ned)h(FITS)f(\014le)h(\(as)g(giv)m(en)h(b)m(y)f
(the)h(NAXISn)e(k)m(eyw)m(ords\))227 4801 y(or)g(1)f(FITS)g(blo)s(c)m
(k)g(\(=)g(2880)i(b)m(ytes\),)i(whic)m(h)c(ev)m(er)h(is)e(larger.)73
b(V)-8 b(alues)42 b(of)f(deltasize)g(less)g(than)g(2880)227
4914 y(will)28 b(b)s(e)i(ignored.)41 b(Since)30 b(the)h(memory)g
(reallo)s(cation)f(op)s(eration)g(can)h(b)s(e)f(computationally)f(exp)s
(ensiv)m(e,)227 5027 y(allo)s(cating)24 b(a)h(larger)f(initial)e(blo)s
(c)m(k)i(of)h(memory)-8 b(,)26 b(and/or)f(sp)s(ecifying)d(a)j(larger)g
(deltasize)f(v)-5 b(alue)24 b(ma)m(y)h(help)227 5140
y(to)31 b(reduce)g(the)f(n)m(um)m(b)s(er)f(of)i(reallo)s(cation)e
(calls)h(and)g(mak)m(e)h(the)g(application)d(program)i(run)f(faster.)95
5375 y Fe(int)47 b(fits_open_memfile)c(/)48 b(ffomem)286
5488 y(\(fitsfile)e(**fptr,)f(const)i(char)f(*filename,)f(int)i(mode,)g
(void)f(**memptr,)334 5601 y(size_t)g(*memsize,)f(size_t)i(deltasize,)
334 5714 y(void)g(*\(*mem_realloc\)\(void)42 b(*p,)47
b(size_t)f(newsize\),)f(int)i(*status\))1905 5942 y Fj(81)p
eop
%%Page: 82 90
82 89 bop 0 299 a Fj(82)1003 b Fh(CHAPTER)30 b(9.)112
b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
555 y Fi(2)81 b Fj(Create)49 b(a)g(new)f(FITS)g(\014le)g(residing)e(in)
i(core)h(computer)g(memory)-8 b(.)96 b(This)47 b(routine)g(is)h
(analogous)h(to)227 668 y(\014ts)p 354 668 28 4 v 33
w(create)p 623 668 V 34 w(\014le.)39 b(In)29 b(general,)h(the)f
(application)e(m)m(ust)i(ha)m(v)m(e)i(preallo)s(cated)e(an)g(initial)d
(blo)s(c)m(k)j(of)g(memory)227 781 y(to)38 b(hold)d(the)i(FITS)f
(\014le)g(prior)f(to)i(calling)f(this)f(routine:)53 b('memptr')36
b(p)s(oin)m(ts)g(to)h(the)g(starting)g(address)227 894
y(and)i('memsize')h(giv)m(es)g(the)g(initial)d(size)i(of)h(the)g(blo)s
(c)m(k)f(of)h(memory)-8 b(.)69 b('mem)p 2958 894 V 33
w(reallo)s(c')39 b(is)g(a)h(p)s(oin)m(ter)e(to)227 1007
y(an)g(optional)e(function)g(that)i(CFITSIO)e(can)i(call)f(to)h(allo)s
(cate)g(additional)d(memory)-8 b(,)40 b(if)c(needed,)k(and)227
1120 y(is)33 b(mo)s(deled)f(after)i(the)g(standard)f(C)g('reallo)s(c')g
(function;)h(a)g(n)m(ull)d(p)s(oin)m(ter)i(ma)m(y)h(b)s(e)f(giv)m(en)g
(if)g(the)h(initial)227 1233 y(allo)s(cation)f(of)g(memory)g(is)g(all)f
(that)i(will)c(b)s(e)j(required.)47 b(The)33 b('deltasize')h(parameter)
f(ma)m(y)h(b)s(e)f(used)f(to)227 1346 y(suggest)i(a)f(minim)m(um)d
(amoun)m(t)j(of)g(additional)e(memory)i(that)g(should)e(b)s(e)h(allo)s
(cated)h(during)e(eac)m(h)j(call)227 1458 y(to)d(the)f(memory)f(reallo)
s(cation)g(function.)39 b(By)30 b(default,)f(CFITSIO)f(will)f(reallo)s
(cate)k(enough)e(additional)227 1571 y(space)k(to)g(hold)e(1)h(FITS)g
(blo)s(c)m(k)f(\(=)h(2880)i(b)m(ytes\))f(and)f(v)-5 b(alues)31
b(of)i(deltasize)f(less)f(than)h(2880)i(will)29 b(b)s(e)j(ig-)227
1684 y(nored.)39 b(Since)24 b(the)i(memory)f(reallo)s(cation)f(op)s
(eration)h(can)h(b)s(e)f(computationally)f(exp)s(ensiv)m(e,)i(allo)s
(cating)227 1797 y(a)h(larger)f(initial)d(blo)s(c)m(k)j(of)g(memory)-8
b(,)28 b(and/or)e(sp)s(ecifying)e(a)i(larger)g(deltasize)g(v)-5
b(alue)26 b(ma)m(y)h(help)d(to)j(reduce)227 1910 y(the)k(n)m(um)m(b)s
(er)e(of)h(reallo)s(cation)g(calls)g(and)f(mak)m(e)j(the)e(application)
f(program)h(run)f(faster.)95 2147 y Fe(int)47 b(fits_create_memfile)c
(/)k(ffimem)286 2260 y(\(fitsfile)f(**fptr,)f(void)i(**memptr,)334
2373 y(size_t)f(*memsize,)f(size_t)i(deltasize,)334 2486
y(void)g(*\(*mem_realloc\)\(void)42 b(*p,)47 b(size_t)f(newsize\),)f
(int)i(*status\))0 2723 y Fi(3)81 b Fj(Reop)s(en)34 b(a)i(FITS)e
(\014le)g(that)i(w)m(as)f(previously)e(op)s(ened)i(with)e(\014ts)p
2414 2723 V 33 w(op)s(en)p 2637 2723 V 32 w(\014le)h(or)h(\014ts)p
3058 2723 V 33 w(create)p 3327 2723 V 34 w(\014le.)54
b(The)34 b(new)227 2836 y(\014ts\014le)h(p)s(oin)m(ter)h(ma)m(y)h(then)
f(b)s(e)f(treated)j(as)e(a)h(separate)g(\014le,)g(and)f(one)h(ma)m(y)g
(sim)m(ultaneously)d(read)i(or)227 2949 y(write)d(to)i(2)f(\(or)g
(more\))g(di\013eren)m(t)f(extensions)g(in)g(the)h(same)g(\014le.)50
b(The)33 b(\014ts)p 2886 2949 V 32 w(op)s(en)p 3108 2949
V 32 w(\014le)g(routine)g(\(ab)s(o)m(v)m(e\))227 3061
y(automatically)i(detects)i(cases)f(where)e(a)i(previously)d(op)s(ened)
h(\014le)h(is)f(b)s(eing)g(op)s(ened)g(again,)j(and)d(then)227
3174 y(in)m(ternally)29 b(call)g(\014ts)p 930 3174 V
33 w(reop)s(en)p 1229 3174 V 32 w(\014le,)h(so)g(programs)g(should)f
(rarely)g(need)h(to)h(explicitly)d(call)i(this)f(routine.)95
3411 y Fe(int)47 b(fits_reopen_file)d(/)j(ffreopen)286
3524 y(\(fitsfile)f(*openfptr,)f(fitsfile)g(**newfptr,)g(>)j(int)f
(*status\))0 3761 y Fi(4)81 b Fj(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 3874 y(ma)m(y)i(b)s(e)f
(another)g(FITS)g(HDU)h(or)f(an)g(ASCI)s(I)f(template)i(\014le.)38
b(If)25 b(the)g(input)f(template)h(\014le)g(name)g(p)s(oin)m(ter)227
3987 y(is)i(n)m(ull,)g(then)g(this)g(routine)f(b)s(eha)m(v)m(es)j(the)f
(same)g(as)g(\014ts)p 2160 3987 V 32 w(create)p 2428
3987 V 35 w(\014le.)39 b(The)27 b(curren)m(tly)g(supp)s(orted)f(format)
227 4100 y(of)33 b(the)g(ASCI)s(I)e(template)i(\014le)e(is)h(describ)s
(ed)e(under)h(the)i(\014ts)p 2350 4100 V 33 w(parse)p
2591 4100 V 32 w(template)g(routine)f(\(in)f(the)i(general)227
4213 y(Utilities)c(section\))95 4450 y Fe(int)47 b
(fits_create_template)c(/)k(fftplt)286 4563 y(\(fitsfile)f(**fptr,)f
(char)i(*filename,)e(char)i(*tpltfile)e(>)i(int)g(*status\))0
4799 y Fi(5)81 b Fj(P)m(arse)28 b(the)f(input)f(\014lename)g(or)i(URL)f
(in)m(to)g(its)g(comp)s(onen)m(t)h(parts:)39 b(the)27
b(\014le)g(t)m(yp)s(e)h(\(\014le://,)g(ftp://,)h(h)m(ttp://,)227
4912 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 5025 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 5138 y(sp)s(eci\014er,)27
b(and)h(the)g(column)f(sp)s(eci\014er.)38 b(Null)26 b(strings)h(will)e
(b)s(e)j(returned)f(for)g(an)m(y)i(comp)s(onen)m(ts)f(that)h(are)227
5251 y(not)i(presen)m(t)f(in)f(the)i(input)d(\014le)i(name.)95
5488 y Fe(int)47 b(fits_parse_input_url)c(/)k(ffiurl)286
5601 y(\(char)g(*filename,)e(>)i(char)g(*filetype,)e(char)h(*infile,)g
(char)h(*outfile,)e(char)334 5714 y(*extspec,)g(char)i(*filter,)f(char)
g(*binspec,)f(char)i(*colspec,)e(int)i(*status\))p eop
%%Page: 83 91
83 90 bop 0 299 a Fh(9.1.)72 b(FITS)30 b(FILE)g(A)m(CCESS)f(R)m
(OUTINES)2244 b Fj(83)0 555 y Fi(6)81 b Fj(P)m(arse)33
b(the)f(input)f(\014lename)h(and)f(return)h(the)h(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 668 y(op)s(ened)i(with)f(\014ts)p 878 668
28 4 v 32 w(op)s(en)p 1100 668 V 32 w(\014le.)48 b(The)33
b(returned)f(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(,)227 781 y(so)40 b(for)f(example,)j(if)c(the)
i(input)d(\014lename)i(=)g(`m)m(y\014le.\014ts[2]')h(then)f(hdun)m(um)e
(=)i(3)h(will)d(b)s(e)i(returned.)227 894 y(CFITSIO)j(do)s(es)i(not)g
(op)s(en)f(the)g(\014le)g(to)i(c)m(hec)m(k)g(if)d(the)i(extension)g
(actually)f(exists)g(if)g(an)g(extension)227 1007 y(n)m(um)m(b)s(er)e
(is)h(sp)s(eci\014ed.)74 b(If)42 b(an)g(extension)g(name)g(is)g
(included)d(in)i(the)i(\014le)e(name)h(sp)s(eci\014cation)f(\(e.g.)227
1120 y(`m)m(y\014le.\014ts[EVENTS]')j(then)f(this)g(routine)g(will)f
(ha)m(v)m(e)j(to)f(op)s(en)g(the)g(FITS)f(\014le)g(and)g(lo)s(ok)h(for)
g(the)227 1233 y(p)s(osition)29 b(of)h(the)h(named)f(extension,)h(then)
f(close)h(\014le)e(again.)41 b(This)29 b(is)g(not)i(p)s(ossible)d(if)i
(the)g(\014le)g(is)f(b)s(eing)227 1346 y(read)34 b(from)f(the)h(stdin)e
(stream,)j(and)f(an)f(error)g(will)f(b)s(e)h(returned)f(in)h(this)f
(case.)52 b(If)33 b(the)h(\014lename)f(do)s(es)227 1458
y(not)42 b(sp)s(ecify)f(an)h(explicit)e(extension)i(\(e.g.)76
b('m)m(y\014le.\014ts'\))42 b(then)g(hdun)m(um)e(=)h(-99)i(will)d(b)s
(e)h(returned,)227 1571 y(whic)m(h)34 b(is)g(functionally)f(equiv)-5
b(alen)m(t)34 b(to)i(hdun)m(um)d(=)h(1.)55 b(This)33
b(routine)h(is)g(mainly)g(used)g(for)g(bac)m(kw)m(ard)227
1684 y(compatibilit)m(y)h(in)h(the)g(fto)s(ols)h(soft)m(w)m(are)h(pac)m
(k)-5 b(age)39 b(and)d(is)f(not)i(recommended)g(for)f(general)h(use.)59
b(It)37 b(is)227 1797 y(generally)i(b)s(etter)g(and)g(more)g(e\016cien)
m(t)h(to)g(\014rst)e(op)s(en)h(the)g(FITS)g(\014le)f(with)g(\014ts)p
3125 1797 V 32 w(op)s(en)p 3347 1797 V 33 w(\014le,)i(then)f(use)227
1910 y(\014ts)p 354 1910 V 33 w(get)p 507 1910 V 34 w(hdu)p
694 1910 V 31 w(n)m(um)c(to)i(determine)f(whic)m(h)f(HDU)i(in)e(the)i
(\014le)e(has)h(b)s(een)g(op)s(ened,)h(rather)f(than)g(calling)227
2023 y(\014ts)p 354 2023 V 33 w(parse)p 595 2023 V 32
w(input)p 841 2023 V 31 w(url)29 b(follo)m(w)m(ed)h(b)m(y)g(a)h(call)e
(to)j(\014ts)p 1967 2023 V 32 w(op)s(en)p 2189 2023 V
32 w(\014le.)143 2280 y Fe(int)47 b(fits_parse_extnum)c(/)48
b(ffextn)334 2393 y(\(char)e(*filename,)f(>)j(int)f(*hdunum,)e(int)i
(*status\))0 2650 y Fi(7)81 b Fj(P)m(arse)45 b(the)g(input)d(\014le)i
(name)h(and)f(return)f(the)i(ro)s(ot)g(\014le)f(name.)83
b(The)44 b(ro)s(ot)h(name)g(includes)d(the)j(\014le)227
2763 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 2875 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 2988 y(sp)s(eci\014cations.)143 3245 y Fe(int)47
b(fits_parse_rootname)c(/)k(ffrtnm)334 3358 y(\(char)f(*filename,)f(>)j
(char)f(*rootname,)e(int)h(*status\);)0 3615 y Fi(8)81
b Fj(T)-8 b(est)37 b(if)e(the)i(input)e(\014le)h(or)g(a)h(compressed)g
(v)m(ersion)f(of)h(the)g(\014le)e(\(with)h(a)h(.gz,)j(.Z,)c(.z,)j(or)e
(.zip)f(extension\))227 3728 y(exists)i(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
3841 y(v)-5 b(alues:)370 4087 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
4200 y(1:)95 b(the)47 b(disk)g(file)g(does)f(exist)370
4313 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 4426 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 4539 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\))143
4892 y(int)h(fits_file_exists)c(/)48 b(ffexist)334 5005
y(\(char)e(*filename,)f(>)j(int)f(*exists,)e(int)i(*status\);)0
5262 y Fi(9)81 b Fj(Flush)35 b(an)m(y)j(in)m(ternal)e(bu\013ers)g(of)i
(data)g(to)g(the)f(output)g(FITS)g(\014le.)61 b(These)37
b(routines)f(rarely)g(need)h(to)i(b)s(e)227 5375 y(called,)g(but)d(can)
i(b)s(e)f(useful)e(in)h(cases)j(where)d(other)i(pro)s(cesses)f(need)g
(to)h(access)h(the)f(same)f(FITS)g(\014le)227 5488 y(in)i(real)i(time,)
h(either)e(on)h(disk)e(or)h(in)f(memory)-8 b(.)71 b(These)41
b(routines)e(also)h(help)f(to)j(ensure)d(that)i(if)f(the)227
5601 y(application)34 b(program)g(subsequen)m(tly)g(ab)s(orts)g(then)h
(the)g(FITS)f(\014le)g(will)e(ha)m(v)m(e)37 b(b)s(een)d(closed)g(prop)s
(erly)-8 b(.)227 5714 y(The)43 b(\014rst)g(routine,)j(\014ts)p
1110 5714 V 33 w(\015ush)p 1332 5714 V 31 w(\014le)c(is)h(more)g
(rigorous)g(and)g(completely)g(closes,)k(then)d(reop)s(ens,)i(the)p
eop
%%Page: 84 92
84 91 bop 0 299 a Fj(84)1003 b Fh(CHAPTER)30 b(9.)112
b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)227
555 y Fj(curren)m(t)h(HDU,)h(b)s(efore)e(\015ushing)f(the)i(in)m
(ternal)e(bu\013ers,)h(th)m(us)h(ensuring)e(that)i(the)g(output)g(FITS)
f(\014le)g(is)227 668 y(iden)m(tical)35 b(to)h(what)f(w)m(ould)g(b)s(e)
g(pro)s(duced)f(if)g(the)i(FITS)f(w)m(as)h(closed)f(at)h(that)g(p)s
(oin)m(t)f(\(i.e.,)i(with)e(a)h(call)227 781 y(to)g(\014ts)p
470 781 28 4 v 33 w(close)p 690 781 V 33 w(\014le\).)55
b(The)35 b(second)g(routine,)h(\014ts)p 1912 781 V 33
w(\015ush)p 2134 781 V 31 w(bu\013er)e(simply)f(\015ushes)h(the)h(in)m
(ternal)f(CFITSIO)227 894 y(bu\013ers)28 b(of)h(data)h(to)f(the)h
(output)e(FITS)g(\014le,)h(without)f(up)s(dating)f(and)h(closing)g(the)
h(curren)m(t)g(HDU.)h(This)227 1007 y(is)36 b(m)m(uc)m(h)h(faster,)i
(but)e(there)g(ma)m(y)g(b)s(e)f(circumstances)h(where)f(the)h
(\015ushed)f(\014le)g(do)s(es)g(not)h(completely)227
1120 y(re\015ect)31 b(the)g(\014nal)e(state)j(of)e(the)h(\014le)e(as)i
(it)f(will)d(exist)k(when)e(the)h(\014le)g(is)f(actually)h(closed.)227
1266 y(A)h(t)m(ypical)f(use)g(of)h(these)g(routines)e(w)m(ould)g(b)s(e)
h(to)h(\015ush)e(the)h(state)i(of)f(a)g(FITS)e(table)i(to)g(disk)e
(after)i(eac)m(h)227 1379 y(ro)m(w)36 b(of)f(the)h(table)f(is)f
(written.)54 b(It)36 b(is)e(recommend)h(that)h(\014ts)p
2392 1379 V 32 w(\015ush)p 2613 1379 V 32 w(\014le)e(b)s(e)h(called)f
(after)i(the)f(\014rst)g(ro)m(w)227 1492 y(is)j(written,)i(then)e
(\014ts)p 1023 1492 V 32 w(\015ush)p 1244 1492 V 31 w(bu\013er)g(ma)m
(y)h(b)s(e)f(called)f(after)i(eac)m(h)h(subsequen)m(t)e(ro)m(w)g(is)g
(written.)64 b(Note)227 1605 y(that)40 b(this)e(latter)h(routine)f
(will)e(not)j(automatically)g(up)s(date)f(the)h(NAXIS2)g(k)m(eyw)m(ord)
h(whic)m(h)d(records)227 1718 y(the)d(n)m(um)m(b)s(er)d(of)i(ro)m(ws)h
(of)f(data)g(in)f(the)h(table,)h(so)g(this)e(k)m(eyw)m(ord)h(m)m(ust)g
(b)s(e)f(explicitly)f(up)s(dated)h(b)m(y)h(the)227 1831
y(application)c(program)h(after)h(eac)m(h)h(ro)m(w)e(is)f(written.)95
2067 y Fe(int)47 b(fits_flush_file)d(/)j(ffflus)286 2180
y(\(fitsfile)f(*fptr,)g(>)h(int)g(*status\))95 2406 y(int)g
(fits_flush_buffer)c(/)48 b(ffflsh)286 2519 y(\(fitsfile)e(*fptr,)g(0,)
h(>)g(int)g(*status\))286 2745 y(\(Note:)94 b(The)47
b(second)f(argument)g(must)g(be)i(0\).)0 3075 y Ff(9.2)135
b(HDU)46 b(Access)e(Routines)0 3311 y Fi(1)81 b Fj(Get)28
b(the)f(b)m(yte)h(o\013sets)g(in)e(the)h(FITS)f(\014le)h(to)g(the)h
(start)g(of)f(the)g(header)g(and)g(the)g(start)h(and)e(end)h(of)g(the)g
(data)227 3424 y(in)33 b(the)h(CHDU.)g(The)f(di\013erence)g(b)s(et)m(w)
m(een)i(headstart)f(and)f(dataend)h(equals)f(the)h(size)f(of)h(the)g
(CHDU.)227 3537 y(If)e(the)h(CHDU)f(is)g(the)g(last)g(HDU)h(in)e(the)i
(\014le,)f(then)g(dataend)g(is)f(also)i(equal)e(to)i(the)g(size)f(of)h
(the)f(en)m(tire)227 3650 y(FITS)25 b(\014le.)38 b(Null)24
b(p)s(oin)m(ters)g(ma)m(y)i(b)s(e)f(input)e(for)j(an)m(y)f(of)h(the)g
(address)e(parameters)i(if)f(their)f(v)-5 b(alues)25
b(are)h(not)227 3763 y(needed.)54 b(The)34 b(\014ts)p
897 3763 V 32 w(get)p 1049 3763 V 34 w(hduaddr)e(routine)i(is)g
(obsolete)h(and)f(should)f(no)i(longer)f(b)s(e)g(used.)53
b(The)34 b(new)m(er)227 3876 y(\014ts)p 354 3876 V 33
w(get)p 507 3876 V 34 w(hduo\013)24 b(routine)h(uses)g(the)h('o\013)p
1588 3876 V 33 w(t')g(data)h(t)m(yp)s(e)f(whic)m(h)e(can)i(supp)s(ort)e
(o\013sets)i(in)e(large)i(\014les)f(greater)227 3988
y(than)30 b(2.1GB)j(in)c(size.)95 4225 y Fe(int)47 b(fits_get_hduoff)d
(/)j(ffghof)334 4338 y(\(fitsfile)e(*fptr,)h(>)i(off_t)e(*headstart,)f
(off_t)h(*datastart,)f(off_t)h(*dataend,)382 4451 y(int)h(*status\))95
4676 y(int)g(fits_get_hduaddr)d(/)j(ffghad)94 b(\(OBSOLETE)45
b(routine\))334 4789 y(\(fitsfile)g(*fptr,)h(>)i(long)f(*headstart,)d
(long)j(*datastart,)e(long)h(*dataend,)382 4902 y(int)h(*status\))0
5139 y Fi(2)81 b Fj(Create)31 b(\(app)s(end\))f(a)i(new)e(empt)m(y)i
(HDU)f(at)h(the)f(end)f(of)i(the)f(FITS)f(\014le.)41
b(This)30 b(is)g(no)m(w)h(the)g(CHDU)g(but)f(it)227 5252
y(is)h(completely)f(empt)m(y)i(and)f(has)g(no)g(header)g(k)m(eyw)m
(ords.)43 b(It)32 b(is)e(recommended)h(that)h(\014ts)p
3344 5252 V 32 w(create)p 3612 5252 V 34 w(img)f(or)227
5365 y(\014ts)p 354 5365 V 33 w(create)p 623 5365 V 34
w(tbl)e(b)s(e)h(used)g(instead)f(of)i(this)e(routine.)95
5601 y Fe(int)47 b(fits_create_hdu)d(/)j(ffcrhd)286 5714
y(\(fitsfile)f(*fptr,)g(>)h(int)g(*status\))p eop
%%Page: 85 93
85 92 bop 0 299 a Fh(9.2.)72 b(HDU)31 b(A)m(CCESS)e(R)m(OUTINES)2488
b Fj(85)0 555 y Fi(3)81 b Fj(Insert)22 b(a)h(new)g(IMA)m(GE)h
(extension)e(immediately)g(follo)m(wing)f(the)i(CHDU,)h(or)f(insert)f
(a)h(new)f(Primary)g(Arra)m(y)227 668 y(at)30 b(the)e(b)s(eginning)e
(of)j(the)g(\014le.)39 b(An)m(y)29 b(follo)m(wing)e(extensions)h(in)g
(the)g(\014le)g(will)e(b)s(e)i(shifted)f(do)m(wn)i(to)g(mak)m(e)227
781 y(ro)s(om)36 b(for)h(the)f(new)g(extension.)58 b(If)36
b(the)h(CHDU)g(is)e(the)i(last)f(HDU)h(in)e(the)i(\014le)e(then)h(the)h
(new)f(image)227 894 y(extension)30 b(will)e(simply)f(b)s(e)j(app)s
(ended)e(to)j(the)f(end)g(of)g(the)g(\014le.)40 b(One)30
b(can)g(force)h(a)g(new)e(primary)f(arra)m(y)227 1007
y(to)35 b(b)s(e)d(inserted)h(at)h(the)g(b)s(eginning)d(of)i(the)h(FITS)
f(\014le)f(b)m(y)i(setting)g(status)f(=)h(PREPEND)p 3432
1007 28 4 v 32 w(PRIMAR)-8 b(Y)227 1120 y(prior)24 b(to)h(calling)f
(the)h(routine.)37 b(In)25 b(this)e(case)j(the)f(old)f(primary)f(arra)m
(y)j(will)c(b)s(e)i(con)m(v)m(erted)j(to)e(an)g(IMA)m(GE)227
1233 y(extension.)48 b(The)32 b(new)g(extension)h(\(or)g(primary)e
(arra)m(y\))i(will)e(b)s(ecome)i(the)g(CHDU.)g(Refer)g(to)h(Chapter)227
1346 y(9)d(for)f(a)h(list)e(of)h(pre-de\014ned)f(bitpix)g(v)-5
b(alues.)95 1605 y Fe(int)47 b(fits_insert_img)d(/)j(ffiimg)286
1718 y(\(fitsfile)f(*fptr,)g(int)h(bitpix,)e(int)i(naxis,)f(long)h
(*naxes,)f(>)h(int)g(*status\))0 1978 y Fi(4)81 b Fj(Insert)30
b(a)g(new)g(ASCI)s(I)f(or)i(binary)e(table)h(extension)g(immediately)f
(follo)m(wing)g(the)i(CHDU.)g(An)m(y)f(follo)m(wing)227
2091 y(extensions)35 b(will)e(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.)56 b(If)35 b(there)h(are)f(no)
h(other)227 2204 y(follo)m(wing)29 b(extensions)i(then)f(the)h(new)f
(table)g(extension)h(will)d(simply)g(b)s(e)i(app)s(ended)f(to)i(the)g
(end)f(of)h(the)227 2317 y(\014le.)41 b(If)30 b(the)h(FITS)f(\014le)f
(is)h(curren)m(tly)g(empt)m(y)h(then)f(this)f(routine)h(will)e(create)k
(a)f(dumm)m(y)f(primary)e(arra)m(y)227 2430 y(b)s(efore)j(app)s(ending)
e(the)j(table)g(to)g(it.)43 b(The)31 b(new)g(extension)h(will)c(b)s
(ecome)k(the)g(CHDU.)g(The)f(tunit)g(and)227 2543 y(extname)39
b(parameters)g(are)f(optional)g(and)g(a)g(n)m(ull)e(p)s(oin)m(ter)i(ma)
m(y)g(b)s(e)g(giv)m(en)g(if)f(they)i(are)f(not)h(de\014ned.)227
2656 y(When)32 b(inserting)e(an)i(ASCI)s(I)f(table)h(with)e(\014ts)p
1847 2656 V 33 w(insert)p 2104 2656 V 32 w(atbl,)i(a)g(n)m(ull)e(p)s
(oin)m(ter)h(ma)m(y)i(giv)m(en)f(for)g(the)g(*tb)s(col)227
2769 y(parameter)23 b(in)e(whic)m(h)h(case)h(eac)m(h)h(column)d(of)i
(the)g(table)f(will)e(b)s(e)i(separated)h(b)m(y)f(a)h(single)e(space)i
(c)m(haracter.)227 2882 y(Similarly)-8 b(,)25 b(if)g(the)i(input)e(v)-5
b(alue)26 b(of)h(ro)m(wlen)f(is)f(0,)j(then)f(CFITSIO)e(will)f
(calculate)j(the)g(default)e(ro)m(wlength)227 2994 y(based)40
b(on)h(the)g(tb)s(col)e(and)h(tt)m(yp)s(e)h(v)-5 b(alues.)71
b(When)40 b(inserting)f(a)i(binary)d(table)j(with)e(\014ts)p
3430 2994 V 32 w(insert)p 3686 2994 V 32 w(btbl,)227
3107 y(if)g(there)i(are)f(follo)m(wing)f(extensions)h(in)f(the)h
(\014le)f(and)h(if)f(the)h(table)g(con)m(tains)h(v)-5
b(ariable)39 b(length)g(arra)m(y)227 3220 y(columns)28
b(then)h(p)s(coun)m(t)g(m)m(ust)g(sp)s(ecify)f(the)i(exp)s(ected)g
(\014nal)e(size)h(of)g(the)h(data)g(heap,)g(otherwise)e(p)s(coun)m(t)
227 3333 y(m)m(ust)j(=)f(0.)95 3593 y Fe(int)47 b(fits_insert_atbl)d(/)
j(ffitab)286 3706 y(\(fitsfile)f(*fptr,)g(long)g(rowlen,)g(long)h
(nrows,)f(int)h(tfields,)e(char)i(*ttype[],)334 3819
y(long)g(*tbcol,)f(char)g(*tform[],)f(char)i(*tunit[],)e(char)i
(*extname,)e(>)j(int)f(*status\))95 4045 y(int)g(fits_insert_btbl)d(/)j
(ffibin)286 4158 y(\(fitsfile)f(*fptr,)g(long)g(nrows,)g(int)h
(tfields,)f(char)h(**ttype,)286 4271 y(char)g(**tform,)f(char)g
(**tunit,)g(char)g(*extname,)g(long)g(pcount,)g(>)i(int)e(*status\))0
4530 y Fi(5)81 b Fj(Mo)s(dify)26 b(the)i(size,)g(dimensions,)e(and/or)h
(data)i(t)m(yp)s(e)f(of)f(the)h(curren)m(t)g(primary)d(arra)m(y)j(or)g
(image)g(extension.)227 4643 y(If)39 b(the)h(new)e(image,)43
b(as)c(sp)s(eci\014ed)f(b)m(y)h(the)g(input)f(argumen)m(ts,)k(is)c
(larger)h(than)g(the)h(curren)m(t)f(existing)227 4756
y(image)29 b(in)e(the)h(FITS)g(\014le)f(then)h(zero)h(\014ll)d(data)j
(will)d(b)s(e)i(inserted)f(at)i(the)f(end)g(of)g(the)h(curren)m(t)f
(image)h(and)227 4869 y(an)m(y)35 b(follo)m(wing)e(extensions)h(will)e
(b)s(e)i(mo)m(v)m(ed)i(further)d(bac)m(k)i(in)f(the)g(\014le.)53
b(Similarly)-8 b(,)32 b(if)i(the)h(new)f(image)227 4982
y(is)i(smaller)f(than)i(the)f(curren)m(t)h(image)g(then)f(an)m(y)h
(follo)m(wing)e(extensions)h(will)e(b)s(e)i(shifted)g(up)f(to)m(w)m
(ards)227 5095 y(the)h(b)s(eginning)d(of)j(the)g(FITS)f(\014le)g(and)g
(the)h(image)g(data)g(will)e(b)s(e)h(truncated)g(to)i(the)f(new)f
(size.)57 b(This)227 5208 y(routine)26 b(rewrites)g(the)i(BITPIX,)f
(NAXIS,)g(and)f(NAXISn)g(k)m(eyw)m(ords)i(with)e(the)h(appropriate)f(v)
-5 b(alues)26 b(for)227 5321 y(the)31 b(new)f(image.)95
5581 y Fe(int)47 b(fits_resize_img)d(/)j(ffrsim)286 5694
y(\(fitsfile)f(*fptr,)g(int)h(bitpix,)e(int)i(naxis,)f(long)h(*naxes,)f
(>)h(int)g(*status\))p eop
%%Page: 86 94
86 93 bop 0 299 a Fj(86)1003 b Fh(CHAPTER)30 b(9.)112
b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
555 y Fi(6)81 b Fj(Cop)m(y)43 b(the)h(data)h(\(and)e(not)h(the)g
(header\))g(from)f(the)h(CHDU)g(asso)s(ciated)g(with)f(infptr)e(to)k
(the)f(CHDU)227 668 y(asso)s(ciated)33 b(with)e(outfptr.)47
b(This)31 b(will)e(o)m(v)m(erwrite)k(an)m(y)g(data)g(previously)e(in)g
(the)i(output)f(CHDU.)h(This)227 781 y(lo)m(w)38 b(lev)m(el)g(routine)f
(is)g(used)g(b)m(y)h(\014ts)p 1510 781 28 4 v 33 w(cop)m(y)p
1724 781 V 33 w(hdu,)h(but)e(it)h(ma)m(y)g(also)g(b)s(e)g(useful)e(in)h
(certain)h(application)227 894 y(programs)30 b(that)h(w)m(an)m(t)g(to)g
(cop)m(y)g(the)f(data)h(from)f(one)h(FITS)e(\014le)h(to)h(another)f
(but)f(also)i(w)m(an)m(t)g(to)g(mo)s(dify)227 1007 y(the)h(header)g(k)m
(eyw)m(ords.)46 b(The)32 b(required)e(FITS)h(header)h(k)m(eyw)m(ords)g
(whic)m(h)f(de\014ne)g(the)h(structure)g(of)g(the)227
1120 y(HDU)f(m)m(ust)g(b)s(e)e(written)h(to)h(the)f(output)g(CHDU)h(b)s
(efore)f(calling)f(this)g(routine.)95 1369 y Fe(int)47
b(fits_copy_data)d(/)k(ffcpdt)286 1482 y(\(fitsfile)e(*infptr,)f
(fitsfile)h(*outfptr,)f(>)i(int)g(*status\))0 1732 y
Fi(7)81 b Fj(This)33 b(routine)g(forces)i(CFITSIO)f(to)h(rescan)g(the)g
(curren)m(t)g(header)f(k)m(eyw)m(ords)h(that)g(de\014ne)f(the)h
(structure)227 1845 y(of)f(the)f(HDU)h(\(suc)m(h)g(as)f(the)h(NAXIS)f
(and)g(BITPIX)g(k)m(eyw)m(ords\))h(so)f(that)h(it)f(reinitializes)e
(the)i(in)m(ternal)227 1958 y(bu\013ers)26 b(that)h(describ)s(e)f(the)h
(HDU)g(structure.)39 b(This)25 b(routine)h(is)g(useful)f(for)h
(reinitializing)d(the)k(structure)227 2071 y(of)34 b(an)f(HDU)h(if)e
(an)m(y)i(of)g(the)f(required)f(k)m(eyw)m(ords)h(\(e.g.,)j(NAXISn\))d
(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)47 b(In)33 b(practice)227
2184 y(it)d(should)e(rarely)h(b)s(e)g(necessary)h(to)h(call)e(this)g
(routine)g(b)s(ecause)g(CFITSIO)g(in)m(ternally)f(calls)h(it)g(in)g
(most)227 2297 y(situations.)95 2546 y Fe(int)47 b(fits_set_hdustruc)c
(/)48 b(ffrdef)286 2659 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*status\))141
b(\(DEPRECATED\))0 2991 y Ff(9.3)135 b(Sp)t(ecialized)46
b(Header)g(Keyw)l(ord)f(Routines)0 3245 y Fd(9.3.1)112
b(Header)38 b(Information)f(Routines)0 3452 y Fi(1)81
b Fj(Reserv)m(e)29 b(space)g(in)d(the)j(CHU)f(for)g(MOREKEYS)f(more)h
(header)g(k)m(eyw)m(ords.)41 b(This)26 b(routine)h(ma)m(y)i(b)s(e)f
(called)227 3565 y(to)34 b(allo)s(cate)f(space)g(for)f(additional)f(k)m
(eyw)m(ords)i(at)g(the)g(time)f(the)h(header)f(is)g(created)h(\(prior)f
(to)h(writing)227 3678 y(an)m(y)h(data\).)51 b(CFITSIO)32
b(can)i(dynamically)d(add)i(more)g(space)h(to)g(the)g(header)f(when)f
(needed,)j(ho)m(w)m(ev)m(er)227 3791 y(it)30 b(is)g(more)g(e\016cien)m
(t)h(to)g(preallo)s(cate)f(the)h(required)e(space)i(if)e(the)h(size)h
(is)e(kno)m(wn)h(in)f(adv)-5 b(ance.)95 4041 y Fe(int)47
b(fits_set_hdrsize)d(/)j(ffhdef)286 4153 y(\(fitsfile)f(*fptr,)g(int)h
(morekeys,)e(>)i(int)g(*status\))0 4403 y Fi(2)81 b Fj(Return)26
b(the)h(n)m(um)m(b)s(er)e(of)j(k)m(eyw)m(ords)f(in)e(the)i(header)g
(\(not)h(coun)m(ting)f(the)g(END)g(k)m(eyw)m(ord\))h(and)e(the)h
(curren)m(t)227 4516 y(p)s(osition)32 b(in)h(the)h(header.)50
b(The)34 b(p)s(osition)d(is)i(the)h(n)m(um)m(b)s(er)f(of)h(the)g(k)m
(eyw)m(ord)g(record)f(that)i(will)c(b)s(e)i(read)227
4629 y(next)k(\(or)g(one)f(greater)i(than)e(the)h(p)s(osition)d(of)j
(the)g(last)f(k)m(eyw)m(ord)h(that)g(w)m(as)g(read\).)59
b(A)37 b(v)-5 b(alue)35 b(of)i(1)g(is)227 4742 y(returned)29
b(if)h(the)g(p)s(oin)m(ter)g(is)f(p)s(ositioned)g(at)i(the)f(b)s
(eginning)e(of)i(the)h(header.)95 4992 y Fe(int)47 b(fits_get_hdrpos)d
(/)j(ffghps)286 5105 y(\(fitsfile)f(*fptr,)g(>)h(int)g(*keysexist,)e
(int)i(*keynum,)e(int)i(*status\))0 5394 y Fd(9.3.2)112
b(Read)38 b(and)h(W)-9 b(rite)35 b(the)i(Required)g(Keyw)m(ords)0
5601 y Fi(1)81 b Fj(W)-8 b(rite)20 b(the)h(primary)d(header)i(or)g(IMA)
m(GE)i(extension)e(k)m(eyw)m(ords)g(in)m(to)g(the)h(CHU.)f(The)g
(simpler)e(\014ts)p 3535 5601 V 32 w(write)p 3770 5601
V 32 w(imghdr)227 5714 y(routine)32 b(is)h(equiv)-5 b(alen)m(t)32
b(to)i(calling)e(\014ts)p 1604 5714 V 32 w(write)p 1839
5714 V 32 w(grphdr)f(with)h(the)i(default)e(v)-5 b(alues)32
b(of)i(simple)d(=)i(TR)m(UE,)p eop
%%Page: 87 95
87 94 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29 b(HEADER)i(KEYW)m(ORD)g
(R)m(OUTINES)1510 b Fj(87)227 555 y(p)s(coun)m(t)39 b(=)g(0,)j(gcoun)m
(t)e(=)f(1,)j(and)c(extend)h(=)g(TR)m(UE.)g(The)g(PCOUNT,)g(GCOUNT)f
(and)h(EXTEND)227 668 y(k)m(eyw)m(ords)32 b(are)f(not)g(required)f(in)f
(the)i(primary)f(header)g(and)h(are)g(only)f(written)g(if)g(p)s(coun)m
(t)h(is)f(not)h(equal)227 781 y(to)26 b(zero,)h(gcoun)m(t)f(is)e(not)i
(equal)e(to)i(zero)g(or)f(one,)h(and)f(if)f(extend)h(is)f(TR)m(UE,)h
(resp)s(ectiv)m(ely)-8 b(.)39 b(When)25 b(writing)227
894 y(to)37 b(an)f(IMA)m(GE)h(extension,)h(the)e(SIMPLE)f(and)h(EXTEND)
g(parameters)g(are)h(ignored.)57 b(It)36 b(is)f(recom-)227
1007 y(mended)27 b(that)i(\014ts)p 885 1007 28 4 v 33
w(create)p 1154 1007 V 34 w(image)g(or)f(\014ts)p 1680
1007 V 32 w(create)p 1948 1007 V 35 w(tbl)f(b)s(e)g(used)h(instead)f
(of)i(these)f(routines)f(to)i(write)f(the)227 1120 y(required)h(header)
h(k)m(eyw)m(ords.)95 1374 y Fe(int)47 b(fits_write_imghdr)c(/)48
b(ffphps)286 1487 y(\(fitsfile)e(*fptr,)g(int)h(bitpix,)e(int)i(naxis,)
f(long)h(*naxes,)f(>)h(int)g(*status\))95 1713 y(int)g
(fits_write_grphdr)c(/)48 b(ffphpr)286 1826 y(\(fitsfile)e(*fptr,)g
(int)h(simple,)e(int)i(bitpix,)f(int)h(naxis,)f(long)h(*naxes,)334
1939 y(long)g(pcount,)f(long)g(gcount,)g(int)h(extend,)f(>)h(int)g
(*status\))0 2194 y Fi(2)81 b Fj(W)-8 b(rite)29 b(the)h(ASCI)s(I)d
(table)j(header)f(k)m(eyw)m(ords)g(in)m(to)h(the)f(CHU.)h(The)e
(optional)h(TUNITn)f(and)h(EXTNAME)227 2307 y(k)m(eyw)m(ords)f(are)h
(written)d(only)h(if)g(the)h(input)e(p)s(oin)m(ters)h(are)h(not)g(n)m
(ull.)38 b(A)27 b(n)m(ull)f(p)s(oin)m(ter)h(ma)m(y)h(giv)m(en)g(for)g
(the)227 2419 y(*tb)s(col)36 b(parameter)h(in)e(whic)m(h)g(case)j(a)e
(single)f(space)i(will)d(b)s(e)i(inserted)f(b)s(et)m(w)m(een)i(eac)m(h)
g(column)e(of)i(the)227 2532 y(table.)56 b(Similarly)-8
b(,)33 b(if)i(ro)m(wlen)f(is)h(giv)m(en)g(=)g(0,)i(then)e(CFITSIO)f
(will)f(calculate)i(the)h(default)e(ro)m(wlength)227
2645 y(based)c(on)h(the)f(tb)s(col)g(and)g(tt)m(yp)s(e)h(v)-5
b(alues.)95 2900 y Fe(int)47 b(fits_write_atblhdr)c(/)48
b(ffphtb)286 3013 y(\(fitsfile)e(*fptr,)g(long)g(rowlen,)g(long)h
(nrows,)f(int)h(tfields,)e(char)i(**ttype,)334 3126 y(long)g(*tbcol,)f
(char)g(**tform,)g(char)g(**tunit,)g(char)h(*extname,)e(>)i(int)g
(*status\))0 3380 y Fi(3)81 b Fj(W)-8 b(rite)29 b(the)g(binary)f(table)
h(header)f(k)m(eyw)m(ords)i(in)m(to)f(the)g(CHU.)g(The)g(optional)f
(TUNITn)g(and)h(EXTNAME)227 3493 y(k)m(eyw)m(ords)35
b(are)g(written)f(only)g(if)f(the)i(input)e(p)s(oin)m(ters)g(are)i(not)
g(n)m(ull.)51 b(The)35 b(p)s(coun)m(t)f(parameter,)i(whic)m(h)227
3606 y(sp)s(eci\014es)g(the)h(size)f(of)h(the)g(v)-5
b(ariable)36 b(length)g(arra)m(y)h(heap,)h(should)d(initially)e(=)k(0;)
j(CFITSIO)c(will)e(au-)227 3719 y(tomatically)d(up)s(date)g(the)g
(PCOUNT)f(k)m(eyw)m(ord)i(v)-5 b(alue)31 b(if)f(an)m(y)h(v)-5
b(ariable)30 b(length)h(arra)m(y)h(data)g(is)e(written)227
3832 y(to)h(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)227 3945 y(form)c('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
4058 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 4171 y(than)36 b(or)g(equal)g(to)h(the)f(longest)h(v)m
(ector)g(in)e(the)i(column\).)57 b(If)36 b(`len')f(is)h(not)g(sp)s
(eci\014ed)f(when)g(the)h(table)227 4284 y(is)31 b(created)h(\(e.g.,)h
(the)f(input)d(TF)m(ORMn)i(v)-5 b(alue)31 b(is)f(just)h('1Pt'\))i(then)
e(CFITSIO)f(will)e(scan)k(the)f(column)227 4397 y(when)f(the)h(table)g
(is)f(\014rst)g(closed)g(and)h(will)d(app)s(end)h(the)i(maxim)m(um)f
(length)g(to)h(the)g(TF)m(ORM)g(k)m(eyw)m(ord)227 4509
y(v)-5 b(alue.)40 b(Note)30 b(that)f(if)e(the)i(table)f(is)g(subsequen)
m(tly)f(mo)s(di\014ed)f(to)k(increase)e(the)h(maxim)m(um)e(length)h(of)
h(the)227 4622 y(v)m(ectors)39 b(then)e(the)g(mo)s(difying)e(program)i
(is)f(resp)s(onsible)f(for)i(also)g(up)s(dating)e(the)j(TF)m(ORM)f(k)m
(eyw)m(ord)227 4735 y(v)-5 b(alue.)95 4990 y Fe(int)47
b(fits_write_btblhdr)c(/)48 b(ffphbn)286 5103 y(\(fitsfile)e(*fptr,)g
(long)g(nrows,)g(int)h(tfields,)f(char)h(**ttype,)334
5216 y(char)g(**tform,)e(char)i(**tunit,)e(char)i(*extname,)e(long)i
(pcount,)f(>)h(int)g(*status\))0 5470 y Fi(4)81 b Fj(Read)30
b(the)h(required)d(k)m(eyw)m(ords)j(from)f(the)h(CHDU)f(\(image)i(or)e
(table\).)41 b(When)30 b(reading)g(from)g(an)g(IMA)m(GE)227
5583 y(extension)23 b(the)h(SIMPLE)e(and)h(EXTEND)g(parameters)h(are)f
(ignored.)38 b(A)23 b(n)m(ull)e(p)s(oin)m(ter)i(ma)m(y)h(b)s(e)e
(supplied)227 5696 y(for)30 b(an)m(y)h(of)g(the)f(returned)f
(parameters)i(that)g(are)g(not)f(needed.)p eop
%%Page: 88 96
88 95 bop 0 299 a Fj(88)1003 b Fh(CHAPTER)30 b(9.)112
b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)95
555 y Fe(int)47 b(fits_read_imghdr)d(/)j(ffghpr)286 668
y(\(fitsfile)f(*fptr,)g(int)h(maxdim,)e(>)j(int)f(*simple,)e(int)i
(*bitpix,)f(int)h(*naxis,)334 781 y(long)g(*naxes,)f(long)g(*pcount,)g
(long)g(*gcount,)g(int)h(*extend,)e(int)i(*status\))95
1007 y(int)g(fits_read_atblhdr)c(/)48 b(ffghtb)286 1120
y(\(fitsfile)e(*fptr,int)f(maxdim,)h(>)h(long)g(*rowlen,)e(long)i
(*nrows,)334 1233 y(int)g(*tfields,)e(char)i(**ttype,)e(long)i(*tbcol,)
f(char)h(**tform,)e(char)i(**tunit,)334 1346 y(char)g(*extname,)93
b(int)47 b(*status\))95 1571 y(int)g(fits_read_btblhdr)c(/)48
b(ffghbn)286 1684 y(\(fitsfile)e(*fptr,)g(int)h(maxdim,)e(>)j(long)f
(*nrows,)e(int)i(*tfields,)334 1797 y(char)g(**ttype,)e(char)i
(**tform,)e(char)i(**tunit,)f(char)g(*extname,)334 1910
y(long)h(*pcount,)e(int)i(*status\))0 2197 y Fd(9.3.3)112
b(W)-9 b(rite)36 b(Keyw)m(ord)h(Routines)0 2416 y Fj(These)32
b(routines)g(simply)e(app)s(end)h(a)h(new)g(k)m(eyw)m(ord)h(to)h(the)e
(header)h(and)f(do)g(not)h(c)m(hec)m(k)h(to)f(see)g(if)f(a)g(k)m(eyw)m
(ord)0 2528 y(with)c(the)h(same)h(name)f(already)g(exists.)40
b(In)28 b(general)h(it)g(is)f(preferable)g(to)i(use)f(the)h(\014ts)p
3009 2528 28 4 v 32 w(up)s(date)p 3317 2528 V 32 w(k)m(ey)g(routine)e
(to)0 2641 y(ensure)34 b(that)h(the)g(same)g(k)m(eyw)m(ord)g(is)e(not)i
(written)f(more)h(than)f(once)h(to)h(the)e(header.)54
b(See)34 b(App)s(endix)e(B)j(for)0 2754 y(the)c(de\014nition)d(of)i
(the)h(parameters)f(used)g(in)f(these)i(routines.)0 2988
y Fi(1)81 b Fj(W)-8 b(rite)29 b(\(app)s(end\))g(a)g(new)g(k)m(eyw)m
(ord)h(of)g(the)f(appropriate)f(data)i(t)m(yp)s(e)g(in)m(to)f(the)h
(CHU.)f(A)h(n)m(ull)d(p)s(oin)m(ter)h(ma)m(y)227 3101
y(b)s(e)35 b(en)m(tered)h(for)f(the)h(commen)m(t)h(parameter,)g(whic)m
(h)d(will)f(cause)j(the)g(commen)m(t)g(\014eld)e(of)i(the)f(k)m(eyw)m
(ord)227 3214 y(to)43 b(b)s(e)e(left)h(blank.)75 b(The)41
b(\015t,)k(dbl,)e(cmp,)i(and)d(dblcmp)e(v)m(ersions)h(of)h(this)f
(routine)g(ha)m(v)m(e)i(the)g(added)227 3327 y(feature)33
b(that)g(if)f(the)g('decimals')g(parameter)h(is)f(negativ)m(e,)i(then)e
(the)h('G')g(displa)m(y)e(format)i(rather)f(then)227
3440 y(the)i('E')f(format)h(will)c(b)s(e)j(used)f(when)g(constructing)h
(the)h(k)m(eyw)m(ord)f(v)-5 b(alue,)34 b(taking)f(the)h(absolute)e(v)-5
b(alue)227 3553 y(of)34 b('decimals')f(for)g(the)h(precision.)49
b(This)32 b(will)f(suppress)g(trailing)h(zeros,)j(and)e(will)e(use)j(a)
g(\014xed)f(format)227 3666 y(rather)e(than)f(an)g(exp)s(onen)m(tial)f
(format,)i(dep)s(ending)d(on)i(the)h(magnitude)e(of)i(the)g(v)-5
b(alue.)95 3899 y Fe(int)47 b(fits_write_key_str)c(/)48
b(ffpkys)286 4012 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(char)g
(*value,)g(char)h(*comment,)334 4125 y(>)h(int)e(*status\))95
4351 y(int)h(fits_write_key_[log,)c(lng])j(/)95 b(ffpky[lj])286
4464 y(\(fitsfile)46 b(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g
(char)g(*comment,)334 4577 y(>)i(int)e(*status\))95 4803
y(int)h(fits_write_key_[flt,)c(dbl,)j(fixflg,)g(fixdbl])g(/)h
(ffpky[edfg])286 4916 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)
g(numval,)g(int)h(decimals,)286 5028 y(char)g(*comment,)e(>)j(int)f
(*status\))95 5254 y(int)g(fits_write_key_[cmp,)c(dblcmp,)i(fixcmp,)h
(fixdblcmp])f(/)j(ffpk[yc,ym,fc,fm])286 5367 y(\(fitsfile)e(*fptr,)g
(char)g(*keyname,)g(DTYPE)g(*numval,)g(int)g(decimals,)286
5480 y(char)h(*comment,)e(>)j(int)f(*status\))0 5714
y Fi(2)81 b Fj(W)-8 b(rite)29 b(\(app)s(end\))f(a)i(string)e(v)-5
b(alued)28 b(k)m(eyw)m(ord)i(in)m(to)f(the)g(CHU)h(whic)m(h)d(ma)m(y)j
(b)s(e)f(longer)g(than)f(68)i(c)m(haracters)p eop
%%Page: 89 97
89 96 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29 b(HEADER)i(KEYW)m(ORD)g
(R)m(OUTINES)1510 b Fj(89)227 555 y(in)42 b(length.)79
b(This)41 b(uses)i(the)g(Long)h(String)d(Keyw)m(ord)i(con)m(v)m(en)m
(tion)i(that)e(is)g(describ)s(ed)e(in)h(the`Lo)s(cal)227
668 y(FITS)c(Con)m(v)m(en)m(tions')h(section)g(in)f(Chapter)g(4.)66
b(Since)37 b(this)h(uses)g(a)h(non-standard)f(FITS)g(con)m(v)m(en)m
(tion)227 781 y(to)45 b(enco)s(de)f(the)g(long)g(k)m(eyw)m(ord)g
(string,)j(programs)c(whic)m(h)g(use)h(this)f(routine)g(should)f(also)h
(call)h(the)227 894 y(\014ts)p 354 894 28 4 v 33 w(write)p
590 894 V 32 w(k)m(ey)p 755 894 V 33 w(longw)m(arn)25
b(routine)f(to)i(add)f(some)h(COMMENT)f(k)m(eyw)m(ords)g(to)h(w)m(arn)f
(users)g(of)g(the)h(FITS)227 1007 y(\014le)42 b(that)i(this)d(con)m(v)m
(en)m(tion)j(is)e(b)s(eing)f(used.)78 b(The)42 b(\014ts)p
2220 1007 V 32 w(write)p 2455 1007 V 32 w(k)m(ey)p 2620
1007 V 34 w(longw)m(arn)g(routine)g(also)h(writes)f(a)227
1120 y(k)m(eyw)m(ord)29 b(called)e(LONGSTRN)g(to)i(record)f(the)g(v)m
(ersion)g(of)g(the)g(longstring)f(con)m(v)m(en)m(tion)i(that)g(has)f(b)
s(een)227 1233 y(used,)35 b(in)e(case)j(a)f(new)e(con)m(v)m(en)m(tion)j
(is)e(adopted)g(at)h(some)g(p)s(oin)m(t)e(in)h(the)g(future.)52
b(If)34 b(the)h(LONGSTRN)227 1346 y(k)m(eyw)m(ord)43
b(is)f(already)g(presen)m(t)h(in)f(the)g(header,)k(then)d(\014ts)p
2332 1346 V 32 w(write)p 2567 1346 V 32 w(k)m(ey)p 2732
1346 V 34 w(longw)m(arn)f(will)e(simply)g(return)227
1458 y(without)30 b(doing)f(an)m(ything.)95 1700 y Fe(int)47
b(fits_write_key_longstr)42 b(/)48 b(ffpkls)286 1813
y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(char)g(*longstr,)g(char)g
(*comment,)334 1926 y(>)i(int)e(*status\))95 2151 y(int)h
(fits_write_key_longwarn)42 b(/)47 b(ffplsw)286 2264
y(\(fitsfile)f(*fptr,)g(>)h(int)g(*status\))0 2506 y
Fi(3)81 b Fj(W)-8 b(rite)37 b(\(app)s(end\))e(a)i(n)m(um)m(b)s(ered)e
(sequence)i(of)g(k)m(eyw)m(ords)g(in)m(to)f(the)h(CHU.)g(The)f
(starting)g(index)f(n)m(um)m(b)s(er)227 2619 y(\(nstart\))30
b(m)m(ust)e(b)s(e)g(greater)i(than)f(0.)40 b(One)28 b(ma)m(y)i(app)s
(end)d(the)h(same)i(commen)m(t)f(to)h(ev)m(ery)f(k)m(eyw)m(ord)g(\(and)
227 2732 y(eliminate)j(the)i(need)f(to)h(ha)m(v)m(e)g(an)f(arra)m(y)h
(of)f(iden)m(tical)g(commen)m(t)h(strings,)f(one)g(for)h(eac)m(h)g(k)m
(eyw)m(ord\))g(b)m(y)227 2844 y(including)21 b(the)k(amp)s(ersand)e(c)m
(haracter)j(as)e(the)h(last)f(non-blank)f(c)m(haracter)j(in)d(the)h
(\(\014rst\))h(COMMENTS)227 2957 y(string)d(parameter.)38
b(This)21 b(same)i(string)e(will)f(then)i(b)s(e)g(used)f(for)h(the)h
(commen)m(t)g(\014eld)e(in)g(all)h(the)g(k)m(eyw)m(ords.)227
3070 y(One)32 b(ma)m(y)h(also)f(en)m(ter)g(a)h(n)m(ull)d(p)s(oin)m(ter)
h(for)h(the)g(commen)m(t)h(parameter)g(to)f(lea)m(v)m(e)i(the)e(commen)
m(t)h(\014eld)e(of)227 3183 y(the)g(k)m(eyw)m(ord)g(blank.)95
3425 y Fe(int)47 b(fits_write_keys_str)c(/)k(ffpkns)286
3537 y(\(fitsfile)f(*fptr,)g(char)g(*keyroot,)g(int)h(nstart,)e(int)i
(nkeys,)334 3650 y(char)g(**value,)e(char)i(**comment,)e(>)i(int)g
(*status\))95 3876 y(int)g(fits_write_keys_[log,)42 b(lng])47
b(/)g(ffpkn[lj])286 3989 y(\(fitsfile)f(*fptr,)g(char)g(*keyroot,)g
(int)h(nstart,)e(int)i(nkeys,)334 4102 y(DTYPE)f(*numval,)g(char)h
(**comment,)e(int)i(*status\))95 4328 y(int)g(fits_write_keys_[flt,)42
b(dbl,)47 b(fixflg,)f(fixdbl])g(/)h(ffpkne[edfg])286
4441 y(\(fitsfile)f(*fptr,)g(char)g(*keyroot,)g(int)h(nstart,)e(int)i
(nkey,)334 4554 y(DTYPE)f(*numval,)g(int)h(decimals,)e(char)i
(**comment,)e(>)i(int)g(*status\))0 4795 y Fi(4)81 b
Fj(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 4908 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 5021 y(input)29
b(HDU)i(\(b)m(y)g(giving)f(k)m(eyro)s(ot)h(=)g(`TLMIN')g(and)f(inn)m
(um)e(=)i(3\))i(and)e(write)g(it)g(to)h(the)g(output)f(HDU)227
5134 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 5247 y(exist,)31 b(then)f(this)f(routine)g
(simply)f(returns)h(without)h(indicating)e(an)i(error.)95
5488 y Fe(int)47 b(fits_copy_key)e(/)i(ffcpky)286 5601
y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(innum,)f(int)h
(outnum,)334 5714 y(char)g(*keyroot,)e(>)i(int)g(*status\))p
eop
%%Page: 90 98
90 97 bop 0 299 a Fj(90)1003 b Fh(CHAPTER)30 b(9.)112
b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
555 y Fi(5)81 b Fj(W)-8 b(rite)29 b(\(app)s(end\))g(a)h(`triple)d
(precision')h(k)m(eyw)m(ord)i(in)m(to)f(the)h(CHU)f(in)f(F28.16)k
(format.)41 b(The)29 b(\015oating)g(p)s(oin)m(t)227 668
y(k)m(eyw)m(ord)h(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 781 y(precision)33
b(fraction)g(v)-5 b(alue)34 b(\(whic)m(h)f(m)m(ust)h(ha)m(v)m(e)i(a)e
(v)-5 b(alue)34 b(b)s(et)m(w)m(een)g(0.0)i(and)d(1.0\).)53
b(The)34 b(\013gkyt)h(routine)227 894 y(should)c(b)s(e)i(used)f(to)i
(read)f(this)f(k)m(eyw)m(ord)i(v)-5 b(alue,)34 b(b)s(ecause)f(the)g
(other)h(k)m(eyw)m(ord)f(reading)g(routines)f(will)227
1007 y(not)f(preserv)m(e)f(the)h(full)d(precision)h(of)h(the)h(v)-5
b(alue.)95 1268 y Fe(int)47 b(fits_write_key_triple)42
b(/)48 b(ffpkyt)286 1380 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g
(long)g(intval,)g(double)g(frac,)334 1493 y(char)h(*comment,)e(>)i(int)
g(*status\))0 1754 y Fi(6)81 b Fj(W)-8 b(rite)36 b(k)m(eyw)m(ords)g(to)
h(the)f(CHDU)g(that)h(are)f(de\014ned)f(in)g(an)h(ASCI)s(I)e(template)i
(\014le.)57 b(The)35 b(format)i(of)f(the)227 1867 y(template)31
b(\014le)f(is)f(describ)s(ed)f(under)h(the)i(\014ts)p
1788 1867 28 4 v 32 w(parse)p 2028 1867 V 33 w(template)f(routine.)95
2128 y Fe(int)47 b(fits_write_key_template)42 b(/)47
b(ffpktp)286 2241 y(\(fitsfile)f(*fptr,)g(const)g(char)h(*filename,)e
(>)i(int)g(*status\))0 2532 y Fd(9.3.4)112 b(Insert)38
b(Keyw)m(ord)f(Routines)0 2752 y Fj(These)42 b(insert)g(routines)f(are)
i(somewhat)g(less)e(e\016cien)m(t)i(than)g(the)f(`up)s(date')g(or)h
(`write')f(k)m(eyw)m(ord)h(routines)0 2864 y(b)s(ecause)30
b(the)g(follo)m(wing)f(k)m(eyw)m(ords)h(in)f(the)h(header)g(m)m(ust)g
(b)s(e)f(shifted)g(do)m(wn)g(to)i(mak)m(e)g(ro)s(om)f(for)g(the)g
(inserted)0 2977 y(k)m(eyw)m(ord.)41 b(See)31 b(App)s(endix)c(B)k(for)f
(the)h(de\014nition)d(of)i(the)h(parameters)g(used)e(in)g(these)i
(routines.)0 3238 y Fi(1)81 b Fj(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 3351
y(the)31 b(\(k)m(eyn)m(um\)th)g(k)m(eyw)m(ord)g(in)e(the)h(header.\))95
3612 y Fe(int)47 b(fits_insert_record)c(/)48 b(ffirec)286
3725 y(\(fitsfile)e(*fptr,)g(int)h(keynum,)e(char)i(*card,)f(>)i(int)f
(*status\))0 3985 y Fi(2)81 b Fj(Insert)24 b(a)h(new)g(k)m(eyw)m(ord)g
(in)m(to)g(the)g(CHU.)g(The)g(new)f(k)m(eyw)m(ord)i(is)e(inserted)f
(immediately)h(follo)m(wing)f(the)i(last)227 4098 y(k)m(eyw)m(ord)i
(that)f(has)f(b)s(een)h(read)f(from)h(the)g(header.)39
b(The)25 b(`longstr')h(v)m(ersion)f(has)g(the)h(same)g(functionalit)m
(y)227 4211 y(as)33 b(the)g(`str')f(v)m(ersion)g(except)i(that)f(it)f
(also)g(supp)s(orts)f(the)h(lo)s(cal)g(long)g(string)g(k)m(eyw)m(ord)h
(con)m(v)m(en)m(tion)g(for)227 4324 y(strings)28 b(longer)g(than)h(68)h
(c)m(haracters.)41 b(A)29 b(n)m(ull)e(p)s(oin)m(ter)h(ma)m(y)h(b)s(e)g
(en)m(tered)g(for)g(the)g(commen)m(t)g(parameter)227
4437 y(whic)m(h)c(will)d(cause)k(the)g(commen)m(t)h(\014eld)d(to)i(b)s
(e)f(left)g(blank.)38 b(The)25 b(\015t,)h(dbl,)f(cmp,)i(and)e(dblcmp)e
(v)m(ersions)i(of)227 4550 y(this)k(routine)g(ha)m(v)m(e)i(the)e(added)
g(feature)i(that)f(if)f(the)h('decimals')f(parameter)h(is)f(negativ)m
(e,)i(then)e(the)h('G')227 4663 y(displa)m(y)e(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 4776 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
4889 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 5002 y(the)31 b(v)-5 b(alue.)95 5262 y Fe(int)47
b(fits_insert_card)d(/)j(ffikey)286 5375 y(\(fitsfile)f(*fptr,)g(char)g
(*card,)g(>)i(&status\))95 5601 y(int)f(fits_insert_key_[str,)42
b(longstr])k(/)h(ffi[kys,)f(kls])286 5714 y(\(fitsfile)g(*fptr,)g(char)
g(*keyname,)g(char)g(*value,)g(char)h(*comment,)p eop
%%Page: 91 99
91 98 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29 b(HEADER)i(KEYW)m(ORD)g
(R)m(OUTINES)1510 b Fj(91)334 555 y Fe(>)48 b(int)e(*status\))95
781 y(int)h(fits_insert_key_[log,)42 b(lng])47 b(/)g(ffiky[lj])286
894 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g(char)g
(*comment,)334 1007 y(>)i(int)e(*status\))95 1233 y(int)h
(fits_insert_key_[flt,)42 b(fixflt,)k(dbl,)h(fixdbl])f(/)h(ffiky[edfg])
286 1346 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g
(int)h(decimals,)334 1458 y(char)g(*comment,)e(>)i(int)g(*status\))95
1684 y(int)g(fits_insert_key_[cmp,)42 b(dblcmp,)k(fixcmp,)g(fixdblcmp])
f(/)i(ffik[yc,ym,fc,fm])286 1797 y(\(fitsfile)f(*fptr,)g(char)g
(*keyname,)g(DTYPE)g(*numval,)g(int)g(decimals,)334 1910
y(char)h(*comment,)e(>)i(int)g(*status\))0 2169 y Fi(3)81
b Fj(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 2282 y(k)m(eyw)m(ord)d(is)f(left)g
(blank)f(in)g(this)g(case.)95 2541 y Fe(int)47 b(fits_insert_key_null)c
(/)k(ffikyu)286 2654 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g
(*comment,)g(>)h(int)g(*status\))0 2945 y Fd(9.3.5)112
b(Read)38 b(Keyw)m(ord)g(Routines)0 3163 y Fj(Wild)29
b(card)h(c)m(haracters)i(ma)m(y)f(b)s(e)f(used)f(when)h(sp)s(ecifying)e
(the)i(name)h(of)f(the)h(k)m(eyw)m(ord)g(to)g(b)s(e)f(read.)0
3422 y Fi(1)81 b Fj(Read)43 b(a)h(k)m(eyw)m(ord)g(v)-5
b(alue)42 b(\(with)h(the)g(appropriate)g(data)h(t)m(yp)s(e\))g(and)e
(commen)m(t)j(from)e(the)g(CHU.)h(If)f(a)227 3535 y(NULL)32
b(commen)m(t)h(p)s(oin)m(ter)e(is)h(giv)m(en)g(on)g(input,)e(then)i
(the)g(commen)m(t)i(string)d(will)e(not)j(b)s(e)g(returned.)44
b(If)227 3648 y(the)32 b(v)-5 b(alue)32 b(of)g(the)g(k)m(eyw)m(ord)g
(is)f(not)i(de\014ned)d(\(i.e.,)j(the)f(v)-5 b(alue)32
b(\014eld)e(is)h(blank\))g(then)h(an)g(error)f(status)h(=)227
3761 y(V)-10 b(ALUE)p 545 3761 28 4 v 33 w(UNDEFINED)29
b(will)c(b)s(e)j(returned)e(and)h(the)h(input)e(v)-5
b(alue)27 b(will)f(not)i(b)s(e)f(c)m(hanged)h(\(except)h(that)227
3874 y(\013gkys)i(will)d(reset)j(the)f(v)-5 b(alue)30
b(to)h(a)g(n)m(ull)d(string\).)95 4133 y Fe(int)47 b(fits_read_key_str)
c(/)48 b(ffgkys)286 4246 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h
(char)g(*value,)f(char)g(*comment,)334 4359 y(int)h(*status\);)95
4585 y(NOTE:)g(after)f(calling)g(the)h(following)e(routine,)h(programs)
f(must)i(explicitly)e(free)382 4698 y(the)i(memory)f(allocated)f(for)i
('longstr')e(after)i(it)g(is)g(no)g(longer)f(needed.)95
4924 y(int)h(fits_read_key_longstr)42 b(/)48 b(ffgkls)286
5036 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h(char)g(**longstr,)e
(char)h(*comment,)620 5149 y(int)h(*status\))95 5375
y(int)g(fits_read_key_[log,)c(lng,)k(flt,)f(dbl,)h(cmp,)f(dblcmp])g(/)i
(ffgky[ljedcm])286 5488 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h
(DTYPE)f(*numval,)g(char)h(*comment,)334 5601 y(int)g(*status\))p
eop
%%Page: 92 100
92 99 bop 0 299 a Fj(92)1003 b Fh(CHAPTER)30 b(9.)112
b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
555 y Fi(2)81 b Fj(Read)36 b(a)h(sequence)f(of)h(indexed)d(k)m(eyw)m
(ord)j(v)-5 b(alues)36 b(\(e.g.,)j(NAXIS1,)g(NAXIS2,)f(...\).)59
b(The)36 b(input)e(starting)227 668 y(index)j(n)m(um)m(b)s(er)f
(\(nstart\))j(m)m(ust)f(b)s(e)f(greater)i(than)e(0.)64
b(If)37 b(the)h(v)-5 b(alue)37 b(of)h(an)m(y)h(of)f(the)g(k)m(eyw)m
(ords)g(is)f(not)227 781 y(de\014ned)d(\(i.e.,)i(the)f(v)-5
b(alue)34 b(\014eld)f(is)h(blank\))g(then)g(an)g(error)h(status)g(=)f
(V)-10 b(ALUE)p 3009 781 28 4 v 33 w(UNDEFINED)36 b(will)c(b)s(e)227
894 y(returned)21 b(and)h(the)h(input)d(v)-5 b(alue)22
b(for)g(the)g(unde\014ned)e(k)m(eyw)m(ord\(s\))k(will)19
b(not)k(b)s(e)e(c)m(hanged.)39 b(These)22 b(routines)227
1007 y(do)j(not)h(supp)s(ort)d(wild)g(card)i(c)m(haracters)i(in)d(the)i
(ro)s(ot)f(name.)39 b(If)25 b(there)h(are)f(no)g(indexed)f(k)m(eyw)m
(ords)i(in)e(the)227 1120 y(header)35 b(with)e(the)i(input)d(ro)s(ot)j
(name)g(then)f(these)h(routines)f(do)g(not)h(return)e(a)i(non-zero)h
(status)e(v)-5 b(alue)227 1233 y(and)30 b(instead)g(simply)e(return)h
(nfound)f(=)i(0.)95 1489 y Fe(int)47 b(fits_read_keys_str)c(/)48
b(ffgkns)286 1602 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(int)h
(nstart,)e(int)i(nkeys,)334 1715 y(>)h(char)e(**value,)g(int)h
(*nfound,)93 b(int)47 b(*status\))95 1941 y(int)g(fits_read_keys_[log,)
c(lng,)j(flt,)h(dbl])g(/)g(ffgkn[ljed])286 2054 y(\(fitsfile)f(*fptr,)g
(char)g(*keyname,)g(int)h(nstart,)e(int)i(nkeys,)334
2167 y(>)h(DTYPE)e(*numval,)f(int)i(*nfound,)f(int)h(*status\))0
2423 y Fi(3)81 b Fj(Read)37 b(the)h(v)-5 b(alue)37 b(of)h(a)g
(\015oating)f(p)s(oin)m(t)g(k)m(eyw)m(ord,)j(returning)c(the)i(in)m
(teger)g(and)f(fractional)g(parts)g(of)h(the)227 2536
y(v)-5 b(alue)34 b(in)e(separate)j(routine)e(argumen)m(ts.)52
b(This)32 b(routine)h(ma)m(y)h(b)s(e)f(used)h(to)g(read)g(an)m(y)g(k)m
(eyw)m(ord)h(but)e(is)227 2649 y(esp)s(ecially)c(useful)f(for)j
(reading)e(the)i('triple)e(precision')f(k)m(eyw)m(ords)j(written)f(b)m
(y)g(\013pkyt.)95 2906 y Fe(int)47 b(fits_read_key_triple)c(/)k(ffgkyt)
286 3019 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(>)h(long)g
(*intval,)e(double)h(*frac,)334 3132 y(char)h(*comment,)e(int)i
(*status\))0 3422 y Fd(9.3.6)112 b(Mo)s(dify)38 b(Keyw)m(ord)f
(Routines)0 3641 y Fj(These)31 b(routines)g(mo)s(dify)f(the)i(v)-5
b(alue)31 b(of)h(an)g(existing)e(k)m(eyw)m(ord.)46 b(An)31
b(error)g(is)g(returned)f(if)h(the)h(k)m(eyw)m(ord)g(do)s(es)0
3753 y(not)43 b(exist.)76 b(Wild)41 b(card)i(c)m(haracters)h(ma)m(y)f
(b)s(e)f(used)f(when)h(sp)s(ecifying)e(the)j(name)f(of)h(the)f(k)m(eyw)
m(ord)h(to)h(b)s(e)0 3866 y(mo)s(di\014ed.)39 b(See)30
b(App)s(endix)e(B)j(for)f(the)g(de\014nition)e(of)j(the)f(parameters)h
(used)f(in)f(these)i(routines.)0 4123 y Fi(1)81 b Fj(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.)95 4380 y Fe(int)47 b(fits_modify_record)c(/)
48 b(ffmrec)286 4492 y(\(fitsfile)e(*fptr,)g(int)h(keynum,)e(char)i
(*card,)f(>)i(int)f(*status\))0 4749 y Fi(2)81 b Fj(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
4862 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.)95 5119 y Fe(int)47
b(fits_modify_card)d(/)j(ffmcrd)286 5231 y(\(fitsfile)f(*fptr,)g(char)g
(*keyname,)g(char)g(*card,)g(>)i(int)f(*status\))0 5488
y Fi(5)81 b Fj(Mo)s(dify)29 b(the)h(v)-5 b(alue)30 b(and)f(commen)m(t)i
(\014elds)e(of)h(an)g(existing)f(k)m(eyw)m(ord)i(in)e(the)h(CHU.)h(The)
e(`longstr')h(v)m(ersion)227 5601 y(has)41 b(the)h(same)f(functionalit)
m(y)f(as)h(the)h(`str')f(v)m(ersion)g(except)h(that)g(it)f(also)g(supp)
s(orts)e(the)j(lo)s(cal)e(long)227 5714 y(string)28 b(k)m(eyw)m(ord)i
(con)m(v)m(en)m(tion)g(for)f(strings)e(longer)i(than)g(68)h(c)m
(haracters.)41 b(Optionally)-8 b(,)28 b(one)h(ma)m(y)h(mo)s(dify)p
eop
%%Page: 93 101
93 100 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29 b(HEADER)i(KEYW)m(ORD)g
(R)m(OUTINES)1510 b Fj(93)227 555 y(only)27 b(the)h(v)-5
b(alue)27 b(\014eld)g(and)g(lea)m(v)m(e)i(the)f(commen)m(t)h(\014eld)d
(unc)m(hanged)i(b)m(y)g(setting)f(the)h(input)e(COMMENT)227
668 y(parameter)d(equal)g(to)g(the)g(amp)s(ersand)e(c)m(haracter)j
(\(&\))f(or)g(b)m(y)g(en)m(tering)f(a)h(n)m(ull)e(p)s(oin)m(ter)h(for)g
(the)h(commen)m(t)227 781 y(parameter.)40 b(The)24 b(\015t,)i(dbl,)f
(cmp,)g(and)g(dblcmp)d(v)m(ersions)j(of)g(this)f(routine)g(ha)m(v)m(e)i
(the)f(added)f(feature)h(that)227 894 y(if)g(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 1007
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 1120 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 1233 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.)95 1468 y Fe(int)47 b(fits_modify_key_[str,)42
b(longstr])k(/)h(ffm[kys,)f(kls])286 1581 y(\(fitsfile)g(*fptr,)g(char)
g(*keyname,)g(char)g(*value,)g(char)h(*comment,)334 1694
y(>)h(int)e(*status\);)95 1920 y(int)h(fits_modify_key_[log,)42
b(lng])47 b(/)g(ffmky[lj])286 2032 y(\(fitsfile)f(*fptr,)g(char)g
(*keyname,)g(DTYPE)g(numval,)g(char)g(*comment,)334 2145
y(>)i(int)e(*status\))95 2371 y(int)h(fits_modify_key_[flt,)42
b(dbl,)47 b(fixflt,)f(fixdbl])g(/)h(ffmky[edfg])286 2484
y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g(int)h
(decimals,)334 2597 y(char)g(*comment,)e(>)i(int)g(*status\))95
2823 y(int)g(fits_modify_key_[cmp,)42 b(dblcmp,)k(fixcmp,)g(fixdblcmp])
f(/)i(ffmk[yc,ym,fc,fm])286 2936 y(\(fitsfile)f(*fptr,)g(char)g
(*keyname,)g(DTYPE)g(*numval,)g(int)g(decimals,)334 3049
y(char)h(*comment,)e(>)i(int)g(*status\))0 3284 y Fi(6)81
b Fj(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
3397 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 3510 y(COMMENT)f(parameter)
g(equal)f(to)h(the)g(amp)s(ersand)e(c)m(haracter)k(\(&\))e(or)f(b)m(y)h
(en)m(tering)f(a)h(n)m(ull)e(p)s(oin)m(ter.)95 3745 y
Fe(int)47 b(fits_modify_key_null)c(/)k(ffmkyu)286 3858
y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*comment,)g(>)h(int)g
(*status\))0 4145 y Fd(9.3.7)112 b(Up)s(date)39 b(Keyw)m(ord)e
(Routines)0 4350 y Fi(1)81 b Fj(These)29 b(up)s(date)g(routines)g(mo)s
(dify)f(the)h(v)-5 b(alue,)30 b(and)f(optionally)f(the)i(commen)m(t)h
(\014eld,)e(of)h(the)g(k)m(eyw)m(ord)g(if)e(it)227 4462
y(already)33 b(exists,)g(otherwise)f(the)h(new)f(k)m(eyw)m(ord)h(is)e
(app)s(ended)g(to)j(the)f(header.)47 b(A)33 b(separate)g(routine)f(is)
227 4575 y(pro)m(vided)c(for)h(eac)m(h)h(k)m(eyw)m(ord)f(data)h(t)m(yp)
s(e.)41 b(The)28 b(`longstr')h(v)m(ersion)g(has)f(the)i(same)f
(functionalit)m(y)e(as)j(the)227 4688 y(`str')h(v)m(ersion)f(except)i
(that)g(it)e(also)h(supp)s(orts)d(the)j(lo)s(cal)f(long)h(string)e(k)m
(eyw)m(ord)j(con)m(v)m(en)m(tion)g(for)e(strings)227
4801 y(longer)h(than)g(68)h(c)m(haracters.)45 b(A)31
b(n)m(ull)e(p)s(oin)m(ter)i(ma)m(y)g(b)s(e)g(en)m(tered)h(for)f(the)g
(commen)m(t)i(parameter)e(whic)m(h)227 4914 y(will)f(lea)m(v)m(e)j(the)
g(commen)m(t)g(\014eld)e(unc)m(hanged)h(or)g(blank.)45
b(The)31 b(\015t,)i(dbl,)e(cmp,)i(and)e(dblcmp)f(v)m(ersions)i(of)227
5027 y(this)d(routine)g(ha)m(v)m(e)i(the)e(added)g(feature)i(that)f(if)
f(the)h('decimals')f(parameter)h(is)f(negativ)m(e,)i(then)e(the)h('G')
227 5140 y(displa)m(y)e(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 5253 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
5366 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 5479 y(the)31 b(v)-5 b(alue.)95 5714 y Fe(int)47
b(fits_update_key_[str,)42 b(longstr])k(/)h(ffu[kys,)f(kls])p
eop
%%Page: 94 102
94 101 bop 0 299 a Fj(94)1003 b Fh(CHAPTER)30 b(9.)112
b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)286
555 y Fe(\(fitsfile)46 b(*fptr,)g(char)g(*keyname,)g(char)g(*value,)g
(char)h(*comment,)334 668 y(>)h(int)e(*status\))95 894
y(int)h(fits_update_key_[log,)42 b(lng])47 b(/)g(ffuky[lj])286
1007 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g(char)
g(*comment,)334 1120 y(>)i(int)e(*status\))95 1346 y(int)h
(fits_update_key_[flt,)42 b(dbl,)47 b(fixflt,)f(fixdbl])g(/)h
(ffuky[edfg])286 1458 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)
g(numval,)g(int)h(decimals,)334 1571 y(char)g(*comment,)e(>)i(int)g
(*status\))95 1797 y(int)g(fits_update_key_[cmp,)42 b(dblcmp,)k
(fixcmp,)g(fixdblcmp])f(/)i(ffuk[yc,ym,fc,fm])286 1910
y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(*numval,)g(int)g
(decimals,)334 2023 y(char)h(*comment,)e(>)i(int)g(*status\))0
2363 y Ff(9.4)135 b(De\014ne)45 b(Data)h(Scaling)g(and)e(Unde\014ned)h
(Pixel)h(P)l(arameters)0 2614 y Fj(These)37 b(routines)f(set)i(or)f(mo)
s(dify)f(the)h(in)m(ternal)f(parameters)i(used)e(b)m(y)i(CFITSIO)d(to)j
(either)f(scale)h(the)f(data)0 2727 y(or)f(to)h(represen)m(t)f
(unde\014ned)d(pixels.)56 b(Generally)35 b(CFITSIO)f(will)g(scale)i
(the)g(data)h(according)f(to)g(the)h(v)-5 b(alues)0 2840
y(of)35 b(the)f(BSCALE)g(and)g(BZER)m(O)h(\(or)g(TSCALn)d(and)i(TZER)m
(On\))g(k)m(eyw)m(ords,)i(ho)m(w)m(ev)m(er)g(these)f(routines)e(ma)m(y)
0 2953 y(b)s(e)f(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 3066 y(ra)m(w)f(unscaled)f(v)
-5 b(alues)32 b(in)f(the)h(FITS)f(\014le.)46 b(Similarly)-8
b(,)29 b(CFITSIO)i(generally)g(uses)h(the)g(v)-5 b(alue)32
b(of)g(the)h(BLANK)0 3179 y(or)40 b(TNULLn)f(k)m(eyw)m(ord)h(to)h
(signify)c(an)j(unde\014ned)e(pixel,)j(but)e(these)h(routines)f(ma)m(y)
h(b)s(e)f(used)g(to)i(o)m(v)m(erride)0 3292 y(this)31
b(v)-5 b(alue.)47 b(These)32 b(routines)f(do)i(not)f(create)i(or)f(mo)s
(dify)d(the)j(corresp)s(onding)d(header)j(k)m(eyw)m(ord)f(v)-5
b(alues.)47 b(See)0 3405 y(App)s(endix)28 b(B)i(for)h(the)f
(de\014nition)e(of)j(the)f(parameters)h(used)e(in)h(these)g(routines.)0
3669 y Fi(1)81 b Fj(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 3782 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 3895 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
4008 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 4121 y(is)i(used)f(when)h
(writing)e(data)j(v)-5 b(alues)30 b(to)h(the)f(FITS)g(\014le.)95
4386 y Fe(int)47 b(fits_set_bscale)d(/)j(ffpscl)286 4499
y(\(fitsfile)f(*fptr,)g(double)g(scale,)g(double)g(zero,)g(>)i(int)f
(*status\))0 4764 y Fi(2)81 b Fj(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 4877 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 4990 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)227
5103 y(=)25 b(\(the)i(v)-5 b(alue)25 b(giv)m(en)g(in)f(the)i(FITS)f
(arra)m(y\))h(*)g(TSCAL)e(+)i(TZER)m(O.)e(The)h(in)m(v)m(erse)h(form)m
(ula)f(is)f(used)h(when)227 5216 y(writing)k(data)i(v)-5
b(alues)29 b(to)j(the)e(FITS)g(\014le.)95 5480 y Fe(int)47
b(fits_set_tscale)d(/)j(fftscl)286 5593 y(\(fitsfile)f(*fptr,)g(int)h
(colnum,)e(double)i(scale,)f(double)g(zero,)334 5706
y(>)i(int)e(*status\))p eop
%%Page: 95 103
95 102 bop 0 299 a Fh(9.5.)72 b(SPECIALIZED)29 b(FITS)g(PRIMAR)-8
b(Y)31 b(ARRA)-8 b(Y)32 b(OR)d(IMA)m(GE)j(EXTENSION)d(I/O)h(R)m
(OUTINES)125 b Fj(95)0 555 y Fi(3)81 b Fj(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
668 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 781 y(v)-5 b(alue)30 b(of)h(the)f(BLANK)h(k)m(eyw)m
(ord)g(in)e(the)h(header.)95 1038 y Fe(int)47 b(fits_set_imgnull)d(/)j
(ffpnul)286 1150 y(\(fitsfile)f(*fptr,)g(long)g(nulval,)g(>)i(int)f
(*status\))0 1407 y Fi(4)81 b Fj(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 1520 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.)95 1777 y Fe(int)47
b(fits_set_atblnull)c(/)48 b(ffsnul)286 1889 y(\(fitsfile)e(*fptr,)g
(int)h(colnum,)e(char)i(*nulstr,)f(>)h(int)g(*status\))0
2146 y Fi(5)81 b Fj(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 2259
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 2372 y(k)m(eyw)m(ord.)95 2628
y Fe(int)47 b(fits_set_btblnull)c(/)48 b(fftnul)286 2741
y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(long)i(nulval,)f(>)h(int)g
(*status\))0 3074 y Ff(9.5)135 b(Sp)t(ecialized)61 b(FITS)e(Primary)i
(Arra)l(y)f(or)h(IMA)l(GE)e(Extension)j(I/O)306 3224
y(Routines)0 3474 y Fj(These)27 b(routines)g(read)g(or)h(write)f(data)h
(v)-5 b(alues)27 b(in)g(the)g(primary)f(data)i(arra)m(y)h(\(i.e.,)f
(the)g(\014rst)f(HDU)i(in)d(the)i(FITS)0 3587 y(\014le\))36
b(or)h(an)f(IMA)m(GE)h(extension.)59 b(Automatic)38 b(data)f(t)m(yp)s
(e)g(con)m(v)m(ersion)f(is)g(p)s(erformed)f(for)h(if)g(the)h(data)g(t)m
(yp)s(e)0 3700 y(of)c(the)g(FITS)f(arra)m(y)h(\(as)g(de\014ned)f(b)m(y)
g(the)h(BITPIX)g(k)m(eyw)m(ord\))g(di\013ers)f(from)g(the)h(data)g(t)m
(yp)s(e)g(of)g(the)g(arra)m(y)g(in)0 3813 y(the)c(calling)f(routine.)39
b(The)28 b(data)i(v)-5 b(alues)28 b(are)i(automatically)f(scaled)f(b)m
(y)h(the)h(BSCALE)e(and)g(BZER)m(O)h(header)0 3926 y(v)-5
b(alues)24 b(as)i(they)f(are)g(b)s(eing)f(written)g(or)h(read)f(from)h
(the)g(FITS)f(arra)m(y)-8 b(.)40 b(Unlik)m(e)24 b(the)h(basic)g
(routines)e(describ)s(ed)g(in)0 4039 y(the)31 b(previous)f(c)m(hapter,)
j(most)e(of)h(these)g(routines)e(sp)s(eci\014cally)f(supp)s(ort)g(the)j
(FITS)e(random)h(groups)f(format.)0 4152 y(See)h(App)s(endix)c(B)k(for)
f(the)h(de\014nition)d(of)i(the)h(parameters)g(used)e(in)g(these)i
(routines.)0 4312 y(The)24 b(more)h(primitiv)m(e)e(reading)h(and)g
(writing)f(routines)g(\(i.)39 b(e.,)26 b(\013ppr)p 2364
4312 28 4 v 32 w(,)g(\013ppn)p 2653 4312 V 31 w(,)g(\013ppn,)f(\013gp)m
(v)p 3185 4312 V 33 w(,)h(or)f(\013gpf)p 3552 4312 V
32 w(\))g(simply)0 4425 y(treat)g(the)g(primary)d(arra)m(y)j(as)f(a)h
(long)f(1-dimensional)e(arra)m(y)j(of)f(pixels,)g(ignoring)f(the)h(in)m
(trinsic)e(dimensionalit)m(y)0 4538 y(of)30 b(the)g(arra)m(y)-8
b(.)42 b(When)30 b(dealing)f(with)f(a)j(2D)g(image,)f(for)g(example,)g
(the)g(application)f(program)h(m)m(ust)g(calculate)0
4650 y(the)i(pixel)e(o\013set)i(in)e(the)i(1-D)h(arra)m(y)f(that)g
(corresp)s(onds)e(to)i(an)m(y)g(particular)e(X,)i(Y)f(co)s(ordinate)h
(in)e(the)h(image.)0 4763 y(C)25 b(programmers)h(should)e(note)i(that)g
(the)h(ordering)d(of)i(arra)m(ys)g(in)f(FITS)g(\014les,)h(and)f(hence)h
(in)f(all)f(the)i(CFITSIO)0 4876 y(calls,)38 b(is)e(more)h(similar)e
(to)i(the)h(dimensionalit)m(y)c(of)j(arra)m(ys)g(in)f(F)-8
b(ortran)38 b(rather)f(than)f(C.)h(F)-8 b(or)38 b(instance)f(if)f(a)0
4989 y(FITS)28 b(image)h(has)f(NAXIS1)h(=)f(100)i(and)e(NAXIS2)h(=)f
(50,)i(then)e(a)h(2-D)h(arra)m(y)f(just)f(large)h(enough)f(to)i(hold)d
(the)0 5102 y(image)k(should)d(b)s(e)i(declared)g(as)g(arra)m
(y[50][100])k(and)c(not)h(as)f(arra)m(y[100][50].)0 5262
y(F)-8 b(or)36 b(con)m(v)m(enience,)h(higher-lev)m(el)d(routines)g(are)
h(also)g(pro)m(vided)f(to)h(sp)s(eci\014cly)e(deal)i(with)f(2D)h
(images)g(\(\013p2d)p 3872 5262 V 0 5375 a(and)26 b(\013g2d)p
372 5375 V 33 w(\))h(and)f(3D)i(data)f(cub)s(es)f(\(\013p3d)p
1467 5375 V 59 w(and)g(\013g3d)p 1893 5375 V 33 w(\).)40
b(The)26 b(dimensionalit)m(y)e(of)j(the)g(FITS)f(image)h(is)e(passed)0
5488 y(b)m(y)36 b(the)h(naxis1,)g(naxis2,)h(and)e(naxis3)g(parameters)g
(and)g(the)h(declared)e(dimensions)f(of)j(the)f(program)g(arra)m(y)0
5601 y(are)30 b(passed)g(in)e(the)i(dim1)f(and)g(dim2)g(parameters.)41
b(Note)31 b(that)f(the)g(dimensions)d(of)j(the)g(program)g(arra)m(y)g
(ma)m(y)0 5714 y(b)s(e)35 b(larger)g(than)g(the)h(dimensions)d(of)j
(the)g(FITS)e(arra)m(y)-8 b(.)58 b(F)-8 b(or)36 b(example)f(if)g(a)h
(FITS)e(image)i(with)e(NAXIS1)i(=)p eop
%%Page: 96 104
96 103 bop 0 299 a Fj(96)1003 b Fh(CHAPTER)30 b(9.)112
b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
555 y Fj(NAXIS2)36 b(=)g(400)h(is)e(read)h(in)m(to)g(a)h(program)f
(arra)m(y)g(whic)m(h)f(is)g(dimensioned)e(as)k(512)g(x)f(512)h(pixels,)
f(then)g(the)0 668 y(image)f(will)d(just)i(\014ll)e(the)j(lo)m(w)m(er)g
(left)f(corner)g(of)h(the)g(arra)m(y)g(with)e(pixels)g(in)g(the)i
(range)g(1)g(-)g(400)g(in)f(the)g(X)h(an)0 781 y(Y)g(directions.)52
b(This)33 b(has)i(the)g(e\013ect)h(of)f(taking)f(a)i(con)m(tiguous)e
(set)i(of)f(pixel)e(v)-5 b(alue)34 b(in)f(the)i(FITS)f(arra)m(y)i(and)0
894 y(writing)28 b(them)i(to)h(a)f(non-con)m(tiguous)g(arra)m(y)h(in)d
(program)i(memory)g(\(i.e.,)h(there)f(are)h(no)m(w)f(some)g(blank)f
(pixels)0 1007 y(around)g(the)i(edge)g(of)g(the)f(image)h(in)e(the)h
(program)g(arra)m(y\).)0 1167 y(The)k(most)i(general)e(set)i(of)f
(routines)e(\(\013pss)p 1560 1167 28 4 v 33 w(,)j(\013gsv)p
1836 1167 V 33 w(,)g(and)e(\013gsf)p 2273 1167 V 33 w(\))h(ma)m(y)h(b)s
(e)e(used)g(to)h(transfer)g(a)g(rectangular)0 1280 y(subset)27
b(of)h(the)g(pixels)d(in)i(a)h(FITS)f(N-dimensional)e(image)j(to)g(or)g
(from)f(an)g(arra)m(y)i(whic)m(h)d(has)h(b)s(een)g(declared)g(in)0
1393 y(the)i(calling)e(program.)40 b(The)28 b(fpixel)f(and)h(lpixel)e
(parameters)j(are)g(in)m(teger)g(arra)m(ys)g(whic)m(h)e(sp)s(ecify)g
(the)i(starting)0 1506 y(and)k(ending)e(pixel)h(co)s(ordinate)h(in)f
(eac)m(h)i(dimension)d(\(starting)i(with)f(1,)i(not)g(0\))g(of)f(the)g
(FITS)g(image)g(that)h(is)0 1619 y(to)f(b)s(e)e(read)g(or)h(written.)44
b(It)32 b(is)f(imp)s(ortan)m(t)g(to)i(note)f(that)h(these)f(are)g(the)g
(starting)g(and)f(ending)f(pixels)g(in)h(the)0 1732 y(FITS)j(image,)j
(not)e(in)e(the)i(declared)g(arra)m(y)g(in)e(the)i(program.)54
b(The)35 b(arra)m(y)g(parameter)g(in)f(these)h(routines)f(is)0
1844 y(treated)g(simply)c(as)j(a)f(large)h(one-dimensional)e(arra)m(y)i
(of)f(the)h(appropriate)f(data)h(t)m(yp)s(e)g(con)m(taining)f(the)h
(pixel)0 1957 y(v)-5 b(alues;)36 b(The)e(pixel)f(v)-5
b(alues)34 b(in)g(the)g(FITS)g(arra)m(y)h(are)g(read/written)f(from/to)
i(this)d(program)i(arra)m(y)g(in)e(strict)0 2070 y(sequence)e(without)e
(an)m(y)i(gaps;)g(it)f(is)f(up)g(to)j(the)e(calling)f(routine)g(to)j
(correctly)e(in)m(terpret)g(the)h(dimensionalit)m(y)0
2183 y(of)d(this)e(arra)m(y)-8 b(.)41 b(The)27 b(t)m(w)m(o)i(FITS)e
(reading)g(routines)f(\(\013gsv)p 2018 2183 V 61 w(and)h(\013gsf)p
2415 2183 V 61 w(\))h(also)f(ha)m(v)m(e)i(an)f(`inc')f(parameter)h
(whic)m(h)0 2296 y(de\014nes)33 b(the)h(data)h(sampling)d(in)m(terv)-5
b(al)34 b(in)e(eac)m(h)k(dimension)31 b(of)j(the)h(FITS)e(arra)m(y)-8
b(.)53 b(F)-8 b(or)35 b(example,)g(if)e(inc[0]=2)0 2409
y(and)j(inc[1]=3)i(when)e(reading)g(a)h(2-dimensional)e(FITS)h(image,)k
(then)c(only)g(ev)m(ery)i(other)f(pixel)f(in)f(the)j(\014rst)0
2522 y(dimension)28 b(and)i(ev)m(ery)h(3rd)f(pixel)e(in)h(the)i(second)
f(dimension)e(will)g(b)s(e)i(returned)f(to)i(the)f('arra)m(y')i
(parameter.)0 2682 y(Tw)m(o)d(t)m(yp)s(es)h(of)f(routines)f(are)i(pro)m
(vided)d(to)j(read)f(the)h(data)g(arra)m(y)f(whic)m(h)f(di\013er)g(in)g
(the)i(w)m(a)m(y)g(unde\014ned)d(pixels)0 2795 y(are)38
b(handled.)59 b(The)37 b(\014rst)g(t)m(yp)s(e)g(of)g(routines)g
(\(e.g.,)j(\013gp)m(v)p 2059 2795 V 34 w(\))d(simply)e(return)h(an)h
(arra)m(y)h(of)g(data)g(elemen)m(ts)f(in)0 2908 y(whic)m(h)29
b(unde\014ned)g(pixels)f(are)j(set)g(equal)f(to)i(a)f(v)-5
b(alue)30 b(sp)s(eci\014ed)e(b)m(y)j(the)g(user)e(in)h(the)g(`n)m(ulv)
-5 b(al')30 b(parameter.)41 b(An)0 3021 y(additional)27
b(feature)i(of)g(these)h(routines)d(is)h(that)i(if)e(the)h(user)f(sets)
h(n)m(ulv)-5 b(al)27 b(=)i(0,)h(then)e(no)h(c)m(hec)m(ks)h(for)f
(unde\014ned)0 3134 y(pixels)23 b(will)f(b)s(e)j(p)s(erformed,)f(th)m
(us)h(reducing)e(the)i(amoun)m(t)h(of)f(CPU)f(pro)s(cessing.)38
b(The)24 b(second)h(t)m(yp)s(e)g(of)g(routines)0 3247
y(\(e.g.,)36 b(\013gpf)p 413 3247 V 32 w(\))e(returns)e(the)i(data)g
(elemen)m(t)f(arra)m(y)h(and,)g(in)e(addition,)g(a)i(c)m(har)g(arra)m
(y)f(that)h(indicates)f(whether)0 3360 y(the)h(v)-5 b(alue)33
b(of)h(the)f(corresp)s(onding)f(data)i(pixel)e(is)h(unde\014ned)e(\(=)j
(1\))g(or)g(de\014ned)e(\(=)i(0\).)51 b(The)33 b(latter)h(t)m(yp)s(e)g
(of)0 3472 y(routines)c(ma)m(y)i(b)s(e)e(more)i(con)m(v)m(enien)m(t)g
(to)g(use)f(in)f(some)h(circumstances,)h(ho)m(w)m(ev)m(er,)h(it)d
(requires)g(an)h(additional)0 3585 y(arra)m(y)g(of)f(logical)g(v)-5
b(alues)30 b(whic)m(h)f(can)i(b)s(e)e(un)m(wieldy)f(when)i(w)m(orking)f
(with)g(large)i(data)g(arra)m(ys.)0 3859 y Fi(1)81 b
Fj(W)-8 b(rite)30 b(elemen)m(ts)h(in)m(to)f(the)h(FITS)f(data)h(arra)m
(y)-8 b(.)95 4133 y Fe(int)47 b(fits_write_img)d(/)k(ffppr)286
4246 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(long)i(firstelem,)e
(long)h(nelements,)334 4359 y(DTYPE)g(*array,)g(int)h(*status\);)95
4585 y(int)g(fits_write_img_[byt,)c(sht,)j(usht,)h(int,)f(uint,)h(lng,)
f(ulng,)h(lnglng,)e(flt,)i(dbl])g(/)286 4698 y
(ffppr[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286 4811 y(\(fitsfile)f(*fptr,)g
(long)g(group,)g(long)h(firstelem,)e(long)i(nelements,)334
4924 y(DTYPE)f(*array,)g(>)i(int)f(*status\);)95 5149
y(int)g(fits_write_imgnull)c(/)48 b(ffppn)286 5262 y(\(fitsfile)e
(*fptr,)g(int)h(datatype,)e(long)i(firstelem,)e(long)h(nelements,)334
5375 y(DTYPE)g(*array,)g(DTYPE)h(*nulval,)e(>)j(int)f(*status\);)95
5601 y(int)g(fits_write_imgnull_[byt,)42 b(sht,)k(usht,)h(int,)f(uint,)
h(lng,)f(ulng,)h(lnglng,)e(flt,)i(dbl])g(/)286 5714 y
(ffppn[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])p eop
%%Page: 97 105
97 104 bop 0 299 a Fh(9.5.)72 b(SPECIALIZED)29 b(FITS)g(PRIMAR)-8
b(Y)31 b(ARRA)-8 b(Y)32 b(OR)d(IMA)m(GE)j(EXTENSION)d(I/O)h(R)m
(OUTINES)125 b Fj(97)286 555 y Fe(\(fitsfile)46 b(*fptr,)g(long)g
(group,)g(long)h(firstelem,)525 668 y(long)g(nelements,)e(DTYPE)h
(*array,)g(DTYPE)g(nulval,)g(>)h(int)g(*status\);)0 924
y Fi(2)81 b Fj(Set)30 b(data)h(arra)m(y)g(elemen)m(ts)g(as)f
(unde\014ned.)95 1180 y Fe(int)47 b(fits_write_img_null)c(/)k(ffppru)
286 1293 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(long)h(firstelem,)e
(long)i(nelements,)334 1406 y(>)h(int)e(*status\))0 1662
y Fi(3)81 b Fj(W)-8 b(rite)31 b(v)-5 b(alues)29 b(in)m(to)i(group)f
(parameters.)42 b(This)29 b(routine)g(only)h(applies)f(to)i(the)g
(`Random)f(Group)s(ed')g(FITS)227 1775 y(format)22 b(whic)m(h)e(has)h
(b)s(een)f(used)h(for)g(applications)e(in)h(radio)h(in)m(terferometry)
-8 b(,)24 b(but)c(is)g(o\016cially)g(deprecated)227 1888
y(for)30 b(future)g(use.)95 2144 y Fe(int)47 b(fits_write_grppar_[byt,)
42 b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f(ulng,)h(lnglng,)f(flt,)g
(dbl])h(/)286 2257 y(ffpgp[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286
2370 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(long)h(firstelem,)e(long)i
(nelements,)334 2483 y(>)h(DTYPE)e(*array,)g(int)h(*status\))0
2739 y Fi(4)81 b Fj(W)-8 b(rite)30 b(a)h(2-D)h(or)e(3-D)h(image)g(in)m
(to)f(the)h(data)g(arra)m(y)-8 b(.)95 2996 y Fe(int)47
b(fits_write_2d_[byt,)c(sht,)k(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f
(lnglng,)g(flt,)g(dbl])h(/)286 3108 y(ffp2d[b,i,ui,k,uk,j,uj,jj,)o(e,d)
o(])286 3221 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(long)h(dim1,)f
(long)h(naxis1,)334 3334 y(long)g(naxis2,)f(DTYPE)g(*array,)g(>)h(int)g
(*status\))95 3560 y(int)g(fits_write_3d_[byt,)c(sht,)k(usht,)f(int,)h
(uint,)f(lng,)h(ulng,)f(lnglng,)g(flt,)g(dbl])h(/)286
3673 y(ffp3d[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286 3786
y(\(fitsfile)f(*fptr,)g(long)g(group,)g(long)h(dim1,)f(long)h(dim2,)334
3899 y(long)g(naxis1,)f(long)g(naxis2,)g(long)h(naxis3,)e(DTYPE)i
(*array,)f(>)h(int)g(*status\))0 4155 y Fi(5)81 b Fj(W)-8
b(rite)30 b(an)h(arbitrary)e(data)i(subsection)e(in)m(to)i(the)f(data)h
(arra)m(y)-8 b(.)95 4411 y Fe(int)47 b(fits_write_subset_[byt,)42
b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f(ulng,)h(lnglng,)f(flt,)g(dbl])h
(/)286 4524 y(ffpss[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286
4637 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(long)h(naxis,)f(long)h
(*naxes,)334 4750 y(long)g(*fpixel,)e(long)i(*lpixel,)e(DTYPE)i
(*array,)f(>)h(int)g(*status\))0 5006 y Fi(6)81 b Fj(Read)30
b(elemen)m(ts)h(from)f(the)g(FITS)g(data)h(arra)m(y)-8
b(.)95 5262 y Fe(int)47 b(fits_read_img)e(/)i(ffgpv)286
5375 y(\(fitsfile)f(*fptr,)g(int)94 b(datatype,)46 b(long)g(firstelem,)
f(long)i(nelements,)334 5488 y(DTYPE)f(*nulval,)g(>)h(DTYPE)g(*array,)f
(int)h(*anynul,)e(int)i(*status\))95 5714 y(int)g(fits_read_img_[byt,)c
(sht,)k(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(flt,)g(dbl])h
(/)p eop
%%Page: 98 106
98 105 bop 0 299 a Fj(98)1003 b Fh(CHAPTER)30 b(9.)112
b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)286
555 y Fe(ffgpv[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286 668
y(\(fitsfile)46 b(*fptr,)g(long)g(group,)g(long)h(firstelem,)e(long)i
(nelements,)334 781 y(DTYPE)f(nulval,)g(>)i(DTYPE)e(*array,)g(int)h
(*anynul,)e(int)i(*status\))95 1007 y(int)g(fits_read_imgnull)c(/)48
b(ffgpf)286 1120 y(\(fitsfile)e(*fptr,)g(int)94 b(datatype,)46
b(long)g(firstelem,)f(long)i(nelements,)334 1233 y(>)h(DTYPE)e(*array,)
g(char)g(*nullarray,)f(int)i(*anynul,)f(int)g(*status\))95
1458 y(int)95 b(fits_read_imgnull_[byt,)42 b(sht,)k(usht,)h(int,)f
(uint,)h(lng,)f(ulng,)h(flt,)f(dbl])h(/)334 1571 y
(ffgpf[b,i,ui,k,uk,j,uj,jj)o(,e,)o(d])334 1684 y(\(fitsfile)e(*fptr,)h
(long)h(group,)f(long)h(firstelem,)e(long)h(nelements,)334
1797 y(>)i(DTYPE)e(*array,)g(char)g(*nullarray,)f(int)i(*anynul,)f(int)
g(*status\))0 2055 y Fi(7)81 b Fj(Read)29 b(v)-5 b(alues)30
b(from)f(group)g(parameters.)41 b(This)28 b(routine)g(only)h(applies)f
(to)j(the)e(`Random)h(Group)s(ed')f(FITS)227 2168 y(format)22
b(whic)m(h)e(has)h(b)s(een)f(used)h(for)g(applications)e(in)h(radio)h
(in)m(terferometry)-8 b(,)24 b(but)c(is)g(o\016cially)g(deprecated)227
2281 y(for)30 b(future)g(use.)95 2538 y Fe(int)95 b
(fits_read_grppar_[byt,)42 b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f
(ulng,)h(lnglng,)f(flt,)g(dbl])h(/)334 2651 y
(ffggp[b,i,ui,k,uk,j,uj,jj)o(,e,)o(d])334 2764 y(\(fitsfile)e(*fptr,)h
(long)h(group,)f(long)h(firstelem,)e(long)h(nelements,)334
2877 y(>)i(DTYPE)e(*array,)g(int)h(*status\))0 3135 y
Fi(8)81 b Fj(Read)37 b(2-D)h(or)g(3-D)g(image)f(from)g(the)g(data)h
(arra)m(y)-8 b(.)62 b(Unde\014ned)36 b(pixels)g(in)f(the)j(arra)m(y)g
(will)c(b)s(e)j(set)g(equal)227 3247 y(to)32 b(the)g(v)-5
b(alue)30 b(of)i('n)m(ulv)-5 b(al',)30 b(unless)g(n)m(ulv)-5
b(al=0)29 b(in)h(whic)m(h)g(case)i(no)f(testing)h(for)f(unde\014ned)e
(pixels)g(will)g(b)s(e)227 3360 y(p)s(erformed.)95 3618
y Fe(int)95 b(fits_read_2d_[byt,)43 b(sht,)k(usht,)f(int,)h(uint,)f
(lng,)h(ulng,)f(lnglng,)g(flt,)g(dbl])h(/)334 3731 y
(ffg2d[b,i,ui,k,uk,j,uj,jj)o(,e,)o(d])334 3844 y(\(fitsfile)e(*fptr,)h
(long)h(group,)f(DTYPE)h(nulval,)e(long)i(dim1,)f(long)h(naxis1,)334
3957 y(long)g(naxis2,)f(>)h(DTYPE)f(*array,)g(int)h(*anynul,)f(int)h
(*status\))95 4183 y(int)95 b(fits_read_3d_[byt,)43 b(sht,)k(usht,)f
(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(flt,)g(dbl])h(/)334
4295 y(ffg3d[b,i,ui,k,uk,j,uj,jj)o(,e,)o(d])334 4408
y(\(fitsfile)e(*fptr,)h(long)h(group,)f(DTYPE)h(nulval,)e(long)i(dim1,)
334 4521 y(long)g(dim2,)f(long)h(naxis1,)f(long)g(naxis2,)g(long)h
(naxis3,)334 4634 y(>)h(DTYPE)e(*array,)g(int)h(*anynul,)e(int)i
(*status\))0 4892 y Fi(9)81 b Fj(Read)30 b(an)g(arbitrary)g(data)h
(subsection)e(from)h(the)g(data)i(arra)m(y)-8 b(.)95
5149 y Fe(int)95 b(fits_read_subset_[byt,)42 b(sht,)k(usht,)h(int,)f
(uint,)h(lng,)f(ulng,)h(lnglng,)f(flt,)g(dbl])h(/)334
5262 y(ffgsv[b,i,ui,k,uk,j,uj,jj)o(,e,)o(d])334 5375
y(\(fitsfile)e(*fptr,)h(int)h(group,)f(int)h(naxis,)f(long)h(*naxes,)
334 5488 y(long)g(*fpixel,)e(long)i(*lpixel,)e(long)i(*inc,)f(DTYPE)h
(nulval,)334 5601 y(>)h(DTYPE)e(*array,)g(int)h(*anynul,)e(int)i
(*status\))p eop
%%Page: 99 107
99 106 bop 0 299 a Fh(9.6.)72 b(SPECIALIZED)29 b(FITS)g(ASCI)s(I)g(AND)
i(BINAR)-8 b(Y)32 b(T)-8 b(ABLE)30 b(R)m(OUTINES)978
b Fj(99)95 555 y Fe(int)95 b(fits_read_subsetnull_[byt)o(,)42
b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f(ulng,)h(lnglng,)f(flt,)g(dbl])h
(/)334 668 y(ffgsf[b,i,ui,k,uk,j,uj,jj)o(,e,)o(d])334
781 y(\(fitsfile)e(*fptr,)h(int)h(group,)f(int)h(naxis,)f(long)h
(*naxes,)334 894 y(long)g(*fpixel,)e(long)i(*lpixel,)e(long)i(*inc,)f
(>)i(DTYPE)e(*array,)334 1007 y(char)h(*nullarray,)d(int)j(*anynul,)f
(int)h(*status\))0 1338 y Ff(9.6)135 b(Sp)t(ecialized)46
b(FITS)e(ASCI)t(I)g(and)g(Binary)h(T)-11 b(able)45 b(Routines)0
1591 y Fd(9.6.1)112 b(General)38 b(Column)e(Routines)0
1797 y Fi(1)81 b Fj(Get)31 b(information)d(ab)s(out)i(an)g(existing)f
(ASCI)s(I)f(or)i(binary)e(table)i(column.)40 b(A)30 b(n)m(ull)e(p)s
(oin)m(ter)h(ma)m(y)i(b)s(e)e(giv)m(en)227 1910 y(for)40
b(an)m(y)h(of)f(the)h(output)f(parameters)g(that)h(are)g(not)f(needed.)
70 b(D)m(A)-8 b(T)g(A)g(TYPE)42 b(is)d(a)i(c)m(haracter)h(string)227
2023 y(whic)m(h)c(returns)f(the)i(data)g(t)m(yp)s(e)g(of)g(the)f
(column)g(as)h(de\014ned)e(b)m(y)i(the)f(TF)m(ORMn)h(k)m(eyw)m(ord)g
(\(e.g.,)j('I',)227 2136 y('J','E',)28 b('D',)g(etc.\).)41
b(In)27 b(the)g(case)g(of)g(an)g(ASCI)s(I)f(c)m(haracter)i(column,)f(t)
m(yp)s(eco)s(de)g(will)d(ha)m(v)m(e)k(a)f(v)-5 b(alue)27
b(of)g(the)227 2249 y(form)g('An')g(where)f('n')h(is)f(an)h(in)m(teger)
h(expressing)d(the)i(width)f(of)h(the)g(\014eld)f(in)f(c)m(haracters.)
41 b(F)-8 b(or)28 b(example,)227 2362 y(if)f(TF)m(ORM)i(=)e('160A8')k
(then)d(\013gb)s(cl)f(will)e(return)i(t)m(yp)s(ec)m(har='A8')j(and)d
(rep)s(eat=20.)41 b(All)27 b(the)h(returned)227 2475
y(parameters)j(are)g(scalar)f(quan)m(tities.)95 2716
y Fe(int)47 b(fits_get_acolparms)c(/)48 b(ffgacl)191
2829 y(\(fitsfile)d(*fptr,)h(int)h(colnum,)f(>)h(char)g(*ttype,)f(long)
h(*tbcol,)239 2942 y(char)f(*tunit,)g(char)h(*tform,)f(double)g
(*scale,)f(double)i(*zero,)239 3055 y(char)f(*nulstr,)g(char)g(*tdisp,)
g(int)h(*status\))95 3280 y(int)g(fits_get_bcolparms)c(/)48
b(ffgbcl)286 3393 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(>)j(char)f
(*ttype,)e(char)i(*tunit,)334 3506 y(char)g(*typechar,)e(long)h
(*repeat,)g(double)g(*scale,)g(double)g(*zero,)334 3619
y(long)h(*nulval,)e(char)i(*tdisp,)f(int)94 b(*status\))0
3861 y Fi(2)81 b Fj(Return)27 b(optimal)g(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)g(maxim)m(um)f
(I/O)g(e\016ciency)-8 b(.)41 b(Refer)227 3973 y(to)25
b(the)g(\\Optimizing)d(Co)s(de")i(section)h(in)e(Chapter)h(5)g(for)g
(more)h(discussion)d(on)i(ho)m(w)g(to)h(use)f(this)g(routine.)95
4328 y Fe(int)47 b(fits_get_rowsize)d(/)j(ffgrsz)286
4441 y(\(fitsfile)f(*fptr,)g(long)g(*nrows,)g(*status\))0
4682 y Fi(3)81 b Fj(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 4795 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 4908 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
5021 y(v)-5 b(ariable)23 b(length)h(arra)m(y)h(columns)e(\(with)g(TF)m
(ORMn)h(=)g('Pt'\).)40 b(This)22 b(routine)i(also)g(automatically)g
(writes)227 5134 y(the)35 b(v)-5 b(alue)34 b(of)h(theap)f(to)h(a)g(k)m
(eyw)m(ord)g(in)f(the)g(extension)g(header.)53 b(This)33
b(routine)g(m)m(ust)i(b)s(e)f(called)f(after)227 5247
y(the)e(required)d(k)m(eyw)m(ords)i(ha)m(v)m(e)i(b)s(een)d(written)g
(\(with)g(\013ph)m(bn\))g(but)h(b)s(efore)f(an)m(y)i(data)g(is)e
(written)g(to)i(the)227 5360 y(table.)95 5601 y Fe(int)47
b(fits_write_theap)d(/)j(ffpthp)286 5714 y(\(fitsfile)f(*fptr,)g(long)g
(theap,)g(>)i(int)f(*status\))p eop
%%Page: 100 108
100 107 bop 0 299 a Fj(100)958 b Fh(CHAPTER)30 b(9.)112
b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
555 y Fi(4)81 b Fj(T)-8 b(est)37 b(the)f(con)m(ten)m(ts)i(of)f(the)g
(binary)d(table)j(v)-5 b(ariable)35 b(arra)m(y)i(heap,)h(returning)d
(the)h(size)g(of)h(the)g(heap,)h(the)227 668 y(n)m(um)m(b)s(er)30
b(of)h(un)m(used)e(b)m(ytes)j(that)f(are)g(not)g(curren)m(tly)f(p)s
(oin)m(ted)g(to)i(b)m(y)e(an)m(y)i(of)f(the)g(descriptors,)f(and)g(the)
227 781 y(n)m(um)m(b)s(er)d(of)h(b)m(ytes)h(whic)m(h)e(are)h(p)s(oin)m
(ted)f(to)i(b)m(y)f(m)m(ultiple)e(descriptors.)39 b(It)28
b(also)g(returns)f(v)-5 b(alid)27 b(=)g(F)-10 b(ALSE)227
894 y(if)30 b(an)m(y)g(of)h(the)f(descriptors)g(p)s(oin)m(t)f(to)i(in)m
(v)-5 b(alid)28 b(addresses)i(out)g(of)h(range)g(of)f(the)h(heap.)95
1153 y Fe(int)47 b(fits_test_heap)d(/)k(fftheap)286 1266
y(\(fitsfile)e(*fptr,)g(>)h(long)g(*heapsize,)e(long)h(*unused,)g(long)
h(*overlap,)334 1379 y(int)g(*validheap,)e(int)i(*status\))0
1637 y Fi(5)81 b Fj(Re-pac)m(k)33 b(the)f(v)m(ectors)h(in)d(the)i
(binary)e(table)i(v)-5 b(ariable)30 b(arra)m(y)i(heap)g(to)g(reco)m(v)m
(er)i(an)m(y)e(un)m(used)e(space.)45 b(Nor-)227 1750
y(mally)-8 b(,)38 b(when)f(a)g(v)m(ector)i(in)d(a)h(v)-5
b(ariable)36 b(length)h(arra)m(y)g(column)f(is)g(rewritten)h(the)g
(previously)e(written)227 1863 y(arra)m(y)f(remains)d(in)h(the)h(heap)f
(as)h(w)m(asted)h(un)m(used)d(space.)49 b(This)31 b(routine)g(will)g
(repac)m(k)i(the)g(arra)m(ys)g(that)227 1976 y(are)h(still)d(in)h(use,)
i(th)m(us)f(eliminating)d(an)m(y)k(b)m(ytes)g(in)e(the)h(heap)g(that)h
(are)g(no)f(longer)g(in)f(use.)49 b(Note)34 b(that)227
2089 y(if)e(sev)m(eral)h(v)m(ectors)h(p)s(oin)m(t)d(to)j(the)e(same)h
(b)m(ytes)g(in)f(the)g(heap,)i(then)e(this)f(routine)h(will)e(mak)m(e)j
(duplicate)227 2202 y(copies)d(of)h(the)g(b)m(ytes)f(for)h(eac)m(h)g(v)
m(ector,)h(whic)m(h)d(will)f(actually)i(expand)g(the)g(size)h(of)f(the)
h(heap.)95 2461 y Fe(int)47 b(fits_compress_heap)c(/)48
b(ffcmph)286 2574 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*status\))0
2864 y Fd(9.6.2)112 b(Lo)m(w-Lev)m(el)38 b(T)-9 b(able)37
b(Access)g(Routines)0 3083 y Fj(The)g(follo)m(wing)g(2)h(routines)e
(pro)m(vide)h(lo)m(w-lev)m(el)h(access)h(to)g(the)f(data)g(in)f(ASCI)s
(I)f(or)i(binary)e(tables)h(and)h(are)0 3196 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 3309 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 3422 y(without)g(regard)h
(for)f(column)g(b)s(oundaries)e(or)j(the)g(ro)m(w)g(length)f(in)f(the)i
(table.)39 b(These)23 b(routines)g(do)g(not)h(p)s(erform)0
3535 y(an)m(y)36 b(mac)m(hine)g(dep)s(enden)m(t)f(data)i(con)m(v)m
(ersion)f(or)h(b)m(yte)f(sw)m(apping.)57 b(See)36 b(App)s(endix)d(B)k
(for)f(the)g(de\014nition)e(of)0 3648 y(the)d(parameters)f(used)g(in)f
(these)i(routines.)0 3906 y Fi(1)81 b Fj(Read)30 b(or)h(write)e(a)i
(consecutiv)m(e)g(arra)m(y)g(of)g(b)m(ytes)f(from)g(an)h(ASCI)s(I)d(or)
j(binary)d(table)95 4165 y Fe(int)47 b(fits_read_tblbytes)c(/)48
b(ffgtbb)286 4278 y(\(fitsfile)e(*fptr,)g(long)g(firstrow,)g(long)g
(firstchar,)f(long)i(nchars,)334 4391 y(>)h(unsigned)d(char)i(*values,)
e(int)i(*status\))95 4617 y(int)g(fits_write_tblbytes)c(/)k(ffptbb)286
4730 y(\(fitsfile)f(*fptr,)g(long)g(firstrow,)g(long)g(firstchar,)f
(long)i(nchars,)334 4843 y(unsigned)f(char)g(*values,)g(>)h(int)g
(*status\))0 5133 y Fd(9.6.3)112 b(W)-9 b(rite)36 b(Column)g(Data)i
(Routines)0 5342 y Fi(1)81 b Fj(W)-8 b(rite)27 b(elemen)m(ts)h(in)m(to)
f(an)h(ASCI)s(I)d(or)j(binary)d(table)j(column)e(\(in)g(the)i(CDU\).)g
(The)f(data)h(t)m(yp)s(e)f(of)h(the)f(arra)m(y)227 5455
y(is)j(implied)d(b)m(y)j(the)h(su\016x)e(of)i(the)f(routine)g(name.)95
5714 y Fe(int)47 b(fits_write_col_str)c(/)48 b(ffpcls)p
eop
%%Page: 101 109
101 108 bop 0 299 a Fh(9.6.)72 b(SPECIALIZED)29 b(FITS)g(ASCI)s(I)g
(AND)i(BINAR)-8 b(Y)32 b(T)-8 b(ABLE)30 b(R)m(OUTINES)933
b Fj(101)286 555 y Fe(\(fitsfile)46 b(*fptr,)g(int)h(colnum,)e(long)i
(firstrow,)e(long)i(firstelem,)334 668 y(long)g(nelements,)e(char)h
(**array,)g(>)h(int)g(*status\))95 894 y(int)g
(fits_write_col_[log,byt,sh)o(t,u)o(sht,)o(int,)o(uin)o(t,ln)o(g,ul)o
(ng,)o(lngl)o(ng,f)o(lt,)o(dbl,)o(cmp,)o(dbl)o(cmp])41
b(/)286 1007 y(ffpcl[l,b,i,ui,k,uk,j,uj,j)o(j,e)o(,d,c)o(,m])286
1120 y(\(fitsfile)46 b(*fptr,)g(int)h(colnum,)e(long)i(firstrow,)525
1233 y(long)g(firstelem,)e(long)h(nelements,)f(DTYPE)i(*array,)e(>)j
(int)f(*status\))0 1487 y Fi(2)81 b Fj(W)-8 b(rite)35
b(elemen)m(ts)h(in)m(to)g(an)f(ASCI)s(I)f(or)i(binary)d(table)j(column)
e(substituting)f(the)j(appropriate)e(FITS)h(n)m(ull)227
1600 y(v)-5 b(alue)37 b(for)h(an)m(y)g(elemen)m(ts)g(that)g(are)g
(equal)f(to)i(the)f(n)m(ulv)-5 b(al)36 b(parameter.)63
b(This)36 b(routines)g(m)m(ust)i(not)g(b)s(e)227 1713
y(used)30 b(to)h(write)f(to)h(v)-5 b(ariable)29 b(length)h(arra)m(y)g
(columns.)95 1967 y Fe(int)47 b(fits_write_colnull_[log,)42
b(byt,)k(sht,)h(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(flt,)h
(dbl])f(/)286 2080 y(ffpcn[l,b,i,ui,k,uk,j,uj,j)o(j,e)o(,d])286
2193 y(\(fitsfile)g(*fptr,)g(int)h(colnum,)e(long)i(firstrow,)e(long)i
(firstelem,)334 2306 y(long)g(nelements,)e(DTYPE)h(*array,)g(DTYPE)g
(nulval,)g(>)i(int)e(*status\))0 2560 y Fi(3)81 b Fj(W)-8
b(rite)26 b(string)g(elemen)m(ts)h(in)m(to)f(a)h(binary)e(table)h
(column)f(\(in)h(the)g(CDU\))i(substituting)c(the)i(FITS)g(n)m(ull)e(v)
-5 b(alue)227 2673 y(for)28 b(an)m(y)f(elemen)m(ts)h(that)g(are)g
(equal)f(to)i(the)e(n)m(ulstr)f(string.)39 b(This)26
b(routine)g(m)m(ust)i(NOT)f(b)s(e)g(used)f(to)j(write)227
2786 y(to)i(v)-5 b(ariable)30 b(length)f(arra)m(y)i(columns.)95
3040 y Fe(int)47 b(fits_write_colnull_str)42 b(/)48 b(ffpcns)286
3153 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(long)i(firstrow,)e(long)i
(firstelem,)334 3266 y(long)g(nelements,)e(char)h(**array,)g(char)h
(*nulstr,)e(>)j(int)e(*status\))0 3520 y Fi(4)81 b Fj(W)-8
b(rite)33 b(bit)f(v)-5 b(alues)32 b(in)m(to)h(a)h(binary)d(b)m(yte)i
(\('B'\))i(or)e(bit)f(\('X'\))i(table)f(column)f(\(in)g(the)h(CDU\).)h
(Larra)m(y)f(is)f(an)227 3633 y(arra)m(y)25 b(of)g(c)m(haracters)h
(corresp)s(onding)d(to)i(the)g(sequence)g(of)f(bits)g(to)h(b)s(e)f
(written.)38 b(If)24 b(an)g(elemen)m(t)h(of)g(larra)m(y)227
3746 y(is)j(true)h(\(not)h(equal)e(to)i(zero\))g(then)f(the)g(corresp)s
(onding)e(bit)h(in)g(the)h(FITS)f(table)h(is)f(set)i(to)g(1,)g
(otherwise)227 3859 y(the)37 b(bit)f(is)g(set)h(to)g(0.)60
b(The)37 b('X')g(column)e(in)h(a)h(FITS)f(table)g(is)g(alw)m(a)m(ys)h
(padded)f(out)h(to)g(a)g(m)m(ultiple)e(of)227 3972 y(8)i(bits)e(where)h
(the)g(bit)g(arra)m(y)g(starts)h(with)e(the)i(most)f(signi\014can)m(t)f
(bit)h(of)g(the)h(b)m(yte)g(and)e(w)m(orks)h(do)m(wn)227
4085 y(to)m(w)m(ards)h(the)g(1's)f(bit.)58 b(F)-8 b(or)37
b(example,)h(a)e('4X')h(arra)m(y)-8 b(,)39 b(with)c(the)i(\014rst)e
(bit)h(=)f(1)i(and)f(the)g(remaining)f(3)227 4197 y(bits)30
b(=)h(0)h(is)e(equiv)-5 b(alen)m(t)31 b(to)h(the)g(8-bit)f(unsigned)e
(b)m(yte)j(decimal)e(v)-5 b(alue)31 b(of)h(128)g(\('1000)i(0000B'\).)g
(In)d(the)227 4310 y(case)h(of)f('X')g(columns,)f(CFITSIO)g(can)h
(write)f(to)h(all)f(8)h(bits)f(of)h(eac)m(h)h(b)m(yte)f(whether)f(they)
h(are)g(formally)227 4423 y(v)-5 b(alid)32 b(or)h(not.)50
b(Th)m(us)32 b(if)h(the)g(column)f(is)h(de\014ned)f(as)h('4X',)i(and)e
(one)g(calls)g(\013p)s(clx)f(with)g(\014rstbit=1)g(and)227
4536 y(n)m(bits=8,)i(then)g(all)e(8)j(bits)d(will)f(b)s(e)j(written)f
(in)m(to)g(the)h(\014rst)f(b)m(yte)i(\(as)f(opp)s(osed)f(to)i(writing)c
(the)j(\014rst)g(4)227 4649 y(bits)27 b(in)m(to)h(the)f(\014rst)g(ro)m
(w)h(and)f(then)h(the)g(next)g(4)g(bits)e(in)m(to)i(the)g(next)g(ro)m
(w\),)h(ev)m(en)f(though)f(the)h(last)g(4)g(bits)227
4762 y(of)j(eac)m(h)g(b)m(yte)g(are)f(formally)f(not)h(de\014ned)f(and)
h(should)e(all)h(b)s(e)g(set)i(=)f(0.)41 b(It)30 b(should)e(also)j(b)s
(e)e(noted)h(that)227 4875 y(it)j(is)e(more)i(e\016cien)m(t)h(to)f
(write)f('X')i(columns)d(an)i(en)m(tire)g(b)m(yte)g(at)h(a)f(time,)g
(instead)f(of)h(bit)f(b)m(y)h(bit.)47 b(An)m(y)227 4988
y(of)31 b(the)g(CFITSIO)e(routines)g(that)j(write)e(to)h(columns)e
(\(e.g.)43 b(\014ts)p 2481 4988 28 4 v 33 w(write)p 2717
4988 V 32 w(col)p 2860 4988 V 32 w(b)m(yt\))32 b(ma)m(y)f(b)s(e)f(used)
g(for)g(this)227 5101 y(purp)s(ose.)60 b(These)36 b(routines)h(will)d
(in)m(terpret)j('X')g(columns)f(as)h(though)g(they)h(w)m(ere)f('B')h
(columns)e(\(e.g.,)227 5214 y('1X')c(through)d('8X')j(is)d(equiv)-5
b(alen)m(t)30 b(to)h('1B',)h(and)e('9X')h(through)f('16X')i(is)d(equiv)
-5 b(alen)m(t)30 b(to)h('2B'\).)95 5468 y Fe(int)47 b
(fits_write_col_bit)c(/)48 b(ffpclx)286 5581 y(\(fitsfile)e(*fptr,)g
(int)h(colnum,)e(long)i(firstrow,)e(long)i(firstbit,)334
5694 y(long)g(nbits,)f(char)g(*larray,)g(>)h(int)g(*status\))p
eop
%%Page: 102 110
102 109 bop 0 299 a Fj(102)958 b Fh(CHAPTER)30 b(9.)112
b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
555 y Fi(5)81 b Fj(W)-8 b(rite)34 b(the)g(descriptor)f(for)g(a)h(v)-5
b(ariable)33 b(length)g(column)g(in)f(a)j(binary)d(table.)51
b(This)32 b(routine)g(can)j(b)s(e)e(used)227 668 y(in)g(conjunction)g
(with)f(\013gdes)i(to)h(enable)e(2)h(or)g(more)g(arra)m(ys)h(to)f(p)s
(oin)m(t)f(to)i(the)f(same)g(storage)h(lo)s(cation)227
781 y(to)c(sa)m(v)m(e)h(storage)g(space)f(if)e(the)i(arra)m(ys)g(are)g
(iden)m(tical.)191 1045 y Fe(int)47 b(fits_write_descript)42
b(/)48 b(ffpdes)382 1158 y(\(fitsfile)d(*fptr,)h(int)h(colnum,)f(long)h
(rownum,)e(long)i(repeat,)430 1271 y(long)f(offset,)g(>)h(int)g
(*status\))0 1567 y Fd(9.6.4)112 b(Read)38 b(Column)f(Data)h(Routines)0
1787 y Fj(Tw)m(o)28 b(t)m(yp)s(es)f(of)h(routines)e(are)i(pro)m(vided)e
(to)i(get)h(the)e(column)g(data)h(whic)m(h)e(di\013er)g(in)g(the)i(w)m
(a)m(y)h(unde\014ned)c(pixels)0 1900 y(are)40 b(handled.)65
b(The)39 b(\014rst)g(set)h(of)f(routines)f(\(\013gcv\))j(simply)c
(return)h(an)h(arra)m(y)h(of)g(data)g(elemen)m(ts)f(in)f(whic)m(h)0
2013 y(unde\014ned)28 b(pixels)h(are)i(set)g(equal)f(to)h(a)g(v)-5
b(alue)30 b(sp)s(eci\014ed)f(b)m(y)i(the)f(user)g(in)f(the)i('n)m(ullv)
-5 b(al')29 b(parameter.)41 b(If)30 b(n)m(ullv)-5 b(al)0
2126 y(=)22 b(0,)j(then)d(no)g(c)m(hec)m(ks)i(for)e(unde\014ned)e
(pixels)h(will)f(b)s(e)i(p)s(erformed,)g(th)m(us)g(increasing)g(the)g
(sp)s(eed)g(of)g(the)h(program.)0 2239 y(The)36 b(second)g(set)g(of)h
(routines)d(\(\013gcf)7 b(\))38 b(returns)d(the)h(data)h(elemen)m(t)f
(arra)m(y)h(and)e(in)g(addition)f(a)j(logical)e(arra)m(y)0
2351 y(of)e(\015ags)f(whic)m(h)f(de\014nes)h(whether)g(the)g(corresp)s
(onding)f(data)i(pixel)d(is)i(unde\014ned.)44 b(See)33
b(App)s(endix)d(B)j(for)f(the)0 2464 y(de\014nition)c(of)j(the)f
(parameters)h(used)e(in)g(these)i(routines.)0 2625 y(An)m(y)39
b(column,)g(regardless)f(of)h(it's)f(in)m(trinsic)e(data)k(t)m(yp)s(e,)
h(ma)m(y)e(b)s(e)f(read)g(as)h(a)g(string.)65 b(It)38
b(should)f(b)s(e)h(noted)0 2737 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
2850 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 2963 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)0 3076
y(the)i(data)g(t)m(yp)s(e)f(of)h(the)f(column.)38 b(The)26
b(length)g(of)h(the)f(returned)f(strings)g(\(not)i(including)c(the)k(n)
m(ull)d(terminating)0 3189 y(c)m(haracter\))38 b(can)e(b)s(e)g
(determined)e(with)h(the)h(\014ts)p 1722 3189 28 4 v
33 w(get)p 1875 3189 V 34 w(col)p 2020 3189 V 32 w(displa)m(y)p
2332 3189 V 31 w(width)f(routine.)56 b(The)36 b(follo)m(wing)e(TDISPn)0
3302 y(displa)m(y)29 b(formats)h(are)h(curren)m(tly)e(supp)s(orted:)191
3566 y Fe(Iw.m)142 b(Integer)191 3679 y(Ow.m)g(Octal)46
b(integer)191 3792 y(Zw.m)142 b(Hexadecimal)45 b(integer)191
3905 y(Fw.d)142 b(Fixed)46 b(floating)g(point)191 4018
y(Ew.d)142 b(Exponential)45 b(floating)g(point)191 4131
y(Dw.d)142 b(Exponential)45 b(floating)g(point)191 4244
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 4508 y Fj(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
4621 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 4885 y Fi(1)81
b Fj(Read)29 b(elemen)m(ts)h(from)f(an)g(ASCI)s(I)f(or)i(binary)e
(table)h(column)f(\(in)h(the)g(CDU\).)i(These)e(routines)f(return)h
(the)227 4998 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 5111 y(v)-5 b(alue)29 b(=)f(n)m(ulv)-5
b(al,)28 b(unless)f(n)m(ulv)-5 b(al)27 b(=)h(0)i(\(or)f(=)f(')h(')g
(for)g(\013gcvs\))g(in)f(whic)m(h)f(case)j(no)f(c)m(hec)m(king)h(for)e
(unde\014ned)227 5224 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 5337 y(are)k(unde\014ned.)95
5601 y Fe(int)47 b(fits_read_col_str)c(/)48 b(ffgcvs)286
5714 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(long)i(firstrow,)e(long)i
(firstelem,)p eop
%%Page: 103 111
103 110 bop 0 299 a Fh(9.6.)72 b(SPECIALIZED)29 b(FITS)g(ASCI)s(I)g
(AND)i(BINAR)-8 b(Y)32 b(T)-8 b(ABLE)30 b(R)m(OUTINES)933
b Fj(103)334 555 y Fe(long)47 b(nelements,)e(char)h(*nulstr,)g(>)h
(char)g(**array,)f(int)g(*anynul,)334 668 y(int)h(*status\))95
894 y(int)g(fits_read_col_[log,byt,sht)o(,us)o(ht,i)o(nt,u)o(int)o
(,lng)o(,uln)o(g,)41 b(lnglng,)46 b(flt,)h(dbl,)g(cmp,)f(dblcmp])g(/)
286 1007 y(ffgcv[l,b,i,ui,k,uk,j,uj,j)o(j,e)o(,d,c)o(,m])286
1120 y(\(fitsfile)g(*fptr,)g(int)h(colnum,)e(long)i(firstrow,)e(long)i
(firstelem,)334 1233 y(long)g(nelements,)e(DTYPE)h(nulval,)g(>)h(DTYPE)
g(*array,)f(int)g(*anynul,)334 1346 y(int)h(*status\))0
1632 y Fi(2)81 b Fj(Read)39 b(elemen)m(ts)h(and)f(n)m(ull)f(\015ags)i
(from)f(an)g(ASCI)s(I)g(or)g(binary)f(table)i(column)e(\(in)h(the)h
(CHDU\).)g(These)227 1745 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
1858 y(will)h(ha)m(v)m(e)k(the)f(corresp)s(onding)d(n)m(ullarra)m(y)h
(elemen)m(t)i(set)g(equal)f(to)h(TR)m(UE.)g(The)f(an)m(yn)m(ul)g
(parameter)h(is)227 1971 y(set)d(to)g(true)f(if)g(an)m(y)h(of)f(the)h
(returned)e(elemen)m(ts)i(are)f(unde\014ned.)95 2257
y Fe(int)47 b(fits_read_colnull_str)42 b(/)48 b(ffgcfs)286
2370 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(long)i(firstrow,)e(long)i
(firstelem,)334 2483 y(long)g(nelements,)e(>)i(char)g(**array,)e(char)i
(*nullarray,)e(int)i(*anynul,)334 2596 y(int)g(*status\))95
2822 y(int)g(fits_read_colnull_[log,byt)o(,sh)o(t,us)o(ht,i)o(nt,)o
(uint)o(,lng)o(,ul)o(ng,l)o(ngln)o(g,f)o(lt,d)o(bl,c)o(mp,)o(dblc)o
(mp])41 b(/)286 2935 y(ffgcf[l,b,i,ui,k,uk,j,uj,j)o(j,e)o(,d,c)o(,m])
286 3048 y(\(fitsfile)46 b(*fptr,)g(int)h(colnum,)e(long)i(firstrow,)
334 3161 y(long)g(firstelem,)e(long)h(nelements,)f(>)j(DTYPE)e(*array,)
334 3274 y(char)h(*nullarray,)d(int)j(*anynul,)f(int)h(*status\))0
3560 y Fi(3)81 b Fj(Read)24 b(an)g(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 3673 y(Unde\014ned)21 b(pixels)g(in)g(the)i(arra)m
(y)g(will)d(b)s(e)i(set)h(equal)g(to)g(the)g(v)-5 b(alue)22
b(of)h('n)m(ulv)-5 b(al',)23 b(unless)e(n)m(ulv)-5 b(al=0)21
b(in)g(whic)m(h)227 3786 y(case)37 b(no)e(testing)g(for)g(unde\014ned)e
(pixels)g(will)g(b)s(e)i(p)s(erformed.)53 b(The)35 b(\014rst)g(and)f
(last)h(ro)m(ws)h(in)e(the)h(table)227 3899 y(to)30 b(b)s(e)e(read)h
(are)g(sp)s(eci\014ed)f(b)m(y)h(fpixel\(naxis+1\))d(and)j
(lpixel\(naxis+1\),)e(and)h(hence)h(are)h(treated)g(as)f(the)227
4012 y(next)38 b(higher)e(dimension)f(of)j(the)f(FITS)g(N-dimensional)e
(arra)m(y)-8 b(.)63 b(The)37 b(INC)h(parameter)g(sp)s(eci\014es)e(the)
227 4125 y(sampling)29 b(in)m(terv)-5 b(al)29 b(in)g(eac)m(h)j
(dimension)c(b)s(et)m(w)m(een)j(the)f(data)h(elemen)m(ts)g(that)g(will)
d(b)s(e)h(returned.)95 4411 y Fe(int)47 b(fits_read_subset_[byt,)42
b(sht,)47 b(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(flt,)h
(dbl])f(/)286 4524 y(ffgsv[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286
4637 y(\(fitsfile)g(*fptr,)g(int)h(colnum,)e(int)i(naxis,)f(long)h
(*naxes,)f(long)h(*fpixel,)334 4750 y(long)g(*lpixel,)e(long)i(*inc,)f
(DTYPE)h(nulval,)e(>)j(DTYPE)e(*array,)g(int)h(*anynul,)334
4863 y(int)g(*status\))0 5149 y Fi(4)81 b Fj(Read)24
b(an)g(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
5262 y(An)m(y)34 b(Unde\014ned)e(pixels)g(in)h(the)g(arra)m(y)i(will)c
(ha)m(v)m(e)k(the)f(corresp)s(onding)d('n)m(ullarra)m(y')i(elemen)m(t)h
(set)g(equal)227 5375 y(to)40 b(TR)m(UE.)e(The)h(\014rst)e(and)h(last)h
(ro)m(ws)f(in)g(the)g(table)h(to)g(b)s(e)f(read)h(are)g(sp)s(eci\014ed)
d(b)m(y)j(fpixel\(naxis+1\))227 5488 y(and)i(lpixel\(naxis+1\),)i(and)e
(hence)h(are)g(treated)g(as)g(the)g(next)g(higher)f(dimension)e(of)j
(the)g(FITS)f(N-)227 5601 y(dimensional)f(arra)m(y)-8
b(.)78 b(The)41 b(INC)h(parameter)h(sp)s(eci\014es)e(the)i(sampling)d
(in)m(terv)-5 b(al)42 b(in)f(eac)m(h)j(dimension)227
5714 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.)p eop
%%Page: 104 112
104 111 bop 0 299 a Fj(104)958 b Fh(CHAPTER)30 b(9.)112
b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)95
555 y Fe(int)47 b(fits_read_subsetnull_[byt,)41 b(sht,)47
b(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(flt,)g(dbl])h(/)286
668 y(ffgsf[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286 781 y(\(fitsfile)f
(*fptr,)g(int)h(colnum,)e(int)i(naxis,)f(long)h(*naxes,)334
894 y(long)g(*fpixel,)e(long)i(*lpixel,)e(long)i(*inc,)f(>)i(DTYPE)e
(*array,)334 1007 y(char)h(*nullarray,)d(int)j(*anynul,)f(int)h
(*status\))0 1227 y Fi(5)81 b Fj(Read)35 b(bit)f(v)-5
b(alues)34 b(from)h(a)g(b)m(yte)h(\('B'\))g(or)f(bit)f(\(`X`\))i(table)
f(column)f(\(in)g(the)h(CDU\).)h(Larra)m(y)g(is)e(an)g(arra)m(y)227
1340 y(of)g(logical)f(v)-5 b(alues)33 b(corresp)s(onding)f(to)i(the)g
(sequence)g(of)g(bits)f(to)h(b)s(e)f(read.)51 b(If)33
b(larra)m(y)g(is)g(true)g(then)h(the)227 1453 y(corresp)s(onding)h(bit)
h(w)m(as)h(set)h(to)f(1,)j(otherwise)c(the)h(bit)f(w)m(as)h(set)h(to)f
(0.)61 b(The)37 b('X')g(column)f(in)f(a)j(FITS)227 1566
y(table)d(is)e(alw)m(a)m(ys)i(padded)f(out)h(to)g(a)g(m)m(ultiple)d(of)
j(8)g(bits)e(where)h(the)h(bit)f(arra)m(y)h(starts)g(with)e(the)i(most)
227 1678 y(signi\014can)m(t)h(bit)f(of)i(the)g(b)m(yte)g(and)f(w)m
(orks)g(do)m(wn)h(to)m(w)m(ards)g(the)g(1's)g(bit.)58
b(F)-8 b(or)37 b(example,)h(a)f('4X')h(arra)m(y)-8 b(,)227
1791 y(with)32 b(the)i(\014rst)e(bit)h(=)g(1)h(and)e(the)i(remaining)d
(3)j(bits)e(=)h(0)h(is)e(equiv)-5 b(alen)m(t)33 b(to)h(the)g(8-bit)f
(unsigned)e(b)m(yte)227 1904 y(v)-5 b(alue)30 b(of)g(128.)42
b(Note)31 b(that)g(in)d(the)j(case)g(of)f('X')g(columns,)f(CFITSIO)g
(can)h(read)g(all)f(8)h(bits)f(of)h(eac)m(h)h(b)m(yte)227
2017 y(whether)h(they)h(are)g(formally)e(v)-5 b(alid)31
b(or)h(not.)48 b(Th)m(us)31 b(if)h(the)g(column)g(is)f(de\014ned)g(as)i
('4X',)h(and)e(one)h(calls)227 2130 y(\013gcx)d(with)e(\014rstbit=1)f
(and)i(n)m(bits=8,)f(then)h(all)f(8)h(bits)f(will)e(b)s(e)j(read)g
(from)f(the)h(\014rst)g(b)m(yte)g(\(as)h(opp)s(osed)227
2243 y(to)39 b(reading)e(the)h(\014rst)g(4)g(bits)f(from)h(the)g
(\014rst)f(ro)m(w)h(and)g(then)f(the)i(\014rst)e(4)h(bits)f(from)h(the)
g(next)g(ro)m(w\),)227 2356 y(ev)m(en)g(though)f(the)g(last)h(4)f(bits)
f(of)i(eac)m(h)g(b)m(yte)g(are)f(formally)f(not)i(de\014ned.)60
b(It)37 b(should)e(also)i(b)s(e)g(noted)227 2469 y(that)f(it)e(is)h
(more)g(e\016cien)m(t)g(to)h(read)f('X')h(columns)d(an)i(en)m(tire)g(b)
m(yte)h(at)g(a)f(time,)h(instead)e(of)i(bit)e(b)m(y)h(bit.)227
2582 y(An)m(y)29 b(of)g(the)h(CFITSIO)d(routines)h(that)h(read)g
(columns)f(\(e.g.)42 b(\014ts)p 2520 2582 28 4 v 32 w(read)p
2724 2582 V 33 w(col)p 2868 2582 V 33 w(b)m(yt\))29 b(ma)m(y)h(b)s(e)e
(used)g(for)h(this)227 2695 y(purp)s(ose.)60 b(These)36
b(routines)h(will)d(in)m(terpret)j('X')g(columns)f(as)h(though)g(they)h
(w)m(ere)f('B')h(columns)e(\(e.g.,)227 2808 y('8X')c(is)d(equiv)-5
b(alen)m(t)30 b(to)h('1B',)h(and)e('16X')i(is)d(equiv)-5
b(alen)m(t)30 b(to)h('2B'\).)95 3027 y Fe(int)47 b(fits_read_col_bit)c
(/)48 b(ffgcx)286 3140 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(long)i
(firstrow,)e(long)i(firstbit,)334 3253 y(long)g(nbits,)f(>)h(char)g
(*larray,)e(int)i(*status\))0 3473 y Fi(6)81 b Fj(Read)31
b(an)m(y)h(consecutiv)m(e)h(set)f(of)g(bits)e(from)i(an)f('X')h(or)g
('B')h(column)d(and)h(in)m(terpret)g(them)h(as)f(an)h(unsigned)227
3586 y(n-bit)g(in)m(teger.)47 b(n)m(bits)32 b(m)m(ust)g(b)s(e)g(less)g
(than)h(16)g(or)g(32)g(in)e(\013gcxui)i(and)e(\013gcxuk,)j(resp)s
(ectiv)m(ely)-8 b(.)47 b(If)32 b(nro)m(ws)227 3699 y(is)27
b(greater)i(than)f(1,)h(then)e(the)h(same)h(set)f(of)g(bits)f(will)e(b)
s(e)i(read)h(from)f(eac)m(h)i(ro)m(w,)g(starting)f(with)e(\014rstro)m
(w.)227 3812 y(The)k(bits)f(are)i(n)m(um)m(b)s(ered)e(with)g(1)i(=)f
(the)h(most)f(signi\014can)m(t)g(bit)f(of)i(the)f(\014rst)g(elemen)m(t)
h(of)f(the)h(column.)95 4032 y Fe(int)47 b(fits_read_col_bit_[usht,)42
b(uint])k(/)h(ffgcx[ui,uk])286 4145 y(\(fitsfile)f(*fptr,)g(int)h
(colnum,)e(long)i(firstrow,)e(long,)i(nrows,)334 4258
y(long)g(firstbit,)e(long)i(nbits,)f(>)h(DTYPE)g(*array,)e(int)i
(*status\))0 4478 y Fi(7)81 b Fj(Return)27 b(the)i(descriptor)e(for)i
(a)g(v)-5 b(ariable)27 b(length)h(column)f(in)h(a)h(binary)d(table.)40
b(The)28 b(descriptor)g(consists)g(of)227 4591 y(2)k(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 4704 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 4816 y(returns)i(the)i(descriptors)e(for)h
(a)h(range)g(of)f(ro)m(ws)h(in)e(the)h(table.)95 5036
y Fe(int)47 b(fits_read_descript)c(/)48 b(ffgdes)286
5149 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(long)i(rownum,)f(>)h(long)
g(*repeat,)525 5262 y(long)g(*offset,)e(int)i(*status\))95
5488 y(int)g(fits_read_descripts)c(/)k(ffgdess)286 5601
y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(long)i(firstrow,)e(long)i
(nrows)f(>)i(long)e(*repeat,)525 5714 y(long)h(*offset,)e(int)i
(*status\))p eop
%%Page: 105 113
105 112 bop 0 1225 a Fg(Chapter)65 b(10)0 1687 y Fm(Extended)77
b(File)g(Name)g(Syn)-6 b(tax)0 2216 y Ff(10.1)136 b(Ov)l(erview)0
2466 y Fj(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 Fj(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 Fj(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 Fj(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 Fj(FITS)36
b(\014les)g(can)h(b)s(e)f(read)h(and)f(written)g(in)g(shared)g(memory)
-8 b(.)60 b(This)35 b(can)i(p)s(oten)m(tially)f(ac)m(hiev)m(e)i(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 Fj(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 Fj(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 Fj(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 Fj(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)22
b(on)f(an)g(user-sp)s(eci\014ed)f(expression.)37 b(Only)20
b(ro)m(ws)h(for)g(whic)m(h)g(the)h(expression)e(ev)-5
b(aluates)22 b(to)g('TR)m(UE')227 5309 y(are)31 b(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 Fj(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.)1882 5942 y(105)p eop
%%Page: 106 114
106 113 bop 0 299 a Fj(106)1528 b Fh(CHAPTER)29 b(10.)113
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fj(The)39
b(latter)h(3)g(table)g(\014ltering)e(features)i(in)e(particular)g(add)h
(v)m(ery)h(p)s(o)m(w)m(erful)e(data)j(pro)s(cessing)d(capabilities)0
668 y(directly)31 b(in)m(to)h(CFITSIO,)f(and)h(hence)h(in)m(to)f(ev)m
(ery)h(task)g(that)g(uses)f(CFITSIO)f(to)i(read)f(or)h(write)e(FITS)h
(\014les.)0 781 y(F)-8 b(or)29 b(example,)f(these)g(features)h
(transform)e(a)h(v)m(ery)g(simple)e(program)i(that)g(just)g(copies)f
(an)h(input)e(FITS)h(\014le)g(to)0 894 y(a)d(new)f(output)h(\014le)f
(\(lik)m(e)g(the)h(`\014tscop)m(y')h(program)e(that)i(is)d(distributed)
f(with)i(CFITSIO\))f(in)m(to)i(a)g(m)m(ultipurp)s(ose)0
1007 y(FITS)33 b(\014le)f(pro)s(cessing)g(to)s(ol.)50
b(By)33 b(app)s(ending)e(fairly)h(simple)f(quali\014ers)g(on)m(to)j
(the)g(name)f(of)h(the)f(input)f(FITS)0 1120 y(\014le,)44
b(the)e(user)f(can)h(p)s(erform)e(quite)h(complex)h(table)f(editing)g
(op)s(erations)g(\(e.g.,)46 b(create)d(new)e(columns,)j(or)0
1233 y(\014lter)31 b(out)i(ro)m(ws)f(in)f(a)h(table\))h(or)f(create)i
(FITS)d(images)i(b)m(y)f(binning)d(or)j(histogramming)f(the)i(v)-5
b(alues)31 b(in)g(table)0 1346 y(columns.)46 b(In)32
b(addition,)f(these)i(functions)e(ha)m(v)m(e)j(b)s(een)e(co)s(ded)g
(using)f(new)h(state-of-the)j(art)e(algorithms)e(that)0
1458 y(are,)g(in)e(some)i(cases,)g(10)h(-)e(100)i(times)e(faster)h
(than)f(previous)f(widely)f(used)h(implemen)m(tations.)0
1619 y(Before)34 b(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 1984 y Fc(\017)46 b Fe(myfile.fits)p
Fj(:)38 b(the)30 b(simplest)f(case)i(of)g(a)g(FITS)e(\014le)h(on)g
(disk)f(in)g(the)i(curren)m(t)f(directory)-8 b(.)136
2169 y Fc(\017)46 b Fe(myfile.imh)p Fj(:)i(op)s(ens)34
b(an)h(IRAF)g(format)g(image)h(\014le)e(and)g(con)m(v)m(erts)j(it)d(on)
h(the)g(\015y)g(in)m(to)g(a)g(temp)s(orary)227 2282 y(FITS)30
b(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 2467
y Fc(\017)46 b Fe(rawfile.dat[i512,512])p Fj(:)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 2580 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 2693 y(can)e(then)f(b)s(e)
g(read)g(with)f(an)m(y)i(other)f(CFITSIO)f(routine.)136
2878 y Fc(\017)46 b Fe(myfile.fits.gz)p Fj(:)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
2991 y(compressed)c(in)f(gzip)h(format)h(when)e(it)h(is)g(written)f(to)
i(disk.)136 3176 y Fc(\017)46 b Fe(myfile.fits.gz[events,)c(2])p
Fj(:)35 b(op)s(ens)20 b(and)f(uncompresses)g(the)i(gzipp)s(ed)e(\014le)
g(m)m(y\014le.\014ts)h(then)g(mo)m(v)m(es)227 3289 y(to)31
b(the)g(extension)f(with)f(the)i(k)m(eyw)m(ords)f(EXTNAME)h(=)f
('EVENTS')g(and)g(EXTVER)g(=)g(2.)136 3474 y Fc(\017)46
b Fe(-)p Fj(:)40 b(a)30 b(dash)f(\(min)m(us)f(sign\))h(signi\014es)f
(that)i(the)g(input)e(\014le)g(is)h(to)h(b)s(e)f(read)h(from)f(the)h
(stdin)e(\014le)h(stream,)h(or)227 3587 y(that)h(the)g(output)f(\014le)
f(is)h(to)h(b)s(e)f(written)f(to)i(the)g(stdout)f(stream.)136
3772 y Fc(\017)46 b Fe(ftp://legacy.gsfc.nasa.go)o(v/te)o(st/v)o(ela)o
(.fit)o(s)p Fj(:)k(FITS)37 b(\014les)g(in)g(an)m(y)i(ftp)e(arc)m(hiv)m
(e)i(site)f(on)g(the)227 3885 y(in)m(ternet)30 b(ma)m(y)h(b)s(e)f
(directly)f(op)s(ened)h(with)f(read-only)h(access.)136
4070 y Fc(\017)46 b Fe(http://legacy.gsfc.nasa.g)o(ov/s)o(oftw)o(are)o
(/tes)o(t.fi)o(ts)p Fj(:)33 b(an)m(y)27 b(v)-5 b(alid)26
b(URL)h(to)h(a)g(FITS)e(\014le)h(on)g(the)227 4183 y(W)-8
b(eb)31 b(ma)m(y)g(b)s(e)f(op)s(ened)g(with)f(read-only)g(access.)136
4368 y Fc(\017)46 b Fe(root://legacy.gsfc.nasa.g)o(ov/t)o(est/)o(vel)o
(a.fi)o(ts)p Fj(:)e(similar)33 b(to)j(ftp)f(access)i(except)f(that)g
(it)f(pro-)227 4481 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 4594
y(dev)m(elop)s(ed)g(at)h(CERN.)136 4779 y Fc(\017)46
b Fe(shmem://h2[events])p Fj(:)j(op)s(ens)36 b(the)i(FITS)e(\014le)g
(in)g(a)h(shared)f(memory)h(segmen)m(t)h(and)f(mo)m(v)m(es)h(to)g(the)
227 4892 y(EVENTS)30 b(extension.)136 5077 y Fc(\017)46
b Fe(mem://)p Fj(:)65 b(creates)44 b(a)g(scratc)m(h)g(output)f(\014le)f
(in)g(core)i(computer)f(memory)-8 b(.)79 b(The)43 b(resulting)e
('\014le')i(will)227 5190 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 5303 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
Fj(:)c(op)s(ens)30 b(a)i(cop)m(y)g(of)g(the)g(image)f(con)m(tained)h
(in)e(the)i(10th)g(ro)m(w)f(of)h(the)227 5601 y('Images')38
b(column)e(in)g(the)h(binary)e(table)i(in)e(the)i(3th)g(extension)g(of)
g(the)g(FITS)f(\014le.)59 b(The)37 b(virtual)e(\014le)227
5714 y(that)c(is)f(op)s(ened)f(b)m(y)i(the)f(application)f(just)h(con)m
(tains)g(this)f(single)g(image)i(in)e(the)i(primary)d(arra)m(y)-8
b(.)p eop
%%Page: 107 115
107 114 bop 0 299 a Fh(10.1.)73 b(O)m(VER)-10 b(VIEW)2995
b Fj(107)136 555 y Fc(\017)46 b Fe(myfile.fits[1:512:2,)d(1:512:2])p
Fj(:)c(op)s(ens)30 b(a)h(section)g(of)h(the)f(input)e(image)i(ranging)f
(from)g(the)h(1st)227 668 y(to)k(the)f(512th)h(pixel)d(in)h(X)h(and)g
(Y,)g(and)f(selects)i(ev)m(ery)f(second)g(pixel)f(in)f(b)s(oth)h
(dimensions,)g(resulting)227 781 y(in)c(a)i(256)h(x)e(256)i(pixel)c
(input)h(image)h(in)g(this)f(case.)136 981 y Fc(\017)46
b Fe(myfile.fits[EVENTS][col)c(Rad)47 b(=)g(sqrt\(X**2)e(+)j(Y**2\)])p
Fj(:)36 b(creates)27 b(and)d(op)s(ens)h(a)g(virtual)f(\014le)g(on)227
1094 y(the)i(\015y)f(that)i(is)e(iden)m(tical)f(to)j(m)m
(y\014le.\014ts)e(except)h(that)h(it)e(will)e(con)m(tain)j(a)g(new)g
(column)e(in)h(the)h(EVENTS)227 1207 y(extension)40 b(called)g('Rad')h
(whose)f(v)-5 b(alue)40 b(is)g(computed)g(using)g(the)g(indicated)f
(expression)h(whic)m(h)f(is)h(a)227 1320 y(function)29
b(of)i(the)f(v)-5 b(alues)30 b(in)f(the)i(X)f(and)g(Y)h(columns.)136
1520 y Fc(\017)46 b Fe(myfile.fits[EVENTS][PHA)c(>)47
b(5])p Fj(:)41 b(creates)33 b(and)d(op)s(ens)g(a)i(virtual)d(FITS)h
(\014les)g(that)h(is)f(iden)m(tical)g(to)227 1633 y('m)m
(y\014le.\014ts')39 b(except)i(that)f(the)f(EVENTS)g(table)g(will)e
(only)h(con)m(tain)i(the)f(ro)m(ws)h(that)g(ha)m(v)m(e)g(v)-5
b(alues)39 b(of)227 1746 y(the)34 b(PHA)g(column)f(greater)i(than)e(5.)
52 b(In)33 b(general,)i(an)m(y)f(arbitrary)f(b)s(o)s(olean)f
(expression)h(using)f(a)j(C)e(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)c(\(X,Y\)=1,2048,4])p Fj(:)34
b(creates)26 b(a)g(temp)s(orary)f(FITS)g(primary)e(arra)m(y)j(im-)227
2285 y(age)38 b(whic)m(h)d(is)h(computed)g(on)g(the)h(\015y)f(b)m(y)g
(binning)d(\(i.e,)39 b(computing)c(the)i(2-dimensional)d(histogram\))
227 2398 y(of)g(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 Fj(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\):)370 3206 y Fe(ftp://legacy.gsfc.nasa.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 Fj(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(\)[co)o(mpr)o
(ess])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: 108 116
108 115 bop 0 299 a Fj(108)1528 b Fh(CHAPTER)29 b(10.)113
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fj(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 Ff(10.2)136 b(Filet)l(yp)t(e)0 1471
y Fj(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(survers)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 Fj(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 Fd(10.2.1)113 b(Notes)36 b(ab)s(out)j(HTTP)d(pro)m(xy)i(serv)m
(ers)0 4439 y Fj(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 Fj(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 Fd(10.2.2)113 b(Notes)36 b(ab)s(out)j(the)e(ro)s(ot)g(\014let)m(yp)s
(e)0 5601 y Fj(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 Fj(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: 109 117
109 116 bop 0 299 a Fh(10.2.)73 b(FILETYPE)3037 b Fj(109)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 Fj(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 Fj(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
Fj(F)-8 b(orce)30 b(inetd)d(to)i(reread)f(its)g(conf)g(\014le)f(with)g
Fe(kill)47 b(-HUP)g(<pid)f(inetd>)p Fj(.)39 b(Y)-8 b(ou)28
b(can)h(also)f(start)h(ro)s(otd)f(b)m(y)g(hand)0 2790
y(running)34 b(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)g(listening)d
(on)j(p)s(ort)f(5151)j(just)d(t)m(yp)s(e:)49 b Fe(rootd)e(-p)g(5151)33
b Fj(Notice)j(that)g(no)e(&)h(is)e(needed.)54 b(Ro)s(otd)0
3016 y(will)28 b(go)j(in)m(to)f(bac)m(kground)g(b)m(y)h(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 Fj(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: 110 118
110 117 bop 0 299 a Fj(110)1528 b Fh(CHAPTER)29 b(10.)113
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 Fj(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 Fd(10.2.3)113 b(Notes)36 b(ab)s(out)j(the)e(shmem)g(\014let)m
(yp)s(e:)0 3451 y Fj(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 Fj(where)25 b(the)g(ro)s(ot)h
(`\014le')e(names)i(are)f(curren)m(tly)f(restricted)h(to)h(b)s(e)f
('h0',)i('h1',)g('h2',)g('h3',)f(etc.,)i(up)d(to)g(a)h(maxim)m(um)0
4502 y(n)m(um)m(b)s(er)20 b(de\014ned)f(b)m(y)i(the)g(the)g(v)-5
b(alue)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 Fj(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: 111 119
111 118 bop 0 299 a Fh(10.3.)73 b(BASE)30 b(FILENAME)2739
b Fj(111)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 Ff(10.3)136 b(Base)45 b(Filename)0 2233 y Fj(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 Fj(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: 112 120
112 119 bop 0 299 a Fj(112)1528 b Fh(CHAPTER)29 b(10.)113
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fj(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(data)h(t)m(yp)s(e)g(of)f(the)h(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 Fj(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)29
b(\(as)h(in)f(FITS)g(\014les)g(and)g(the)h(nativ)m(e)h(format)f(of)g
(SUN)g(UNIX)g(w)m(orkstations)g(and)g(Mac)h(PCs\))e(and)h(l)f(or)0
2739 y(L)e(indicates)g(little)f(endian)g(\(nativ)m(e)j(format)e(of)h
(DEC)g(OSF)f(w)m(orkstations)g(and)g(IBM)h(PCs\).)40
b(If)27 b(this)f(c)m(haracter)0 2852 y(is)f(omitted)g(then)g(the)h
(arra)m(y)g(is)f(assumed)g(to)h(ha)m(v)m(e)h(the)f(nativ)m(e)f(b)m(yte)
i(order)e(of)g(the)h(lo)s(cal)f(mac)m(hine.)39 b(These)25
b(data)0 2965 y(t)m(yp)s(e)35 b(c)m(haracters)h(are)g(then)e(follo)m(w)
m(ed)h(b)m(y)f(a)i(series)e(of)h(one)g(or)g(more)g(in)m(teger)g(v)-5
b(alues)34 b(separated)i(b)m(y)e(commas)0 3078 y(whic)m(h)40
b(de\014ne)g(the)h(size)g(of)g(eac)m(h)h(dimension)d(of)i(the)g(ra)m(w)
g(arra)m(y)-8 b(.)74 b(Arra)m(ys)41 b(with)e(up)h(to)i(5)f(dimensions)e
(are)0 3191 y(curren)m(tly)30 b(supp)s(orted.)41 b(Finally)-8
b(,)30 b(a)h(b)m(yte)h(o\013set)g(to)g(the)f(p)s(osition)f(of)h(the)g
(\014rst)f(pixel)g(in)g(the)h(data)h(\014le)e(ma)m(y)i(b)s(e)0
3304 y(sp)s(eci\014ed)g(b)m(y)h(separating)h(it)f(with)f(a)i(':')48
b(from)33 b(the)h(last)f(dimension)e(v)-5 b(alue.)50
b(If)33 b(omitted,)i(it)e(is)f(assumed)h(that)0 3417
y(the)i(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 Fj(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: 113 121
113 120 bop 0 299 a Fh(10.4.)73 b(OUTPUT)29 b(FILE)h(NAME)h(WHEN)g
(OPENING)f(AN)h(EXISTING)f(FILE)876 b Fj(113)143 555
y Fe(task1)47 b(-)g(|)g(task2)g(-)0 783 y Fj(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
896 y(the)g(FITS)e(\014le)h(o\013)g(of)h(the)g(command)f(line.)0
1224 y Ff(10.4)136 b(Output)44 b(File)i(Name)f(when)g(Op)t(ening)g(an)g
(Existing)h(File)0 1474 y Fj(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 1587 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 1700 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 1813 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 1926
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 2039 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
2152 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 2265 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 2378 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 2490 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
2651 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 Fj(then)44
b(CFITSIO)g(will)0 2764 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 2876
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
3037 y(The)i(output)h(\014lename)f("mem://")j(is)d(also)h(allo)m(w)m
(ed,)h(whic)m(h)d(will)g(write)h(the)h(output)f(\014le)g(in)m(to)h
(memory)-8 b(,)35 b(and)0 3150 y(also)27 b(allo)m(w)f(write)g(access)i
(to)g(the)f(\014le.)38 b(This)25 b('\014le')i(will)d(disapp)s(ear)h
(when)h(it)g(is)g(closed,)h(but)f(this)g(ma)m(y)i(b)s(e)e(useful)0
3262 y(for)k(some)h(applications)d(whic)m(h)i(only)f(need)h(to)h(mo)s
(dify)e(a)i(temp)s(orary)f(cop)m(y)h(of)f(the)h(\014le.)0
3423 y(In)k(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 3535 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 3648 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
3761 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 3874 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 3987
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 4100 y(describ)s(ed)g(b)s(elo)m(w,)i(in)
f(descending)g(priorit)m(y:)136 4327 y Fc(\017)46 b Fj(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 4440 y(an)i(image)f(is)g(created)h(b)m(y)f(binning)e(a)i(table)
h(column.)136 4617 y Fc(\017)46 b Fj(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
4730 y(sp)s(eci\014ed.)136 4907 y Fc(\017)46 b Fj(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 5084 y Fc(\017)46 b Fj(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
5197 y(disk)e(has)h(b)s(een)g(op)s(ened.)136 5374 y Fc(\017)46
b Fj(otherwise,)30 b(the)h(output)f(\014lename)f(is)h(ignored.)0
5601 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 5714 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(=)p
eop
%%Page: 114 122
114 121 bop 0 299 a Fj(114)1528 b Fh(CHAPTER)29 b(10.)113
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fj(`*')36
b(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 668 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
781 y(follo)m(wing)f(examples:)136 1005 y Fc(\017)46
b Fe(ftp://remote.machine/tmp/)o(myfi)o(le.f)o(its)o(.gz\()o(*\))28
b Fj(-)35 b(the)g(remote)h(compressed)e(\014le)g(is)g(copied)g(to)227
1117 y(the)e(lo)s(cal)f(compressed)h(\014le)f(`m)m(y\014le.\014ts.gz',)
i(whic)m(h)d(is)h(then)h(uncompressed)e(in)h(lo)s(cal)g(memory)g(b)s
(efore)227 1230 y(b)s(eing)e(op)s(ened)h(and)g(passed)f(to)j(the)e
(application)f(program.)136 1414 y Fc(\017)46 b Fe
(ftp://remote.machine/tmp/)o(myfi)o(le.f)o(its)o(.gz\()o(myfi)o(le.)o
(fits)o(\))33 b Fj(-)39 b(the)g(remote)h(compressed)f(\014le)227
1526 y(is)c(copied)g(and)g(uncompressed)g(in)m(to)g(the)h(lo)s(cal)f
(\014le)g(`m)m(y\014le.\014ts'.)56 b(This)34 b(example)h(requires)g
(less)g(lo)s(cal)227 1639 y(memory)21 b(than)g(the)g(previous)e
(example)i(since)f(the)h(\014le)f(is)g(uncompressed)f(on)i(disk)f
(instead)g(of)h(in)e(memory)-8 b(.)136 1822 y Fc(\017)46
b Fe(ftp://remote.machine/tmp/)o(myfi)o(le.f)o(its)o(\(myf)o(ile.)o
(fit)o(s.gz)o(\))24 b Fj(-)30 b(this)f(will)e(usually)h(pro)s(duce)h
(an)227 1935 y(error)h(since)g(CFITSIO)f(itself)g(cannot)i(compress)f
(\014les.)0 2159 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 2272 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
2385 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 2498 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 2611 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
2723 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 2836 y(that)c(they)g(exp)s(ect.)0
3168 y Ff(10.5)136 b(T)-11 b(emplate)45 b(File)h(Name)g(when)e
(Creating)j(a)e(New)g(File)0 3418 y Fj(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 3418 28 4 v 32 w(create)p 2369 3418 V 35 w(\014le,)f(the)g(name)g
(of)g(a)g(template)g(\014le)e(ma)m(y)0 3531 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 3644
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 3757 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
3870 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 3983 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
4096 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(T)-8 b(emplate)30
b(Files)g(c)m(hapter.)0 4427 y Ff(10.6)136 b(Image)46
b(Tile-Compression)g(Sp)t(eci\014cation)0 4677 y Fj(When)28
b(sp)s(ecifying)e(the)j(name)g(of)f(the)h(output)f(FITS)g(\014le)f(to)i
(b)s(e)f(created,)i(the)f(user)f(can)g(indicate)g(that)h(images)0
4790 y(should)c(b)s(e)i(written)f(in)g(tile-compressed)g(format)i
(\(see)g(section)f(5.5,)i(\\Primary)d(Arra)m(y)i(or)f(IMA)m(GE)h
(Extension)0 4903 y(I/O)f(Routines"\))h(b)m(y)f(enclosing)f(the)i
(compression)e(parameters)i(in)e(square)h(brac)m(k)m(ets)i(follo)m
(wing)d(the)i(ro)s(ot)f(disk)0 5016 y(\014le)i(name.)41
b(Here)31 b(are)g(some)g(examples)f(of)g(the)h(syn)m(tax)g(for)f(sp)s
(ecifying)e(tile-compressed)i(output)g(images:)191 5262
y Fe(myfile.fit[compress])185 b(-)48 b(use)f(Rice)f(algorithm)g(and)h
(default)e(tile)i(size)191 5488 y(myfile.fit[compress)42
b(GZIP])47 b(-)g(use)g(the)g(specified)e(compression)g(algorithm;)191
5601 y(myfile.fit[compress)d(Rice])238 b(only)46 b(the)h(first)g
(letter)f(of)h(the)g(algorithm)191 5714 y(myfile.fit[compress)42
b(PLIO])238 b(name)46 b(is)i(required.)p eop
%%Page: 115 123
115 122 bop 0 299 a Fh(10.7.)73 b(HDU)31 b(LOCA)-8 b(TION)29
b(SPECIFICA)-8 b(TION)2019 b Fj(115)191 668 y Fe(myfile.fit[compress)42
b(Rice)47 b(100,100])141 b(-)48 b(use)e(100)h(x)h(100)f(pixel)f(tile)h
(size)191 781 y(myfile.fit[compress)42 b(Rice)47 b(100,100;2])e(-)j(as)
f(above,)f(and)h(use)g(noisebits)e(=)i(2)0 1114 y Ff(10.7)136
b(HDU)45 b(Lo)t(cation)g(Sp)t(eci\014cation)0 1364 y
Fj(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
1477 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 1590 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
1703 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 1816 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 1929 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
2042 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 2155 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
2268 y(b)s(elo)m(w.)0 2428 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
2541 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 2654 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 2766 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)0 2879 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 2992
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 3105 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 3218 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
3331 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 3444 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
3557 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 3717 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 3830 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
3943 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 4056 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
4169 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 4282 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 4394 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 4507 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 4620 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
4733 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
4846 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 4959 y(Filter)i(Sp)s(eci\014er)e
(section,)j(b)s(elo)m(w.)0 5119 y(Examples:)143 5375
y Fe(myfile.fits[3])44 b(-)k(open)e(the)h(3rd)g(HDU)g(following)e(the)i
(primary)f(array)143 5488 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
5601 y(myfile.fits[EVENTS])f(-)k(open)g(the)g(extension)e(that)i(has)g
(EXTNAME)e(=)j('EVENTS')143 5714 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)p eop
%%Page: 116 124
116 123 bop 0 299 a Fj(116)1528 b Fh(CHAPTER)29 b(10.)113
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)143 555 y
Fe(myfile.fits[events,2,b])42 b(-)47 b(same,)f(but)h(also)g(requires)f
(XTENSION)f(=)j('BINTABLE')143 668 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
781 y(column)f(in)i(the)e(3rd)h(extension)f(of)h(the)g(file.)143
894 y(myfile.fits[3;)d(images\(exposure)g(>)j(100\)])g(-)g(as)g(above,)
f(but)h(opens)g(the)f(image)907 1007 y(in)h(the)g(first)f(row)h(that)g
(has)g(an)g('exposure')e(column)h(value)907 1120 y(greater)g(than)g
(100.)0 1449 y Ff(10.8)136 b(Image)46 b(Section)0 1699
y Fj(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 1812 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 1925 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 2038 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 2151 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 2264 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 2377 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 2490 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 2603 y(sp)s(eci\014er.)0 2763 y(Examples:)95
2996 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 3109 y(consisting)e(of)i(the)g(odd)g
(numbered)f(columns)g(\(1st)g(axis\))h(and)668 3222 y(the)g(even)g
(numbered)e(rows)i(\(2nd)g(axis\))f(of)h(the)g(image)f(in)i(the)668
3335 y(primary)e(array)g(of)i(the)e(file.)95 3561 y(myfile.fits[*,)e
(512:256])i(-)h(open)g(an)g(image)g(consisting)e(of)i(all)g(the)g
(columns)668 3674 y(in)g(the)g(input)g(image,)f(but)h(only)f(rows)h
(256)g(through)f(512.)668 3787 y(The)h(image)f(will)h(be)g(flipped)f
(along)g(the)h(2nd)g(axis)g(since)668 3900 y(the)g(starting)f(pixel)g
(is)h(greater)f(than)h(the)g(ending)f(pixel.)95 4125
y(myfile.fits[*:2,)e(512:256:2])h(-)i(same)g(as)g(above)f(but)h
(keeping)f(only)668 4238 y(every)h(other)f(row)h(and)g(column)f(in)h
(the)g(input)f(image.)95 4464 y(myfile.fits[-*,)e(*])j(-)h(copy)e(the)h
(entire)f(image,)g(flipping)g(it)h(along)668 4577 y(the)g(first)f
(axis.)95 4803 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
4916 y(is)g(in)h(the)e(3rd)h(extension)f(of)h(the)g(file.)95
5142 y(myfile.fits[4;)d(images\(12\)][1:10,1:10])e(-)48
b(open)e(an)h(image)g(consisting)286 5255 y(of)h(the)e(first)h(10)g
(pixels)f(in)h(both)g(dimensions.)e(The)i(original)286
5367 y(image)g(resides)f(in)h(the)g(12th)f(row)h(of)g(the)g('images')f
(vector)286 5480 y(column)g(in)i(the)f(table)f(in)h(the)g(4th)g
(extension)e(of)i(the)g(file.)0 5714 y Fj(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)p eop
%%Page: 117 125
117 124 bop 0 299 a Fh(10.9.)73 b(COLUMN)30 b(AND)h(KEYW)m(ORD)g(FIL)-8
b(TERING)30 b(SPECIFICA)-8 b(TION)1030 b Fj(117)0 555
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 668 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 781
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
894 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 1007 y(section)d(will)c(b)s(e)j(computed)g(correctly)-8
b(.)0 1360 y Ff(10.9)136 b(Column)45 b(and)f(Keyw)l(ord)i(Filtering)g
(Sp)t(eci\014cation)0 1615 y Fj(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 1728 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 1840 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 1953 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 2066 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 2179 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
2292 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 2405 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 2518 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
2678 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 2791 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.)136
3068 y Fc(\017)46 b Fj(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 3181 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 3294 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
3406 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
3519 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 3632 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
3837 y Fc(\017)46 b Fj(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 3950 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 4063 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 4176 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 4289 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 4401 y(to)d(ignore)f(it.)136
4606 y Fc(\017)46 b Fj(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 4719 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
4924 y Fc(\017)46 b Fj(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 5036 y(optionally)32 b(follo)m(w)m(ed)g(b)m
(y)h(the)g(data)h(t)m(yp)s(e)f(in)e(paren)m(theses,)j(follo)m(w)m(ed)f
(b)m(y)g(a)g(single)f(equals)g(sign)g(and)g(an)227 5149
y(expression)i(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 5262 y(in)m(teger)h(column)d(called)i('new)m(col')g
(\014lled)e(with)h(zeros\).)55 b(The)35 b(data)g(t)m(yp)s(e)h(is)e(sp)s
(eci\014ed)f(using)g(the)j(same)227 5375 y(syn)m(tax)j(that)g(is)e
(allo)m(w)m(ed)h(for)g(the)g(v)-5 b(alue)38 b(of)g(the)g(FITS)f(TF)m
(ORMn)h(k)m(eyw)m(ord)h(\(e.g.,)j('I',)d('J',)f('E',)h('D',)227
5488 y(etc.)66 b(for)38 b(binary)e(tables,)41 b(and)c('I8',)k(F12.3',)i
('E20.12',)g(etc.)65 b(for)38 b(ASCI)s(I)f(tables\).)65
b(If)37 b(the)i(data)g(t)m(yp)s(e)227 5601 y(is)34 b(not)h(sp)s
(eci\014ed)e(then)h(an)g(appropriate)g(data)h(t)m(yp)s(e)g(will)d(b)s
(e)i(c)m(hosen)h(dep)s(ending)d(on)i(the)h(form)f(of)h(the)227
5714 y(expression)43 b(\(ma)m(y)h(b)s(e)f(a)h(c)m(haracter)i(string,)g
(logical,)h(bit,)f(long)d(in)m(teger,)48 b(or)43 b(double)g(column\).)
79 b(An)p eop
%%Page: 118 126
118 125 bop 0 299 a Fj(118)1528 b Fh(CHAPTER)29 b(10.)113
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)227 555 y
Fj(appropriate)38 b(v)m(ector)j(coun)m(t)e(\(in)f(the)h(case)h(of)f
(binary)e(tables\))i(will)d(also)j(b)s(e)f(added)g(if)g(not)h
(explicitly)227 668 y(sp)s(eci\014ed.)227 819 y(When)26
b(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
932 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 1045 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 1158 y(the)c(k)m(eyw)m(ord)g
(name)f(\(instead)g(of)h(supplying)c(a)k(data)g(t)m(yp)s(e)g(as)f(in)f
(the)i(case)g(of)g(creating)g(a)g(new)f(column\).)136
1348 y Fc(\017)46 b Fj(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 1461 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
1722 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 1835 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 1948 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 2061 y(\014lter)29 b(sp)s(eci\014cation)h
(section.)0 2221 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 2334 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
2447 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 2560 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
2673 y(b)s(e)j(used)f(to)i(add)f(commen)m(ts)h(in)m(to)g(the)f(\014le.)
0 2833 y(Examples:)143 3095 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
3208 y(appear)h(in)g(the)g(filtered)e(input)i(file.)143
3434 y([col)g(Time;*raw])713 b(-)47 b(include)f(the)h(Time)g(column)f
(and)h(any)g(other)1670 3546 y(columns)f(whose)h(name)f(ends)h(with)g
('raw'.)143 3772 y([col)g(-TIME;)f(Good)h(==)g(STATUS])141
b(-)47 b(deletes)f(the)h(TIME)g(column)f(and)1670 3885
y(renames)g(the)h(status)f(column)g(to)i('Good')143 4111
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 4337 y([col)g(rate)f(=)i
(rate/exposure])139 b(-)48 b(recomputes)d(the)i(rate)f(column)g(by)i
(dividing)1670 4450 y(it)g(by)f(the)g(EXPOSURE)e(keyword)h(value.)0
4786 y Ff(10.10)136 b(Ro)l(w)46 b(Filtering)g(Sp)t(eci\014cation)0
5036 y Fj(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 5149 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
5262 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 5375 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 5488 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 5601 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 5714 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\).)p
eop
%%Page: 119 127
119 126 bop 0 299 a Fh(10.10.)73 b(R)m(O)m(W)31 b(FIL)-8
b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(119)0 555
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 668 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 781 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 1090 y Fd(10.10.1)113
b(General)37 b(Syn)m(tax)0 1313 y Fj(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 1426 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 1539 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 1652 y(means)30 b(that)h(the)g(ro)m(w)f
(will)e(b)s(e)i(excluded.)0 1812 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
1925 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 2038 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 2151 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 2311 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 2424 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 2537 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 2650 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 2763 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
2875 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 2988 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)0 3101 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 3214 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 3374 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
3487 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 Fj(-3)p Fc(g)p Fj(')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 3600 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 3713
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 3873 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 3986 y(b)s(o)s(olean)f
(op)s(erators)i(are)g(a)m(v)-5 b(ailable:)191 4262 y
Fe("equal")428 b(.eq.)46 b(.EQ.)h(==)95 b("not)46 b(equal")476
b(.ne.)94 b(.NE.)h(!=)191 4375 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 4488 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 4601 y("or")572 b(.or.)46 b(.OR.)h(||)95
b("and")762 b(.and.)46 b(.AND.)h(&&)191 4713 y("negation")236
b(.not.)46 b(.NOT.)h(!)95 b("approx.)45 b(equal\(1e-7\)")92
b(~)0 4989 y Fj(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 5102 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
5215 y(shell)c(to)i(ignore)f(it.)0 5375 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 5488 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 5601 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 5714 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\).)p eop
%%Page: 120 128
120 127 bop 0 299 a Fj(120)1528 b Fh(CHAPTER)29 b(10.)113
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191 555 y
Fe("addition")474 b(+)j("subtraction")d(-)191 668 y("multiplication")
186 b(*)477 b("division")618 b(/)191 781 y("negation")474
b(-)j("exponentiation")330 b(**)143 b(^)191 894 y("absolute)45
b(value")189 b(abs\(x\))237 b("cosine")762 b(cos\(x\))191
1007 y("sine")666 b(sin\(x\))237 b("tangent")714 b(tan\(x\))191
1120 y("arc)47 b(cosine")379 b(arccos\(x\))93 b("arc)47
b(sine")667 b(arcsin\(x\))191 1233 y("arc)47 b(tangent")331
b(arctan\(x\))93 b("arc)47 b(tangent")523 b(arctan2\(x,y\))191
1346 y("hyperbolic)45 b(cos")189 b(cosh\(x\))g("hyperbolic)45
b(sin")381 b(sinh\(x\))191 1458 y("hyperbolic)45 b(tan")189
b(tanh\(x\))g("round)47 b(to)g(nearest)f(int")94 b(round\(x\))191
1571 y("round)46 b(down)h(to)g(int")f(floor\(x\))141
b("round)47 b(up)g(to)g(int")333 b(ceil\(x\))191 1684
y("exponential")d(exp\(x\))237 b("square)46 b(root")524
b(sqrt\(x\))191 1797 y("natural)45 b(log")333 b(log\(x\))237
b("common)46 b(log")572 b(log10\(x\))191 1910 y("modulus")522
b(i)48 b(\045)f(j)286 b("random)46 b(#)i([0.0,1.0\)")188
b(random\(\))191 2023 y("minimum")522 b(min\(x,y\))141
b("maximum")714 b(max\(x,y\))191 2136 y("cumulative)45
b(sum")189 b(accum\(x\))141 b("sequential)45 b(difference")g
(seqdiff\(x\))191 2249 y("if-then-else")282 b(b?x:y)0
2484 y Fj(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 2597 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 2710
y(v)m(ector.)0 2870 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 2983 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)0
3096 y(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 3209 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
3322 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 3435 y(long)30 b(as)h(no)f(n)m(ull)e(v)-5 b(alues)30
b(are)h(presen)m(t.)0 3595 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
3708 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 3944 y Fe("real)46
b(to)h(integer")189 b(\(int\))46 b(x)239 b(\(INT\))46
b(x)764 4057 y("integer)f(to)i(real")190 b(\(float\))46
b(i)143 b(\(FLOAT\))45 b(i)0 4292 y Fj(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 4528 y Fe(#pi)667 b(3.1415...)284 b(#e)620
b(2.7182...)382 4641 y(#deg)f(#pi/180)380 b(#row)524
b(current)46 b(row)h(number)382 4754 y(#null)428 b(undefined)45
b(value)142 b(#snull)428 b(undefined)45 b(string)0 4989
y Fj(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 5102 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
5215 y(col1"\).)0 5375 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
5488 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 5488 28
4 v 33 w(1)24 b(and)f(v)-5 b(alue)p 2980 5488 V 32 w(2)25
b(can)f(b)s(e)f(in)m(teger)h(or)g(real)0 5601 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 5714 y(also)f(an)h(in)m(teger)f(or)h(real:)p
eop
%%Page: 121 129
121 128 bop 0 299 a Fh(10.10.)73 b(R)m(O)m(W)31 b(FIL)-8
b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(121)955 555
y Fe(near\(value_1,)44 b(value_2,)h(tolerance\))0 781
y Fj(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 894 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 1006 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 1232 y Fe("a)47 b(null)f(value?")667
b(ISNULL\(x\))430 1345 y("define)45 b(a)j(value)e(for)h(null")190
b(DEFNULL\(x,y\))0 1570 y Fj(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 1683 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 1796 y(returns)c(the)i(v)-5
b(alue)30 b(of)g(y)-8 b(.)0 2081 y Fd(10.10.2)113 b(Bit)35
b(Masks)0 2300 y Fj(Bit)g(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 2413 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 2638 y Fe(binary:)142 b
(b0110xx1010000101xxxx00)o(01)811 2751 y(octal:)190 b(o720x1)46
b(->)h(\(b111010000xxx001\))811 2864 y(hex:)286 b(h0FxD)94
b(->)47 b(\(b00001111xxxx1101\))0 3090 y Fj(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 3203 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
3363 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 3476 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
3589 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
3814 y Fe(flags)47 b(==)g(b0010011)191 3927 y(or)1336
4040 y(flags)g(.eq.)f(b10011)0 4265 y Fj(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
4378 y(than)30 b(equal)g(to)h(a)g(particular)e(b)s(o)s(olean)g(v)-5
b(alue:)1336 4604 y Fe(flags)47 b(<=)g(bxxx010xx)1336
4717 y(flags)g(.gt.)f(bxxx100xx)1336 4829 y(flags)h(.le.)f(b1xxxxxxx)0
5055 y Fj(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 5215 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 5328 y(the)g(second)f(expression)f
(ab)s(o)m(v)m(e.)0 5488 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 5601 y('&'\(AND\),)35
b(')p Fc(j)p Fj('\(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 5714 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:)p eop
%%Page: 122 130
122 129 bop 0 299 a Fj(122)1528 b Fh(CHAPTER)29 b(10.)113
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)1241 555 y
Fe(\(!flags\))45 b(==)j(b1101100)1241 668 y(\(flags)e(&)h(b1000001\))f
(==)h(bx000001)0 928 y Fj(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 1041 y(to)s(o.)0 1331 y Fd(10.10.3)113 b(V)-9 b(ector)36
b(Columns)0 1550 y Fj(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
1663 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 1776 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
1889 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 2002 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
2115 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 2228 y(b)s(o)s(olean)29 b(function.)0
2388 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 2501 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
2614 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 2774 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:)191 3034 y Fe("minimum")284 b(MIN\(V\))475
b("maximum")714 b(MAX\(V\))191 3147 y("average")284 b(AVERAGE\(V\))f
("median")762 b(MEDIAN\(V\))191 3259 y("sumation")236
b(SUM\(V\))475 b("standard)46 b(deviation")188 b(STDDEV\(V\))191
3372 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 3632 y Fj(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
3745 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
3858 y(computing)i(the)i(result.)0 4018 y(The)g(SUM)h(function)e
(literally)g(sums)h(all)f(the)i(elemen)m(ts)g(in)f(x,)h(returning)e(a)i
(scalar)g(v)-5 b(alue.)44 b(If)31 b(V)h(is)f(a)h(b)s(o)s(olean)0
4131 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 4244 y(of)h(elemen)m(ts)f(in)g(v)m(ector)i(V)e(whereas)
h(NV)-10 b(ALID)36 b(return)g(the)h(n)m(um)m(b)s(er)e(of)h(non-n)m(ull)
e(elemen)m(ts)j(in)e(the)i(v)m(ector.)0 4357 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
4470 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 4583 y(expression)668 4842 y Fe(SUM\()47
b(COL1)f(>)i(COL2)f(\))g(==)g(NELEM\()f(COL1)h(\))0 5102
y Fj(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 5215 y(COL2.)0 5375 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
5488 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 5601 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 5714
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)p eop
%%Page: 123 131
123 130 bop 0 299 a Fh(10.10.)73 b(R)m(O)m(W)31 b(FIL)-8
b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(123)0 555
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 668 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 781 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 894 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 1007 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 1120 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 1233
y(with)c($ARRA)-8 b(Y-4D$[1,2,3,4].)0 1393 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 1506 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 1619 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 1732 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 1844 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 2005 y(V)g(ariable-length)30 b(v)m(ector)i(columns)d(are)h
(not)h(supp)s(orted.)0 2165 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 2278 y(surrounded)35
b(b)m(y)j(curly)f(braces)i(\(')p Fc(fg)p Fj('\).)66 b(F)-8
b(or)38 b(example,)i(')p Fc(f)p Fj(1,3,6,1)p Fc(g)p Fj(')i(is)c(a)g
(4-elemen)m(t)h(v)m(ector)h(con)m(taining)e(the)0 2391
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
2503 y(The)c(elemen)m(ts)h(will)d(b)s(e)i(promoted)h(to)g(the)g
(highest)f(data)h(t)m(yp)s(e)g(presen)m(t.)38 b(An)m(y)22
b(elemen)m(ts)h(whic)m(h)f(are)h(themselv)m(es)0 2616
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 2729 y(v)m(ector.)0 3032 y Fd(10.10.4)113
b(Go)s(o)s(d)38 b(Time)e(In)m(terv)-6 b(al)36 b(Filtering)0
3254 y Fj(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 3367 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 3480 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 3592 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 3705 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
3818 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 3931 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 4202 y Fe(gtifilter\()45
b([)j("gtifile")d([,)i(expr)g([,)g("STARTCOL",)e("STOPCOL")g(])j(])f(])
g(\))191 4314 y(or)286 4427 y(gtifilter\()e([)j('gtifile')d([,)i(expr)g
([,)g('STARTCOL',)e('STOPCOL')g(])j(])f(])g(\))0 4698
y Fj(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 4811 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 4924 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
5036 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 5149 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 5262 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 5375 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 5488 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 5601 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
5714 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)p eop
%%Page: 124 132
124 131 bop 0 299 a Fj(124)1528 b Fh(CHAPTER)29 b(10.)113
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fj(time)35
b(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 668 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 781 y(is)h(sp)s(eci\014ed,)g(they)i(b)s
(oth)f(m)m(ust)g(b)s(e.)0 941 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
1054 y("gti\014lter\(\)")31 b(is)f(equiv)-5 b(alen)m(t)29
b(to)334 1322 y Fe(gtifilter\()45 b("",)i(TIME,)f("*START*",)f
("*STOP*")h(\))0 1590 y Fj(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 1703 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 1816
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
1929 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 2042 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
2154 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 2267 y(necessary)-8 b(.)0 2568 y Fd(10.10.5)113
b(Spatial)36 b(Region)h(Filtering)0 2788 y Fj(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 2901 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 3014 y(is)334 3282 y Fe(regfilter\()45 b("regfilename")f([)
k(,)f(Xexpr,)f(Yexpr)h([)g(,)h("wcs)e(cols")h(])g(])g(\))0
3550 y Fj(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 3663 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
3776 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 3889 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
4002 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 4115 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 4228 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 4388 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 4501 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 4613 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 4881 y Fe(regfilter\("region.reg",)41
b(XPOS,)47 b(YPOS\))0 5149 y Fj(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 5262 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
5375 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 5488 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 5601 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 5714 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)p eop
%%Page: 125 133
125 132 bop 0 299 a Fh(10.10.)73 b(R)m(O)m(W)31 b(FIL)-8
b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(125)0 555
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 668 y(to)j(calculate)g(the)f(co)s(ordinate.)0
828 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 941 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
1054 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 1167 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 1280 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 1393 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
1506 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 1619 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 1885 y Fe(regfilter\("rosat.reg",)42 b(X/32.+.5,)j
(Y/32.+.5\))0 2151 y Fj(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 2264 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 2377 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 2490 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
2650 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 2763 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 2876 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 2989 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 3149 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
3415 y Fe(Point)428 b(\()48 b(X1,)f(Y1)g(\))715 b(<-)48
b(One)f(pixel)f(square)g(region)334 3528 y(Line)476 b(\()48
b(X1,)f(Y1,)g(X2,)f(Y2)i(\))333 b(<-)48 b(One)f(pixel)f(wide)h(region)
334 3641 y(Polygon)332 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(...)g(\))95
b(<-)48 b(Rest)e(are)h(interiors)e(with)334 3754 y(Rectangle)236
b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(A)h(\))334 b(|)47 b(boundaries)e
(considered)334 3867 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 3980 y(Diamond)332
b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i(\))334 4093
y(Circle)380 b(\()48 b(Xc,)f(Yc,)g(R)g(\))334 4206 y(Annulus)332
b(\()48 b(Xc,)f(Yc,)g(Rin,)f(Rout)h(\))334 4319 y(Ellipse)332
b(\()48 b(Xc,)f(Yc,)g(Rx,)f(Ry,)h(A)h(\))334 4431 y(Elliptannulus)c(\()
k(Xc,)f(Yc,)g(Rinx,)f(Riny,)g(Routx,)g(Routy,)g(Ain,)h(Aout)g(\))334
4544 y(Sector)380 b(\()48 b(Xc,)f(Yc,)g(Amin,)f(Amax)h(\))0
4811 y Fj(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 4924 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 5036
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 5149 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 5262
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 5375 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 5488 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 5601 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
5714 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)p eop
%%Page: 126 134
126 133 bop 0 299 a Fj(126)1528 b Fh(CHAPTER)29 b(10.)113
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fj(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 668 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 781 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 941 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 1054 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 1167 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 1327 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 1440
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 1553 y(dimensional)28
b(p)s(oin)m(t)h(is)g(in)g(the)i(region)f(or)g(not:)191
1815 y Fe("point)46 b(in)h(a)h(circular)d(region")477
1927 y(circle\(xcntr,ycntr,radius)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191
2153 y("point)h(in)h(an)g(elliptical)e(region")430 2266
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 2492 y("point)h(in)h(a)h
(rectangular)c(region")620 2605 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
2831 y(where)334 2944 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
3057 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 3169 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
3282 y(\(radius\))f(is)h(half)f(the)h(diameter)f(of)h(the)g(circle)334
3395 y(\(rotation\))e(is)i(the)g(angle\(degrees\))d(that)j(the)g
(region)f(is)h(rotated)f(with)620 3508 y(respect)g(to)h
(\(xcntr,ycntr\))334 3621 y(\(Xcoord,Ycoord\))d(are)j(the)g(\(x,y\))f
(coordinates)f(to)i(test,)f(usually)g(column)620 3734
y(names)334 3847 y(NOTE:)g(each)h(parameter)e(can)i(itself)f(be)i(an)f
(expression,)d(not)j(merely)f(a)620 3960 y(column)h(name)f(or)h
(constant.)0 4253 y Fd(10.10.6)113 b(Example)36 b(Ro)m(w)h(Filters)191
4472 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 4585
y(than)94 b(fifth)47 b(magnitude)e(\(note)h(that)1766
4698 y(the)h(initial)f(space)g(is)h(necessary)e(to)1766
4811 y(prevent)h(it)h(from)g(being)f(treated)g(as)h(a)1766
4924 y(binning)f(specification\))191 5149 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 5375 y([IMAGE[4,5])f(.gt.)h(100])476 b(-)48
b(Extract)e(all)h(rows)f(that)h(have)g(the)1766 5488
y(\(4,5\))f(component)g(of)h(the)g(IMAGE)f(column)1766
5601 y(greater)g(than)g(100)p eop
%%Page: 127 135
127 134 bop 0 299 a Fh(10.11.)113 b(BINNING)32 b(OR)e(HISTOGRAMMING)g
(SPECIFICA)-8 b(TION)1223 b Fj(127)191 555 y Fe([abs\(sin\(theta)44
b(*)j(#deg\)\))f(<)i(0.5])e(-)i(Extract)e(all)h(rows)f(having)g(the)
1766 668 y(absolute)f(value)i(of)g(the)g(sine)g(of)g(theta)1766
781 y(less)94 b(than)47 b(a)g(half)g(where)f(the)h(angles)1766
894 y(are)g(tabulated)e(in)i(degrees)191 1120 y([SUM\()f(SPEC)h(>)g
(3*BACKGRND)e(\)>=1])94 b(-)48 b(Extract)e(all)h(rows)f(containing)f(a)
1766 1233 y(spectrum,)g(held)i(in)g(vector)f(column)1766
1346 y(SPEC,)g(with)h(at)g(least)f(one)h(value)g(3)1766
1458 y(times)f(greater)g(than)h(the)g(background)1766
1571 y(level)f(held)h(in)g(a)h(keyword,)d(BACKGRND)191
1797 y([VCOL=={1,4,2}])759 b(-)48 b(Extract)e(all)h(rows)f(whose)h
(vector)f(column)1766 1910 y(VCOL)h(contains)e(the)i(3-elements)e(1,)i
(4,)g(and)1766 2023 y(2.)191 2249 y([@rowFilter.txt])711
b(-)48 b(Extract)e(rows)g(using)h(the)g(expression)1766
2362 y(contained)e(within)h(the)h(text)g(file)1766 2475
y(rowFilter.txt)191 2700 y([gtifilter\(\)])855 b(-)48
b(Search)e(the)h(current)f(file)g(for)h(a)h(GTI)239 2813
y(extension,)92 b(filter)i(the)47 b(TIME)239 2926 y(column)f(in)h(the)g
(current)f(table,)g(using)239 3039 y(START/STOP)f(times)h(taken)g(from)
239 3152 y(columns)f(in)j(the)f(GTI)94 b(extension)191
3378 y([regfilter\("pow.reg"\)])423 b(-)48 b(Extract)e(rows)g(which)h
(have)f(a)i(coordinate)1766 3491 y(\(as)f(given)f(in)h(the)g(X)h(and)f
(Y)g(columns\))1766 3604 y(within)f(the)h(spatial)f(region)g(specified)
1766 3717 y(in)h(the)g(pow.reg)f(region)g(file.)191 3942
y([regfilter\("pow.reg",)c(Xs,)47 b(Ys\)])f(-)i(Same)f(as)g(above,)f
(except)g(that)h(the)1766 4055 y(Xs)g(and)g(Ys)g(columns)f(will)h(be)g
(used)f(to)1766 4168 y(determine)f(the)i(coordinate)e(of)i(each)1766
4281 y(row)g(in)g(the)g(table.)0 4664 y Ff(10.11)181
b(Binning)44 b(or)h(Histogramming)i(Sp)t(eci\014cation)0
4924 y Fj(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 5036 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 5149
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 5262 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 5375 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 5488 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 5601 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
5714 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)p eop
%%Page: 128 136
128 135 bop 0 299 a Fj(128)1528 b Fh(CHAPTER)29 b(10.)113
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0 555 y Fj(exp)s(ecting)30
b(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 715 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 828
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 941 y(precision)i(\015oating)j(p)s
(oin)m(t\))e(to)i(the)g('bin')e(k)m(eyw)m(ord)i(\(e.g.)54
b('[binr)32 b(X]')j(creates)h(a)f(real)f(\015oating)g(p)s(oin)m(t)f
(image\).)0 1054 y(If)h(the)i(data)f(t)m(yp)s(e)g(is)f(not)i
(explicitly)c(sp)s(eci\014ed)h(then)i(a)g(32-bit)h(in)m(teger)f(image)g
(will)d(b)s(e)j(created)h(b)m(y)e(default,)0 1167 y(unless)23
b(the)j(w)m(eigh)m(ting)e(option)h(is)f(also)h(sp)s(eci\014ed)e(in)h
(whic)m(h)g(case)i(the)f(image)h(will)c(ha)m(v)m(e)k(a)g(32-bit)f
(\015oating)g(p)s(oin)m(t)0 1280 y(data)31 b(t)m(yp)s(e)g(b)m(y)f
(default.)0 1440 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 1553 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 1767 y Fe([bin{bijrd})92
b(Xcol=min:max:binsize,)42 b(Ycol=)47 b(...,)f(Zcol=...,)f(Tcol=...;)h
(weight])0 1982 y Fj(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 2095 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
2208 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 2321 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 2433
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
2546 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 2659 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 2819 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 2932 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
3045 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 3158 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
3271 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 3431 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
3544 y(binning)27 b(expression)i(as)i(sho)m(wn)f(in)f(these)i
(examples:)191 3759 y Fe([bin)47 b(x)g(=)g(:512:2])94
b(-)47 b(use)g(default)f(minimum)g(value)191 3871 y([bin)h(x)g(=)g
(1::2])190 b(-)47 b(use)g(default)f(maximum)g(value)191
3984 y([bin)h(x)g(=)g(1:512])142 b(-)47 b(use)g(default)f(bin)h(size)
191 4097 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 4210 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
4323 y([bin)g(x)g(=)g(2])334 b(-)47 b(use)g(default)f(minimum)g(and)h
(maximum)f(values)191 4436 y([bin)h(x])524 b(-)47 b(use)g(default)f
(minimum,)g(maximum)g(and)g(bin)h(size)191 4549 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 4662 y([bin])619 b(-)47 b(default)f(2-D)h(image)0
4876 y Fj(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 4989 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 5102 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 5215 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 5328 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 5488 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 5601 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 5714 y(sp)s
(eci\014cation,)d(as)i(in:)p eop
%%Page: 129 137
129 136 bop 0 299 a Fh(10.11.)113 b(BINNING)32 b(OR)e(HISTOGRAMMING)g
(SPECIFICA)-8 b(TION)1223 b Fj(129)191 555 y Fe([bin)47
b(\(X,Y\)=1:512:2])191 668 y([bin)g(\(X,Y\))f(=)h(5])0
888 y Fj(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 1001 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
1114 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 1227 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 1340 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
1453 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 1566 y(basis,)h(will)f(b)s(e)i
(used.)0 1726 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 1839 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
1952 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
2112 y(F)-8 b(or)25 b(complex)f(or)g(commonly)f(used)h(histograms,)h
(one)f(can)h(also)f(place)g(its)f(description)f(in)m(to)i(a)h(text)g
(\014le)e(and)h(im-)0 2225 y(p)s(ort)e(it)f(in)m(to)h(the)h(binning)c
(sp)s(eci\014cation)i(using)f(the)j(syn)m(tax)f([bin)f
(@\014lename.txt].)38 b(The)22 b(\014le's)f(con)m(ten)m(ts)j(can)e(ex-)
0 2338 y(tend)h(o)m(v)m(er)i(m)m(ultiple)c(lines,)i(although)g(it)g(m)m
(ust)g(still)e(conform)i(to)h(the)g(no-spaces)g(rule)e(for)h(the)h
(min:max:binsize)0 2451 y(syn)m(tax)35 b(and)f(eac)m(h)h(axis)f(sp)s
(eci\014cation)g(m)m(ust)g(still)e(b)s(e)i(comma-separated.)55
b(An)m(y)34 b(lines)f(in)g(the)i(external)f(text)0 2564
y(\014le)26 b(that)h(b)s(egin)f(with)f(2)j(slash)d(c)m(haracters)k
(\('//'\))g(will)24 b(b)s(e)i(ignored)g(and)g(ma)m(y)i(b)s(e)e(used)g
(to)i(add)e(commen)m(ts)i(in)m(to)0 2676 y(the)j(\014le.)0
2837 y(Examples:)191 3057 y Fe([bini)46 b(detx,)h(dety])762
b(-)47 b(2-D,)g(16-bit)f(integer)g(histogram)1861 3170
y(of)i(DETX)e(and)h(DETY)g(columns,)e(using)1861 3283
y(default)h(values)g(for)h(the)g(histogram)1861 3396
y(range)g(and)g(binsize)191 3621 y([bin)g(\(detx,)f(dety\)=16;)f
(/exposure])g(-)i(2-D,)g(32-bit)f(real)h(histogram)e(of)i(DETX)1861
3734 y(and)g(DETY)g(columns)f(with)g(a)i(bin)f(size)f(=)i(16)1861
3847 y(in)g(both)e(axes.)h(The)f(histogram)g(values)1861
3960 y(are)h(divided)f(by)h(the)g(EXPOSURE)f(keyword)1861
4073 y(value.)191 4299 y([bin)h(time=TSTART:TSTOP:0.1])280
b(-)47 b(1-D)g(lightcurve,)e(range)h(determined)f(by)1861
4412 y(the)i(TSTART)f(and)h(TSTOP)g(keywords,)1861 4525
y(with)g(0.1)g(unit)g(size)f(bins.)191 4751 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 4863 y(of)i(the)e(PHA)h(column)f(for)h(the)g(X)h(axis,)
1861 4976 y(and)f(1000)g(bins)g(in)g(the)g(range)1861
5089 y(8000.)g(to)g(8100.)f(for)h(the)g(Y)h(axis.)191
5315 y([bin)f(@binFilter.txt])616 b(-)47 b(Use)g(the)g(contents)f(of)h
(the)g(text)f(file)1861 5428 y(binFilter.txt)f(for)h(the)h(binning)1861
5541 y(specifications.)p eop
%%Page: 130 138
130 137 bop 0 299 a Fj(130)1528 b Fh(CHAPTER)29 b(10.)113
b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)p eop
%%Page: 131 139
131 138 bop 0 1225 a Fg(Chapter)65 b(11)0 1687 y Fm(T)-19
b(emplate)76 b(Files)0 2180 y Fj(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 Ff(11.1)136 b(Detailed)46
b(T)-11 b(emplate)46 b(Line)f(F)-11 b(ormat)0 3438 y
Fj(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 Fj(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.)1882
5942 y(131)p eop
%%Page: 132 140
132 139 bop 0 299 a Fj(132)2250 b Fh(CHAPTER)29 b(11.)72
b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Fj(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 Fj(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 Ff(11.2)136 b(Auto-indexing)45 b(of)g(Keyw)l(ords)0
3623 y Fj(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 Fj(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: 133 141
133 140 bop 0 299 a Fh(11.3.)73 b(TEMPLA)-8 b(TE)30 b(P)-8
b(ARSER)30 b(DIRECTIVES)1982 b Fj(133)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 Ff(11.3)136
b(T)-11 b(emplate)45 b(P)l(arser)h(Directiv)l(es)0 1251
y Fj(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 Fj(,)29 b(and)48 1476
y Fe(\\end)p Fj(.)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 Fj(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 Fj(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 Ff(11.4)136 b(F)-11
b(ormal)45 b(T)-11 b(emplate)46 b(Syn)l(tax)0 5350 y
Fj(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: 134 142
134 141 bop 0 299 a Fj(134)2250 b Fh(CHAPTER)29 b(11.)72
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 Fj(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 Ff(11.5)136 b(Errors)0
2745 y Fj(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 Ff(11.6)136
b(Examples)0 3667 y Fj(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 Fj(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: 135 143
135 142 bop 0 299 a Fh(11.6.)73 b(EXAMPLES)2993 b Fj(135)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 Fj(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: 136 144
136 143 bop 0 299 a Fj(136)2250 b Fh(CHAPTER)29 b(11.)72
b(TEMPLA)-8 b(TE)30 b(FILES)p eop
%%Page: 137 145
137 144 bop 0 1225 a Fg(Chapter)65 b(12)0 1687 y Fm(Lo)6
b(cal)78 b(FITS)e(Con)-6 b(v)g(en)g(tions)0 2180 y Fj(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 2293 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 2406 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 2518 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
2631 y(in)m(terface.)0 3275 y Ff(12.1)136 b(64-Bit)45
b(Long)g(In)l(tegers)0 3587 y Fj(CFITSIO)38 b(can)i(read)f(and)g(write)
g(FITS)f(images)i(or)g(table)f(columns)f(con)m(taining)h(64-bit)h(in)m
(teger)g(data)g(v)-5 b(al-)0 3700 y(ues.)63 b(This)37
b(data)h(t)m(yp)s(e)g(is)f(not)i(recognized)f(in)f(the)h(o\016cial)f
(FITS)h(Standard)e(de\014nition)g(do)s(cumen)m(t,)k(but)d(it)0
3813 y(is)31 b(lik)m(ely)f(that)i(FITS)f(will)e(ev)m(en)m(tually)i
(supp)s(ort)f(this)h(data)h(t)m(yp)s(e,)g(esp)s(ecially)e(as)i
(computers)f(that)i(run)d(64-bit)0 3926 y(op)s(erating)25
b(systems)h(b)s(ecome)f(more)h(common.)40 b(Supp)s(ort)23
b(for)i(reading)g(and)g(writing)e(64-bit)j(in)m(tegers)g(in)e(CFIT-)0
4039 y(SIO)32 b(can)i(b)s(e)f(con)m(trolled)g(with)f(the)i(#de\014ne)e
(statemen)m(t)k(at)e(the)g(b)s(eginning)d(of)i(the)h(\014tsio2.h)f
(\014le)f(b)m(y)i(setting)0 4152 y(SUPPOR)-8 b(T)p 444
4152 28 4 v 32 w(64BIT)p 729 4152 V 33 w(INTEGERS)30
b(to)h(1)g(\(enable\))f(or)h(0)f(\(disable\).)0 4312
y(Under)k(the)h(con)m(v)m(en)m(tion)h(used)e(b)m(y)h(CFITSIO,)e(FITS)h
(64-bit)h(images)g(ha)m(v)m(e)h(BITPIX)f(=)f(64,)j(and)e(the)g(64-bit)0
4425 y(binary)e(table)i(columns)e(ha)m(v)m(e)j(TF)m(ORMn)f(=)f('K'.)i
(The)e(use)g(of)h(these)h(data)f(t)m(yp)s(es)g(on)g(platforms)e(where)i
(the)0 4538 y(size)26 b(of)h(a)g('long')f(\(or)h('longlong'\))g(in)m
(teger)g(=)f(8)h(b)m(ytes)g(is)e(rather)i(in)m(tuitiv)m(e.)38
b(CFITSIO)25 b(will)e(write)j(64-bit)h('long')0 4650
y(v)-5 b(ariable)29 b(v)-5 b(alues)30 b(to)g(the)h(FITS)e(\014le)h(and)
f(read)h(them)g(bac)m(k)h(in)m(to)g('long')f(v)-5 b(ariables)29
b(just)g(as)i(one)f(w)m(ould)f(exp)s(ect.)0 4763 y(CFITSIO)j(also)h
(supp)s(orts)f(implicit)e(data)k(t)m(yp)s(e)g(con)m(v)m(ersion)f(b)s
(et)m(w)m(een)i(64-bit)e(in)m(teger)h(images)f(and)g(columns)0
4876 y(and)24 b(an)m(y)h(other)f(supp)s(orted)f(data)i(t)m(yp)s(e,)h
(although)e(some)h(loss)f(of)g(n)m(umerical)f(precision)g(or)i(n)m
(umerical)e(o)m(v)m(er\015o)m(w)0 4989 y(is)29 b(lik)m(ely)g(in)g(this)
h(case.)0 5149 y(The)h(situation)f(is)h(more)g(di\016cult)e(on)j
(32-bit)f(computing)g(platforms)f(that)i(do)f(not)h(supp)s(ort)e(an)h
(in)m(trinsic)e(64-)0 5262 y(bit)37 b(in)m(teger)i(data)g(t)m(yp)s(e.)
65 b(In)38 b(this)f(case)i(it)f(is)f(not)i(p)s(ossible)d(to)j(return)e
(the)i(full)d(64)j(precision)e(of)h(the)h(FITS)0 5375
y(data)29 b(v)-5 b(alues)27 b(when)g(reading)g(the)i(v)-5
b(alues)27 b(in)m(to)h(a)g(program)g(v)-5 b(ariable.)39
b(CFITSIO)26 b(will)g(still)g(con)m(v)m(ert)j(the)g(64-bit)0
5488 y(in)m(teger)d(v)-5 b(alues)25 b(in)m(to)g(an)m(y)h(other)g(supp)s
(orted)e(data)i(t)m(yp)s(e;)i(the)d(64-bit)h(double)e(data)j(t)m(yp)s
(e)e(is)g(probably)f(the)i(most)0 5601 y(useful)33 b(in)g(this)h(case.)
55 b(It)35 b(only)f(pro)m(vides)f(ab)s(out)i(52-bits)g(of)g(precision)e
(in)g(the)i(man)m(tissa,)h(ho)m(w)m(ev)m(er,)i(so)d(some)0
5714 y(lose)30 b(of)h(precision)d(is)i(p)s(ossible.)1882
5942 y(137)p eop
%%Page: 138 146
138 145 bop 0 299 a Fj(138)1741 b Fh(CHAPTER)30 b(12.)112
b(LOCAL)29 b(FITS)h(CONVENTIONS)0 555 y Ff(12.2)136 b(Long)44
b(String)i(Keyw)l(ord)f(V)-11 b(alues.)0 805 y Fj(The)43
b(length)h(of)g(a)g(standard)g(FITS)f(string)g(k)m(eyw)m(ord)h(is)f
(limited)f(to)j(68)f(c)m(haracters)i(b)s(ecause)e(it)f(m)m(ust)h(\014t)
0 918 y(en)m(tirely)33 b(within)e(a)j(single)f(FITS)g(header)g(k)m(eyw)
m(ord)i(record.)50 b(In)33 b(some)i(instances)e(it)g(is)g(necessary)h
(to)h(enco)s(de)0 1031 y(strings)28 b(longer)i(than)f(this)f(limit,)g
(so)i(CFITSIO)e(supp)s(orts)g(a)h(lo)s(cal)g(con)m(v)m(en)m(tion)i(in)d
(whic)m(h)h(the)g(string)g(v)-5 b(alue)29 b(is)0 1144
y(con)m(tin)m(ued)35 b(o)m(v)m(er)h(m)m(ultiple)c(k)m(eyw)m(ords.)55
b(This)33 b(con)m(tin)m(uation)h(con)m(v)m(en)m(tion)i(uses)f(an)f(amp)
s(ersand)g(c)m(haracter)i(at)0 1257 y(the)26 b(end)f(of)h(eac)m(h)g
(substring)e(to)i(indicate)f(that)h(it)g(is)e(con)m(tin)m(ued)i(on)f
(the)h(next)g(k)m(eyw)m(ord,)h(and)e(the)h(con)m(tin)m(uation)0
1370 y(k)m(eyw)m(ords)40 b(all)f(ha)m(v)m(e)i(the)f(name)g(CONTINUE)f
(without)g(an)h(equal)f(sign)g(in)g(column)g(9.)69 b(The)40
b(string)e(v)-5 b(alue)0 1483 y(ma)m(y)33 b(b)s(e)f(con)m(tin)m(ued)g
(in)g(this)f(w)m(a)m(y)i(o)m(v)m(er)h(as)f(man)m(y)g(additional)d
(CONTINUE)i(k)m(eyw)m(ords)h(as)f(is)g(required.)45 b(The)0
1596 y(follo)m(wing)34 b(lines)f(illustrate)g(this)h(con)m(tin)m
(uation)h(con)m(v)m(en)m(tion)i(whic)m(h)c(is)i(used)f(in)g(the)h(v)-5
b(alue)35 b(of)g(the)g(STRKEY)0 1709 y(k)m(eyw)m(ord:)0
1939 y Fe(LONGSTRN=)45 b('OGIP)i(1.0')189 b(/)48 b(The)f(OGIP)f(Long)h
(String)f(Convention)f(may)i(be)g(used.)0 2051 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 2164 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 2277 y(CONTINUE)e('FITS)47 b(header.')e(/)j(This)e(is)h(another)f
(optional)g(comment.)0 2507 y Fj(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 2620 y(that)i(uses)f(this)f
(longstring)g(con)m(v)m(en)m(tion)j(as)f(a)f(w)m(arning)g(to)h(an)m(y)g
(soft)m(w)m(are)g(that)g(m)m(ust)g(read)f(the)h(k)m(eyw)m(ords.)41
b(A)0 2733 y(routine)c(called)f(\014ts)p 712 2733 28
4 v 33 w(write)p 948 2733 V 32 w(k)m(ey)p 1113 2733 V
33 w(longw)m(arn)h(has)g(b)s(een)g(pro)m(vided)f(in)h(CFITSIO)e(to)k
(write)d(this)h(k)m(eyw)m(ord)h(if)e(it)0 2846 y(do)s(es)30
b(not)h(already)f(exist.)0 3006 y(This)f(long)h(string)f(con)m(v)m(en)m
(tion)i(is)f(supp)s(orted)e(b)m(y)j(the)f(follo)m(wing)f(CFITSIO)g
(routines:)191 3236 y Fe(fits_write_key_longstr)89 b(-)48
b(write)e(a)i(long)e(string)g(keyword)g(value)191 3349
y(fits_insert_key_longstr)41 b(-)48 b(insert)e(a)h(long)g(string)f
(keyword)g(value)191 3462 y(fits_modify_key_longstr)41
b(-)48 b(modify)e(a)h(long)g(string)f(keyword)g(value)191
3575 y(fits_update_key_longstr)41 b(-)48 b(modify)e(a)h(long)g(string)f
(keyword)g(value)191 3688 y(fits_read_key_longstr)137
b(-)48 b(read)94 b(a)48 b(long)e(string)g(keyword)g(value)191
3801 y(fits_delete_key)425 b(-)48 b(delete)e(a)h(keyword)0
4030 y Fj(The)36 b(\014ts)p 320 4030 V 32 w(read)p 524
4030 V 33 w(k)m(ey)p 690 4030 V 34 w(longstr)f(routine)h(is)f(unique)f
(among)j(all)f(the)g(CFITSIO)f(routines)g(in)g(that)i(it)f(in)m
(ternally)0 4143 y(allo)s(cates)e(memory)f(for)h(the)f(long)g(string)g
(v)-5 b(alue;)35 b(all)d(the)i(other)g(CFITSIO)e(routines)g(that)i
(deal)f(with)g(arra)m(ys)0 4256 y(require)38 b(that)i(the)g(calling)e
(program)h(pre-allo)s(cate)h(adequate)g(space)g(to)g(hold)e(the)i(arra)
m(y)g(of)f(data.)69 b(Conse-)0 4369 y(quen)m(tly)-8 b(,)30
b(programs)g(whic)m(h)f(use)h(the)g(\014ts)p 1443 4369
V 32 w(read)p 1647 4369 V 33 w(k)m(ey)p 1813 4369 V 34
w(longstr)f(routine)g(m)m(ust)h(b)s(e)g(careful)f(to)i(free)g(the)f
(allo)s(cated)0 4482 y(memory)g(for)g(the)h(string)e(when)h(it)g(is)f
(no)h(longer)g(needed.)0 4642 y(The)g(follo)m(wing)f(2)h(routines)g
(also)g(ha)m(v)m(e)i(limited)c(supp)s(ort)g(for)i(this)g(long)g(string)
f(con)m(v)m(en)m(tion,)286 4872 y Fe(fits_modify_key_str)43
b(-)k(modify)f(an)i(existing)d(string)h(keyword)g(value)286
4985 y(fits_update_key_str)d(-)k(update)f(a)i(string)e(keyword)g(value)
0 5215 y Fj(in)23 b(that)i(they)f(will)e(correctly)i(o)m(v)m(erwrite)h
(an)f(existing)f(long)h(string)f(v)-5 b(alue,)26 b(but)d(the)h(new)g
(string)f(v)-5 b(alue)24 b(is)f(limited)0 5328 y(to)31
b(a)g(maxim)m(um)e(of)i(68)g(c)m(haracters)h(in)d(length.)0
5488 y(The)g(more)h(commonly)g(used)f(CFITSIO)f(routines)h(to)h(write)f
(string)g(v)-5 b(alued)29 b(k)m(eyw)m(ords)h(\(\014ts)p
3254 5488 V 33 w(up)s(date)p 3563 5488 V 32 w(k)m(ey)h(and)0
5601 y(\014ts)p 127 5601 V 32 w(write)p 362 5601 V 32
w(k)m(ey\))j(do)e(not)h(supp)s(ort)d(this)h(long)h(string)g(con)m(v)m
(en)m(tion)h(and)f(only)f(supp)s(ort)g(strings)g(up)g(to)i(68)g(c)m
(har-)0 5714 y(acters)g(in)e(length.)47 b(This)30 b(has)i(b)s(een)g
(done)g(delib)s(erately)e(to)j(prev)m(en)m(t)g(programs)f(from)g(inadv)
m(erten)m(tly)g(writing)p eop
%%Page: 139 147
139 146 bop 0 299 a Fh(12.3.)73 b(ARRA)-8 b(YS)30 b(OF)h(FIXED-LENGTH)g
(STRINGS)e(IN)h(BINAR)-8 b(Y)32 b(T)-8 b(ABLES)871 b
Fj(139)0 555 y(k)m(eyw)m(ords)25 b(using)e(this)h(non-standard)f(con)m
(v)m(en)m(tion)j(without)e(the)h(explicit)e(in)m(ten)m(t)i(of)g(the)f
(programmer)h(or)f(user.)0 668 y(The)36 b(\014ts)p 320
668 28 4 v 32 w(write)p 555 668 V 32 w(k)m(ey)p 720 668
V 34 w(longstr)g(routine)f(m)m(ust)i(b)s(e)f(called)g(instead)f(to)j
(write)d(long)h(strings.)58 b(This)35 b(routine)h(can)0
781 y(also)30 b(b)s(e)g(used)g(to)h(write)e(ordinary)g(string)g(v)-5
b(alues)30 b(less)g(than)g(68)h(c)m(haracters)h(in)d(length.)0
1128 y Ff(12.3)136 b(Arra)l(ys)45 b(of)g(Fixed-Length)g(Strings)g(in)g
(Binary)f(T)-11 b(ables)0 1381 y Fj(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 1494
y(that)24 b(a)f(c)m(haracter)i(column)d(con)m(tains)h(an)g(arra)m(y)h
(of)f(\014xed-length)f(strings.)37 b(T)-8 b(o)24 b(supp)s(ort)d(this)h
(feature,)j(CFITSIO)0 1607 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
1720 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 1833 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
1946 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 2059 y(length)c(strings.)38 b(This)24 b(con)m(v)m(en)m
(tion)k(is)d(recognized)i(b)m(y)f(the)g(CFITSIO)f(routines)g(that)i
(read)f(or)h(write)e(strings)g(in)0 2171 y(binary)30
b(tables.)44 b(The)31 b(Binary)g(T)-8 b(able)31 b(de\014nition)e(do)s
(cumen)m(t)i(sp)s(eci\014es)g(that)h(other)g(optional)e(c)m(haracters)j
(ma)m(y)0 2284 y(follo)m(w)f(the)h(data)g(t)m(yp)s(e)g(co)s(de)g(in)e
(the)i(TF)m(ORM)g(k)m(eyw)m(ord,)h(so)f(this)e(lo)s(cal)h(con)m(v)m(en)
m(tion)i(is)e(in)f(compliance)h(with)0 2397 y(the)f(FITS)e(standard)h
(although)g(other)g(FITS)g(readers)g(ma)m(y)h(not)g(recognize)g(this)e
(con)m(v)m(en)m(tion.)0 2557 y(The)c(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
2670 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 2783 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
2896 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(CFITSIO)29 b(do)s(es)h(not)g(curren)m(tly)g(supp)s(ort)
e(this)i(prop)s(osal.)0 3243 y Ff(12.4)136 b(Keyw)l(ord)45
b(Units)h(Strings)0 3496 y Fj(One)37 b(limitation)f(of)h(the)h(curren)m
(t)g(FITS)e(Standard)h(is)g(that)h(it)f(do)s(es)g(not)h(de\014ne)f(a)h
(sp)s(eci\014c)e(con)m(v)m(en)m(tion)j(for)0 3609 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 3722 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
3835 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 3948 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 4108 y(T)-8 b(o)27 b(solv)m(e)h(this)d
(problem,)i(CFITSIO)e(uses)i(a)g(lo)s(cal)f(con)m(v)m(en)m(tion)i(in)e
(whic)m(h)f(the)j(k)m(eyw)m(ord)f(units)e(are)j(enclosed)e(in)0
4221 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
4334 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 4447 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
4718 y Fe(EXPOSURE=)713 b(1800.0)47 b(/)g([s])g(elapsed)f(exposure)f
(time)0 4831 y(V_HELIO)h(=)763 b(16.23)47 b(/)g([km)g(s**\(-1\)])e
(heliocentric)g(velocity)0 4944 y(LAMBDA)94 b(=)763 b(5400.)47
b(/)g([angstrom])e(central)h(wavelength)0 5057 y(FLUX)190
b(=)47 b(4.9033487787637465E-30)42 b(/)47 b([J/cm**2/s])e(average)h
(flux)0 5328 y Fj(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 5441 y(tion)j(that)h(the)f(preferred)g(unit)e(for)j
(angle)f(is)f('deg')j(for)e(degrees.)0 5601 y(The)38
b(\014ts)p 322 5601 V 33 w(read)p 527 5601 V 33 w(k)m(ey)p
693 5601 V 33 w(unit)g(and)g(\014ts)p 1234 5601 V 32
w(write)p 1469 5601 V 32 w(k)m(ey)p 1634 5601 V 34 w(unit)f(routines)h
(in)g(CFITSIO)f(read)i(and)f(write,)j(resp)s(ectiv)m(ely)-8
b(,)0 5714 y(the)31 b(k)m(eyw)m(ord)f(unit)f(strings)h(in)f(an)h
(existing)f(k)m(eyw)m(ord.)p eop
%%Page: 140 148
140 147 bop 0 299 a Fj(140)1741 b Fh(CHAPTER)30 b(12.)112
b(LOCAL)29 b(FITS)h(CONVENTIONS)0 555 y Ff(12.5)136 b(HIERAR)l(CH)46
b(Con)l(v)l(en)l(tion)g(for)f(Extended)h(Keyw)l(ord)f(Names)0
805 y Fj(CFITSIO)c(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 918 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 1031 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
1144 y(FITS)30 b(k)m(eyw)m(ord)g(suc)m(h)h(as:)0 1395
y Fe(HIERARCH)46 b(ESO)g(INS)h(FOCU)g(POS)g(=)g(-0.00002500)e(/)j
(Focus)e(position)0 1646 y Fj(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
1759 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 Fj(in)g(this)g
(example\))h(b)s(e-)0 1872 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 1985 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 2098 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
2211 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 2371 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 2484 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 2735 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
2848 y(HIERARCH)g(XTE$TEMP)f(=)j(98.6)e(/)i(Keyword)d(contains)h(the)h
('$')g(character)0 2961 y(HIERARCH)f(Earth)g(is)h(a)h(star)e(=)i(F)f(/)
h(Keyword)d(contains)h(embedded)f(spaces)0 3212 y Fj(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
3325 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 3438 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 3551 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 3664 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 3776 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 3889 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 4002 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 4115 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
4228 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 4341 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
4454 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 4567 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 4680
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 4793 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 4906 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
5238 y Ff(12.6)136 b(Tile-Compressed)46 b(Image)g(F)-11
b(ormat)0 5488 y Fj(CFITSIO)36 b(supp)s(orts)f(a)j(con)m(v)m(en)m(tion)
h(for)e(compressing)g(n-dimensional)d(images)j(and)g(storing)g(the)h
(resulting)0 5601 y(b)m(yte)i(stream)g(in)e(a)i(v)-5
b(ariable-length)38 b(column)g(in)g(a)i(FITS)f(binary)e(table.)68
b(The)39 b(general)h(principle)c(used)i(in)0 5714 y(this)33
b(con)m(v)m(en)m(tion)j(is)d(to)i(\014rst)f(divide)e(the)j
(n-dimensional)c(image)k(in)m(to)f(a)h(rectangular)f(grid)f(of)i
(subimages)e(or)p eop
%%Page: 141 149
141 148 bop 0 299 a Fh(12.6.)73 b(TILE-COMPRESSED)28
b(IMA)m(GE)j(F)m(ORMA)-8 b(T)1838 b Fj(141)0 555 y(`tiles'.)55
b(Eac)m(h)35 b(tile)g(is)f(then)h(compressed)g(as)g(a)h(con)m(tin)m
(uous)f(blo)s(c)m(k)f(of)i(data,)h(and)e(the)g(resulting)e(compressed)0
668 y(b)m(yte)k(stream)h(is)e(stored)h(in)e(a)i(ro)m(w)g(of)g(a)h(v)-5
b(ariable)35 b(length)h(column)g(in)g(a)h(FITS)f(binary)f(table.)60
b(By)37 b(dividing)0 781 y(the)j(image)f(in)m(to)g(tiles)g(it)g(is)f
(generally)h(p)s(ossible)e(to)j(extract)h(and)d(uncompress)g
(subsections)h(of)g(the)h(image)0 894 y(without)c(ha)m(ving)h(to)h
(uncompress)e(the)h(whole)f(image.)61 b(The)37 b(default)f(tiling)f
(pattern)j(treats)g(eac)m(h)g(ro)m(w)f(of)h(a)0 1007
y(2-dimensional)33 b(image)i(\(or)g(higher)e(dimensional)f(cub)s(e\))j
(as)g(a)g(tile,)h(suc)m(h)e(that)i(eac)m(h)g(tile)e(con)m(tains)h
(NAXIS1)0 1120 y(pixels.)57 b(An)m(y)36 b(other)h(rectangular)f(tiling)
f(pattern)h(ma)m(y)h(also)f(b)s(e)g(de\014ned.)58 b(In)35
b(the)i(case)g(of)g(relativ)m(ely)e(small)0 1233 y(images)j(it)g(ma)m
(y)h(b)s(e)f(su\016cien)m(t)f(to)i(compress)f(the)h(en)m(tire)f(image)g
(as)h(a)f(single)f(tile,)j(resulting)c(in)h(an)h(output)0
1346 y(binary)28 b(table)i(with)f(1)h(ro)m(w.)41 b(In)29
b(the)h(case)h(of)f(3-dimensional)e(data)j(cub)s(es,)e(it)h(ma)m(y)g(b)
s(e)f(adv)-5 b(an)m(tageous)32 b(to)f(treat)0 1458 y(eac)m(h)i(plane)e
(of)h(the)g(cub)s(e)f(as)h(a)g(separate)h(tile)e(if)g(application)f
(soft)m(w)m(are)k(t)m(ypically)c(needs)i(to)g(access)i(the)e(cub)s(e)0
1571 y(on)e(a)h(plane)e(b)m(y)i(plane)e(basis.)0 1732
y(See)41 b(section)f(5.6)i(\\Image)f(Compression")e(for)h(more)h
(information)e(on)h(using)f(this)g(tile-compressed)h(image)0
1844 y(format.)p eop
%%Page: 142 150
142 149 bop 0 299 a Fj(142)1741 b Fh(CHAPTER)30 b(12.)112
b(LOCAL)29 b(FITS)h(CONVENTIONS)p eop
%%Page: 143 151
143 150 bop 0 1225 a Fg(Chapter)65 b(13)0 1687 y Fm(Optimizing)76
b(Programs)0 2180 y Fj(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 2293 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
2406 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 2518 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 2679 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 2791 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 2904
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 3017 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 3130 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
3243 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 3356 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 3469 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.)0 3629 y(The)k(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 3742 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
3855 y(that)e(uses)f(CFITSIO.)0 4271 y Ff(13.1)136 b(Ho)l(w)45
b(CFITSIO)f(Manages)i(Data)g(I/O)0 4538 y Fj(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 4650 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
4763 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 4876 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 4989 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 5102 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 5215 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 5328 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
5441 y(NIOBUF)f(parameter)g(\(in)e(\014tsio2.h\))h(and)g(is)g(curren)m
(tly)f(set)i(to)g(40)g(b)m(y)g(default.)0 5601 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 5714 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)1882
5942 y(143)p eop
%%Page: 144 152
144 151 bop 0 299 a Fj(144)1876 b Fh(CHAPTER)30 b(13.)112
b(OPTIMIZING)29 b(PR)m(OGRAMS)0 555 y Fj(load)j(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
668 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 781 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 894 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 1054 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
1167 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 1280 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 1393 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
1506 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 1619 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
1732 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 1844 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 1957 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
2070 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
2230 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 2343 y(b)s(e)f(apparen)m(t:)41 b(when)28 b(dealing)h(with)f
(FITS)h(images,)h(read)f(or)h(write)f(large)g(c)m(h)m(unks)h(of)g(data)
g(at)g(a)g(time)f(so)h(that)0 2456 y(the)25 b(direct)f(IO)g(mec)m
(hanism)f(will)f(b)s(e)i(in)m(v)m(ok)m(ed;)j(when)d(accessing)h(FITS)f
(headers)g(or)g(FITS)g(tables,)i(on)e(the)h(other)0 2569
y(hand,)35 b(once)g(a)g(particular)e(FITS)h(blo)s(c)m(k)h(has)f(b)s
(een)g(loading)g(in)m(to)g(one)h(of)g(the)g(IO)f(bu\013ers,)h(try)g(to)
g(access)h(all)0 2682 y(the)30 b(needed)g(information)e(in)h(that)h
(blo)s(c)m(k)g(b)s(efore)g(it)f(gets)i(\015ushed)d(out)j(of)f(the)g(IO)
f(bu\013er.)40 b(It)30 b(is)f(imp)s(ortan)m(t)g(to)0
2795 y(a)m(v)m(oid)e(the)g(situation)e(where)h(the)h(same)g(FITS)e(blo)
s(c)m(k)h(is)g(b)s(eing)f(read)h(then)g(\015ushed)f(from)h(a)h(IO)f
(bu\013er)f(m)m(ultiple)0 2908 y(times.)0 3068 y(The)30
b(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
3481 y Ff(13.2)136 b(Optimization)46 b(Strategies)0 3747
y Fj(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 3860 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 3973 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
4086 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 4199 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)0 4312
y(as)i(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 4425 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 4538 y(of)g(the)f(increased)g
(sw)m(apping)f(of)h(virtual)f(memory)h(to)h(disk.)0 4698
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 4811 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 4924 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
5036 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 5149 y(3)27 b(passes)g(through)g(the)g(\014le)f(whic)m(h)g
(could)g(triple)f(the)j(execution)f(time)g(of)g(an)g(IO)f(limited)f
(program.)40 b(F)-8 b(or)27 b(small)0 5262 y(tables)j(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 5375
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 5488 y(of)j(the)g(table)f(as)h(will)d(\014t)j
(in)m(to)f(the)h(a)m(v)-5 b(ailable)31 b(in)m(ternal)f(IO)h(bu\013ers,)
h(then)f(access)i(all)d(the)i(necessary)g(columns)0 5601
y(of)f(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 5714 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)p
eop
%%Page: 145 153
145 152 bop 0 299 a Fh(13.2.)73 b(OPTIMIZA)-8 b(TION)29
b(STRA)-8 b(TEGIES)2186 b Fj(145)0 555 y(w)m(a)m(y)28
b(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 668 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
781 y(once.)0 941 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 1054 y(the)j(table)g(ro)m(w,)g
(on)g(the)g(n)m(um)m(b)s(er)f(of)h(IO)g(bu\013ers)e(that)j(ha)m(v)m(e)g
(b)s(een)e(allo)s(cated)h(in)f(CFITSIO,)g(and)g(also)h(on)g(the)0
1167 y(n)m(um)m(b)s(er)f(of)h(other)g(FITS)f(\014les)g(that)i(are)f(op)
s(en)f(at)i(the)f(same)g(time)g(\(since)g(one)g(IO)f(bu\013er)g(is)g
(alw)m(a)m(ys)i(reserv)m(ed)0 1280 y(for)i(eac)m(h)h(op)s(en)e(FITS)g
(\014le\).)50 b(The)34 b(CFITSIO)e(Iterator)j(routine)e(will)e
(automatically)j(use)f(the)h(optimal-sized)0 1393 y(bu\013er,)43
b(but)c(there)i(is)f(also)h(a)g(CFITSIO)e(routine)h(that)h(will)d
(return)i(the)h(optimal)e(n)m(um)m(b)s(er)h(of)g(ro)m(ws)h(for)g(a)0
1506 y(giv)m(en)36 b(table:)52 b(\014ts)p 644 1506 28
4 v 32 w(get)p 796 1506 V 34 w(ro)m(wsize.)57 b(It)37
b(is)d(not)j(critical)d(to)j(use)f(exactly)g(the)h(v)-5
b(alue)35 b(of)h(nro)m(ws)f(returned)g(b)m(y)h(this)0
1619 y(routine,)30 b(as)h(long)f(as)h(one)g(do)s(es)f(not)h(exceed)g
(it.)41 b(Using)30 b(a)h(v)m(ery)g(small)e(v)-5 b(alue)30
b(ho)m(w)m(ev)m(er)i(can)f(also)f(lead)h(to)g(p)s(o)s(or)0
1732 y(p)s(erformance)f(b)s(ecause)g(of)h(the)f(o)m(v)m(erhead)i(from)e
(the)g(larger)g(n)m(um)m(b)s(er)f(of)i(subroutine)d(calls.)0
1892 y(The)36 b(optimal)f(n)m(um)m(b)s(er)g(of)h(ro)m(ws)g(returned)f
(b)m(y)i(\014ts)p 1829 1892 V 32 w(get)p 1981 1892 V
34 w(ro)m(wsize)f(is)g(v)-5 b(alid)34 b(only)h(as)i(long)f(as)g(the)h
(application)0 2005 y(program)27 b(is)f(only)g(reading)h(or)g(writing)e
(data)j(in)e(the)h(sp)s(eci\014ed)e(table.)40 b(An)m(y)27
b(other)g(calls)g(to)h(access)g(data)g(in)e(the)0 2118
y(table)31 b(header)g(or)g(in)e(an)m(y)j(other)f(FITS)f(\014le)g(w)m
(ould)g(cause)h(additional)e(blo)s(c)m(ks)i(of)g(data)g(to)h(b)s(e)e
(loaded)h(in)m(to)g(the)0 2230 y(IO)c(bu\013ers)g(displacing)f(data)i
(from)g(the)g(original)e(table,)j(and)e(should)f(b)s(e)i(a)m(v)m(oided)
g(during)e(the)i(critical)f(p)s(erio)s(d)0 2343 y(while)h(the)j(table)f
(is)g(b)s(eing)f(read)h(or)g(written.)0 2503 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 2616 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
2729 y(\014ts)p 127 2729 V 32 w(get)p 279 2729 V 34 w(ro)m(wsize)24
b(to)g(get)h(the)f(optimal)e(n)m(um)m(b)s(er)g(of)i(ro)m(ws)g(for)f
(eac)m(h)i(table)e(separately)-8 b(,)26 b(than)d(reduce)h(the)f(n)m(um)
m(b)s(er)0 2842 y(of)31 b(ro)m(ws)h(prop)s(ortionally)-8
b(.)41 b(F)-8 b(or)32 b(example,)f(if)f(the)i(optimal)e(n)m(um)m(b)s
(er)g(of)h(ro)m(ws)g(in)f(the)i(input)d(table)i(is)g(3600)i(and)0
2955 y(is)f(1400)i(in)e(the)h(output)f(table,)h(then)g(these)g(v)-5
b(alues)32 b(should)f(b)s(e)h(cut)h(in)e(half)h(to)h(1800)i(and)d(700,)
j(resp)s(ectiv)m(ely)-8 b(,)0 3068 y(if)29 b(b)s(oth)h(tables)g(are)h
(going)f(to)h(b)s(e)f(accessed)i(at)f(the)f(same)h(time.)0
3228 y(3.)39 b(Use)25 b(the)g(CFITSIO)e(Iterator)j(routine.)38
b(This)23 b(routine)h(pro)m(vides)f(a)j(more)e(`ob)5
b(ject)26 b(orien)m(ted')f(w)m(a)m(y)h(of)f(reading)0
3341 y(and)34 b(writing)e(FITS)i(\014les)f(whic)m(h)h(automatically)g
(uses)g(the)g(most)h(appropriate)f(data)h(bu\013er)e(size)h(to)i(ac)m
(hiev)m(e)0 3454 y(the)31 b(maxim)m(um)e(I/O)h(throughput.)0
3614 y(4.)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 3727 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 3840 y(parsing)31
b(the)h(ASCI)s(I)f(data)i(\014elds)e(and)h(b)s(ecause)g(ASCI)s(I)f
(tables)h(are)h(ab)s(out)f(t)m(wice)h(as)g(large)f(as)h(binary)d
(tables)0 3953 y(with)f(the)i(same)f(information)f(con)m(ten)m(t.)0
4113 y(5.)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 4226 y(o)s(ccur)28 b(in)g(the)h(\014le.)39
b(When)28 b(reading)g(k)m(eyw)m(ords,)i(CFITSIO)d(searc)m(hes)i(forw)m
(ard)g(starting)f(from)g(the)h(p)s(osition)e(of)0 4339
y(the)i(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 4452 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
4565 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)0 4678 y(IO)36 b(bu\013ers,)h(then)f
(the)g(header)g(k)m(eyw)m(ord)h(access)g(will)d(b)s(e)i(v)m(ery)g(fast)
h(and)f(it)f(mak)m(es)i(little)e(di\013erence)h(whic)m(h)0
4791 y(order)30 b(they)g(are)h(accessed.)0 4951 y(6.)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 5064 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 5176 y(data.)39 b(In)24 b(some)h(cases)h(it)e(ma)m
(y)h(b)s(e)f(more)g(e\016cien)m(t)h(to)h(temp)s(orarily)c(turn)i(o\013)
h(the)f(scaling)g(\(using)f(\014ts)p 3490 5176 V 33 w(set)p
3634 5176 V 33 w(bscale)0 5289 y(or)30 b(\014ts)p 238
5289 V 33 w(set)p 382 5289 V 33 w(tscale\))i(and)d(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 5450 y(7.)77 b(Av)m(oid)42 b(using)f(the)i(`implicit)c(data)
44 b(t)m(yp)s(e)e(con)m(v)m(ersion')h(capabilit)m(y)e(in)g(CFITSIO.)g
(F)-8 b(or)44 b(instance,)h(when)0 5562 y(reading)27
b(a)h(FITS)f(image)h(with)e(BITPIX)i(=)f(-32)i(\(32-bit)f(\015oating)g
(p)s(oin)m(t)f(pixels\),)g(read)g(the)h(data)g(in)m(to)g(a)g(single)0
5675 y(precision)38 b(\015oating)i(p)s(oin)m(t)f(data)i(arra)m(y)f(in)f
(the)h(program.)69 b(F)-8 b(orcing)40 b(CFITSIO)f(to)i(con)m(v)m(ert)g
(the)f(data)h(to)g(a)p eop
%%Page: 146 154
146 153 bop 0 299 a Fj(146)1876 b Fh(CHAPTER)30 b(13.)112
b(OPTIMIZING)29 b(PR)m(OGRAMS)0 555 y Fj(di\013eren)m(t)h(data)h(t)m
(yp)s(e)f(can)h(slo)m(w)f(the)h(program.)0 715 y(8.)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
828 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 941 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
1054 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 1167 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 1280 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
1393 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 1506
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 1619 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 1779 y(9.)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
1892 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 2005 y(data)e(in)e(the)i(heap.)0 2165 y(10.)73
b(When)40 b(cop)m(ying)h(data)h(from)e(one)h(FITS)f(table)h(to)g
(another,)j(it)d(is)e(faster)j(to)f(transfer)g(the)f(ra)m(w)h(b)m(ytes)
0 2278 y(instead)27 b(of)i(reading)e(then)h(writing)e(eac)m(h)j(column)
e(of)h(the)g(table.)40 b(The)28 b(CFITSIO)e(routines)h(\014ts)p
3349 2278 28 4 v 33 w(read)p 3554 2278 V 32 w(tblb)m(ytes)0
2391 y(and)36 b(\014ts)p 310 2391 V 32 w(write)p 545
2391 V 32 w(tblb)m(ytes)h(will)d(p)s(erform)h(lo)m(w-lev)m(el)h(reads)h
(or)f(writes)g(of)h(an)m(y)g(con)m(tiguous)f(range)h(of)g(b)m(ytes)g
(in)0 2503 y(a)d(table)f(extension.)50 b(These)33 b(routines)g(can)g(b)
s(e)g(used)g(to)h(read)f(or)h(write)f(a)g(whole)g(ro)m(w)h(\(or)g(m)m
(ultiple)d(ro)m(ws)i(for)0 2616 y(ev)m(en)e(greater)h(e\016ciency\))g
(of)f(a)g(table)g(with)e(a)i(single)f(function)f(call.)41
b(These)31 b(routines)f(are)h(fast)g(b)s(ecause)g(they)0
2729 y(b)m(ypass)36 b(all)f(the)i(usual)e(data)i(scaling,)g(error)f(c)m
(hec)m(king)h(and)f(mac)m(hine)g(dep)s(enden)m(t)f(data)i(con)m(v)m
(ersion)g(that)g(is)0 2842 y(normally)e(done)i(b)m(y)f(CFITSIO,)g(and)g
(they)h(allo)m(w)f(the)i(program)e(to)i(write)e(the)h(data)g(to)h(the)f
(output)f(\014le)g(in)0 2955 y(exactly)29 b(the)f(same)h(b)m(yte)g
(order.)40 b(F)-8 b(or)29 b(these)f(same)h(reasons,)g(these)g(routines)
e(can)h(corrupt)g(the)g(FITS)g(data)h(\014le)0 3068 y(if)35
b(used)f(incorrectly)h(b)s(ecause)h(no)f(v)-5 b(alidation)34
b(or)i(mac)m(hine)f(dep)s(enden)m(t)f(con)m(v)m(ersion)i(is)f(p)s
(erformed)f(b)m(y)h(these)0 3181 y(routines.)54 b(These)35
b(routines)f(are)i(only)e(recommended)h(for)g(optimizing)e(critical)h
(pieces)h(of)h(co)s(de)f(and)g(should)0 3294 y(only)d(b)s(e)h(used)g(b)
m(y)g(programmers)g(who)g(thoroughly)f(understand)f(the)j(in)m(ternal)e
(format)i(of)f(the)h(FITS)e(tables)0 3407 y(they)f(are)f(reading)g(or)g
(writing.)0 3567 y(11.)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 3680 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 3793
y(application)f(program)h(and)g(then)h(write)f(it)g(to)h(the)g(FITS)f
(\014le)g(with)f(\014ts)p 2520 3793 V 32 w(write)p 2755
3793 V 32 w(tblb)m(ytes.)40 b(This)28 b(a)m(v)m(oids)i(all)f(the)0
3906 y(o)m(v)m(erhead)h(normally)e(presen)m(t)h(in)f(the)i
(column-orien)m(ted)e(CFITSIO)g(write)g(routines.)39
b(This)28 b(tec)m(hnique)h(should)0 4019 y(only)34 b(b)s(e)f(used)h
(for)g(critical)f(applications)g(b)s(ecause)h(it)g(mak)m(es)i(the)e(co)
s(de)h(more)f(di\016cult)f(to)i(understand)e(and)0 4131
y(main)m(tain,)j(and)f(it)g(mak)m(es)h(the)g(co)s(de)f(more)h(system)g
(dep)s(enden)m(t)e(\(e.g.,)39 b(do)c(the)h(b)m(ytes)g(need)f(to)h(b)s
(e)f(sw)m(app)s(ed)0 4244 y(b)s(efore)30 b(writing)e(to)j(the)g(FITS)f
(\014le?\).)0 4405 y(12.)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 4517 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)0
4630 y(amoun)m(t)29 b(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
4743 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 4856 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: 147 155
147 154 bop 0 1225 a Fg(App)5 b(endix)65 b(A)0 1687 y
Fm(Index)77 b(of)h(Routines)50 2154 y Fj(\014ts)p 177
2154 28 4 v 32 w(add)p 356 2154 V 32 w(group)p 616 2154
V 33 w(mem)m(b)s(er)144 b(78)50 2267 y(\014ts)p 177 2267
V 32 w(ascii)p 382 2267 V 32 w(tform)478 b(59)50 2380
y(\014ts)p 177 2380 V 32 w(binary)p 466 2380 V 31 w(tform)395
b(59)50 2493 y(\014ts)p 177 2493 V 32 w(calculator)514
b(52)50 2606 y(\014ts)p 177 2606 V 32 w(calculator)p
598 2606 V 33 w(rng)349 b(53)50 2719 y(\014ts)p 177 2719
V 32 w(calc)p 360 2719 V 34 w(ro)m(ws)538 b(52)50 2832
y(\014ts)p 177 2832 V 32 w(c)m(hange)p 478 2832 V 34
w(group)372 b(76)50 2945 y(\014ts)p 177 2945 V 32 w(clear)p
396 2945 V 33 w(errmark)366 b(30)50 3057 y(\014ts)p 177
3057 V 32 w(clear)p 396 3057 V 33 w(errmsg)414 b(30)50
3170 y(\014ts)p 177 3170 V 32 w(close)p 396 3170 V 33
w(\014le)566 b(33)50 3283 y(\014ts)p 177 3283 V 32 w(compact)p
541 3283 V 34 w(group)309 b(77)50 3396 y(\014ts)p 177
3396 V 32 w(compare)p 542 3396 V 34 w(str)429 b(56)50
3509 y(\014ts)p 177 3509 V 32 w(compress)p 569 3509 V
33 w(heap)278 b(100)50 3622 y(\014ts)p 177 3622 V 32
w(cop)m(y)p 390 3622 V 34 w(col)577 b(49)50 3735 y(\014ts)p
177 3735 V 32 w(cop)m(y)p 390 3735 V 34 w(data)512 b(86)50
3848 y(\014ts)p 177 3848 V 32 w(cop)m(y)p 390 3848 V
34 w(\014le)571 b(34)50 3961 y(\014ts)p 177 3961 V 32
w(cop)m(y)p 390 3961 V 34 w(group)460 b(77)50 4074 y(\014ts)p
177 4074 V 32 w(cop)m(y)p 390 4074 V 34 w(hdu)535 b(34)50
4187 y(\014ts)p 177 4187 V 32 w(cop)m(y)p 390 4187 V
34 w(header)425 b(34)50 4299 y(\014ts)p 177 4299 V 32
w(cop)m(y)p 390 4299 V 34 w(k)m(ey)555 b(89)50 4412 y(\014ts)p
177 4412 V 32 w(cop)m(y)p 390 4412 V 34 w(mem)m(b)s(er)369
b(79)50 4525 y(\014ts)p 177 4525 V 32 w(create)p 445
4525 V 35 w(disk\014le)354 b(32)50 4638 y(\014ts)p 177
4638 V 32 w(create)p 445 4638 V 35 w(\014le)515 b(32)50
4751 y(\014ts)p 177 4751 V 32 w(create)p 445 4751 V 35
w(group)404 b(76)50 4864 y(\014ts)p 177 4864 V 32 w(create)p
445 4864 V 35 w(hdu)479 b(84)50 4977 y(\014ts)p 177 4977
V 32 w(create)p 445 4977 V 35 w(img)485 b(40)50 5090
y(\014ts)p 177 5090 V 32 w(create)p 445 5090 V 35 w(mem\014le)323
b(82)50 5203 y(\014ts)p 177 5203 V 32 w(create)p 445
5203 V 35 w(tbl)520 b(46)50 5316 y(\014ts)p 177 5316
V 32 w(create)p 445 5316 V 35 w(template)284 b(82)50
5429 y(\014ts)p 177 5429 V 32 w(date2str)580 b(55)50
5541 y(\014ts)p 177 5541 V 32 w(deco)s(de)p 479 5541
V 33 w(c)m(hksum)301 b(54)50 5654 y(\014ts)p 177 5654
V 32 w(deco)s(de)p 479 5654 V 33 w(tdim)412 b(48)1325
2154 y(\014ts)p 1452 2154 V 33 w(delete)p 1717 2154 V
33 w(col)565 b(49)1325 2267 y(\014ts)p 1452 2267 V 33
w(delete)p 1717 2267 V 33 w(\014le)559 b(33)1325 2380
y(\014ts)p 1452 2380 V 33 w(delete)p 1717 2380 V 33 w(hdu)523
b(35)1325 2493 y(\014ts)p 1452 2493 V 33 w(delete)p 1717
2493 V 33 w(k)m(ey)543 b(39)1325 2606 y(\014ts)p 1452
2606 V 33 w(delete)p 1717 2606 V 33 w(record)428 b(39)1325
2719 y(\014ts)p 1452 2719 V 33 w(delete)p 1717 2719 V
33 w(ro)m(wlist)409 b(48)1325 2832 y(\014ts)p 1452 2832
V 33 w(delete)p 1717 2832 V 33 w(ro)m(wrange)315 b(48)1325
2945 y(\014ts)p 1452 2945 V 33 w(delete)p 1717 2945 V
33 w(ro)m(ws)496 b(48)1325 3057 y(\014ts)p 1452 3057
V 33 w(enco)s(de)p 1755 3057 V 33 w(c)m(hksum)339 b(54)1325
3170 y(\014ts)p 1452 3170 V 33 w(\014le)p 1602 3170 V
32 w(exists)571 b(83)1325 3283 y(\014ts)p 1452 3283 V
33 w(\014le)p 1602 3283 V 32 w(mo)s(de)577 b(33)1325
3396 y(\014ts)p 1452 3396 V 33 w(\014le)p 1602 3396 V
32 w(name)j(33)1325 3509 y(\014ts)p 1452 3509 V 33 w(\014nd)p
1638 3509 V 31 w(\014rst)p 1827 3509 V 32 w(ro)m(w)423
b(52)1325 3622 y(\014ts)p 1452 3622 V 33 w(\014nd)p 1638
3622 V 31 w(nextk)m(ey)450 b(36)1325 3735 y(\014ts)p
1452 3735 V 33 w(\014nd)p 1638 3735 V 31 w(ro)m(ws)577
b(52)1325 3848 y(\014ts)p 1452 3848 V 33 w(\015ush)p
1674 3848 V 31 w(bu\013er)490 b(84)1325 3961 y(\014ts)p
1452 3961 V 33 w(\015ush)p 1674 3961 V 31 w(\014le)604
b(84)1325 4074 y(\014ts)p 1452 4074 V 33 w(get)p 1605
4074 V 34 w(acolparms)387 b(99)1325 4187 y(\014ts)p 1452
4187 V 33 w(get)p 1605 4187 V 34 w(b)s(colparms)378 b(99)1325
4299 y(\014ts)p 1452 4299 V 33 w(get)p 1605 4299 V 34
w(c)m(hksum)488 b(54)1325 4412 y(\014ts)p 1452 4412 V
33 w(get)p 1605 4412 V 34 w(col)p 1750 4412 V 32 w(displa)m(y)p
2062 4412 V 31 w(width)104 b(48)1325 4525 y(\014ts)p
1452 4525 V 33 w(get)p 1605 4525 V 34 w(colname)464 b(46)1325
4638 y(\014ts)p 1452 4638 V 33 w(get)p 1605 4638 V 34
w(coln)m(um)501 b(46)1325 4751 y(\014ts)p 1452 4751 V
33 w(get)p 1605 4751 V 34 w(colt)m(yp)s(e)h(47)1325 4864
y(\014ts)p 1452 4864 V 33 w(get)p 1605 4864 V 34 w(compression)p
2121 4864 V 31 w(t)m(yp)s(e)100 b(44)1325 4977 y(\014ts)p
1452 4977 V 33 w(get)p 1605 4977 V 34 w(eqcolt)m(yp)s(e)414
b(47)1325 5090 y(\014ts)p 1452 5090 V 33 w(get)p 1605
5090 V 34 w(errstatus)437 b(29)1325 5203 y(\014ts)p 1452
5203 V 33 w(get)p 1605 5203 V 34 w(hdrp)s(os)514 b(86)1325
5316 y(\014ts)p 1452 5316 V 33 w(get)p 1605 5316 V 34
w(hdrspace)437 b(35)1325 5429 y(\014ts)p 1452 5429 V
33 w(get)p 1605 5429 V 34 w(hdu)p 1792 5429 V 31 w(n)m(um)428
b(34)1325 5541 y(\014ts)p 1452 5541 V 33 w(get)p 1605
5541 V 34 w(hdu)p 1792 5541 V 31 w(t)m(yp)s(e)h(34)1325
5654 y(\014ts)p 1452 5654 V 33 w(get)p 1605 5654 V 34
w(hduaddr)451 b(84)2639 2154 y(\014ts)p 2766 2154 V 33
w(get)p 2919 2154 V 34 w(hduo\013)560 b(84)2639 2267
y(\014ts)p 2766 2267 V 33 w(get)p 2919 2267 V 34 w(img)p
3100 2267 V 32 w(dim)479 b(40)2639 2380 y(\014ts)p 2766
2380 V 33 w(get)p 2919 2380 V 34 w(img)p 3100 2380 V
32 w(equivt)m(yp)s(e)245 b(40)2639 2493 y(\014ts)p 2766
2493 V 33 w(get)p 2919 2493 V 34 w(img)p 3100 2493 V
32 w(param)379 b(40)2639 2606 y(\014ts)p 2766 2606 V
33 w(get)p 2919 2606 V 34 w(img)p 3100 2606 V 32 w(size)490
b(40)2639 2719 y(\014ts)p 2766 2719 V 33 w(get)p 2919
2719 V 34 w(img)p 3100 2719 V 32 w(t)m(yp)s(e)458 b(40)2639
2832 y(\014ts)p 2766 2832 V 33 w(get)p 2919 2832 V 34
w(k)m(eyclass)495 b(58)2639 2945 y(\014ts)p 2766 2945
V 33 w(get)p 2919 2945 V 34 w(k)m(eyname)466 b(57)2639
3057 y(\014ts)p 2766 3057 V 33 w(get)p 2919 3057 V 34
w(k)m(eyt)m(yp)s(e)504 b(58)2639 3170 y(\014ts)p 2766
3170 V 33 w(get)p 2919 3170 V 34 w(noise)p 3151 3170
V 32 w(bits)433 b(44)2639 3283 y(\014ts)p 2766 3283 V
33 w(get)p 2919 3283 V 34 w(n)m(um)p 3128 3283 V 32 w(cols)457
b(46)2639 3396 y(\014ts)p 2766 3396 V 33 w(get)p 2919
3396 V 34 w(n)m(um)p 3128 3396 V 32 w(groups)340 b(79)2639
3509 y(\014ts)p 2766 3509 V 33 w(get)p 2919 3509 V 34
w(n)m(um)p 3128 3509 V 32 w(hdus)415 b(33)2639 3622 y(\014ts)p
2766 3622 V 33 w(get)p 2919 3622 V 34 w(n)m(um)p 3128
3622 V 32 w(mem)m(b)s(ers)249 b(78)2639 3735 y(\014ts)p
2766 3735 V 33 w(get)p 2919 3735 V 34 w(n)m(um)p 3128
3735 V 32 w(ro)m(ws)424 b(46)2639 3848 y(\014ts)p 2766
3848 V 33 w(get)p 2919 3848 V 34 w(ro)m(wsize)525 b(99)2639
3961 y(\014ts)p 2766 3961 V 33 w(get)p 2919 3961 V 34
w(system)p 3224 3961 V 33 w(time)330 b(55)2639 4074 y(\014ts)p
2766 4074 V 33 w(get)p 2919 4074 V 34 w(tile)p 3080 4074
V 32 w(dim)499 b(44)2639 4187 y(\014ts)p 2766 4187 V
33 w(get)p 2919 4187 V 34 w(tb)s(col)611 b(59)2639 4299
y(\014ts)p 2766 4299 V 33 w(get)p 2919 4299 V 34 w(v)m(ersion)532
b(56)2639 4412 y(\014ts)p 2766 4412 V 33 w(hdr2str)d(37,)31
b(72)2639 4525 y(\014ts)p 2766 4525 V 33 w(insert)p 3023
4525 V 31 w(atbl)553 b(85)2639 4638 y(\014ts)p 2766 4638
V 33 w(insert)p 3023 4638 V 31 w(btbl)547 b(85)2639 4751
y(\014ts)p 2766 4751 V 33 w(insert)p 3023 4751 V 31 w(col)599
b(49)2639 4864 y(\014ts)p 2766 4864 V 33 w(insert)p 3023
4864 V 31 w(cols)563 b(49)2639 4977 y(\014ts)p 2766 4977
V 33 w(insert)p 3023 4977 V 31 w(group)482 b(76)2639
5090 y(\014ts)p 2766 5090 V 33 w(insert)p 3023 5090 V
31 w(img)563 b(85)2639 5203 y(\014ts)p 2766 5203 V 33
w(insert)p 3023 5203 V 31 w(k)m(ey)p 3187 5203 V 34 w(n)m(ull)392
b(91)2639 5316 y(\014ts)p 2766 5316 V 33 w(insert)p 3023
5316 V 31 w(k)m(ey)p 3187 5316 V 34 w(TYP)347 b(90)2639
5429 y(\014ts)p 2766 5429 V 33 w(insert)p 3023 5429 V
31 w(record)462 b(90)2639 5541 y(\014ts)p 2766 5541 V
33 w(insert)p 3023 5541 V 31 w(ro)m(ws)530 b(48)2639
5654 y(\014ts)p 2766 5654 V 33 w(iterate)p 3056 5654
V 33 w(data)499 b(69)1882 5942 y(147)p eop
%%Page: 148 156
148 155 bop 0 299 a Fj(148)2084 b Fh(APPENDIX)31 b(A.)61
b(INDEX)31 b(OF)f(R)m(OUTINES)50 599 y Fj(\014ts)p 177
599 28 4 v 32 w(mak)m(e)p 415 599 V 34 w(k)m(eyn)421
b(57)50 712 y(\014ts)p 177 712 V 32 w(mak)m(e)p 415 712
V 34 w(nk)m(ey)g(58)50 825 y(\014ts)p 177 825 V 32 w(merge)p
446 825 V 34 w(groups)310 b(77)50 938 y(\014ts)p 177
938 V 32 w(mo)s(dify)p 486 938 V 31 w(card)365 b(92)50
1051 y(\014ts)p 177 1051 V 32 w(mo)s(dify)p 486 1051
V 31 w(commen)m(t)177 b(38)50 1164 y(\014ts)p 177 1164
V 32 w(mo)s(dify)p 486 1164 V 31 w(k)m(ey)p 650 1164
V 34 w(n)m(ull)219 b(93)50 1277 y(\014ts)p 177 1277 V
32 w(mo)s(dify)p 486 1277 V 31 w(k)m(ey)p 650 1277 V
34 w(TYP)174 b(93)50 1390 y(\014ts)p 177 1390 V 32 w(mo)s(dify)p
486 1390 V 31 w(name)325 b(39)50 1503 y(\014ts)p 177
1503 V 32 w(mo)s(dify)p 486 1503 V 31 w(record)289 b(92)50
1616 y(\014ts)p 177 1616 V 32 w(mo)s(dify)p 486 1616
V 31 w(v)m(ector)p 758 1616 V 35 w(len)144 b(49)50 1728
y(\014ts)p 177 1728 V 32 w(mo)m(v)-5 b(abs)p 502 1728
V 33 w(hdu)366 b(33)50 1841 y(\014ts)p 177 1841 V 32
w(mo)m(vnam)p 547 1841 V 33 w(hdu)321 b(33)50 1954 y(\014ts)p
177 1954 V 32 w(mo)m(vrel)p 477 1954 V 33 w(hdu)391 b(33)50
2067 y(\014ts)p 177 2067 V 32 w(n)m(ull)p 360 2067 V
31 w(c)m(hec)m(k)450 b(57)50 2180 y(\014ts)p 177 2180
V 32 w(op)s(en)p 399 2180 V 32 w(data)d(30)50 2293 y(\014ts)p
177 2293 V 32 w(op)s(en)p 399 2293 V 32 w(disk\014le)345
b(30)50 2406 y(\014ts)p 177 2406 V 32 w(op)s(en)p 399
2406 V 32 w(\014le)506 b(30)50 2519 y(\014ts)p 177 2519
V 32 w(op)s(en)p 399 2519 V 32 w(image)391 b(30)50 2632
y(\014ts)p 177 2632 V 32 w(op)s(en)p 399 2632 V 32 w(table)426
b(30)50 2745 y(\014ts)p 177 2745 V 32 w(op)s(en)p 399
2745 V 32 w(group)395 b(78)50 2858 y(\014ts)p 177 2858
V 32 w(op)s(en)p 399 2858 V 32 w(mem)m(b)s(er)304 b(79)50
2970 y(\014ts)p 177 2970 V 32 w(op)s(en)p 399 2970 V
32 w(mem\014le)314 b(81)50 3083 y(\014ts)p 177 3083 V
32 w(parse)p 417 3083 V 33 w(extn)m(um)306 b(83)50 3196
y(\014ts)p 177 3196 V 32 w(parse)p 417 3196 V 33 w(input)p
664 3196 V 31 w(url)246 b(82)50 3309 y(\014ts)p 177 3309
V 32 w(parse)p 417 3309 V 33 w(range)387 b(61)50 3422
y(\014ts)p 177 3422 V 32 w(parse)p 417 3422 V 33 w(ro)s(otname)228
b(83)50 3535 y(\014ts)p 177 3535 V 32 w(parse)p 417 3535
V 33 w(template)256 b(59)50 3648 y(\014ts)p 177 3648
V 32 w(parse)p 417 3648 V 33 w(v)-5 b(alue)399 b(57)50
3761 y(\014ts)p 177 3761 V 32 w(pix)p 334 3761 V 32 w(to)p
446 3761 V 33 w(w)m(orld)354 b(73)50 3874 y(\014ts)p
177 3874 V 32 w(read)p 381 3874 V 33 w(2d)p 510 3874
V 33 w(TYP)315 b(98)50 3987 y(\014ts)p 177 3987 V 32
w(read)p 381 3987 V 33 w(3d)p 510 3987 V 33 w(TYP)g(98)50
4100 y(\014ts)p 177 4100 V 32 w(read)p 381 4100 V 33
w(atblhdr)345 b(87)50 4212 y(\014ts)p 177 4212 V 32 w(read)p
381 4212 V 33 w(btblhdr)339 b(87)50 4325 y(\014ts)p 177
4325 V 32 w(read)p 381 4325 V 33 w(card)468 b(36)50 4438
y(\014ts)p 177 4438 V 32 w(read)p 381 4438 V 33 w(col)529
b(51)50 4551 y(\014ts)p 177 4551 V 32 w(read)p 381 4551
V 33 w(col)p 525 4551 V 33 w(bit)p 670 4551 V 338 w(104)50
4664 y(\014ts)p 177 4664 V 32 w(read)p 381 4664 V 33
w(col)p 525 4664 V 33 w(TYP)254 b(102)50 4777 y(\014ts)p
177 4777 V 32 w(read)p 381 4777 V 33 w(coln)m(ull)378
b(51)50 4890 y(\014ts)p 177 4890 V 32 w(read)p 381 4890
V 33 w(coln)m(ull)p 676 4890 V 31 w(TYP)105 b(103)50
5003 y(\014ts)p 177 5003 V 32 w(read)p 381 5003 V 33
w(descript)279 b(104)50 5116 y(\014ts)p 177 5116 V 32
w(read)p 381 5116 V 33 w(descripts)243 b(104)50 5229
y(\014ts)p 177 5229 V 32 w(read)p 381 5229 V 33 w(errmsg)371
b(30)50 5342 y(\014ts)p 177 5342 V 32 w(read)p 381 5342
V 33 w(grppar)p 678 5342 V 32 w(TYP)148 b(98)50 5454
y(\014ts)p 177 5454 V 32 w(read)p 381 5454 V 33 w(img)493
b(97)50 5567 y(\014ts)p 177 5567 V 32 w(read)p 381 5567
V 33 w(img)p 561 5567 V 32 w(co)s(ord)241 b(72)50 5680
y(\014ts)p 177 5680 V 32 w(read)p 381 5680 V 33 w(img)p
561 5680 V 32 w(TYP)265 b(97)50 5793 y(\014ts)p 177 5793
V 32 w(read)p 381 5793 V 33 w(imghdr)355 b(87)1260 543
y(\014ts)p 1387 543 V 32 w(read)p 1591 543 V 33 w(imgn)m(ull)596
b(97)1260 656 y(\014ts)p 1387 656 V 32 w(read)p 1591
656 V 33 w(imgn)m(ull)p 1922 656 V 30 w(TYP)370 b(97)1260
769 y(\014ts)p 1387 769 V 32 w(read)p 1591 769 V 33 w(k)m(ey)761
b(36)1260 882 y(\014ts)p 1387 882 V 32 w(read)p 1591
882 V 33 w(k)m(ey)p 1757 882 V 33 w(longstr)454 b(91)1260
995 y(\014ts)p 1387 995 V 32 w(read)p 1591 995 V 33 w(k)m(ey)p
1757 995 V 33 w(triple)514 b(92)1260 1107 y(\014ts)p
1387 1107 V 32 w(read)p 1591 1107 V 33 w(k)m(ey)p 1757
1107 V 33 w(unit)565 b(37)1260 1220 y(\014ts)p 1387 1220
V 32 w(read)p 1591 1220 V 33 w(k)m(ey)p 1757 1220 V 33
w(TYP)532 b(91)1260 1333 y(\014ts)p 1387 1333 V 32 w(read)p
1591 1333 V 33 w(k)m(eyn)710 b(36)1260 1446 y(\014ts)p
1387 1446 V 32 w(read)p 1591 1446 V 33 w(k)m(eys)p 1793
1446 V 33 w(TYP)496 b(92)1260 1559 y(\014ts)p 1387 1559
V 32 w(read)p 1591 1559 V 33 w(k)m(eyw)m(ord)566 b(36)1260
1672 y(\014ts)p 1387 1672 V 32 w(read)p 1591 1672 V 33
w(pix)769 b(42)1260 1785 y(\014ts)p 1387 1785 V 32 w(read)p
1591 1785 V 33 w(pixn)m(ull)618 b(42)1260 1898 y(\014ts)p
1387 1898 V 32 w(read)p 1591 1898 V 33 w(record)646 b(36)1260
2011 y(\014ts)p 1387 2011 V 32 w(read)p 1591 2011 V 33
w(subset)p 1873 2011 V 32 w(TYP)250 b(98)31 b(103)1260
2124 y(\014ts)p 1387 2124 V 32 w(read)p 1591 2124 V 33
w(subsetn)m(ull)p 2024 2124 V 30 w(TYP)101 b(98)31 b(103)1260
2237 y(\014ts)p 1387 2237 V 32 w(read)p 1591 2237 V 33
w(tbl)p 1736 2237 V 32 w(co)s(ord)530 b(72)1260 2349
y(\014ts)p 1387 2349 V 32 w(read)p 1591 2349 V 33 w(tblb)m(ytes)f(100)
1260 2462 y(\014ts)p 1387 2462 V 32 w(read)p 1591 2462
V 33 w(tdim)706 b(48)1260 2575 y(\014ts)p 1387 2575 V
32 w(remo)m(v)m(e)p 1698 2575 V 34 w(group)558 b(77)1260
2688 y(\014ts)p 1387 2688 V 32 w(remo)m(v)m(e)p 1698
2688 V 34 w(mem)m(b)s(er)467 b(79)1260 2801 y(\014ts)p
1387 2801 V 32 w(reop)s(en)p 1685 2801 V 32 w(\014le)684
b(82)1260 2914 y(\014ts)p 1387 2914 V 32 w(rep)s(ort)p
1665 2914 V 32 w(error)628 b(30)1260 3027 y(\014ts)p
1387 3027 V 32 w(resize)p 1637 3027 V 33 w(img)701 b(85)1260
3140 y(\014ts)p 1387 3140 V 32 w(select)p 1636 3140 V
33 w(ro)m(ws)669 b(52)1260 3253 y(\014ts)p 1387 3253
V 32 w(set)p 1530 3253 V 33 w(atbln)m(ull)647 b(95)1260
3366 y(\014ts)p 1387 3366 V 32 w(set)p 1530 3366 V 33
w(bscale)717 b(94)1260 3479 y(\014ts)p 1387 3479 V 32
w(set)p 1530 3479 V 33 w(btbln)m(ull)641 b(95)1260 3591
y(\014ts)p 1387 3591 V 32 w(set)p 1530 3591 V 33 w(compression)p
2045 3591 V 32 w(t)m(yp)s(e)267 b(44)1260 3704 y(\014ts)p
1387 3704 V 32 w(set)p 1530 3704 V 33 w(hdrsize)675 b(86)1260
3817 y(\014ts)p 1387 3817 V 32 w(set)p 1530 3817 V 33
w(hdustruc)604 b(86)1260 3930 y(\014ts)p 1387 3930 V
32 w(set)p 1530 3930 V 33 w(imgn)m(ull)657 b(95)1260
4043 y(\014ts)p 1387 4043 V 32 w(set)p 1530 4043 V 33
w(noise)p 1761 4043 V 33 w(bits)576 b(44)1260 4156 y(\014ts)p
1387 4156 V 32 w(set)p 1530 4156 V 33 w(tile)p 1690 4156
V 32 w(dim)643 b(44)1260 4269 y(\014ts)p 1387 4269 V
32 w(set)p 1530 4269 V 33 w(tscale)733 b(94)1260 4382
y(\014ts)p 1387 4382 V 32 w(split)p 1593 4382 V 31 w(names)646
b(56)1260 4495 y(\014ts)p 1387 4495 V 32 w(str2date)776
b(55)1260 4608 y(\014ts)p 1387 4608 V 32 w(str2time)770
b(55)1260 4721 y(\014ts)p 1387 4721 V 32 w(test)p 1565
4721 V 34 w(expr)744 b(53)1260 4833 y(\014ts)p 1387 4833
V 32 w(test)p 1565 4833 V 34 w(heap)686 b(100)1260 4946
y(\014ts)p 1387 4946 V 32 w(test)p 1565 4946 V 34 w(k)m(eyw)m(ord)591
b(57)1260 5059 y(\014ts)p 1387 5059 V 32 w(test)p 1565
5059 V 34 w(record)671 b(57)1260 5172 y(\014ts)p 1387
5172 V 32 w(time2str)770 b(55)1260 5285 y(\014ts)p 1387
5285 V 32 w(transfer)p 1726 5285 V 32 w(mem)m(b)s(er)441
b(79)1260 5398 y(\014ts)p 1387 5398 V 32 w(up)s(date)p
1695 5398 V 32 w(card)619 b(38)1260 5511 y(\014ts)p 1387
5511 V 32 w(up)s(date)p 1695 5511 V 32 w(c)m(hksum)492
b(54)1260 5624 y(\014ts)p 1387 5624 V 32 w(up)s(date)p
1695 5624 V 32 w(k)m(ey)658 b(37)1260 5737 y(\014ts)p
1387 5737 V 32 w(up)s(date)p 1695 5737 V 32 w(k)m(ey)p
1860 5737 V 34 w(n)m(ull)473 b(38)1260 5850 y(\014ts)p
1387 5850 V 32 w(up)s(date)p 1695 5850 V 32 w(k)m(ey)p
1860 5850 V 34 w(TYP)428 b(93)2723 543 y(\014ts)p 2850
543 V 33 w(upp)s(ercase)515 b(56)2723 656 y(\014ts)p
2850 656 V 33 w(url)p 2996 656 V 31 w(t)m(yp)s(e)590
b(33)2723 769 y(\014ts)p 2850 769 V 33 w(v)m(erify)p
3106 769 V 32 w(c)m(hksum)354 b(54)2723 882 y(\014ts)p
2850 882 V 33 w(v)m(erify)p 3106 882 V 32 w(group)425
b(78)2723 995 y(\014ts)p 2850 995 V 33 w(w)m(orld)p 3104
995 V 32 w(to)p 3216 995 V 33 w(pix)417 b(73)2723 1107
y(\014ts)p 2850 1107 V 33 w(write)p 3086 1107 V 32 w(2d)p
3214 1107 V 33 w(TYP)348 b(97)2723 1220 y(\014ts)p 2850
1220 V 33 w(write)p 3086 1220 V 32 w(3d)p 3214 1220 V
33 w(TYP)g(97)2723 1333 y(\014ts)p 2850 1333 V 33 w(write)p
3086 1333 V 32 w(atblhdr)378 b(87)2723 1446 y(\014ts)p
2850 1446 V 33 w(write)p 3086 1446 V 32 w(btblhdr)372
b(87)2723 1559 y(\014ts)p 2850 1559 V 33 w(write)p 3086
1559 V 32 w(c)m(hksum)i(53)2723 1672 y(\014ts)p 2850
1672 V 33 w(write)p 3086 1672 V 32 w(col)562 b(50)2723
1785 y(\014ts)p 2850 1785 V 33 w(write)p 3086 1785 V
32 w(col)p 3229 1785 V 33 w(bit)371 b(101)2723 1898 y(\014ts)p
2850 1898 V 33 w(write)p 3086 1898 V 32 w(col)p 3229
1898 V 33 w(TYP)287 b(100)2723 2011 y(\014ts)p 2850 2011
V 33 w(write)p 3086 2011 V 32 w(col)p 3229 2011 V 33
w(n)m(ull)378 b(50)2723 2124 y(\014ts)p 2850 2124 V 33
w(write)p 3086 2124 V 32 w(coln)m(ull)411 b(50)2723 2237
y(\014ts)p 2850 2237 V 33 w(write)p 3086 2237 V 32 w(coln)m(ull)p
3380 2237 V 31 w(TYP)138 b(101)2723 2349 y(\014ts)p 2850
2349 V 33 w(write)p 3086 2349 V 32 w(commen)m(t)313 b(38)2723
2462 y(\014ts)p 2850 2462 V 33 w(write)p 3086 2462 V
32 w(date)502 b(38)2723 2575 y(\014ts)p 2850 2575 V 33
w(write)p 3086 2575 V 32 w(descript)312 b(102)2723 2688
y(\014ts)p 2850 2688 V 33 w(write)p 3086 2688 V 32 w(errmark)356
b(30)2723 2801 y(\014ts)p 2850 2801 V 33 w(write)p 3086
2801 V 32 w(errmsg)404 b(56)2723 2914 y(\014ts)p 2850
2914 V 33 w(write)p 3086 2914 V 32 w(grphdr)f(87)2723
3027 y(\014ts)p 2850 3027 V 33 w(write)p 3086 3027 V
32 w(grppar)p 3382 3027 V 32 w(TYP)181 b(97)2723 3140
y(\014ts)p 2850 3140 V 33 w(write)p 3086 3140 V 32 w(history)396
b(38)2723 3253 y(\014ts)p 2850 3253 V 33 w(write)p 3086
3253 V 32 w(img)526 b(96)2723 3366 y(\014ts)p 2850 3366
V 33 w(write)p 3086 3366 V 32 w(img)p 3265 3366 V 32
w(n)m(ull)343 b(97)2723 3479 y(\014ts)p 2850 3479 V 33
w(write)p 3086 3479 V 32 w(img)p 3265 3479 V 32 w(TYP)298
b(96)2723 3591 y(\014ts)p 2850 3591 V 33 w(write)p 3086
3591 V 32 w(imghdr)388 b(87)2723 3704 y(\014ts)p 2850
3704 V 33 w(write)p 3086 3704 V 32 w(imgn)m(ull)375 b(96)2723
3817 y(\014ts)p 2850 3817 V 33 w(write)p 3086 3817 V
32 w(imgn)m(ull)p 3416 3817 V 30 w(TYP)149 b(96)2723
3930 y(\014ts)p 2850 3930 V 33 w(write)p 3086 3930 V
32 w(k)m(ey)540 b(37)2723 4043 y(\014ts)p 2850 4043 V
33 w(write)p 3086 4043 V 32 w(k)m(ey)p 3251 4043 V 33
w(longstr)233 b(89)2723 4156 y(\014ts)p 2850 4156 V 33
w(write)p 3086 4156 V 32 w(k)m(ey)p 3251 4156 V 33 w(longw)m(arn)145
b(89)2723 4269 y(\014ts)p 2850 4269 V 33 w(write)p 3086
4269 V 32 w(k)m(ey)p 3251 4269 V 33 w(n)m(ull)356 b(38)2723
4382 y(\014ts)p 2850 4382 V 33 w(write)p 3086 4382 V
32 w(k)m(ey)p 3251 4382 V 33 w(template)159 b(90)2723
4495 y(\014ts)p 2850 4495 V 33 w(write)p 3086 4495 V
32 w(k)m(ey)p 3251 4495 V 33 w(triple)293 b(90)2723 4608
y(\014ts)p 2850 4608 V 33 w(write)p 3086 4608 V 32 w(k)m(ey)p
3251 4608 V 33 w(unit)344 b(39)2723 4721 y(\014ts)p 2850
4721 V 33 w(write)p 3086 4721 V 32 w(k)m(ey)p 3251 4721
V 33 w(TYP)311 b(88)2723 4833 y(\014ts)p 2850 4833 V
33 w(write)p 3086 4833 V 32 w(k)m(eys)p 3287 4833 V 33
w(TYP)275 b(89)2723 4946 y(\014ts)p 2850 4946 V 33 w(write)p
3086 4946 V 32 w(n)m(ull)p 3269 4946 V 31 w(img)344 b(41)2723
5059 y(\014ts)p 2850 5059 V 33 w(write)p 3086 5059 V
32 w(pix)548 b(41)2723 5172 y(\014ts)p 2850 5172 V 33
w(write)p 3086 5172 V 32 w(pixn)m(ull)397 b(41)2723 5285
y(\014ts)p 2850 5285 V 33 w(write)p 3086 5285 V 32 w(record)425
b(38)2723 5398 y(\014ts)p 2850 5398 V 33 w(write)p 3086
5398 V 32 w(subset)f(40)2723 5511 y(\014ts)p 2850 5511
V 33 w(write)p 3086 5511 V 32 w(subset)p 3367 5511 V
32 w(TYP)196 b(97)2723 5624 y(\014ts)p 2850 5624 V 33
w(write)p 3086 5624 V 32 w(tblb)m(ytes)308 b(100)2723
5737 y(\014ts)p 2850 5737 V 33 w(write)p 3086 5737 V
32 w(tdim)485 b(48)2723 5850 y(\014ts)p 2850 5850 V 33
w(write)p 3086 5850 V 32 w(theap)451 b(99)p eop
%%Page: 149 157
149 156 bop 3764 299 a Fj(149)50 543 y(\013asfm)276 b(59)50
656 y(\013bnfm)255 b(59)50 769 y(\013calc)310 b(52)50
882 y(\013calc)p 259 882 28 4 v 33 w(rng)145 b(53)50
995 y(\013clos)314 b(33)50 1107 y(\013cmph)197 b(100)50
1220 y(\013cmps)258 b(56)50 1333 y(\013cmrk)j(30)50 1446
y(\013cmsg)j(30)50 1559 y(\013cop)m(y)280 b(34)50 1672
y(\013cp)s(cl)301 b(49)50 1785 y(\013cp)s(dt)281 b(86)50
1898 y(\013cp\015)319 b(34)50 2011 y(\013cphd)268 b(34)50
2124 y(\013cpky)274 b(89)50 2237 y(\013crhd)283 b(84)50
2349 y(\013crim)g(40)50 2462 y(\013cro)m(w)277 b(52)50
2575 y(\013crtb)299 b(46)50 2688 y(\013dcol)g(49)50 2801
y(\013delt)309 b(33)50 2914 y(\013dhdu)257 b(35)50 3027
y(\013dk)m(ey)277 b(39)50 3140 y(\013dkinit)224 b(32)50
3253 y(\013dk)m(op)s(en)175 b(30)50 3366 y(\013dopn)263
b(30)50 3479 y(\013drec)294 b(39)50 3591 y(\013dro)m(w)266
b(48)50 3704 y(\013drrg)293 b(48)50 3817 y(\013drws)272
b(48)50 3930 y(\013dsum)247 b(54)50 4043 y(\013dt2s)294
b(55)50 4156 y(\013dtdm)248 b(48)50 4269 y(\013dt)m(yp)279
b(58)50 4382 y(\013eqt)m(y)293 b(47)50 4495 y(\013esum)258
b(54)50 4608 y(\013exest)k(83)50 4721 y(\013extn)287
b(83)50 4833 y(\013\013rw)306 b(52)50 4946 y(\013\015md)283
b(33)50 5059 y(\013\015nm)g(33)50 5172 y(\013\015sh)323
b(84)50 5285 y(\013\015us)g(84)50 5398 y(\013fro)m(w)289
b(52)50 5511 y(\013g2d)p 249 5511 V 320 w(98)50 5624
y(\013g3d)p 249 5624 V 320 w(98)50 5737 y(\013gab)s(c)277
b(59)785 543 y(\013gacl)221 b(99)785 656 y(\013gb)s(cl)212
b(99)785 769 y(\013gcdw)175 b(48)785 882 y(\013gcf)264
b(51)785 995 y(\013gcf)p 956 995 V 219 w(103)785 1107
y(\013gc)m(ks)211 b(54)785 1220 y(\013gcnn)190 b(46)785
1333 y(\013gcno)196 b(46)785 1446 y(\013gcrd)205 b(36)785
1559 y(\013gcv)244 b(51)785 1672 y(\013gcv)p 976 1672
V 199 w(102)785 1785 y(\013gcx)199 b(104)785 1898 y(\013gdes)160
b(104)785 2011 y(\013gdess)124 b(104)785 2124 y(\013gerr)220
b(29)785 2237 y(\013ggp)p 984 2237 V 236 w(98)785 2349
y(\013ghad)185 b(84)785 2462 y(\013gh)m(bn)d(87)785 2575
y(\013ghdn)d(34)785 2688 y(\013ghdt)195 b(34)785 2801
y(\013ghof)208 b(84)785 2914 y(\013ghpr)194 b(87)785
3027 y(\013ghps)g(86)785 3140 y(\013ghsp)g(35)785 3253
y(\013gh)m(tb)k(87)785 3366 y(\013gics)230 b(72)785 3479
y(\013gidm)179 b(40)785 3591 y(\013gidt)220 b(40)785
3704 y(\013giet)231 b(40)785 3817 y(\013gipr)219 b(40)785
3930 y(\013gisz)230 b(40)785 4043 y(\013gk)m(cl)221 b(58)785
4156 y(\013gk)m(ey)199 b(36)785 4269 y(\013gkls)222 b(91)785
4382 y(\013gkn)p 987 4382 V 233 w(92)785 4495 y(\013gknm)157
b(57)785 4608 y(\013gky)236 b(36)785 4721 y(\013gkyn)185
b(36)785 4833 y(\013gkyt)201 b(92)785 4946 y(\013gky)p
984 4946 V 236 w(91)785 5059 y(\013gmcp)165 b(79)785
5172 y(\013gmng)160 b(79)785 5285 y(\013gmop)g(79)785
5398 y(\013gmrm)144 b(79)785 5511 y(\013gmsg)175 b(30)785
5624 y(\013gm)m(tf)196 b(79)785 5737 y(\013gncl)215 b(46)1436
543 y(\013gnrw)283 b(46)1436 656 y(\013gnxk)289 b(36)1436
769 y(\013gpf)357 b(97)1436 882 y(\013gpf)p 1618 882
V 357 w(97)1436 995 y(\013gp)m(v)340 b(97)1436 1107 y(\013gp)m(v)p
1635 1107 V 340 w(97)1436 1220 y(\013gp)m(xv)292 b(42)1436
1333 y(\013gp)m(xf)312 b(42)1436 1446 y(\013grec)320
b(36)1436 1559 y(\013grsz)k(99)1436 1672 y(\013gsdt)314
b(55)1436 1785 y(\013gsf)p 1603 1785 V 205 w(98)32 b(103)1436
1898 y(\013gstm)289 b(55)1436 2011 y(\013gsv)p 1623 2011
V 185 w(98)32 b(103)1436 2124 y(\013gtam)280 b(78)1436
2237 y(\013gtbb)254 b(100)1436 2349 y(\013gtc)m(h)313
b(76)1436 2462 y(\013gtcl)335 b(47)1436 2575 y(\013gtcm)285
b(77)1436 2688 y(\013gtcp)310 b(77)1436 2801 y(\013gtcr)325
b(76)1436 2914 y(\013gtcs)g(72)1436 3027 y(\013gtdm)274
b(48)1436 3140 y(\013gthd)299 b(59)1436 3253 y(\013gtis)339
b(76)1436 3366 y(\013gtmg)280 b(77)1436 3479 y(\013gtnm)274
b(78)1436 3591 y(\013gtop)305 b(78)1436 3704 y(\013gtrm)289
b(77)1436 3817 y(\013gtvf)325 b(78)1436 3930 y(\013gun)m(t)302
b(37)1436 4043 y(\013hdef)311 b(86)1436 4156 y(\016bin)330
b(85)1436 4269 y(\016cls)356 b(49)1436 4382 y(\016col)347
b(49)1436 4495 y(\016img)311 b(85)1436 4608 y(\016kls)348
b(90)1436 4721 y(\016kyu)311 b(91)1436 4833 y(\016ky)p
1613 4833 V 362 w(90)1436 4946 y(\016mem)266 b(82)1436
5059 y(\016nit)346 b(32)1436 5172 y(\016opn)311 b(30)1436
5285 y(\016rec)342 b(90)1436 5398 y(\016ro)m(w)314 b(48)1436
5511 y(\016tab)327 b(85)1436 5624 y(\016ter)347 b(69)1436
5737 y(\016url)e(82)2191 543 y(\013k)m(eyn)208 b(57)2191
656 y(\013mahd)169 b(33)2191 769 y(\013mcom)155 b(38)2191
882 y(\013mcrd)189 b(92)2191 995 y(\013mkls)206 b(93)2191
1107 y(\013mkyu)169 b(93)2191 1220 y(\013mky)p 2421 1220
V 220 w(93)2191 1333 y(\013mnam)144 b(39)2191 1446 y(\013mnhd)163
b(33)2191 1559 y(\013mrec)200 b(92)2191 1672 y(\013mrhd)178
b(33)2191 1785 y(\013m)m(v)m(ec)194 b(49)2191 1898 y(\013nc)m(hk)205
b(57)2191 2011 y(\013nk)m(ey)j(58)2191 2124 y(\013omem)155
b(81)2191 2237 y(\013op)s(en)202 b(30)2191 2349 y(\013p2d)p
2396 2349 V 245 w(97)2191 2462 y(\013p3d)p 2396 2462
V 245 w(97)2191 2575 y(\013p)s(c)m(ks)217 b(53)2191 2688
y(\013p)s(cl)272 b(50)2191 2801 y(\013p)s(cls)191 b(100)2191
2914 y(\013p)s(cl)p 2369 2914 V 227 w(101)2191 3027 y(\013p)s(clu)221
b(50)2191 3140 y(\013p)s(cn)247 b(50)2191 3253 y(\013p)s(cn)p
2394 3253 V 202 w(101)2191 3366 y(\013p)s(com)177 b(38)2191
3479 y(\013p)s(dat)207 b(38)2191 3591 y(\013p)s(des)166
b(102)2191 3704 y(\013pgp)p 2396 3704 V 245 w(97)2191
3817 y(\013ph)m(bn)191 b(87)2191 3930 y(\013phis)228
b(38)2191 4043 y(\013phpr)203 b(87)2191 4156 y(\013phps)g(87)2191
4269 y(\013ph)m(tb)k(87)2191 4382 y(\013pkls)231 b(89)2191
4495 y(\013pkn)p 2399 4495 V 242 w(89)2191 4608 y(\013pktp)207
b(90)2191 4721 y(\013pky)245 b(37)2191 4833 y(\013pkyt)210
b(90)2191 4946 y(\013pkyu)194 b(38)2191 5059 y(\013pky)p
2396 5059 V 245 w(88)2191 5172 y(\013plsw)213 b(89)2191
5285 y(\013pmrk)181 b(30)2191 5398 y(\013pmsg)j(56)2191
5511 y(\013pn)m(ul)216 b(95)2191 5624 y(\013ppn)239 b(96)2191
5737 y(\013ppn)p 2402 5737 V 239 w(96)2857 543 y(\013ppr)273
b(96)2857 656 y(\013pprn)222 b(41)2857 769 y(\013ppru)g(97)2857
882 y(\013ppr)p 3053 882 V 273 w(96)2857 995 y(\013pp)m(x)264
b(41)2857 1107 y(\013pp)m(xn)213 b(41)2857 1220 y(\013prec)244
b(38)2857 1333 y(\013pscl)258 b(94)2857 1446 y(\013pss)288
b(40)2857 1559 y(\013pss)p 3038 1559 V 288 w(97)2857
1672 y(\013psv)m(c)239 b(57)2857 1785 y(\013ptbb)177
b(100)2857 1898 y(\013ptdm)198 b(48)2857 2011 y(\013pthp)223
b(99)2857 2124 y(\013pun)m(t)j(39)2857 2237 y(\013rdef)256
b(86)2857 2349 y(\013reop)s(en)145 b(82)2857 2462 y(\013rprt)253
b(30)2857 2575 y(\013rsim)237 b(85)2857 2688 y(\013rtnm)213
b(83)2857 2801 y(\013rwrg)228 b(61)2857 2914 y(\013s2dt)244
b(55)2857 3027 y(\013s2tm)219 b(55)2857 3140 y(\013sn)m(ul)250
b(95)2857 3253 y(\013sro)m(w)231 b(52)2857 3366 y(\013texp)237
b(53)2857 3479 y(\013thdu)223 b(33)2857 3591 y(\013theap)143
b(100)2857 3704 y(\013tk)m(ey)243 b(57)2857 3817 y(\013tm2s)219
b(55)2857 3930 y(\013tn)m(ul)251 b(95)2857 4043 y(\013topn)229
b(30)2857 4156 y(\013tplt)264 b(82)2857 4269 y(\013trec)c(57)2857
4382 y(\013tscl)274 b(94)2857 4495 y(\013ucrd)233 b(38)2857
4608 y(\013ukls)250 b(93)2857 4721 y(\013uky)264 b(37)2857
4833 y(\013ukyu)213 b(38)2857 4946 y(\013uky)p 3062 4946
V 264 w(93)2857 5059 y(\013up)s(c)m(h)218 b(56)2857 5172
y(\013up)s(c)m(k)j(54)2857 5285 y(\013urlt)263 b(33)2857
5398 y(\013v)m(c)m(ks)245 b(54)2857 5511 y(\013v)m(ers)254
b(56)2857 5624 y(\013wldp)217 b(73)2857 5737 y(\013xyp)m(x)i(73)p
eop
%%Page: 150 158
150 157 bop 0 299 a Fj(150)2084 b Fh(APPENDIX)31 b(A.)61
b(INDEX)31 b(OF)f(R)m(OUTINES)p eop
%%Page: 151 159
151 158 bop 0 1225 a Fg(App)5 b(endix)65 b(B)0 1687 y
Fm(P)-6 b(arameter)77 b(De\014nitions)0 2180 y Fe(anynul)142
b(-)47 b(set)g(to)g(TRUE)g(\(=1\))f(if)i(any)e(returned)g(values)g(are)
h(undefined,)e(else)i(FALSE)0 2293 y(array)190 b(-)47
b(array)f(of)i(numerical)d(data)h(values)h(to)g(read)f(or)i(write)0
2406 y(ascii)190 b(-)47 b(encoded)f(checksum)f(string)0
2518 y(binspec)94 b(-)47 b(the)g(input)f(table)h(binning)e(specifier)0
2631 y(bitpix)142 b(-)47 b(bits)g(per)g(pixel.)f(The)h(following)e
(symbolic)g(mnemonics)h(are)h(predefined:)716 2744 y(BYTE_IMG)141
b(=)i(8)47 b(\(unsigned)f(char\))716 2857 y(SHORT_IMG)93
b(=)i(16)47 b(\(signed)f(short)g(integer\))716 2970 y(LONG_IMG)141
b(=)95 b(32)47 b(\(signed)f(long)h(integer\))716 3083
y(LONGLONG_IMG)d(=)96 b(64)47 b(\(signed)f(long)g(64-bit)g(integer\))
716 3196 y(FLOAT_IMG)93 b(=)47 b(-32)g(\(float\))716
3309 y(DOUBLE_IMG)e(=)i(-64)g(\(double\).)525 3422 y(The)g
(LONGLONG_IMG)d(type)j(is)g(experimental)e(and)i(is)g(not)g(officially)
525 3535 y(recognized)e(in)i(the)g(FITS)g(Standard)e(document.)525
3648 y(Two)i(additional)e(values,)h(USHORT_IMG)f(and)i(ULONG_IMG)e(are)
i(also)f(available)525 3760 y(for)h(creating)e(unsigned)h(integer)g
(images.)93 b(These)47 b(are)g(equivalent)e(to)525 3873
y(creating)h(a)h(signed)f(integer)g(image)g(with)h(BZERO)f(offset)g
(keyword)g(values)525 3986 y(of)h(32768)g(or)g(2147483648,)d
(respectively,)h(which)h(is)h(the)g(convention)e(that)525
4099 y(FITS)i(uses)f(to)h(store)g(unsigned)e(integers.)0
4212 y(card)238 b(-)47 b(header)f(record)g(to)h(be)h(read)e(or)h
(written)f(\(80)h(char)g(max,)f(null-terminated\))0 4325
y(casesen)94 b(-)47 b(CASESEN)f(\(=1\))g(for)h(case-sensitive)d(string)
i(matching,)g(else)g(CASEINSEN)g(\(=0\))0 4438 y(cmopt)190
b(-)47 b(grouping)f(table)g("compact")f(option)h(parameter.)f(Allowed)h
(values)g(are:)525 4551 y(OPT_CMT_MBR)f(and)i(OPT_CMT_MBR_DEL.)0
4664 y(colname)94 b(-)47 b(name)g(of)g(the)g(column)f
(\(null-terminated\))0 4777 y(colnum)142 b(-)47 b(column)f(number)g
(\(first)g(column)g(=)i(1\))0 4890 y(colspec)94 b(-)47
b(the)g(input)f(file)h(column)f(specification;)e(used)j(to)g(delete,)f
(create,)f(or)j(rename)525 5002 y(table)e(columns)0 5115
y(comment)94 b(-)47 b(the)g(keyword)f(comment)g(field)g(\(72)h(char)f
(max,)h(null-terminated\))0 5228 y(complm)142 b(-)47
b(should)f(the)h(checksum)f(be)h(complemented?)0 5341
y(comptype)f(-)h(compression)e(algorithm)g(to)i(use:)g(GZIP_1,)f
(RICE_1,)f(or)j(PLIO_1)0 5454 y(coordtype-)d(type)i(of)g(coordinate)e
(projection)g(\(-SIN,)h(-TAN,)g(-ARC,)h(-NCP,)525 5567
y(-GLS,)f(-MER,)h(or)g(-AIT\))0 5680 y(cpopt)190 b(-)47
b(grouping)f(table)g(copy)h(option)f(parameter.)f(Allowed)g(values)i
(are:)1882 5942 y Fj(151)p eop
%%Page: 152 160
152 159 bop 0 299 a Fj(152)1822 b Fh(APPENDIX)31 b(B.)61
b(P)-8 b(ARAMETER)30 b(DEFINITIONS)525 555 y Fe(OPT_GCP_GPT,)44
b(OPT_GCP_MBR,)h(OPT_GCP_ALL,)f(OPT_MCP_ADD,)h(OPT_MCP_NADD,)525
668 y(OPT_MCP_REPL,)f(amd)j(OPT_MCP_MOV.)0 781 y(create_col-)e(If)i
(TRUE,)f(then)h(insert)f(a)h(new)g(column)f(in)i(the)f(table,)f
(otherwise)525 894 y(overwrite)f(the)i(existing)f(column.)0
1007 y(current)94 b(-)47 b(if)g(TRUE,)g(then)f(the)h(current)f(HDU)h
(will)f(be)i(copied)0 1120 y(dataok)142 b(-)47 b(was)g(the)g(data)f
(unit)h(verification)e(successful)g(\(=1\))h(or)525 1233
y(not)h(\(=)g(-1\).)94 b(Equals)47 b(zero)f(if)h(the)g(DATASUM)f
(keyword)g(is)h(not)g(present.)0 1346 y(datasum)94 b(-)47
b(32-bit)f(1's)h(complement)e(checksum)h(for)g(the)h(data)g(unit)0
1458 y(dataend)94 b(-)47 b(address)f(\(in)h(bytes\))f(of)h(the)g(end)g
(of)g(the)g(HDU)0 1571 y(datastart-)e(address)h(\(in)h(bytes\))f(of)h
(the)g(start)f(of)h(the)g(data)g(unit)0 1684 y(datatype)f(-)h
(specifies)e(the)i(data)g(type)f(of)i(the)f(value.)93
b(Allowed)46 b(value)h(are:)94 b(TSTRING,)525 1797 y(TLOGICAL,)45
b(TBYTE,)h(TSBYTE,)g(TSHORT,)g(TUSHORT,)g(TINT,)g(TUINT,)g(TLONG,)g
(TULONG,)525 1910 y(TFLOAT,)g(TDOUBLE,)f(TCOMPLEX,)h(and)h(TDBLCOMPLEX)
0 2023 y(datestr)94 b(-)47 b(FITS)g(date/time)e(string:)h
('YYYY-MM-DDThh:mm:ss.dd)o(d',)41 b('YYYY-MM-dd',)525
2136 y(or)47 b('dd/mm/yy')0 2249 y(day)286 b(-)47 b(calendar)f(day)g
(\(UTC\))h(\(1-31\))0 2362 y(decimals)f(-)h(number)f(of)h(decimal)f
(places)g(to)h(be)h(displayed)0 2475 y(deltasize)d(-)j(increment)d(for)
i(allocating)e(more)i(memory)0 2588 y(dim1)238 b(-)47
b(declared)f(size)g(of)h(the)g(first)g(dimension)e(of)i(the)g(image)f
(or)i(cube)e(array)0 2700 y(dim2)238 b(-)47 b(declared)f(size)g(of)h
(the)g(second)f(dimension)g(of)h(the)g(data)f(cube)h(array)0
2813 y(dispwidth)e(-)j(display)e(width)g(of)h(a)h(column)e(=)h(length)f
(of)h(string)f(that)h(will)g(be)g(read)0 2926 y(dtype)190
b(-)47 b(data)g(type)f(of)h(the)g(keyword)f(\('C',)h('L',)f('I',)h('F')
g(or)g('X'\))764 3039 y(C)g(=)h(character)d(string)764
3152 y(L)i(=)h(logical)764 3265 y(I)f(=)h(integer)764
3378 y(F)f(=)h(floating)d(point)h(number)764 3491 y(X)h(=)h(complex,)d
(e.g.,)h("\(1.23,)g(-4.56\)")0 3604 y(err_msg)94 b(-)47
b(error)f(message)g(on)h(the)g(internal)f(stack)g(\(80)h(chars)f(max\))
0 3717 y(err_text)g(-)h(error)f(message)g(string)g(corresponding)e(to)k
(error)e(number)g(\(30)h(chars)f(max\))0 3830 y(exact)190
b(-)47 b(TRUE)g(\(=1\))f(if)h(the)g(strings)f(match)h(exactly;)525
3942 y(FALSE)f(\(=0\))h(if)g(wildcards)e(are)i(used)0
4055 y(exclist)94 b(-)47 b(array)f(of)i(pointers)d(to)i(keyword)f
(names)g(to)i(be)f(excluded)e(from)i(search)0 4168 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 4281 y(expr)238 b(-)47 b(boolean)f(or)h
(arithmetic)e(expression)0 4394 y(extend)142 b(-)47 b(TRUE)g(\(=1\))f
(if)h(FITS)g(file)g(may)g(have)f(extensions,)f(else)i(FALSE)f(\(=0\))0
4507 y(extname)94 b(-)47 b(value)f(of)i(the)e(EXTNAME)g(keyword)g
(\(null-terminated\))0 4620 y(extspec)94 b(-)47 b(the)g(extension)e(or)
i(HDU)g(specifier;)e(a)j(number)e(or)h(name,)f(version,)g(and)h(type)0
4733 y(extver)142 b(-)47 b(value)f(of)i(the)e(EXTVER)h(keyword)e(=)j
(integer)e(version)f(number)0 4846 y(filename)h(-)h(full)g(name)f(of)h
(the)g(FITS)g(file,)f(including)g(optional)f(HDU)i(and)g(filtering)e
(specs)0 4959 y(filetype)h(-)h(type)g(of)g(file)f(\(file://,)g(ftp://,)
g(http://,)f(etc.\))0 5072 y(filter)142 b(-)47 b(the)g(input)f(file)h
(filtering)e(specifier)0 5185 y(firstchar-)g(starting)h(byte)g(in)h
(the)g(row)g(\(first)f(byte)h(of)g(row)g(=)g(1\))0 5297
y(firstfailed)e(-)i(member)f(HDU)h(ID)g(\(if)g(positive\))f(or)h
(grouping)e(table)i(GRPIDn)f(index)525 5410 y(value)g(\(if)h
(negative\))f(that)g(failed)g(grouping)g(table)g(verification.)0
5523 y(firstelem-)f(first)h(element)g(in)h(a)h(vector)e(\(ignored)f
(for)i(ASCII)g(tables\))0 5636 y(firstrow)f(-)h(starting)f(row)g
(number)h(\(first)f(row)h(of)g(table)f(=)i(1\))p eop
%%Page: 153 161
153 160 bop 3764 299 a Fj(153)0 555 y Fe(following-)45
b(if)i(TRUE,)g(any)f(HDUs)h(following)e(the)i(current)f(HDU)h(will)g
(be)g(copied)0 668 y(fpixel)142 b(-)47 b(coordinate)e(of)i(the)g(first)
f(pixel)h(to)g(be)g(read)g(or)g(written)f(in)h(the)525
781 y(FITS)g(array.)93 b(The)47 b(array)g(must)f(be)i(of)f(length)f
(NAXIS)g(and)h(have)g(values)f(such)525 894 y(that)h(fpixel[0])e(is)i
(in)g(the)g(range)g(1)g(to)g(NAXIS1,)f(fpixel[1])f(is)i(in)h(the)525
1007 y(range)e(1)i(to)f(NAXIS2,)f(etc.)0 1120 y(fptr)238
b(-)47 b(pointer)f(to)h(a)g('fitsfile')e(structure)h(describing)f(the)i
(FITS)f(file.)0 1233 y(frac)238 b(-)47 b(factional)e(part)i(of)g(the)g
(keyword)f(value)0 1346 y(gcount)142 b(-)47 b(number)f(of)h(groups)f
(in)i(the)e(primary)g(array)h(\(usually)e(=)j(1\))0 1458
y(gfptr)190 b(-)47 b(fitsfile*)e(pointer)h(to)h(a)h(grouping)d(table)i
(HDU.)0 1571 y(group)190 b(-)47 b(GRPIDn/GRPLCn)d(index)j(value)f
(identifying)f(a)i(grouping)f(table)g(HDU,)h(or)525 1684
y(data)g(group)f(number)g(\(=0)h(for)g(non-grouped)e(data\))0
1797 y(grouptype)g(-)j(Grouping)d(table)i(parameter)e(that)i(specifies)
e(the)i(columns)f(to)h(be)525 1910 y(created)f(in)h(a)g(grouping)f
(table)g(HDU.)h(Allowed)f(values)g(are:)h(GT_ID_ALL_URI,)525
2023 y(GT_ID_REF,)e(GT_ID_POS,)g(GT_ID_ALL,)g(GT_ID_REF_URI,)f(and)j
(GT_ID_POS_URI.)0 2136 y(grpname)94 b(-)47 b(value)f(to)i(use)e(for)h
(the)g(GRPNAME)f(keyword)g(value.)0 2249 y(hdunum)142
b(-)47 b(sequence)f(number)g(of)h(the)g(HDU)g(\(Primary)e(array)i(=)g
(1\))0 2362 y(hduok)190 b(-)47 b(was)g(the)g(HDU)g(verification)d
(successful)h(\(=1\))i(or)525 2475 y(not)g(\(=)g(-1\).)94
b(Equals)47 b(zero)f(if)h(the)g(CHECKSUM)f(keyword)g(is)h(not)g
(present.)0 2588 y(hdusum)142 b(-)47 b(32)g(bit)g(1's)g(complement)e
(checksum)h(for)g(the)h(entire)f(CHDU)0 2700 y(hdutype)94
b(-)47 b(type)g(of)g(HDU:)f(IMAGE_HDU)g(\(=0\),)g(ASCII_TBL)f(\(=1\),)i
(or)g(BINARY_TBL)e(\(=2\))0 2813 y(header)142 b(-)47
b(returned)f(character)f(string)h(containing)f(all)i(the)g(keyword)f
(records)0 2926 y(headstart-)f(starting)h(address)f(\(in)i(bytes\))f
(of)i(the)e(CHDU)0 3039 y(heapsize)g(-)h(size)g(of)g(the)g(binary)f
(table)g(heap,)h(in)g(bytes)0 3152 y(history)94 b(-)47
b(the)g(HISTORY)f(keyword)g(comment)f(string)h(\(70)h(char)g(max,)g
(null-terminated\))0 3265 y(hour)238 b(-)47 b(hour)g(within)f(day)h
(\(UTC\))f(\(0)h(-)h(23\))0 3378 y(inc)286 b(-)47 b(sampling)f
(interval)f(for)i(pixels)f(in)h(each)g(FITS)g(dimension)0
3491 y(inclist)94 b(-)47 b(array)f(of)i(pointers)d(to)i(matching)f
(keyword)g(names)0 3604 y(incolnum)g(-)h(input)f(column)g(number;)g
(range)h(=)g(1)h(to)f(TFIELDS)0 3717 y(infile)142 b(-)47
b(the)g(input)f(filename,)g(including)f(path)h(if)i(specified)0
3830 y(infptr)142 b(-)47 b(pointer)f(to)h(a)g('fitsfile')e(structure)h
(describing)f(the)i(input)f(FITS)h(file.)0 3942 y(intval)142
b(-)47 b(integer)f(part)g(of)i(the)f(keyword)e(value)0
4055 y(iomode)142 b(-)47 b(file)g(access)f(mode:)g(either)g(READONLY)g
(\(=0\))g(or)i(READWRITE)d(\(=1\))0 4168 y(keyname)94
b(-)47 b(name)g(of)g(a)g(keyword)f(\(8)h(char)g(max,)g
(null-terminated\))0 4281 y(keynum)142 b(-)47 b(position)f(of)h
(keyword)f(in)h(header)f(\(1st)g(keyword)g(=)i(1\))0
4394 y(keyroot)94 b(-)47 b(root)g(string)f(for)h(the)g(keyword)e(name)i
(\(5)g(char)g(max,)f(null-terminated\))0 4507 y(keysexist-)f(number)h
(of)h(existing)f(keyword)g(records)f(in)j(the)f(CHU)0
4620 y(keytype)94 b(-)47 b(header)f(record)g(type:)h(-1=delete;)92
b(0=append)46 b(or)h(replace;)907 4733 y(1=append;)e(2=this)h(is)h(the)
g(END)g(keyword)0 4846 y(longstr)94 b(-)47 b(arbitrarily)e(long)h
(string)g(keyword)g(value)h(\(null-terminated\))0 4959
y(lpixel)142 b(-)47 b(coordinate)e(of)i(the)g(last)g(pixel)f(to)h(be)g
(read)g(or)g(written)f(in)h(the)525 5072 y(FITS)g(array.)93
b(The)47 b(array)g(must)f(be)i(of)f(length)f(NAXIS)g(and)h(have)g
(values)f(such)525 5185 y(that)h(lpixel[0])e(is)i(in)g(the)g(range)g(1)
g(to)g(NAXIS1,)f(lpixel[1])f(is)i(in)h(the)525 5297 y(range)e(1)i(to)f
(NAXIS2,)f(etc.)0 5410 y(match)190 b(-)47 b(TRUE)g(\(=1\))f(if)h(the)g
(2)h(strings)e(match,)g(else)g(FALSE)h(\(=0\))0 5523
y(maxdim)142 b(-)47 b(maximum)f(number)g(of)h(values)f(to)h(return)0
5636 y(member)142 b(-)47 b(row)g(number)f(of)h(a)h(grouping)d(table)i
(member)f(HDU.)p eop
%%Page: 154 162
154 161 bop 0 299 a Fj(154)1822 b Fh(APPENDIX)31 b(B.)61
b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y Fe(memptr)142
b(-)47 b(pointer)f(to)h(the)g(a)g(FITS)g(file)g(in)g(memory)0
668 y(mem_realloc)e(-)i(pointer)f(to)h(a)h(function)d(for)i
(reallocating)e(more)h(memory)0 781 y(memsize)94 b(-)47
b(size)g(of)g(the)g(memory)f(block)g(allocated)f(for)i(the)g(FITS)g
(file)0 894 y(mfptr)190 b(-)47 b(fitsfile*)e(pointer)h(to)h(a)h
(grouping)d(table)i(member)f(HDU.)0 1007 y(mgopt)190
b(-)47 b(grouping)f(table)g(merge)g(option)g(parameter.)f(Allowed)h
(values)g(are:)525 1120 y(OPT_MRG_COPY,)e(and)j(OPT_MRG_MOV.)0
1233 y(minute)142 b(-)47 b(minute)f(within)g(hour)h(\(UTC\))f(\(0)h(-)h
(59\))0 1346 y(month)190 b(-)47 b(calendar)f(month)g(\(UTC\))g(\(1)h(-)
h(12\))0 1458 y(morekeys)e(-)h(space)f(in)i(the)e(header)h(for)f(this)h
(many)g(more)f(keywords)0 1571 y(n_good_rows)f(-)i(number)f(of)h(rows)g
(evaluating)e(to)i(TRUE)0 1684 y(namelist)f(-)h(string)f(containing)f
(a)j(comma)e(or)h(space)f(delimited)g(list)g(of)i(names)0
1797 y(naxes)190 b(-)47 b(size)g(of)g(each)f(dimension)g(in)h(the)g
(FITS)f(array)0 1910 y(naxis)190 b(-)47 b(number)f(of)h(dimensions)e
(in)i(the)g(FITS)g(array)0 2023 y(naxis1)142 b(-)47 b(length)f(of)h
(the)g(X/first)f(axis)h(of)g(the)g(FITS)f(array)0 2136
y(naxis2)142 b(-)47 b(length)f(of)h(the)g(Y/second)f(axis)g(of)i(the)e
(FITS)h(array)0 2249 y(naxis3)142 b(-)47 b(length)f(of)h(the)g(Z/third)
f(axis)h(of)g(the)g(FITS)f(array)0 2362 y(nchars)142
b(-)47 b(number)f(of)h(characters)e(to)i(read)g(or)g(write)0
2475 y(nelements-)e(number)h(of)h(data)g(elements)e(to)j(read)e(or)h
(write)0 2588 y(newfptr)94 b(-)47 b(returned)f(pointer)f(to)j(the)e
(reopened)g(file)0 2700 y(newveclen-)f(new)i(value)f(for)h(the)g
(column)f(vector)g(repeat)g(parameter)0 2813 y(nexc)238
b(-)47 b(number)f(of)h(names)g(in)g(the)g(exclusion)e(list)i(\(may)f(=)
i(0\))0 2926 y(nfound)142 b(-)47 b(number)f(of)h(keywords)f(found)g
(\(highest)g(keyword)g(number\))0 3039 y(nkeys)190 b(-)47
b(number)f(of)h(keywords)f(in)h(the)g(sequence)0 3152
y(ninc)238 b(-)47 b(number)f(of)h(names)g(in)g(the)g(inclusion)e(list)0
3265 y(nmembers)h(-)h(Number)f(of)h(grouping)f(table)g(members)g
(\(NAXIS2)g(value\).)0 3378 y(nmove)190 b(-)47 b(number)f(of)h(HDUs)g
(to)g(move)g(\(+)g(or)g(-\),)g(relative)f(to)h(current)f(position)0
3491 y(nocomments)f(-)i(if)h(equal)e(to)h(TRUE,)g(then)f(no)h
(commentary)e(keywords)h(will)h(be)g(copied)0 3604 y(noisebits-)e
(number)h(of)h(bits)g(to)g(ignore)f(when)h(compressing)e(floating)g
(point)h(images)0 3717 y(nrows)190 b(-)47 b(number)f(of)h(rows)g(in)g
(the)g(table)0 3830 y(nstart)142 b(-)47 b(first)f(integer)g(value)0
3942 y(nullarray-)f(set)i(to)g(TRUE)g(\(=1\))f(if)i(corresponding)c
(data)i(element)g(is)h(undefined)0 4055 y(nulval)142
b(-)47 b(numerical)e(value)i(to)g(represent)e(undefined)g(pixels)0
4168 y(nulstr)142 b(-)47 b(character)e(string)h(used)h(to)g(represent)e
(undefined)h(values)g(in)h(ASCII)f(table)0 4281 y(numval)142
b(-)47 b(numerical)e(data)i(value,)f(of)h(the)g(appropriate)e(data)h
(type)0 4394 y(offset)142 b(-)95 b(byte)46 b(offset)g(in)i(the)f(heap)f
(to)h(the)g(first)g(element)e(of)j(the)f(vector)0 4507
y(openfptr)f(-)h(pointer)f(to)h(a)g(currently)f(open)g(FITS)h(file)0
4620 y(overlap)94 b(-)47 b(number)f(of)h(bytes)g(in)g(the)g(binary)f
(table)g(heap)h(pointed)f(to)h(by)g(more)g(than)f(1)525
4733 y(descriptor)0 4846 y(outcolnum-)f(output)h(column)g(number;)g
(range)g(=)i(1)f(to)g(TFIELDS)f(+)i(1)0 4959 y(outfile)94
b(-)47 b(and)g(optional)e(output)i(filename;)e(the)i(input)f(file)h
(will)f(be)i(copied)e(to)h(this)f(prior)525 5072 y(to)h(opening)f(the)h
(file)0 5185 y(outfptr)94 b(-)47 b(pointer)f(to)h(a)g('fitsfile')e
(structure)h(describing)f(the)i(output)f(FITS)g(file.)0
5297 y(pcount)142 b(-)47 b(value)f(of)i(the)e(PCOUNT)h(keyword)e(=)j
(size)e(of)i(binary)e(table)g(heap)0 5410 y(previous)g(-)h(if)g(TRUE,)g
(any)f(previous)g(HDUs)h(in)g(the)g(input)f(file)h(will)f(be)i(copied.)
0 5523 y(repeat)142 b(-)47 b(length)f(of)h(column)f(vector)g(\(e.g.)h
(12J\);)f(==)h(1)h(for)f(ASCII)f(table)0 5636 y(rmopt)190
b(-)47 b(grouping)f(table)g(remove)g(option)g(parameter.)f(Allowed)h
(values)g(are:)p eop
%%Page: 155 163
155 162 bop 3764 299 a Fj(155)525 555 y Fe(OPT_RM_GPT,)45
b(OPT_RM_ENTRY,)f(OPT_RM_MBR,)h(and)i(OPT_RM_ALL.)0 668
y(rootname)f(-)h(root)g(filename,)e(minus)h(any)h(extension)e(or)j
(filtering)d(specifications)0 781 y(rot)286 b(-)47 b(celestial)e
(coordinate)g(rotation)h(angle)g(\(degrees\))0 894 y(rowlen)142
b(-)47 b(length)f(of)h(a)h(table)e(row,)h(in)g(characters)e(or)i(bytes)
0 1007 y(rowlist)94 b(-)47 b(sorted)f(list)h(of)g(row)g(numbers)f(to)h
(be)g(deleted)f(from)g(the)h(table)0 1120 y(rownum)142
b(-)47 b(number)f(of)h(the)g(row)g(\(first)f(row)h(=)h(1\))0
1233 y(rowrange)e(-)h(list)g(of)g(rows)f(or)i(row)f(ranges:)e
('3,6-8,12,56-80')f(or)j('500-')0 1346 y(row_status)e(-)i(array)g(of)g
(True/False)e(results)h(for)h(each)f(row)h(that)g(was)g(evaluated)0
1458 y(scale)190 b(-)47 b(linear)f(scaling)g(factor;)g(true)g(value)h
(=)g(\(FITS)g(value\))f(*)h(scale)f(+)i(zero)0 1571 y(second)142
b(-)47 b(second)f(within)g(minute)g(\(0)h(-)h(60.9999999999\))c(\(leap)
i(second!\))0 1684 y(simple)142 b(-)47 b(TRUE)g(\(=1\))f(if)h(FITS)g
(file)g(conforms)e(to)i(the)g(Standard,)f(else)g(FALSE)h(\(=0\))0
1797 y(space)190 b(-)47 b(number)f(of)h(blank)g(spaces)f(to)h(leave)f
(between)g(ASCII)g(table)h(columns)0 1910 y(status)142
b(-)47 b(returned)f(error)g(status)g(code)h(\(0)g(=)g(OK\))0
2023 y(sum)286 b(-)47 b(32)g(bit)g(unsigned)f(checksum)f(value)0
2136 y(tbcol)190 b(-)47 b(byte)g(position)e(in)i(row)g(to)g(start)g(of)
g(column)f(\(1st)h(col)g(has)g(tbcol)f(=)h(1\))0 2249
y(tdisp)190 b(-)47 b(Fortran)f(style)g(display)g(format)g(for)h(the)g
(table)f(column)0 2362 y(tdimstr)94 b(-)47 b(the)g(value)f(of)h(the)g
(TDIMn)g(keyword)0 2475 y(templt)142 b(-)47 b(template)f(string)g(used)
g(in)h(comparison)e(\(null-terminated\))0 2588 y(tfields)94
b(-)47 b(number)f(of)h(fields)f(\(columns\))g(in)h(the)g(table)0
2700 y(tfopt)190 b(-)47 b(grouping)f(table)g(member)g(transfer)g
(option)g(parameter.)f(Allowed)g(values)i(are:)525 2813
y(OPT_MCP_ADD,)d(and)j(OPT_MCP_MOV.)0 2926 y(tform)190
b(-)47 b(format)f(of)h(the)g(column)f(\(null-terminated\);)d(allowed)j
(values)g(are:)525 3039 y(ASCII)g(tables:)94 b(Iw,)47
b(Aw,)g(Fww.dd,)f(Eww.dd,)f(or)j(Dww.dd)525 3152 y(Binary)e(tables:)g
(rL,)h(rX,)g(rB,)g(rI,)g(rJ,)f(rA,)h(rAw,)g(rE,)g(rD,)g(rC,)g(rM)525
3265 y(where)f('w'=width)g(of)h(the)g(field,)f('d'=no.)g(of)h
(decimals,)e('r'=repeat)g(count.)525 3378 y(Variable)h(length)g(array)g
(columns)g(are)h(denoted)f(by)h(a)g('1P')g(before)f(the)h(data)f(type)
525 3491 y(character)f(\(e.g.,)h('1PJ'\).)94 b(When)47
b(creating)e(a)j(binary)e(table,)g(2)h(addition)f(tform)525
3604 y(data)h(type)f(codes)h(are)g(recognized)e(by)i(CFITSIO:)e('rU')i
(and)g('rV')f(for)h(unsigned)525 3717 y(16-bit)f(and)h(unsigned)f
(32-bit)g(integer,)f(respectively.)0 3942 y(theap)190
b(-)47 b(zero)g(indexed)e(byte)i(offset)f(of)h(starting)f(address)g(of)
h(the)g(heap)525 4055 y(relative)f(to)h(the)g(beginning)e(of)i(the)g
(binary)f(table)g(data)0 4168 y(tilesize)g(-)h(array)f(of)i(length)e
(NAXIS)g(that)h(specifies)e(the)i(dimensions)e(of)525
4281 y(the)i(image)f(compression)f(tiles)0 4394 y(ttype)190
b(-)47 b(label)f(or)i(name)e(for)h(table)f(column)h
(\(null-terminated\))0 4507 y(tunit)190 b(-)47 b(physical)f(unit)g(for)
h(table)f(column)h(\(null-terminated\))0 4620 y(typechar)f(-)h
(symbolic)f(code)g(of)h(the)g(table)g(column)f(data)g(type)0
4733 y(typecode)g(-)h(data)g(type)f(code)h(of)g(the)g(table)f(column.)
94 b(The)47 b(negative)e(of)525 4846 y(the)i(value)f(indicates)g(a)h
(variable)f(length)g(array)g(column.)764 4959 y(Datatype)618
b(typecode)189 b(Mnemonic)764 5072 y(bit,)46 b(X)907
b(1)381 b(TBIT)764 5185 y(byte,)46 b(B)811 b(11)381 b(TBYTE)764
5297 y(logical,)45 b(L)668 b(14)381 b(TLOGICAL)764 5410
y(ASCII)46 b(character,)f(A)286 b(16)381 b(TSTRING)764
5523 y(short)46 b(integer,)g(I)381 b(21)g(TSHORT)764
5636 y(integer,)45 b(J)668 b(41)381 b(TINT32BIT)p eop
%%Page: 156 164
156 163 bop 0 299 a Fj(156)1822 b Fh(APPENDIX)31 b(B.)61
b(P)-8 b(ARAMETER)30 b(DEFINITIONS)764 555 y Fe(long)46
b(long)h(integer,)e(K)191 b(81)381 b(TLONGLONG)764 668
y(real,)46 b(E)811 b(42)381 b(TFLOAT)764 781 y(double)46
b(precision,)f(D)238 b(82)381 b(TDOUBLE)764 894 y(complex,)45
b(C)668 b(83)381 b(TCOMPLEX)764 1007 y(double)46 b(complex,)f(M)286
b(163)381 b(TDBLCOMPLEX)620 1120 y(The)47 b(TLONGLONG)f(column)g(type)g
(is)i(experimental)c(and)j(is)g(not)620 1233 y(recognized)e(in)j(the)f
(official)e(FITS)i(Standard)e(document)0 1346 y(unit)238
b(-)47 b(the)g(physical)e(unit)i(string)f(\(e.g.,)g('km/s'\))g(for)h(a)
g(keyword)0 1458 y(unused)142 b(-)47 b(number)f(of)h(unused)f(bytes)h
(in)g(the)g(binary)f(table)g(heap)0 1571 y(urltype)94
b(-)47 b(the)g(file)g(type)f(of)h(the)g(FITS)g(file)g(\(file://,)e
(ftp://,)h(mem://,)f(etc.\))0 1684 y(validheap-)g(returned)h(value)g(=)
h(FALSE)g(if)g(any)g(of)g(the)g(variable)e(length)i(array)525
1797 y(address)f(are)h(outside)f(the)g(valid)h(range)f(of)h(addresses)f
(in)h(the)g(heap)0 1910 y(value)190 b(-)47 b(the)g(keyword)f(value)g
(string)g(\(70)h(char)g(max,)f(null-terminated\))0 2023
y(version)94 b(-)47 b(current)f(version)g(number)g(of)h(the)g(CFITSIO)f
(library)0 2136 y(width)190 b(-)47 b(width)f(of)i(the)e(character)g
(string)g(field)0 2249 y(xcol)238 b(-)47 b(number)f(of)h(the)g(column)f
(containing)f(the)i(X)h(coordinate)d(values)0 2362 y(xinc)238
b(-)47 b(X)g(axis)g(coordinate)e(increment)g(at)j(reference)d(pixel)h
(\(deg\))0 2475 y(xpix)238 b(-)47 b(X)g(axis)g(pixel)f(location)0
2588 y(xpos)238 b(-)47 b(X)g(axis)g(celestial)e(coordinate)g(\(usually)
h(RA\))h(\(deg\))0 2700 y(xrefpix)94 b(-)47 b(X)g(axis)g(reference)e
(pixel)i(array)f(location)0 2813 y(xrefval)94 b(-)47
b(X)g(axis)g(coordinate)e(value)h(at)i(the)f(reference)e(pixel)h
(\(deg\))0 2926 y(ycol)238 b(-)47 b(number)f(of)h(the)g(column)f
(containing)f(the)i(X)h(coordinate)d(values)0 3039 y(year)238
b(-)47 b(calendar)f(year)g(\(e.g.)h(1999,)f(2000,)g(etc\))0
3152 y(yinc)238 b(-)47 b(Y)g(axis)g(coordinate)e(increment)g(at)j
(reference)d(pixel)h(\(deg\))0 3265 y(ypix)238 b(-)47
b(y)g(axis)g(pixel)f(location)0 3378 y(ypos)238 b(-)47
b(y)g(axis)g(celestial)e(coordinate)g(\(usually)h(DEC\))h(\(deg\))0
3491 y(yrefpix)94 b(-)47 b(Y)g(axis)g(reference)e(pixel)i(array)f
(location)0 3604 y(yrefval)94 b(-)47 b(Y)g(axis)g(coordinate)e(value)h
(at)i(the)f(reference)e(pixel)h(\(deg\))0 3717 y(zero)238
b(-)47 b(scaling)f(offset;)g(true)g(value)h(=)g(\(FITS)f(value\))h(*)g
(scale)f(+)i(zero)p eop
%%Page: 157 165
157 164 bop 0 1225 a Fg(App)5 b(endix)65 b(C)0 1687 y
Fm(CFITSIO)76 b(Error)h(Status)h(Co)6 b(des)0 2180 y
Fj(The)28 b(follo)m(wing)e(table)i(lists)f(all)g(the)h(error)g(status)g
(co)s(des)g(used)f(b)m(y)h(CFITSIO.)f(Programmers)h(are)g(encouraged)0
2293 y(to)37 b(use)e(the)h(sym)m(b)s(olic)f(mnemonics)f(\(de\014ned)h
(in)g(the)h(\014le)f(\014tsio.h\))h(rather)f(than)h(the)g(actual)g(in)m
(teger)h(status)0 2406 y(v)-5 b(alues)30 b(to)h(impro)m(v)m(e)f(the)h
(readabilit)m(y)d(of)j(their)e(co)s(de.)48 2665 y Fe(Symbolic)45
b(Const)190 b(Value)237 b(Meaning)48 2778 y(--------------)187
b(-----)94 b(------------------------)o(----)o(---)o(----)o(----)o(--)
1002 2891 y(0)191 b(OK,)47 b(no)g(error)48 3004 y(SAME_FILE)427
b(101)190 b(input)46 b(and)h(output)f(files)h(are)g(the)f(same)48
3117 y(TOO_MANY_FILES)187 b(103)j(tried)46 b(to)h(open)g(too)g(many)g
(FITS)f(files)h(at)g(once)48 3230 y(FILE_NOT_OPENED)139
b(104)190 b(could)46 b(not)h(open)g(the)g(named)f(file)48
3343 y(FILE_NOT_CREATED)91 b(105)190 b(could)46 b(not)h(create)f(the)h
(named)g(file)48 3456 y(WRITE_ERROR)331 b(106)190 b(error)46
b(writing)g(to)h(FITS)g(file)48 3569 y(END_OF_FILE)331
b(107)190 b(tried)46 b(to)h(move)g(past)g(end)g(of)g(file)48
3681 y(READ_ERROR)379 b(108)190 b(error)46 b(reading)g(from)h(FITS)f
(file)48 3794 y(FILE_NOT_CLOSED)139 b(110)190 b(could)46
b(not)h(close)g(the)f(file)48 3907 y(ARRAY_TOO_BIG)235
b(111)190 b(array)46 b(dimensions)f(exceed)h(internal)g(limit)48
4020 y(READONLY_FILE)235 b(112)190 b(Cannot)46 b(write)g(to)i(readonly)
d(file)48 4133 y(MEMORY_ALLOCATION)e(113)190 b(Could)46
b(not)h(allocate)f(memory)48 4246 y(BAD_FILEPTR)331 b(114)190
b(invalid)46 b(fitsfile)f(pointer)48 4359 y(NULL_INPUT_PTR)187
b(115)j(NULL)47 b(input)f(pointer)g(to)h(routine)48 4472
y(SEEK_ERROR)379 b(116)190 b(error)46 b(seeking)g(position)g(in)h(file)
48 4698 y(BAD_URL_PREFIX)235 b(121)142 b(invalid)46 b(URL)h(prefix)f
(on)h(file)g(name)48 4811 y(TOO_MANY_DRIVERS)139 b(122)j(tried)46
b(to)h(register)f(too)h(many)g(IO)g(drivers)48 4924 y
(DRIVER_INIT_FAILED)c(123)142 b(driver)46 b(initialization)e(failed)48
5036 y(NO_MATCHING_DRIVER)f(124)142 b(matching)45 b(driver)i(is)g(not)g
(registered)48 5149 y(URL_PARSE_ERROR)187 b(125)142 b(failed)46
b(to)h(parse)g(input)f(file)h(URL)48 5262 y(RANGE_PARSE_ERROR)91
b(126)142 b(parse)46 b(error)h(in)g(range)f(list)48 5488
y(SHARED_BADARG)235 b(151)190 b(bad)47 b(argument)e(in)j(shared)e
(memory)g(driver)48 5601 y(SHARED_NULPTR)235 b(152)190
b(null)47 b(pointer)e(passed)h(as)i(an)f(argument)48
5714 y(SHARED_TABFULL)187 b(153)j(no)47 b(more)g(free)f(shared)g
(memory)h(handles)1882 5942 y Fj(157)p eop
%%Page: 158 166
158 165 bop 0 299 a Fj(158)1589 b Fh(APPENDIX)31 b(C.)61
b(CFITSIO)29 b(ERR)m(OR)h(ST)-8 b(A)g(TUS)30 b(CODES)48
555 y Fe(SHARED_NOTINIT)187 b(154)j(shared)46 b(memory)g(driver)g(is)h
(not)g(initialized)48 668 y(SHARED_IPCERR)235 b(155)190
b(IPC)47 b(error)f(returned)g(by)h(a)g(system)f(call)48
781 y(SHARED_NOMEM)283 b(156)190 b(no)47 b(memory)f(in)h(shared)f
(memory)h(driver)48 894 y(SHARED_AGAIN)283 b(157)190
b(resource)45 b(deadlock)h(would)g(occur)48 1007 y(SHARED_NOFILE)235
b(158)190 b(attempt)46 b(to)h(open/create)e(lock)h(file)h(failed)48
1120 y(SHARED_NORESIZE)139 b(159)190 b(shared)46 b(memory)g(block)g
(cannot)h(be)g(resized)f(at)h(the)g(moment)48 1346 y(HEADER_NOT_EMPTY)
91 b(201)190 b(header)46 b(already)g(contains)f(keywords)48
1458 y(KEY_NO_EXIST)283 b(202)190 b(keyword)46 b(not)h(found)f(in)h
(header)48 1571 y(KEY_OUT_BOUNDS)187 b(203)j(keyword)46
b(record)g(number)g(is)h(out)g(of)g(bounds)48 1684 y(VALUE_UNDEFINED)
139 b(204)190 b(keyword)46 b(value)g(field)g(is)i(blank)48
1797 y(NO_QUOTE)475 b(205)190 b(string)46 b(is)h(missing)f(the)h
(closing)f(quote)48 1910 y(BAD_KEYCHAR)331 b(207)190
b(illegal)46 b(character)f(in)i(keyword)f(name)h(or)g(card)48
2023 y(BAD_ORDER)427 b(208)190 b(required)45 b(keywords)h(out)h(of)g
(order)48 2136 y(NOT_POS_INT)331 b(209)190 b(keyword)46
b(value)g(is)h(not)g(a)h(positive)d(integer)48 2249 y(NO_END)571
b(210)190 b(couldn't)45 b(find)i(END)g(keyword)48 2362
y(BAD_BITPIX)379 b(211)190 b(illegal)46 b(BITPIX)g(keyword)g(value)48
2475 y(BAD_NAXIS)427 b(212)190 b(illegal)46 b(NAXIS)g(keyword)g(value)
48 2588 y(BAD_NAXES)427 b(213)190 b(illegal)46 b(NAXISn)g(keyword)g
(value)48 2700 y(BAD_PCOUNT)379 b(214)190 b(illegal)46
b(PCOUNT)g(keyword)g(value)48 2813 y(BAD_GCOUNT)379 b(215)190
b(illegal)46 b(GCOUNT)g(keyword)g(value)48 2926 y(BAD_TFIELDS)331
b(216)190 b(illegal)46 b(TFIELDS)g(keyword)f(value)48
3039 y(NEG_WIDTH)427 b(217)190 b(negative)45 b(table)i(row)g(size)48
3152 y(NEG_ROWS)475 b(218)190 b(negative)45 b(number)i(of)g(rows)f(in)i
(table)48 3265 y(COL_NOT_FOUND)235 b(219)190 b(column)46
b(with)h(this)f(name)h(not)g(found)f(in)h(table)48 3378
y(BAD_SIMPLE)379 b(220)190 b(illegal)46 b(value)g(of)h(SIMPLE)f
(keyword)48 3491 y(NO_SIMPLE)427 b(221)190 b(Primary)46
b(array)g(doesn't)g(start)g(with)h(SIMPLE)48 3604 y(NO_BITPIX)427
b(222)190 b(Second)46 b(keyword)g(not)h(BITPIX)48 3717
y(NO_NAXIS)475 b(223)190 b(Third)46 b(keyword)g(not)h(NAXIS)48
3830 y(NO_NAXES)475 b(224)190 b(Couldn't)45 b(find)i(all)g(the)g
(NAXISn)f(keywords)48 3942 y(NO_XTENSION)331 b(225)190
b(HDU)47 b(doesn't)f(start)g(with)h(XTENSION)e(keyword)48
4055 y(NOT_ATABLE)379 b(226)190 b(the)47 b(CHDU)f(is)i(not)f(an)g
(ASCII)f(table)g(extension)48 4168 y(NOT_BTABLE)379 b(227)190
b(the)47 b(CHDU)f(is)i(not)f(a)g(binary)f(table)g(extension)48
4281 y(NO_PCOUNT)427 b(228)190 b(couldn't)45 b(find)i(PCOUNT)f(keyword)
48 4394 y(NO_GCOUNT)427 b(229)190 b(couldn't)45 b(find)i(GCOUNT)f
(keyword)48 4507 y(NO_TFIELDS)379 b(230)190 b(couldn't)45
b(find)i(TFIELDS)f(keyword)48 4620 y(NO_TBCOL)475 b(231)190
b(couldn't)45 b(find)i(TBCOLn)f(keyword)48 4733 y(NO_TFORM)475
b(232)190 b(couldn't)45 b(find)i(TFORMn)f(keyword)48
4846 y(NOT_IMAGE)427 b(233)190 b(the)47 b(CHDU)f(is)i(not)f(an)g(IMAGE)
f(extension)48 4959 y(BAD_TBCOL)427 b(234)190 b(TBCOLn)46
b(keyword)g(value)g(<)i(0)f(or)g(>)h(rowlength)48 5072
y(NOT_TABLE)427 b(235)190 b(the)47 b(CHDU)f(is)i(not)f(a)g(table)48
5185 y(COL_TOO_WIDE)283 b(236)190 b(column)46 b(is)h(too)g(wide)g(to)g
(fit)g(in)g(table)48 5297 y(COL_NOT_UNIQUE)187 b(237)j(more)47
b(than)f(1)i(column)e(name)g(matches)g(template)48 5410
y(BAD_ROW_WIDTH)235 b(241)190 b(sum)47 b(of)g(column)f(widths)g(not)h
(=)h(NAXIS1)48 5523 y(UNKNOWN_EXT)331 b(251)190 b(unrecognizable)44
b(FITS)i(extension)g(type)48 5636 y(UNKNOWN_REC)331 b(252)190
b(unknown)46 b(record;)g(1st)g(keyword)g(not)h(SIMPLE)f(or)h(XTENSION)p
eop
%%Page: 159 167
159 166 bop 3764 299 a Fj(159)48 555 y Fe(END_JUNK)475
b(253)190 b(END)47 b(keyword)f(is)h(not)g(blank)48 668
y(BAD_HEADER_FILL)139 b(254)190 b(Header)46 b(fill)h(area)f(contains)g
(non-blank)f(chars)48 781 y(BAD_DATA_FILL)235 b(255)190
b(Illegal)46 b(data)g(fill)h(bytes)f(\(not)h(zero)g(or)g(blank\))48
894 y(BAD_TFORM)427 b(261)190 b(illegal)46 b(TFORM)g(format)g(code)48
1007 y(BAD_TFORM_DTYPE)139 b(262)190 b(unrecognizable)44
b(TFORM)i(data)h(type)f(code)48 1120 y(BAD_TDIM)475 b(263)190
b(illegal)46 b(TDIMn)g(keyword)g(value)48 1233 y(BAD_HEAP_PTR)283
b(264)190 b(invalid)46 b(BINTABLE)f(heap)i(pointer)f(is)h(out)g(of)g
(range)48 1458 y(BAD_HDU_NUM)331 b(301)190 b(HDU)47 b(number)f(<)h(1)48
1571 y(BAD_COL_NUM)331 b(302)190 b(column)46 b(number)g(<)i(1)f(or)g(>)
h(tfields)48 1684 y(NEG_FILE_POS)283 b(304)190 b(tried)46
b(to)h(move)g(to)g(negative)f(byte)g(location)g(in)h(file)48
1797 y(NEG_BYTES)427 b(306)190 b(tried)46 b(to)h(read)g(or)g(write)g
(negative)e(number)h(of)h(bytes)48 1910 y(BAD_ROW_NUM)331
b(307)190 b(illegal)46 b(starting)f(row)i(number)f(in)h(table)48
2023 y(BAD_ELEM_NUM)283 b(308)190 b(illegal)46 b(starting)f(element)h
(number)g(in)h(vector)48 2136 y(NOT_ASCII_COL)235 b(309)190
b(this)47 b(is)g(not)g(an)g(ASCII)f(string)g(column)48
2249 y(NOT_LOGICAL_COL)139 b(310)190 b(this)47 b(is)g(not)g(a)g
(logical)f(data)h(type)f(column)48 2362 y(BAD_ATABLE_FORMAT)d(311)190
b(ASCII)46 b(table)h(column)f(has)h(wrong)f(format)48
2475 y(BAD_BTABLE_FORMAT)d(312)190 b(Binary)46 b(table)g(column)g(has)h
(wrong)g(format)48 2588 y(NO_NULL)523 b(314)190 b(null)47
b(value)f(has)h(not)g(been)f(defined)48 2700 y(NOT_VARI_LEN)283
b(317)190 b(this)47 b(is)g(not)g(a)g(variable)f(length)g(column)48
2813 y(BAD_DIMEN)427 b(320)190 b(illegal)46 b(number)g(of)h(dimensions)
e(in)i(array)48 2926 y(BAD_PIX_NUM)331 b(321)190 b(first)46
b(pixel)h(number)f(greater)g(than)g(last)h(pixel)48 3039
y(ZERO_SCALE)379 b(322)190 b(illegal)46 b(BSCALE)g(or)h(TSCALn)f
(keyword)g(=)h(0)48 3152 y(NEG_AXIS)475 b(323)190 b(illegal)46
b(axis)g(length)g(<)i(1)48 3378 y(NOT_GROUP_TABLE)330
b(340)142 b(Grouping)46 b(function)f(error)48 3491 y
(HDU_ALREADY_MEMBER)186 b(341)48 3604 y(MEMBER_NOT_FOUND)282
b(342)48 3717 y(GROUP_NOT_FOUND)330 b(343)48 3830 y(BAD_GROUP_ID)474
b(344)48 3942 y(TOO_MANY_HDUS_TRACKED)42 b(345)48 4055
y(HDU_ALREADY_TRACKED)138 b(346)48 4168 y(BAD_OPTION)570
b(347)48 4281 y(IDENTICAL_POINTERS)186 b(348)48 4394
y(BAD_GROUP_ATTACH)282 b(349)48 4507 y(BAD_GROUP_DETACH)g(350)48
4733 y(NGP_NO_MEMORY)426 b(360)238 b(malloc)46 b(failed)48
4846 y(NGP_READ_ERR)474 b(361)238 b(read)46 b(error)h(from)f(file)48
4959 y(NGP_NUL_PTR)522 b(362)238 b(null)46 b(pointer)g(passed)g(as)h
(an)g(argument.)1575 5072 y(Passing)f(null)g(pointer)g(as)h(a)h(name)f
(of)1575 5185 y(template)f(file)g(raises)g(this)h(error)48
5297 y(NGP_EMPTY_CURLINE)234 b(363)k(line)46 b(read)h(seems)f(to)h(be)h
(empty)e(\(used)1575 5410 y(internally\))48 5523 y
(NGP_UNREAD_QUEUE_FULL)c(364)238 b(cannot)46 b(unread)g(more)g(then)h
(1)g(line)g(\(or)g(single)1575 5636 y(line)g(twice\))p
eop
%%Page: 160 168
160 167 bop 0 299 a Fj(160)1589 b Fh(APPENDIX)31 b(C.)61
b(CFITSIO)29 b(ERR)m(OR)h(ST)-8 b(A)g(TUS)30 b(CODES)48
555 y Fe(NGP_INC_NESTING)330 b(365)238 b(too)46 b(deep)h(include)f
(file)h(nesting)e(\(infinite)1575 668 y(loop,)h(template)g(includes)f
(itself)i(?\))48 781 y(NGP_ERR_FOPEN)426 b(366)238 b(fopen\(\))45
b(failed,)h(cannot)g(open)h(template)e(file)48 894 y(NGP_EOF)714
b(367)238 b(end)46 b(of)i(file)e(encountered)f(and)i(not)g(expected)48
1007 y(NGP_BAD_ARG)522 b(368)238 b(bad)46 b(arguments)g(passed.)g
(Usually)f(means)1575 1120 y(internal)h(parser)g(error.)g(Should)g(not)
h(happen)48 1233 y(NGP_TOKEN_NOT_EXPECT)90 b(369)238
b(token)46 b(not)h(expected)e(here)48 1458 y(BAD_I2C)523
b(401)190 b(bad)47 b(int)g(to)g(formatted)e(string)h(conversion)48
1571 y(BAD_F2C)523 b(402)190 b(bad)47 b(float)f(to)h(formatted)f
(string)g(conversion)48 1684 y(BAD_INTKEY)379 b(403)190
b(can't)46 b(interpret)g(keyword)f(value)i(as)g(integer)48
1797 y(BAD_LOGICALKEY)187 b(404)j(can't)46 b(interpret)g(keyword)f
(value)i(as)g(logical)48 1910 y(BAD_FLOATKEY)283 b(405)190
b(can't)46 b(interpret)g(keyword)f(value)i(as)g(float)48
2023 y(BAD_DOUBLEKEY)235 b(406)190 b(can't)46 b(interpret)g(keyword)f
(value)i(as)g(double)48 2136 y(BAD_C2I)523 b(407)190
b(bad)47 b(formatted)e(string)h(to)h(int)g(conversion)48
2249 y(BAD_C2F)523 b(408)190 b(bad)47 b(formatted)e(string)h(to)h
(float)g(conversion)48 2362 y(BAD_C2D)523 b(409)190 b(bad)47
b(formatted)e(string)h(to)h(double)f(conversion)48 2475
y(BAD_DATATYPE)283 b(410)190 b(illegal)46 b(datatype)f(code)i(value)48
2588 y(BAD_DECIM)427 b(411)190 b(bad)47 b(number)f(of)h(decimal)f
(places)g(specified)48 2700 y(NUM_OVERFLOW)283 b(412)190
b(overflow)45 b(during)i(data)f(type)h(conversion)48
2813 y(DATA_COMPRESSION_ERR)137 b(413)95 b(error)46 b(compressing)f
(image)48 2926 y(DATA_DECOMPRESSION_ERR)c(414)95 b(error)46
b(uncompressing)f(image)48 3152 y(BAD_DATE)475 b(420)190
b(error)46 b(in)h(date)g(or)g(time)g(conversion)48 3378
y(PARSE_SYNTAX_ERR)91 b(431)190 b(syntax)46 b(error)g(in)i(parser)e
(expression)48 3491 y(PARSE_BAD_TYPE)187 b(432)j(expression)45
b(did)i(not)g(evaluate)e(to)i(desired)f(type)48 3604
y(PARSE_LRG_VECTOR)91 b(433)190 b(vector)46 b(result)g(too)h(large)f
(to)i(return)e(in)h(array)48 3717 y(PARSE_NO_OUTPUT)139
b(434)190 b(data)47 b(parser)f(failed)g(not)h(sent)f(an)h(out)g(column)
48 3830 y(PARSE_BAD_COL)235 b(435)190 b(bad)47 b(data)f(encounter)g
(while)g(parsing)g(column)48 3942 y(PARSE_BAD_OUTPUT)91
b(436)190 b(Output)46 b(file)h(not)g(of)g(proper)f(type)48
4168 y(ANGLE_TOO_BIG)235 b(501)190 b(celestial)45 b(angle)i(too)f
(large)h(for)g(projection)48 4281 y(BAD_WCS_VAL)331 b(502)190
b(bad)47 b(celestial)e(coordinate)g(or)i(pixel)g(value)48
4394 y(WCS_ERROR)427 b(503)190 b(error)46 b(in)h(celestial)f
(coordinate)f(calculation)48 4507 y(BAD_WCS_PROJ)283
b(504)190 b(unsupported)45 b(type)h(of)h(celestial)f(projection)48
4620 y(NO_WCS_KEY)379 b(505)190 b(celestial)45 b(coordinate)g(keywords)
h(not)h(found)48 4733 y(APPROX_WCS_KEY)187 b(506)j(approximate)45
b(wcs)i(keyword)e(values)h(were)h(returned)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF