The interface to z/OS and the green screen myth

  • Post category:DBAOTM
  • Reading time:4 mins read

In the previous posts I have shown you many modern technologies available on z/OS. But still when you think of the mainframe, you think of black screen with green characters, which looks cool in the Matrix, but not so much in real life. Where does this green screen imago come from? In this section I will talk a little bit about the origins of the green screens in mainframe technology. I will also show you that these green screens have become as uncommon to use as a terminal in Unix or command prompt in Windows. Green screens are for administrators and programmers, not end-users The green screens on the mainframe are user-interfaces. In the early days programmers created their programs on paper, behind their desks. They then entered the programs on punch cards or paper tape. That were the media that were then fed into the computers, using a special reader device. Later, in the 1960s, computers with terminal interfaces were build. With the terminals, users could enter programs and data online. This is the period that the green screens originate from. Each computer type had its own terminal technology. Mainframes had technology indicated with a number: the 3270 terminal. These terminals originally worked with green letters on a black background, and could hold as much as 32 lines of 80 characters (or so). We still refer to these 3270 terminals as green screen. Modern mainframe applications do not use these terminal interfaces anymore. Applications on the mainframe most often do not even have a user-interface anymore. They only expose services, or APIs, exposed to mid-tier or front-end applications. (See modern mainframe application architecture section.) Today therefore, the need for these green screens is limited. Only special system administration tools and application programming tools still have a low level interface. And even these are being replaced by tools with more modern interface. System administrators on Windows use the "DOS" command prompt and Unix techies use the Terminal sessions. Similarly, for mainframe techies there is the “green-screen” 3270 terminal.  Actually, the Unix Terminal and Windows Command Prompt are quite rudimentary, compared to the 3270 interface to z/OS. Green screen application? Technical debt The days where you had green screen applications are long gone. If you still have them, you should get rid of them. Most well-architected green-screen applications can be turned into service-oriented applications. The front-end can then be replaced by a modern front-end application. You may find yourself in the situation where you need to integrate with green-screen applications that have not been so well-designed. I will talk a little bit about that in a separate section Integration with the rest of the world. In section Application architecture for modern mainframe applications, I describe a reference architecture for modern mainframe applications. Now, I will describe what tools typically still needs 3270 screens. TSO What is the functionality of the command prompt for Windows and the Shell function is for Unix, is the TSO tool for z/OS: a command line interface…

$ZOOM – Mother of all EDIT macro’s

  • Post category:ISPF
  • Reading time:2 mins read

The most useful ISPF EDIT macro ever. I think it was written by Paul van Goethem from Belgium, somewhere before 1993. It has quickly spread through many sites. Point your cursor at at dataset name in a file your are editing en executing the macro will launch an EDIT session of that file. I always put in under PF key PF4 which by default has the not very useful default value RETURN. Note the value of the variable INVALID in the below may be corrupted. It should contain any character that is not valid as part of a dataset. The binary values it can contain are not very portable. /****************************REXX***********************************/ /* FUNCTION: RECURSIVE EDIT OF BROWSE VIA DSNAAM AND,OR MEMBER */ /* SPECIFIED VIA CURSOR SENSITIVE EDIT MACRO */ /* FORMATS ACCEPTED: */ /* DATA.SET.NAME : EDIT/BROWSE OF THIS */ /* DATA.SET.NAME(MEMBER) : EDIT/BROWSE THIS */ /* MEMBER : EDIT/BROWSE IN SAME LIBRARY AS INDEX */ /****************************REXX***********************************/ ADDRESS ISPEXEC INVALID= ",'\<\>,:;+��▖!�%�-=" ADDRESS ISREDIT 'MACRO (FUNCTIE)' FUNCTIE = TRANSLATE(FUNCTIE) IF SUBSTR(FUNCTIE,1,1)='B' THEN FUNCTIE='BROWSE' ELSE FUNCTIE='EDIT' LIN=0 ADDRESS ISREDIT '(LIN,COL) = CURSOR' ADDRESS ISREDIT '(CLINE) = LINE 'LIN /* FIND CURRENT WORD */ T=SUBSTR(CLINE,1,COL) T =TRANSLATE(T,' ',INVALID) Y=LASTPOS(' ',T) IF Y=0 THEN T=CLINE ELSE T=SUBSTR(CLINE,Y+1) PARSE VAR T WOORD . WOORD =TRANSLATE(WOORD,' ',INVALID) "CONTROL ERRORS RETURN" IF INDEX(WOORD,'(') /= 0 THEN DO /* TAKE DSN IF SPECIFIED */ PARSE VAR WOORD DSNAME '(' MEMBER ')' FUNCTIE" DATASET('"SPACE(DSNAME)"("MEMBER")')" FRC=RC END ELSE DO IF INDEX(WOORD,'.')/=0 THEN DO PARSE VAR WOORD DSNAME . FUNCTIE" DATASET('"SPACE(DSNAME)"')" END ELSE DO ADDRESS ISREDIT "(DSNAME) = DATASET" WOORD = SPACE(TRANSLATE(WOORD,' ','.()')) FUNCTIE" DATASET('"DSNAME"("WOORD")')" END FRC=RC END ADDRESS ISPEXEC "CONTROL ERRORS CANCEL" IF FRC> 4 & SYMBOL(ZERRMSG)/= 'LIT' THEN DO MSG= ZERRMSG':'ZERRLM "SETMSG MSG(ZOM000A)" END RETURN