Professional Documents
Culture Documents
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
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.
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
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
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
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
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.
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.
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
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
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
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********************************
|=>
COMMAND
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
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
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
-
CSA
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
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
===>
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
SYS: CSQ
SUB: VIEW
TYPE: COBONLDB
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
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:
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
e.g. //firstline
parameter1,
parameter2
start in column 4 to 16 (exactly 16 is splitting phrase in quotes)
.
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.
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.
==>
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.
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)
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)
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.
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.
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)
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)
---------------------------------------------------------------------------------------------
III.
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.
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