Differences with ISPF: ---------------------- Loads! some good, and some bad but in no particular order... 1) No ISPLINK interface. Use ISPEXEC or the pApplication methods that have the same parameters as ISPLINK. Both set special variable RC to the return code of the service. 2) Panel body is defined differently with a simple list of FIELD, TEXT, TBMODEL, TBFIELD etc, statements 3) Applications can be run in the background/asynchronously using the submit method. Function pool variable ZSBTASK contains the submitted background taskid. 4) No ALTLIB function, but then this is really TSO not ISPF. Maybe LIBDEF can be extended to provide something similar. 5) Keylists are kept in their own table, not in the PROFILE file as added table rows. File name format is applid+"KEYP" for private keys in ZUPROF. 6) No shared keylist keys. 7) Keylists override current PFKEYs only if there is a definition, otherwise the normal PFKEY will be in effect. Real ISPF overrides all keys when a keylist is in use (which makes then almost useless) 8) No split line in split-screen mode. Each logical screen gets the full screen. 9) No PA1 function but if an application appears to be looping, press ESC to see options. 10) If the application does an ADDPOP, it is ignored on a DISPLAY if there is no WINDOW() statement on the panel. Real ISPF honours it and usually gives something a bit strange! 11) Panels can have an INCLUDE directive to pull in common source. Useful for pull-down definitions. 12) SWAP can switch both primary and alt screens, including using the SCREEN NAME. 13) Task list contains the panel description or panel title if no description set. You can actually see what files you are editing or browsing in the list instead of trying to guess which edit session you want. 14) You can define fields that execute a program when the FIELDEXC command entered and cursor is on the field. This is to provide a general way of providing field expansion. If the tab key is pressed when the cursor is not on the first character of a field defined in this way, it acts as FIELDEXC. This way the tab key can be used to expand file names (or anything else depending on the field execute program invoked) 15) On returning from calling a program via a SELECT, special variables ZRC, ZRSN and ZRESULT are returned ZRC and ZRSN are interger values. ZRESULT is a string. 16) Each application runs in its own thread so if an application fails and the exception is trapped, only that thread is terminated, not the whole logical screen. In a nested select stack, this is propagated back to the calling program, unless the select is within a CONTROL ERRORS RETURN statement, in which case on return, ZRC = 20 ZRSN = 999 ZRESULT = "Abended" If ZRSN has been set to greater than 900, ZRSN and ZRESULT are percolated back to the calling program. 17) lspf tables are open per nested SELECT, not per logical screen. 18) .ATTR() can be used to change the CUA field attribute colour/hilight/intensity. ISPF does not allow this. 19) Pull down menus don't have an input field - select by placing curson on the option and pressing ENTER. Variable specified in .ZVARS in the )ABCINIT will automatically be set the the option number selected. 20) Search library names are different: ISPF lspf Description ---------------------------------------- ISPMLIB ZMLIB Message library ISPPLIB ZPLIB Panel library ISPTLIB ZTLIB Table input library ISPTABL ZTABL Table output library ISPMUSR ZMUSR User message library ISPPUSR ZPUSR User panel library ISPTUSR ZTUSR User table input library ISPTABU ZTABU User table output library The other names are not implemented. 21) If LIBRARY specified on TBSAVE or TBCLOSE, or for the ZTABL default, a search is made of the concatination and the table added to where it is found. If not found, the first directory is used. Real ISPF just adds the table to the first dataset in the concatination. 22) The LIBRARY statement on various services, accepts a path, concatination of paths, or a LIBDEF lib-type (generic or non-generic). 23) Panels can have an ACTIONBAR statement in the BODY section to order or display only certain pull down menus. A pull down menu not in the ACTIONBAR statement will be deleted. If there is no ACTIONBAR statement, the default is to use all pull down menus in the order they were defined in the panel. 24) Entering a jump command from fields other than the command line, is cursor sensitive. The cursor must be left on the field, and only characters up to, but not including, the cursor (or first space) are used in the jump command - a space is not required after the command. Literals (last 3 characters) used to determine a jump-capable field are "...", ". .", " .:", ". :" and "==>" 25) Panels are automatically in CUA mode (in ISPF, panels that have a )PANEL section). That is, CANCEL and EXIT commands behave as SETVERB entries in the command table, and special variables ZCURFLD, ZCURPOS and ZCURINX are set. Other CUA characteristics are not implemented. 26) For panels with multiple scrollable areas defined, if the cursor is not on one of the areas when a scroll request is performed, the first )AREA section is scrolled.