F4 edit macro exit

Extend the processing of the enhanced search key by providing a REXX edit macro to be called from the FMNSRCHK exec.

The exit can be invoked by assigning one of the following values to a function key:
LIBDEF invocation:
FMNELIBD KEY X(exec_name)
Non-LIBDEF invocation:
FMNSRCHK X(exec_name
Where exec_name is the name of an available REXX exec to be run as an edit macro:
CRZXDSN
This contains a list of one or more data sets and member names, or both, separated by commas.

If the cursor is positioned on the command line, it will represent all the data set names referenced in the member.

If the cursor is positioned on a JCLLIB or a DD statement, it will be populated with all the associated data set names.

If the cursor is positioned on a exec procedure name, then it will be populated with the originating procedure data set name concatenated with the procedure name in parenthesis.

If the cursor is positioned on a EXEC PGM=name, then it will be populated with the load library from where this program will be loaded, concatenated with the program name in parenthesis.

CRZXCSRW
The word where the cursor is currently positioned. If the cursor is on the command line, then this value will be ‘’ or null.

Example

Set up sample REXX MYEKEY to display various values from the current edit or view section.

F16      FMNELIBD KEY X(MYEKEY)
Consider the following exec MYEKEY:
/* REXX  Sample EXEC - Exit values for the Edit or View key */
address ISPEXEC 'CONTROL ERRORS RETURN'                       
address ISPEXEC 'VGET (CRZXDSN CRZXCSRW) SHARED'              
say 'exit CRZXDSN   =' CRZXDSN         /* Data set names */                       
say 'exit CRZXCSRW  =' CRZXCSRW        /* Word at cursor */                       
address ISREDIT                                               
'(LNO,LPOS) = CURSOR '                                        
'(lval) = LINE 'lno                                           
say 'current line number = 'lno                               
say 'current line pos    = 'lpos                              
say 'current line value  = 'lval                              
return                                                        
Edit session – position to &SYSUID..DEMOGSE.CNTL and press F16 (shift + F4)
   File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help
                                                                                        
  VIEW       FMN.DEMOGSE.REFS(DEMO1) - 01.02                 Columns 00001 00072 
 Command ===>                                                  Scroll ===> CSR    
 000010 &SYSUID..DEMOGSE.CNTL(CBLPROC) ! Option 2  Variable substitution        
 000011 &SYSUID..DEMOGSE.CNTL(PRINT)   ! Option 3  SELECT                       
 000012 &SYSUID..DEMOGSE               ! Option 4  DSLIST                       
 000013 &SYSUID..DEMOGSE.NEWDSN        ! Option 13 Create/allocate Use 6 Try GR 
 000014 &SYSUID..DEMOGSE.CNTL          ! Option 13 change - convert to a PDSE 2 
 000015 &SYSUID..DEMOGSE.CNTL          ! Option 12 PDSE2  workbench             
 000016 &SYSUID..DEMOGSE.KSDS          ! Option 13 LIST   Catalog services      
 000017 &SYSUID..DEMOGSE.**                                                     
 000018 &SYSUID..DEMOGSE.SEARCH.**     ! Option 11 Search the data set          
 ****** **************************** Bottom of Data ****************************
The following message is produced by MYEXEC illustrating the values passed to the exit:
  exit CRZXDSN   = MYUSER.DEMOGSE.CNTL(CBLPROC)                                 
 exit CRZXCSRW  = &SYSUID..DEMOGSE.CNTL                                         
 current line number = 00000010                                                 
 current line pos    = 00014                                                    
 current line value  = &SYSUID..DEMOGSE.CNTL(CBLPROC) ! Option 2  Variable substitution