Figure 1: Creating the UPPERCASE and LOWERCASE Commands /* Begin callout A */ Cmd Prompt(CAS1001) Parm Kwd(String) Type(*Char) Len(1) + RtnVal(*Yes) Min(1) Vary(*Yes *Int4) + Prompt(CAS1002) Parm Kwd(CCSID) Type(*Int4) Dft(*Job) + SpcVal((*Job 0)) PmtCtl(*PmtRqs) + Prompt(CAS1003) Parm Kwd(Direction) Type(*Int4) Constant(0) /* End callout A */ /* Begin callout B */ Cmd Prompt(CAS1011) Parm Kwd(String) Type(*Char) Len(1) + RtnVal(*Yes) Min(1) Vary(*Yes *Int4) + Prompt(CAS1002) Parm Kwd(CCSID) Type(*Int4) Dft(*Job) + SpcVal((*Job 0)) PmtCtl(*PmtRqs) + Prompt(CAS1003) Parm Kwd(Direction) Type(*Int4) Constant(1) /* End callout B */ /* Begin callout C */ CRTMSGF MSGF(VINING/USERMSGF) /* End callout C */ /* Begin callout D */ ADDMSGD MSGID(CAS1001) MSGF(VINING/USERMSGF) MSG('Uppercase Character String') ADDMSGD MSGID(CAS1011) MSGF(VINING/USERMSGF) MSG('Lowercase Character String') ADDMSGD MSGID(CAS1002) MSGF(VINING/USERMSGF) MSG('String to convert') ADDMSGD MSGID(CAS1003) MSGF(VINING/USERMSGF) MSG('CCSID of string') /* End callout D */ /* Begin callout E */ CRTCMD CMD(VINING/UPPERCASE) PGM(CASEAPI) ALLOW(*BPGM *IPGM *BMOD *IMOD) PMTFILE(USERMSGF) CRTCMD CMD(VINING/LOWERCASE) PGM(CASEAPI) ALLOW(*BPGM *IPGM *BMOD *IMOD) PMTFILE(USERMSGF) /* End callout E */