PDA

View Full Version : QDBRTVFD mit XPCML



BAStudentin08
16-06-11, 10:08
Hallo,

ich hab ein erneutes Problem mit XPCML. Und zwar möchte ich gerne
zu den Tabellen auf der AS400 die Key-Felder wissen. Dafür habe ich die API QDBRTVFD
gefunden und folgende XPCML erstellt. Allerdings erhalte ich bei folgendem Aufbau und
Aufruf keine Daten zurück. Was ist falsch
bzw. gibt es noch andere APIs, um die Schlüsselfelder von Objekten zu erhalten?




- <?xml version="1.0" ?>
- <xpcml version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation='xpcml.xsd' >


- <struct name="FILD0300">
- <intParm name="byte_ret"/>
- <intParm name="byte_avail"/>
- <shortParm name="max_key_len"/>
- <shortParm name="key_count"/>
- <stringParm name="reserved" length="10"/>
- <shortParm name="fmt_counts"/>

- <stringParm name="rec_name" length="10"/>
- <stringParm name="res" length="2"/>
- <shortParm name="num_Of_Keys"/>
- <stringParm name="rese" length="14"/>
- <intParm name="key_info_offeset"/>


- <stringParm name="Int_Field_Name" length="10"/>
- <stringParm name="Ext_Field_Name" length="10"/>
- <shortParm name="Data_Type"/>
- <shortParm name="Field_Len"/>
- <shortParm name="Num_Of_Digs"/>
- <shortParm name="Dec_Pos"/>
- <stringParm name="Qdb_Qdbwhkattr_t" length="1"/>
- <shortParm name="Alt_Name_Len"/>
- <stringParm name="Alt_Name" length="30"/>
- <stringParm name="newres" length="1"/>
- <stringParm name="Qdb_Qdbwhkatt1_t" length="1"/>
- <stringParm name="newres2" length="1"/>
- </struct>

-<program name="QDBRTVFD" path="/QSYS.lib/QDBRTVFD.pgm">
-<parameterList>
- <arrayOfStructParm name="receiver" passDirection="out" count="1"
- outputSize="receiverLength" struct="FILD0300"/>
- <intParm name="receiverLength" passDirection="in">120</intParm>
- <stringParm name="retfilename" passDirection="out" length="20"/>
- <stringParm name="formname" passDirection="in" length="8">FILD0300</stringParm>
- <stringParm name="filename" passDirection="in" length="20">####################</stringParm>
- <stringParm name="recformnam" passDirection="in" length="10">*FIRST </stringParm>
- <stringParm name="ovrproc" passDirection="in" length="1">0</stringParm>
- <stringParm name="system" passDirection="in" length="10">*LCL </stringParm>
- <stringParm name="formtype" passDirection="in" length="10">*INT </stringParm>
- <intParm name="errorCode" passDirection="in">0</intParm>

-</parameterList>
-</program>

-</xpcml>


Ach, und entschuldigt die ganzen Bindestriche, nur war mir nicht ganz klar, wie ich den HTML/XML-Code
hier reinbringe und Zeilenumbrüche erzwingen kann.
Vielen Dank

Fuerchau
16-06-11, 11:07
Ich denke mal, du hast das komplizierteste API überhaupt gewählt.
Besonderes Augenmerk ist auf ErrorCode zu legen.
Auch dieses ist eine Struktur:

ByteProvided Integer
BytesAvailable Integer
ErrorCode CHAR(7)
Reserved CHAR(1)
ErrorData CHAR(n)

Diese Struktur enthält dann ggf. eine CPF-Meldung.

Das API kann dir aber nur Schlüssel liefern, wenn eine PF überhaupt Schlüssel hat.
Bei SQL-Tables ist das nämlich nicht der Fall (außer PrimaryConstraint).

Besser ist es, die Informationen per SQL zu beschaffen.

Was willst du überhaupt mit den Infos ?

BenderD
17-08-11, 19:58
... zwar schon 'ne Weile her, aber...
- wie wärs ,mit select ... from QSYS2.SYSKEYCST where...
- von dem PCML und XPCML lässt man die Finger, das ist Murks!

D*B