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.
SET CNOTATION={ALL|PRINTONLY|EXPLICIT}
donde:
Referencia: |
Para crear una referencia a una columna en una solicitud, puede:
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.
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 sí 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
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 |
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 |
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 |
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:
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:
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
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
En esos casos, no es posible conocer por adelantado cuántas columnas se van a generar con la sintaxis. Usar un número de columnas fuera del intervalo en cualquier otro contexto genera el siguiente mensaje:
(FOC258) FIELDNAME OR COMPUTATIONAL ELEMENT NOT RECOGNIZED: column
WebFOCUS |