Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL
Fujitsu COBOL Sub-Foro dedicado a Compiladores e IDE-s de Fujitsu.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Compilador] Problemas con los *.SE/*.FD Socavi PowerCOBOL (ActiveX, v4 - v11) 8 23 de agosto de 2021 22:47
[Duda] Impresoras Fiscales de 2da Generacion Alejo Gonzalez AcuCobol 0 29 de junio de 2020 02:38
[Duda] Impresoras fiscales de 2da generacion Alejo Gonzalez AcuCobol 0 27 de agosto de 2019 01:12
[Compilador] Impresoras Fiscales Hasar Alejo Gonzalez AcuCobol 5 20 de julio de 2018 03:29
[Compilador] Problemas con el DEBUG Josber PowerCOBOL (ActiveX, v4 - v11) 3 12 de abril de 2015 21:16

Respuesta

  #31
Antiguo 16 de marzo de 2025, 11:19
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Ale, bueno pues inténtalo así, con COMP-1:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  pgm      pic x(10) value "program".
  5.  01  double   comp-1.
  6.  01  num redefines double pic s9(9) comp-5.
  7.  
  8.  PROCEDURE       DIVISION.
  9.      
  10.      call pgm using by content "Precio"
  11.                     by value num

El caso es que este es de 4 bytes, y lo importes muy grandes no van a entrar.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #32
Antiguo 16 de marzo de 2025, 14:57
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

@Ale proba con este ejemplo a ver si enviando
valores enteros a la .dll logras facturar
algo , juga con los numeros de los campos
cantidad precio y ver si logras que el impresor
multiplique la cantidad por el precio y facture
un importe.


Otra cosa podes sacar el informe Z ?

Saludos ..
Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2. *---------------------------------------------------------
  3.  01  FUNC-SAM4-LIB          PIC x(50).
  4.  01  sWait                  PIC s9(9) COMP-5.  
  5.  01  Respuesta-Impresor     PIC s9(9) COMP-5 value 0.
  6. *---------------------------------------------------------
  7.  01 AbrirTiquetSam4s        PIC x(10)  VALUE "AbrirTique".
  8.  01 CerrarSam4s             PIC x(6)   VALUE "Cerrar".
  9.  
  10.  
  11.  01 ItemVentaSam4s          PIC x(9)   VALUE  "ItemVenta".
  12.  01 ItemBonificacionSam4s   PIC x(16)  VALUE  "ItemBonificacion".
  13.  
  14.  01 titulo-descripcion      PIC x(11)  value "Descripcion".
  15.  01 titulo-precio           PIC x(6)   value "Precio".
  16.  01 titulo-iva              PIC x(3)   value "IVA".
  17.  01 titulo-codigointerno    PIC x(13)  value "CodigoInterno".
  18.  01 titulo-cantidad         PIC x(8)   value "Cantidad".
  19.  01 titulo-unidadmedida     PIC x(12)  value "UnidadMedida".
  20.  01 titulo-impinterno       PIC x(15)  value "MontoImpIntFijo".  
  21.  
  22.  01 ArticuloSam4                PIC x(13).
  23.  01 DescriptionSam4             PIC x(40).
  24.  01 PrecioSam4                  PIC s9(9)   COMP-5.
  25.  01 IvaSam4                     PIC s9(9)   COMP-5.
  26.  01 CantidadSam4                PIC s9(9)   COMP-5.
  27.  01 MontoImpIntFijoSam4         PIC S9(9)   COMP-5.
  28.  01 UnidadMedidaSam4            PIC s9(9)   COMP-5.
  29.  
  30.  PROCEDURE       DIVISION.
  31. **********************************************************    
  32. *Begin AbrirTique
  33.  
  34.      move spaces        TO FUNC-SAM4-LIB.
  35.      MOVE "IFOpBegin"   TO FUNC-SAM4-LIB.
  36.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE AbrirTiquetSam4s returning Respuesta-Impresor.
  37.  
  38.        
  39. **********************************************************    
  40. *Send AbrirTiquetSam4s
  41.      move spaces       TO FUNC-SAM4-LIB.
  42.      MOVE "IFOpSend"   TO FUNC-SAM4-LIB.
  43.      MOVE 1            TO sWait.
  44.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY VALUE sWait returning Respuesta-Impresor.
  45.  
  46.      
  47.  
  48. *-----------------------------------------------------------------------------------------------------------------------      
  49. * Los campos PrecioSam4 IvaSam4 CantidadSam4 MontoImpIntFijo UnidadMedidaSam4 USAMOS LA FUNCION ENTERO : IFOpParamIntSet
  50. *-----------------------------------------------------------------------------------------------------------------------      
  51.  
  52. *************************************************************************
  53. * muevo valores necesarios para poder facturar un item o articulo
  54.  
  55.  
  56.      move 1210          TO PrecioSam4.
  57.      move 2100          TO IvaSam4.  
  58.      move 5000          TO CantidadSam4.
  59.      move zeros         TO MontoImpIntFijoSam4.
  60.      move 7             TO UnidadMedidaSam4.
  61.  
  62.  
  63.      move "Esto es una prueba" TO DescriptionSam4.
  64.      move "7790060023417"      TO ArticuloSam4.
  65.          
  66. ****************************************    
  67. *Begin ItemVenta
  68.      move spaces        TO FUNC-SAM4-LIB.
  69.      MOVE "IFOpBegin"   TO FUNC-SAM4-LIB.
  70.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE ItemVentaSam4s
  71.                                            returning Respuesta-Impresor.
  72.                                          
  73. ************    
  74. *Descripcion
  75.  
  76.      move spaces           TO FUNC-SAM4-LIB.
  77.      MOVE "IFOpParamSet"   TO FUNC-SAM4-LIB.
  78.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE titulo-descripcion
  79.                                            BY REFERENCE DescriptionSam4
  80.                                            returning Respuesta-Impresor.
  81.  
  82.  
  83. **********
  84. *Cantidad
  85.      move spaces              TO FUNC-SAM4-LIB.
  86.      MOVE "IFOpParamIntSet"   TO FUNC-SAM4-LIB.
  87.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY CONTENT titulo-cantidad
  88.                                            BY VALUE   CantidadSam4
  89.                                            returning Respuesta-Impresor.
  90.  
  91.                                            
  92.  
  93.      
  94. *******
  95. *Precio
  96.      move spaces              TO FUNC-SAM4-LIB.
  97.      MOVE "IFOpParamIntSet"   TO FUNC-SAM4-LIB.
  98.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE titulo-precio
  99.                                            BY VALUE      PrecioSam4
  100.                                            returning Respuesta-Impresor.
  101.  
  102.                                            
  103. ****
  104. *Iva
  105.      move spaces                TO FUNC-SAM4-LIB.
  106.      MOVE "IFOpParamIntSet"     TO FUNC-SAM4-LIB.
  107.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE titulo-iva
  108.                                            BY VALUE     IvaSam4
  109.                                            returning Respuesta-Impresor.
  110.  
  111.      
  112. ****************    
  113. *Codigo Interno
  114.      move spaces           TO FUNC-SAM4-LIB.
  115.      MOVE "IFOpParamSet"   TO FUNC-SAM4-LIB.
  116.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE titulo-codigointerno
  117.                                            BY REFERENCE     ArticuloSam4
  118.                                            returning Respuesta-Impresor.
  119.  
  120. ****************************
  121. *MontoImpIntFijo
  122.      move spaces              TO FUNC-SAM4-LIB.
  123.      MOVE "IFOpParamIntSet"   TO FUNC-SAM4-LIB.
  124.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE     titulo-impinterno
  125.                                            BY VALUE         MontoImpIntFijoSam4
  126.                                            returning Respuesta-Impresor.
  127.  
  128.  
  129. *****************
  130. *Unidad de Medida
  131.      move spaces           TO FUNC-SAM4-LIB.
  132.      MOVE "IFOpParamIntSet"   TO FUNC-SAM4-LIB.
  133.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE titulo-unidadmedida
  134.                                            BY VALUE     UnidadMedidaSam4
  135.                                            returning Respuesta-Impresor.
  136.  
  137.  
  138. **********************************************************    
  139. *Send item
  140.      move spaces       TO FUNC-SAM4-LIB.
  141.      MOVE "IFOpSend"   TO FUNC-SAM4-LIB.
  142.      MOVE 1            TO sWait.
  143.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY VALUE sWait returning Respuesta-Impresor.
  144.  
  145.      
  146.      
  147.  
  148. *------------------------
  149. *Begin "Cerrar"      
  150.      move spaces        TO FUNC-SAM4-LIB.
  151.      MOVE "IFOpBegin"   TO FUNC-SAM4-LIB.
  152.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY REFERENCE CerrarSam4s  returning Respuesta-Impresor.
  153.  
  154.  
  155. *Send Cerrar        
  156.  
  157.      move spaces       TO FUNC-SAM4-LIB.
  158.      MOVE "IFOpSend"   TO FUNC-SAM4-LIB.
  159.      MOVE 1            TO sWait.
  160.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY VALUE sWait returning Respuesta-Impresor.
fastpho is offline   Responder Con Cita
  #33
Antiguo 16 de marzo de 2025, 18:55
Ale
Forero Junior
Última Actividad 23.06.2026 00:14
Posts Posts: 43
Likes enviados Enviados: 19
Likes recibidos Recibidos: 2
Predeterminado controlador fiscal
1 Inactivo Inactivo

Hola gente. muchas gracias, voy a probar todo y les cuento..
Si cierre Z los larga bien. El tique también, alcanza a largar descripción del articulo, y luego cuando llega a cantidad larga en cero, o si no el compilador no me deja probar otros Pic...
Fastpho voy a probar también con entero, pero el parámetro por ejemplo (precio), me indica que tiene que ser flotante. No se si lo tomaría, o como hago cuando el valor sea con decimales.
saludos chicos. y eternamente agradecido igual...
Ale is offline   Responder Con Cita
  #34
Antiguo 16 de marzo de 2025, 19:23
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

@Ale, no importan los decimales el impresor va a.poner el pto decimal no te preocupes por eso
Proba como te lo mande , te envía todo
Debería poner precio 1.21 cantidad 5.00
Vamos a probar todos los valores numéricos
Como enteros por ahora ..
Saludos
fastpho is offline   Responder Con Cita
  #35
Antiguo 16 de marzo de 2025, 20:41
Ale
Forero Junior
Última Actividad 23.06.2026 00:14
Posts Posts: 43
Likes enviados Enviados: 19
Likes recibidos Recibidos: 2
Predeterminado controlador fiscal
0 Inactivo Inactivo

Chicos, le comento que probé las dos opciones que me enviaron.
Kuk probé lo que me enviaste. El compilador no me tira error. Pero en ejecución me cancela el tiquet. Y no imprime mas que descripción.

fastpho probé también lo que me indicaste, y tuvo una notable mejoría, si bien me cancela igual el comprobante, precio unitario le muevo 2200 a la variable y en el tiquet me imprime 22,00. Y le muevo
210 a iva y me imprime en el tiquet 2,10. cantidad le envio 300 y me imprime 0,00. y tambien mejoro en el sentido de que no se cierra el programa. Cosa que antes si.
Una leve esperanza le sigo teniendo al cobol..
Todo comenzó porque tengo que hacer el sistema de facturación nueva. por las nuevas resoluciones de Afip y la leyenda a consumidor finales. Me venia comunicando con el controlador fiscal, con la aplicación (Samdrv.exe) por medio de comandos armados en un archivo de texto... pero resulta que la aplicación por lo que estuve averiguando no tiene ningún comando que permita armar esa leyenda. Llamo a la empresa que lo hizo y no me dan respuesta, se ve que es como pienso yo..
Por eso tengo que hacer todo de nuevo comunicándome por DLL . Tengo tiempo hasta Abril.
Fastpho debes saber de lo que hablo..
Hago todo esto para mi negocio, y como se programar algo de cobol, me largue hacer mis sistemas..
Agradecido eternamente a uds.. y disculpen las molestias.
Ale is offline   Responder Con Cita
  #36
Antiguo 17 de marzo de 2025, 10:38
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Citación del post de Ale Ver Mensaje
Kuk probé lo que me enviaste. El compilador no me tira error. Pero en ejecución me cancela el tiquet. Y no imprime mas que descripción.
Es que yo tengo otra versión de PowerCOBOL más reciente... Y tampoco tengo la DLL que utilizas...

Habría que asegurarnos primero de que el problema viene del campo/tipo de campo.

Has probado pasando un valor "en duro", es decir algo así:

Código COBOL:
  1.      ENVIRONMENT     DIVISION.
  2.      DATA            DIVISION.
  3.      WORKING-STORAGE SECTION.
  4.      01  pgm      pic x(10) value "program".
  5.      01  double   comp-1.
  6.      01  num redefines double pic s9(9) comp-5.
  7.      
  8.      PROCEDURE       DIVISION.
  9.          
  10.          call pgm with stdcall using by content "Precio"
  11.                                      by value 1.16

Por cierto, en mi ejemplo de antes se me había olvidado añadir el convenio del call WITH STDCALL, lo mismo el problema viene de ahí.

Prueba otra vez con el convenio (si no lo habías hecho ya):

Código COBOL:
  1.      ENVIRONMENT     DIVISION.
  2.      DATA            DIVISION.
  3.      WORKING-STORAGE SECTION.
  4.      01  pgm      pic x(10) value "program".
  5.      01  double   comp-1.
  6.      01  num redefines double pic s9(9) comp-5.
  7.      
  8.      PROCEDURE       DIVISION.
  9.          
  10.          call pgm WITH STDCALL using by content "Precio"
  11.                                      by value num



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #37
Antiguo 17 de marzo de 2025, 13:24
Ale
Forero Junior
Última Actividad 23.06.2026 00:14
Posts Posts: 43
Likes enviados Enviados: 19
Likes recibidos Recibidos: 2
Predeterminado controlador fiscal
0 Inactivo Inactivo

hola amigos.
Voy a probar enviar el valor en bruto como me decis a ver que pasa.
De la otra forma probé y como comente en el mensaje anterior, no tira error el compilador, pero no funciona.
Descripción, iva, precio unitario enviándolo como Int. en vez de float , algo esta funcionando, no cancela el comprobante, pero no logro que imprima cantidad.
Algo así hago y no toma nada, lo raro que en precio unitario, iva, y los demás valores numéricos los toma.
De todas maneras el manual dice enviar "IFOpParamFloatSet", seguimos en la lucha.
Código COBOL:
  1. move spaces              TO FUNC-SAM4-LIB.
  2.      MOVE "IFOpParamIntSet"   TO FUNC-SAM4-LIB.
  3.      CALL FUNC-SAM4-LIB WITH STDCALL USING BY CONTENT titulo-cantidad
  4.                                            BY VALUE   CantidadSam4
  5.                                            returning Respuesta-Impresor.
Utilizo powercobol 5 , pero tengo version 7, que no la utilice mucho hasta ahora, que opinan? podría probar con esa? tendría que migrar todo el sistema a esa version.
O se podra copartir en la misma pc las dos versiones.?
Ale is offline   Responder Con Cita
  #38
Antiguo 17 de marzo de 2025, 13:36
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

@Ale con el ejemplo que te di te anda ? no esta claro
Código COBOL:
  1. *************************************************************************
  2. * muevo valores necesarios para poder facturar un item o articulo
  3.  
  4.  
  5.      move 1210          TO PrecioSam4. *> 1.21
  6.      move 2100          TO IvaSam4.  *> 21.00
  7.      move 5000          TO CantidadSam4. *> 5000 tiene 3 decimal el impresor tenes que poner 10000 para que te ponga 10.000
  8.      move zeros         TO MontoImpIntFijoSam4.
  9.      move 7             TO UnidadMedidaSam4.  *> este campo le decis tipo unidades

Código COBOL:
  1. *************************************************************************
  2. * muevo valores necesarios para poder facturar un item o articulo
  3.  
  4.  
  5.      move 15260          TO PrecioSam4. *> 15.26
  6.      move 2100          TO IvaSam4.  *> 21.00
  7.      move 15000          TO CantidadSam4. *> 5000 tiene 3 decimal el impresor tenes que poner 15000 para que te ponga 15.000
  8.      move zeros         TO MontoImpIntFijoSam4.
  9.      move 7             TO UnidadMedidaSam4.  *> este campo le decis tipo unidades
Esto para trabajar los campos numericos como IFOpParamIntSet
subi alguna foto del ticket porfa , y con el valor que manda en estas variables
Saludos..
fastpho is offline   Responder Con Cita
  #39
Antiguo 17 de marzo de 2025, 13:49
Ale
Forero Junior
Última Actividad 23.06.2026 00:14
Posts Posts: 43
Likes enviados Enviados: 19
Likes recibidos Recibidos: 2
Predeterminado controlador fiscal
0 Inactivo Inactivo

fastpho si si funciona, pero el único que no funciono es el de cantidad. No se porque.
si envio como el ejemplo : IFOpParamIntSet a la tarde subo foto de tique, no lo tengo a mano aca.
Ale is offline   Responder Con Cita
  #40
Antiguo 17 de marzo de 2025, 13:58
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Ale, "int" es el tipo Integer, que viene a ser de tipo entero, no te vale para valores con decimales.

La verdad es que no sé qué diferencia hay entre la v5 y la v7. Lo interesante sería, probar mi ejemplo con BINARY-LONG en la v7 y ver si lo acepta. No obstante, aunque el compilador coja esta definición, no garantiza que vaya a funcionar.


No se puede tener 2 instancias NetCOBOL/PowerCOBOL instaladas en el mismo SO. Puedes pasar por otro PC o una VM.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:35.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.