Dateien in der z / OS-Umgebung (IBM Mainframe-Umgebung) werden als Datensätze bezeichnet. Datensätze unterscheiden sich geringfügig von Linux-, Unix- und Windows-Dateien (*** 1 **). Die Funktionen des Datasets und das Implementierungsbeispiel für die Eingabe / Ausgabe-Verarbeitung des Datasets in Java-Sprache sind nachstehend aufgeführt.
** * 1 ** In der z / OS-Umgebung gibt es neben der von TSO und JCL betriebenen Umgebung auch eine Unix-Umgebung namens USS. Auf Dateien in der USS-Umgebung kann mit Standard-Java-APIs zugegriffen werden, genau wie auf Dateien unter Linux, Unix und Windows.
Der Datensatz weist die folgenden Merkmale auf:
Datensätze mit den oben genannten Merkmalen können die Eingabe- / Ausgabeverarbeitung mit der Java-Standard-API (Paket java.io oder Paket java.nio) nicht implementieren. Anschließend müssen Sie ** Java Batch Launcher und Toolkit für z / OS (im Folgenden als JZOS bezeichnet) ** verwenden. JZOS ist ein Toolkit, das die Entwicklung von Java-Anwendungen unterstützt, die in der z / OS-Umgebung ausgeführt werden. Es ist in IBM Java für z / OS enthalten (siehe Referenzlink [JZOS Batch Launcher und Toolkit](https :: für eine Übersicht über JZOS). //www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.zsecurity.80.doc/zsecurity-component/jzos.html Siehe "Referenzlink: JZOS Batch Launcher und Toolkit").
Die Java-Beispielanwendung, die die Eingabeverarbeitung aus dem Dataset implementiert, und die Java-Beispielanwendung, die die Ausgabeverarbeitung in das Dataset implementiert, sind unten dargestellt (*** 2 **).
** * 2 ** Es gibt verschiedene Arten von Datasets. Im Folgenden werden Beispiele gezeigt, die sich auf sequentielle Datasets konzentrieren, die Windows- und Unix-Dateien ähneln und die einfachste Struktur aufweisen. ..
Das folgende Beispielprogramm (DSRead.java) liest Datensätze aus dem Datensatz "USER01.TEST.DATA" und schreibt sie in die Standardausgabe. Es wird angenommen, dass die Daten in "UTF-8" codiert sind.
DSRead.java
package sample;
import com.ibm.jzos.RecordReader;
import com.ibm.jzos.ZFile;
public class DSRead {
public void main(String args[]) throws Exception {
String ddName = ZFile.allocDummyDDName();
String dsName = "USER01.TEST.DATA";
RecordReader reader = null;
int x = 0;
try {
ZFile.bpxwdyn("alloc fi("+ddName+") da("+dsName+") shr reuse");
reader = RecordReader.newReaderForDD(ddName);
byte[] recordBuf = new byte[reader.getLrecl()];
while ((reader.read(recordBuf)) >= 0) {
String rec = new String(recordBuf, "UTF-8");
System.out.println(rec);
x++;
}
System.out.println("record count : "+x);
} catch(Exception e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
ZFile.bpxwdyn("free fi("+ddName+")");
}
}
}
** Das ist der Punkt! **
--Dasaset Allocation and Free erfolgt mit der Methode ZFile # bpxwdyn
.
** * 3 ** alloc
ist eine Abkürzung für allocate
. Ein spezielles Beispiel für den Befehl allocate ist ein Referenzlink Beispiel für den Befehl allocate
Siehe "Referenzlink: Beispiel für einen Zuweisungsbefehl").
Das folgende Beispielprogramm (DSWrite.java) schreibt Datensätze im Überschreibmodus in das bereits vorhandene Dataset 'USER01.TEST.DATA'. Der Datensatz "USER01.TEST.DATA" hat eine feste Länge und eine logische Datensatzlänge von 80 Byte und gibt einen dreizeiligen Datensatz aus, der mit der Methode "getTestData" erstellt wurde. Die Daten müssen in UTF-8 codiert und ausgegeben werden.
DSWrite.java
package sample;
import com.ibm.jzos.RecordWriter;
import com.ibm.jzos.ZFile;
public class DSWrite {
public void main(String args[]) throws Exception {
String ddName = ZFile.allocDummyDDName();
String dsName = "USER01.TEST.DATA";
RecordWriter writer = null;
int x = 0;
try {
ZFile.bpxwdyn("alloc fi("+ddName+") da("+dsName+") old reuse");
writer = RecordWriter.newWriterForDD(ddName);
int lrecl = writer.getLrecl();
String records[] = getTestData();
for (String record : records) {
writer.write(record.getBytes("UTF-8"), 0, lrecl);
x++;
}
System.out.println("record count : "+x);
} catch(Exception e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
ZFile.bpxwdyn("free fi("+ddName+")");
}
}
private String[] getTestData() {
String[] records = new String[3];
records[0] = String.format("%-80s", "AAAAAAAAAAAAAAAAAAAA");
records[1] = String.format("%-80s", "BBBBBBBBBBBBBBBBBBBB");
records[2] = String.format("%-80s", "CCCCCCCCCCCCCCCCCCCC");
return records;
}
}
** Das ist der Punkt! **
JZOS Batch Launcher and Toolkit https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.zsecurity.80.doc/zsecurity-component/jzos.html
JZOS API (Javadoc) http://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.zsecurity.api.80.doc/com.ibm.jzos/index.html
BPXWDYN https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.2.0/com.ibm.zos.v2r2.bpxb600/wdyn.htm
** Beispiel für einen Zuweisungsbefehl ** http://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.ikjc500/ikj2l2_ALLOCATE_command_examples.htm
Recommended Posts