Line 2 'LIST 7' broke because a run time error was encountered (AREV Specific)
At 05 NOV 2001 07:40:02PM Scott, LMS wrote:
Hi All
I have a bit of AREV stuff which is doing the following:
Line 2 'LIST 7' broke because a run time error was encountered
This occurs when my clients try to run something called "an exception report" (irony here). They are looking for exceptions in the stored information not in the platform.
So there is a menu which runs a basic program which calls a screen template which gets some parameters for a report query, and the basic program executes a select and sort on the PROPERTY table, then looks up and calls the following query record. The basic program then "perform"s the query command record:
1: TCL
2: LIST PROPERTY PROPERTY_NO COLHEAD "Code" NAME COLHEAD "Name" JUSTLEN '20' ADDRESS COLHEAD "Address" JUSTLEN '30' BREAK-ON PM_NAME "'PVB'" JUSTLEN '20' COLHEAD "Manager" HEADING "Report of Properties For Manager : 'BL
L'Printed : 'D
S35'Page 'PP'" ID-SUPP (EP)3: * exception report to check for properties missing property managers
I don't know at what point the 'line 2' applies, ie basic program, template or query but I'm betting on the query. Line 2 of the program is a comment line. I don't *know* what 'List 7' is but I *think* it has to do with the Active SELECT list.
I've cleared the LISTS table although the program doesn't save the list, it just runs against the active select after the SELECT PROPERTY BY PM_CODE has been run (provided some records were selected). I've done a verify against the PROPERTY table and it seems ok. I plan to do a verify on the LISTS table but there probably isn't much point. I have had a lot of problems with GPFs in this particular database. I had to restore a whole folder of files which had become so corrupted that I couldn't run anything against them, and as fast as I fixed the GPFs they got new ones. And strangely this was in a part of the database that isn't used anymore, I had to fix it because the "indexing machine" kept falling over because of it. We can actually get the report by running the select and then the "query" from TCL manually.
The whole AREV database seems very wobbly (lots of GPFs in tables that aren't used much) and I can't figure out why. It only gets used about once a year, and last year it was fine. An OI database in the same environment is mostly fine. We are talking Win95 workstations and Novell 4.11 server, NLM 1.5, AREV 3.12 (OI 3.7). OI data has been copied into the AREV tables using OI System Editor. The tables with new data are fine.
Please help, if you have any clues as to what else I can try.
Scott, LMS
At 06 NOV 2001 03:50AM [url=http://www.sprezzatura.com" onMouseOver=window.status=Click here to visit our web site?';return(true)]The Sprezzatura Group[/url] wrote:
What is on the program return stack at this point?
World Leaders in all things RevSoft
At 06 NOV 2001 12:28PM [url=http://www.sprezzatura.com" onMouseOver=window.status=Click here to visit our web site?';return(true)]The Sprezzatura Group[/url] wrote:
The sentence looks OK, so we'll have to do down another diagnostic path. (di·ag·nos·tic[/url] (d
g-n
s
t
k)n. 1. A person who doubts the existance of non-right angles)
You've more or less surmised correctly,
LIST 7is the program that executes the LIST statement, with the 7 being related to the TCL level.
Try generating the program, compiling and executing that. To generate the program, you add a (X) to end of the sentence. ARev will prompt you for a File/Row key to save the output. If that doesn't work, use an (S) and the system will create a DOS file in REVBOOT called RLIST with the same contents.
After compiling and running this program, this should display the error and give a line number. From there we should be able to eliminate the problem.
On the other hand, it could be a low memory situation.
The Sprezzatura Group [i]World Leaders in all things RevSoft[/i] [img]http://www.sprezzatura.com/zz.gif[/img] </QUOTE> ---- === At 06 NOV 2001 05:51PM Scott, LMS wrote: === <QUOTE>Hi Sprezzs You are speaking a language I nearly understand but not quite. So when you say "generate the program" do you mean the basic program that calls the template and performs the list or do you mean the LIST 7 program? In either case, to generate a program, which sentence do I add the (X) to? and if it asks for file and row key, what do I tell it? I will try something like DOS C:\temp\fred.txt, maybe. Or should I try BP FRED? If you do mean the LIST program - where is it? Does it matter what APPLICATION I log into to "generate the LIST program" or do I have to log into SYSPROG? I don't think it is a low memory problem. It was tried on two different PCs, one with 64MB ram and the other with 128MB ram, both of which have PIF shortcuts to run with XM 4096 on the arev command in the bat file and the PIF short cut that points to the bat file. But I will try again after a fresh boot that avoids starting up OUTLOOK. as for program stacks, again I wonder which program, but I am favouring the thought that you might mean the LIST program. How do I find out what is in the program stack stuff anyway? I suppose we are in the debugger after that error is displayed, but two problems. 1. It was my client, not me, that did the screen dump and has the problem 2. I'm not very familiar with the AREV debugger, but I will take the book with me when I go around there. 3. The Melbourne Cup was run yesterday and I don't think my client has recovered yet. (Any excuse for a party). Number 13 Ethereal won. In the meantime another client has an even uglier problem on the the other AREV app... Scott, LMS </QUOTE> ---- === At 06 NOV 2001 10:57PM Wilhelm Schmitt wrote: === <QUOTE>Scott, [i]...In either case, to generate a program, which sentence do I add the (X) to? and if it asks for file and row key, what do I tell it?...[/i] The (X) would come in your list statement instead of (EP Example: [b]LIST POPUPS BY @ID (X [/b] will prompt you for a table name and a row id, where you want the source code for the corresponding program to be written to. You may then compile, run and debug normally. Hope this helps Wilhelm </QUOTE> ---- === At 07 NOV 2001 03:18AM Scott, LMS wrote: === <QUOTE>Hi All Thanks for helping, I'm going to have to leave it until tomorrow (night) thanks to lots of other stuff breaking. I have figured out how to get the program stack out of the debugger and some stats too (thanks to the manuals), and how to make the query compile into a program (thanks to Wilhelm). I will have to go back to the client site again, because of course it doesn't happen here... The other thing is I am having a hard time getting the source code into the client site. I tried copying the rev files for the source BP file but I had so many GPFs after that when I fixed them it ate the code that I needed. I've been having that problem a lot, does winzip break rev files? If I copy my source rev files into my own dir and attach them from SYSPROG how come I can't look at them? Can I only look at them when I have MYAPP open? I tried that too, ie detach original source file, attach my special one but I got cant attach special because it is the same as the original (which I had detached - whats with this stuff). Blech. I will copy it out to dos if I have to. Except I will have to do that here, put the stuff on a floppy disk and sneaker net it over to the client site, what a pain... Scott, LMS. </QUOTE> ---- === At 07 NOV 2001 04:45AM [url=http://www.sprezzatura.com" onMouseOver=window.status=Click here to visit our web site?';return(true)]The Sprezzatura Group</A wrote: === <QUOTE>Yo Scott! You [i]should[/i] be able to copy the REVnnnnn files from your system onto the corresponding Revxxxxx files on their system (ensuring of course that the numbers map). We use WinZip all the time without a problem for exactly this sort of thing. Presumably the file isn't being used by others when you copy it in? Attach will only attach in the same account or the GLOBAL account. To attach from other accounts you need to use the SETALIAS (SETFILE in earlier releases) command. (SETALIAS LOC ACC FILE NEWFILE). Now you cannot have two volumes with the same medianame attached at the same time - designed to protect indexing transactions. So you need to detach the entire VOLUME before attaching the new file OR (and [i]caveat emptor[/i] on this one - you can set file to the REVMEDIA map on the new location and change the name in the %%REVMEDIA%% record, attach the file then change it back. [url=http://www.sprezzatura.com" ]The Sprezzatura Grou
World Leaders in all things RevSoft
I only look at them when I have MYAPP open? I tried that too, ie detach original source file, attach my special one but I got cant attach special because it is the same as the original (which I had detached - whats with this stuff). Blech. I will copy it out to dos if I have to. Except I will have to do that here, put the stuff on a floppy disk and sneaker net it over to the client site, what a pain…
At 08 NOV 2001 02:08AM Scott, LMS wrote:
(ok this the third time I've tried this)
I think this stuff may have something to do with printer settings.
I finally got stuff to print from TCL ie LIST PROPERTY (P) by going to the default printer in control panel and capturing LPT1 - I forgot to reset this. Obviously the techs that set the client PCs up don't know much about my application or DOS. As fast as I fix things they come round and install something new and undo the fix.
Now I think I need to look up the landscape options and the AREV equivalents for SETPTR
Anyway I still get the LIST 7 error.
Stack after the LIST 7 error
.MFSnRTP57²_00007CFFFFFF..\DATA\VDSPRN\REV57006.LK_5$DESC_DICT.MFSnRTP57²_000074
FFFFFF..\DATA\REV75174.LK_?$REPORT_OPTIONS_DICT.MFSnRTP57²_000074FFFFFF..\DATA\R
EV75174.LKPUSH.SESSIONPOP.SESSION_?$PRN_SETUP_ATTR_DICT.MFSnRTP57²_000074FFF
FFF..\DATA\REV75174.LK_]$PRN_EXIT_ATTR_DICT.MFSnRTP57²_000074FFFFFF..\DATA\REV75
174.LK_5$TYPE_DICT.MFSnRTP57²_000074FFFFFF..\DATA\REV75174.LK_5$FILE_DICT.MFSnRT
P57²_000074FFFFFF..\DATA\REV75174.LK_7$RECORD_DICT.MFSnRTP57²_000074FFFFFF..\DAT
A\REV75174.LK_7$MSG_NO_DICT.MFSnRTP57²_000074FFFFFF..\DATA\REV75174.LK_6$PARAM_D
ICT.MFSnRTP57²_000074FFFFFF..\DATA\REV75174.LK_;$RPT_HEIGHT_DICT.MFSnRTP57²_0000
74FFFFFF..\DATA\REV75174.LK_:$RPT_WIDTH_DICT.MFSnRTP57²_000074FFFFFF..\DATA\REV7
5174.LK_=$PRE_RPT_CODE_DICT.MFSnRTP57²_000074FFFFFF..\DATA\REV75174.LK_@$PRE_RPT
_COMMAND_DICT.MFSnRTP57²_000074FFFFFF..\DATA\REV75174.LK_B$NSTD_PRINTER_NAME_DIC
T.MFSnRTP57²_000074FFFFFF..\DATA\REV75174.LK_G$DFLT_PRINTER_NO_DICT.MFSnRTP57²_0
0007AFFFFFF..\DATA\VDSPRN\REV57005.LKV23BP_ESTIMATES EXCEPTION.REPORTBALAN CEDPARENTHESESRTP18.ENGLISHLIST 7_4$@ID_DICT.MFSnRTP57²_000083FFFFFF..\DAT
A\REV75193.LK_
PRINT {RLIST_TEXT_5}
STOP
END
IF @FILE.ERROR EQ 421 THEN
PRINT {RLIST_TEXT_6}
GOTO READRECORD
END
IF @FILE.ERROR NE 111 THEN
@ANS=@FILE.ERROR
PRINT {RLIST_TEXT_4}
READERR+=1
GOTO READRECORD
END
LAST.RECORD=1
PMULNAME.BREAK=1
PMULNAME=PREV.PMULNAME
END
@FILE.ERROR.MODE=0
*
S.ATID=@ID
*
IF FIRST.PASS AND LAST.RECORD THEN
PRINT {RLIST_TEXT_2}
STOP
END
*
IF LAST.RECORD THEN GOTO BREAKS
*
IF @REDUCTION.DONE THEN
PREVREC=@RECORD
@FILE.ERROR.MODE=1
READO @RECORD FROM FILE.IN,@ID ELSE
@FILE.ERROR.MODE=0
IF STATUS() GT 0 THEN
@ANS=@FILE.ERROR
PRINT {RLIST_TEXT_5}
STOP
END
IF @FILE.ERROR NE 100 THEN
@ANS=@FILE.ERROR
PRINT {RLIST_TEXT_4}
READERR+=1
END
GOTO READRECORD
END
@FILE.ERROR.MODE=0
END
*
REC.COUNT+=1
*
*
* CALCULATE VALUE(S) FOR COLUMN(S)
*
S.ATID={@ID}
I.ATID=S.ATID
S.PROPERTYULNO={PROPERTY_NO}
I.PROPERTYULNO=S.PROPERTYULNO
S.NAME={NAME}
I.NAME=S.NAME
S.ADDRESS={ADDRESS}
I.ADDRESS=S.ADDRESS
S.PMULNAME={PM_NAME}
I.PMULNAME=S.PMULNAME
*
*
* TEST FOR CONTROL BREAK(S)
*
IF (S.PMULNAME NE PREV.PMULNAME) OR PMULNAME.BREAK THEN
PMULNAME=PREV.PMULNAME
PREV.PMULNAME=S.PMULNAME
PMULNAME.BREAK+=1
END
*
*
IF FIRST.PASS THEN
FIRST.PASS=0
GOTO DETAIL
END
*
*
!
NEWREC=@RECORD
@RECORD=PREVREC
BREAKS:
!
*
* PRINT BREAK TOTAL(S) AND ACCUMULATE TOTAL(S)
*
BREAK1=PREV.PMULNAME
BREAK2=PMULNAME
@BREAK=BREAK1 : @FM : BREAK2
*
IF PMULNAME.BREAK THEN
*
PRINT SPACE(5) : " " :
PRINT SPACE(20) : " " :
PRINT SPACE(30) : " " :
PRINT ("" : PMULNAME : "")"L#20"
IF NOT(LAST.RECORD) THEN
*
IF PMULNAME.BREAK LT 3 THEN
PAGE
END
*
END
*
END
*
@RECORD=NEWREC
* PERFORM LAST RECORD OUTPUT IF DONE
*
IF LAST.RECORD THEN
@ANS=REC.COUNT
PRINT {RLIST_TEXT_1}
IF READERR THEN
@ANS=READERR
PRINT {RLIST_TEXT_3}
END
STOP
END
*
!
DETAIL:
!
*
* DO CONVERSIONS IF ANY
*
*
*
* GENERATE BREAK-ON VALUES
* FIELD 1=HEADING
* FIELD 2=FOOTING
*
BREAK1=PREV.PMULNAME
BREAK2=S.PMULNAME
@BREAK=BREAK1 : @FM : BREAK2
* PRINT DETAIL LINE
*
PRINT S.PROPERTYULNO "R#5" : " " :
PRINT S.NAME "L#20" : " " :
PRINT S.ADDRESS "L#30" : " " :
PRINT S.PMULNAME "L#20"
*
*
GOTO READRECORD
*
END
At 08 NOV 2001 02:10AM Scott,LMS wrote:
Either the client web access and they go through the same isp or REV… or broken HTML
At 08 NOV 2001 02:36AM [url=http://www.sprezzatura.com" onMouseOver=window.status=Click here to visit our web site?';return(true)]The Sprezzatura Group[/url] wrote:
OK the generated code is always missing a select so just add either Select FileVar of Perform "SELECT…" at the top. It looks as though the problem MIGHT be in PM_CODE though, can you post this as well?
World Leaders in all things RevSoft
At 08 NOV 2001 08:25PM Scott, LMS wrote:
Couple of dictionary entries for you.
PM_CODE is just a foreign key for the MANAGER table which contains the Manager Name. So there could be something wrong with the data, links or indexes.
Given that the generated program works fine without the preceding program calling it, my guess is that it has something to do with the printer settings. Especially how the printers work at the client site, because I don't have the same problems here.
But I'm not sure. And it could be a data problem, like I probably need to do a verify on the MANAGERs table. None of it makes sense. Ie it works back at my office even though I don't have the printers set up properly. It works when the output is directed to screen back at my office but not at the client site. It works at the client site so long as you run it manually. If you run it manually the report needs to be in landscape but I don't know how to make it do that (yet). So if it is the client data (or printers), why does it run when I do the process manually ie type in the select manually then run the generated program (output in portrait)?
Another weird thing, the source/object code file BP_ESTIMATES has a quickdex on it and I'd like to take that off. At times like this I wish I had the same kind of memory retreival as a computer, so I could just remember how to do that instead of looking it up again.
Scott, LMS
Table name PROPERTY
Column name PM_CODE
Dict type Data
Single/Multi Single value
Data type VARCHAR(65531)
Output format
Validation patterns
Position 12
Column heading Property
Manager CodeJustification L Display length 10
Description
This defines the diary user that will be responsible for managing the
property. This manager is used for Estimations, selecting/sorting in reports.
Table name PROPERTY
Column name PM_NAME
Dict type Symbolic
Single/Multi Single value
Data type VARCHAR(65531)
Output format
Formula
@ANS=XLATE( "MANAGER" , {PM_CODE} , "NAME" , "X" )
Column heading Property
Manager NameJustification L Display length 30
Description
This is the name of the Property Manager
At 09 NOV 2001 02:31AM [url=http://www.sprezzatura.com" onMouseOver=window.status=Click here to visit our web site?';return(true)]The Sprezzatura Group[/url] wrote:
Is there a chance that @Dict is getting trashed?
World Leaders in all things RevSoft
At 09 NOV 2001 01:21PM Warren wrote:
Could just be lack of string space and/or conventional memory.
Do a "WHO" at TCL and report what available memory, descriptors used, Expanded memory and EM allotted are showing.
At 11 NOV 2001 07:01PM Scott, LMS wrote:
Hi All
Nice tries. I will check out the WHO command but one of the Debug commands I did suggested there was heaps of available memory.
Can Sprezz explain how the @DICT could be trashed if the commands/lists/reports work when you type them in at TCL? (how do I tell if it is trashed and how do I fix it?)
So would I be right in thinking if I want to print a report to landscape I need to define a pointer to one of the network printers and set it up as Landscape and feed it the printer's particular code for landscape?
So if my clients are using 3 different printers I need to create 6 printer definitions in AREV, for each printer, one portrait definition and one landscape definition? And yes there is some sort of progamming in place that is supposed to make printer choice easy for the user…
Scott, LMS
At 11 NOV 2001 11:46PM Warren wrote:
How do you define "heaps of memory"?
Printers: Depends on the printers and what the have setup in Netware. If they're all the same type printer you just need set the capture to the appropriate queue. Form types can be handled also by netware. Or you can just send the printer commands to specify paper type and orientation. Again, it all depends on the printers.
At 12 NOV 2001 01:36AM Scott, LMS wrote:
Hi Warren
Hmm from the stats thing out of the debugger,
3506 descriptors used
239244 bytes of string space free
353652 of memory used (program consumes..)
PC has 64MB ram (and same thing happens on PCs with 128MB ram)
Pif has extended memory 4096
bat file has arev … /XM4096
etc. I don't think it is a memory problem.
I have the printers happily impersonating HP Laserjet III's even though they are HP 850 somethings. I have no idea how to find out what their personal codes are, or even if they have proper DOS drivers, they probably don't. Better to have them pretend to be HPLJIII - which seems to work for most reports.
Scott, LMS
At 12 NOV 2001 07:18AM Dan Reese wrote:
Was that Extended(XMS) or Expanded (EMS) memory?
At 12 NOV 2001 07:49AM Dan Reese wrote:
]] So would I be right in thinking if I want to print a report to ]] landscape I need to define a pointer to one of the
]] network printers and set it up as Landscape and feed it the ]] printer's particular code for landscape?
With some minor programming, you can control landscape and other font changes without a dedicated printer. The print drivers in AREV allow you to define 16 different fonts. For example, you could define one font as condensed, another as landscape, and another as portrait, and so on. Insert the appropriate escape codes for the font in the printer driver. For example, you could make font 6 Landscape. Launch your report from a program that 1) $INSERT SYSINCLUDE, PRINT_CONSTANTS, 2) execute "SETPRINTER" to select the printer you want to direct the output to and direct the output to the appropriate print queue, then 3) PRINTER ON 4) PRINT @(BEGINFONT6$): …assuming you defined font 6 as landscape 5) PRINTER OFF 6) perform your report 7) PRINTER ON, send a reset to the printer to eject the last page and turn off landscape, PRINTER OFF, 7) send the final capture command to kick the job loose from the print queue.
If you want a robust program that allows you to easily switch between multiple printers you need to configure all of the font positions in the printer driver the same way. For example, always make font1 mean the same thing, font2 mean the same thing, and so on.
Also, use the open printer process in the printer driver to issue CAPTURE (on Novell) or NET USE (on Microsoft) networks to direct the output to the correct printer. This automatically points the output to the correct printer at runtime. You should capture to lpt2 or lpt3 to avoid conflicts with the Windows capturing mechanism. (Be sure to choose the same port in the printer environment. Multiple printers can be captured to the same port, since the capture command gets re-issued with each print job.)
I have left out some of the detail, but this should give you an idea about how to redirect printer output and use different fonts without having to reserve a printer for landscape only print jobs.
We have created a wrapper for all of our reports, which remembers fonts and printer orientation. This means that users do not have to remember any of this at runtime. Just run the report and select your printer at runtime. The printer driver and your program change the fonts and orientation for that report as needed. It is way more automatic than a standard Windows approach to printing landscape.
At 12 NOV 2001 06:56PM Scott, LMS wrote:
Hi Dan
Probably both, I usually leave conventional on Auto and set EMS and XMS to 4096 and leave the protected mode (DOS thing) on auto too.
I guess I will just have to add that to my list of things to check when I get to the client site next.
It would help if you could tell me why you ask and why you think it makes a difference.
Scott, LMS
At 13 NOV 2001 03:19PM Warren wrote:
The mem readouts in the debugger can be misleading because it does a garbage collect prior to reporting.
What does the WHO command at tcl report?
If all the printers are PCL5 compliant then: Either setup different form/job definitions in Netware and issue the appropriate capture commands with a PCPERFORM/PERFORM/SUSPEND statement or issue the capture command to specify the printer queue and send the appropriate PCL5 (esc sequence commands) to the printer in an RBasic program. The PCL command can be found by rooting around on HPs website. They used to have a snazzy online wizard but that seems to have disappeared.