PDA

View Full Version : Einstieg in RPG Programmierung ?!?



Seiten : [1] 2

watchdogg
17-12-09, 09:33
Hallo Leute,

ich versuche mich gerade in RPG reinzudenken -> bisher relativ erfolglos.

Habe bisher nur C++, Delphi und PHP unter Windows programmiert.

Ich habe mir also mit einer query eine Daten-Datei erstellt.

Die Feldnamen(Spaltennamen) in der Datei lauten BDAUN7 und BDARTN.

Jetz will ich mir einfach ein simples RPG schreiben, welches mir im ersten Satz den Spaltenwert von BDARTN in *BLANK umwandelt.
Habe dazu das Tutorial von TexAS400 durchgearbeitet.

Die Datei TESTOUT ist die Ergebnisdatei der Query.


Mein Code:

------------------------------------------
FTESTOUT UF F DISK
C READ TESTOUT 90
C MOVE *BLANK BDARTN
C UPDATETESTOUT
C MOVE *ON *INLR
C RETRN
------------------------------------------

Ich versteh das nicht, beim Übersetzen kommt immer ein Fehler 30.

MfG watchdogg

B.Hauser
17-12-09, 09:46
Bei Native I/O muss der Update immer über den Format und nicht den Datei-Namen erfolgen. Sind Datei und Format-Name identisch, muss der Format-Name über das Schlüssel-Wort RENAME in den F-Bestimmungen umgesetzt werden.

Und wenn Du gerade mit RPG anfängst, dann bitte nicht mit der antiquierten Form (RPGIII), in der zwar immer noch codiert werden kann, die aber seit 15 Jahren nicht mehr weiterentwickelt wurde!
RPGIV hat viel mehr Möglichkeiten, z.B. Free-Format und Built-In-Funktionen.

Hier Dein Source-Code in RPGIV


FTestOut UF F Disk Rename(TestOut: TestOutF)
/Free
Read TestOutF;
If Not %EOF()
BDARTN = *Blanks;
Update TestOutF;
EndIf;
*INLR = *On;
Return;
/End-Free;


Birgitta

andreaspr@aon.at
17-12-09, 09:47
wenn der record-name der tabelle der gleiche ist, wie die tabelle selbst, wirst du bei einem update probleme haben.
du musst in den definitionen noch ein rename durchführen und das update den umgenannten record absetzen.



FTESTOUT UF F K DISK
F rename(TESTOUT:TESTOUTR)
C update TESTOUTR


wenn du das mit SQL machst ersparrst du dir das. ist geschmacksache.

lg andreas

Pikachu
17-12-09, 09:51
Beim Wandeln wird eine Spooldatei erstellt. Sie dir diese einmal an. Da steht drin, was für Fehler beim Wandeln aufgetreten sind.

watchdogg
17-12-09, 10:04
Huch ging das scnell.
Erstmal vielen dank an euch alle.

@B.Hauser

ich probier deinen Code gleich mal aus. Kann man den FreeStyle auf jeder Maschine ohne Probleme verwenden?



@Pikachu

die Spooldatei hab ich mir schon angesehen, da stehen ja die Fehler drin. Kann man dort auch die Zeile erkennen, wo der Fehler im Code auftritt?

MfG watchdogg

ExAzubi
17-12-09, 10:15
free geht nur wenn due ILE RPG nutzt, beim guten alten RPGIII geht das leider nicht!

da musst du eine Fortsetzungszeile zu der F-Karte machen z.B.

F TESTOUT KRENAME TESTR

andreaspr@aon.at
17-12-09, 10:29
am ende des spools erhälst du eine zusammenfassung:


N a c h r i c h t e n z u s a m m e n f a s s u n g
Msg-ID Sv Nummer Nachrichtentext
*RNF7575 00 1 Die Datenstruktur enthält Felder m
Datenart. Diese Felder werden igno
*RNF7030 30 1 Der Name oder die Bezugszahl/der A
definiert.
*RNF7503 30 1 Ausdruck enthält einen Operanden,

RNF7030 = fehler-id
30 = schwierigkeitsgrad
1 = wie oft der fehler aufgetreten ist

beispiel:
im spool mit RNF7030 suchen
dann kommst du zu den zusätzlichen informationen:

Msg-ID Sv Nummer Folge Nachrichtentext
*RNF7030 30 77 001600 Der Name oder die Bezugszahl/der
definiert.
*RNF7575 00 13 001300 Datenstruktur TESTDS hat Felder
und in diesem fall wäre 77 die satznummer im spool, in dem der fehler auftritt.

75 C PARM S
76 C SQL_00003 IFEQ '1'
77 C EVAL SP1 = SQL_00005
78 C END

watchdogg
17-12-09, 12:11
habe es jetzt so geschrieben mit RPGLE:

FTestOut UF E K Disk Rename(TestOut: TestOutF)
/Free
Read TestOutF;
If Not %EOF()
BDARTN = *Blanks;
Update TestOutF;
EndIf;
*INLR = *On;
Return;
/End-Free;

klappt aber nicht.

Fehlermeldung: Datenbeschreibungen für Datei TESTOUT nicht gefunden.

Ich glaub, das mit RPG und mir wird nie funktionieren.:confused:

MfG watchdogg

Pikachu
17-12-09, 12:26
Kann diese Datei über die Bibliotheksliste gefunden werden? Mach mal WRKF TESTOUT. Wird sie da angezeigt?

andreaspr@aon.at
17-12-09, 12:26
klingt so als ob deine tabelle nicht in deiner bibliotheksliste zu finden ist. dann findet der kompiler auch nix.