TSO Tips

ISPF Cut & Paste

  1. Edit an element
  2. Using the "cc" block line command, block the section to be copied (not cut)
  3. On the command line enter the command "cut r" without quotes
  4. Open a second element for edit
  5. Using the line command "a" (or "b") indicate where the selection is to be pasted.
  6. On the command line enter the command "paste" without quotes
  7. The source item is unchanged. The target has the new lines inserted as indicated.
Back To Top

ISPF Gangpunch

It is occasionally convenient to be able to gangpunch data from one record to another. This can be done with relative ease in ISPF. Given the following scenario, the unique information is present in lines 16 through 25. However, it is desired to have "ENC" and "BJ338 PR #12981 PER GE JONES" in the same columns in all records, 16 through 25. To accomplish this, use the c line command as you for any copy, and use the oo block commands to identify the desired range. See the following example.

000015 //CONTROL  DD *                                                     
oo0016      J90401.04 3944105 SC97084 DO09058                              
000017      J90402.04 3944105 SC97084 DO09068                              
000018      J90403.03 3944105 SC97085 DO09010                              
000019 123  J90404.03 3944105 SC97085 DO09013 HELLO                        
000020      J90405.04 3944105 SC97085 DO09058                              
000021      J90406.04 3944105 SC97086 DO09010                              
000022      J90407.04 3944105 SC97086 DO09013                              
000023      J90408.05 3944105 SC97086 DO09058                              
oo0024      J90409.04 3944105 SC97087 DO09010                              
c00025 ENC  J90410.04 3944105 SC97087 DO09013 BJ338 PR #12981 PER GE JONES 
000026 /* 
It yields the following result:
000016 ENC  J90401.04 3944105 SC97084 DO09058 BJ338 PR #12981 PER GE JONES 
000017 ENC  J90402.04 3944105 SC97084 DO09068 BJ338 PR #12981 PER GE JONES 
000018 ENC  J90403.03 3944105 SC97085 DO09010 BJ338 PR #12981 PER GE JONES
000019 123  J90404.03 3944105 SC97085 DO09013 HELLO PR #12981 PER GE JONES 
000020 ENC  J90405.04 3944105 SC97085 DO09058 BJ338 PR #12981 PER GE JONES 
000021 ENC  J90406.04 3944105 SC97086 DO09010 BJ338 PR #12981 PER GE JONES 
000022 ENC  J90407.04 3944105 SC97086 DO09013 BJ338 PR #12981 PER GE JONES 
000023 ENC  J90408.05 3944105 SC97086 DO09058 BJ338 PR #12981 PER GE JONES
000024 ENC  J90409.04 3944105 SC97087 DO09010 BJ338 PR #12981 PER GE JONES 
000025 ENC  J90410.04 3944105 SC97087 DO09013 BJ338 PR #12981 PER GE JONES 
000026 /* 
Notes:
  1. Only blank positions are filled. Non-blank positions are unmolested.
  2. Use the COLS command to limit the columns to be affected.
  3. This command does not have a facility for gangpunching blanks into specific columns.
  4. To affect a single line, use the o line command, rather than the oo block command.
  5. To affect a sequence of lines, use the o4 line command for example to affect this line and the following three lines.
Back To Top

ISPF Using The COLS & BNDS TSO Line Command

  1. Edit an element
  2. Enter COLS in the line command area to have a ruler line appear.
  3. Enter BNDS in the line command area. A blank line will appear.
  4. On the blank line, position angle brackets < >in the columns to be affected. The affected portion will be that portion between the angle brackets, inclusive. I could find no way to affect a single column.
  5. The following example shows how to comment out a portion of a paragraph.
    EDIT       BJ338.NDVR.WORK(CEPEJ624)                       
    Command ===>                                                  
    =COLS> ----+----1----+----2----+----3----+----4----+----5----+----6---- 
    =BNDS>      <>                                                          
    000139                                                                 
    000140 00133  A300-PROCESS-CEP-DST.                                    
    000141 00134      READ IN-EXPLO INTO IN-HOLD                           
    000142 00135          AT END                                           
    000143 00136              MOVE HIGH-VALUES TO IN-HOLD                  
    000144 00137                  GO TO A300-PROCESS-CEP-DST-EXIT.         
    c00145 00138 *                                                          
    oo0146 00139      IF  IN-HOLD-REC-TYP = '60'                           
    000147 00140          MOVE IN-HOLD TO IN-RECD60                        
    000148 00141          MOVE 'Y' TO FLAG                                 
    000149 00142          MOVE IN-HOLD-SHOP-ORD TO HOLD-SO                 
    000150 00143          PERFORM A400-PROCESS-RECD60 THRU                 
    oo0001 00144                  A400-PROCESS-RECD60-EXIT.                
    000152 00145
  6. The following screen shows the results.
    EDIT       BJ338.NDVR.WORK(CEPEJ624)                      
    Command ===>                                                  
    =COLS> ----+----1----+----2----+----3----+----4----+----5----+----6---- 
    =BNDS>      <>                                                          
    000139                                                        
    000140 00133  A300-PROCESS-CEP-DST.                           
    000141 00134      READ IN-EXPLO INTO IN-HOLD                  
    000142 00135          AT END                                  
    000143 00136              MOVE HIGH-VALUES TO IN-HOLD         
    000144 00137                  GO TO A300-PROCESS-CEP-DST-EXIT.
    000145 00138 *                                                
    000146 00139 *    IF  IN-HOLD-REC-TYP = '60'                  
    000147 00140 *        MOVE IN-HOLD TO IN-RECD60               
    000148 00141 *        MOVE 'Y' TO FLAG                        
    000149 00142 *        MOVE IN-HOLD-SHOP-ORD TO HOLD-SO        
    000150 00143 *        PERFORM A400-PROCESS-RECD60 THRU        
    000151 00144 *                A400-PROCESS-RECD60-EXIT.       
    000152 00145
Back To Top

ISPF Recursive Windows

Under the old SPF when an additional window was needed and you were already in split screen, you could type HOLD and press enter. This reserved your existing window, and presented a new window at the primary option menu for temporary use.

HOLD is not available under the new SPF. But there is a new command that has a similar effect. Experiment with SPLIT NEW.

Back To Top

Building and Using PROCLIBs

Please note: The following are not the only methods for creating, backing up, and restoring "user proclibs". They are merely examples.
Allocating A PROCLIB As A PDS
Allocating A PROCLIB As A PDSE
Copying To A PROCLIB Using EIBCOPY
Backing Up A PDS (PROCLIB) Using FILEAID
Backing Up A PDSE (PROCLIB) Using FILEAID
Executing From A PROCLIB
Executing From Multiple PROCLIBs

Back To Top

Allocate T???.++++++++.TESTPROC As A PDS

//ALLOCATE EXEC PGM=IEFBR14             
//DD1      DD DSN=T???.++++++++.TESTPROC,
//            DISP=(,CATLG,DELETE),     
//            UNIT=SYSDA,               
//            DSNTYPE=PDS,DSORG=PO,     
//            LRECL=80,RECFM=FB,        
//            SPACE=(TRK,(primary space,secondary space,dir blocks))
Back To Top

Allocate T???.++++++++.TESTPROC As A PDSE (Partitioned DataSet Extended)

//ALLOCATE EXEC PGM=IEFBR14                        
//DD1      DD DSN=T???.++++++++.TESTPROC,      
//            DISP=(,CATLG,DELETE),                
//            UNIT=SYSDA,                          
//            DSNTYPE=LIBRARY,DSORG=PO,            
//            LRECL=80,RECFM=FB,                   
//            SPACE=(TRK,(primary space,secondary space),RLSE)
Back To Top

Copy Members From TEST.PROCLIB To Another User PROCLIB Using IEBCOPY

//COPY     EXEC PGM=IEBCOPY,REGION=300K                       
//SYSPRINT DD   SYSOUT=*                                      
//DD1      DD   DSN=TEST.PROCLIB,DISP=SHR            
//DD2      DD   DSN=T???.++++++++.TESTPROC,DISP=OLD  
//SYSUT3   DD   UNIT=SYSDA,SPACE=(TRK,(20))                   
//SYSUT4   DD   UNIT=SYSDA,SPACE=(TRK,(20))                   
//SYSIN    DD   *                                             
 COPY OUTDD=DD2,INDD=DD1                                      
 S M=((PROC1,,R))                                             
 S M=((PROC2,,R))  
 S M=((ETC,,R))                                           
/*
Back To Top

Backing Up A PDS (Can Be Used In Reverse As Restore JCL)

//BACKUP   EXEC PGM=FILEAID,REGION=4M                  
//DD01     DD DSN=T???.++++++++.TESTPROC,DISP=SHR       
//DD01O    DD DSN=T???.++++++++.whatever.you.want,        
//            DISP=(,CATLG,DELETE),                    
//            UNIT=SYSDA,
//            DSNTYPE=PDS,DSORG=PO,                    
//            SPACE=(TRK,(primary space,secondary space,dir blocks))
//SYSPRINT DD SYSOUT=*                                 
//SYSLIST  DD SYSOUT=*                                 
//SYSTOTAL DD SYSOUT=*                                 
//SYSUDUMP DD SYSOUT=*                                 
//SYSIN    DD DUMMY                                          
/*
Back To Top

Backing Up A PDSE (Can Be Used In Reverse As Restore JCL)

//BACKUP   EXEC PGM=FILEAID,REGION=4M                      
//DD01     DD DSN=T???.++++++++.TESTPROC,DISP=SHR      
//DD01O    DD DSN=T???.++++++++.whatever.you.want,       
//            DISP=(,CATLG,DELETE),                        
//            UNIT=SYSDA,                                  
//            DSNTYPE=LIBRARY,DSORG=PO,                    
//            LRECL=80,RECFM=FB,                           
//            SPACE=(TRK,(primary space,secondary space),RLSE)
//SYSPRINT DD SYSOUT=*                                     
//SYSLIST  DD SYSOUT=*                                     
//SYSTOTAL DD SYSOUT=*                                     
//SYSUDUMP DD SYSOUT=*                                     
//SYSIN    DD DUMMY                                         
/*
Back To Top

Executing A Cataloged Procedures From A User PROCLIB

To execute cataloged procedures from a user PROCLIB, add the following JCL statement before the first EXEC statement in the job stream. If the cataloged procedure (PROC) isn't found in your user PROCLIB(s)", PROD.PROCLIB will also be searched./P>

//PROCLIB  JCLLIB ORDER=T???.++++++++.TESTPROC
Back To Top

Executing A Cataloged Procedures From Multiple User PROCLIBs

To execute cataloged procedures from a user PROCLIB, add the following JCL statement before the first EXEC statement in the job stream. If the cataloged procedure (PROC) isn't found in your user PROCLIB(s)", PROD.PROCLIB will also be searched.

//PROCLIB  JCLLIB ORDER=(T???.++++++++.TESTPROC,  
// T???.+++++++2.TESTPROC,
// T???.+++++++3.TESTPROC)
Back To Top

Interupting a TSO Search

If a TSO search is taking too long, try hitting [Shift Esc]. It may not work on all machines, but it does work on some.

Back To Top

TSO Invokation of ISPF

I don't like to have to enter an application step by step anymore than anybody else, but I have noticed that a lot of people sign on to TSO and then enter the ISPF command to invoke ISPF. If when you sign on to TSO, at the TSO/E LOGON screen, which is where you put in your password, you also tab down to the last field labeled COMMAND and enter ISPF, you won't have to manually invoke it in the future. Certain parts of TSO retain values for you, and that COMMAND field is one that will.

--Courtesy of Charles Tolhurst and Robert Thompson

Back To Top

Using QW To Access Documentation

A great deal of documentation is maintained on MVS. The trick is getting to it. Try using the qw command.

  • From the OPTTION line on (virtually) any ISPF screen, including the opening screen, enter qw.
  • Press [Enter]
  • Experiment. However, try entering C.
  • Experiment. However, try entering S on the line that says IDCAMS UTILITY.
  • Select any option to access IDCAMS documentation.
The qw command is fairly versatile. It will call up an error message directly if you enter qw on the command line and place the cursor on an IBM (or other supported vendor) error number on a SAR listing when SAR is entered via TSO. Note that the qw command will not work as advertised unless you enter TSO directly, as opposed to entering SAR directly.

The qw command seems quite versatile and is worthy of extensive experimentation.

--Courtesy of Charles Tolhurst

Back To Top
GLOBE
Last Update: 28 June 2002
Forward questions or comments concerning this page to:
kfussichen@commkey.net
© 2000-2002 Kenneth Fussichen