Focal Point
creating a hold file in one session and reading it in another session

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/7751089152

October 15, 2007, 10:16 AM
John Baglio
creating a hold file in one session and reading it in another session
I attempted to create a hold file in one session and save it to a directory. Then have other focus programs read information from that held file. I seem to have run into a problem where web focus will only allow me to store and read files that are less than 32K. I can read the records in the hold file up to that max then the balance of the information is scrambled.
If I read the hold file in the same session that I create the hold file focus reads the entire file and reports the information correctly.
However, I really don't want to have to create this original hold file everytime I want to include its information in a subsequent report.
Do I have to save the file in a different format so it can be read? Or is there a setting somewhere in web focus that needs to be changed?

Since I had several program written in "old focus" when we were on the Sis+ system, I am attempting to use the same logic to generate reports in "Web Focus" reading the SunGard Banner System. I didn't have any limit on the size of the file the user created under "old focus" so most of my programs were developed without any consideration of the size of the file being created. It would just save me a lot of time to use the same logic from the old programs until I get a better handle on Web Focus and the Banner System.
Anybody know of a way to overcome this size limit on the hold file being crated by the user?

thanks,
jab
October 15, 2007, 10:26 AM
Prarie
John what version of WebFocus are you using..and are the Hold files Being saved as Focus Files? ON TABLE HOLD AS WHATEVER FORMAT FOCUS?


In Focus since 1993. WebFOCUS 7.7.03 Win 2003
John, there's no size limit.
it sounds like a problem with the master.
In your live session,
CHECK FILE mastername
Then a 2nd session, make your output files..
(how are you doing it? are you FILEDEFing that mastername file and copy out the .mas? )
Then a 3rd session where you start by
CHECK FILE mastername
Compare the results of the 2 CHECK FILE commands.
If they are different, do it again with more detail.
CHECK FILE mastername HOLD
TABLE FILE HOLD PRINT *
END
will give you the field size and format for each field in the master. By comparing both masters (internal and external) in detail, you might find your problem. Also, there may already be a master of the same name somewhere on your path that is taking priority when you run your external reporting fex against that extract file.
that's where i would start looking. Let us know how you get along...
oh...and as Prarie says, please edit your profile signature block to tell us your configuration details.

This message has been edited. Last edited by: susannah,




In Focus since 1979///7706m/5 ;wintel 2008/64;OAM security; Oracle db, ///MRE/BID
Happens to me all the time.
I always seem to forget to keep this into account, so I have to do this twice every time.
What's the problem here?
1. You do a plain normal hold, nothing fancy, and store it on a specified location (preferably with APP HOLD).
2. This creates a hold file with master.
3. When you want to read it again, you have to specify the location for the file. This is done with FILEDEF (or APP FI).
4. It now starts reading the data. But since the first HOLD is not really consistent with the new Filedef, this will result in so called streaming data, where CR/LF's are also read by webfocus but not acted upon.
Cure:
Do a check file on the master. Note the actual length of all fields. Code your filedef as:
APP FI file DISK APP/file.FTM (LRECL length-just-noted RECFM V
This will instruct WebFOCUS to act on the CR/LF characters and you will getr you correct records back to you.
Please note that there is indeed a limit of 32 KB, but that's per record, not per file.


GamP

- Using AS 8.2.01 on Windows 10 - IE11.
in Focus since 1988
ah. nice clarif about the limit, GamP




In Focus since 1979///7706m/5 ;wintel 2008/64;OAM security; Oracle db, ///MRE/BID
GamP,

I have never encountered the problem you've described regarding "streaming data". I'm not sure what you mean by "the first HOLD is not really consistent with the new Filedef".

This has always worked for me:

-*-- Designate location for Master Files created with the HOLD command ---
APP HOLDMETA webfocus_data
-*-- Designate location for data files created with the HOLD command ---
APP HOLDDATA webfocus_data
-RUN
-* Allocate the data file ---
FILEDEF R030H010 DISK webfocus_data/r030h010.ftm
-RUN


Would the problem be resolved by issuing the FILEDEF for both sessions?

Also, perhaps the problem is resolved by using ON TABLE HOLD AS R030H010 FORMAT ALPHA instead of ON TABLE HOLD AS R030H010.

Cheers,


Francis


Give me code, or give me retirement. In FOCUS since 1991

Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
I agree with Francis. I have found that FORMAT ALPHA is definitely the way to go in WebFOCUS.

To eliminate the FILEDEF or APP FI, you can create the master once, put a DATASET parameter in it, and remove the APP HOLD META command that Francis has in his post.

You will need an APP PREPENDPATH in your fex to find the master.


Ginny
---------------------------------
Prod: WF 7.7.01 Dev: WF 7.6.9-11
Admin, MRE,self-service; adapters: Teradata, DB2, Oracle, SQL Server, Essbase, ESRI, FlexEnable, Google
The APP HOLDMETA and APP HOLDDATA can be very useful (both can be replaced with APP HOLD), however I am not a big fan owing to the fact that you get the foctemp files left in your APP folder as well and in the wrong circumstances that can cause a few problems Frowner. I tend to use a file system copy of the files that I want (.ftm and .mas) at the end of processing so that I only have the files I need and not the extraneous WF internals.

Also, imho, FORMAT ALPHA on plain HOLD files is the better method, although if you are going to reuse the data many times I would recommend using FOCUS or XFOCUS so that you minimise the need to do FILEDEFs etc.

T



In FOCUS
since 1986
WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2  
WebFOCUS App Studio 8.2.06 standalone on Windows 10 
Addition to GamP: use the code below (actually it is an -INCLUDE named IALFILEN) before the FILEDEF in the subsequent requests, where you want to read from your HOLD file.
CHECK FILE &HOLDNAME HOLD
TABLE FILE HOLD SUM XTLEN ON TABLE SAVE AS XTLEN
END
-RUN
-SET &LEN=;
-READ XTLEN &LEN.I4
-RUN


I created a HOLD file with the following code:
APP HOLD MYAPPFLD
TABLE FILE CAR
PRINT DCOST RCOST BY COUNTRY BY CAR BY MODEL
ON TABLE HOLD AS ROLI1
END


Then in the subsequent request populate &HOLDNAME with the mastername of the HOLD file. Afterwards use &LEN as LRECL value in the FILEDEF as GamP mentioned it in his post. Like this:

-SET &HOLDNAME = 'ROLI1';
-INCLUDE IALFILEN
-RUN
APP FILEDEF ROLI1 DISK MYAPPFLD/ROLI1.FTM (LRECL &LEN RECFM F
-RUN
TABLE FILE ROLI1
 PRINT *
END


This is normally mandatory, if you are creating the file by ON TABLE HOLD. Focus/WebFocus needs a LRECL to read files of such type. If you are reusing it in the same session, the allocation from the creation is still active and having the LRECL. In a subsequent request you have to do it yourself.
The alternative is using ON TABLE HOLD FORMAT ALPHA as Francis and Ginny have mentioned. For files of this type no LRECL is required to read.


Roland

Prod: WF 7.1.5
Test: WF 7.6.4
Unix Sun Solaris
HTML, PDF, EXL2K