/* This code fragment shows the necessary elements of shifting a display left and right. The display isn't actually shifted -- that's something that's not supported in ISPF -- but it can be made to APPEAR as if the display has shifted. This example shows three (3) different formats, but any number of formats may be implemented, even one (1). See below for the setting of 'style' based on PF10 or PF11. */ /* ------------------------ from COMPARM ------ */ /* Set up the three )MODEL lines */ modl1 = '_z+_cproot +_z+ _z+ _z+ _cplib ' modl2 = '_z+_cproot +_z+ _z+ _z+ _cplist ' modl3 = '_z+_cproot +_z+ _z+ _z+ _cpmlib ' /* Set up the three literal header lines */ desc1 = 'V Root Cls Typ CICS Linklib ' desc2 = 'V Root Cls Typ CICS Listing library ' desc3 = 'V Root Cls Typ CICS MAPLIB ' /* Set up the three .ZVARS lines */ zvar1 = ' sel cpclass cptype cpcics ' zvar2 = ' sel cpclass cptype cpcics ' zvar3 = ' sel cpclass cptype cpcics ' stylect = 3 styles = 3 parse value "1 0 0 0 0 0 0 0 0 0 0" with, style csrrow . /* ---------------------------------------------- */ "VGET (ZPF10 ZPF11) PROFILE" parse value zpf10 zpf11 with save_f10 save_f11 . "TBTOP" @tn@ "TBVCLEAR" @tn@ /* zap values */ cproot = '3f3f'x /* set to special */ "TBSARG" @tn@ "NAMECOND( CPROOT,GT )" /* exclude admin row */ do forever sel = "" modl = Value( 'modl'style ) desc = Value( 'desc'style ) zvar = Value( 'zvar'style ) stword = Word( styles,style ) if csrrow <> 0 then do /* skip to 1st displayed line */ "TBTOP" @tn@ "TBSKIP" @tn@ "NUMBER( "csrrow" )" end parse value "END END" with zpf10 zpf11 . "VPUT (ZPF10 ZPF11) PROFILE" /* temporary ZAP */ "TBDISPL" @tn@ "PANEL( COMPARM )" disp_rc = rc parse value save_f10 save_f11 with zpf10 zpf11 . "VPUT (ZPF10 ZPF11) PROFILE" /* immediate restore */ if pfkey = "PF03" | disp_rc > 4 then leave if WordPos( pfkey,"PF10 PF11" ) > 0 then do when pfkey = "PF11" then, style = style//stylect + 1 /* next style */ when pfkey = "PF10" then, style = (style+stylect-2)//stylect + 1 /* prev style */ csrrow = ztdtop /* set TBSKIP position */ iterate end else csrrow = 0 do ztdsels end /* ztdsels */ sel = "" end /* forever */ /* ---------------------------------------------- */ ))) PLIB ... This panel can be scrolled right and left )ATTR % TYPE( TEXT ) INTENS( HIGH ) SKIP( ON ) + TYPE( TEXT ) INTENS( LOW ) SKIP( ON ) _ TYPE( INPUT ) INTENS( HIGH ) CAPS( ON ) ! TYPE( OUTPUT ) INTENS( HIGH ) SKIP( ON ) @ TYPE( OUTPUT ) INTENS( LOW ) SKIP( ON ) CAPS( OFF ) )BODY EXPAND([[) WIDTH(&ZSCREENW) %[-[ Compile Parameters +[-[ %Command ===>_ZCMD %Scroll ===>_ZAMT+ /--%D+(delete) or%E+(edit) %PF1+for%HELP+ / %PF10/PF11+to toggle display @desc )MODEL ROWS( SCAN ) &modl )INIT .ZVARS = '(&zvar)' .HELP = COMPARMH )REINIT )PROC IF (.PFKEY = 'PF05') &PFKEY = 'F5' .RESP = END IF (.PFKEY = 'PF10') .RESP = 'ENTER' IF (.PFKEY = 'PF11') .RESP = 'ENTER' &PFKEY = .PFKEY )END