Versuchen Sie, mit JZOS von Java aus auf das Dataset zuzugreifen

Überblick

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.

Datensatzfunktionen

Der Datensatz weist die folgenden Merkmale auf:

  1. Sowohl für die Eingabe als auch für die Ausgabe müssen Sie vor dem Öffnen zunächst den Datensatz zuordnen (dem Prozess zuordnen).
  2. Beim Erstellen eines neuen Datasets müssen Attribute wie Datensatzformat, Länge des logischen Datensatzes, Blockgröße (eine Sammlung mehrerer logischer Datensätze wird als Block bezeichnet) und Datensatzorganisation angegeben und zugewiesen werden. ..
  3. Sowohl bei der Eingabe als auch bei der Ausgabe muss es nach dem Schließen frei sein (den Datensatz in umgekehrter Reihenfolge der Zuordnung aus dem Prozess freigeben).
  4. Die Position des Datensatztrennzeichens wird durch die Datensatzlänge und nicht durch das Zeilenvorschubzeichen identifiziert.

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. ..

Beispielprogramm (Eingabeverarbeitung aus Datensatz)

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").

Beispielprogramm (Ausgabeverarbeitung zum Datensatz)

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! **

Referenzlink

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

Versuchen Sie, mit JZOS von Java aus auf das Dataset zuzugreifen
Versuchen Sie es mit der Stream-API in Java
Versuchen Sie es mit der Emotion API von Android
Versuchen Sie es mit der Wii-Fernbedienung in Java
Versuchen Sie, den CORBA-Dienst von Spring (Java) aus aufzurufen.
Versuchen Sie es mit der Syntaxanalyse der COTOHA-API in Java
Geben Sie den Maximalwert eines Arrays mithilfe der Java-Standardausgabe aus
Versuchen Sie, das Eratostenes-Sieb mithilfe der Java-Standardbibliothek zu implementieren
Rufen wir IBM Watson Assistant 2018-07-10 aus dem Java SDK auf.
Verwenden der Datenbank (SQL Server 2014) aus einem Java-Programm 2018/01/04
Versuchen Sie es mit globalem Hooking in Java mithilfe der JNativeHook-Bibliothek
Versuchen Sie es mit RocksDB mit Java
Versuchen Sie, mit Java zu kratzen [Hinweis]
Verwenden von Docker von Java Gradle
[Java] Versuchen Sie, die Elemente der Json-Zeichenfolge mithilfe der Bibliothek zu bearbeiten
Java-Vergleich mit der compareTo () -Methode
Versuchen Sie es mit Redis mit Java (jar)
[Java] Versuchen Sie, mithilfe von Generika zu implementieren
Versuchen Sie es mit dem Nachrichtensystem Pulsar
Versuchen Sie es mit der IBM Java-Methodenverfolgung
Der Weg von JavaScript nach Java
Beispielcode mit Minio aus Java
Versuchen Sie es mit dem Java SDK von Hyperledger Iroha
[Java] Wo haben Sie versucht, Java zu verwenden?
[Java] Versuchen Sie, das Fizz Buzz-Problem mithilfe der rekursiven Verarbeitung zu lösen
Versuchen Sie, Werte von Java Servlet mit JSON an die iPhone-App zu übergeben
Versuchen Sie es mit dem Java Framework Nablarch [Web Application]
Versuchen Sie, || anstelle des ternären Operators zu verwenden
Versuchen Sie, den Dienst auf Android Oreo zu verwenden
Newcomer-Training mit der Web-Basic-Programmierung mit Java-
Kick ShellScript auf dem Server von Java
Rufen Sie die Salesforce REST-API von Java aus auf
Java lernen Versuchen Sie es mit einem Scanner oder einer Karte
Versuchen Sie es mit der JSON-Format-API in Java
Versuchen Sie, den CORBA-Dienst unter Java 11+ aufzurufen
Stellen Sie mit Eclipse eine Verbindung von Java zu MySQL her
Versuchen Sie, Kubernetes Job von Java aus auszuführen
Versuchen Sie es mit der REST-API von JobScheduler - Java RestClient-Implementierung -
Versuchen Sie, Nim von Java über JNI aufzurufen
[Java] Generieren Sie mithilfe der Stream-API eine verengte Liste aus mehreren Listen
Versuchen Sie, mit Scala mithilfe der Standardbibliothek von Java Text zu einem Bild hinzuzufügen
Versuchen Sie, Watson NLU, die Japanisch zu unterstützen scheint, vom Java SDK aus aufzurufen
[Java] Abrufen und Anzeigen des Datums 10 Tage später mithilfe der von Java 8 hinzugefügten Zeit-API.
Versuchen Sie, über die SAP Cloud Platform - JAVA App Edition auf das On-Premise-System zuzugreifen
Greifen Sie über Java mit Axis2 Enterprise WSDL auf Forec.com zu
Versuchen Sie, Firebase Cloud-Funktionen unter Android (Java) zu verwenden.
Versuchen Sie es mit der RestClient Test-Klasse der REST-API-Java von JobScheduler.
Verwenden von JUnit über die Befehlszeile unter Ubuntu
[Java] Stellen Sie die Zeit im Browser mit jsoup ein
Newcomer Training mit der Web-Basic Programmierung / Klassen mit Java-
Versuchen Sie es mit Sourcetrail (Win-Version) mit Java-Code
Versuchen Sie, die Cloud Vision-API von GCP in Java zu verwenden
Versuchen Sie eine ähnliche Suche in der Bildsuche mit dem Java SDK [Suche]
Probieren Sie Progate Free Edition [Java II]
Zeigen Sie "Hello World" im Browser mit Java an
Zeigen Sie "Hello World" im Browser mit Java an
Versuchen Sie die Kommunikation mit gRPC auf einem Android + Java-Server
[Java] Versuchen Sie, das Fizz Buzz-Problem zu lösen