Zitat Zitat von Chris.jan Beitrag anzeigen
Hat jemand zufällig ein Beispielprogramm oder wenigstens die das fertige Procedure-Interface? In der QSYSINC hab ich nix dazu gefunden. Würde mir etwas Zeit sparen.
Vielleicht hilft Dir folgendes geschwätzige CL weiter, das ich mal vor Ewigkeiten gebastelt habe...

-h

PHP-Code:
PGM
             DCL        
VAR(&RCVVARTYPE(*CHARLEN(1024VALUE(' ')
             
DCL        VAR(&RCVVARSIZTYPE(*INTLEN(4VALUE(1024)
             
DCL        VAR(&FMTNAMETYPE(*CHARLEN(8) +
                          
VALUE('CBTT0100')
             
DCL        VAR(&TIMZONTYPE(*CHARLEN(10VALUE('*SYS')
             
DCL        VAR(&ERRCDETYPE(*CHARLEN(16/* ERRC0100 */

             /* Wo in Datenstruktur wollen wir Daten holen? */
             /* wird je Unterstruktur verschoben */
             
DCL        VAR(&POINTTYPE(*INTLEN(4VALUE(0)

             
/* Datenstruktur ERRC0100 */
             
DCL        VAR(&ERRIDTYPE(*CHARSTG(*DEFINEDLEN(7) +
                          
DEFVAR(&ERRCDE 9)

             
/* Datenstruktur CBTT0100 */
             
DCL        VAR(&BYTRETTYPE(*INTSTG(*DEFINEDLEN(4) +
                          
DEFVAR(&RCVVAR 1/* Bytes returned */
             
DCL        VAR(&BYTAVLTYPE(*INTSTG(*DEFINEDLEN(4) +
                          
DEFVAR(&RCVVAR 5/* Bytes available */
             
DCL        VAR(&NUMENTTYPE(*INTSTG(*DEFINEDLEN(4) +
                          
DEFVAR(&RCVVAR 9/* Number of entries */
             
DCL        VAR(&OFFENTTYPE(*INTSTG(*DEFINEDLEN(4) +
                          
DEFVAR(&RCVVAR 13/* Offset to first +
                          entry */
             
DCL        VAR(&LPARNBRTYPE(*INTSTG(*DEFINED) +
                          
LEN(2DEFVAR(&RCVVAR 73/* LPAR-Number */
             
DCL        VAR(&LPARNAMETYPE(*CHARSTG(*DEFINED) +
                          
LEN(48DEFVAR(&RCVVAR 75/* Partition +
                          name */
             /* Unterstruktur je IOA */
             
DCL        VAR(&IOAINFOTYPE(*CHARLEN(160)
             
DCL        VAR(&IOAENTLENTYPE(*INTSTG(*DEFINED) +
                          
LEN(2DEFVAR(&IOAINFO 1)
             
DCL        VAR(&IOAENTNUMTYPE(*INTSTG(*DEFINED) +
                          
LEN(2DEFVAR(&IOAINFO 3)
             
DCL        VAR(&IOATYPETYPE(*CHARSTG(*DEFINED) +
                          
LEN(4DEFVAR(&IOAINFO 5)
             
DCL        VAR(&IOAMODELTYPE(*CHARSTG(*DEFINED) +
                          
LEN(4DEFVAR(&IOAINFO 9)
             
DCL        VAR(&IOASERIALTYPE(*CHARSTG(*DEFINED) +
                          
LEN(15DEFVAR(&IOAINFO 13)
             
DCL        VAR(&IOARSCNAMTYPE(*CHARSTG(*DEFINED) +
                          
LEN(10DEFVAR(&IOAINFO 28)
             
DCL        VAR(&IOAPHYLOCTYPE(*CHARSTG(*DEFINED) +
                          
LEN(79DEFVAR(&IOAINFO 38)
             
DCL        VAR(&IOAFRAMETYPE(*CHARSTG(*DEFINED) +
                          
LEN(4DEFVAR(&IOAINFO 117)
             
DCL        VAR(&IOACRDPOSTYPE(*CHARSTG(*DEFINED) +
                          
LEN(3DEFVAR(&IOAINFO 121)
             
DCL        VAR(&IOAVERSIONTYPE(*CHARSTG(*DEFINED) +
                          
LEN(1DEFVAR(&IOAINFO 124)
             
DCL        VAR(&IOAERRORTYPE(*CHARSTG(*DEFINED) +
                          
LEN(1DEFVAR(&IOAINFO 125)
             
DCL        VAR(&IOABATSTATYPE(*CHARSTG(*DEFINED) +
                          
LEN(1DEFVAR(&IOAINFO 126)
             
DCL        VAR(&IOAMAINTTYPE(*CHARSTG(*DEFINED) +
                          
LEN(1DEFVAR(&IOAINFO 127)
             
DCL        VAR(&IOACDATATYPE(*CHARSTG(*DEFINED) +
                          
LEN(1DEFVAR(&IOAINFO 128)
             
DCL        VAR(&IOADTWTYPE(*INTSTG(*DEFINEDLEN(2) +
                          
DEFVAR(&IOAINFO 129)
             
DCL        VAR(&IOADTETYPE(*INTSTG(*DEFINEDLEN(2) +
                          
DEFVAR(&IOAINFO 131)
             
DCL        VAR(&IOAPONTYPE(*INTSTG(*DEFINEDLEN(2) +
                          
DEFVAR(&IOAINFO 133)
             
DCL        VAR(&IOAPONADJTYPE(*INTSTG(*DEFINED) +
                          
LEN(2DEFVAR(&IOAINFO 135)

/* allgemeines */
             
DCL        VAR(&MESSAGETYPE(*CHARLEN(50)
             
DCL        VAR(&MSGTYPE(*CHARLEN(30)
             
DCL        VAR(&COUNTDOWNTYPE(*INTLEN(4VALUE(0)
             
DCL        VAR(&HEX01TYPE(*CHARLEN(1VALUE(X'01')
             
DCL        VAR(&HEX02TYPE(*CHARLEN(1VALUE(X'02')


             
CALLSUBR   SUBR(GET)


/* ========================================================= */
/* ***** GET ***** */
             
SUBR       SUBR(GET)
             
CALL       PGM(QSMRTVBTCPARM(&RCVVAR &RCVVARSIZ +
                          &
FMTNAME &TIMZON &ERRCDE)

             
CHGVAR     VAR(&MESSAGEVALUE('Error code = ' *TCAT +
                          &
ERRID)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)

             
CHGVAR     VAR(&MSGVALUE(&NUMENT)
             
CHGVAR     VAR(&MESSAGEVALUE('Number of entries: ' +
                          *
TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&COUNTDOWNVALUE(&NUMENT)

/* OFFENT ist die dezimale Position auf den (ersten) Eintrag */
             
CHGVAR     VAR(&MESSAGEVALUE(&OFFENT)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)

             
CHGVAR     VAR(&POINTVALUE(&OFFENT)
             
CHGVAR     VAR(&POINTVALUE(&POINT 1)

             
DOFOR      VAR(&COUNTDOWNFROM(&NUMENTTO(1BY(-1)
/* Anzeigen der IOA-Infos ab Byte "&point" */
             
CALLSUBR   SUBR(SHOWIOA)
             
CHGVAR     VAR(&POINTVALUE(&POINT + &IOAENTLEN)
             
ENDDO

             ENDSUBR

/* ***** SHOWIOA ***** */
             
SUBR       SUBR(SHOWIOA)
             
CHGVAR     VAR(&MSGVALUE(&POINT)
             
CHGVAR     VAR(&MESSAGEVALUE('Substruktur ab: ' +
                          *
TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)

             
/* Unterstruktur in IOAINFO schieben */
             
CHGVAR     VAR(&IOAINFOVALUE(%SST(&RCVVAR &POINT 160))
             
CHGVAR     VAR(&MSGVALUE(&IOAENTLEN)
             
CHGVAR     VAR(&MESSAGEVALUE('L‰nge Substruktur: ' +
                          *
TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
SNDMSG     MSG('Ausgabe der Unterstruktur:') +
                          
TOUSR(*REQUESTER)
             
CHGVAR     VAR(&MESSAGEVALUE(%SST(&IOAINFO 1 50))
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&MESSAGEVALUE(%SST(&IOAINFO 51 50))
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&MESSAGEVALUE(%SST(&IOAINFO 101 50))
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)

             
/* auswerten */
             
CHGVAR     VAR(&MSGVALUE(&IOAENTLEN)
             
CHGVAR     VAR(&MESSAGEVALUE('EntryLen:' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&MSGVALUE(&IOAENTNUM)
             
CHGVAR     VAR(&MESSAGEVALUE('EntryNum:' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&MSGVALUE(&IOATYPE)
             
CHGVAR     VAR(&MESSAGEVALUE('IOA Type:' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&MSGVALUE(&IOAMODEL)
             
CHGVAR     VAR(&MESSAGEVALUE('IOA Model:' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&MSGVALUE(&IOASERIAL)
             
CHGVAR     VAR(&MESSAGEVALUE('IOA SerNr:' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&MSGVALUE(&IOARSCNAM)
             
CHGVAR     VAR(&MESSAGEVALUE('IOA Rsc  :' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&MSGVALUE(%SST(&IOAPHYLOC 1 30))
             
CHGVAR     VAR(&MESSAGEVALUE('IOA Loc  :' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&MSGVALUE(&IOAFRAME)
             
CHGVAR     VAR(&MESSAGEVALUE('IOA Frame:' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&MSGVALUE(&IOACRDPOS)
             
CHGVAR     VAR(&MESSAGEVALUE('IOA CPos :' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)

             IF         
COND(&IOAERROR *EQ &HEX01THEN(DO)
             
CHGVAR     VAR(&MESSAGEVALUE('WARNING!')
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
ENDDO
             
IF         COND(&IOAERROR *EQ &HEX02THEN(DO)
             
CHGVAR     VAR(&MESSAGEVALUE('ERROR!')
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
ENDDO

             CHGVAR     
VAR(&MSGVALUE(&IOADTW)
             
CHGVAR     VAR(&MESSAGEVALUE('IOA DTW  :' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             IF         
COND(&IOADTW *LT 40THEN(DO)
             
CHGVAR     VAR(&MESSAGEVALUE('Order new battery!')
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
ENDDO
             CHGVAR     
VAR(&MSGVALUE(&IOADTE)
             
CHGVAR     VAR(&MESSAGEVALUE('IOA DTE  :' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&MSGVALUE(&IOAPON)
             
CHGVAR     VAR(&MESSAGEVALUE('IOA Pon  :' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)
             
CHGVAR     VAR(&MSGVALUE(&IOAPONADJ)
             
CHGVAR     VAR(&MESSAGEVALUE('IOA Pon A:' *TCAT &MSG)
             
SNDMSG     MSG(&MESSAGETOUSR(*REQUESTER)

             
ENDSUBR
/* ========================================================== */
ENDPGM