Cómo asignar números de referencia de columna

En esta sección:

Cómo:

La notación de columnas asigna un número secuencial de columna a cada columna en la matriz interna creada para una solicitud de informe. Si desea controlar la creación de números de referencia de columnas para las columnas que se usan en su informe, use el comando de notación de columna CNOTATION.

Dado que los números de columna se refieren a columnas en la matriz interna, se asignan después que han terminado de recuperarse y fundirse los datos. Las columnas creadas y mostradas en un informe se clasifican en la matriz interna, en tanto que las columnas que no aparecen en un informe se pueden producir y guardar en la matriz interna también. Las columnas almacenadas en la matriz interna incluyen valores calculados, valores de campo reformateados, campos BY, campos con la opción NOPRINT y ciertos cálculos RECAP tales como FORECAST y REGRESS. A cada columna intercalada se le asigna un número de columna predeterminado en la matriz interna, lo cual significa que debe tener en cuenta todas las columnas producidas internamente si desea referirse al valor de columna adecuado en su solicitud.

Puede cambiar la asignación automática de números de referencia de columnas mediante el comando SET CNOTATION, que es capaz de asignar números de columna solamente a las que aparezcan en la salida de informe o a todos los campos citados en la solicitud de informe. Puede utilizar notación de columnas en comandos COMPUTE y RECAP para hacer referencia a estas columnas en su informe.


Principio de página

x
Sintaxis: Cómo Controlar la creación de números de referencia de columnas
SET CNOTATION={ALL|PRINTONLY|EXPLICIT}

donde:

ALL
Asigna números de referencia de columna a cada columna en la matriz interna. ALL es el valor predeterminado.
PRINTONLY
Asigna números de referencia de columna sólo a las columnas que aparecen en la salida de informe.
EXPLICIT
Asigna números de referencia de columna a todos los campos mencionados en la solicitud, independientemente de que se muestren o no.

Principio de página

x
Cómo utilizar notación de columnas en una solicitud de informe

Referencia:

Para crear una referencia a una columna en una solicitud, puede:



Ejemplo: Cómo utilizar notación de columnas con CNOTATION=ALL en una solicitud que no sea FML

En la solicitud que sigue con la notación CNOTATION=ALL, el resultado de C1 y C2 no es la multiplicación de TRANSTOT por QUANTITY porque el reformateado genera columnas adicionales.

SET CNOTATION = ALL
TABLE FILE VIDEOTRK
SUM TRANSTOT/D12.2 QUANTITY/D12.2 
AND COMPUTE
PRODUCT = C1 * C2;
BY TRANSDATE
END

La salida es:

TRANSDATE        TRANSTOT        QUANTITY         PRODUCT
---------        --------        --------         -------
 91/06/17           57.03           12.00        3,252.42
 91/06/18           21.25            2.00          451.56
 91/06/19           38.17            5.00        1,456.95
 91/06/20           14.23            3.00          202.49
 91/06/21           44.72            7.00        1,999.88
 91/06/24          126.28           12.00       15,946.63
 91/06/25           47.74            8.00        2,279.11
 91/06/26           40.97            2.00        1,678.54
 91/06/27           60.24            9.00        3,628.85
 91/06/28           31.00            3.00          961.00

Los campos BY no obtienen una referencia de columna, de manera que la primera referencia de columna es para TRANSTOT con su formato original y luego la versión reformateada. Después toca el turno a QUANTITY con su formato original y luego la versión reformateada. Finalmente viene el valor calculado, PRODUCT.



Ejemplo: Cómo utilizar notación de columnas con CNOTATION=PRINTONLY en una solicitud que no sea FML

Si se establece CNOTATION=PRINTONLY, sólo se asignan referencias de columna a las columnas de salida. En este caso, el producto de C1 y C2 multiplica TRANSTOT por QUANTITY.

SET CNOTATION = PRINTONLY
 
TABLE FILE VIDEOTRK
SUM TRANSTOT/D12.2 QUANTITY/D12.2
AND COMPUTE
PRODUCT = C1 * C2;
BY TRANSDATE
END

La salida es:

TRANSDATE        TRANSTOT        QUANTITY         PRODUCT
---------        --------        --------         -------
 91/06/17           57.03           12.00          684.36
 91/06/18           21.25            2.00           42.50
 91/06/19           38.17            5.00          190.85
 91/06/20           14.23            3.00           42.69
 91/06/21           44.72            7.00          313.04
 91/06/24          126.28           12.00        1,515.36
 91/06/25           47.74            8.00          381.92
 91/06/26           40.97            2.00           81.94
 91/06/27           60.24            9.00          542.16
 91/06/28           31.00            3.00           93.00


Ejemplo: Cómo utilizar CNOTATION=PRINTONLY con números de columna en una solicitud FML

En la siguiente solicitud, el reformateado de los campos genera columnas adicionales en la matriz interna. Tenga en cuenta que, a causa de la configuración CNOTATION, en la segunda expresión RECAP:

SET CNOTATION=PRINTONLY
DEFINE FILE LEDGER
CUR_YR/I5C=AMOUNT;
LAST_YR/I5C=.87*CUR_YR - 142;
END
TABLE FILE LEDGER
SUM CUR_YR/F9.2 AS 'CURRENT,YEAR'
LAST_YR/F9.2 AS 'LAST,YEAR'
 
FOR ACCOUNT
1010 AS 'CASH ON HAND'                             OVER
1020 AS 'DEMAND DEPOSITS'                          OVER
1030 AS 'TIME DEPOSITS'                            OVER
BAR                                                OVER
RECAP TOTCASH/F9.2C= R1 + R2 + R3; AS 'TOTAL CASH' OVER
" "                                                OVER
RECAP GROCASH(2)/F9.2C=100*TOTCASH(1)/TOTCASH(2) - 100;
AS 'CASH GROWTH(%)'
END

La salida es:

 
 CURRENT 
    YEAR
    LAST  
    YEAR
CASH ON HAND
 8784.00
 7216.00
DEMAND DEPOSITS
 4494.00
 3483.00
TIME DEPOSITS
 7961.00
 6499.00
 
--------
--------
TOTAL CASH
21239.00
17198.00
   
CASH GROWTH(%)
 
   23.50


Ejemplo: Cómo utilizar CNOTATION=PRINTONLY con RECAP Over en columnas contiguas en una solicitud FML

En este ejemplo, el cálculo RECAP para ATOT solamente tiene lugar en relación con las columnas desplegadas 2 y 3, tal como se especifica en la solicitud. No se realiza ningún cálculo para la columna desplegada 1.

SET CNOTATION=PRINTONLY
DEFINE FILE LEDGER
CUR_YR/I5C=AMOUNT;
LAST_YR/I5C=.87*CUR_YR - 142;
NEXT_YR/I5C=1.13*CUR_YR + 222;
END
TABLE FILE LEDGER
SUM NEXT_YR/F9.2 CUR_YR/F9.2 LAST_YR/F9.2
FOR ACCOUNT
10$$ AS 'CASH'                      OVER 
1100 AS 'ACCOUNTS RECEIVABLE'       OVER 
1200 AS 'INVENTORY'                 OVER 
BAR                                 OVER 
RECAP ATOT(2,3)/I5C = R1 + R2 + R3;
AS 'ASSETS  ACTUAL'
END

La salida es:

 
 NEXT_YR
  CUR_YR
 LAST_YR
CASH
25992.00
21239.00
17198.00
ACCOUNTS RECEIVABLE
21941.00
18829.00
15954.00
INVENTORY
31522.00
27307.00
23329.00
 
--------
--------
--------
ASSETS ACTUAL
 
  67,375
  56,478


Ejemplo: Cómo utilizar CNOTATION=PRINTONLY con dirección de columnas relativas en una solicitud FML

Este ejemplo calcula el cambio en efectivo (CHGCASH) para las columnas desplegadas 1 y 2.

SET CNOTATION=PRINTONLY
DEFINE FILE LEDGER
CUR_YR/I5C=AMOUNT;
LAST_YR/I5C=.87*CUR_YR - 142;
NEXT_YR/I5C=1.13*CUR_YR + 222;
END
TABLE FILE LEDGER
SUM NEXT_YR/F9.2 CUR_YR/F9.2 LAST_YR/F9.2
FOR ACCOUNT
10$$ AS 'TOTAL CASH' LABEL TOTCASH           OVER
" "                                          OVER
RECAP CHGCASH(1,2)/I5SC = TOTCASH(*) - TOTCASH(*+1); AS 'CHANGE IN CASH'
END

La salida es:

 
  NEXT_YR
  CUR_YR
 LAST_YR
TOTAL CASH
 25992.00
21239.00
17198.00
    
CHANGE IN CASH
    4,752
   4,044
 


Ejemplo: Cómo utilizar CNOTATION=PRINTONLY con notación de celda en una solicitud FML

En esta solicitud, de dos expresiones RECAP se obtienen VARIANCEs (EVAR y WVAR) al restar valores en cuatro columnas desplegadas (1, 2, 3, 4) en la fila tres (PROFIT). Estos valores se identifican con notación de celda (r,c).

SET CNOTATION=PRINTONLY
TABLE FILE REGION
SUM E_ACTUAL/F9.2 E_BUDGET/F9.2 W_ACTUAL/F9.2 W_BUDGET/F9.2
FOR ACCOUNT
3000 AS 'SALES'                         OVER
3100 AS 'COST'                          OVER
BAR                                     OVER
RECAP PROFIT/I5C = R1 - R2;             OVER
" "                                     OVER
RECAP EVAR(1)/I5C = E(3,1) - E(3,2);
AS 'EAST  VARIANCE'                     OVER
RECAP WVAR(3)/I5C = E(3,3) - E(3,4);
AS 'WEST  VARIANCE'
END

La salida es:

output



Ejemplo: Cómo utilizar NOPRINT, reformateado de campo y COMPUTE con notación de columna

La siguiente solicitud tiene un campo que no se imprime, varios campos reformateados y tres campos calculados. Con SET CNOTATION=PRINTONLY, las referencias de columna arrojan una salida correcta.

SET CNOTATION = PRINTONLY
DEFINE FILE LEDGER
CUR_YR/I5C=AMOUNT;
LAST_YR/I5C=.87*CUR_YR - 142;
NEXT_YR/I5C=1.13*CUR_YR + 222;
END
TABLE FILE LEDGER
SUM NEXT_YR NOPRINT CUR_YR
COMPUTE AMT2/D6 = AMOUNT *2;
LAST_YR/D5   AMOUNT NEXT_YR
COMPUTE AMT3/D6  = AMOUNT*3;
COMPUTE AMT4/D6  = AMOUNT*4;
FOR ACCOUNT
10$$ AS 'CASH'                                 OVER
1100 AS 'ACCTS. REC.'                          OVER
1200 AS 'INVENTORY'                            OVER
BAR                                            OVER
RECAP ATOT/I8C = R1 + R2 + R3; AS 'TOTAL'      OVER
RECAP DIFF(2,10,2)/D8  = ATOT(*) - ATOT(*-1);
END

La salida es:

output



Ejemplo: Cómo usar la notación de columnas con NOPRINT en una solicitud que no sea FML

La siguiente solicitud suma TRANSTOT, QUANTITY y TRANSCODE por TRANSDATE. TRANSTOT tiene la opción de NOPRINT, y por esta razón no aparece en la salida del informe. La solicitud también calcula los siguientes campos usando comandos COMPUTE:

SET CNOTATION = ALL
TABLE FILE VIDEOTRK
SUM TRANSTOT/D7.2 NOPRINT QUANTITY/D7.2 TRANSCODE
  COMPUTE TTOT2/D7.2 = C1;
  COMPUTE UNIT_COST1/D7.2 = C1/C2;
  COMPUTE UNIT_COST2/D7.2 = C1/QUANTITY;
BY TRANSDATE
END

Con esta solicitud, solo CNOTATION=EXPLICIT genera la salida correcta. La siguiente presentación expone por qué es necesario usar la función EXPLICIT.

Con CNOTATION=ALL, se asigna números de columna a todos los campos en la matriz interna. Específicamente, la solicitud crea las siguientes referencias de columna:

UNIT_COST1 es C1/C2. Estos dos números de columna han sido asignados a TRANSTOT, por lo tanto UNIT_COST1 siempre es igual a 1. UNIT_COST2 es C1 (TRANSTOT) dividido por QUANTITY. La salida es:

TRANSDATE  QUANTITY  TRANSCODE     TTOT2  UNIT_COST1  UNIT_COST2
---------  --------  ---------     -----  ----------  ----------
 91/06/17     12.00         10     57.03        1.00        4.75
 91/06/18      2.00          2     21.25        1.00       10.63
 91/06/19      5.00          4     38.17        1.00        7.63
 91/06/20      3.00          3     14.23        1.00        4.74
 91/06/21      7.00          6     44.72        1.00        6.39
 91/06/24     12.00          9    126.28        1.00       10.52
 91/06/25      8.00          7     47.74        1.00        5.97
 91/06/26      2.00          2     40.97        1.00       20.48
 91/06/27      9.00          7     60.24        1.00        6.69
 91/06/28      3.00          3     31.00        1.00       10.33

Con CNOTATION = PRINTONLY, no se asigna ningún número de columna al campo TRANSTOT, que tiene la opción NOPRINT. QUANTITY con su formato original no recibe una asignación de número de columna porque no se muestra en la salida del informe. El campo QUANTITY reformateado aparece y se le asigna un número de columna. Por lo tanto, la solicitud crea las siguientes referencias de columna:

UNIT_COST1 es C1/C2, QUANTITY/TRANSCODE. UNIT_COST2 es C1 (QUANTITY) dividido por QUANTITY. Por lo tanto, UNIT_COST2 siempre será igual a 1. La salida es:

TRANSDATE  QUANTITY  TRANSCODE     TTOT2  UNIT_COST1  UNIT_COST2
---------  --------  ---------     -----  ----------  ----------
 91/06/17     12.00         10     12.00        1.20        1.00
 91/06/18      2.00          2      2.00        1.00        1.00
 91/06/19      5.00          4      5.00        1.25        1.00
 91/06/20      3.00          3      3.00        1.00        1.00
 91/06/21      7.00          6      7.00        1.17        1.00
 91/06/24     12.00          9     12.00        1.33        1.00
 91/06/25      8.00          7      8.00        1.14        1.00
 91/06/26      2.00          2      2.00        1.00        1.00
 91/06/27      9.00          7      9.00        1.29        1.00
 91/06/28      3.00          3      3.00        1.00        1.00

Con CNOTATION = EXPLICIT, se hace referencia explícitamente al campo TRANSTOT reformateado y por lo tanto recibe una asignación de número de columna aunque no se haya mostrado. Sin embargo, el campo TRANSTOT con su formato original no recibe asignación de número de columna. El campo QUANTITY con su formato original no recibe un número de columna porque no tiene Al campo QUANTITY reformateado se le asigna un número de columna. Por lo tanto, la solicitud crea las siguientes referencias de columna:

UNIT_COST1 es C1/C2, TRANSTOT/QUANTITY. UNIT_COST2 es C1 (TRANSTOT) dividido por QUANTITY. Por lo tanto, UNIT_COST2 siempre será igual a UNIT_COST1. La salida es:

TRANSDATE  QUANTITY  TRANSCODE     TTOT2  UNIT_COST1  UNIT_COST2
---------  --------  ---------     -----  ----------  ----------
 91/06/17     12.00         10     57.03        4.75        4.75
 91/06/18      2.00          2     21.25       10.63       10.63
 91/06/19      5.00          4     38.17        7.63        7.63
 91/06/20      3.00          3     14.23        4.74        4.74
 91/06/21      7.00          6     44.72        6.39        6.39
 91/06/24     12.00          9    126.28       10.52       10.52
 91/06/25      8.00          7     47.74        5.97        5.97
 91/06/26      2.00          2     40.97       20.48       20.48
 91/06/27      9.00          7     60.24        6.69        6.69
 91/06/28      3.00          3     31.00       10.33       10.33


Ejemplo: Cómo usar la anotación de celdas en una solicitud FML

En la siguiente solicitud, CUR_YR tiene la opción NOPRINT. La expresión CHGCASH RECAP tendría que restar CUR_YR de LAST_YR y NEXT_YR.

SET CNOTATION = ALL
DEFINE FILE LEDGER
CUR_YR/I7C = AMOUNT;
LAST_YR/I5C = .87*CUR_YR - 142;
NEXT_YR/I5C = 1.13*CUR_YR + 222;
END
TABLE FILE LEDGER
SUM CUR_YR/I5C NOPRINT LAST_YR NEXT_YR
FOR ACCOUNT
10$$ AS 'TOTAL CASH ' LABEL TOTCASH OVER
" " OVER
RECAP CHGCASH(1,3)/I5SC=(TOTCASH(*) - TOTCASH(1));
  AS 'CHANGE FROM CURRENT'
END

Cuando CNOTATION = ALL, C1 Puesto que hay una columna extra y RECAP solo hace referencia a las columnas 1 y 3, el cálculo para NEXT_YR - CUR_YR no se realizará. La salida es:

                     LAST_YR  NEXT_YR
                     -------  -------
TOTAL CASH            17,195   25,991
 
CHANGE FROM CURRENT   -4,044

Cuando CNOTATION = PRINTONLY Por lo tanto no se realizará ningún cálculo. La salida es:

                     LAST_YR  NEXT_YR
                     -------  -------
TOTAL CASH            17,195   25,991
 
CHANGE FROM CURRENT

Cuando CNOTATION = EXPLICIT, la versión reformateada del campo CUR_YR es C1 porque la solicitud hace referencia a él aunque no aparezca. Ambos cálculos se realizan correctamente. La salida es:

                     LAST_YR  NEXT_YR
                     -------  -------
TOTAL CASH            17,195   25,991
 
CHANGE FROM CURRENT   -4,044    4,752


x
Referencia: Notas de uso para números de columna

WebFOCUS