midrange.com code scratchpad
Name:
Retrieve network attributes with API QWCRNETA same as CL command RTVNETA
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
05/23/2014 03:35:21 am
IP:
Logged
Description:
Retrieve network attributes with API QWCRNETA same as CL command RTVNETA
Code:
  1. /* ==================================================================*/
  2. /*                                                                   */
  3. /*  Program . . : RtvNetA.java                                       */
  4. /*  Description : Retrieve Network Attributes                        */
  5. /*  Author  . . : Vengoal Chang                                      */
  6. /*  Published . : AS400ePaper                                        */
  7. /*  Date  . . . : May 23, 2014                                       */
  8. /*                                                                   */
  9. /* ==================================================================*/
  10.  
  11. package com.free400.vengoal.as400api;
  12.  
  13. import com.ibm.as400.access.AS400;
  14. import com.ibm.as400.access.AS400Bin4;
  15. import com.ibm.as400.access.AS400Exception;
  16. import com.ibm.as400.access.AS400Text;
  17. import com.ibm.as400.access.CharConverter;
  18. import com.ibm.as400.access.ErrorCodeParameter;
  19. import com.ibm.as400.access.ProgramCall;
  20. import com.ibm.as400.access.ProgramParameter;
  21.  
  22. public class RtvNetA {
  23.     
  24.     private AS400 as400;
  25.     private final AS400Bin4 intConverter_ = new AS400Bin4();
  26.     
  27.     public static final String NETATR_ALRBCKFP = "ALRBCKFP";
  28.     public static final String NETATR_ALRCTLD = "ALRCTLD";
  29.     public static final String NETATR_ALRDFTFP = "ALRDFTFP";
  30.     public static final String NETATR_ALRFTR = "ALRFTR";
  31.     public static final String NETATR_ALRHLDCNT = "ALRHLDCNT";
  32.     public static final String NETATR_ALRLOGSTS = "ALRLOGSTS";
  33.     public static final String NETATR_ALRPRIFP = "ALRPRIFP";
  34.     public static final String NETATR_ALRRQSFP = "ALRRQSFP";
  35.     public static final String NETATR_ALRSTS = "ALRSTS";
  36.     public static final String NETATR_ALWADDCLU = "ALWADDCLU";
  37.     public static final String NETATR_ALWANYNET = "ALWANYNET";
  38.     public static final String NETATR_ALWHPRTWR = "ALWHPRTWR";
  39.     public static final String NETATR_ALWVRTAPPN = "ALWVRTAPPN";
  40.     public static final String NETATR_VRTAUTODEV = "VRTAUTODEV";
  41.     public static final String NETATR_DDMACC = "DDMACC";
  42.     public static final String NETATR_DFTCNNLST = "DFTCNNLST";
  43.     public static final String NETATR_DFTMODE = "DFTMODE";
  44.     public static final String NETATR_DFTNETTYPE = "DFTNETTYPE";
  45.     public static final String NETATR_DTACPR = "DTACPR";
  46.     public static final String NETATR_DTACPRINM = "DTACPRINM";
  47.     public static final String NETATR_HPRPTHTMR = "HPRPTHTMR";
  48.     public static final String NETATR_JOBACN = "JOBACN";
  49.     public static final String NETATR_LCLCPNAME = "LCLCPNAME";
  50.     public static final String NETATR_LCLLOCNAME = "LCLLOCNAME";
  51.     public static final String NETATR_LCLNETID = "LCLNETID";
  52.     public static final String NETATR_MAXINTSSN = "MAXINTSSN";
  53.     public static final String NETATR_MAXHOP = "MAXHOP";
  54.     public static final String NETATR_MDMCNTRYID = "MDMCNTRYID";
  55.     public static final String NETATR_MSGQ = "MSGQ";
  56.     public static final String NETATR_NETSERVER = "NETSERVER";
  57.     public static final String NETATR_NODETYPE = "NODETYPE";
  58.     public static final String NETATR_NWSDOMAIN = "NWSDOMAIN";
  59.     public static final String NETATR_OUTQ = "OUTQ";
  60.     public static final String NETATR_PNDSYSNAME = "PNDSYSNAME";
  61.     public static final String NETATR_PCSACC = "PCSACC";
  62.     public static final String NETATR_RAR = "RAR";
  63.     public static final String NETATR_SYSNAME = "SYSNAME";
  64.     
  65.     public RtvNetA(AS400 as400){
  66.         this.as400 = as400;
  67.     }
  68.     
  69.     public String getNetAtr(String attribute) throws Exception{
  70.         String[] atrs = new String[1];
  71.         atrs[0] = attribute;
  72.         String[] rtnAtrs =  getNetAtr(atrs);
  73.         return rtnAtrs[0];
  74.     }
  75.     
  76.     public String[] getNetAtr(String[] attributes)    throws Exception {
  77.         final CharConverter charConverter = new CharConverter(as400.getCcsid(), as400);
  78.         String[] rtnStr = new String[attributes.length];        
  79.         
  80.         ProgramParameter[] parameters = buildProgramParameters(attributes);
  81.         ProgramCall rtvNetAtr = new ProgramCall(as400, "/QSYS.LIB/QWCRNETA.PGM", parameters);
  82.  
  83.         if (rtvNetAtr.run() != true) {
  84.             throw new AS400Exception(rtvNetAtr.getMessageList());
  85.         } else {
  86.             byte[] rcvVar = parameters[0].getOutputData();
  87.             Integer nbrOfAtrRtn = (Integer) intConverter_.toObject(rcvVar, 0);
  88.             int offsetOfNetAtrInfoTable = 0;
  89.             int offset;
  90.             String netAtr, typeOfData, infoStatus;
  91.             int lenOfData;
  92.             Object atrValue = null;
  93.             for (int i = 0; i < nbrOfAtrRtn; i++) {
  94.                 offsetOfNetAtrInfoTable += 4;
  95.                 offset =  intConverter_.toInt(rcvVar, offsetOfNetAtrInfoTable);
  96.                 netAtr =  charConverter.byteArrayToString(rcvVar, offset, 10);
  97.                 offset += 10;
  98.                 typeOfData =  charConverter.byteArrayToString(rcvVar, offset, 1);
  99.                 offset += 1;
  100.                 infoStatus =  charConverter.byteArrayToString(rcvVar, offset, 1);
  101.                 offset += 1;
  102.                 lenOfData = intConverter_.toInt(rcvVar, offset);
  103.                 offset += 4;
  104.                 if (typeOfData.equalsIgnoreCase("C")) {
  105.                     atrValue = charConverter.byteArrayToString(rcvVar, offset,    lenOfData).trim();
  106.                     rtnStr[i] = (String) atrValue;
  107.                 } else if (typeOfData.equalsIgnoreCase("B")) {
  108.                     atrValue = intConverter_.toInt(rcvVar, offset);
  109.                     rtnStr[i] = Integer.toString((Integer) atrValue);
  110.                 }
  111.                 // System.out.println(netAtr + "=" + atrValue);
  112.             }
  113.         }
  114.         return rtnStr;
  115.     }
  116.     
  117.     private ProgramParameter[] buildProgramParameters(String[] attributes) {
  118.         
  119.         ProgramParameter[] parameterList = new ProgramParameter[5];
  120.         parameterList[0] = new ProgramParameter(2048);
  121.         parameterList[1] = new ProgramParameter(intConverter_.toBytes(2048));
  122.         parameterList[2] = new ProgramParameter(intConverter_.toBytes(attributes.length));
  123.         
  124.         AS400Text text10 = new AS400Text(10, as400);
  125.         byte[] atrNameBytes = new byte[attributes.length * 10];
  126.         int atrNameOffset = 0;
  127.         for (int i = 0; i < attributes.length; i++) {
  128.             byte[] atrName = text10.toBytes(attributes[i]);
  129.             System.arraycopy(atrName, 0, atrNameBytes, atrNameOffset, 10);
  130.             atrNameOffset += 10;
  131.         }
  132.         
  133.         parameterList[3] = new ProgramParameter(atrNameBytes);
  134.         parameterList[4] = new ErrorCodeParameter();
  135.         
  136.         return parameterList;            
  137.     }
  138.  
  139.     public static void main(String[] args) {
  140.         
  141.         try {
  142.             AS400 as400 = new AS400("AS400IP", "USER", "PASS");
  143.             RtvNetA rtvNetA = new RtvNetA(as400);
  144.             String[] atrName = { RtvNetA.NETATR_SYSNAME };
  145.             String[] rtnValues = rtvNetA.getNetAtr(atrName);
  146.             for (int i = 0; i < rtnValues.length; i++) {
  147.                 System.out.println(atrName[i] + "=" + rtnValues[i]);
  148.             }
  149.  
  150.             atrName[0] = RtvNetA.NETATR_MAXINTSSN;
  151.             rtnValues = rtvNetA.getNetAtr(atrName);
  152.             for (int i = 0; i < rtnValues.length; i++) {
  153.                 System.out.println(atrName[i] + "=" + rtnValues[i]);
  154.             }
  155.  
  156.             String[] atrName2 = { RtvNetA.NETATR_DDMACC, RtvNetA.NETATR_MAXHOP };
  157.             rtnValues = rtvNetA.getNetAtr(atrName2);
  158.             for (int i = 0; i < rtnValues.length; i++) {
  159.                 System.out.println(atrName2[i] + "=" + rtnValues[i]);
  160.             }
  161.             
  162.             System.out.println(NETATR_LCLNETID+ "=" + rtvNetA.getNetAtr(NETATR_LCLNETID));
  163.             as400.disconnectAllServices();
  164.             System.exit(0);
  165.         } catch (Exception excp) {
  166.             excp.printStackTrace();
  167.         }
  168.     }
  169. }
© 2004-2019 by midrange.com generated in 0.005s valid xhtml & css