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
|
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
include <syserr.h>
include <imhdr.h>
include "imfort.h"
define SZ_OPNAME 64
# IMEMSG -- Translate an IMFORT or VOS error code into a message string.
procedure imemsg (ier, errmsg)
int ier # error code
% character*(*) errmsg
pointer sp, ostr
int e_ier
char e_opname[SZ_OPNAME]
common /imemcm/ e_ier, e_opname
begin
switch (ier) {
case IE_ACCPIX:
% errmsg = 'error writing into pixel file during image create'
case IE_ALCPIX:
% errmsg = 'cannot create or allocate space for pixel file'
case IE_CLSHDR:
% errmsg = 'error closing image header file'
case IE_CLSPIX:
% errmsg = 'error closing image pixel file'
case IE_CREHDR:
% errmsg = 'cannot create image'
case IE_FLUSH:
% errmsg = 'error flushing buffered data to pixel file'
case IE_GCMDLN:
% errmsg = 'cannot read command line string'
case IE_IMDELETE:
% errmsg = 'cannot delete image'
case IE_IMDELNEXIM:
% errmsg = 'attempt to delete a nonexistent image'
case IE_IMRENAME:
% errmsg = 'cannot rename image'
case IE_IMRNAMNEXIM:
% errmsg = 'attempt to rename a nonexistent image'
case IE_MAGIC:
% errmsg = 'illegal imfort image descriptor'
case IE_NEXARG:
% errmsg = 'nonexistent command line argument referenced'
case IE_NEXKW:
% errmsg = 'nonexistent header keyword referenced'
case IE_NONNUMARG:
% errmsg = 'cannot decode numeric argument'
case IE_NOTIMH:
% errmsg = 'attempt to access a non-image file as an image'
case IE_NOTSHORT:
% errmsg = 'image is not of type short'
case IE_OPEN:
% errmsg = 'cannot open image'
case IE_OPNPIX:
% errmsg = 'cannot open pixel file'
case IE_PIXTYPE:
% errmsg = 'image pixel type must be short or real'
case IE_RDPIX:
% errmsg = 'error reading image pixel file'
case IE_UPDHDR:
% errmsg = 'error updating image header file'
case IE_UPDRO:
% errmsg = 'image header modified but image opened read only'
case IE_WRHDR:
% errmsg = 'error writing to image header file'
case IE_WRPIX:
% errmsg = 'error writing image pixel file'
case IE_XOOB:
% errmsg = 'image x coordinates out of range or out of order'
case IE_YOOB:
% errmsg = 'image y coordinates out of range'
case IE_ZOOB:
% errmsg = 'image z coordinates out of range'
case IE_EOF:
% errmsg = 'end of file or list detected'
case IE_NAXIS:
% errmsg = 'wrong number of axes on image'
case IE_AXLEN:
% errmsg = 'length of each image axis must be .ge. 1'
case IE_MKDIR:
% errmsg = 'cannot create pixel subdirectory'
case IE_PFNNUNIQ:
% errmsg = 'cannot create unique pixel file name'
case IE_CLOBBER:
% errmsg = 'new image would overwrite existing image'
case SYS_IDBDELNXKW:
% errmsg = 'attempt to delete unknown header keyword'
case SYS_IDBKEYNF:
% errmsg = 'image header keyword not found'
case SYS_IDBNODEL:
% errmsg = 'cannot delete image header keyword'
case SYS_IDBOVFL:
% errmsg = 'out of space in image header'
case SYS_IDBREDEF:
% errmsg = 'attempt to redefine an image header keyword'
case SYS_IDBTYPE:
% errmsg = 'illegal header parameter data type conversion'
case SYS_IMFNOVFL:
% errmsg = 'out of space for header keyword name list'
default:
% errmsg = 'imfort error (unrecognized error code)'
}
# If the current error code agrees with that of the most recently
# posted operand name, add the operand name to the error string.
if (ier == e_ier && e_opname[1] != EOS) {
call smark (sp)
call salloc (ostr, SZ_LINE, TY_CHAR)
call f77upk (errmsg, Memc[ostr], SZ_LINE)
call strcat (" (", Memc[ostr], SZ_LINE)
call strcat (e_opname, Memc[ostr], SZ_LINE)
call strcat (")", Memc[ostr], SZ_LINE)
call f77pak (Memc[ostr], errmsg, len(errmsg))
call sfree (sp)
}
end
# IM_SETERROP -- Called to set the operand name when an error occurs, so that
# it may be included in the error message string without being passed back to
# the user program.
procedure im_seterrop (ier, opname)
int ier # current error code
char opname[ARB] # associated operand name
int e_ier
char e_opname[SZ_OPNAME]
common /imemcm/ e_ier, e_opname
begin
e_ier = ier
call strcpy (opname, e_opname, SZ_OPNAME)
end
# IM_SETERRIM -- A variation on im_seterrop, used to set the image name as
# the error operand, given the image descriptor.
procedure im_seterrim (ier, im)
int ier # current error code
pointer im # image descriptor
int junk
pointer sp, opname
int fnroot()
begin
call smark (sp)
call salloc (opname, SZ_OPNAME, TY_CHAR)
junk = fnroot (IM_HDRFILE(im), Memc[opname], TY_CHAR)
call im_seterrop (ier, Memc[opname])
call sfree (sp)
end
|