Return to Mainframe Utilities Page
Module
/******************************************************************/
/* CLIST : CNVTUPCS - THIS CLIST WILL PROMPT THE USER FOR AN ISPF */
/* TABLE NAME AND LIBRARY, AND CONVERT THE */
/* TABLE FIELD VALUES TO UPPER CASE. */
/* AUTHOR : DAVE LEIGH DATE : 5-17-89 */
/******************************************************************/
PROC 0 HELP TNAME() TDSN()
/**** SET MESSAGE DISPLAY ON/OFF BASED ON THE DEBUG SWITCH ***/
ISPEXEC VGET (DBGSWTCH) PROFILE
IF &DBGSWTCH = &STR(ON) THEN +
CONTROL MSG LIST CONLIST SYMLIST NOFLUSH ASIS
ELSE CONTROL NOMSG NOLIST NOFLUSH NOPROMPT ASIS
IF &HELP = STR(&HELP) THEN GOTO HELPSEC
SET DIALOG = OFF
/*****************************************************/
/* GET THE TABLE NAME AND TABLE LIBRARY IF NECESSARY */
/*****************************************************/
IF &TDSN = OR &TNAME = THEN +
DO
SET DIALOG = ON
ISPEXEC VPUT (TDSN TNAME) SHARED
LOOP: +
ISPEXEC DISPLAY PANEL(UTILUPCS)
IF &LASTCC > 0 THEN +
DO
IF &TNAME > THEN +
DO
ISPEXEC TBSTATS &TNAME STATUS2(TBS2)
IF &TBS2 > 1 THEN ISPEXEC TBEND &TNAME
END
SET ZEDLMSG = &STR(EXITED "CNVTUPCS" UTILITY WITHOUT)+
&STR( PROCESSING)
ISPEXEC SETMSG MSG(UTLZ000)
ISPEXEC LIBDEF ISPTABL
EXIT
END
ISPEXEC VGET (TDSN TNAME) SHARED
END
/*****************************************/
/* SET UP THE OUTPUT TABLE = INPUT TABLE */
/*****************************************/
ISPEXEC LIBDEF ISPTABL
ISPEXEC LIBDEF ISPTABL DATASET ID('&TDSN')
SET SAVECC = &LASTCC
IF &SAVECC > 0 THEN +
DO
IF &SAVECC = 4 THEN +
DO
SET ZEDLMSG = &STR(APPLICATION LIBRARY DOES NOT EXIST)+
&STR( FOR THIS TYPE)
ISPEXEC SETMSG MSG(UTLZ001)
IF &DIALOG = ON THEN GOTO LOOP
ISPEXEC LIBDEF ISPTABL
EXIT
END
IF &SAVECC = 8 THEN +
DO
SET ZEDLMSG = &STR(APPLICATION LIBRARY ALREADY EXISTS)+
&STR( FOR THIS TYPE)
ISPEXEC SETMSG MSG(UTLZ001)
IF &DIALOG = ON THEN GOTO LOOP
ISPEXEC LIBDEF ISPTABL
EXIT
END
IF &SAVECC = 12 THEN +
DO
SET ZEDLMSG = &STR('ISPPROF' SPECIFIED AS LIB-TYPE;)+
&STR( INVALID LIB-TYPE SPECIFIED)
ISPEXEC SETMSG MSG(UTLZ001)
IF &DIALOG = ON THEN GOTO LOOP
ISPEXEC LIBDEF ISPTABL
EXIT
END
IF &SAVECC = 16 THEN +
DO
SET ZEDLMSG = &STR("&TDSN" INVALID MVS NAME OR NOT )+
&STR(ALLOCATED)
ISPEXEC SETMSG MSG(UTLZ001)
IF &DIALOG = ON THEN GOTO LOOP
ISPEXEC LIBDEF ISPTABL
EXIT
END
IF &SAVECC = 20 THEN +
DO
SET ZEDLMSG = &STR(A SEVERE ERROR HAS OCCURED WHILE )+
&STR(EXECUTING THE ISPF LIBDEF UTILITY)
ISPEXEC SETMSG MSG(UTLZ001)
IF &DIALOG = ON THEN GOTO LOOP
ISPEXEC LIBDEF ISPTABL
EXIT
END
END
/**************************************/
/* OPEN THE SELECTED TABLE FOR UPDATE */
/**************************************/
ISPEXEC TBOPEN &TNAME WRITE
IF &LASTCC = 8 THEN +
DO
SET ZEDLMSG = &STR(TABLE &TNAME DOES NOT EXIST ** )+
&STR(PROCESS WAS TERMINATED)
ISPEXEC SETMSG MSG(UTLZ001)
IF &DIALOG = ON THEN GOTO LOOP
ISPEXEC LIBDEF ISPTABL
EXIT
END
/******************************************************/
/* SET THE KEYS, NAMES AND INITIAL LASTSORT VARIABLES */
/******************************************************/
ISPEXEC TBQUERY &TNAME KEYS(TBKEYS) +
NAMES(TBNAMES) +
KEYNUM(TBKEYNUM) +
NAMENUM(TBNAMNUM) +
ROWNUM(TBROWS)
SET A = &EVAL(&LENGTH(&STR(&TBKEYS)) - 1)
SET B = &EVAL(&LENGTH(&STR(&TBNAMES)) - 1)
IF &A > 1 THEN +
SET TBKEYS = &SUBSTR(2:&A,&STR(&TBKEYS))
IF &B > 1 THEN +
SET TBNAMES = &SUBSTR(2:&B,&STR(&TBNAMES))
SET TBFIELDS = &STR(&TBKEYS &TBNAMES)
ISPEXEC VPUT (TNAME TDSN TBFIELDS) SHARED
ISPEXEC SELECT CMD(%CNVTUPC2)
IF &LASTCC > 0 THEN GOTO LOOP
ELSE +
DO
ISPEXEC VGET (TBFIELDS) SHARED
IF &TBFIELDS = THEN +
DO
SET ZEDLMSG = &STR(NO FIELDS SELECTED FROM "&TNAME")
ISPEXEC SETMSG MSG(UTLZ001)
GOTO LOOP
END
END
SET ZEDLMSG = &STR(*** CONVERTING "&TNAME" TO UPPER CASE ***)
IF &DIALOG = ON THEN +
DO
ISPEXEC SETMSG MSG(UTLZ000)
ISPEXEC CONTROL DISPLAY LOCK
ISPEXEC DISPLAY PANEL(UTILUPCS)
END
ELSE WRITE &ZEDLMSG
FREE ATTRLIST(ATTRIB1)
ATTRIB ATTRIB1 +
RECFM(F B) +
LRECL(80) +
BLKSIZE(23440) +
OUTPUT
FREE DDNAME(SYSUT2)
DELETE SYSUT2
ALLOC DD(SYSUT2) DSN(SYSUT2) +
NEW CATALOG +
UNIT(SYSDA) +
SPACE(1,1) TRACKS RELEASE +
USING(ATTRIB1)
OPENFILE SYSUT2 OUTPUT
SET SYSUT2 = &STR(PROC 0 FIELDS())
PUTFILE SYSUT2
SET SYSUT2 = &STR(ISPEXEC VGET (DBGSWTCH) PROFILE)
PUTFILE SYSUT2
SET SYSUT2 = &STR(IF &&DBGSWTCH = &STR(ON) THEN +)
PUTFILE SYSUT2
SET SYSUT2 = &STR(CONTROL MSG LIST CONLIST SYMLIST NOFLUSH ASIS)
PUTFILE SYSUT2
SET SYSUT2 = &STR(ELSE CONTROL NOMSG NOLIST NOFLUSH NOPROMPT ASIS)
PUTFILE SYSUT2
SET SYSUT2 = &STR(ISPEXEC VGET (&&FIELDS))
PUTFILE SYSUT2
SET X = &TBFIELDS
DO WHILE &X >
SET A = &SYSINDEX(&STR( ),&STR(&X))
SET A = &A - 1
IF &A > 0 THEN +
DO
SET SYSUT2 = &SUBSTR(1:&A,&STR(&X))
SET SYSUT2 = &STR(SET &SYSUT2 = )+
&STR(&&SYSCAPS(&&NRSTR(&STR(&&)&SYSUT2)))
PUTFILE SYSUT2
SET A = &A + 2
SET SLEN = &LENGTH(&STR(&X))
SET &X = &SUBSTR(&A:&SLEN,&STR(&X))
END
ELSE +
DO
SET SYSUT2 = &STR(SET &X = )+
&STR(&&SYSCAPS(&&NRSTR(&STR(&&)&X)))
PUTFILE SYSUT2
SET X =
END
END
SET SYSUT2 = &STR(ISPEXEC VPUT (&&FIELDS))
PUTFILE SYSUT2
SET SYSUT2 = &STR(EXIT)
PUTFILE SYSUT2
CLOSFILE SYSUT2
FREE DDNAME(SYSUT2)
SET SAVECC = 0
ISPEXEC TBTOP &TNAME
ISPEXEC TBVCLEAR &TNAME
ISPEXEC TBSKIP &TNAME NUMBER(1)
SET SAVECC = &LASTCC
DO WHILE &SAVECC = 0
SET X = 0
ISPEXEC VPUT (&TBFIELDS)
EXEC '&SYSUID..SYSUT2' 'FIELDS(''&TBFIELDS'')'
ISPEXEC VGET (&TBFIELDS)
ISPEXEC TBMOD &TNAME
ISPEXEC TBVCLEAR &TNAME
ISPEXEC TBSKIP &TNAME NUMBER(1) POSITION(POSROW)
SET SAVECC = &LASTCC
END
ISPEXEC TBCLOSE &TNAME
ISPEXEC LIBDEF ISPTABL
FREE ATTRLIST(ATTRIB1)
SET ZEDLMSG = &STR(FIELDS IN "&TNAME" TABLE CONVERTED TO UPPER CASE)
ISPEXEC SETMSG MSG(UTLZ000)
EXIT
HELPSEC: +
CLEAR
WRITE *** HELP FOR CLIST CNVTUPCS ***
WRITE
WRITE THIS CLIST CONVERTS EVERY FIELD IN A TABLE TO UPPER CASE WHEREEVER
WRITE THERE ARE LOWER-CASE ALPHABETIC CHARACTERS. IT NEEDS TO KNOW THE
WRITE OUTPUT TABLE LIBRARY NAME AND THE TABLE NAME. THE INPUT TABLE
WRITE WILL BE THE FIRST ONE IN THE ISPTLIB CONCATENATION WITH THAT NAME.
WRITE
WRITE BASIC SYNTAX :
WRITE
WRITE COMMAND ===> TSO CNVTUPCS TNAME(OUTPUT.ISPTLIB) TDSN(TBLNAME)
WRITE
WRITE IF YOU DO NOT SPECIFY THE OUTPUT TABLE LIBRARY NAME, OR THE INPUT
WRITE TABLE NAME, YOU WILL BE TAKEN TO AN ISPF PANEL TO ENTER THESE
WRITE PARAMETERS.
WRITE
WRITE *** END OF HELP *** NO PROCESSING PERFORMED ***
EXIT
Documentation
This utility allows you to convert 1, some, or all of the fields in a given
ISPF table from lower or mixed case to upper case.

0 Comments