Something can be good and bad at different points in life, so don't trust Greek philosophers too much.
The same applies for tests. They allow you to have a convenient verification method, but they also can tie you up to the current architecture. This may be what you want or not. So you need to take that into account.
On new projects, don't write a test till you have a good enough solid base; otherwise, you will be verifying the wrong thing, which leads to nothing.
Since MC is built modularly, this allows us to test pure Java classes individually. These classes are easier to test because they don't need to mock anything or connect to any remote server or any other fancy stuff. Just instantiate the object, perform some operation, and validate the result.
These classes are very important because they contain core logic functionality.
These test are executed automatically with every mvn clean package.
Integration tests are a different beast, especially on IBM i-related projects.
Here is the problem: You want to test the full application stack; it needs to be reproducible anywhere and by anyone. Run on any remote IBM i server and be executed automatically from your laptop.
Quite a challenge, right? MC just solved this problem and shows a real test: The official TOBi recursive example is build on a remote real hardware.
Create a .env file like this at project root
IBMI_HOSTNAME=BIGIRON.COM
IBMI_USERNAME=BIGBOY
IBMI_PASSWORD=BIGMONEYThen you get various flavors of tests.
mvn clean verify -Pintegration-heavy # Build the full tobi recursive test
mvn clean verify -Pintegration-fast # Build an object with many dependencies
That's it.
StreamCompilation Integration Test
- Connects to a real IBM I
- Upload source files from repo McOnTobi
- Execute compilation flow remotely
- Generate log
- Remove created objects
Here is the tobi-example yaml spec
# Global defaults
defaults:
TGTRLS: CURRENT
DBGVIEW: ALL
OPTION: EVENTF
REPLACE: YES
TGTCCSID: JOB
before:
CrtBndDir:
BNDDIR: SAMPLE
after:
DltObj:
OBJ: SAMPLE
OBJTYPE: BndDir
failure:
DltObj:
OBJ: SAMPLE
OBJTYPE: BndDir
targets:
# Simple rpgle compilation
curlib.ADDnum.pgm.rpgle:
params:
SRCSTMF: QRPGLESRC/ADDNUM.RPGLE
# Files used by reference
curlib.SAMREF.PF.dds:
params:
SRCSTMF: common/SAMREF.PF.dds
curlib.vatdef.pf.dds:
params:
SRCSTMF: functionsVAT/vatdef.pf.dds
# ART200 compilation context
curlib.ARTICLE.pf.dds: # PF of ART200
params:
SRCSTMF: QDDSSRC/ARTICLE.pf.dds
curlib.ARTICLE1.lf.dds: # LF of ARTICLE
params:
SRCSTMF: QDDSSRC/ARTICLE1.lf.dds
curlib.ARTICLE2.lf.dds: # LF of ARTICLE
params:
SRCSTMF: QDDSSRC/ARTICLE2.lf.dds
curlib.ART200D.dspf.dds: # DSPF of ART200
params:
SRCSTMF: QDDSSRC/ART200D.dspf.dds
curlib.FAMILLY.PF.dds: # PF of module FAM300
params:
SRCSTMF: QDDSSRC/FAMILLY.PF.dds
curlib.FAMILL1.LF.dds: # LF of PF FAMILLY
params:
SRCSTMF: QDDSSRC/FAMILL1.LF.dds
curlib.FAM300.module.RPGLE: # Module of FFAMILLY SrvPgm
params:
SRCSTMF: QRPGLESRC/FAM300.module.RPGLE
curlib.FAM301D.DSPF.dds: # DSPF of module FAM301
params:
SRCSTMF: QDDSSRC/FAM301D.DSPF.dds
curlib.FAM301.module.RPGLE: # Module of FFAMILLY SrvPgm
params:
SRCSTMF: QRPGLESRC/FAM301.module.RPGLE
curlib.FFAMILLY.srvpgm.BND: # SrvPgm of ART200
params:
SRCSTMF: QSRVSRC/FFAMILLY.srvpgm.BND
MODULE:
- FAM300
- FAM301
curlib.ART200.pgm.sqlrpgle: # Pgm
before:
AddBndDirE: # Add srvpgm required by ART200
BndDir: SAMPLE
Obj: FFAMILLY
params:
SRCSTMF: QRPGLESRC/ART200.pgm.sqlrpgle
# Context of ART201
curlib.PROVIDER.PF.dds:
params:
SRCSTMF: QDDSSRC/PROVIDER.PF.dds
curlib.PROVIDE1.LF.dds:
params:
SRCSTMF: QDDSSRC/PROVIDE1.LF.dds
curlib.ARTIPROV.PF.dds: # PF of ART201
params:
SRCSTMF: QDDSSRC/ARTIPROV.PF.dds
curlib.ARTIPRO1.LF.dds: # LF of ARTIPROV
params:
SRCSTMF: QDDSSRC/ARTIPRO1.LF.dds
curlib.ART201D.dspf.dds: # DSPF of PGM ART201
params:
SRCSTMF: QDDSSRC/ART201D.dspf.dds
curlib.ART300.module.rpgle: # Module of FARTICLE SrvPgm
params:
SRCSTMF: QRPGLESRC/ART300.module.rpgle
curlib.ART301D.dspf.dds: # DSPF of ART301
params:
SRCSTMF: QDDSSRC/ART301D.dspf.dds
curlib.ART301.module.SQLRPGLE: # Module of FARTICLE SrvPgm
params:
SRCSTMF: QRPGLESRC/ART301.module.SQLRPGLE
curlib.FARTICLE.srvpgm.BND: # SrvPgm of ART201
params:
SRCSTMF: QSRVSRC/FARTICLE.srvpgm.BND
MODULE:
- ART300
- ART301
BNDSRVPGM: FFAMILLY
TEXT: Function Article
curlib.PRO300.module.RPGLE:
params:
SRCSTMF: QRPGLESRC/PRO300.module.RPGLE
curlib.FPROVIDER.srvpgm.BND:
params:
SRCSTMF: QSRVSRC/FPROVIDER.srvpgm.BND
MODULE: PRO300
TEXT: Functions Provider
curlib.ART201.pgm.rpgle:
before:
AddBndDirE: # Add srvpgm required by ART201
BndDir: SAMPLE
Obj:
- FARTICLE
- FPROVIDER
params:
SRCSTMF: QRPGLESRC/ART201.pgm.rpgle
# Context of ART202
curlib.ART202D.dspf.dds: # DSPF of ART202
params:
SRCSTMF: QDDSSRC/ART202D.dspf.dds
curlib.ART202.PGM.RPGLE:
params:
SRCSTMF: QRPGLESRC/ART202.PGM.RPGLE
# Context of LOG100
curlib.PARAMETER.PF.dds: # PF of LOG100
params:
SRCSTMF: QDDSSRC/PARAMETER.PF.dds
curlib.LOG100.PGM.RPGLE:
params:
SRCSTMF: QRPGLESRC/LOG100.PGM.RPGLE
# Context of ORD100
curlib.DETORD.PF.dds: # PF of ORD100
params:
SRCSTMF: QDDSSRC/DETORD.PF.dds
curlib.DETORD1.LF.dds: # LF of DETORD
params:
SRCSTMF: QDDSSRC/DETORD1.LF.dds
curlib.ORDER.PF.dds: # PF of ORD100
params:
SRCSTMF: QDDSSRC/ORDER.PF.dds
curlib.ORDER3.LF.dds: # LF of ORDER
params:
SRCSTMF: QDDSSRC/ORDER3.LF.dds
curlib.ORD100D.DSPF.dds: # DSPF of ORD100
params:
SRCSTMF: QDDSSRC/ORD100D.DSPF.dds
curlib.vat300.module.rpgle: # Module of FVAT SrvPgm
params:
SRCSTMF: functionsVAT/vat300.module.rpgle
curlib.fvat.srvpgm.bnd: # SrvPgm of ORD100
params:
SRCSTMF: functionsVAT/fvat.srvpgm.bnd
MODULE: VAT300
TEXT: Functions VAT
curlib.CUSTOMER.PF.dds: # PF of CUS300
params:
SRCSTMF: QDDSSRC/CUSTOMER.PF.dds
curlib.CUSTOME1.LF.dds: # LF of CUSTOMER PF
params:
SRCSTMF: QDDSSRC/CUSTOME1.LF.dds
curlib.CUS300.module.RPGLE: # Module of FCUSTOMER SrvPgm
params:
SRCSTMF: QRPGLESRC/CUS300.module.RPGLE
curlib.CUS301D.dspf.dds: # DSPF of CUS301
params:
SRCSTMF: QDDSSRC/CUS301D.dspf.dds
curlib.CUS301.module.SQLRPGLE: # Module of FCUSTOMER SrvPgm
params:
SRCSTMF: QRPGLESRC/CUS301.module.SQLRPGLE
curlib.FCUSTOMER.srvpgm.BND: # SrvPgm of ORD100
params:
SRCSTMF: QSRVSRC/FCUSTOMER.srvpgm.BND
MODULE:
- CUS300
- CUS301
TEXT: Functions Customer
curlib.ORD100.PGM.RPGLE:
before:
OvrDbf:
File: tmpdetord
ToFile: detord
OvrScope: Job
AddBndDirE: # Add srvpgm required by ORD100
BndDir: SAMPLE
Obj:
- fvat
- FCUSTOMER
params:
SRCSTMF: QRPGLESRC/ORD100.PGM.RPGLE
after:
DltOvr:
File: tmpdetord
LVL: Job
# Context of ORD101
curlib.ORDER1.LF.dds: # LF of ORDER
params:
SRCSTMF: QDDSSRC/ORDER1.LF.dds
curlib.ORD101D.DSPF.dds: # DSPF of ORD101
params:
SRCSTMF: QDDSSRC/ORD101D.DSPF.dds
curlib.ORD101.PGM.RPGLE:
params:
SRCSTMF: QRPGLESRC/ORD101.PGM.RPGLEHere is the resumed integration test log
+14:30:13.658 [main] INFO c.g.kraudy.compiler.MasterCompiler -
Chain of commands:
CRTBNDDIR BNDDIR(*CURLIB/SAMPLE)
CRTBNDRPG PGM(*CURLIB/ADDNUM) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/ADDNUM.RPGLE'') OPTION(*EVENTF) DBGVIEW(*ALL) REPLACE(*YES) TGTRLS(*CURRENT) TGTCCSID(*JOB)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/common/SAMREF.PF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QPFSRC.file/SAMREF.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTPF FILE(*CURLIB/SAMREF) SRCFILE(ROBKRAUDY1/QPFSRC) SRCMBR(SAMREF) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/functionsVAT/vatdef.pf.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QPFSRC.file/VATDEF.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTPF FILE(*CURLIB/VATDEF) SRCFILE(ROBKRAUDY1/QPFSRC) SRCMBR(VATDEF) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ARTICLE.pf.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QPFSRC.file/ARTICLE.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTPF FILE(*CURLIB/ARTICLE) SRCFILE(ROBKRAUDY1/QPFSRC) SRCMBR(ARTICLE) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ARTICLE1.lf.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QLFSRC.file/ARTICLE1.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTLF FILE(*CURLIB/ARTICLE1) SRCFILE(ROBKRAUDY1/QLFSRC) SRCMBR(ARTICLE1) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ARTICLE2.lf.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QLFSRC.file/ARTICLE2.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTLF FILE(*CURLIB/ARTICLE2) SRCFILE(ROBKRAUDY1/QLFSRC) SRCMBR(ARTICLE2) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ART200D.dspf.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QDSPFSRC.file/ART200D.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTDSPF FILE(*CURLIB/ART200D) SRCFILE(ROBKRAUDY1/QDSPFSRC) SRCMBR(ART200D) OPTION(*EVENTF) REPLACE(*YES)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/FAMILLY.PF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QPFSRC.file/FAMILLY.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTPF FILE(*CURLIB/FAMILLY) SRCFILE(ROBKRAUDY1/QPFSRC) SRCMBR(FAMILLY) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/FAMILL1.LF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QLFSRC.file/FAMILL1.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTLF FILE(*CURLIB/FAMILL1) SRCFILE(ROBKRAUDY1/QLFSRC) SRCMBR(FAMILL1) OPTION(*EVENTF)
CRTRPGMOD MODULE(*CURLIB/FAM300) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/FAM300.module.RPGLE'') OPTION(*EVENTF) DBGVIEW(*ALL) REPLACE(*YES) TGTRLS(*CURRENT) TGTCCSID(*JOB)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/FAM301D.DSPF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QDSPFSRC.file/FAM301D.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTDSPF FILE(*CURLIB/FAM301D) SRCFILE(ROBKRAUDY1/QDSPFSRC) SRCMBR(FAM301D) OPTION(*EVENTF) REPLACE(*YES)
CRTRPGMOD MODULE(*CURLIB/FAM301) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/FAM301.module.RPGLE'') OPTION(*EVENTF) DBGVIEW(*ALL) REPLACE(*YES) TGTRLS(*CURRENT) TGTCCSID(*JOB)
CRTSRVPGM SRVPGM(*CURLIB/FFAMILLY) MODULE(*LIBL/FAM300 *LIBL/FAM301) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QSRVSRC/FFAMILLY.srvpgm.BND'') BNDSRVPGM(*NONE) OPTION(*EVENTF) REPLACE(*YES) TGTRLS(*CURRENT)
ADDBNDDIRE BNDDIR(*CURLIB/SAMPLE) OBJ(*LIBL/FFAMILLY)
CRTSQLRPGI OBJ(*CURLIB/ART200) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/ART200.pgm.sqlrpgle'') COMMIT(*NONE) OBJTYPE(*PGM) OPTION(*EVENTF) TGTRLS(*CURRENT) REPLACE(*YES) DBGVIEW(*SOURCE) CVTCCSID(*JOB)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/PROVIDER.PF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QPFSRC.file/PROVIDER.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTPF FILE(*CURLIB/PROVIDER) SRCFILE(ROBKRAUDY1/QPFSRC) SRCMBR(PROVIDER) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/PROVIDE1.LF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QLFSRC.file/PROVIDE1.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTLF FILE(*CURLIB/PROVIDE1) SRCFILE(ROBKRAUDY1/QLFSRC) SRCMBR(PROVIDE1) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ARTIPROV.PF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QPFSRC.file/ARTIPROV.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTPF FILE(*CURLIB/ARTIPROV) SRCFILE(ROBKRAUDY1/QPFSRC) SRCMBR(ARTIPROV) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ARTIPRO1.LF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QLFSRC.file/ARTIPRO1.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTLF FILE(*CURLIB/ARTIPRO1) SRCFILE(ROBKRAUDY1/QLFSRC) SRCMBR(ARTIPRO1) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ART201D.dspf.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QDSPFSRC.file/ART201D.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTDSPF FILE(*CURLIB/ART201D) SRCFILE(ROBKRAUDY1/QDSPFSRC) SRCMBR(ART201D) OPTION(*EVENTF) REPLACE(*YES)
CRTRPGMOD MODULE(*CURLIB/ART300) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/ART300.module.rpgle'') OPTION(*EVENTF) DBGVIEW(*ALL) REPLACE(*YES) TGTRLS(*CURRENT) TGTCCSID(*JOB)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ART301D.dspf.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QDSPFSRC.file/ART301D.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTDSPF FILE(*CURLIB/ART301D) SRCFILE(ROBKRAUDY1/QDSPFSRC) SRCMBR(ART301D) OPTION(*EVENTF) REPLACE(*YES)
CRTSQLRPGI OBJ(*CURLIB/ART301) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/ART301.module.SQLRPGLE'') COMMIT(*NONE) OBJTYPE(*MODULE) OPTION(*EVENTF) TGTRLS(*CURRENT) REPLACE(*YES) DBGVIEW(*SOURCE) CVTCCSID(*JOB)
CRTSRVPGM SRVPGM(*CURLIB/FARTICLE) MODULE(*LIBL/ART300 *LIBL/ART301) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QSRVSRC/FARTICLE.srvpgm.BND'') TEXT(''Function Article'') BNDSRVPGM(FFAMILLY) OPTION(*EVENTF) REPLACE(*YES) TGTRLS(*CURRENT)
CRTRPGMOD MODULE(*CURLIB/PRO300) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/PRO300.module.RPGLE'') OPTION(*EVENTF) DBGVIEW(*ALL) REPLACE(*YES) TGTRLS(*CURRENT) TGTCCSID(*JOB)
CRTSRVPGM SRVPGM(*CURLIB/FPROVIDER) MODULE(*LIBL/PRO300) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QSRVSRC/FPROVIDER.srvpgm.BND'') TEXT(''Functions Provider'') BNDSRVPGM(*NONE) OPTION(*EVENTF) REPLACE(*YES) TGTRLS(*CURRENT)
ADDBNDDIRE BNDDIR(*CURLIB/SAMPLE) OBJ(*LIBL/FARTICLE *LIBL/FPROVIDER)
CRTBNDRPG PGM(*CURLIB/ART201) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/ART201.pgm.rpgle'') OPTION(*EVENTF) DBGVIEW(*ALL) REPLACE(*YES) TGTRLS(*CURRENT) TGTCCSID(*JOB)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ART202D.dspf.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QDSPFSRC.file/ART202D.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTDSPF FILE(*CURLIB/ART202D) SRCFILE(ROBKRAUDY1/QDSPFSRC) SRCMBR(ART202D) OPTION(*EVENTF) REPLACE(*YES)
CRTBNDRPG PGM(*CURLIB/ART202) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/ART202.PGM.RPGLE'') OPTION(*EVENTF) DBGVIEW(*ALL) REPLACE(*YES) TGTRLS(*CURRENT) TGTCCSID(*JOB)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/PARAMETER.PF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QPFSRC.file/PARAMETER.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTPF FILE(*CURLIB/PARAMETER) SRCFILE(ROBKRAUDY1/QPFSRC) SRCMBR(PARAMETER) OPTION(*EVENTF)
CRTBNDRPG PGM(*CURLIB/LOG100) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/LOG100.PGM.RPGLE'') OPTION(*EVENTF) DBGVIEW(*ALL) REPLACE(*YES) TGTRLS(*CURRENT) TGTCCSID(*JOB)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/DETORD.PF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QPFSRC.file/DETORD.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTPF FILE(*CURLIB/DETORD) SRCFILE(ROBKRAUDY1/QPFSRC) SRCMBR(DETORD) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/DETORD1.LF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QLFSRC.file/DETORD1.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTLF FILE(*CURLIB/DETORD1) SRCFILE(ROBKRAUDY1/QLFSRC) SRCMBR(DETORD1) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ORDER.PF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QPFSRC.file/ORDER.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTPF FILE(*CURLIB/ORDER) SRCFILE(ROBKRAUDY1/QPFSRC) SRCMBR(ORDER) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ORDER3.LF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QLFSRC.file/ORDER3.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTLF FILE(*CURLIB/ORDER3) SRCFILE(ROBKRAUDY1/QLFSRC) SRCMBR(ORDER3) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ORD100D.DSPF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QDSPFSRC.file/ORD100D.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTDSPF FILE(*CURLIB/ORD100D) SRCFILE(ROBKRAUDY1/QDSPFSRC) SRCMBR(ORD100D) OPTION(*EVENTF) REPLACE(*YES)
CRTRPGMOD MODULE(*CURLIB/VAT300) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/functionsVAT/vat300.module.rpgle'') OPTION(*EVENTF) DBGVIEW(*ALL) REPLACE(*YES) TGTRLS(*CURRENT) TGTCCSID(*JOB)
CRTSRVPGM SRVPGM(*CURLIB/FVAT) MODULE(*LIBL/VAT300) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/functionsVAT/fvat.srvpgm.bnd'') TEXT(''Functions VAT'') BNDSRVPGM(*NONE) OPTION(*EVENTF) REPLACE(*YES) TGTRLS(*CURRENT)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/CUSTOMER.PF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QPFSRC.file/CUSTOMER.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTPF FILE(*CURLIB/CUSTOMER) SRCFILE(ROBKRAUDY1/QPFSRC) SRCMBR(CUSTOMER) OPTION(*EVENTF)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/CUSTOME1.LF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QLFSRC.file/CUSTOME1.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTLF FILE(*CURLIB/CUSTOME1) SRCFILE(ROBKRAUDY1/QLFSRC) SRCMBR(CUSTOME1) OPTION(*EVENTF)
CRTRPGMOD MODULE(*CURLIB/CUS300) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/CUS300.module.RPGLE'') OPTION(*EVENTF) DBGVIEW(*ALL) REPLACE(*YES) TGTRLS(*CURRENT) TGTCCSID(*JOB)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/CUS301D.dspf.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QDSPFSRC.file/CUS301D.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTDSPF FILE(*CURLIB/CUS301D) SRCFILE(ROBKRAUDY1/QDSPFSRC) SRCMBR(CUS301D) OPTION(*EVENTF) REPLACE(*YES)
CRTSQLRPGI OBJ(*CURLIB/CUS301) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/CUS301.module.SQLRPGLE'') COMMIT(*NONE) OBJTYPE(*MODULE) OPTION(*EVENTF) TGTRLS(*CURRENT) REPLACE(*YES) DBGVIEW(*SOURCE) CVTCCSID(*JOB)
CRTSRVPGM SRVPGM(*CURLIB/FCUSTOMER) MODULE(*LIBL/CUS300 *LIBL/CUS301) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QSRVSRC/FCUSTOMER.srvpgm.BND'') TEXT(''Functions Customer'') BNDSRVPGM(*NONE) OPTION(*EVENTF) REPLACE(*YES) TGTRLS(*CURRENT)
OVRDBF FILE(tmpdetord) TOFILE(*LIBL/detord) OVRSCOPE(*JOB)
ADDBNDDIRE BNDDIR(*CURLIB/SAMPLE) OBJ(*LIBL/fvat *LIBL/FCUSTOMER)
CRTBNDRPG PGM(*CURLIB/ORD100) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/ORD100.PGM.RPGLE'') OPTION(*EVENTF) DBGVIEW(*ALL) REPLACE(*YES) TGTRLS(*CURRENT) TGTCCSID(*JOB)
DLTOVR FILE(tmpdetord) LVL(*JOB)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ORDER1.LF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QLFSRC.file/ORDER1.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTLF FILE(*CURLIB/ORDER1) SRCFILE(ROBKRAUDY1/QLFSRC) SRCMBR(ORDER1) OPTION(*EVENTF)
ADDPFM FILE(ROBKRAUDY1/QDSPFSRC) MBR(ORD101D) SRCTYPE(DDS)
CPYFRMSTMF FROMSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QDDSSRC/ORD101D.DSPF.dds'') TOMBR(''/QSYS.lib/ROBKRAUDY1.lib/QDSPFSRC.file/ORD101D.mbr'') MBROPT(*REPLACE) CVTDTA(*AUTO) STMFCODPAG(1208)
CRTDSPF FILE(*CURLIB/ORD101D) SRCFILE(ROBKRAUDY1/QDSPFSRC) SRCMBR(ORD101D) OPTION(*EVENTF) REPLACE(*YES)
CRTBNDRPG PGM(*CURLIB/ORD101) SRCSTMF(''/home/ROBKRAUDY/test_1767558132566/tobiRecursive/QRPGLESRC/ORD101.PGM.RPGLE'') OPTION(*EVENTF) DBGVIEW(*ALL) REPLACE(*YES) TGTRLS(*CURRENT) TGTCCSID(*JOB)
DLTOBJ OBJ(*LIBL/SAMPLE) OBJTYPE(*BNDDIR)
+14:30:14.754 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: CHGCURDIR DIR(''/home/ROBKRAUDY'')
+14:30:43.011 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: RMVDIR DIR(''/home/ROBKRAUDY/test_1767558132566'') SUBTREE(*ALL)
+14:30:44.147 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ORD101) OBJTYPE(*PGM)
+14:30:45.339 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ORDER1) OBJTYPE(*FILE)
+14:30:46.488 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ORD100) OBJTYPE(*PGM)
+14:30:47.642 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/FCUSTOMER) OBJTYPE(*SRVPGM)
+14:30:48.757 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/CUS301) OBJTYPE(*MODULE)
+14:30:49.882 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/CUS300) OBJTYPE(*MODULE)
+14:30:51.049 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/CUSTOME1) OBJTYPE(*FILE)
14:37:17.541 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/CUSTOMER) OBJTYPE(*FILE)
+14:30:53.354 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/FVAT) OBJTYPE(*SRVPGM)
+14:30:54.504 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/VAT300) OBJTYPE(*MODULE)
+14:30:55.627 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ORDER3) OBJTYPE(*FILE)
+14:30:56.789 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ORDER) OBJTYPE(*FILE)
+14:30:57.956 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/DETORD1) OBJTYPE(*FILE)
+14:30:59.103 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/DETORD) OBJTYPE(*FILE)
+ 14:31:00.260 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/LOG100) OBJTYPE(*PGM)
+ 14:31:01.403 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/PARAMETER) OBJTYPE(*FILE)
+ 14:31:02.509 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ART202) OBJTYPE(*PGM)
+ 14:31:03.616 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ART201) OBJTYPE(*PGM)
+ 14:31:04.728 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/FPROVIDER) OBJTYPE(*SRVPGM)
+ 14:31:05.843 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/PRO300) OBJTYPE(*MODULE)
+ 14:31:06.985 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/FARTICLE) OBJTYPE(*SRVPGM)
+ 14:31:08.095 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ART301) OBJTYPE(*MODULE)
+ 14:31:09.215 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ART300) OBJTYPE(*MODULE)
+ 14:31:10.389 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ARTIPRO1) OBJTYPE(*FILE)
+ 14:31:11.545 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ARTIPROV) OBJTYPE(*FILE)
+ 14:31:12.706 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/PROVIDE1) OBJTYPE(*FILE)
+ 14:31:13.864 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/PROVIDER) OBJTYPE(*FILE)
+ 14:31:15.021 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ART200) OBJTYPE(*PGM)
+ 14:31:16.171 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/FFAMILLY) OBJTYPE(*SRVPGM)
+ 14:31:17.314 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/FAM301) OBJTYPE(*MODULE)
+ 14:31:18.467 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/FAM300) OBJTYPE(*MODULE)
+ 14:31:19.631 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/FAMILL1) OBJTYPE(*FILE)
+ 14:31:20.806 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/FAMILLY) OBJTYPE(*FILE)
+ 14:31:21.978 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ARTICLE2) OBJTYPE(*FILE)
+ 14:31:23.130 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ARTICLE1) OBJTYPE(*FILE)
+ 14:31:24.253 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ARTICLE) OBJTYPE(*FILE)
+ 14:31:25.420 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/VATDEF) OBJTYPE(*FILE)
+ 14:31:27.600 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/SAMREF) OBJTYPE(*FILE)
+ 14:31:28.745 [main] INFO c.g.kraudy.compiler.CommandExecutor -
Command successful: DLTOBJ OBJ(*CURLIB/ADDNUM) OBJTYPE(*PGM)