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
|
.help dafin Jun99 "Slalib Package"
.nf
SUBROUTINE slDAFN (STRING, IPTR, A, J)
- - - - - -
D A F N
- - - - - -
Sexagesimal character string to angle (double precision)
Given:
STRING c*(*) string containing deg, arcmin, arcsec fields
IPTR i pointer to start of decode (1st = 1)
Returned:
IPTR i advanced past the decoded angle
A d angle in radians
J i status: 0 = OK
+1 = default, A unchanged
-1 = bad degrees )
-2 = bad arcminutes ) (note 3)
-3 = bad arcseconds )
Example:
argument before after
STRING '-57 17 44.806 12 34 56.7' unchanged
IPTR 1 16 (points to 12...)
A ? -1.00000D0
J ? 0
A further call to slDAFN, without adjustment of IPTR, will
decode the second angle, 12deg 34min 56.7sec.
Notes:
1) The first three "fields" in STRING are degrees, arcminutes,
arcseconds, separated by spaces or commas. The degrees field
may be signed, but not the others. The decoding is carried
out by the DFLTIN routine and is free-format.
2) Successive fields may be absent, defaulting to zero. For
zero status, the only combinations allowed are degrees alone,
degrees and arcminutes, and all three fields present. If all
three fields are omitted, a status of +1 is returned and A is
unchanged. In all other cases A is changed.
3) Range checking:
The degrees field is not range checked. However, it is
expected to be integral unless the other two fields are absent.
The arcminutes field is expected to be 0-59, and integral if
the arcseconds field is present. If the arcseconds field
is absent, the arcminutes is expected to be 0-59.9999...
The arcseconds field is expected to be 0-59.9999...
4) Decoding continues even when a check has failed. Under these
circumstances the field takes the supplied value, defaulting
to zero, and the result A is computed and returned.
5) Further fields after the three expected ones are not treated
as an error. The pointer IPTR is left in the correct state
for further decoding with the present routine or with DFLTIN
etc. See the example, above.
6) If STRING contains hours, minutes, seconds instead of degrees
etc, or if the required units are turns (or days) instead of
radians, the result A should be multiplied as follows:
for to obtain multiply
STRING A in A by
d ' " radians 1 = 1D0
d ' " turns 1/2pi = 0.1591549430918953358D0
h m s radians 15 = 15D0
h m s days 15/2pi = 2.3873241463784300365D0
Called: slDFLI
P.T.Wallace Starlink 1 August 1996
Copyright (C) 1996 Rutherford Appleton Laboratory
Copyright (C) 1995 Association of Universities for Research in Astronomy Inc.
.fi
.endhelp
|