Die IBM i APIs bieten viele interessante Funktionen sowohl für die Verwaltung als auch für spezielle Aufgaben wie die Verwaltung von Spool-Dateien. Ich werde Ihnen kurz vorstellen, wie man in wenigen Zeilen und ohne Schwierigkeiten eine IBM i API mithilfe von NTi aufrufen kann.
Auswahl einer API: QSYS.QCMDCHK.
Für dieses Beispiel verwenden wir die API QCMDCHK aus der Bibliothek QSYS. Sie ermöglicht es, die Syntax und die Gültigkeit eines CL-Befehls zu überprüfen, bevor er ausgeführt wird. Als erstes schauen wir uns die Dokumentation hier an.
Dort finden wir heraus, dass QCMDCHK zwei Parameter als Eingabe erwartet:
- 1 - Befehlsfolge - E/A - Zeichen(*)
- 2 - Länge des Befehlsstrings - Input - Gepackt(15, 5)
These parameters correspond respectively to the command to be checked and its length in number of characters.
Using NTi
In this example, we will call this API to test the validity of the following command:
CRTLIB CLIENTS
Step 1: Setting up the NTi connection
First, we create an object of type NTiConnection
from which we can call the API:
var conn = new NTiConnection(connectionString);
conn.Open();
Schritt 2: Deklaration der Parameter
Dazu erstellen wir eine Liste von Objekten des Typs NTiParameter
, wobei jedes Element in der Liste einem Parameter entspricht, der an die API übergeben werden soll:
var cmd = "CRTLIB CLIENTS";
var parms = new List()
{
new NTiProgramParameter(cmd, cmd.Length),
new NTiProgramParameter(cmd.Length, 15, 5)
};
NTi unterstützt alle Arten von Parametern: Ganzzahlen, gepackte Dezimalzahlen, Zeichenketten...
Schritt 3: API aufrufen
Schließlich müssen wir nur noch die API aufrufen:
conn.CallProgram("QSYS", "QCMDCHK", parms);
Zusammenfassend
Der Aufruf von QCMDCHK wird also über diesen Code realisiert:
var conn = new NTiConnection(connectionString);
conn.Open();
var cmd = "CRTLIB CLIENTS";
var parms = new List()
{
new NTiProgramParameter(cmd, cmd.Length),
new NTiProgramParameter(cmd.Length, 15, 5)
};
conn.CallProgram("QSYS", "QCMDCHK", parms);
Wenn Sie diese wenigen Zeilen ausführen, gibt es zwei Möglichkeiten:
✅ Der Befehl ist gültig: In diesem Fall wird kein Fehler ausgelöst, der Returncode ist auf 0 gesetzt.
❌Der Befehl ist falsch: In diesem Fall wird auf der C#-Seite ein Fehler mit dem Code CPFXXXXX und einer Erklärung ausgegeben. Wir behandeln diesen Fehler dann entsprechend dem Anwendungsfall.
Fazit
Mit NTi ist der Aufruf einer System-API in nur wenigen Zeilen erledigt. Man kann jede Art von Verarbeitung in Betracht ziehen, indem man nur in C# entwickelt und nie einen Green Screen durchlaufen muss. Wenn man dies mit CL-Befehlen und SQL-Diensten koppelt, können Ihre IBM i-Administrationsaufgaben automatisiert und in modernen, intuitiven Benutzeroberflächen ausgeführt werden.
Die Integration von IBM i und Ihren Verfahren erfolgt nahtlos. Verlieren Sie keine Zeit mehr und nutzen Sie allgemein bekannte Programmiersprachen, um Ihre IBM i-Investitionen zu sichern und effizienter zu gestalten!
Dieser Fall ist relativ einfach, da wir nur zwei Parameter angeben mussten, aber alles funktioniert auf die gleiche Weise, egal wie komplex die verwendete API ist.
Um mehr zu erfahren und NTi auszuprobieren, zögern Sie nicht, mich zu kontaktieren.
Rémi Rouillot