HP OpenVMS Systemsask the wizard |
The Question is:
I am trying to convert the binary data in existing sequential RMS to comma
separated ASCII text files. To do so I have written a simple Fortran (Digital
Fortran 77 V6.5-188) program that reads the binary data and does formatted
writes to the ASCII file.
The program was written in a couple of loops to simplify its use. The first
loops reads the input file name from sys$input until an EOF. The second loop
sequentially reads the records from the specified input file, does some
minimal verification that t
he date is valid, and writes selected fields to the ASCII file. The problem is
that in processing a few of the files the program fails with the following
error:
%SYSTEM-F-ROPRAND, reserved operand fault at PC=00018525, PSL=03C00004
%TRACE-F-TRACEBACK, symbolic stack dump follows
module name routine name line rel PC abs PC
00018525 00018525
000267AB 000267AB
00024AFF 00024AFF
VAX2APIGI VAX2APIGI 1290 000003B4 000013B4
Line 1290 is:
write (16,10200,ERR=400)
* cdate,K1FPAE,K1AAAE,K1ANKL,K1ARMM,
* K1FNOT,K1ARTV,K1ARTM,K1ARPW,K1ARPT,
* K1ARTK,K1FTAE,K1FTLA,K1ASCN,K1AESH,
* K1AUSN,R1TA8V,R1TB2V,R1GAGE,K1BMCS,
* K1BRLS,K1BRRS,K1BTTL,K1BTLS,K1BTRS,
* R1FATI,R1FMFI,R1FPFI,R1FTMM,R1FASM,
* K1FNFS,R1FTFM,K1FTKC,K1FCAG,K1FCSL,
* K1FCSN,K1FCSR,R1FTTT,K1FTUC,K1FTSC,
* K1FTCN,K1GTOF,K1GTON,K1GLIN,R1TADD,
* R1SODA,R1TRGT,R1MVGA,R1MVFE,R1MVSI,
* R1MVNA,R1MVZN,K1NKAS,R1NCCR,R1RSPP,
* K1GPOT,R1RNSP,R1REAM,R1RCAA,
* R1RCAR, R1RCAV,R1RASM,R1RLTM,
* R1RNSM,R1RSTR,R1RSTM,R1RNPM,R1RTRM,
* R1TTTM,K1FTSC,R1FIFO,K1FTUC
I have tried a couple of different format statements for this write. The one
used in the code above is the original and should format the data correctly.
I am fairly confident that the code is correct since it run correctly in most
cases. I have some suspicion that the trouble lies in the data itself. Over
the years, some of the data structure has changed slightly even though the
record length remained
the same. The type of change that I am talking about would be something like
two integers that were no longer used becoming spare words and later the
spares becoming a real. Or vice versa.
For the most part, the changes noted above seem to only cause problems with
bogus values in the ASCII. This usually shows up a an overflow of the format
for that particular variable so that we get a field full of *.
All of this is being done on a VAX 4000/400 running OpenVMS Version 6.2.
I would greatly appreciate any help you could give to help me to correct this
problem. If I have left out any needed info I would be glad to supply it.
The Answer is :
Please use the OpenVMS Debugger, and particularly please use the debugger
to examine the record data involved when your program encounters one of
these ROPRAND failures.
ROPRAND, reserved operand fault at PC='location', PSL='xxxxxxxx'
Facility: SYSTEM, System Services
Explanation: An instruction contains an operand in a format that is not
acceptable. This message indicates an exception condition and
is usually followed by a display of the condition arguments,
registers, and stack at the time of the exception.
User Action: Check for a programming error. Examine the PC and virtual
address displayed in the message to determine the instruction
that caused the error.
|