http://www.itjungle.com/mpo/mpo022802-story01.html http://www.itjungle.com/mpo/mpo031402-story02.html
CrtSrvPgm SrvPgm( MyLib/MySrvPgm ) + Module( Mod1 Mod2 Mod3 ) + Export( *All )
Export( *All ) parameter specifies that all publicly available modules and data items within the service program are also available to the user of the service program
moduli nomain:
H nomain /copy *libl/srccpy,cpy_protxx * procedure export P aw_getp b export D aw_getp pi 1n * ... D aw_getp_user 10a value * ... P aw_getp E
prototipo in file separato(cpy_protxx)
D aw_getp pr 1n D aw_getp_user 10a value ...
binder language: you can pick and choose which of a service program's exportable procedures and data to make available to the outside world, stesso nome del serviceprogram, usato automaticamente dal comando CrtSrvPgm file AW.bnd
STRPGMEXP PGMLVL(*CURRENT) LVLCHK(*YES) + SIGNATURE('GEN0000000001') EXPORT Symbol(AW_GETP ) ENDPGMEXP
programma chiamante:
H dftactgrp(*no) bnddir('AW') /copy *libl/srccpy,cpy_protxx C ... usa il prototipo
info di debug:
WRKSRVPGM SRVPGM(AW)
compilare sevice program
CRTSRVPGM SRVPGM(X_OBJ/AW) + MODULE(X_OBJ/AW_*) EXPORT(*SRCFILE) + SRCFILE(X_SRC/SRCMOD) SRCMBR(*SRVPGM) + TEXT('Service Program AW X') + ACTGRP(*CALLER) OPTION(*DUPPROC) + DETAIL(*BASIC) USRPRF(*USER) ALWRINZ(*YES)
assicurarsi che ci sia la bindir
CRTBNDDIR BNDDIR(X_OBJ/AW) ADDBNDDIRE BNDDIR(X_OBJ/AW) OBJ(X_OBJ/AW)
vedere i prototipi esportati da una bind dir:
WRKBNDDIRE BNDDIR(QC2LE)
** trovare tutte i swervice program e binddir
WRKOBJ OBJ(*ALL/*ALL) OBJTYPE(*SRVPGM) WRKOBJ OBJ(*ALL/*ALL) OBJTYPE(*BNDDIR)
H nomain bnddir('QC2LE') /copy *libl/srccpy,cpy_protaq
occorrono i prototipi delle funzioni API che si vogliono utilizzare, "ILE C/C++ Run-Time Library Functions" manual