Datentransfer zu AS400

Datentransfer zu AS400

am 04.10.2006 23:27:27 von Stefan Brandt

Hallo zusammen,

ich wusste ja, das mir mein Alter nochmal zum Verhängnis wird. ;-)

Ich stehe vor dem Problem, das ich aus einer PHP-Applikation heraus
Transaktionsdaten an eine AS400 übermitteln muss. Die Transaktionsdaten
sollen zunächst in ein Textfile geschrieben und dann per FTP an die
AS400 übertragen werden.

Leider benötigt die AS400 sogenannte "Packed decimals" im Importfile. Da
ich wie gesagt AS400 technischer Leihe bin, weiß ich nicht, wie ich
diese aus PHP heraus erzeugen kann, so daß diese auf der AS400-Seite
korrekt verarbeitet werden können.

Vielleicht hat ja jemand etwas ähnliches schon einmal gemacht und kann
mir eine Tip geben, wie man am besten vorgeht.

Intensives googeln in der AS400 Newsgroup hat mich eher verwirrt als
weitergebracht! ;-(

Vielen Dank für Eure Hilfe.

Gruß,
Stefan

Re: Datentransfer zu AS400

am 04.10.2006 23:46:36 von Frank Schenk

Stefan Brandt schrieb:
> Hallo zusammen,
>
> ich wusste ja, das mir mein Alter nochmal zum Verhängnis wird. ;-)
>
> Ich stehe vor dem Problem, das ich aus einer PHP-Applikation heraus
> Transaktionsdaten an eine AS400 übermitteln muss. Die Transaktionsdaten
> sollen zunächst in ein Textfile geschrieben und dann per FTP an die
> AS400 übertragen werden.
>
> Leider benötigt die AS400 sogenannte "Packed decimals" im Importfile. Da
> ich wie gesagt AS400 technischer Leihe bin, weiß ich nicht, wie ich
> diese aus PHP heraus erzeugen kann, so daß diese auf der AS400-Seite
> korrekt verarbeitet werden können.

http://www.google.de/search?hl=de&q=packed+decimals+php&btnG =Google-Suche&meta=

Gleich der erste Treffer...


gruß, Frank

Re: Datentransfer zu AS400

am 05.10.2006 00:05:19 von Niels Braczek

Stefan Brandt schrieb:

> Leider benötigt die AS400 sogenannte "Packed decimals" im Importfile.=
Da=20
> ich wie gesagt AS400 technischer Leihe bin, weiß ich nicht, wie ich=20
> diese aus PHP heraus erzeugen kann, so daß diese auf der AS400-Seite =

> korrekt verarbeitet werden können.
>=20
> Vielleicht hat ja jemand etwas ähnliches schon einmal gemacht und kan=
n=20
> mir eine Tip geben, wie man am besten vorgeht.

Ich erinnere mich dunkel...

Unter Packed Decimals versteht man IIRC BCD, also Binary Coded Decimals
(http://de.wikipedia.org/wiki/BCD-Code). Dazu wird jede Ziffer als
Nibble (=3DHalbbyte) dargestellt.

$n =3D 123456789;

$n_bcd =3D int2bcd( $n );

function int2bcd( $n )
{
$bcd =3D '';
if ( $n > 99 ) {
// Letzten beiden Ziffern vom Rest trennen
$l =3D intval( $n / 100 );
$n =3D $n - 100*$l;
// Rest rekursiv behandeln
$bcd =3D int2bcd( $l );
}
// Ziffern aufspalten
$l =3D intval( $n / 10 );
$r =3D $n - 10*$msn;
// Bytewert zusammenbauen
$byte =3D 16*$msn + $lsn;
// Kodieren und anhängen
$bcd .=3D chr( $byte );
return $bcd;
}

Die Funktion ist weder getestet noch optimiert; aber sie zeigt dir
hoffentlich, wo's lang geht.

HTH
NIels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: Datentransfer zu AS400

am 05.10.2006 00:08:49 von Niels Braczek

Niels Braczek schrieb:

Sorry, waren noch ein paar TyppFähler drin.

> function int2bcd( $n )
> {
> $bcd =3D '';
> if ( $n > 99 ) {
> // Letzten beiden Ziffern vom Rest trennen
> $l =3D intval( $n / 100 );
> $n =3D $n - 100*$l;
> // Rest rekursiv behandeln
> $bcd =3D int2bcd( $l );
> }
> // Ziffern aufspalten
> $l =3D intval( $n / 10 );
> $r =3D $n - 10*$l;
> // Bytewert zusammenbauen
> $byte =3D 16*$l + $r;
> // Kodieren und anhängen
> $bcd .=3D chr( $byte );
> return $bcd;
> }

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------