You are on page 1of 45

ALPHABETICAL INDEX

Acronymns
Cancel Command
CICS
CICS/QAP
Clock & Calendar (TSO)
Cobol Tips
Commenting out large blocks of code
Compile and Link
Converting to Hex
Copy a member into your JCL
Creating a dataset from the print queue output
Cut and Paste
Data Set Use
Data Shopper
Date manipulation program
DB2
Display specific codes
Down/Uploading files to/from the Mainframe
Endevor
Endevor/DB2 Processors
File Aid
FIND command
Intertest
JCL Hints
Line Break
Lotus Notes stationery
Prevail report to a file
Printing file layouts
QW
Recovery of deleted member
Reference modification for subscripted variable
Retrieving a report thats on tape
Screen color coding
SDF
Search (SCL)
S.I.T.
Sorting variable length records
Split Screens (TSO)
Tagging
TSO Tips
Xpediter
WHOIS TSOID

CLOCK & CALENDAR IN TSO Tom McHugh


To get a clock and a calendar on your TSO do the following.
1. Go to the TSO main screen.
2. Put your cursor on the word STATUS, press enter.
3. Select #3, press Enter.
A clock and calendar will now appear on the right side of your TSO.
To keep the calendar in TSO so you do not lose it after you logoff
1. Go to Menu in TSO then Settings
2. Put a / in front of SESSION MANAGER MODE
To have the calendar disappear remove the /
SPLIT SCREENS Lino Martire
To have more than 2 screens at a time, do the following: (max screen splits = 8)
1. Go to any PDF screen; type KEYS on command line, hit Enter
2. Scroll down to F14 and type SPLIT NEW
3. Go down to F21 (shift F9) and type SWAP LIST
4. Go to File (top of screen in TSO) hit Enter, Option 2 (Save and Exit)
Now when you want to split the screen, go to the top of any PDF screen and hit F14 (shift F2).
Naming your screens:
1. On command line type SCRNAME xxxx (whatever you want to call this view...ex. FAID, ENDVR, EDIT, JCL, etc.
2. When you want to split the screen again, hit Shift F2 at the top of another screen (PDF only), then type a new
SCRNAME for that view.....customize it.
3. To toggle back and forth between views, hit Shift F9 and a pop-up window shows up with all the views' names.
4. Go to the one you want and hit Enter.
That's all there is to it......no more F3...F3...F3.............BIG time saver!!!!!!
If you have multiple screens going and happen to know the # of the screen you want to go to, just type
that # on the command line and hit F9. For example, you have several screens open but you know the
first one you started was using the edit and you are ready to go back to editing, just type 1 on the
command line and hit F9. (update per Chad)
QW Jolle Bochner
Anytime youre in ISPF, you can place your cursor on something you want to understand more clearly (here Ive set my
cursor on IEFBR14) and type QW on the command line then hit ENTER. A screen will pop up describing what the item
(in this case IEFBR14) does.
Type QW on

Menu Utilities
Compilers Help
command line
_____________________________________________________________________
BROWSE CNSJBOC.C1#1TMPL.LIST
Line 00000039 Col 001 080
Command ===>
QW
Scroll ===> CSR
+00 //*
Put cursor on
item you want
+00 //R005 EXEC PGM=IEFBR14
understood
%+04 //OCONF2 DD DSN=&P..PCONFCHE.R020.OCONF2.ODAS,
%+04 //
DISP=(MOD,DELETE),
%+04 //
UNIT=SYSDA,
%+04 //
SPACE=(TRK,(0))
+00 //**-----------------------------------------------------------------*
To get out of the screen(s) you will get to describe the item you are qwestioning, just use your PF3 key as usual.
SCREEN COLOR-CODING Sue Wang
1. Type HILITE ON on the command line
2. Fill in the information on the screen that pops up
3. Save the information (top left of screen)
Your program (the type you identified) will be colored coded. It's easier to spot mistakes because if a period or comma is
missing the phrase will appear in a different color in most cases.

DOWNLOADING FILES FROM THE MAINFRAME TO YOUR HARD DRIVE Chad Watkins
This process will come in handy any time your manager wants a softcopy of your output emailed to them -- a file
not a printout. (When I refer to put a dot next to an item that means click on the circle next to the item so that a dot
appears. Sometimes that is the default.)
From the TSO READY prompt
Click on TOOLS at the very top of the screen
Choose the last option File Transfer. This will bring up the NS/Transfer window, which looks something like this:
DYNACOMM
MAINFRAME WORKSPACE

NEW
PROPERTIES
RUN
DELETE
RENAME
EXPORT
You will need to use the NEW, PROPERTIES and RUN options in that order. First click on DYNACOMM then
click NEW. Put a dot next to File Transfer Request and click OK. Now the other options will become available (i.e. they
will undim).
Next click on PROPERTIES. This will give you a window with the following tabs at the top:
GENERAL
PCFILE
CONVERSION
HOST FILE
ADVANCED
You will need to click on all of these except ADVANCED in order from left to right. First on the GENERAL tab put a dot
next to DOWNLOAD.
Next click the PC FILE tab (TO). Put a dot next to FILE and then fill in the file name with the complete path and name you
want to call the downloaded file. Eg. C:\programfiles\data\newfilename.
Next click the CONVERSION tab and put a dot next to CHARACTER.
Next click the HOST FILE (FROM) tab and enter the complete data set name of the file you are trying to download. Eg.
CNSCWAT.TEST.DATA.FILENAME (be sure the file name is in single quotes).
Click OK and this will bring you back to the NS/Transfer window.
All thats left to do is click RUN. You will get a message as to the status of your transfer. If you did everything correctly,
you will get a successful transfer message. If not, it will tell you what you did wrong. Correct the problem and click RUN
again.
TSO TIPS Edward Kurzum
When you log on to TSO, after TSO, leave a space and type your ID. Hit ENTER and you will automatically
go to the sign on page with the cursor at PASSWORD.
When you cut and paste from one element to another:
Type CUT on the command line, leave a space, and type the letter R. This will insure that after you PASTE,
whatever was cut is deleted from the cut queue (i.e. if you cut without the R and you cut a second time,
you will have what you originally cut, plus the new lines you cut)
If you type BOOK on the command line, you will get a list of all IBM books and manuals on line.
If you type START on the command line, you will get a fresh screen.

Recovery of deleted member Steve Sinclair


It seems that whenever you change or delete a member of a dataset library, a copy of it is made which can be recovered if
you goofed (I'm not sure if this works on data set files as well, but I wouldn't be surprised).
Go to V.4
VendorSuppliedSoftware
Option===>4

AAFPAdvancedFunctionPrintCMCICSMgrCICSManager
DDeliverPrevail/XPDeliverDBDB2Database2PrimaryPanel
ENENDEVORChangeControlFacilityFFileAidDataHandlingUtility
FXABEND/FXCICSAbendAidIAIAMIAMOnlineInterface
ISISMFInteractiveStorageMgmt.JJCLPREPJCLManagementDialog
MINFOInfo/ManagementOLOLSOnlineSyncsortInterface
PP3825IBM3825PrinteroutputSDSDFIICICSScreenDefinition
SRSARSARArchivedJCLDatabaseTMTMSCA1/ISPFTMSInterface
VDViewView/DeliverZZapFullScreenZap
1COMPAREXCOMPAREX/ISPFInterface4PDSPDSCommandInterface
5SCALESBatchCompile&Link

EnterENDtoexit

Enter the name of the data set or library (dont forget the ticks) and hit <ENTER>
StarToolVersion5.3.0DataSetPrompt
OPTION===>

ISPFLIBRARY:
PROJECT===>TSOSSIN
LIBRARY===>FILES
TYPE===>SORT
MEMBERS===>(setto*oramembergrouptouseMEMLIST)

OtherpartitionedorsequentialdatasetorFILE(ddname):
DATASETNAME===>'T.ENTRY.CONV.DIST.COPYLIB
VOLUMESERIAL===>(Ifnotcataloged)
VOLUMESET===>(Foradefaultvolumename)

MEMLISTPROMPT===>NO(yes/noforaMEMLISTpromptpanel)
ISPMODECMDS===>(Optional)
PROGRAMNAME===>STARTOOLExitatCompletion===>NO(yes/no)

Options:
IEnterISPMODE
MEnterMEMLISTwiththeidentifiedMEMBERS
LEnterLinemode
SETSetdefaultoptionsprompt
blankEnterMEMLISTifanymemberdataisentered;ISPMODEotherwise

Select option 11 and hit <ENTER>


StarToolVersion5.3.0PrimaryOptionsTopofdata
OPTION===>11

Currentdataset==>'T.ENTRY.CONV.DIST.COPYLIB'
More:+
BasicApplications:
0ParametersSpecifyStarToolparametersUSERIDTSOSSIN
1BrowseDisplaysourcedataoroutputlistingsPREFIXTSOSSIN
2EditCreateorchangesourcedataTIME09:57
3UtilitiesPerformutilityfunctionsDATE1999/10/27
4PeditSuperEditOptiontoeditinparallelJULDATE1999.300
5BatchjclCreateabackgroundStarTooljobTERMINAL3278
DEDemoDemonstrateStarToolfacilitiesLOGPROCTSO
I#ISPFStackanISPFsession(likeI3.4)MVSID333C
INIndexDisplayStarTooltutorialindexAPPLIDISR
NNewSummarizechangesforthisreleaseSuperEditEnabled
XExitTerminateStarTool

AdvancedApplications:
6AllCreateaMEMLISTwithallmembers
7OutputOutputLOGTable
8LogViewStarToolsessionlog
9ActivateActivatedatasetsandGOsessions
10SearchSearchandReplacefunctions

Select option RES and hit <ENTER>


StarToolSourcePDSRecoveryandRepair
OPTION===>RES

DSN=T.ENTRY.CONV.DIST.COPYLIB,VOL=SER=CTSP04MEM=

AorATTRIBChangememberattributes
COMPRorCOMPRESSCompressthedataset
EXPANorEXPANDAdddiskspaceordirectoryspacetothedataset
FIXorFIXPDSChangedatasetattributes
FIXDorFIXDSCBUpdatedatasetDSCBfieldsdirectly
READorREADOBJDisassembleobjectmembersintosourceform
RELEorRELEASEReleasediskspaceordirectoryspacefromthedataset
REPLorREPLACEUpdatemembers
REPRorREPROReblocksourcemembers
RESorRESTOREBuildamemberlistofdeletedmembersforrecovery
VEorVERIFYValiditycheckmembers

Hit <ENTER> again to bring up a list of changed or deleted members in the library
RESTORE:AddDeletedSourceMembersforRecovery
OPTION===>

DSN=T.ENTRY.CONV.DIST.COPYLIB,VOL=SER=CTSP04MEM=
Partialmembername==>@@@(Example:@@@wouldproduce@@@00001)
Modelmember==>(memberwithattributestouse)
StartingTTRaddress==>0(0toFFFFFF,hexadecimalTTRaddress)

Finddata(forfiltering)==>
Caseforfinddata==>ANY(ANY,UPPER,ASIS)

Thefollowinglinecommandswillbeavailablefordeletedsourcemembersafter
thememberlistisdisplayed:
ODisplayavailableoptionsLListdatafromthemember
=RepeatpreviouslinecommandLOGLogtheformattedline
DUPDuplicatethememberPBBrowsethemember
EEditthememberRESTRestorethisdeletedmember
FFinddatainthememberREVReviewthemember
KKillandclearcommandsXDroplinefromMEMLISTtable

This is a listing of all the members that were deleted or changed. Theyre not listed under their original names, but rather
sequentially, the most recent on top. Put S next to a member to view it, REST to restore it and hit <ENTER>. The
member will be restored to the original library, under the @@@0000n name. Really!
FUNCTIONSCONTROLAMLINECMDSAMDSNCMDSMEMCMDSAMFEATURES
CONTROLNZLINECMDSNZMEMCMDSNZDEFAULTS

SourceMEMLIST1,Session#1Row1to17of123
COMMAND===>SCROLL===>CSR
DSN=T.ENTRY.CONV.DIST.COPYLIB,VOL=SER=CTSP04MEM=@@@:@@@
CMDNAMEDATA/MSGVER.MODCREATEDLASTMODIFIEDSIZEINITID
S@@@00002*DELETED01.001999/10/271999/10/2710:014444*DELETE
@@@00003*DELETED01.001999/10/271999/10/2710:013030*DELETE
@@@00004*DELETED01.001999/10/271999/10/2710:013030*DELETE
@@@00005*DELETED01.001999/10/271999/10/2710:014848*DELETE
@@@00006*DELETED01.001999/10/271999/10/2710:019797*DELETE
@@@00007*DELETED01.001999/10/271999/10/2710:017676*DELETE
@@@00008*DELETED01.001999/10/271999/10/2710:01361361*DELETE
@@@00009*DELETED01.001999/10/271999/10/2710:013434*DELETE
@@@00010*DELETED01.001999/10/271999/10/2710:011414*DELETE
@@@00011*DELETED01.001999/10/271999/10/2710:011414*DELETE
@@@00012*DELETED01.001999/10/271999/10/2710:011414*DELETE
@@@00013*DELETED01.001999/10/271999/10/2710:011414*DELETE
@@@00014*DELETED01.001999/10/271999/10/2710:019797*DELETE
@@@00015*DELETED01.001999/10/271999/10/2710:019696*DELETE
@@@00016*DELETED01.001999/10/271999/10/2710:019797*DELETE
@@@00017*DELETED01.001999/10/271999/10/2710:019797*DELETE
@@@00018*DELETED01.001999/10/271999/10/2710:014848*DELETE

Commenting out large blocks of code Steve Sinclair


If you need to comment out large blocks of code and don't feel like spending the afternoon hitting the asterisk and arrow
keys, simply block the section with XX and enter the following on the command line. The same works in reverse.
. . . . . . . . . . . . . . . . . . . . . . . . . . .
FileEditConfirmMenuUtilitiesCompilersTestHelp

EDITTSOSSIN.ENTRYNA.CAPBROK(CPBRKDRV)01.99Columns0000100072
Command===>C'''*'7XALLScroll===>CSR
XX23603000CREATECODSECTION.
002361*******************************
002362
002363SETVALIDCODACCOUNTTOTRUE
002364MOVEALLSPACESTOCODACCOUNT
002365
002366PERFORM3010CHKIFVALIDCOD.
002367
002368IFNANAACD5NOT='X'
002369SETPSEUDOCODACCOUNTTOTRUE
002370ENDIF.
002371
002372IFPSEUDOCODACCOUNT
002373ADD+1TOWSIPSEUDOCTR
002374PERFORM3500CREATEPSEUDOCOD
002375GOTO3000CREATECODEXIT
XX2376ENDIF
002377
002378*JCADD+1TOWSOUTPUTCTR

...........................
FileEditConfirmMenuUtilitiesCompilersTestHelp

EDITTSOSSIN.ENTRYNA.CAPBROK(CPBRKDRV)01.99CHARS''changed
Command===>Scroll===>CSR
==CHG>*3000CREATECODSECTION.
1Line(s)notDisplayed
==CHG>*
==CHG>*SETVALIDCODACCOUNTTOTRUE
==CHG>*MOVEALLSPACESTOCODACCOUNT
==CHG>*
==CHG>*PERFORM3010CHKIFVALIDCOD.
==CHG>*
==CHG>*IFNANAACD5NOT='X'
==CHG>*SETPSEUDOCODACCOUNTTOTRUE
==CHG>*ENDIF.
==CHG>*
==CHG>*IFPSEUDOCODACCOUNT
==CHG>*ADD+1TOWSIPSEUDOCTR
==CHG>*PERFORM3500CREATEPSEUDOCOD
==CHG>*GOTO3000CREATECODEXIT
==CHG>*ENDIF
002377
002378*JCADD+1TOWSOUTPUTCTR

Creating a dataset from the print queue output Steve Sinclair


I wanted to print the copybooks section of my compiler output, but I did not want to print in landscape, as happens when
you use printer control commands to print sections of a large output (see 4/8/99 tip). So, I first used the printer control
commands to print the lines I wanted (specifying class F so that it would stay in the output queue), and then created a
dataset using the XD command, as follows - I was then able to print the dataset (in portrait) from the V.P menu

DisplayFilterViewPrintOptionsHelp

SDSFOUTPUTALLCLASSESALLFORMSLINES6,695LINE12(2)
COMMANDINPUT===>SCROLL===>CSR
NPJOBNAMEJOBIDPRTYCFORMFCBDESTTOTRECPRTRECDEVICES
XDTSOSSINTSU24448128FSTD****LOCAL1,113
TSOSSINTSU2444880FSTD****LOCAL5,582
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++
SDSFOpenPrintDataSet
COMMANDINPUT===>SCROLL===>CSR

Datasetname===>'TSOSSIN.FILES.MISC.OUT'
Membertouse===>
Disposition===>NEW(OLD,NEW,SHR,MOD)

Ifthedatasetistobecreated,specifythefollowing.
Volumeserialwillbeusedtolocateexistingdatasetsifspecified.

Managementclass===>(Blankfordefaultmanagementclass)
Storageclass===>(Blankfordefaultstorageclass)
Volumeserial===>(Blankforauthorizeddefaultvolume)
Dataclass===>(Blankfordefaultdataclass)
Spaceunits===>BLKS(BLKS,TRKS,CYLS,BY,KB,orMB)
Primaryquantity===>500(Inaboveunits)
Secondaryquantity===>500(Inaboveunits)
Directoryblocks===>(Zeroforsequentialdataset)
Recordformat===>FBA
Recordlength===>80
Blocksize===>800
After you hit ENTER to create the dataset per below, you must then type PRT CLOSE on the command line and hit
ENTER again.
Otherwise, you will have only an empty dataset.

TSO FIND command Steve Sinclair

Command===>FSTRING
to find the characters STRING anywhere in the file

Command===>F'STRING'1
to find the characters STRING in position 1
What you may not know (or at least I did not know until today) is that you can also search for a string of characters within
a range of file positions

Command===>F'STRING'100150
to find the characters STRING within the range of positions 100 - 150
This can be very useful when you want to do a quick search that is limited to a particular field or fields
Finding out who a TSOID represents Jolle Bochner
If you want to know whose TSOID you are looking at, (i.e. if you get an approval or denial when submitting packages to
production in Endevor and want to know who it was who approved or denied it):
1. From the main ISPF menu, choose option 6.
2. At the = = = > type in: WHOIS XXXXXXX (i.e. WHOIS CNSJBOC for me) and press ENTER.
3. On your screen will appear the users name and the department in which they work.
Cut and Paste Steve Sinclair
The quickest and easiest way to copy a dataset name, field name, or any other string of characters from
one place to another is to:
1. Drag over it with your mouse to highlight it
2. Hit Ctrl +C to copy to your clipboard
3. Hit Ctrl + V to paste
This is particularly useful in editing JCL and moving between ISPF screens.
DATA SHOPPER Chad Watkins
GETTING INTO DATA SHOPPER
Click onto Internet Explorer to get onto the Intranet
Click on site map at the bottom of the screen
Under Corporate Systems choose Enterprise Data Architecture (EDA)
Click on Access Repository
Click on Datashopper on the left-hand side of the screen
When it asks for username and password this is the same as your TSO login
USERNAME: CNSCWAT
PASSWORD: TSOpassword
QUERYING IN DATASHOPPER
After signing on you will be presented with the Datashopper tab Metadata Finder. This is currently the only active tab.
Click on one of the SEARCH OBJECTS. This will bring up ATTRIBUTES for that search object. Click the ATTRIBUTE
you want and the OPERATORS you want your search to use. Then put a value you want to search for in the VALUE
space and click ADD. This will place your query in the SEARCH CRITERIA SPACE. Continue this process until your
search is what you want. Then click OK.
E.g. Find all the files used by the program DPSD8202. Under the SEARCH OBJECTS click on PROGRAMS. This will
bring up 2 attributes, PROGRAM NAME and INTERNAL PROGRAM NAME. Click on the ATTRIBUTE PROGRAM
NAME. Under OPERATORS click on BEGINS WITH. Click in the value box and type in DPSD8202 and click ADD. In the
SEARCH CRITERIA the following line will appear: PGM_NAME LIKE DPSD8202%. This is your query. You can add as
many lines to this as you want. For this example you just need to click OK. When you do, you will be given a list of
programs that start with DPSD8202. Click on the program you want to highlight it. On the right, you will be given another
list of SEARCH OBJECTS. Click on FILES to highlight it and then click search. You will be given a list of all the files that
DPSD8202 uses. This may also be useful if you need to know all the JCL procedures that call this program or all the
copybooks the program uses.

Printing File Layouts Steve Sinclair


You probably already know how to view an interpreted file layout using fileaid (invaluable when creating layouts for
EZtrieve), but you may not know how to print it
If you want to view the interpreted record layout of a copybook (ie showing both the PIC clauses and field positions)
Go to FileAid (=V.F) and select option 8
FileAID8.0.2PrimaryOptionMenu
OPTION===>8

0PARAMETERSSpecifyISPFandFileAIDparametersUSERIDTSOSSIN
1BROWSEDisplayfilecontentsPFKEYS24
2EDITCreateorchangefilecontentsTERMINAL3278
3UTILITIESFileAID/SPFextendedutilitiesTIME17:12
5PRINTPrintfilecontentsJULIAN00.108
6SELECTIONCreateorchangeselectioncriteriaDATE00/04/17
7XREFCreateorchangerecordlayoutcrossreference
8VIEWViewinterpretedrecordlayout
9REFORMATConvertfilefromoneformattoanother
10COMPAREComparefilecontents
CCHANGESDisplaysummaryofFileAIDchanges
TTUTORIALDisplayinformationaboutFileAID
XEXITTerminateFileAIDandreturntoISPF

Then enter the library and member of the copybook on the next screen and hit <Enter>
SpecifyRecordLayoutDatasettoView:

Datasetname===>'ENDEVOR.PROD.COPYLIB
Membername===>NETRNSCC(Blankorpatternformemberlist)
The next screen you will see is:
COMMAND===>SCROLL===>CSR
Layout:ENDEVOR.PROD.COPYLIB(NETRNSCC)
FIELD
FIELDLEVEL/NAMEPICTURENUMBERSTARTENDLENGTH
KEYAREA1150150
5KEYAREAGROUP115252
7ACCOUNTNOX(10)211010
7FULLSOURCEACCTGROUP3113121
9SOURCEACCTANDTYPEGROUP4113020
11SRCACCTGROUP511199
13SRCBRANCHXXX611133
13SRCBASEX(6)714196
11SRCACCTTYPEX820201
11SOURCEACCTFILLERX(10)9213010
9SOURCEACCTINDX1031311
7FULLTARGETACCTGROUP11325221
9TARGETACCTANDTYPEGROUP12325120
11TGTACCTGROUP1332409
13TGTBRANCHXXX1432343
13TGTBASEX(6)1535406
11TGTACCTTYPEX1641411
11TARGETACCTFILLERX(10)17425110
=======================================================================================

If you wish to print the interpreted layout, select option 5 from the FileAid menu
FileAID8.0.2PrimaryOptionMenu
OPTION===>5

0PARAMETERSSpecifyISPFandFileAIDparametersUSERIDTSOSSIN
1BROWSEDisplayfilecontentsPFKEYS24
2EDITCreateorchangefilecontentsTERMINAL3278
3UTILITIESFileAID/SPFextendedutilitiesTIME17:20
5PRINTPrintfilecontentsJULIAN00.108
6SELECTIONCreateorchangeselectioncriteriaDATE00/04/17
7XREFCreateorchangerecordlayoutcrossreference
8VIEWViewinterpretedrecordlayout
9REFORMATConvertfilefromoneformattoanother
10COMPAREComparefilecontents
CCHANGESDisplaysummaryofFileAIDchanges
TTUTORIALDisplayinformationaboutFileAID
XEXITTerminateFileAIDandreturntoISPF

Select option 4 from the next screen


FileAIDPrintSelectionMenu
OPTION===>4

1DataFilePrintthecontentsofadatafile:
informattedmodeusingrecordlayout
inthreelinehexadecimalmode
insinglelinecharactermode

2RecordLayoutXREFPrintthecontentsofarecordlayoutXREF:
PrintarecordlayoutXREF
PrintXREFwithreferencedrecordlayouts

3SelectionCriteriaPrintthecontentsofselectioncriteria

4RecordLayoutPrintarecordlayoutinformattedmode

5AuditTrailPrintthecontentsofanaudittrail

FileAIDPrintRecordLayout
Enter
the library and copybook, make sure that you have a JCL job card and use the SUB command to submit. The
COMMAND===>
layout
will be sent to your output queue, from where you can print it using the XS command

SpecifyRecordLayoutInformation:
Recordlayoutdataset===>'ENDEVOR.PROD.COPYLIB
Member===>NETRNSCC(Blank=memberlist;*=allmembers)

SpecifyBatchJCLInformation:
Sysoutclass===>*

SpecifyJOBStatementInformation:
===>//TSOSSINAJOB(ACCOUNT),NAME
===>

UseJCLcommandtoeditgeneratedJCL
UseSUBMITcommandtosubmitbatchjob
UseENDtoreturntomainprintpanelwithoutsubmittingjob

Display only code containing given field Steve Sinclair


In Edit mode, enter the command
Command===>EXCLUDEALL
and hit ENTER - all lines will be hidden
Now enter a FIND ALL command for the field name that you want to see
Command===>FWORKSAVEACCTNOALL
This will display only the lines of code that contain the field WORK-SAVE-ACCT-NO, and hide all the rest.
***********************************TopofData******************************
373Line(s)notDisplayed
00037405WORKSAVEACCTNOPICX(08).
223Line(s)notDisplayed
000598MOVEACNAACCOUNTTOWORKSAVEACCTNO
5Line(s)notDisplayed
000604IFNANAACCOUNT=WORKSAVEACCTNO
1805Line(s)notDisplayed
002410MOVEWORKSAVEACCTNO(1:3)TOREP001OLDBRANCH
002411MOVEWORKSAVEACCTNO(4:5)TOREP001OLDBASE
661Line(s)notDisplayed
003073MOVEWORKSAVEACCTNOTOXREFLINKOLDACCOUNTNUMBER
1763Line(s)notDisplayed
004837MOVEWORKSAVEACCTNOTOXREFB1OLDACCOUNTNUMBER
146Line(s)notDisplayed

To unhide the hidden lines, use the RES command.


Converting to Hex Jolle Bochner
There is a special tool you can use in TSO to convert to HEX and back. At the ISPF Primary Option Menu, type TSO
MenuUtilitiesCompilersOptionsStatusHelp
STARTOOL.

ISPFPrimaryOptionMenu
Option===>TSOSTARTOOL

0SettingsTerminalanduserparameters.<Calendar>
1ViewDisplaysourcedataorlistings.April2000
2EditCreateorchangesourcedata.SuMoTuWeThFrSa
3UtilitiesPerformutilityfunctions.1
4ForegroundInteractivelanguageprocessing.2345678
5BatchSubmitjobforlanguageprocessing.9101112131415
6CommandEnterTSOorWorkstationcommands.16171819202122
7DialogTestPerformdialogtesting.23242526272829
8SDSFSystemDisplayandSearchFacility.30
9IBMProductsIBMprogramdevelopmentproducts.Time....:12:18
11WorkplaceISPFObject/ActionWorkplace.Dayofyear.:109
CChangesChangesinISPF.
IInfoInfo/Management.
UUserUserTailorablePanel.
VVendorAdditionalProducts.

EnterXtoTerminateusinglog/listdefaults

Type HEX in the next screen.


StarToolVersion5.3.0PrimaryOptions
OPTION===>HEX

Currentdataset==>ISPF.ISPPROF
More:+
BasicApplications:
0ParametersSpecifyStarToolparametersUSERIDCNSJBOC
1BrowseDisplaysourcedataoroutputlistingsPREFIXCNSJBOC
2EditCreateorchangesourcedataTIME12:22
3UtilitiesPerformutilityfunctionsDATE2000/04/18
4PeditSuperEditOptiontoeditinparallelJULDATE2000.109
5BatchjclCreateabackgroundStarTooljobTERMINAL3278
DEDemoDemonstrateStarToolfacilitiesLOGPROCTSO
I#ISPFStackanISPFsession(likeI3.4)MVSID333C
INIndexDisplayStarTooltutorialindexAPPLIDISR
NNewSummarizechangesforthisreleaseSuperEditEnabled
XExitTerminateStarTool

AdvancedApplications:
6AllCreateaMEMLISTwithallmembers
7OutputOutputLOGTable
8LogViewStarToolsessionlog
9ActivateActivatedatasetsandGOsessions
10SearchSearchandReplacefunctions
Type the number you want to convert into Hex at Value Input, then put an N into Input Mode to convert from Numeric to
Hex (put an H in if you are converting Hex to numeric.
FUNCTIONSCONTROLDEFAULTSFEATURES

HexCalculator
COMMAND===>SCROLL===>CSR
DSN=CNSJBOC.ISPF.ISPPROF,VOL=SER=MVSDR0MEM=

Result>000000000<
Operator===>(+,,/,*,Ctoclear,orW,X,Y,Zformemorystore)
Valueinput===>523(numberorWXYZmemoryrecallorRI)
Inputmode===>N(HforhexorNfordecimalnumeric)

W=000000000;Y=000000000
X=000000000;Z=000000000
CALCULATORTAPE
*******************************Bottomofdata********************************
When you press ENTER you will get the result of the calculation:
FUNCTIONSCONTROLDEFAULTSFEATURES

HexCalculatorRow1to1of1
COMMAND===>SCROLL===>CSR
DSN=CNSJBOC.ISPF.ISPPROF,VOL=SER=MVSDR0MEM=

Result>0000020B523<
Operator===>(+,,/,*,Ctoclear,orW,X,Y,Zformemorystore)
Valueinput===>(numberorWXYZmemoryrecallorRI)
Inputmode===>N(HforhexorNfordecimalnumeric)

W=000000000;Y=000000000
X=000000000;Z=000000000
CALCULATORTAPE
R523=0000020B523
*******************************Bottomofdata********************************

Copy an existing member into current member (JCL) Steve Sinclair


You can use the COPY command to insert an existing member into the member that you are editing. This is very useful
when writing JCL, especially if you create a library of commonly used routines (SORT, EZTREIVE, IDCAMS, DELETE,
etc) that you can have at your finger tips .
In edit mode, enter the command COPY, put an A (for after) or B (for before) in the appropriate row, and hit <ENTER>
Command ===> COPY
***********************************TopofData*********
000001//TSOSSINNJOB(12345),'SSINCLAIRX2693',MSGCLASS=X,
000002//*TYPRUN=SCAN,
000005//CLASS=A,
A00006//NOTIFY=TSOSSIN
On the next screen enter the name of the dataset library where the member that you wish to copy is saved, and hit
<ENTER>
FromOtherPartitionedorSequentialDataSet:
DataSetName..'TSOSSIN.FILES.COPY'
VolumeSerial..(Ifnotcataloged)
Put an S by the member (in this case, DELETE) that you want and hit <ENTER>
EDITExtendedCopytoTSOSSIN.FILES.JCL(NEWJCL)Row00001of00006
Command===>Scroll===>CSR
NameVVMMCreatedChangedSizeInitModID
SDELETE01.0000/03/2400/03/2413:3410100TSOSSIN
.EZTFILE01.0100/04/1800/04/1815:2536349TSOSSIN
.EZTRPT01.0300/04/1800/04/1815:41534052TSOSSIN
.IDCAMS01.0100/04/1800/04/1811:5213124TSOSSIN
.JOBCARD01.0100/04/1800/04/1815:46453TSOSSIN
.SORT01.0299/11/1600/03/2413:35141340TSOSSIN
The routine is now inserted into your JCL, all you have to do is update the dataset names, etc.
Command===>Scroll===>CSR
***********************************TopofData****************************
000001//TSOSSINNJOB(12345),'SSINCLAIRX2693',MSGCLASS=X,
000002//*TYPRUN=SCAN,
000005//CLASS=A,
000006//NOTIFY=TSOSSIN
000007//**
000008//*DELETEFILES
000009//**
000010//DELE01EXECPGM=IEFBR14
000020//SYSOUTDDSYSOUT=*
000030//SYSPRINTDDSYSOUT=*
000040//DD1DDDSN=TSOSSIN.
000050//UNIT=SYSDA,SPACE=(CYL,0),DISP=(MOD,DELETE,DELETE)
000060//DD2DDDSN=TSOSSIN.
000070//UNIT=SYSDA,SPACE=(CYL,0),DISP=(MOD,DELETE,DELETE)
As an added bonus, if you look in my TSOSSIN.FILES.COPY library there is an IDCAMS routine for creating and loading
a VSAM file that is MUCH simpler than anything they ever showed us at Chubb.

TSO Line Break Lino Martire


When you are in TSO and you are writing any JCL or COBOL program or whatever, and let's say you can't fit
a whole statement on a single line, or you want to move some part of a statement to the next line...
000627
IF WS-ACCOUNT EQUAL TO '999999999' OR HIGH-VALUES
000628
IF WS-OPEN-ACCOUNT EQUAL TO '999999999' OR HIGHVALUES
you do the following:
1) Place a TS in the margin of the line you want to break.
000627
IF WS-ACCOUNT EQUAL TO '999999999' OR HIGH-VALUES
00TS28
IF WS-OPEN-ACCOUNT EQUAL TO '999999999' OR HIGHVALUES
2) Move your cursor to the exact position on that line you want to break and hit Enter.
000627
IF WS-ACCOUNT EQUAL TO '999999999' OR HIGH-VALUES
00TS28
IF WS-OPEN-ACCOUNT EQUAL TO '999999999' OR HIGHVALUES
Result:
000627
IF WS-ACCOUNT EQUAL TO '999999999' OR HIGH-VALUES
000628
IF WS-OPEN-ACCOUNT EQUAL TO '999999999'
000629
OR HIGH-VALUES
Now just move it to where you want it to be...this saves a lot of retyping!!
Data Set Use - Susan Wang
To find out where a data set is used (useful when you need to identify jobs concerned):
in TSO, go to 3.4. On the DSNNAME LEVEL, type prod1.report. Press enter.
You will see prod.report.data listed. Put a B next to it and press enter.
You will see a list, select UCC7XREF (put a s on the line), press enter.
You will see a long list. Type F followed by the full data set name.
Now you will see the module names where the data set is used.
Xpeditor Chad Watkins
When compiling choose Y for expedite
ISPFPrimaryOptionMenu
5
BATCH
Option
3TCOBOLII
PROJECT===>CNSCWAT|OtherpartitionedorsequentialDataSet:
GROUP===>DECIMALS|(SpecifymembernameinparenthesisifPDS)
TYPE===>COBOLPGM|
MEMBER===>TESTPROG|DATASETNAME===>
.
|Programname==>(Ifsequentialfileusedorifmember=progname)|
|Quickcompile(YesNo)==>YES(YesbypassesREBLOCKandCOMPLINKsteps)|
|TolinktoPDSotherthanTEST1.LINKLIB==>|
''
COMPILEROVERTYPEANYFIELDLINKAGEEDITORTypeDYNAMor
NODYNAM===>DYNAM|AMODE/RMODE==>31ANY
(3124,31ANY)
TypeADVorNOADV===>ADV|31ANYCOBOLIIcallingonlyCOBOLII
Expedite(Y/N)===>Y|3124COBOLIIcallingCOBOLI
Optionsotherthanthoseabove:|Optionsotherthanabove:
=>|=>
CopyBookLibraries:(noquotes)|CallModuleLibraries:(noquotes)
=>|=>

|=>

type TSO XPEDITER on the command line


COMMAND TSOXPEDITER
Or
ISPF Primary Option Menu

COMMAND

And then at the XPEDITER


Then choose option 2
OPTION===>2

0DEFAULTSSpecifydefaults
1PREPAREPrepareprogramsfordebugging
2TSODebugprogramsinteractivelyunderTSO
3BATCHDebugprogramsinteractivelyunderbatch

5UTILITIESPerformutilityfunctions

BBULLETINDisplaysummaryofchangesforthisrelease
TTUTORIALDisplayinformationaboutXPEDITER/TSO
XEXITExitprimarymenu

Then enter the program name and the JCL that runs it
COMMAND===>

COMMANDS:SEtup(DisplaySetupMenu)

TESTSELECTIONCRITERIA:

Program===>PROGNAME
EntryPoint===>
LoadModule===>
InitialScript===>
PostScript===>
PARMString===>
FileList/JCLMember===>'CNSCWAT.TEST.JCL(PROGJCL)'

IsThisaDB2Test?===>NOPlan===>System===>
Then use the following list to step through program, set break points, examine the value of variables, test branching logic,
etc.
Commandline
Description
H
Hex
DH
DeleteHex
Run
Execute1line
Executenlines
B
setbreakpoint
A
setbreakafter

Command

PFKey

GO
12
GO1
9
GOnGOnTRACEGOHALF
BEFOREline#paragraph
AFTER

erasebreaks

P
E

DELETEAFTERline#paragraph
BEFORE
PEEK
2

examinevariable
showelementaryitems
Changevalues
MOVE
Find
LOCATEprocedurename#
Findcurrentexecutionpt
*
K
continualdisplay
KEEP
Startfromthetop
RETEST
EraseKEEPvariable
DELETEKEEP
Conditionalstop
WHEN
Listwhens
SHOWWHEN
Listbreaks
SHOWBREAKS
C
stopwhencountreached
COUNT
Stopwithinablock
PAUSE
RemoveWHENs
DELETEWHEN
Finished
EXIT
Browselogfile
LOG
Editascript
SCRIPT
Executeascript
INCLUDE
Recordexecutionpath
MONITOR
Gobackwards
REVERSE
Goforward
RESUME
Scrollup
UP
Scrollupnlines
UPn
Scrolldown
DOWN
8
Listcounts
SHOWCOUNTS
Backup1screen
Listmodules
SHOWMODULES
Showcalledprogramsourcecode
INTERCEPT
Displaylinkagevariables
KEEPLINKAGE
Locateavariable,etc.
FIND
Showonlylinesoffind
EXCLUDE
Findreferencestosamestoragelocations
ALIAS
Findallstatementsthataffectvariable
INDIRECT
Findwhereavariablecanbechanged
MODIFY
S
Bypassstatements
SKIP
GT
repositionexecutionpointer
GOTO
Displayabendaidsnapshot
SNAP
M
displayandmodifystorage
MEMORY
SetabreakpointinapgmnotcompiledbyXpediter
AT
Display and modify general register pointers
List Ats
SHOW AT
Remove Ats
DELETE AT
Scroll right
Scroll left
Help

GPREGS
11
10
1

Cancel Command Lino Martire


If you are editing a file, and you wish you could go back to the way it was without the new changes,
(equivalent to an UNDO command...kind of)
on the command line, type CANCEL
(If you already typed SAVE, however, you're out of luck!)
Acronyms Chad Watkins
ABEND
ABNORMAL END OR TERMINATION
ACAM
AUTOMATED CASH MANAGEMENT SYSTEM

ASCII

ATI
BMS
CECI
CEMT
CICS
CMM
CMOS
CPU
CSA
CWA
DASD
DASH
DB2
DCB
DD
DSN
EBCDIC

EDF
EIB
EIP
ESA
ESCON
ESDS
FB
FCB
FCT
GB

GDG
HFS
ICRF
IBG
ICP
IMS
ISPF
JCL
JECL
JES
K
KCP
KSDS
LUW
LRECL
MB
MFNL
MVS/370
MVT
NLI
OSF
OS/VS2
PC
PCT
PCP
PDS
PDSE
PONA
PPT
PROM
PSF

AMERICAN STANDARD CHARACTER CODE FOR


INFORMAITON INTERCHANGE
AUTOMATIC TASK INITIATION
BASIC MAPPING SUPPORT
CICS ESA COMMAND INTERPRETER
CICS ESA MASTER TERMINAL
CUSTOMER INFORMATION CONTROL SYSTEM
CAPABILITY MATURITY MODEL
COMPLEMENTARY METAL OXIDE SEMICONDUCTOR
CENTRAL PROCESSING UNIT
COMMON SYSTEM AREA
COMMON WORK AREA
DIRECT ACCES STORING DEVICE
DIRECT ACCESS SCREEN HANDLER CODE
DATABASE 2
DATA CONTROL BLOCK
DATA DEFINITION
DATA SET NAME
EXTENDED BINARYCODED DECIMAL
INTERCHANGE CODE
EXECUTION DIAGNOSTIC FACILITY
EXECUTE INTERFACE BLOCK
EXECUTION INTERFACE PROGRAM
ENTERPRISE SYSTEMS ARCHITECTURE
ENTERPRISE SYSTEMS CONNECTION
ENTRY SEQUENCED DATA SET
FIXED BLOCK
FORMS CONTROL BUFFER
FILE CONTROL TABLE
GIGABYTE 1,073,741,824 BYTES
(2 TO THE 30TH POWER)
GENERATION DATA GROUPS
HIERARCHICAL FILE SYSTEM
INTEGRATED CRYTOGRAPHIC FEATURE
INTERBLOCK GAP
INTERNAL CONTROL PROGRAM
INFORMATION MANAGEMENT SYSTEM
INTERACTIVE SYSTEM PRODUCTIVITY FACILITY
JOB CONTROL LANGUAGE
JOB ENTRY CONTROL LANGUAGE
JOB ENTRY SYSTEM
1024 BYTES (2 TO THE 10TH POWER)
TASK CONTROL PROGRAM
KEYED SEQUENCE DATA SET
LOGICAL UNIT OF WORK
LOGICAL RECORD LENGTH
MEGABYTE 1,048,576 BYTES (2 TO THE 20TH POWER)
MUTUAL FUND NO-LOAD SYSTEM
MULTIPLE VIRTUAL STORAGE/370
MULTIPROGRAMMING WITH VARIABLE TASKS
NEXT LOGICAL INSTRUCTION
OPEN SOFTWARE FOUNDATION
OPERATING SYSTEM/VIRTUAL STORAGE
PERSONAL COMPUTER
PROGRAM CONTROL TABLE
PROGRAM CONTROL PROGRAM
PARTITIONED DATA SET
PARTITIONED DATA SET EXTENDED
PERSHING ON-LINE NAME AND ADDRESS SYSTEM
PROCESSING PROGRAM TABLE
PRODUCT MASTER
PRINT SERVICES FACILITY

PTG
RACF
RAID
RAM
RECFM
RISC
REXX
RRDS
SDF
SEI
SLB
SMS
SPOOLING
SPUFI
SYSGEN
TB
TCA
TCT
TCTTE
TDQ
TIOA
TOPS
TSO
VSAM
VTAM
XA
-

PERSHING TECHNOLOGY GROUP


RESOURCE ACCESS CONTROL FACILITY
REDUNDANT ARRAY OF INDEPENDENT DISKS
RANDOM ACCES MEMORY
RECORD FORMAT
REDUCED INSTRUCTION SET COMPUTERS
RESTRUCTURED EXTENDED EXECUTOR
RELATIVE RECORD DATA SET
SCREEN DEFINITION FACILITY
SOFTWARE ENGINEERING INSTITUTE
SOURCE LISTING BREAKPOINT
STORAGE MANAGEMENT SYSTEM
SIMULTANEOUS PERIPHERAL OPERATION ON-LINE
SQL PROCESSOR USING FILE INPUT
SYSTEM GENERATING PROCESS
TERABYTE 1,099,511,627,776 BYTES
(2 TO THE 40TH POWER)
TASK CONTROL AREA
TERMINAL CONTROL TABLE
TERMINAL CONTROL TABLE TERMINAL ENTRY
TRANSIENT DATA QUEUE
TERMINAL INPUT OUTPUT AREA
TRADE ORDER PROCESSING SYSTEM
TIME SHARING OPTION
VIRTUAL SEQUENTIAL ACCESS METHOD
VIRTUAL SYSTEM ACCES METHOD
VIRTUAL TELECOMMUNICATIONS ACCES METHOD
EXTENDED ADDRESS

CICS Chad Watkins


GETTING INTO CICS
ENTER VALID APPLICATION SIGNON FOR TERMINAL GE182A06 ==>
CICSDEV
USERID: CNSCWAT
PASSWORD: same as TSO
NEW PASSWORD:
Then select an application
ACAM ADMS ASPS BOES BPRA BT00 DATE DEM0 DOCS EXIT FAST FIRM FXIP
GCOM GLBL HF00 IOPS IPOS IRAS JR10 JR27 KORR KUST LOCK MACE MAXX
MFNL MFTS MG01 MIPS NPNF NPNX NTFS NWSC ODAS OLCA PACE PARC PCAT
PCBS PDVA PHIS PNET PORT PREP PRFC PROM PSRS PY01 REOR SC00 SM00
STEV STMT TOOL TOPS TXAS TPSE UT06 VIEW XCAP XDFF
SELECT ==> _ACAM___________________________ ASW01I-VALID APPLICATIONS LISTED ABOVE
SIGNING ON
CESN or CSSN
SIGNING OFF
CESF LOGOFF or CSSF LOGOFF
EIB
BMS
TCT
PCT
PPT
FCT
TCA
EIB

CSA

EXECUTE INTERFACE BLOCK


BASIC MAP SUPPORT
TERMINAL CONTROL TABLE
PROGRAM CONTROL TABLE contains transid (4 chars) link to program
PROCESSING PROGRAM TABLE (1 8 chars)
FILE CONTROL TABLE holds file descriptions
TASK CONTROL AREA
EXECUTE INTERFACE BLOCK put in linkage contains EIBTIME EIBCALEN
EIBAID etc.
COMMON SYSTEM AREA

CWA COMMON WORK AREA


TCTTE TERMINAL CONTROL TABLE TERMINAL ENTRY
TIOA TERMINAL INPUT OUTPUT AREA where info from terminal is stored
KCP
TASK CONTROL PROGRAM
PCP
PROGRAM CONTROL PROGRAM
ICP
INTERNAL CONTROL PROGRAM
ATI
AUTOMATIC TASK INITIATION
TDQ TRANSIENT DATA QUEUE
NLI
NEXT LOGICAL INSTRUCTION
COMMAREA
- storage used to pass info between programs
MULTITASKING
- processing multiple tasks
MULTITHREADING
- many programs using 1 program
QUASI-REENTRANT - share procedure division but have a unique working storage
EIBCALEN
- length of data in DFHCOMMAREA
EIBAID
- attention identifier
in WS COPY DFHAID
- in PROCEDURE DIV EVALUATE EIBAID
WHEN DFHPF1
WHEN DFHPF2
WHEN DFHCLEAR
WHEN DFHENTER
Etc.
HANDLE CONDITION - overrides abend
RETURN
- returns control to next higher logical level
SEND
- sends info to the screen
RECEIVE
- receives info from terminal TIOA
RESP(STATUS-CODE) - used with RECEIVE instead of HANDLE CONDITOIN to test response code
Of most recent command where
01 STATUS-CODE
PIC
S9(9) COMP.
- then test
STATUS-CODE = DFHRESP(NORMAL)
DFHRESP(EOC) etc.
LINK
- calls a subroutine then returns to the NLI
XCTL
- jumps to a subroutine but does not return
EXEC CICS
END-EXEC

\ precompiler converts to appropriate moves and calls


/

DB2 Chad Watkins


SPUFI
- SQL PROCESSOR USING FILE INPUT
DCLGEN
- creates declare tables for cobol program
Embedded SQL in Cobol program
In WS
INCLUDE SQLCA communications area contains SQLAID SQLSTATE etc.
SQLCODE
= 0 good
= 100 EOF
= pos # exception condition
= neg # errors
call DSNTIAR to get error messages
Table manipulation
DECLARE cursorname CURSOR for SELECT statement
OPEN CURSOR
FETCH CURSOR UNTIL SQLCODE = 100
CLOSE CURSOR
USER --- EXTERNAL --- PROGRAM --- CONCEPTUAL--- DBMS --- INTERNAL --- DATA
SCHEMA
SCHEMA
SCHEMA
A schema is a representation/description of the structure of data
ALTER TABLE tablename ADD COLUMN columnname datatype

used to change table by adding another column

CREATE TABLE tablename COLUMN datatype


- creates a new table
SELECT selectlist FROM tablelist WHERE condition
- selects the columns from the tables under these conditions
Predicate specifies a condition usually in the form
Expression
comparison operator
expression
= < > <= >= <>
ANDs are evaluated before ORs
VIEW - derived table from base tables
BETWEEN .. AND
- for range restriction includes the endpoints
IN
- for set membership
IS NULL
- to test for missing info
LIKE
- for partial matching
_ 1 char
% unknown string
char % ESCAPE char turns off special meaning of % or _ to use as constant instead
ORDER BY
- used to sort ASC or DESC
SELECT DISTINCT
- eliminates duplicates
CAST
- used to convert datatype
COALESCE
- returns the value of the first expression that is not null
SUBSTR
- to chop up expression
- used to concatenate
TRIM
LCASE
UCASE
GROUP BY

- removes leading and trailing blanks


- converts to all lower case
- converts to all upper case
- creates groups of rows internally sorts by columns so that functions can be
Performed on each group
- !!! ALL COLUMNS IN THE SELECT LIST MUST BE LISTED IN THE GROUP BY !!!
HAVING
- qualifies the summarized rows of the GROUP BY
UPDATE tablename SET column = expression used to change values of columns
INSERT
- adds rows to a table
DELETE
- removes rows from a table
CREATE VIEW viewname AS subquery creates a view- subquery can NOT contain ORDER BY
JOIN
- columns of tables are combined horizontally
Table alias = correlation name = range variable - another name of a table defined in the FROM clause
Cartesian Product
= crossjoin= n-way join = exhaustive join
- join each row of 1 table with every row of a second table
Equi-join
- when = is used in predicate
Natural join
- when the projection of the join includes only one of the components of the join
Predicate
Subquery = nested select
- a SELECT statement embedded in the WHERE or HAVING clause of
Another SELECT (the parent statement)
Non-correlated - evaluated once for the parent
Correlated
- evaluated once per row processed by the parent
UNION
- combines the results of tables of several SQL statements into 1 composite
Result table ORDER BY must use an integer
UNION ALL
- includes duplicates
Self join = Reflective join = Recursive join tables that are joined to themselves
ANY/ALL
- used to quantify
EXISTS
- true or false depending on if a row exists for a given predicate
Group Functions

AVG average of a column


SUM sum of a column
MIN minimum of a column
MAX maximum of a column
COUNT() - # of rows returned use * to include nulls

DB2 EFFICIENCY
1. Use UNION ALL instead of just UNION when duplicates are not possible. Using UNION will eliminate duplicates if
any come up from your query, but it needs to perform a sort to do so. Many times duplicates are not possible due to
the nature of the query, so using UNION ALL will be faster, since it does not have the overhead of the extra sort.
2. Use the CASE statement rather than IF THEN ELSE. This is similar to the EVALUATE statement in COBOL.
3. Use keywords LEFT RIGHT or FULL OUTER JOIN rather than UNIONing 2 SELECT statements together to
accomplish outer joins.
4. Use nested table expressions to give you an in-line view to do preliminary filtering when possible.
5. When using multiple predicates (expressions like DEPT = D1) in the WHERE clause, code the 1 that will do the most
filtering (i.e. eliminate the most rows) first.
6. When using an alternate key, include the primary key in the search to keep it index access only. Index access means
DB2 only needs to read the index to get the information it needs. It does not need to actually read the table, so it is
very fast.
7. Any query that can be coded as a join, probably should be.
8. When declaring a CURSOR, ALWAYS declare for UPDATE or FETCH ONLY. Do not leave this ambiguous i.e.
leave it out. When you bind, select CURRENTDATA(NO) and ISOLATION(CS) for cursor stability. This will give you
lock avoidance (DB2 can avoid taking locks or will not hold them as long).
9. Cluster your data (put in physical sequence on disk) by a key other than the primary key. Use one that appears often
in ORDER BY clauses so when DB2 needs to pull up a list of items in order, it does not need to do a sort. The list is
already in physical order on the disk.
10. Process as much as you can in stage 1 using Data Manager. Keep in mind what data manager can NOT do. It can
NOT do the following:
- math
- concatenation
- functions
- column to column comparisons
- literal to literal comparisons
so try to avoid these in your WHERE clause if possible.
Table Space Scan vs. Index Scan
A Table Space Scan is a scan of the entire Table Space. In other words you are doing a sequential search
starting at page 1 and continuing to the last page. An Index Scan uses an index to find the values it needs. If you have to
search a large part of the table, a Table Space Scan is most efficient. If you only need a small part of the table, use the
index.
When you consider I/O read times, using an index at the wrong time can be disastrous. When you do an index
read (i.e. synchronous) it takes 20 milliseconds to read 1 page. When you do a sequential read (i.e. asynchronous) it
takes 64 milliseconds to read 32 pages. If you have 80 byte rows in your table you will be able to read 50 rows per page.
(Each page is 4096 bytes). If you have a million rows in your table, you will need to read 20,000 pages to read the whole
thing. If you are doing a Table Space Scan, you are reading 32 pages every 64 msec or 1 page every 2 msec. To read
20,000 pages, will take 40,000 msec or 40 seconds. If you perform the same search using an index that is not clustered
(in physical sequence on disk), you will need to read a page for every row. Since index reads are synchronous, this will
take 20 msec per read. Multiply that by a million reads is 20,000 seconds, which translates into 5 hours.
The break-even point of what constitutes a large amount of the table and a small amount of the table is 5 %. This
means that if you are accessing more than 5 % of the table you are accessing a large amount of the table and should use
a Table Space Scan.
Tricking Data Manager
Data Manager will choose an access path based on the SQL you write, available indicators and catalog statistics.
Changing any 1 of these may change the access path you get and thus change the time it takes to perform your query.
Most of the time the optimizer will calculate the best way to go. On occasion though, it will not and you will need to
override that path with the one you think is better. Unfortunately there is no way to tell Data Manager to take a specific

path. There are, however, techniques to trick Data Manager into doing what you what. These typically involve putting a
dummy test into your WHERE clause that Data Manager can not handle, thus bumping the query from stage 1 to stage 2.
Examples of this are adding or subtracting 0, multiplying or dividing by 1 or comparing 2 literals such as 0=1. None of
these change the outcome of the query, but can influence the access path that is used. The reason for this is because
Data Manager has limitations. It can not do math, functions, concatenation, column comparisons or literal comparisons.
Therefore, any of these will force the query to move to stage 2, which will change the access path. When you see
something odd, like a column +0 or a test of 0 <> 0 DO NOT REMOVE IT BECAUSE IT LOOKS LIKE IT IS NOT DOING
ANYTHING. It is affecting the access path and removing it may make your query run in hours as opposed to milliseconds.
Endevor Chad Watkins
GETING INTO ENDVEOR
ISPF PRIMARY OPTION MENU
VENDOR SUPPLIED SOFTWARE
3 ENVIRONMENTS
DEV
/ \
DEV1
DEV2
1
2

TEST
/ \
TEST UAT
T
U

V
EN

VENDOR
ENDEVOR

PROD
/ \
QF
PROD
F
P

stages

8 STEPS FOR UPDATING CODE


1. RETRIEVE the program from production
2. Make changes
3. ADD to TEST
4. Testing
5. BUILD the package
6. CAST the package
7. Package approval
8. PAS group MOVES package to UAT and eventually to PROD
ADDING TO TEST
ENDEVOR/MVS ENVIRONMENT SELECTION 2
TEST
ENDEVOR 3.7.2 PRIMARY OPTIONS MENU
3
BATCH
(can use 2 FOREGROUND except for programs)
Batch Options Menu Put a 1 in the option, a name for the SCL next to member and a job card next to job information.
For JCL the type has to be TEMPJCL and for PROCS the type has to be TEMPPROC. Hitting enter will bring
you to the SCL panel.
BATCHBATCHOPTIONSMENU
OPTION===>1

1BUILDSCLBuildbatchSCLactions
2EDITEditrequestdataset
3SUBMITSubmitjobforbatchprocessing
4VALIDATECheckrequestdatasetforsyntaxerrors
5BUILDJCLEnteradditionalJCLtobeincludedwiththejob

REQUESTDATASET:
PROJECT===>CNSCWATAPPEND===>N(Y/N)
GROUP===>TESTINCLUDEJCL===>N(Y/N)
TYPE===>COBBAT
MEMBER===>SCLNAME<<<THISFIELDISFORSCLONLY

OTHERPARTITIONEDORSEQUENTIALDATASET:
DSNAME===>
JOB STATEMENT INFORMATION:
===> //CNSCWATC JOB (2121400),,MSGCLASS=X,NOTIFY=CNSCWAT,CLASS=E
===>

On the SCL panel choose option 2


SCLGENERATION
OPTION===>2

1DISPLAYDisplayanelement
2ADD/UPDATEAddorupdateanelementintostage1
3RETRIEVERetrieveorcopyanelement
4GENERATEExecutetheGenerateProcessorforthiselement
5MOVEMoveanelementtothenextinventorylocation
6DELETEDeleteanelement
7PRINTELEMENTPrintelements,changesanddetailchangehistory
8SIGNINExplicitlysigninanelement
9TRANSFERTransferelementsbetweentwoENDEVORlocations
10PRINTMEMBERPrintacompressedlistingormember
11LISTELEMENTCreateListactionsforENDEVORelements
12LISTMEMBERCreateListactionsforexternalmembers
13ARCHIVEArchiveelements

REQUESTDATASET:CNSCWAT.TEST.COBBAT(SCLNAME)
APPEND:N
Make sure all the information is correct then back out to the Batch Options Menu.
BATCH OPTIONS MENU
3
SUBMIT

BUILDING A PACKAGE
ENDEVOR 3.7.2 PRIMARY OPTIONS MENU
5
PACKAGE FOREGROUND OPTIONS MENU
2
Enter a package ID
CREATE MENU
OPTION
B to build the package. Must also enter a comment.
CASTING A PACKAGE
PACKAGE OPTION MENU
3
CAST PACKAGE MENU Choose option C to cast package.

PACKAGE
CREATE

CAST

CHECKING IF A PROGRAM IS ALREADY SIGNED OUT


ENDEVOR 3.7.2 PRIMARY OPTIONS MENU
1
DISPLAY
DISPLAY OPTIONS MENU
1
ELEMENT
Then enter the program you want and hit enter.
FROMENDEVOR:LISTOPTIONS:
ENVIRONMENT===>TESTDISPLAYLIST===>Y(Y/N)
SYSTEM===>WHERECCIDEQ===>
SUBSYSTEM===>WHEREPROCGRPEQ===>
ELEMENT===>programDISPLAYSYS/SBSLIST===>N(Y/N)
TYPE===>COB*BUILDUSINGMAP===>N(Y/N)
STAGE===>TTTESTUUAT
Then next to the program name put an M and hit enter.
ELEMENT TYPE ENVIRON S SYSTEM SUBSYSTEM VV.LL CURRENT GENERATE
M program COBONLDB TEST
T CSQ
VIEW
01.09 11APR00 11APR00
This will give you the ELEMENT MASTER screen. On it the username of the person who has it singed out will be shown.
------------------------------- ELEMENT MASTER -------------------------------COMMAND ===>
(PANEL 1 OF 2)
ELEMENT: BKX3700P ENV: TEST

SYS: CSQ

SUB: VIEW

TYPE: COBONLDB

PROC GRP: CIIDCP01 STG: T


VV.LL: 01.09
LAST ACTION: ADD
DESCRIPTION: PACKAGE TEST
SIGNOUT ID: CNSCWAT
PKG ID (SOURCE):
PKG ID (OUTPUT):
--------------------------- LAST ELEMENT ACTION ----------------------------USERID: TSO2100 DATE/TIME: 11APR00 07:52
CCID: TSO2100
COMMENT: BOND EXCHANGE
ACTION: ADD
NDVR RC: 0004
PROCESSOR: GCIIDCP2 (GEN)
PROC RC: 0008
------------------------------ CURRENT SOURCE ------------------------------USERID: TSO2100 DATE/TIME: 11APR00 07:52
CCID: TSO2100
COMMENT: BOND EXCHANGE
DELTA FMT: F
ADD/UPDATE FROM DSN: TSO2100.SOURCE.SUBSCRIB(BKX3700P)
--------------------------------- GENERATE ---------------------------------USERID: TSO2100 DATE/TIME: 11APR00 07:52
CCID: TSO2100
COMMENT: BOND EXCHANGE
COMPONENT LIST VV.LL: 01.00
DELTA FMT: F
. . . . . . . . . . . . . . . . . . . . . . . . . . .

DISPLAYING UNEXPANDED CODE


ENDEVOR/MVS ENVIRONMENT SELECTION 2
TEST
ENDEVOR 3.7.2 PRIMARY OPTIONS MENU 1
DISPLAY
DISPLAY OPTOINS MENU
1
ELEMENT
(short cut V;EN;2;1;1)
DISPLAY ELEMETS/COMPONENTS LIST
ENVIRONMENT
TEST
PROD
SYSTEM
CSQ
SUBSYSTEM
VIEW
ELEMENT
progname
TYPE
COB COBONL COBONLDB COBBAT CNTLCARD
COPYBOOK MAP PROC DB2UTIL
STAGE
T
P
(B in left column to Browse)
DISPLAYING EXPANDED CODE
ENDEVOR/MVS ENVIRONMENT SELECTION
ENDEVOR 3.7.2 PRIMARY OPTIONS MENU
DISPLAY OPTOINS MENU
ENDEVORFOOTPRINTDISPLAY
OPTION
L
PROJECT
ENDEVOR
LIBRARY
PROD.NC
TYPE
LIST
MEMBER
progname

2
1
2

TEST
DISPLAY
FOOTPRINT

FINDING THE SYSTEM AND SUBSYSTEM WHEN ALL YOU KNOW IS THE PROGRAM NAME IN PRODUCTION
ENDEVOR/MVS ENVIRONMENT SELECTION
3
PROD
ENDEVOR 3.7.2 PRIMARY OPTIONS MENU
1
DISPLAY
DISPLAY OPTOINS MENU
1
ELEMENT
Leave the option blank, make the Environment PROD and the stage P and make the Display sys/sbs list N. Put the
program name in element and hit enter.
FROMENDEVOR:
LISTOPTIONS:
ENVIRONMENT===>PROD
DISPLAYLIST===>Y(Y/N)
SYSTEM===>WHERECCIDEQ===>
SUBSYSTEM===>WHEREPROCGRPEQ===>
ELEMENT===>prognameDISPLAYSYS/SBSLIST===>N(Y/N)
TYPE===>BUILDUSINGMAP===>N(Y/N)
STAGE===>PFQFPPROD

This will display the program and its systems, etc.


ELEMENTTYPEENVIRONSSYSTEMSUBSYSTEMVV.LLCURRENTGENERATE
BKX5100PCOBONLPRODPCSQVIEW01.0713SEP9923SEP99
MOVING A PACKAGE
After building the package, hitting enter will bring you to the SCL GENERATION panel. Choose option 5 to MOVE.
MOVE ELEMENTS MENU
enter a valid CCID and comment. Back out to the Package Option Menu. For JCL the
type must be JCL and for PROCS the type must be PROC.
RETRIEVING SOURCE CODE
ENDEVOR/MVS ENVIRONMENT SELECTION 3
PROD
ENDEVOR 3.7.2 PRIMARY OPTIONS MENU
2
FOREGROUND
FOREGRROUND OPITONS MENU
3
RETRIEVE
Put an R in the option, a valid ID in the CCID, a Y in signout element and a meaningful comment in the comment field.
The CCID has the following format:
Char position
meaning
1.4
department
5.6
initials
6
version
7
last digit of the year
8.9
month
10-11
day

RETRIEVEELEMENTS
OPTION===>R
ELEMENTDISPLAYOPTIONS:
blankElementlistSSummaryBBrowseHHistory
RRetrieveelementMMasterCChanges

FROMENDEVOR:
ACTIONOPTIONS:
ENVIRONMENT===>PROD
CCID===>REJACW100411
SYSTEM===>CTS EXPANDINCLUDES===>N(Y/N)
SUBSYSTEM===>PASSIGNOUTELEMENT===>Y(Y/N)
ELEMENT===>PROGNAME
OVERRIDESIGNOUT===>N(Y/N)
TYPE===>COBBATREPLACEMEMBER===>N(Y/N)
STAGE===>TFQFPPROD
COMMENT===>addedspacefordecimalization

TOISPFLIBRARY:LISTOPTIONS:
PROJECT===>CNSCWATDISPLAYLIST===>Y(Y/N)
LIBRARY===>TESTWHERECCIDEQ===>
TYPE===>COBBATWHEREPROCGRPEQ===>
MEMBER===>NEWPROGBUILDUSINGMAP===>N(Y/N)
FIRSTFOUND===>Y(Y/N)
TOOTHERPARTITIONEDORSEQUENTIALDATASET:
INTERTEST Chad Watkins
CANCELING ALL BREAKPOINTS
After getting out of INTERTEST, clear the screen with the pause key and type CNTL=OFF,PROG=progname and hit enter.
E.g. CNTL=OFF,PROG=bkx3700p
This is important to do when you are done. Otherwise anyone else who runs that program in TEST will hit your
breakpoints and will not be able to turn them off.
GETTING INTO INTERTEST
Log on to CICS as usual (CICSDEV, USERNAME, PASSWORD).
Clear the screen by hitting the pause key as many times as necessary. Then type:
CRTE SYSID=region name
(i.e. crte sysid=tsdb for statements)
And hit return.
Clear the screen with the pause key and sign on again by typing
CESN and hitting return.
After logging on, clear the screen with the pause key and type LIST and hit enter. This will bring you to the INTERTEST
screen. Type the name of the program you want to test and hit enter. Set a breakpoint in the procedure division by
putting a U to the left of the line you want to break at. Hit the PF3 key to get out of INTERTEST. Then run the program by
typing the transid in the upper left hand corner or by the menu option. When the program gets to the point where you set
the breakpoint, INTERTEST will come back up where you can go through the code step by step.
If program symbolic is not available, the program has not been compiled recently. Compile the program in Endevor and
start over. If this is a new program, type CNTL=NEW,PROG=progname and hit enter. Then type CANCEL and hit enter.
GETTING INTO INTERTEST HELP ONLY
Type ITST after hitting CLEAR (pause/break key) to get into the upper left hand corner. This will give you access to
Intertest but will not work other than allowing you to read help. Instead do the following:

INTERTEST COMMANDS AND PFKEYS


COLUMN 1
MEANING
U
UNCONDITIONAL BREAKPOINT
C
CONDITIONAL BREAKPOINT
V
VARIABLE BREAKPOINT
X
REMOVE BREAKPOINT OR REMOVE KEEP
D
DISPLAY THE VALUE OF A DATA ITEM
K
KEEP DISPLAY OF THE VALUE OF A DATA ITEM
PFKEY @BREAKPOINT
CLEAR goes to current breakpoint
PF1
PF3
PF4
PF5
PF6
PF7
PF8
PF10
PF11
PF12

NOT @ BREAKPOINT
ends session

help
displays detailed breakpoint screen
list profile
resume execution
breakpoint menu
backward
forward
step through
backtrace
statustree

ends session
set monitoring on
primary menu

USING INTERTEST WITH TOPS PROGRAMS CALLED FROM BROKERVIEW:


You are going to need 2 sessions. On the first session set your breakpoints as usual. Enter CICS with CICSDEV. Logon.
Route control to region DA61 with the command CRTE SYSID=DA61. Logon again with CESN. Go into Intertest with
LIST. Choose program TOPBR23. Press the PF4 key and enter .ANY in the from termid space. Then set breakpoints
and PF3 out to T.O.R (Terminal Only Response i.e. the first screen).
On the second session, go into CICS with CICSDEV and logon as a different user. Run VIEW. Choose ORS as
the dash. This screen will freeze until you step through the program on the other screen. Go to the first session and step
through program. Return to second screen to advance screen with PF7, PF8 or go into the detail screen.
JCL HINTS Chad Watkins
IGYCRCTL COBOL II COMPILER
SYSIN FILE TO COMPILE
SYSPRINT
- LISTING
SYSLIN- OBJECT MODULE
IEWL LINKAGE EDITOR
SYSLIN
- OBJECT MODULE
SYSPRINT
- ERROR OUTPUT
SYSLMOD
- LOAD MODULE must be a PDS
COB2UCLG already written compile link and go
SYS1.LINKLIB default system library
IEFBR14 null program
PROC cataloged procedure can NOT contain JOB or JOBLIB statements
&& - Temporary dataset equivalent to eliminating DSN parameter
DISP = (status, normal-disp, abnormal-disp)
Defaults New delete
delete
Old
keep
keep
Mod
pass
catlg
Shr
catlg
uncatlg
uncatlg
Continuing lines make sure of last comma

e.g. //firstline

parameter1,
parameter2
start in column 4 to 16 (exactly 16 is splitting phrase in quotes)

//* comment or JES2 statement


/* end of job or end of instream data
INSTREAM DATA //ddname DD * or //ddname DD DATA (allows //)
Not allowed in PROCs
Lines of data
/* to end data
SYSIN is the default ddname
SYSOUT routes output to a printer
//ddname DD SYSOUT = class
* - look at MSGCLASS in JOB statement
OUTPUT statement placed right after JOB statement but before 1 st EXEC statement sets all parameters for all
following SYSOUT DD statements
e.g. //forms OUTPUT defalut=yes, burst=y, copies=2, etc
Date manipulation program Chad Watkins
If you ever need to manipulate date fields, Julian to Gregorian, etc. use PROD.CPS.DATE.CALBATII. It will do
just about everything you can imagine. For example, I am doing a report program that needs to calculate
a date that is 3 business days back from today's date. It sounds simple at first, but when you need to
consider weekends, holidays, change of month, change of year, etc. it gets to be a little much. I was glad
to find someone had already done this. So don't knock yourself out reinventing the wheel. Pass this
program a couple of parameters and your job is done.

Reference modification for subscripted variable Chad Watkins


Reference modification is taking part of a variable like WS-NAME(1:5) to get the first 5 characters of a name. Subscripted
variables are COBOL tables that are defined in working storage with the OCCURS clause (e.g. WS-NAME(6) is the sixth
name in the table). If you want to use both, ALWAYS put the subscript first then the reference modification (e.g. WSNAME(6)(1:5) will give you the first 5 characters of the sixth element of the table). More than likely the subscript will also
be a variable, so it would probably look more like WS-NAME(WS-SUB)(1:5) where WS-SUB has a value of 6.
Tagging Chad Watkins
You all know that paragraphs start in column 8 and an * in column 7 makes a comment, but you can also
use the first 6 columns for "tagging". All that means is that you can put any 6 characters in there for
future reference. A common convention is to put in your 2 initials with the month and 2 digit year, E.g.
CW0600. You should still put in a comment with detail and then tag the comment and any lines that you
have changed.
E.g.
CW0600* 06/28/00 Chad Watkins changed price field from 3 to 4 decimal places
01 CUSTOMER INFO.
05 CUSTOMER-NAME
PIC X(20).
05 CUSTOMER-ADRESS
PIC X(30).
CW0600
05 EXECUTION-PRICE
PIC 9(7)V9(4).
In the future, whenever you need to know where you made changes, just do a find on your initials and you
will see exactly where your changes were made.
Compile and Link Jolle Bochner
Go to V.5 SCALES.
Type 3T for testing of your Cobol II sourcecode.
Complete the highlighted items below
BATCHCOBOLIICOMPILERandLINKEDITTESTMODE
COMMAND===>
PROJECT===>CNSJBOC|OtherpartitionedorsequentialDataSet:
GROUP===>ACAM|(Note:SpecifymembernameinparenthesisifPDS)
TYPE===>SOURCE|
MEMBER===>ACM5002|DATASETNAME===>

.
Programname==>(Ifsequentialfileusedorifmember=progname)|
Quickcompile(YesNo)==>YES(YesbypassesREBLOCKandCOMPLINKsteps)|
TolinktoPDSotherthanTEST1.LINKLIB==>|
'
COMPILEROVERTYPEANYFIELDLINKAGEEDITOR
TypeDYNAMorNODYNAM===>DYNAM|AMODE/RMODE==>31ANY(3124,31ANY)
TypeADVorNOADV===>ADV|31ANYCOBOLIIcallingonlyCOBOLII
Expedite(Y/N)===>N|3124COBOLIIcallingCOBOLI
Optionsotherthanthoseabove:|Optionsotherthanabove:
=>|=>
CopyBookLibraries:(noquotes)|CallModuleLibraries:(noquotes)
=>|=>
Check SDSF ST for your results.

SDF Chad Watkins


GETTING INTO SDF
Go into CICSDEV and sign on as usual. Then clear the screen with the pause key, type SDF and hit enter. Then log onto SDF with
your TSO ID password TSO ID last 4 characters. You will then be presented with the initial selection screen.
INITIALSELECTION

OPTION==>1MAPEDITOR
2MAPSETEDITOR
3LIBRARYMANAGEMENT
4CICS/VSBMSGENERATOR
5PAGEEDITOR
6PRINTANDUNLOADUTILITIES
7PROFILEEDITOR
8USERENVIRONMENTEDITOR
9DEMOSESSIONEDITOR
10PARTITIONSETEDITOR
11TUTORIAL
12NEWS

USEENDKEY(PF03)TOTERMINATE
EDITING A MAP
Choose option 1 MAP EDITOR. You will be presented with the map identification screen. Enter the map set, map name and device
type and hit enter.
1MAPIDENTIFICATION

ENTERMAPTOBEEDITED
MAPSET==>TSTMAPS
MAP==>TSTMAPMPASSWORD==>

ENTERDEVICETYPEIFREQUIRED
DEVICE==>3270

ENTERMAPTOBEUSEDASBASISFORNEWMAP(SKELETONMAP)
MAPSET==>
MAP==>

USEENDKEY(PF03)TOTERMINATE
You will then be presented with the map editor step selection screen. If you choose option 1, SDF will take you through all the
functions step by step. When you hit PF3, you will be taken to the next step. Otherwise, you may go to whatever step you want by
typing a # from 2 to 8 and hit enter. While in any of the following sections, you can move to another section by typing the number in
the command line and hitting enter.
1MAPEDITORSTEPSELECTIONTSTMAPSTSTMAPM3270

OPTION==>1ALLFUNCTIONS
2MAPCHARACTERISTICS
3FIELDDEFINITION
4FIELDATTRIBUTEDEFINITION
5FIELDINITIALIZATION
6APPLICATIONSTRUCTURESPECIFICATION
7APPLICATIONSTRUCTUREREVIEW
8TEST

USEENDKEY(PF03)TOFILEANDEXIT

1 ALL FUNCTIONS. This option will allow you to set the size of the map and various characteristics.
1.2MAPCHARACTERISTICSTSTMAPSTSTMAPM3270

MAPSIZE:DEPTH==>020WIDTH==>080

POSITION:LINE==>NEXT COLUMN==>SAME
JUSTIFY:LINE==> COLUMN==>LEFT

STRUCTUREFORMAT=FIELD
I/OAREAPREFIX==>YES

MAPATTRIBUTE==> OUTBOARDFORMAT=***

FREEKEYBOARD==>YES ALARM==>NO
RESETMDT==>NO
PRINTWIDTH==>EOM STARTPRINTER==>NO

AUTOMATICNAMING==>YES
NAMEPREFIX==>MAP
GENERATIONSEQ.==>001 FIELDSEPARATOR==>
LVLNUMBERSTART==>01 LVLNUMBERINCR.==>05

PARTITIONNAME==> ACTIVEPARTITION==>NO

DSECTATTRIBUTES==>
Hit the PF3 key and you will go to the next screen, which is the field definition screen. This is where you will design your map. Line
4 tells you what your field markers are. C stands for constant, so is the field marker for constants (i.e. put a on the line and
everything to the right of it is the constant field. V stands for variable so denotes a variable field. Put a on the line followed by a ,
and a number. This will create a variable field with a length of number. G and S are for group and spacer fields respectively.
1.3FIELDDEFINITIONTSTMAPSTSTMAPM3270

==>
LINES119C()V()G({)S(/)COLS175
+1+2+3+4+5+6+7+
1
2
3

20
EDITING
Use / to center text. For example / SAMPLE TEXT/ will place SAMPLE TEXT in the center of the screen.
COPYING LINES
FROM place the cursor on the line to copy and hit enter.
COPY place the cursor on the line before the line where you want the copied line to show (like copy after).
MOVING LINES
FROM place the cursor on the line to move and hit enter.
COPY place the cursor on the line before the line where you want the moved line to show (like move after).
INSERTING LINES
INPUT # place the cursor on the line before the line where you want the line to appear (like insert after). It will insert # lines.
DELETING LINES
DELETE place the cursor on the line you want to delete
REPEATING LINES
REPEAT # - place the cursor on the line you want to repeat. It will repeat # lines.

TESTING THE MAP


TEST will show the map
ARRAYS OF STRUCTURES
REPEAT # STRUCTURE place the cursor on the base line and hit enter. # will be the number of elements in the array.
SETTING ATTRIBUTES Advance to the field attribute definition screen by hitting PF3. The field markers will be highlighted. You
can tab from one to another.
1.4FIELDATTRIBUTEDEFINITIONTSTMAPSTSTMAPM3270

==>
LINES119#COLS175
+1+2+3+4+5+6+7+
1
2

20
To see what the current attributes for the field is, place the cursor on the field and type ATTR on the command line. You will
receive something like the following on the command line:
ATTR UNP BRI LE PAD B
In this case the field is unprotected bright left justified and padded with blanks. The following table shows all the attribute options:
UPROTECTED DARK LEFT
PAD ZERO REVERSE VIDEO BLUE
PROTECTED BRIGHT RIGHT
PAD BLANK UNDERSCORE
RED
AUTOSKIP
NORMAL (justified)
BLINKING
GREEN
TURQUOISE
MAGENTA
YELLOW
WHITE
CURSOR will place the cursor on this field when the map is first called
INITIALIZING FIELDS
Use the field initialization screen
1.5FIELDINITIALIZATIONTSTMAPSTSTMAPM3270

==>
LINES119COLS175
+1+2+3+4+5+6+7+
1
2

20
NAMING FIELDS
Use the full screen naming screen.
1.6FULLSCREENNAMINGTSTMAPSTSTMAPM3270

==>
NAMEINDNAMEINDNAMEIND
123
456
789
LINES115PREFIX=MAPCOLS175
+1+2+3+4+5+6+7+
1
2

20

MAP MANIPULATION
From the initial selection menu choose option 3 LIBRARY MANAGEMENT and then option 1 DIRECTORY LIST. Type over
the asterisks under GROUP at least part of the map set name and hit enter. This will list all the maps under that map set (and all map
sets that qualify). From here you can copy, delete, edit, rename, unload, generate, print or test any map by placing the corresponding
letter in the ENTER OPT column next to map you want to manipulate.
COPYING MAP SETS
Put a C next to the map set you want to copy. Put the new map set name under new group/device and hit enter.
3.1DIRECTORYLISTW=AR=
DVD3195I4OBJECT(S)WITHMATCHINGKEYFOUNDONR/WMSL,0ONROMSL
==>
ENTER:CCOPYRRENAMEGGENERATEEEDIT
DDELETEUUNLOADPPRINTTTEST

ENTERGROUPMEMBERTYPEMODIFICATIONNEWGROUPNEWNEWSTAT
OPTTSTM*************/MSLDATETIMEPWD/DEVICEMEMBER
PWD

CTSTMAPSMSET/W00/07/2418:03NEWMAP
<==
TSTMAPSNEWMAPMAP/W00/07/2516:33
TSTMAPSSCREEN1MAP/W00/07/2514:50
TSTMAPSTSTMAPMMAP/W00/07/2513:51

COPYING MAPS
Put a C next to the map you want to copy. Put the new map name under new member, an = under new group/device and hit enter.
3.1DIRECTORYLISTW=AR=
DVD3195I4OBJECT(S)WITHMATCHINGKEYFOUNDONR/WMSL,0ONROMSL
==>
ENTER:CCOPYRRENAMEGGENERATEEEDIT
DDELETEUUNLOADPPRINTTTEST

ENTERGROUPMEMBERTYPEMODIFICATIONNEWGROUPNEWNEWSTAT
OPTTSTM*************/MSLDATETIMEPWD/DEVICEMEMBER
PWD

CTSTMAPSMSET/W00/07/2418:03
=
NEWMEM

<==
TSTMAPSNEWMAPMAP/W00/07/2516:33
TSTMAPSSCREEN1MAP/W00/07/2514:50
TSTMAPSTSTMAPMMAP/W00/07/2513:51
COPYING MAP SETS AND THEIR CONTAINING MAPS
Put a C* next to the map set you want to copy. Put the new map set name under new group/device and an = under new member and
hit enter.
3.1DIRECTORYLISTW=AR=
DVD3195I4OBJECT(S)WITHMATCHINGKEYFOUNDONR/WMSL,0ONROMSL
==>
ENTER:CCOPYRRENAMEGGENERATEEEDIT
DDELETEUUNLOADPPRINTTTEST

ENTERGROUPMEMBERTYPEMODIFICATIONNEWGROUPNEWNEWSTAT
OPTTSTM*************/MSLDATETIMEPWD/DEVICEMEMBER
PWD


C*TSTMAPSMSET/W00/07/2418:03
NEWSET
=<==
TSTMAPSNEWMAPMAP/W00/07/2516:33
TSTMAPSSCREEN1MAP/W00/07/2514:50
TSTMAPSTSTMAPMMAP/W00/07/2513:51
REFRESHING THE SCREEN
After performing a copy, to refresh the screen you need to overtype at least 1 character previously typed in the asterisk field and hit
enter. You should now see your new map set (and/or maps).
RENAMING MAP SETS AND MAPS
Renaming map sets and maps are similar to copying above except that you can not rename across map set boundaries. Maps must
remain in their original map set. You can copy the entire map set with maps first, if you need to. To rename a map set that contains
maps, use R*.
DELETING MAP SETS AND MAPS
Deleting map sets and maps is similar to copying above. Remember to delete maps first, then the map set or use D* to delete a map
set and all its maps.
CHANGING PASSWORDS FOR MAP SETS AND MAPS
Use rename with an = in both the new group/device and new member columns and enter the old and new password under the old and
new pwd column.
3.1DIRECTORYLISTW=AR=
DVD3195I4OBJECT(S)WITHMATCHINGKEYFOUNDONR/WMSL,0ONROMSL
==>
ENTER:CCOPYRRENAMEGGENERATEEEDIT
DDELETEUUNLOADPPRINTTTEST

ENTERGROUPMEMBERTYPEMODIFICATIONNEWGROUPNEWNEWSTAT
OPTTSTM*************/MSLDATETIMEPWD/DEVICEMEMBER
PWD

RTSTMAPSMSET/W00/07/2418:03 OLDPSWRD=
=NEWPSWRD<==
TSTMAPSNEWMAPMAP/W00/07/2516:33
TSTMAPSSCREEN1MAP/W00/07/2514:50
TSTMAPSTSTMAPMMAP/W00/07/2513:51
COBOL tips Chad Watkins
GENERATING THE MAP SETS
Maps need to be generate before they can be used. Simply put a G next to the map set name and hit enter. An arrow to
the right of the map set indicates it has not been generated yet.
DIVISIONS
IDENTIFICATION DIVISION.
PROGRAM ID. PROGRAMNAME.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
SELECT FILENAME-IN-PROG ASSIGN FILENAME-IN-DD-OF-JCL
FILE-CONTROL SECTION.
FD FILENAME-IN-PROG.
01 FILENAME-IN-PROG-REC-FD
PIC X(#).
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
PROCEDURE DIVISION.

Every SELECT has an FD and every FD has an 01.


READ a file, WRITE a record
Carriage Control Characters (CCC)
1 = page
= single space
0 = double space
- = triple space
Picture Clause
X alphanumeric
9 numeric
V implied decimal point
. decimal point
Z zero suppression
$ floating dollar sign
(always add an extra one to keep from truncating left most digit)
* pad with asterisks
CR print when negative
DB print when negative
+ + if non-negative, - if negative
- blank if non-negative, - if negative
S signed
Read Modes
Locate Mode READ FILENAME-IN-PROG (read only into buffer)
Move Mode - READ FILENAME-IN-PROG INTO WS-REC
(read also into working storage, will be seen on dump)
WRITE FILENAME-IN-PROG-REC-FD FROM WS-REC
(01 under the FD)
any uninitialized field will start with low values
3 Number Types in IBM Cobol
Format E.g.
Signed
Display (default)
USAGE IS DISPLAY F#F#F# F0F0F0 F0F0C1 (pos)
F0F0D1 (neg)
Packed Decimal
USAGE IS COMP-3 ###S
000F
001C (pos)
001D (neg)
Binary Fixed Point
USAGE IS COMP
HHHH 0000
3 types of COMP Data
1- Half word
2 bytes Always use PIC S9(4)
0000 = 0
7FFF = 32,767
FFFF = -1
80000 = -32,768
2- Full word
4 bytes Always use PIC S9(9)
00000000 = 0
7FFFFFFF = 2 Gigabytes
FFFFFFFF = -1
800000000 = - 2 Gigabytes +1
3- Double word 8 bytes
Maximum Efficiency in calculation fields
1- Always use sign S
2- Always use USAGE IS COMP-3
3- Always use odd # of 9s

Condition Names
88 level of a working storage field that contains a predefined value(s)
E.g.
05 WS-EOF-SW
PIC X.
88 WS-NO-MORE-RECORDS VALUE Y.
Reference Modification
FIELDNAME(start-byte-number:length)
Tables
Define with OCCURS clause in working storage. OCCURS can not be an 01 level. The sub level is what you reference.
Also define a numeric subscript without a decimal point that is signed, an odd # of 9s and COMP-3 or COMP.
E.g.
01 WS-ACCUM-TABLE.
05 WS-ACCUM PIC S9(9)V99 COMP-3 OCCURS 10 TIMES.
01 WS-SUBSCRIPTS.
05 WS-SUB PIC S999 COMP-3.
Indexed Tables
Include an INDEXED BY clause on the OCCURS line. Set values of index with the SET command.
E.g.
WORKING STORAGE.
01 WS-ACCUM-TABLE.
05 WS-ACCUM PIC S9(9)V99 COMP-3 OCCURS 10 TIMES
INDEXED BY WS-ACCUM-IDX
PROCEDURE DIVISION.
SET WS-ACCUM-IDX TO 1.
(COBOL will assign a value of PIC S9(9) COMP-3 to WS-ACCUM-IDX)
Multiple Level Tables
Add a nested OCCURS clause for each extra level you need.
E.g. A company has 100 departments and each department has up to 1000 employees.
01 WS-COMPANY-TABLE.
05 WS-DEPT OCCURS 100 TIMES.
10 WS-EMP OCCURS 1000 TIMES.
15 WS-FIRST-NAME PIC X(10).
15 WS-LAST-NAME
PIC X(20).
Index vs. Subscript
An index is a distance to a logical area from the start of the table. I.e. it is a displacement. They need to be SET to, up or
down. They are not as flexible as subscripts because you can not mix indexes with other tables. You can set 1 index to
another index. You move values to subscripts with the MOVE command and you can add and subtract from them. You
can also use the same subscript in different tables.
Search vs. Perform Varying
Use SEARCH when you expect only 1 hit in the table. Use PERFORM VARYING when you expect multiple hits in the
table.
Search vs. Search All
Set the index for SEARCH but not for SEARCH ALL. SEARCH ALL needs an ASCENDING KEY IS FIELDNAME in the
OCCURS line where FIELDNAME is part of the table description. Search all performs a binary search so it is faster when
the table has more than 700 items in it. The reason for this is because each time the system needs to calculate the
midpoint, it executes about 50 assembler instructions. Each time it needs to check 1 item in a serial search it executes 1
assembler IF instruction.
E.g. 1 - 100 items in table
Serial search performs 100 assembler instructions (1 for each IF)
Binary performs 7 midpoints times 50 instructions = 350 instructions
Therefore serial is faster.
E.g. 2 - 700 items in table
Serial search performs 700 assembler instructions (1 for each IF)
Binary performs 10 midpoints times 50 instructions = 500 instructions
Since some of the midpointing instructions take longer than an IF instruction, this takes about the same amount
of time either way.
E.g. 3 - 2000 items in table
Serial search performs 2000 assembler instructions (1 for each IF)

Binary performs 11 midpoints times 50 instructions = 550 instructions


Therefore binary is faster.
Calling other Programs USING vs. EXTERNAL
USING: When calling another program, call it by the PROGRAM-ID name. Called programs need to end with
GOBACK not STOP RUN. Use the USING command to pass parameters from one program to another. The calling
(driver) program defines these variables in working storage and uses them in the CALL statement. The called (target)
program defines these variables in the linkage section as 01 level items and uses them in the PROCEDURE DIVISION
line. The order of these variables in the linkage section does not matter but the order on the procedure line will match up
to the order in the call statement of the driver program.
EXTERNAL: COBOL II allows you to use EXTERNAL variables. Simply use the word EXTERNAL after the
picture clause in working storage. This eliminates the need for the linkage section and the USING command, but the
external variables must be identical in the working storage sections of both the driver and target programs, must be 01
level items, can not contain value clauses and may be a group item.
Static vs. Dynamic calls
Static calls are when the 2 program objects are linked together by the linkage editor. 1 load module is created and stored
in the load library. Only 1 fetch is needed to bring the module into main memory. Dynamic calls are when the 2 program
objects are linked separately and a load module is created for each. Therefore the load library will contain 2 separate load
modules and will need to do 2 fetches to bring them into main memory. This will take longer but will be easier to maintain.
If you change 1 program, you will only need to recompile and link that program. With static calls you will need to
recompile all programs that make up that load module, even if only one of them has changed.
Copy Code
Use the COPY command to copy code into your program.
E.g. COPY MEMBERNAME.
COBOL assumes MEMBERNAME to be in SYSLIB which is defined in the JCL that runs the program.
E.g. //SYSLIB DD
DSN=ID.GROUP.TYPE.MEMBER,DISP=SHR
If you dont want this default, code the following in your COBOL program:
COPY MEMBERNAME OF THISLIB.
And then add a DD statement in your JCL that defines THISLIB.
PARM
Bring parameters into your program from JCL with PARM. On the EXEC statement simply include a PARM = whatever
phrase
E.g. //EXEC
PGM=PROGNAME PARM=INFO TO USE IN PROGRAM
You will need to define a length field and a data field in the linkage section and include the group name of these fields in
USING clause of the PROCEDURE DIVISION line.
E.g.
LINKAGE SECTION.
01 PARM-STUFF
05 PARM-LENGTH
PIC S9(4).
05 PARM-DATA
PIC X(23).
PROCEDURE DIVISION USING PARM-STUFF.
MOVE PARM-DATA(1:PARM-LENGTH) TO WS-FIELD.
VSAM
Define the type of VSAM file in the SELECT statement with the ORGANIZATION IS clause, the RECORD KEY IS clause
and the FILE STATUS clause. This record key needs to be defined in the 01 under the FD. Define the status field in
working storage. Test this status field in the procedure division for a value of 00.
E.g.
SELECT MASTERFILE ASSIGN TO DDNAME
ORGANIZATION IS
INDEXED
(ksds)
\
SEQUENTIAL(esds)
> pick one
RELATIVE
(rrds)
/
ACCESS IS
SEQUENTIAL
\
RANDOM
> pick one
DYNAMIC
/
RECORD KEY IS MASTER-KEY
FILE STATUS IS VSAM-STAT.
FD MASTERFILE.

01 M-REC-FD.
05 M-INFO
05 MASTER-KEY
05 M-OTHER-INFO
WORKING STORAGE.
01 WS-STATUS-FIELDS.
05 VSAM-STAT

PIC X(49).
PIC X(6).
PIC X(25).

PIC XX.

PROCEDURE DIVISION.
IF VSAM-STAT = 00
STATUS CODES
00
Good
10
End of File
21
Out of Sequence
22
Duplicate Record
23
Record Not Found
97
Do not use AT END with sequential READ in a VSAM file. Check for a status code of 10.
Use START to read sequentially from a specific record.
E.g. START MASTERFILE KEY NOT LESS THAN whatever
Updating VSAM files
Open the file I/O and REWRITE
CICS/QAP - Cindy Rothseid
QAP Login Instructions
Currently there are two login commands available to access QAP, the correspondent end-to-end
environment: CICSQAP or CICSUAT. (QAP is the old Y2K(UAT) region) Effective 7/10/00, CICSUAT will no
longer be a valid login command. Entry into QAP will only be accessible by using the command CICSQAP.
Test Accounts
The test environments consist of a subset of production accounts. Although a full name and address of
production is available on-line in test we only process against accounts in the subset. To request accounts
be added to test, send an e-mail to Bob Conlin. Accounts added to the subset will not get updated in QAP
until the environment is refreshed.
Exception- new accounts that are opened or uplinked to the test environment, do not need to be added to
the subset. However, a pre-requisite is the correspondent and office number need to be in the subset.
Endevor/DB2 Processors David Petronella
The DB2 pre-compiler step no longer permits warnings. The pre-compiler step must now complete with
a return code of 0.
If your Endevor adds/updates into DEV1 or TEST fail, please check to see if the DB2 pre-compile
step failed. The causes of some of the more common pre-compiler warnings, and the resolution for
each, can be summarized as follows:
1)

Incorrect or missing DCLGENs. Messages such as


".... undefined or unusable host variable...",
".... variable not defined in
table ......", etc.,
are caused by incorrect DCLGENs or no DCLGEN at all for 1 or more tables being used in the
program. Another cause would be using a non-DCLGEN variable that is incompatible with
the column type. Make sure you are using a DCLGEN that is compatible with the table you
are referencing. Also, some older DCLGENs were generated with the owner of the table
specified. This is incorrect and the table owner should be removed from the DCLGEN. For

example, if the DCLGEN for TDB2xxxx.TABLE1 says ".... DECLARE TABLE


TDB2xxxx.TABLE1....", this should be changed to ".... DECLARE TABLE TABLE1 ......"
2) No SQL statements. As the message text ".... No SQL Statements Found In Program ...."
implies, a program with no SQL statements is being processed as if it were a DB2 program
using either the COBBATDB or COBONLDB element type. The most common reason that this
was done in the past was a misconception or miscommunication about how to properly
setup non-DB2 programs that call DB2 programs. The proper procedure is as follows:
All non-DB2 programs should be handled as such using either the COBBAT or COBONL
element types.
On-line transactions for non-DB2 programs still require an associated RCT entry and
batch programs must still be called as if they were DB2 using the "RUN PROGRAM(xxx)
PLAN(yyyy)" control statements
The RCT for transactions associated with non-DB2 programs that call DB2 programs
should use a PLAN name of "xxxxP" where "xxxx" is the 3- or 4-character Endevor
subsystem that the program resides under and "P" is fixed
The PLAN name for non-DB2 Batch programs that call DB2 programs is "xxxxBAT" where
"xxxx" is the 4-character Endevor subsystem that the program resides under and "BAT"
is fixed
3)

MASS DELETE. Non-cursor deletes that have no "WHERE" clause are MASS DELETEs which
are intended to delete all rows from a table in a single statement. These statements may
have locking and performance concerns and can be handled several other ways. Please
contact the DBA group for alternative methods to do this.

Sorting variable length records Chad Watkins


When you use the JCL sort command, you pass it 4 parameters, the starting position, length, format and
order. For example: SORT FIELDS=(4,6,CH,A)
means sort the record starting with the fourth position for a length of 6 Characters in Ascending order.
The thing to keep in mind with variable length records is that the first 4 bytes are used for the length.
Therefore, you must add 4 to the starting position to get the same result: SORT FIELDS=(8,6,CH,A)
Otherwise you are sorting on the last 4 characters of the field before the field you want.\

Purpose and use of S.I.T. (Systems Integration Testing) Ed Kurzum


I.

What is the purpose of SIT?

a.
A controlled environment to monitor the effects of application changes on other systems
b.
A coordinated effort between PTG and professional testers with business knowledge, to validate the correctness
of changes
c.
An interim testing stage before moving to UAT
d.
Once the elements are running in SIT the developer and professional tester must stay in contact as to the status
of the testing being done.
II.

How to use SIT

a.
The appropriate change managemenet forms are required to be completed,i.e., service request, test plan,
requirements...
b.
Create a UD package of all elements that you have added from your TSO PDS to Endevor, Environment = DEV,
Stage = 1. When executed, this UD package will move those elements from DEV1 to DEV2 (SIT). Your managers
Endevor approval is required for this move to take place.
c.
After this package is executed and the elements are now in DEV2, delete those same elements from the TEST
environment.
d.
Similar to UAT, you are required to create a UU package with all the appropriate overrides to allow your job to run
in SIT. These overrides, vsamcntl cards, ExecJCL, etc., should be added to SYSTEM=PTG, Subsystem=SIT.

e.
Once things are running in SIT you may need to make code modifications. Sign out the element from DEV2, do
your modifications and testing as usual, when ready, add that element to DEV1, and create a new UD' package with only
that element in it.
Create a UUSIT package.
----------------------------------------------------------------------- ADD/UPDATE ELEMENTS ----- DATASET NOT CATALOGED
OPTION ===> A
blank - Member list

A - Add an element

U - Update an element

TO ENDEVOR:
ACTION OPTIONS:
ENVIRONMENT ===> DEV
CCID
===> 07/11/2000
SYSTEM
===> PTG
GENERATE ELEMENT ===> Y (Y/N)
SUBSYSTEM ===> SIT
DELETE INPUT SOURCE ===> N (Y/N)
ELEMENT ===> PCT005DS
NEW VERSION
===>
TYPE
===> TEMPJCL
OVERRIDE SIGNOUT ===> N (Y/N)
STAGE:
1
PROCESSOR GROUP
===>
UPDATE IF PRESENT ===> N (Y/N)
COMMENT ===> Add JCL - UUSIT Environment
FROM ISPF LIBRARY:
LIST OPTIONS:
PROJECT ===> TSOTEST
DISPLAY LIST
LIBRARY ===> JCL
TYPE ===> CNTL
MEMBER ===>
THRU MEMBER ===>

===> Y (Y/N)

FROM OTHER PARTITIONED OR SEQUENTIAL DATA SET:


DATA SET NAME ===>
---------------------------------------------------------------------------------------------

-------------------------------- MOVE ELEMENTS -----------------------------OPTION ===> o


ELEMENT DISPLAY OPTIONS:
blank - Element list
S - Summary B - Browse H - History
O - Move element
M - Master C - Changes
FROM ENDEVOR:
ACTION OPTIONS:
ENVIRONMENT ===> DEV
CCID
===> 07/11/2000
SYSTEM
===> PTG
SYNC
===> N (Y/N)
SUBSYSTEM ===> SIT
WITH HISTORY
===> N (Y/N)
ELEMENT ===> PCT005DS
RETAIN SIGNOUT
===> N (Y/N)
TYPE
===> JCL
SIGNOUT TO
===>
STAGE
===> 2
ACKNOWLEDGE ELM JUMP ===> N (Y/N)
1 - DEV1 2 - DEV2
DELETE 'FROM' ELEMENT ===> Y (Y/N)
COMMENT

===> Add JCL - UUSIT Environment


LIST OPTIONS:
DISPLAY LIST
===> Y (Y/N)
WHERE CCID EQ
===>
WHERE PROC GRP EQ ===>
BUILD USING MAP
===> N (Y/N)

--------------------------------------------------------------------------------------------Create a UDSIT package.


----------------------------------------------------------------------- ADD/UPDATE ELEMENTS ----- DATASET NOT CATALOGED
OPTION ===> A
blank - Member list

A - Add an element

U - Update an element

TO ENDEVOR:
ACTION OPTIONS:
ENVIRONMENT ===> DEV
CCID
===> 07/11/2000
SYSTEM
===> CPS
GENERATE ELEMENT ===> Y (Y/N)
SUBSYSTEM ===> PCAT
DELETE INPUT SOURCE ===> N (Y/N)
ELEMENT ===> PCT005DP
NEW VERSION
===>
TYPE
===> TEMPJCL
OVERRIDE SIGNOUT ===> N (Y/N)
STAGE:
1
PROCESSOR GROUP
===>
UPDATE IF PRESENT ===> N (Y/N)
COMMENT ===> Add JCL - UUSIT Environment
FROM ISPF LIBRARY:
LIST OPTIONS:
PROJECT ===> TSOTEST
DISPLAY LIST
LIBRARY ===> JCL
TYPE ===> CNTL
MEMBER ===>
THRU MEMBER ===>

===> Y (Y/N)

FROM OTHER PARTITIONED OR SEQUENTIAL DATA SET:


DATA SET NAME ===>
---------------------------------------------------------------------------------------------

-------------------------------- MOVE ELEMENTS -----------------------------OPTION ===> o


ELEMENT DISPLAY OPTIONS:
blank - Element list
S - Summary B - Browse H - History
O - Move element
M - Master C - Changes
FROM ENDEVOR:
ACTION OPTIONS:
ENVIRONMENT ===> DEV
CCID
===> 07/11/2000
SYSTEM
===> CPS
SYNC
===> N (Y/N)
SUBSYSTEM ===> PCAT
WITH HISTORY
===> N (Y/N)
ELEMENT ===> PCT005DP
RETAIN SIGNOUT
===> N (Y/N)
TYPE
===> JCL
SIGNOUT TO
===>
STAGE
===> 2
ACKNOWLEDGE ELM JUMP ===> N (Y/N)
1 - DEV1 2 - DEV2
DELETE 'FROM' ELEMENT ===> Y (Y/N)
COMMENT

===> Add JCL - UUSIT Environment


LIST OPTIONS:
DISPLAY LIST
===> Y (Y/N)
WHERE CCID EQ
===>
WHERE PROC GRP EQ ===>
BUILD USING MAP
===> N (Y/N)

---------------------------------------------------------------------------------------------

III.

How to move from SIT to UAT/QAP


------------------------------------------------------

a.
When the professional tester is satisfied with the test results, the system owner must be notified and approve
(signoff) the move of the package to UAT/QAP.
b.
Create (copy original 'UD' package and give new name) another UD package to move elements from DEV2(SIT)
to UAT/QAP (there is no link yet in Endevor moves between SIT and UAT/QAP).
c.
At this stage testing is now the responsibility of the business user and professional tester, not the devloper.
d.
When the user is satisfied with test results, a user signoff is required for the migration of the package into
production.
SEARCH Tom McHugh
While you can use TSO 3.14 to search JCL's, PROC'S,COPYBOOK's etc. it is not good for searching
production program libraries.
If you add an SCL member to your Endevor SCL list you then can search COBBAT, COBONOL,COBBATDB
libraries in production.
Add the following to your SCL library using 3.2. I named mine "SEARCH'.
000001 LIST ELEMENT '*'
000002 VERSION 01 LEVEL 01
000003 FROM ENVIRONMENT 'PROD' SYSTEM 'CPS' SUBSYSTEM 'TXAS'
000004
TYPE 'COBBAT' STAGE P
000005 OPTIONS NOSEARCH
000006 WHERE TEXT EQ
000007 'PYT003CG'
000008
COLUMNS 007 072
000009 .
---------------------------------------------------------------------------Correct line 3 for your correct SYSTEM and SUBSYSTEM
Correct line 4 for program type
Correct line 7 for the STRING you are searching for.
Submit as you would any other SCL and go to SDSF to see the results of your search.
LOTUS NOTES stationery Chad Watkins
Hey all, FYI if you want to make your own stationary in lotus notes do the following:
Click on Actions
Click on Mail Tools
Click Create Stationary
Choose Personal Stationary
Now you can type in whatever you want. Click on Text to play with size and colors, etc. That is how I
made the big blue Chad Watkins and Ext 4759. When you close this, the stationary will be saved as a draft
under the category stationery. To use it, simply click on Draft rather than New Memo and then click on
whatever you saved it as. This will create a new memo everytime you do this. Unfortunately, it will not be
the default stationary and therefore will not be used when you reply or forward messages. In these cases,
your regular stationary will be used.
Putting a picture in your personal stationary is pretty simple. Edit your stationery as I mentioned in my last
email (Actions, Mail Tools, Create Stationary, Personal Stationary). Open up a picture or paint program like
Photo Editor or MS Paint, highlight your picture and just copy and paste it into your stationery.
Retrieving a report thats moved to tape Jolle Bochner
In CA-View (v.vd), you are trying to view a report, i.e. DSTM055X021 STM055DT J07421 11/11/00 08:34
PTAP
Since it is already on tape, the way to bring it up temporarily to look at it is as follows:
Place an L to the left of the report ID:
L DSTM055X021 STM055DT then hit ENTER
At the command line, type SUB and hit ENTER (provided you already have a job card listed there
Once the job goes through, you should be able to view the report as if it was on disk. (PTMP will replace
PTAP.)
Be aware, this is only valid for 1 day it is put on a scratch disk and will need to be re-created if you need
to access it again and dont wish to make a permanent disk copy.

File Aid Susan Wang


how to select certain records with FILE AID, which I thought was very useful for data analysis in testing.
1) go to FILE AID (v, f)
2) select 1 for BROWSE
3) see fllowing creen for where to put file name, copybook and necessary indicators:
FileAIDBrowseDatasetSpecification
COMMAND===>

BrowseMode===>V(F=Formatted;C=Char;V=Vertical)

SpecifyBrowseInformation:
Browsedatasetname===>'T.GMR040DP.R010.GMRBAL'
Membername===>(Blankorpatternformemberlist)
Volumeserial===>(Ifdatasetisnotcataloged)

SpecifyRecordLayoutandXREFInformation:
Recordlayoutusage===>S(S=Single;X=XREF;N=None)
Recordlayoutdataset===>'ENDEVOR.SIT.COPYLIB'
Membername===>GMRRBAL(Blankorpatternformemberlist)
XREFdatasetname===>
Membername===>(Blankorpatternformemberlist)

SpecifySelectionCriteriaInformation:(E=Existing;T=Temporary;
Selectioncriteriausage===>TM=Modify;Q=Quick;N=None)
Selectiondatasetname===>
Membername===>(Blankorpatternformemberlist)
4) press enter, then select 2 for FORMATTED
5) TAB to the field where you want to set selection cateriia. type in operator such as = or > < ,
then hit TAB and then whatever value, You can put as many selection cateria as you want to narrow
down.
See the following screen for an example (The spacing is massed up below. The place where you enter
operator and value should be in the same column
when you use TAB):
7SRDATESTAMP4/PS
7SLATEDATESTAMP4/PS
5BALSSYNC30/GRP
7TDBAL10/PS=0
7SDBAL10/PS=0
7SMA10/PS>0
5OTHERBALSSYNC140/GRP
7PROJECTEDBALSSYNC40/GRP
9PROJSDBAL(1)OCCURS4TIMES
6) F3, and F3 again. The selected records will come up. Field names are on the top.
How to put a Prevail report into a file Lino Martire
First allocate a 133-byte data set which will hold the Prevail report data
Go to Prevail (=V.VD)
Put a "P" next to the report ID you wish to copy, hit enter.
Change CLASS to "X", but don't hit ENTER
Type "D" at the COMMAND line - now hit ENTER
Type "D" under SEL for all DISTID except your group (ex. mine is IRABILL)
Hit PF3
Press ENTER
Go to 8.H
Select the report (with an "S")
Press ENTER to display the report on screen

At the COMMAND line type PRINT ODSN 'Newly allocated 133-byte data set name here'
Type PRINT and hit ENTER at the COMMAND line
Type PRINT CLOSE at the COMMAND line

You might also like