Overview
In DOS/VS R34, all printable characters were limited to upper-case, numbers, and select special characters as exercised by the DUMP service macros.
The DOS/VS Assembler macros PDUMP, DUMP and JDUMP invoke various $$B transient phases to perform the work of printing register values, storage content and other partition/system information.
Specifically, hex-to-character translation, a LOW-HIGH range table is searched to determine if a BYTE is printable, that is, translated to a valid EBCDIC character or a period (.). The table is 24-bytes in length, 12 value pairs. Scope for this modification was limited to printing functions of the above macros.
The PDZAPs change the content of the LOW-HIGH table values indicated by the FROM and TO tables below to include lower-case printing and other special characters as indicated by the highlighted rows to enhance the printable character set.
Note: The character ‘¬’ may be translated to ’^’ depending on EBCDIC to ASCII code tables.
Due to programmed CLC logic in the affected IBM software, the LOW VALUE is one less than the first printable character in a series. The HIGH VALUE is the last printable character is the series.
For example, the entry
C0-C9 ABCDEFGHI represents printable character series X’C1’ – X’C9’.
The following two reports show the before and after character set as part of a PDUMP.
The before version exhibits printable characters using the supplied DOS/VS R34 software, before the PDZAP. The after version uses the enhanced character set. Note the increased number of symbols and lower-case alphabet.
Software Disclaimer
No guarantee; No warranty; Install / Use at your own risk.
This software is provided “AS IS” and without any expressed or implied warranties, including, without limitation, the implied warranties of merchantability and fitness for a particular purpose.
The author requests keeping authors name intact to any modified versions.
In addition, the author requests readers to submit any code modifications / enhancements and associated comments for consideration into a subsequent release (giving credit to contributors) thus, improving overall functionality and further benefiting the DOS/VS R34 hobbyist public domain community.
Downloading ZIP Package
Download zip file from here.
The package includes the following:
- Documentation file
Printerable_character_table_Enhancment_DOSVS_R34.rtf - Three PDZAP Update JCL decks
ZAP_PDUMP_UPDT_$$BPDMPC.JCL (PDZAP 1)
ZAP_DUMP_UPDT_$$BDMPBC.JCL (PDZAP 2)
ZAP_DUMP_UPDT_$$BDMPDC.JCL (PDZAP 3) - Three PDZAP Listings after applying PDZAPs
PDZAPLB 03128 LARRYB 04 AUG 17 18.40.25.pdf ($$BPDMPC)
PDZAPLB 03139 LARRYB 04 AUG 17 23.33.59.pdf ($$BPDMDC)
PDZAPLB 03140 LARRYB 04 AUG 17 23.40.10.pdf ($$BPDMBC) - Three TEST assembler programs
CHARDUMP_ENH_Test_ASM_DUMP.ASM (DUMP Macro)
CHARDUMP_ENH_Test_ASM_JDUMP.ASM (JDUMP Macro)
CHARDUMP_ENH_Test_ASM_PDUMP.ASM (PDUMP Macro) - PDUMP Listings
PDUMP01 03121 04 AUG 17 17.04.26.pdf (before PDZAP)
PDUMP01 03129 04 AUG 17 18.41.24.pdf (after PDZAP)
Applying the PDZAPs
- Shut down DOS/VS machine, if active.
- Backup your system disk packs using host OS. This provides a restore alternative should you encounter issues.
- IPL your DOS/VS machine.
- Submit program PDUMP01 (uses PDUMP macro) to print current character translations. Output should be similar to Report 1.
- Submit PDZAP 1 to update PDUMP macro, $$BPDMPC phase.
- Submit program PDUMP01 to print new character translations. Output should be similar to Report 2.
- Submit program DUMP01 (uses DUMP macro) and JDUMP01 (uses JDUMP macro) to print current character translations. Output should be similar to Report 1.
- Submit PDZAP 2 to update DUMP/JDUMP macro, $$BPDMBC phase.
- Submit PDZAP 3 to update DUMP/JDUMP macro, $$BPDMDC phase.
- Submit program DUMP01 and JDUMP01 to print new character translations. Output should be similar to Report 2.
- Done!
Macros PDUMP, DUMP and JDUMP will produce hex-dumps with an enhanced character set.
Source Content
PDZAP 1. $$DPDMPC used by macro PDUMP
* $$ JOB JNM=PDZAPLB,CLASS=0,USER='LarryB',DISP=D * $$ PRT DISP=D,CLASS=P // JOB PDZAP Enhance Hex2Char Dumps to include more EBCDIC // UPSI 1 // OPTION LOG /* $$BPDMPC (IJBPDPTR) /* +Change valid character table /* +to include lower-case and /* +other symbols. /* 3F-40 Space /* 49-50 ¢.<(+|& /* 59-61 !$*);¬-/ /* 6A-6F ,%_>? /* 80-89 abcdefghi /* 90-99 jklmnopqr /* A1-A9 stuvwxyz /* .C0-C9 ABCDEFGHI /* .D0-D9 JKLMNOPQR /* .E1-E9 STUVWXYZ /* .EF-F9 0123456789 /* .FF-FF End of table marker // UPSI 1 // EXEC PDZAP NAME=SYS.PRG. SCIL=$$BPDMPC +32F VER=3F404A4B4D4E4F505A5C5F616A6BC0C9 REP=3F40495059616A6F80899099A1A9C0C9 END PHASE END /* /& * $$ EOJ
PDZAP 2. $$BDMPBC used by macro DUMP and JDUMP
* $$ JOB JNM=PDZAPLB,CLASS=0,USER='LarryB',DISP=D * $$ PRT DISP=D,CLASS=P // JOB PDZAP Enhance Hex2Char Dumps to include more EBCDIC // UPSI 1 // OPTION LOG /* $$BDMPBC (IJBDMBTR) /* +Change valid character table /* +to include lower-case and /* +other symbols. /* 3F-40 Space /* 49-50 ¢.<(+|& /* 59-61 !$*);¬-/ /* 6A-6F ,%_>? /* 80-89 abcdefghi /* 90-99 jklmnopqr /* A1-A9 stuvwxyz /* .C0-C9 ABCDEFGHI /* .D0-D9 JKLMNOPQR /* .E1-E9 STUVWXYZ /* .EF-F9 0123456789 /* .FF-FF End of table marker // UPSI 1 // EXEC PDZAP NAME=SYS.PRG. SCIL=$$BDMPBC +29D VER=3F404A4B4D4E4F505A5C5F616A6BC0C9 REP=3F40495059616A6F80899099A1A9C0C9 END PHASE END /* /& * $$ EOJ
PDZAP 3. $$BDMPDC used by macro DUMP and JDUMP
* $ JOB JNM=PDZAPLB,CLASS=0,USER='LarryB',DISP=D * $ PRT DISP=D,CLASS=P // JOB PDZAP Enhance Hex2Char Dumps to include more EBCDIC // UPSI 1 // OPTION LOG /* $BDMPDC (IJBDMDTR) /* +Change valid character table /* +to include lower-case and /* +other symbols. /* 3F-40 Space /* 49-50 ¢.<(+|& /* 59-61 !$*);¬-/ /* 6A-6F ,%_>? /* 80-89 abcdefghi /* 90-99 jklmnopqr /* A1-A9 stuvwxyz /* .C0-C9 ABCDEFGHI /* .D0-D9 JKLMNOPQR /* .E1-E9 STUVWXYZ /* .EF-F9 0123456789 /* .FF-FF End of table marker // UPSI 1 // EXEC PDZAP NAME=SYS.PRG. SCIL=$BDMPDC +2A5 VER=3F404A4C4F505A5C5F616A6B7B7CC0C9 REP=3F40495059616A6F80899099A1A9C0C9 END PHASE END /* /& * $ EOJ
Validation Software
The following three test programs will declare a variable named CHARTBL, fill-in CHARTBL containing 256 bytes ranging from X’00’ to X’FF’, and issue the appropriate DOS/VS Assembler Macro to print a HEX dump for review/compare purposes.
Program 1. PDUMPP(PDUMP01), change JCL per your preferences
* $$ JOB JNM=PDUMP01,CLASS=0,DISP=D * $$ PRT DISP=D,CLASS=P,JSEP=1 // JOB PDUMP01 Test PDUMP macro CHAR Enhancement // OPTION SYSPARM='NOJ1' // OPTION LINK,LOG,XREF // EXEC ASSEMBLY TITLE 'LB - PDUMP Macro Test - Character Enhancement' PRINT NOGEN * ********************************************************** * * * Program: PDUMPP * * * * Author: Larry Belmontes, Jr. * * * * Date: 08/03/2017 * * * * Description: To display a storage area of 256 bytes * * via PDUMP macro to demonstrate character translation. * * Non-printable characters printed as PERIODS (".") * * * * Input: None * * * * Output: SYSLST from PDUMP macro * * * * Notes: * * * * Change Log: * * LBJ mm/dd/yy Initial version * * * * ********************************************************** * Released to the public domain. * * EJECT * ------------------------------------------------------------------- * Addressability * ------------------------------------------------------------------- * R2 Base PDUMPP BALR R2,0 USING *,R2 BaseReg Tell assembler * ------------------------------------------------------------------- * Build HEX table for PDUMP printing * ------------------------------------------------------------------- * R3 Character table addr * R4 Number of slots to fill * R5 Hex counter LA R3,CHARTBL LA R4,256 LA R5,0 FILLME EQU * STC R5,0(R3) LA R5,1(R5) LA R3,1(R3) BCT R4,FILLME FILLDONE EQU * EJECT * ------------------------------------------------------------------- * PDUMP CHARTBL * ------------------------------------------------------------------- * R3 Character table addr * R4 Number of slots to fill * R5 Hex counter LA R3,CHARTBL LA R4,256(R3) PDUMP (R3),(R4) EOJ * * ------------------ REGISTER EQUATES ------------ * * REGEQU REGISTER EQUATES * CHARTBL DS CL256 CHARTBLE EQU * * * ------------------ LITERALS ------------ * * LTORG END PDUMPP /* // EXEC LNKEDT // EXEC /& * $$ EOJ
Program 2. DUMPP(DUMP01), change JCL per your preferences
* $$ JOB JNM=DUMP01,CLASS=0,DISP=D * $$ PRT DISP=D,CLASS=P,JSEP=1 // JOB DUMP01 Test DUMP macro CHAR Enhancement // OPTION SYSPARM='NOJ1' // OPTION LINK,LOG,XREF // EXEC ASSEMBLY TITLE 'LB - DUMP Macro Test - Character Enhancement' PRINT NOGEN * ********************************************************** * * * Program: DUMPP * * * * Author: Larry Belmontes, Jr. * * * * Date: 08/03/2017 * * * * Description: To display a storage area of 256 bytes * * via DUMP macro to demonstrate character translation. * * Non-printable characters printed as PERIODS (".") * * * * Input: None * * * * Output: SYSLST from DUMP macro * * * * Notes: * * * * Change Log: * * LBJ mm/dd/yy Initial version * * * * ********************************************************** * Released to the public domain. * * EJECT * ------------------------------------------------------------------- * Addressability * ------------------------------------------------------------------- * R2 Base DUMPP BALR R2,0 USING *,R2 BaseReg Tell assembler * ------------------------------------------------------------------- * Build HEX table for DUMP printing * ------------------------------------------------------------------- * R3 Character table addr * R4 Number of slots to fill * R5 Hex counter LA R3,CHARTBL LA R4,256 LA R5,0 FILLME EQU * STC R5,0(R3) LA R5,1(R5) LA R3,1(R3) BCT R4,FILLME FILLDONE EQU * EJECT * ------------------------------------------------------------------- * DUMP CHARTBL * ------------------------------------------------------------------- * R3 Character table addr * R4 Number of slots to fill * R5 Hex counter LA R3,CHARTBL LA R4,256(R3) PDUMP (R3),(R4) * ------------------------------------------------------------------- * Issue DUMP of supervisor * ------------------------------------------------------------------- DUMP EOJ * * ------------------ REGISTER EQUATES ------------ * * REGEQU REGISTER EQUATES * CHARTBL DS CL256 CHARTBLE EQU * * * ------------------ LITERALS ------------ * * LTORG END DUMPP /* // EXEC LNKEDT // EXEC /&
* $$ EOJ
Program 3. JDUMPP(JDUMP01), change JCL per your preferences
* $$ JOB JNM=JDUMP01,CLASS=0,DISP=D * $$ PRT DISP=D,CLASS=P,JSEP=1 // JOB JDUMP01 Test JDUMP macro CHAR Enhancement // OPTION SYSPARM='NOJ1' // OPTION LINK,LOG,XREF // EXEC ASSEMBLY TITLE 'LB - JDUMP Macro Test - Character Enhancement' PRINT NOGEN * ********************************************************** * * * Program: JDUMPP * * * * Author: Larry Belmontes, Jr. * * * * Date: 08/03/2017 * * * * Description: To display a storage area of 256 bytes * * via JDUMP macro to demonstrate character translation. * * Non-printable characters printed as PERIODS (".") * * * * Input: None * * * * Output: SYSLST from JDUMP macro * * * * Notes: * * * * Change Log: * * LBJ mm/dd/yy Initial version * * * * ********************************************************** * Released to the public domain. * * EJECT * ------------------------------------------------------------------- * Addressability * ------------------------------------------------------------------- * R2 Base JDUMPP BALR R2,0 USING *,R2 BaseReg Tell assembler * ------------------------------------------------------------------- * Build HEX table for DUMP printing * ------------------------------------------------------------------- * R3 Character table addr * R4 Number of slots to fill * R5 Hex counter LA R3,CHARTBL LA R4,256 LA R5,0 FILLME EQU * STC R5,0(R3) LA R5,1(R5) LA R3,1(R3) BCT R4,FILLME FILLDONE EQU * EJECT * ------------------------------------------------------------------- * DUMP CHARTBL * ------------------------------------------------------------------- * R3 Character table addr * R4 Number of slots to fill * R5 Hex counter LA R3,CHARTBL LA R4,256(R3) * ------------------------------------------------------------------- * Issue JDUMP of supervisor * ------------------------------------------------------------------- JDUMP EOJ * * ------------------ REGISTER EQUATES ------------ * * REGEQU REGISTER EQUATES * CHARTBL DS CL256 CHARTBLE EQU * * * ------------------ LITERALS ------------ * * LTORG END JDUMPP /* // EXEC LNKEDT // EXEC /& * $$ EOJ