PDA

View Full Version : AFP-Datenstrom eines Spool-Files ändern?



Stoeberl
26-04-06, 13:41
Hallo zusammen!

Ich wollte mir ein kleines Tools basteln um einige Atrribute eines AFPDS-Spools im nachhinein zu ändern (z.B. Overlay, Papierfach, etc.). Hierzu hab ich mich an Hand des Redbooks "Data Stream & Object Architectures MODCA Reference" ein bisschen in das Thema eingearbeitet. Die grobe Vorgehensweise war:
- Daten des Spools in Userspace ausgeben
- Die einzelnen Structured Fields des AFP-Datenstroms verarbeiten
- Neue Spool-Datei erzeugen

Die Structured Fields sollten ja laut Dokumentation immer folgenden Aufbau haben:
- 2 Byte Structured Field Length
- 3 Byte Structured Field ID
- 1 Byte Structured Field Flag
- 2 Byte Reserviert X'0000'
- Rest ist für Structured Field Data

Beim Verarbeiten der einzelnen Stuctured Fields ist mir aufgefallen das die angegeben Länge nicht immer passt. So z.B. bei dem Structured Field "Presentation Text Data X'D3EE9B'" war bei mir eine Länge von 4999 Byte angegeben, in Wahrheit sind es aber 5097 Byte.

Ist hier jemand der sich genauer mit AFPDS-Daten auskennt und mir dieses Phänomen erklären kann? Hab ich beim Lesen was übersehen? Muss zugeben das ich mir nicht das ganze PDF durchgelesen habe da ich auch nicht zuviel Zeit in das Thema investieren wollte ... :)

MfG
Martin

sidoc_Support
10-05-06, 14:31
Hallo,
AFPDS bzw. MOD:CA ist nicht trivial. Die Feldlängen eines übergeordneten Objekts enthalten auch die Daten des untergeordneten Objekts. Dadurch kann die Feldlänge durchaus größer angegeben sein.

Wenn Feldlängen nicht richtig wären, dann würde das gar nicht laufen. Das Betriebssystem ist sehr restriktiv, was die korrekten Angaben der Feldparameter anbelangt. Wenn da was nicht stimmt, gibt es sofort einen Fehler.

Man kann den Datenstrom mit dem QSPGETF in eine PF kopieren, dann die PF ändern und wieder mit QSPPUTF wieder zurückkopieren. Siehe IBM doku. im Internet.
Gruß
Martin

Stoeberl
10-05-06, 21:42
Hi!

Weiss mittlerweile was ich falsch gemacht habe. Ich verwende das SPFR0200 Format und hab übersehen das die Daten in einzelnen Puffern geliefert werden. Das habe ich in meinem Programm nicht berücksichtigt ... :(

cu
Martin