|
Chris,
Sorry for not getting back to you sooner, but work keeps getting in
the way...
Anyway, here is a sample ILE RPG program which basically creates an
EBCDIC (37) to ASCII (819) conversion table and then converts some
CCSID 37 data to CCSID 819 using MI. I think you will see that it
can be easily changed to work with any of the SBCS encodings you may
want to use.
Bruce Vining
D* compile with DFTACTGRP(*NO)
D* sample program assumes that the *SRCF is CCSID(37) as variable
D* TestData values are imbedded in the program source
D* no error checking is provided (if you give "bad" CCSIDs to
D* QTQCVRT)
D*
D* Mapping tables
D*
DStartMap s 256
DTo819 s 256
D*
D* Data variables
D*
DTestData s 50 inz('This is test data')
D*
D* Parameters for QTQCVRT/CDRCVRT API, see API Reference for details
D*
DCCSID1 s 10i 0 inz(37)
DST1 s 10i 0 inz(0)
DL1 s 10i 0 inz(%size(StartMap))
DCCSID2 s 10i 0 inz(819)
DST2 s 10i 0 inz(0)
DGCCASN s 10i 0 inz(0)
DL2 s 10i 0 inz(%size(To819))
DL3 s 10i 0
DL4 s 10i 0
DFB s 12
D*
D* Prototype the MI instruction
D*
DConvert PR EXTPROC('_XLATEB')
D * VALUE
D * VALUE
D 10u 0 VALUE
D*
D* Working area to get hex values
D*
D ds
D x 5i 0
D LowX 2 2
C*
C* Initialize StartMap from x'00' to x'FF'
C*
C 0 do 255 x
C eval %subst(StartMap:x+1:1) = LowX
C enddo
C*
C* Now get translate table values for CCSID 37 to CCSID 819
C*
C call 'QTQCVRT'
C parm CCSID1
C parm ST1
C parm StartMap
C parm L1
C parm CCSID2
C parm ST2
C parm GCCASN
C parm L2
C parm To819
C parm L3
C parm L4
C parm FB
C*
C* Now convert 'This is test data' to 819 from 37 using MI
C*
C callp Convert( %addr(TestData)
C :%addr(To819)
C :%size(TestData))
C*
C* Look at TestData under debug at this point, and you should
C* find x'5468697320697320746573742064617461202020...' which is
C* the CCSID 819 equivalent of 'This is test data'
C*
C eval *inlr = '1'
C return
>
>WOW,
>
>Can't beat MI in any program. How do you execute MI from RPGLE?
>
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.