http://www.itjungle.com/mpo/mpo022802-story01.html http://www.itjungle.com/mpo/mpo031402-story02.html

Service Programs

  • moduli nomain, da compilare con 15
  • CL creazione serviceprogram e bindir
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)

CREARE MODULI E SERVICE PROGRAM

tutorial

  • compilare moduli con comando 15, F4+F10 assicurarsi che sia impostato "Visualizzazione di debug" *SOURCE
  • compilare service program, call CL AW__
  • ricompilare programma chiamante

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)

C and API

      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