Trucs et Astuces - AS400 - Tips and Tricks

page d'accueil   Boite à outils

 

RTVTCPADR Retrieve TCP address / écran Table des matières


/*********************************************************************/
/* Retrieve/display TCP/IP addresses for pass-through devices */
/*********************************************************************/
/* */
/* Check for / install these PTFs or supercedes on your system */
/* to get support for the additional fields in the QDCRDEVD API */
/* DEVD0600 format: */
/* */
/* OS/400 V3R2 LICPGM 5763SS1 PTF SF44503 */
/* OS/400 V3R7 LICPGM 5716SS1 PTF SF44312 */
/* */
/* Additional information about these PTFs (cover letters) can be */
/* found at IBM's web site: */
/* */
/* www.as400service.ibm.com */
/* */
/* For additional information about the QDCRDEVD API, see the IBM */
/* manual "OS/400 Configuration APIs" */
/*********************************************************************/
/* Copyright (c) Craig Pelkie, 1997 */
/* ALL RIGHTS RESERVED */
/* */
/* Craig Pelkie */
/* Bits & Bytes Programming */
/* PO Box 1473 */
/* Valley Center, CA 92082-1473 */
/* craig@ca400.com */
/*********************************************************************/
rtvtcpaddr: pgm &RTVDEV
dcl &bytesprov *char 4 /* Bytes Provided */ +
value(x'00000010') /* 16 byte structure*/
dcl &ctld *char 10 /* Controller desc */
dcl &devnam *char 10 /* Device name */
dcl &error *char 16 /* Error field */
dcl &msg *char 150 /* Displayed msg */
dcl &port *dec len(5 0) /* Port number */
dcl &portbin *char 2 /* Port (binary) */
dcl &portchar *char 5 /* Port number */
dcl &protocol *char 1 /* Network protocol */ +
value(x'02') /* TCP/IP protocol */
dcl &rcvvar *char 1024 /* Receiver var */
dcl &rtvdev *char 10 /* Dev to retrieve */
dcl &rtvdevno *dec len(4 0) /* Device number */
dcl &rtvdevnoc *char 4 /* Device number */
dcl &tcpaddr *char 15 /* TCP/IP address */
/*********************************************************************/
/* Initialize "bytes provided" subfield in Error Code structure */
/*********************************************************************/
chgvar %sst(&error 1 4) value(&bytesprov)
/*********************************************************************/
/* Create pass-through device ID in loop. Start at 'QPADEV0001', */
/* end after 'QPADEV0250'. This is incremented in the loop. */
/*********************************************************************/
/* */
/* chgvar &rtvdevno 0 */
/* */
/*loop: */
/* */
/* chgvar &rtvdevno value(&rtvdevno + 1) */
/* if (&rtvdevno *gt 250) then(return) */
/* */
/* chgvar &rtvdevnoc &rtvdevno */
/* chgvar &rtvdev value('QPADEV' *cat &rtvdevnoc) */
/*********************************************************************/
/* Call the Retrieve Device Description API, format DEVD0600 */
/* to retrieve information about selected device */
/*********************************************************************/
chgvar &rcvvar ' '
call qdcrdevd parm( +
&rcvvar /* Receiver variable */ +
x'00000400' /* Length of &rcvvar (1024)*/ +
'DEVD0600' /* Format to receive */ +
&rtvdev /* Device ID to retrieve */ +
&error) /* Error field */
DMPCLPGM
IF COND(%SST(&ERROR 9 7) *NE ' ') THEN(DO)
SNDPGMMSG MSGID(%SST(&ERROR 9 7)) MSGF(QCPFMSG) +
MSGTYPE(*ESCAPE)
ENDDO
/*********************************************************************/
/* Extract values from receiver variable if retrieved device */
/* is a TCP/IP device (position 859, network protocol = x'02') */
/*********************************************************************/
chgvar &devnam %sst(&rcvvar 22 10)
if (&devnam *eq ' ') then(return)
if ((%sst(&rcvvar 859 1) *ne &protocol)) +
then(RETURN)
chgvar &ctld %sst(&rcvvar 205 10)
chgvar &portbin %sst(&rcvvar 860 2)
chgvar &port %bin(&portbin)
chgvar &portchar &port
chgvar &tcpaddr %sst(&rcvvar 877 15)
/*********************************************************************/
/* Format/display message */
/*********************************************************************/
chgvar &msg value( +
' Device: ' *cat &devnam *tcat +
' Ctld: ' *cat &ctld *tcat +
' Port: ' *cat &portchar *tcat +
' Address: ' *cat &tcpaddr)
/* SNDPGMMSG MSG(&MSG) TOPGMQ(*EXT) MSGTYPE(*DIAG) */
/* SNDPGMMSG MSG(&MSG) TOPGMQ(*EXT) */
SNDPGMMSG MSG(&MSG)
/* goto loop */
endpgm

RTVTCPADRP retrieve TCP Address / Printer Table des matières


/*********************************************************************/
/* Retrieve/display TCP/IP addresses for pass-through devices */
/*********************************************************************/
/* */
/* Check for / install these PTFs or supercedes on your system */
/* to get support for the additional fields in the QDCRDEVD API */
/* DEVD0600 format: */
/* */
/* OS/400 V3R2 LICPGM 5763SS1 PTF SF44503 */
/* OS/400 V3R7 LICPGM 5716SS1 PTF SF44312 */
/* */
/* Additional information about these PTFs (cover letters) can be */
/* found at IBM's web site: */
/* */
/* www.as400service.ibm.com */
/* */
/* For additional information about the QDCRDEVD API, see the IBM */
/* manual "OS/400 Configuration APIs" */
/*********************************************************************/
/* Copyright (c) Craig Pelkie, 1997 */
/* ALL RIGHTS RESERVED */
/* */
/* Craig Pelkie */
/* Bits & Bytes Programming */
/* PO Box 1473 */
/* Valley Center, CA 92082-1473 */
/* craig@ca400.com */
/*********************************************************************/
rtvtcpaddr: pgm &RTVDEV
dcl &bytesprov *char 4 /* Bytes Provided */ +
value(x'00000010') /* 16 byte structure*/
dcl &ctld *char 10 /* Controller desc */
dcl &devnam *char 10 /* Device name */
dcl &error *char 16 /* Error field */
dcl &msg *char 150 /* Displayed msg */
dcl &port *dec len(5 0) /* Port number */
dcl &portbin *char 2 /* Port (binary) */
dcl &portchar *char 5 /* Port number */
dcl &protocol *char 1 /* Network protocol */ +
value(x'02') /* TCP/IP protocol */
dcl &rcvvar *char 2048 /* Receiver var */
dcl &rtvdev *char 10 /* Dev to retrieve */
dcl &rtvdevno *dec len(4 0) /* Device number */
dcl &rtvdevnoc *char 4 /* Device number */
dcl &tcpaddr *char 15 /* TCP/IP address */
dcl &rmtlctyp *char 10 /* Remote local Type */
/*********************************************************************/
/* Initialize "bytes provided" subfield in Error Code structure */
/*********************************************************************/
chgvar %sst(&error 1 4) value(&bytesprov)
/*********************************************************************/
/* Create pass-through device ID in loop. Start at 'QPADEV0001', */
/* end after 'QPADEV0250'. This is incremented in the loop. */
/*********************************************************************/
/* */
/* chgvar &rtvdevno 0 */
/* */
/*loop: */
/* */
/* chgvar &rtvdevno value(&rtvdevno + 1) */
/* if (&rtvdevno *gt 250) then(return) */
/* */
/* chgvar &rtvdevnoc &rtvdevno */
/* chgvar &rtvdev value('QPADEV' *cat &rtvdevnoc) */
/*********************************************************************/
/* Call the Retrieve Device Description API, format DEVD0600 */
/* to retrieve information about selected device */
/*********************************************************************/
chgvar &rcvvar ' '
call qdcrdevd parm( +
&rcvvar /* Receiver variable */ +
x'00000600' /* Length of &rcvvar (1024)*/ +
'DEVD1100' /* Format to receive */ +
&rtvdev /* Device ID to retrieve */ +
&error) /* Error field */
IF COND(%SST(&ERROR 9 7) *NE ' ') THEN(DO)
SNDPGMMSG MSGID(%SST(&ERROR 9 7)) MSGF(QCPFMSG) +
MSGTYPE(*ESCAPE)
ENDDO
/*********************************************************************/
/* Extract values from receiver variable if retrieved device */
/* is a TCP/IP device (position 1386, network protocol = x'02') */
/*********************************************************************/
chgvar &devnam %sst(&rcvvar 22 10)
if (&devnam *eq ' ') then(return)
/* chgvar &ctld %sst(&rcvvar 213 10) */
/* chgvar &portbin %sst(&rcvvar 1387 2) */
/* chgvar &port %bin(&portbin) */
/* chgvar &portchar &port */
chgvar &rmtlctyp %SST(&rcvvar 1331 10)
chgvar &tcpaddr %sst(&rcvvar 1065 15)
/*********************************************************************/
/* Format/display message */
/*********************************************************************/
chgvar &msg value( +
' Device: ' *cat &devnam *tcat +
' Type: ' *cat &rmtlctyp *tcat +
' Address: ' *cat &tcpaddr)
/* SNDPGMMSG MSG(&MSG) TOPGMQ(*EXT) MSGTYPE(*DIAG) */
/* SNDPGMMSG MSG(&MSG) TOPGMQ(*EXT) */
SNDPGMMSG MSG(&MSG)
/* goto loop */
endpgm

The source code is provided as an open source tool under the GNU General Public License, version 2.  In summary, this license specifies:

last version : The SaveFiles

THIS TOOLBOX IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PROVIDER OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS TOOLBOX, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.