src.com.ibm.as400.access.DDMEXCSATRequestDataStream Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400-jdk8 Show documentation
Show all versions of jt400-jdk8 Show documentation
The Open Source version of the IBM Toolbox for Java
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: DDMEXCSATRequestDataStream.java
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2000 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.as400.access;
import java.io.IOException;
import java.io.OutputStream;
// Constructs the DDM "exchange server attributes" data stream request.
//
// Exchange attributes request:
// Term = EXCSAT.
// Parms = SRVCLSNM -> CHRSTRDR => Character string containing server class name in EBCDIC.
// EXTNAM => Character string containing external name in EBCDIC.
//
// Size = 6 --> Header (0 - 5).
// 2 --> LL Length of EXCSAT term and parms (6, 7).
// 2 --> CP EXCSAT code point (8, 9).
// 2 --> LL Length of EXTNAM term and parms (10, 11).
// 2 --> CP EXTNAM code point (12, 13).
// 5 --> EXTNAM parm (JT400) (14 - 18).
// 2 --> LL Length of SRVCLSNM term and parm (19, 20).
// 2 --> CP SRVCLSNM code point (21, 22).
// 2 --> LL Length of CHRSTRDR term and parms (23, 24).
// 2 --> CP CHRSTRDR code point (25, 26).
// 3 --> SRVCLSNM parm (QAS) (27 - 29).
// 2 --> LL Length of MGRLVLLS term and parms.
// 2 --> CP MGRLVLLS code point.
// 4 * 23 --> Manager level parms and their values.
// ----
// 126 --> Total length of the data stream.
class DDMEXCSATRequestDataStream extends DDMDataStream
{
private static final int TOTAL_LENGTH = 126;
private static final int HEADER_LENGTH = 6;
DDMEXCSATRequestDataStream()
{
super(new byte[TOTAL_LENGTH]);
// Initialize the header: Don't continue on error, not chained, GDS id = D0, type = RQSDSS, no same request correlation.
setGDSId((byte)0xD0);
// setIsChained(false);
// setContinueOnError(false);
// setHasSameRequestCorrelation(false);
setType(1);
int offset = HEADER_LENGTH; // start just after the 6-byte header
set16bit(TOTAL_LENGTH - HEADER_LENGTH, offset); // Set length of EXCSAT term and parms.
set16bit(DDMTerm.EXCSAT, offset+2); // Set code point for EXCSAT term.
offset += 4;
set16bit(9, offset); // Set length of EXTNAM parm. (LL + CP + parm)
set16bit(DDMTerm.EXTNAM, offset+2); // Set code point for EXTNAM parm.
offset += 4;
// Set the external name (EXTNAM parm).
data_[offset++] = (byte)0xD1; data_[offset++] = (byte)0xE3; data_[offset++] = (byte)0xF4; data_[offset++] = (byte)0xF0; data_[offset++] = (byte)0xF0; // EBCDIC "JT400"
// Note: We send EXTNAM in order to get the DDM Server's job info returned in the reply.
set16bit(11, offset); // Set length of SRVCLSNM parm. (Includes CHRSTRDR)
set16bit(DDMTerm.SRVCLSNM, offset+2); // Set code point for SRVCLSNM parm.
offset += 4;
// Note to maintenance programmer:
// CHRSTRDR is ignored by the DDM Server, and is probably not needed.
// We're not sure why it was added in the first place.
set16bit(7, offset); // Set length of CHRSTRDR parm.
set16bit(DDMTerm.CHRSTRDR, offset+2); // Set code point for CHRSTRDR parm.
offset += 4;
// Set the server class name (SRVCLSNM parm).
data_[offset++] = (byte)0xD8; data_[offset++] = (byte)0xC1; data_[offset++] = (byte)0xE2; // EBCDIC "QAS".
// Set the MGRLVLLS values. Each parameter for the MGRLVLLS term is appended to the array as code point/value pairs. No 'length' bytes precede the parameters.
set16bit(96, offset); // Set length of MGRLVLLS term and parms (4-byte LL/CP, plus 23 4-byte parms)
set16bit(DDMTerm.MGRLVLLS, offset+2); // Set code point for MGRLVLLS.
offset += 4;
set16bit(DDMTerm.AGENT, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.ALTINDF, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.CMBACCAM, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.CMBKEYAM, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.CMBRNBAM, offset);
set16bit(3, offset+2);
offset += 4;
// V4R2 system or later.
set16bit(DDMTerm.CMNTCPIP, offset); // Set CMNTCPIP code point. (V4R2 system or later)
set16bit(5, offset+2); // Set value for CMNTCPIP. Must be 5.
offset += 4;
set16bit(DDMTerm.DICTIONARY, offset);
set16bit(1, offset+2);
offset += 4;
set16bit(DDMTerm.DIRECTORY, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.DIRFIL, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.DRCAM, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.KEYFIL, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.LCKMGR, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.RDB, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.RELKEYAM, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.RELRNBAM, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.SECMGR, offset);
set16bit(9, offset+2); /* Use level 9 so AES is negotiated @U4A*/
offset += 4;
set16bit(DDMTerm.SEQFIL, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.SQLAM, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.STRAM, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.STRFIL, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.SUPERVISOR, offset);
set16bit(3, offset+2);
offset += 4;
set16bit(DDMTerm.SYSCMDMGR, offset);
set16bit(4, offset+2);
offset += 4;
set16bit(DDMTerm.RSCRCVM, offset);
set16bit(4, offset+2);
}
void write(OutputStream out) throws IOException
{
if (Trace.traceOn_) Trace.log(Trace.DIAGNOSTIC, "Sending DDM EXCSAT request...");
super.write(out);
}
}