4GL Problem
Posted in 1993
I'm posting this on behalf of one of our 4gl guys. Anyone heard of
this?
Details:
ISQL 4.10.UE1
ESQL 4.10.UC1
4GLID 4.10.UE1
I4GL 4.10.UE1
4GLRDS 4.10.UE1
ONLINE 4.10.UF3
Running on Pyramid MIS-S, running dcosx 1.1 c062
same symptoms seen on AST 486 running interactiv3 unix
---------------------------------------------------------------------
The informix error that occurs, is shown in the following:
> Tue Aug 3 04:28:41 MST 1993
> + fglgo /prod/fs/support/supexec/support/bin/Olabs -Dfsoff -SNAME
> Program stopped at "labs2.4gl", line number 135.
> SQL statement error number -270.
> Could not position within a temporary file.
> SYSTEM error number -101.
> ISAM error: file is not open.
Here is the code (labs2.4gl - with line numbers) at which the above
error complains:
> 120
> 121 DECLARE c2 CURSOR FOR
> 122 SELECT request, sum(xnumber)
> 123 FROM dir
> 124 WHERE request MATCHES p_request
> 125 AND print_date = 1
> 126 GROUP BY request
> 127 ORDER BY request
> 128 OPEN c2
> 129 PRINT COLUMN 1, "REQUEST",
> 130 COLUMN 15, " NUMBER"
> 131 PRINT COLUMN 2, " TYPE",
> 132 COLUMN 15, "REQUESTED"
> 133 PRINT COLUMN 1, "-------",
> 134 COLUMN 15, "---------"
> 135 FOREACH c2 INTO p_dir.request, p_dir.xnumber
> 136 PRINT COLUMN 3, p_dir.request,
> 137 COLUMN 18, p_dir.xnumber using "###"
> 138 END FOREACH
Looking at the code and the errors note:
Informix complains about not being able to position within a temporary
file. ISAM complains about the file not being open (the temporary
file). The actual code is NOT directly creating or manipulating any
files.
First conclusion, Informix screwed up, and for whatever reason, did not
successfully open a temporary file that it deemed necessary for the
requested operation (the for loop using the cursor c2).
Unloading the table, dropping the table, recreating
the table and then reloading the data, corrects the problem.
I know that this is not the exact sequence of events, but various
combinations of these activities (including dropping and creating
incides) eventually correct this problem. In some cases, purging old
data also helps. NOTE that the 4gl program is UNCHANGED throughout all
this.
This evidence supports the "Informix is the Problem" theory. Informix
appears to be internally losing its grip on the table, and in the
process, it eventually gets so lost, that a temporary file (that
informix internally determined is necessary for the requested operation)
is not opened. It may not have even been created.
By my assertion that the problem is in informix, I strongly expect
that it is a problem with Informix Online and not with Informix 4gl.
Normally the type of error output by informix (Temporary File No Open,
and Unable to position within temporay file), is due to running out
of Unix resources (not enough file descriptors, not enough memory,
not enough locks, not enough ....). There is no evidence that we have
run out of file, inodes, memory, disk space, etc..
--
Naomi Walker (aka N7FSA) naomi@anasazi.com
Phoenix, Arizona
To get the full value of joy,
you must have someone to divide it with. ---Mark Twain