Page History
...
詳細は、製品より提供されている RPG ソース・ファイル QRPGLRSRC、および QCLSRC ソース・ファイルの CRTDEMO プログラムのソースを参照してください。
以下の例には、必要なものはすべて含まれており、コンパイルを除き、その他の追加作業は必要ありません。
H OPTION(*SRCSTMT : *NODEBUGIO) DFTACTGRP(*NO) ACTGRP(*CALLER)H BNDDIR('JSMBNDDIR')** V6R1 - Limits* Maximum data structure size is 16,773,104 bytes* Data structure size = element size * occurrence*D ListDef1 S 60A DIM(3) CTDATAD ListDefSize S 10I 0 INZ(0)D ListEntSize S 10I 0 INZ(0)D ListCount S 10I 0 INZ(0)D ListMaxCount S 10I 0 INZ(0)*D JSMHDL S 4A INZ(*BLANKS)D JSMSRV S 50A INZ(*BLANKS)D JSMSTS S 20A INZ(*BLANKS)D JSMMSG S 512A INZ(*BLANKS)D JSMCMD S 512A INZ(*BLANKS)D ZEROLENGTH S 10I 0 INZ(0)*D COUNT S 6S 0 INZ(0)*D LST1 DS OCCURS(9999)D PRDID 10AD PRDNME 20AD PRDAMT 10P 2*D LST2 DS DIM(9999) QUALIFIEDD PRDID 10AD PRDNME 20AD PRDAMT 10P 2** JSMX_BEGIN*C CALLB(D) 'JSMX_BEGIN'C PARM *OMITC PARM ZEROLENGTH** JSMX_OPEN - USE JSMCLTDTA FOR SERVER*C CLEAR JSMSRVC EVAL JSMSRV = ''C CALLB(D) 'JSMX_OPEN'C PARM JSMHDLC PARM JSMSRVC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** SERVICE_LOAD*C CLEAR JSMCMDC EVAL JSMCMD = 'SERVICE_LOAD' +C ' SERVICE(ExcelService)' +C ' TRACE(*YES)'C CALLB(D) 'JSMX_COMMAND'C PARM JSMHDLC PARM JSMCMDC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** CREATE*C CLEAR JSMCMDC EVAL JSMCMD = 'CREATE'C CALLB(D) 'JSMX_COMMAND'C PARM JSMHDLC PARM JSMCMDC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** ADD OBJECT(*SHEET)*C CLEAR JSMCMDC EVAL JSMCMD = 'ADD OBJECT(*SHEET)' +C ' SHEET(MyTest)'C CALLB(D) 'JSMX_COMMAND'C PARM JSMHDLC PARM JSMCMDC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** ADD OBJECT(*CELLSTYLE)*C CLEAR JSMCMDC EVAL JSMCMD = 'ADD OBJECT(*CELLSTYLE)' +C ' TYPE(*NUMBER)' +C ' COLUMN(5) RANGE(10,20)' +C ' FONT(*TAHOMA)' +C ' FORMAT(*FORMAT4)' +C ' HALIGN(*RIGHT)' +C ' BACKGROUND(*YELLOW)'C CALLB(D) 'JSMX_COMMAND'C PARM JSMHDLC PARM JSMCMDC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** WRITE LIST*C EVAL COUNT = 0C 1 DO 20C ADD 1 COUNTC COUNT OCCUR LST1C EVAL PRDID = 'ID' + %CHAR (COUNT)C EVAL PRDNME = 'Product ' + %CHAR (COUNT)C EVAL PRDAMT = 1000.45 + COUNTC ENDDO** Reset list to beginningC 1 OCCUR LST1C EVAL ListDefSize = %SIZE(ListDef1:*ALL)C EVAL ListEntSize = %SIZE(LST1)C EVAL ListCount = COUNTC EVAL ListMaxCount = %ELEM(LST1)C CALLB(D) 'JSMX_BINDLST'C PARM JSMHDLC PARM ListDef1C PARM ListDefSizeC PARM LST1C PARM ListEntSizeC PARM ListCountC PARM ListMaxCountC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** WRITE R1C1*C CLEAR JSMCMDC EVAL JSMCMD = 'WRITE R1C1(10,3)'C CALLB(D) 'JSMX_COMMAND'C PARM JSMHDLC PARM JSMCMDC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** WRITE LIST 2*C EVAL COUNT = 0C 1 DO 20C ADD 1 COUNTC EVAL LST2(COUNT).PRDID = 'ID' + %CHAR (COUNT)C EVAL LST2(COUNT).PRDNME = 'NME' + %CHAR (COUNT)C EVAL LST2(COUNT).PRDAMT = 2000.47 + COUNTC ENDDO*C EVAL ListDefSize = %SIZE(ListDef1:*ALL)C EVAL ListEntSize = %SIZE(LST2)C EVAL ListCount = COUNTC EVAL ListMaxCount = %ELEM(LST2)C CALLB(D) 'JSMX_BINDLST'C PARM JSMHDLC PARM ListDef1C PARM ListDefSizeC PARM LST2C PARM ListEntSizeC PARM ListCountC PARM ListMaxCountC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** WRITE R1C1*C CLEAR JSMCMDC EVAL JSMCMD = 'WRITE R1C1(10,10)'C CALLB(D) 'JSMX_COMMAND'C PARM JSMHDLC PARM JSMCMDC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** READ LIST 2*C CLEAR LST1C CLEAR LST2*C EVAL ListDefSize = %SIZE(ListDef1:*ALL)C EVAL ListEntSize = %SIZE(LST2)C EVAL ListCount = 0C EVAL ListMaxCount = %ELEM(LST2)C CALLB(D) 'JSMX_BINDLST'C PARM JSMHDLC PARM ListDef1C PARM ListDefSizeC PARM LST2C PARM ListEntSizeC PARM ListCountC PARM ListMaxCountC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** READ R1C1*C CLEAR JSMCMDC EVAL JSMCMD = 'READ R1C1(10,15) ROWCOUNT(5)'C CALLB(D) 'JSMX_COMMAND'C PARM JSMHDLC PARM JSMCMDC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** DSPLY ListCount* DO LISTCOUNT COUNT* EVAL PRDID = LST2(COUNT).PRDID* EVAL PRDNME = LST2(COUNT).PRDNME* EVAL PRDNME = %CHAR (LST2(COUNT).PRDAMT)* DSPLY LST2(COUNT)* DSPLY PRDNME* ENDDO** SAVE FILE*C CLEAR JSMCMDC EVAL JSMCMD = 'SAVE' +C ' FILE(demo.xlsx)'C CALLB(D) 'JSMX_COMMAND'C PARM JSMHDLC PARM JSMCMDC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** CLOSE*C CLEAR JSMCMDC EVAL JSMCMD = 'CLOSE'C CALLB(D) 'JSMX_COMMAND'C PARM JSMHDLC PARM JSMCMDC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** SERVICE_UNLOAD*C CLEAR JSMCMDC EVAL JSMCMD = 'SERVICE_UNLOAD'C CALLB(D) 'JSMX_COMMAND'C PARM JSMHDLC PARM JSMCMDC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** JSMX_CLOSE*C CALLB(D) 'JSMX_CLOSE'C PARM JSMHDLC PARM JSMSTSC PARM JSMMSGC CALLP checkSTS(JSMSTS:JSMMSG)** JSMX_END*C CALLB(D) 'JSMX_END'*C SETON LR********************************* Procedure to check JSM status********************************P checkSTS BD checkSTS PI ND csJSMSTS CONST LIKE(JSMSTS)D csJSMMSG CONST LIKE(JSMMSG)D csMSGTXT S 512AC IF csJSMSTS <> 'OK'C EVAL csMSGTXT = %TRIM(csJSMSTS) + ' ' +C %TRIM(csJSMMSG)C CALLP sendMSG(csMSGTXT)C RETURN *OFFC ENDIFC RETURN *ONP E*************************************** Procedure to send a program message**************************************P sendMSG BD sendMSG PID smMSGTXT 512A VALUED smMSGT S 10A INZ('*DIAG')D smMSGI S 7A INZ('CPF9897')D smMSGF S 20A INZ('QCPFMSG *LIBL ')D smMSGL S 10I 0 INZ(%SIZE(smMSGTXT))D smSTKE S 10A INZ('*')D smSTKC S 10I 0 INZ(1)D smMSGK S 4A INZ(*BLANK)D smERRC S 10I 0 INZ(0)C CALL 'QMHSNDPM'C PARM smMSGIC PARM smMSGFC PARM smMSGTXTC PARM smMSGLC PARM smMSGTC PARM smSTKEC PARM smSTKCC PARM smMSGKC PARM smERRCP E**CTDATA ListDef1PRDID A000001000PRDNME A000002000PRDAMT P000001002