Question

Ci-dessous est une disposition de table / fichier pour "sh.prom", une table DB2 dans un AS / 400 responsable de la rendu mensuel de promotion sur notre système. Toute personne qui n'est pas familière avec les dispositions typiques de la table doit savoir qu'il existe généralement trois colonnes: F00001, K00001 et F00002. Parfois, un quatrième apparaît dans la nôtre (K00002). Dans notre système, F00002 contient généralement plusieurs sous-champs que j'ai fournis le nom, la position, la longueur et les types de données. Tout ce qui est dans la colonne Notes intitulé «Fluff» signifie zéro ou «espacé» dans des caractères EbcDic si non importants d'un point de vue des données, mais il reste encore à y être correctement.

        Field   Pos.  Len.  Name      Type     Notes
        ---------------------------------------------
        F00001    1     2   MACT      Alpha    Activity Code, Always 1 or 9 (active/inactive)
        K00001    1    20   MITEM     Alpha    Item Number
        K00001   21     2   MP        Alpha    Unknown title, Always 'P'
        K00001   23     2   MPITCL    Alpha    Unknown title, Always 'P' or 'I'
        F00002    1     8   MSTDAT    Integer  Promotion Start Date, MMDDYY0F
        F00002    9     8   MEXDAT    Integer  Promotion End Date, MMDDYY0F
        F00002   17     8   MLIST     Decimal  Amount to be subtracted from original price
        F00002   25     8   MRETAL    Decimal  Fluff, 0000000f
        F00002   33     8   MCOST     Decimal  Fluff, 0000000f
        F00002   41    10   MQTY      Decimal  Fluff, 000000000f
        F00002   51     6   MPCHNG    Integer  Fluff, 00000f
        F00002   57    12   MNPEFT    Alpha    Fluff, 404040404040
        F00002   69     8   MNSTDT    Integer  Fluff, 0000000f
        F00002   77     8   MNEXDT    Integer  Fluff, 0000000f
        F00002   85     8   MNLST     Decimal  Fluff, 0000000f
        F00002   93     8   MPNRTL    Integer  Fluff, 0000000f
        F00002  101     8   MNCOST    Decimal  Fluff, 0000000f
        F00002  109     8   ZZ14      Alpha    Fluff, 40404040
        F00002  117     8   MALPHA    Alpha    Fluff, 40404040
        F00002  125   170   ZZ64      Alpha    Fluff, 40404040404040...

J'ai des problèmes d'insertion de ces dates de début / fin de promotion.

Si j'insère des données dans la colonne F00002 en tant que chaîne, elle convertit automatiquement sur les numéros EBCDIC:

    INSERT INTO "SH.PROM" (F00001,K00001,F00002) VALUES ('1','0000620311PP','0201140F0228140F...')

(*** Les points de fuite des données d'insertion de F00002 désignent le reste suivant la disposition de fichier / table ci-dessus.)

et f00002 comme un entier juste pour l'essayer:

    INSERT INTO "SH.PROM" (F00001,K00001,F00002) VALUES ('1','0000620311PP',0201140...)

La colonne omet le zéro gauche gauche et le convertit à nouveau sur des caractères EBCDIC.

Voici un exemple de champ F00002 existant ainsi que deux écureuils utiles :) (aka SQL Squirrel Screen Shot) Premier Deuxième :

  08  01  13  0f  01  31  14  0f  00  00  38  0f  00  00  00  0f  00  00  00  0f  00  00  06  80  0f  00  00  0f  f0  f0  f0  f0  f0  f0  00  00  00  0f  00  00  00  0f  00  00  00  0f  00  00  00  0f  00  00  00  0f  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  40  

Comment insérer ce champ F00002 pour que les données stockent correctement?

Était-ce utile?

La solution

La solution correcte consisterait à décrire de manière externe le fichier en utilisant Description des données Spécifications (DDS) .

Les programmes hérités n'auront aucun problème à accéder à un fichier décrit de l'extérieur.

Une fois que cela est décrit de l'extérieur, vous pouvez accéder aux champs normalement et laisser la base de données de type conversion de type.

Voici un échantillon pour vous aider à démarrer.Sans les spécifications d'entrée réelles de la source de programme, j'ai deviné à la décimale pour les champs numériques.

A          R PROM
A            MACT           2A
A            MITEM         20A
A            MP             2A
A            MPITCL         2A
A            MSTDAT         8S 0
A            MEXDAT         8S 0
A            MLIST          8S 2
A            MRETAL         8S 2
A            MCOST          8S 2
A            MQTY          10S 0
A            MPCHNG         6S 0
A            MNPEFT        12A
A            MNSTDT         8S 0
A            MNEXDT         8S 0
A            MNLST          8S 2
A            MPNRTL         8S 2
A            MNCOST         8S 2
A            ZZ14           8A
A            MALPHA         8A
A            ZZ64         170A
A          K MITEM
A          K MP
A          K MPITCL

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top