Example of an application that uses MMS translation services

The following example builds and updates and MPB, then invokes the MMS translate function to obtain the translated message. There are more examples for each MMS macro (BLDMPB, QRYLANG, TRANMSG, UPDTMPB) in the z/OS MVS Programming: Assembler Services Reference ABE-HSP and the z/OS MVS Programming: Assembler Services Reference IAR-XCT.
TRANSMPB CSECT
TRANSMPB AMODE  31
TRANSMPB RMODE  ANY
         STM    14,12,12(13)
         BALR   12,0
         USING  *,12
         ST     13,SAVE+4
         LA     15,SAVE
         ST     15,8(13)
         LR     13,15
*
***********************************************************************
*        OBTAIN WORKING STORAGE AREA                                  *
***********************************************************************
         GETMAIN RU,LV=STORLEN,SP=SP230
         LR    R4,R1
*
***********************************************************************
*        CREATE MPB HEADER SECTION                                    *
***********************************************************************
*
         BLDMPB MPBPTR=(R4),MPBLEN=MPBL,MSGID=MSGID,                   C
               MSGIDLEN=MIDLEN
*
***********************************************************************
*        ADD SUBSTITUTION DATA TO MPB FOR DAY 3, TUESDAY              *
***********************************************************************
*
         LR    R2,R4
         A     R2,MPBL
         USING VARS,R2
*
         UPDTMPB MPBPTR=(R4),MPBLEN=MPBL,SUBOOFST=VARS,                C
               TOKEN=TOKN,TOKLEN=TOKL,TOKTYPE=TOKT,                    C
               SUBSDATA=SDATA,SUBSLEN=SDATAL
*
         USING MIO,R3
         LA    R3,VARSLEN         OBTAIN LENGTH OF VARS AREA
         AR    R3,R2              CALCULATE ADDRESS MIO
         LA    R5,MLEN            GET LENGTH OF MIO
         AR    R5,R3              CALCULATE ADDRESS OF OUTPUT BUFFER
         ST    R4,VARSINBF        CREATE ADDRESS LIST
*
***********************************************************************
*        ISSUE TRANSLATE TO OBTAIN MESSAGE TEXT REPRESENTED BY THE    *
*        CREATED MPB                                                  *
***********************************************************************
*
         TRANMSG MIO=MIO,MIOL=MIOLEN,INBUF=(VARSINBF,ONE),             C
               OUTBUF=(R5),OUTBUFL=OUTAREAL,LANGCODE=LC
*
***********************************************************************
*        FREE STORAGE AREA                                            *
***********************************************************************
*
         FREEMAIN RU,LV=STORLEN,SP=SP230,A=(4)
*
         L     13,SAVE+4
         LM    14,12,12(13)
         BR    14
         DROP
***********************************************************************
MPBL     DC    A(MPBLEN)
MSGID    DC    CL10'MSGID2'
MIDLEN   DC    A(MIDL)
TOKN     DC    CL3'DAY'
TOKL     DC    F'3'
TOKT     DC    CL1'3'
SDATA    DC    CL1'3'
SDATAL   DC    A(SDL)
MIOLEN   DC    A(MLEN)
OUTAREAL DC    A(STORLEN-(MPBLEN+VARSLEN+MLEN))
ONE      DC    F'1'
LC       DC    CL3'JPN'
SAVE     DC    18F'0'
SP230    EQU   230
STORLEN  EQU   512
SDL      EQU   6
MIDL     EQU   6
MPBLEN   EQU   (MPBVDAT-MPB)+(MPBMID-MPBMSG)+(MPBSUB-MPBSB)+MIDL+SDL
MLEN     EQU   (MIOVDAT-MIO)+MIOMSGL
R1       EQU   1
R2       EQU   2
R3       EQU   3
R4       EQU   4
R5       EQU   5
***********************************************************************
         DSECT
         CNLMMPB
         CNLMMCA
         CNLMMIO
VARS     DSECT
VARSINBF DS    F
VARSAREA DS    CL24
VARSLEN  EQU   *-VARS
         END TRANSMPB