Ich habe versucht, node-jt400 (Programme)

Programs Rufen wir das Programm auf.

CLLE (keine Parameter)

Versuchen Sie, ein einfaches CL-Programm ohne Parameter aufzurufen.

MYLIB/SMPL010C.CLLE


             PGM                                                     
             SNDMSG MSG('SMPL010C wurde aufgerufen') TOMSGQ(*SYSOPR)  
             ENDPGM                                                  

Programs.JS


app.get("/smpl010c", function (req, res, next) {
  var SMPL010C = pool.pgm('SMPL010C', []); 
  SMPL010C({}).then(
    function (result) {
      res.send(result);
    });
});

Es gibt eine Einschränkung beim Aufrufen eines Programms. Das heißt, ** es gibt immer ein Programm, das in der Bibliotheksliste ausgeführt werden kann **. Die folgenden waren alle NG.

var SMPL010C = pool.pgm('MYLIB/SMPL010C', []); 
var SMPL010C = pool.pgm('MYLIB.SMPL010C', []); 
var SMPL010C = pool.pgm('/QSYS.LIB/MYLIB.LIB/SMPL010C.PGM', []); 

nodejt16.png

nodejt17.png

RPGLE (mit Parametern)

Versuchen Sie, RPGLE mit Parametern aufzurufen.

MYLIB/SMPL011R.SQLRPGLE


      *                                                                            
      * CRTSQLRPGI OBJ(MYLIB/SMPL011R) SRCFILE(MYLIB/QRPGLESRC) DBGVIEW(*SOURCE)
      *                                                                            
     H DFTACTGRP(*NO)                                                              
     D main            PR                  EXTPGM('SMPL011R')                      
     D                                3P 0                                         
     D                               12A                                           
     D                               12A                                           
     D                               40A                                           
     D                                7P 3                                         
     D main            PI                                                          
     D id                             3P 0                                         
     D lname                         12A                                           
     D fname                         12A                                           
     D prof                          40A                                           
     D tokuten                        7P 3                                         
                                                                                   
     D stmt            S            512A                                           
     /free                                                 
                                                           
         stmt = 'insert into member' +                     
                ' values(?, ?, ?, ?, ?)';                  
         exec sql prepare s1 from :stmt;                   
                                                           
         exec sql execute s1                               
               using :id, :lname, :fname, :prof, :tokuten; 
                                                           
         tokuten = tokuten + 100;                          
                                                           
         *inlr = *on;                                      
                                                           
         return ;                                          
                                                           
     /end-free                                             

Programs.JS


app.get("/smpl011r", function (req, res, next) {
    var SMPL011R = pool.pgm('smpl011r', [
        { type: 'DECIMAL', precision:  3, scale: 0, name: 'id' },
        { type: 'CHAR',    precision: 12, scale: 0, name: 'lname' },
        { type: 'CHAR',    precision: 12, scale: 0, name: 'fname' },
        { type: 'CHAR',    precision: 40, scale: 0, name: 'prof' },
        { type: 'DECIMAL', precision:  7, scale: 3, name: 'tokuten' }
    ]);
    SMPL011R({
        id: 120,
        lname: 'Datum',
        fname: 'Masamune',
        prof : 'Erschien im weißen Kostüm.',
        tokuten: 10
    }).then(function (result) { 
      res.send(result); 
    });
});

Dieses Programm funktioniert jedoch nicht ordnungsgemäß. Als ich SMPL011R debuggte, um die Ursache zu untersuchen, stellte ich fest, dass die japanischen Parameter nicht korrekt übergeben wurden. nodejt18.png

nodejt19.png

Java-Quellmodifikation von node-jt400

Also werde ich versuchen, die Java-Quelle von node-jt400 zu reparieren. Holen Sie sich die Quelle von Github.

git clone [email protected]:tryggingamidstodin/node-jt400.git mynode-jt400

nodejt20.png

Die zu ändernde Quelle ist \ java \ src \ nodejt400 \ Pgm.java.

Pgm.java


  public TextPgmParam(String name, Props paramDef)
  {
    super(name, paramDef);
    parser = new AS400Text(paramDef.getFirstInt("size", "precision"), "Cp871");
  }

Cp871 scheint etwas falsch zu machen, also habe ich Folgendes getan:

Pgm.java


  public TextPgmParam(String name, Props paramDef)
  {
    super(name, paramDef);
    parser = new AS400Text(paramDef.getFirstInt("size", "precision"));
  }

Erstellen Sie nach dem Ändern der Quelle eine neue jt400wrap.jar und ersetzen Sie jt400wrap.jar in \ myfolder \ node_modules \ node-jt400 \ java \ lib.

Ich habe es erneut ausgeführt und das Debugging an derselben Stelle durchgeführt. Diesmal werden die Parameter korrekt übergeben.

nodejt22.png

Der Parameter "tokuten" wurde um 100 hinzugefügt. Es scheint, dass der Rückgabewert auch genommen wird.

nodejt23.png

nodejt24.png

Das Poster übernimmt keine Verantwortung für die Änderung der Quelle. Bitte tun Sie dies auf eigenes Risiko.

Hinzugefügt am 28. Dezember 2017 Ich habe die vorgefertigte Datei jt400wrap.jar hier abgelegt [https://github.com/ymurata1967/node-jt400/releases/).

Recommended Posts

Ich habe versucht, node-jt400 (Programme)
Ich habe versucht, node-jt400 (ausführen)
Ich habe versucht, node-jt400 (Transaktionen)
Ich habe versucht, node-jt400 (Umgebungskonstruktion)
Ich habe versucht, node-jt400 (IFS schreiben)
Ich habe versucht, node-jt400 (SQL Update)
Ich habe versucht, node-jt400 (SQL-Abfrage)
Ich habe versucht, node-jt400 (SQL-Stream)
Ich habe versucht, node-jt400 (IFS lesen)
Ich habe es mit Spring versucht.
Ich habe versucht, Tomcat zu setzen
Ich habe youtubeDataApi ausprobiert.
Ich habe versucht, ① umzugestalten
Ich habe FizzBuzz ausprobiert.
Ich habe JHipster 5.1 ausprobiert
[Ich habe es versucht] Spring Tutorial
Ich habe versucht, Autoware auszuführen
Ich habe sofort QUARKUS ausprobiert
Ich habe versucht, TestNG zu verwenden
Ich habe Spring Batch ausprobiert
Ich habe versucht, Galasa zu benutzen
Ich habe DI mit Ruby versucht
Ich habe versucht, Azure Cloud-Init zu verwenden
Ich habe Spring State Machine ausprobiert
Ich habe Drools (Java, InputStream) ausprobiert.
Ich habe Rails Anfänger ausprobiert [Kapitel 1]
Ich habe versucht, Apache Wicket zu verwenden
Ich habe versucht, Java REPL zu verwenden
Ich habe versucht, den Quellcode zu analysieren
Ich habe das FizzBuzz-Problem ausprobiert
Ich habe Rails Anfänger ausprobiert [Kapitel 2]
Ich habe UPSERT mit PostgreSQL ausprobiert.
Ich habe BIND mit Docker ausprobiert
Ich habe versucht, yum-cron zu verifizieren
Ich habe versucht, Metaprogrammierung mit Java
Ich habe jetzt versucht, Anakia + Jing zu verwenden
Ich habe versucht, C # (Indexer) zu kauen.
Ich habe etwas versucht, das als rekursive Suche bezeichnet wird
Ich habe versucht, Spring + Mybatis + DbUnit zu verwenden
Ich habe versucht, JOOQ mit Gradle zu verwenden
[K8s] Ich habe versucht, zwischen Pods zu kommunizieren!
Ich habe eine morphologische Analyse mit MeCab versucht
Ich habe ein wenig digdags docker.run_options ausprobiert
Ich habe versucht, die Unterstützung für iOS 14 zusammenzufassen
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, UDP mit Java zu kommunizieren
Ich habe versucht, die Methode zu erklären
Ich habe versucht, Domino11 in CentOS7 zu integrieren
Ich habe versucht, die Java8 Stream API zu verwenden
Ich habe Javas Micro-Benchmarking-Tool JMH ausprobiert
Ich habe versucht, JWT in Java zu verwenden
Ich habe GraphQL mit Spring Boot ausprobiert
Ich habe versucht, das Java-Lernen zusammenzufassen (1)
Ich habe versucht, verschiedene Nummernfolgeprogramme wie Koratz-Nummer, Fibonatch-Nummer, Dreieck-Nummer zu erstellen
[Android] Ich habe versucht, das Koordinatorlayout zu verwenden.
Ich habe versucht, CentOS 8 unter ESXi 6.7 zu installieren