*********************************************************************** * This is a companion program for WMX EXEC. It is provided so that * * WMX can detect changes to CMSPF keys. Unfortunately CMS finds * * it necessary to overwrite customized reserved lines in the * * CMS VSCREEN whenever a CMSPF key is changed. Yes, I know about * * the NOWRITE option for SET CMSPF, but I can't force people to * * use it. * * * * The best I can do is to update the CMS VSCREEN with the current * * CMSPF key descriptions (pseudonyms) at the end of every command. * * That is, when we get back to the CMS READY message. That means * * I can't detect changes make while in XEDIT, for example, until * * you return to the CMS command line. * * * * You must first build a CMS executable module from this assembler * * source code. (Must be filetype ASSEMBLE.) * * VMFASM WMXUPDT DMSVM * * LOAD WMXUPDT (RLD * * GENMOD * * * * This program is designed to be loaded as a CMS nucleus extension. * * NUCXLOAD WMXUPDT (SYSTEM SERVICE ENDCMD PERMANENT * * * * SYSTEM ensures that it survives HX or other abends. * * SERVICE causes it to be called when it's NUCXDROPed * * ENDCMD causes it to be called when we return to CMS. * * PERMANENT prevents it from being unloaded by * * NUCXDROP *. * * * * To find out more about nucleus extensions, see the CMS Application * * Development Guide for Assembler. * * * * * * Alan Altmark, IBM February 2015 * *********************************************************************** *...+....1....+....2....+....3....+....4....+....5....+....6....+....7. WMXUPDT CSECT USING *,R12 USING USERSAVE,R13 STM R0,R15,USERSAVE * CLI USECTYP,X'FF' Abend or NUCXDROP BE SERVICE * CLI USECTYP,X'FE' End-of-command BE WMXCALL * APPLMSG TEXT='Updating CMSPF key descriptions...' * WMXCALL CMSCALL PLIST=ENDCMD B RETURN * SERVICE DS 0H CLC =CL8'RESET',8(R1) RESET = NUCXDROP BNE RETURN Otherwise it's an abend * CMSCALL PLIST=RESET RETURN DS 0H LM R0,R15,USERSAVE SLR R15,R15 BR R14 * DS 0D ENDCMD DC CL8'EXEC' DC CL8'WMX' DC CL8'ENDCMD' DC 8X'FF' * RESET DC CL8'EXEC' DC CL8'WMX' DC CL8'DROPWARN' DC 8X'FF' * REGEQU USERSAVE END WMXUPDT