Pregunta

A continuación se muestra un diseño de tabla / archivo para "sh.prom", una tabla de DB2 en un AS / 400 que es responsable de la representación mensual Promoción elementos en todo nuestro sistema. Cualquier persona que no esté familiarizada con los diseños típicos de la tabla debe saber que generalmente hay tres columnas: F00001, K00001 y F00002. A veces, un cuarto aparece en el nuestro (K00002). En nuestro sistema, F00002 generalmente sostiene múltiples subcampos que he proporcionado nombre, posición, longitud y tipos de datos para. Cualquier cosa en la columna de notas etiquetada 'pelusa' significa apagado a cero o 'espaciado' en los caracteres EBCDIC, por lo que no es importante desde un punto de vista de datos, pero aún debe estar allí correctamente.

        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...

Estoy teniendo problemas insertando esas fechas de inicio / fin de promoción.

Si inserto datos en la columna F00002 como una cadena, se convierte automáticamente a los números EBCDIC:

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

(*** Los puntos finales en los datos de inserción de F00002 significa que el resto sigue el diseño del archivo / tabla arriba.)

y F00002 como un entero solo para probarlo:

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

La columna omite el cero acolchado izquierdo y lo convierte a los caracteres EBCDIC nuevamente.

Aquí hay un ejemplo de un campo F00002 existente, así como dos squirritas útiles útiles :) (aka squirrel shot shot) Primero segundo :

  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  

¿Cómo inserto este campo F00002 para que los datos almacene correctamente?

¿Fue útil?

Solución

La solución correcta sería describir externamente el archivo usando Especificaciones de descripción de datos (DDS) .

Los programas heredados no tendrán problemas para acceder a un archivo descrito externamente.

Una vez que se describe externamente, puede acceder a los campos normalmente y dejar que la base de datos de la base de manejo sea la conversión.

Aquí hay una muestra para comenzar.Sin las especificaciones de entrada reales de la fuente del programa, supondí en los lugares decimales para los campos numéricos.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top