Focal Point Banner


As of December 1, 2020, Focal Point is retired and repurposed as a reference repository. We value the wealth of knowledge that's been shared here over the years. You'll continue to have access to this treasure trove of knowledge, for search purposes only.

Join the TIBCO Community
TIBCO Community is a collaborative space for users to share knowledge and support one another in making the best use of TIBCO products and services. There are several TIBCO WebFOCUS resources in the community.

  • From the Home page, select Predict: WebFOCUS to view articles, questions, and trending articles.
  • Select Products from the top navigation bar, scroll, and then select the TIBCO WebFOCUS product page to view product overview, articles, and discussions.
  • Request access to the private WebFOCUS User Group (login required) to network with fellow members.

Former myibi community members should have received an email on 8/3/22 to activate their user accounts to join the community. Check your Spam folder for the email. Please get in touch with us at community@tibco.com for further assistance. Reference the community FAQ to learn more about the community.


Focal Point    Focal Point Forums  Hop To Forum Categories  WebFOCUS/FOCUS Forum on Focal Point     Question about doumenting mainframe FOCUS

Read-Only Read-Only Topic
Go
Search
Notify
Tools
Question about doumenting mainframe FOCUS
 Login/Join
 
Guru
posted
In the environment I work in, we are using mainframe focus in MVS/TSO. We have over 1,500 FOCEXECs, which I would like to start documenting (I've only been at this job for a short time - there's no documenting!). Does anyone know of a way to go into a partioned data set and possibly print out only about the first two or three pages of each member of the data set?

Any ideas/comments/suggestions are most welcome, and I look forward to your replies. Thank you.


Mainframe FOCUS 7.0
VM/CMS and MVS/TSO
 
Posts: 250 | Registered: January 14, 2008Report This Post
Expert
posted Hide Post
Haven't heard from you in awhile.

A bunch of us contributed to this post:
https://forums.informationbuilders.com/eve/forums/a/tpc/...1057331/m/5721098592

You can use the same techniques to do what you want. You'll have to filedef each focexec in a PDS and using a generic master print x-number of lines from each. I don't remember the name of the command to use to get the names of all the members of a PDS but I'm sure you can look that up.


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
 
Posts: 2723 | Location: Ann Arbor, MI | Registered: April 05, 2006Report This Post
Guru
posted Hide Post
Hi, Ginny,

No, I've been VERY busy at my job.... steppiong up to the plate so to speak with taking over the duties of another FOCUS programmer who has been here for about thirty years and using FOCUS herself over 20 of those years! In any case, she did great documentation on some programs and no docs on other programs.

I've got my work cut out for me, and will take a look at the link you provided. Thank you so much for replying.


Mainframe FOCUS 7.0
VM/CMS and MVS/TSO
 
Posts: 250 | Registered: January 14, 2008Report This Post
Guru
posted Hide Post
Hi, Ginny,

I looked at the link you provided, but I must be thick today.... could not understand some of it. Could you please try expalining what the link was saying, but in more specific detail?

I would realy appreciate it.


Mainframe FOCUS 7.0
VM/CMS and MVS/TSO
 
Posts: 250 | Registered: January 14, 2008Report This Post
Expert
posted Hide Post
I use to do this, don't remember what I used to do, but, this looks familiar...

Hope it helps...


Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
 
Posts: 1972 | Location: Centennial, CO | Registered: January 31, 2006Report This Post
Platinum Member
posted Hide Post
Something like this maybe:

-*v------------------------------------------------v
-* this would be the Master - the size of the fields may differ
-* like for a PDS you may have 80 char limit per line (?)
-*
FILE=PROGRAMNAME ,SUFFIX=FIX
SEGNAME=PROGRAMNAME ,SEGTYPE=S1
FIELDNAME =LINE_OF_CODE,E01,A132,A132,$
-*^------------------------------------------------^

-*--------------------------------------------------
-* this would be the program
-*
-* I don't recall the exact mvs syntax but you shuold be able to get the drift
-*
-*
FILEDEF PROGRAMNAME DISK YourApp/Your_Program_name.fex

TABLE FILE PROGRAMNAME
LIST *
IF RECORDLIMIT EQ 10
END


WebFOCUS 7.6.6/TomCat/Win2003,SQL Server 2005,Oracle
 
Posts: 125 | Location: New England | Registered: February 20, 2007Report This Post
Guru
posted Hide Post
Tom and Rick,

Thank you both for replying as quickly as you did. I will check out the use of PDSLIST and will also set up a FOCEXEC based on the help offered. Thank you both!


Mainframe FOCUS 7.0
VM/CMS and MVS/TSO
 
Posts: 250 | Registered: January 14, 2008Report This Post
Expert
posted Hide Post
OK, webmeister. It has been a long time since I've done this so don't remember everything. And I don't have access to MF FOCUS to actually write the code so I can only give you general steps. After that, you'll have to use your imagination.

Since you have mainframe FOCUS, you need to find a mainframe FOCUS manual or download one from the IBI site. Chapter 26 is the MVS/TSO Guide to Operations. In there, there is a command called TSO LIST or TSO LISTDS. So you could say something like TSO LISTDS FOCEXEC and it should list the names of all the members of the PDS allocated to the ddname FOCEXEC. You can also use DYNAM ALLOC to allocate a specific PDS to a specific ddname. The trick is to pipe the output to a file that would just contain the names of the members. Maybe you could re-allocate 'terminal' or OFFLINE or use TOE (Terminal Operating Environment, Chapter 24).

The next think that you need is a generic master like RickW alluded to and which I also alluded to in the link that I posted above. I call mine LINE80 and it has one field in it, like Rick's, whose length is A80.

Then once you have all the member names in a file, let us call it FEXNAMES, write a master to describe it and let us call it FEXNAMES as well. Then do a DYNAM ALLOC FEXNAMES DSN whatever_the_dataset_name_is SHR REU.

Here is something that would resemble the order of what you need to do:
DYNAM ALLOC FEXNAMES DSN whatever_the_dataset_name_is SHR REU
-RUN
-* Here you have to know how many focexecs you have in the file.
-REPEAT ENDLOOP WHILE &CNTR LE &LIM;
-READ FEXNAMES NOCLOSE &FEXNAME.A8.
DYNAM ALLOC LINE80 DISK whatever_the_dataset_name_is(&FULLFEX) SHR REU
-RUN
SET ASNAMES=ON
DEFINE FILE LINE80
LINECNTR/I8=LINECNTR+1;
END
TABLE FILE LINE80
PRINT
LINE80 AS 'FOCEXEC CODELINE'
BY &FEXNAME
BY LINECNTR NOPRINT
WHERE LINECNTR LE 100
-*ON TABLE HOLD AS FEXLINES FORMAT ALPHA
END


Now another thing you can do is DYNAM ALLOC FEXLINES with an append so that you can stack all the lines for all the focexecs together and then do the report on that file instead.

I hope this makes more sense. You are going to have to do some digging as there are things, at my advanced age, that I just can't remember anymore.

Good luck!


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
 
Posts: 2723 | Location: Ann Arbor, MI | Registered: April 05, 2006Report This Post
Virtuoso
posted Hide Post
For TSO: Rather than fiddling with LISTDS, use FOCMAP

FOCMAP is a Focus master for reading the TOC of a PDS -- one row per member, giving the membername and various attributes.

-- Not well documented; and it appears to have been developed primarily with executables (rather than text members) in mind, but it does the job nicely for creating a member-list as a HOLD or SAVE file. If you search tech support for FOCMAP and FOCPDS, you'll find some references, including several (old) Journal articles on utilities developed using this facility.


Locate the FOCMAP member in one of the IBI-supplied master PDS's and catenate to the MASTER (or FOCMAST) allocation (or copy the member to your application library). Then allocate the target PDS under FOCMAP and FOCPDS (both of them), and you're ready to "TABLE FILE FOCMAP ..."


- Jack Gross
WF through 8.1.05
 
Posts: 1925 | Location: NYC | In FOCUS since 1983 | Registered: January 11, 2005Report This Post
Expert
posted Hide Post
Great, Jack. I had forgotten about FOCMAP.

WM, do what Jack says and then use that file in the Dialogue Manager loop in my post to get the lines from each fex.


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
 
Posts: 2723 | Location: Ann Arbor, MI | Registered: April 05, 2006Report This Post
Guru
posted Hide Post
..And to j.g. and Ginny,

Thank you also for your wonderful suggestions! Those look interesting and doable!

I appreciate everyone's suggestions and advice and will put them to good use as soon as my workloads lighten up. I'm averaging at least two requests, sometimes as many as six requests, a day, sbut will still try to put thse ideas to work.

Thanks!


Mainframe FOCUS 7.0
VM/CMS and MVS/TSO
 
Posts: 250 | Registered: January 14, 2008Report This Post
Platinum Member
posted Hide Post
I am about to say something bad. So I promise I will wash my mouth out with soap as soon I finish typing Wink

The easiest way to look at all the members of a PDS is SAS PROC SOURCE. It “unravels the members a flat file with a line separating each one. I am NOT going to post the SAS Code here.


A quick browse will show you the syntax of this line. A simple master and a quick TABLEF with a compute to the member name.

This is the TABLEF I use



TABLEF FILE LRECL080
PRINT
COMPUTE SEP/A1 = IF EDIT(TEXT_IN,'99$$') EQ './'
THEN 'Y'
ELSE 'N'; NOPRINT
COMPUTE MEMBER/A8 = IF SEP EQ 'Y'
THEN SUBSTR(80,TEXT_IN,21,28,8, 'A8')
ELSE LAST MEMBER;
COMPUTE REC/I8 = IF MEMBER EQ LAST MEMBER THEN LAST REC + 1
ELSE 0;
TEXT_IN
WHERE TOTAL REC LT 100
WHERE TOTAL SEP EQ 'N'
WHERE READLIMIT EQ 1000
END



Jim Morrow
Web Focus 7.6.10 under Windows 2003
MVS 7.3.3



 
Posts: 129 | Registered: June 01, 2005Report This Post
Guru
posted Hide Post
Jim, thanks for replying. However we do not have mainframe SAS at my site. I think, though, I can work with the sample code you provided.

Thanks again for your response.


Mainframe FOCUS 7.0
VM/CMS and MVS/TSO
 
Posts: 250 | Registered: January 14, 2008Report This Post
  Powered by Social Strata  

Read-Only Read-Only Topic

Focal Point    Focal Point Forums  Hop To Forum Categories  WebFOCUS/FOCUS Forum on Focal Point     Question about doumenting mainframe FOCUS

Copyright © 1996-2020 Information Builders