Iniciar Sesión

Ver la Versión Completa : [Compilador] Longitud de variables al compilar


Begoguay
18 de enero de 2023, 10:26
Buenos dias.

Tengo la siguiente duda.
En RMCOBOL, puedo ver la longitud de las variables que utilizo en un programa compilando de la siguiente forma:

RMCOBOL Programa.CBL S L A

De esta forma, me genera un archivo Programa.LST, donde yo puedo ver la longitud de todas las variables que utilizo en Programa.CBL

Mi pregunta es: ¿Existe esta posibilidad de ver la longitud de las variables, al compilar en POWERCOBOL?

Un saludo.

Josber
18 de enero de 2023, 11:58
Mi pregunta es: ¿Existe esta posibilidad de ver la longitud de las variables, al compilar en POWERCOBOL?

Un saludo.

Hola @Begoguay, cuanto tiempo sin verte por estos lares,


COMPUTE I = FUNCTION LENGTH (variable).

En I, se te almacena el tamaño de la variable.

Si lo que quieres es saber cuánto tiene ocupado de su tamaño total una variable


COMPUTE I = FUNCTION STORED-CHAR-LENGTH (variable).

Un saludo.-

Kuk
18 de enero de 2023, 12:32
@Begoguay, hola, es verdad que llevamos tiempo sin verte. A ver si nos visitas de vez en cuando ;)

Lo que tu quieres normalmente se genera a la hora de compilar. Y es efectivamente también posible en Fujitsu COBOL, añadiendo al directiva de compilación LIST. Puedes ver más detalles aquí: A.1.22 LIST compile option (https://software.fujitsu.com/jp/manual/manualfiles/m150010/b1wd3357/01enz200/b3357-a-01-23.html)

RM como no es compilado sino interpretado, te lo hace cuando quieras, pero todo código compilado genera el fichero "listing" a la hora de compilarlo y no después, porque es información estática.

P.D. Tienes que ponerle LIST en el mismo sitio done pones ALPHAL(WORD) por ejemplo, separado por coma.

Begoguay
19 de enero de 2023, 12:38
No consigo que me haga nada.
¿Se supone que me genera un fichero con esos datos? ¿Y si es así donde lo genera?
Yo pongo lo de LIST en las propiedades del SCRIPT del formulario, ¿es ahi?
¿El programa lo tengo que compilar desde fuera o desde el 'editor' de POWERCOBOL?

Kuk
19 de enero de 2023, 13:59
@Begoguay, le acabo de echar un ojo y parece ser que para que haya salida hay poner otra directiva adicional que es PRINT: A.1.32 PRINT compile option (https://software.fujitsu.com/jp/manual/manualfiles/m150010/b1wd3357/01enz200/b3357-a-01-33.html)
Es lo que dice el comentario (note) de la directiva LIST:


If the PRINT compile option is not specified, no object program list is output regardless of the specification of this option.


Es decir PRINT,LIST

Te genera el fichero [nombre_form].LST en MainDebug.

Lo que pasa es que el contenido no es el que te esperas. Así que he investigado un poco y la directiva que tú necesitas no es LIST sino que es MAP.


Conclusión: lo que tienes que poner es esto: debe ser PRINT,MAP y así sí que salen las variables, su longitud etc. El resultado es así:


NetCOBOL V10.1.0 MAINFORM THU JAN 19 13:55:58 2023 0001


LINE ADDR OFFSET REC-OFFSET LVL NAME LENGTH ATTRIBUTE BASE DIM


**MAINFORM**
28 GWA+00000110 0 01 IDX-V 4 COMP-5 BGW.000000
29 GWA+00000118 0 01 GLB-VENTANAS 48 GROUP-V BGW.000000
30 GWA+00000118 0 05 GLB-VENTANA 24 GROUP-F BGW.000000 1
31 GWA+00000118 0 10 GLB-HWND 4 COMP-5 BGW.000000 1
32 GWA+0000011C 4 10 GLB-NOMBRE 20 ALPHANUM BGW.000000 1
35 GWA+00000148 0 01 DESTINO 46 GROUP-F BGW.000000
36 GWA+00000148 0 03 FILLER 6 ALPHANUM BGW.000000
37 GWA+0000014E 6 03 LLEGAR 40 ALPHANUM BGW.000000
39 GWA+00000178 0 01 ORIGEN 46 GROUP-F BGW.000000
40 GWA+00000178 0 03 FILLER 6 ALPHANUM BGW.000000
41 GWA+0000017E 6 03 SALIR 40 ALPHANUM BGW.000000
43 GWA+000001A8 0 01 TOOLTIP 10 ALPHANUM BGW.000000
47 [EBP+FFFFFF48]+00000000 0 01 POW-FORM 44 GROUP-F BVA.000001
48 [EBP+FFFFFF48]+00000000 0 02 POW-SELF 4 COMP-5 BVA.000001
49 [EBP+FFFFFF48]+00000004 4 02 POW-SUPER 4 ALPHANUM BVA.000001
50 [EBP+FFFFFF48]+00000008 8 02 POW-THIS 4 COMP-5 BVA.000001