-
Proceduren / Bildschirmfelder in sql nicht bekannt ?
In meiner Procedure erkennt er Bildschirmfelder nicht.
Kennt einer dieses Phenomen ?
PHP-Code:
P prGetMfb b D prGetMfb pi C/exec sql C+ select bclpMfb into :wrk_Mfb from MBDAT/BCCLFPPF T01 C+ where bclpFrm = :fm_Frm and bclpNdl = :wrk_Ndl and C+ bclpLft = :fm_Lft and bclpArt = :wrk_Art and C+ bclpCmdG = :wrk_CmdG C/end-exec P prGetMfb e
4618 C+ where bclpFrm = :fm_Frm and bclpNdl = :wrk_Ndl and 56500
4619 C+ bclpLft = :fm_Lft and bclpArt = :wrk_Art and 56600
4638 C+ bclpLft = :fm_Lft and bclpArt = :wrk_Art and 58100
4652 C+ where bclpFrm = :fm_Frm and bclpLft = :fm_Lft and 59500
5722ST1 V5R2M0 020719 SQL-ILE-RPG-Objekt erstellen BCC999 14.0
DIAGNOSENACHRICHTEN
MSG ID WTK SATZ TEXT
SQL0312 30 4618 Position 31 Variable FM_FRM nicht definiert oder nicht
verwendbar.
SQL0312 30 4619 Position 31 Variable FM_LFT nicht definiert oder nicht
verwendbar.
SQL0312 30 4638 Position 31 Variable FM_LFT nicht definiert oder nicht
verwendbar.
-
Der SQL-Precompiler erkennt nur tatsächlich explizit definierte Felder !
Wenn du also I-Felder im SQL verwenden willst, musst du diese in einer DS neu definieren.
Allerdings sollte deine Prozedur nicht auf globale Variablen verweisen sondern alle benötigten Variablen als Parameter übergeben bekommen.
PS:
Auch sollte die Lib im SQL nicht explizit benannt werden, sonern die Tabelle sollte über die LIBL gefunden werden. Sonst hast du später mal Probleme mit Testumgebungen oder verschiedenen Daten-Lib's.
-
Dies ist eine interne Prozedur.
Ich habe nur Probleme bei den Bildschirmfeldern, nicht bei anderen global definierten Feldern, in diesem fall hätte ich auch eine Subroutine nutzen können, rückgabeparamter werden noch eingebaut.
-
Dateifelder (Display/Printer) sind dem Precompiler nicht bekannt, da RPG/LE später nur die Felder generiert die auch tatsächlich verwendet werden.
Daher musst du für SQL ALLE benötigten Felder explizit definieren.
Leider kann der Precompiler auch keine externen Strukturen !
-
Ok dann bin ich jetzt mal wieder etwas schlauer als vorher,
vielen Dank für die schnelle Antwort.
PS
Ich werde dann mal statt ner Procedure ne Subroutine daraus machen.
Gefiel mir als Prozedur zwar viel schoener aber was solls.
-
Normalerweise lassen sich auch Bildschirmfelder als Parameter im SQL verarbeiten. Es gibt aber eine Macke im Precompiler, der reine Ausgabefelder nicht erkennt, wenn alle Ausgabeoperationen (write, exfmt) im free-form angegeben sind. Wenn das Programm in free-form geschrieben ist, versuche mal die Ausgabe in der traditioneller Schreibform anzugeben:
/end-free
write fmxxxx
/freee
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By malzusrex in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 19-09-06, 11:04
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks