Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Duda] Datos accesibles desde Internet (https://www.cobolforo.es/showthread.php?t=1021)

fastpho 17 de julio de 2019 18:07

Buenas gente ....
Empece instalando wampserver para trabajar con el php haber como era el tema...
Y comence a leer un poco de php y el ejemplo que habia, resulta que hice una pruebas con un archivo de similares caracteristicas al del ejemplo "granos.dat" pero creado con pwcobol version 5 ,
lo que hace la rutina es buscar por indice o variable llamada $clave al principio todo bien encontraba el registro , resulta que a medida que hacia diferentes busquedas de acuerdo al indice del registro aumentaba su valor me daba como que el registro no existia.....
Jorgeanna me podrias mirar el codigo que puse haber en donde esta el problema

Código PHP:
  1. <HTML>
  2. <HEAD>
  3. <TITLE> Pruebas en PHP </TITLE>
  4. <LINK REL="stylesheet" TYPE="text/css" HREF="estilo.css">
  5. </HEAD>
  6.  
  7. <BODY>
  8.  
  9. <H1>lectura de archivo cobol</H1>
  10. <form method='post' >
  11.    <p><input name='numero' type='text' /></p>
  12.    <p><input type='submit' value='enviar'></p>
  13. </form>
  14. <?php
  15.     require("RmFile.php");
  16.     require("wenteje.php");
  17.    
  18.   // $datos= "Datos";
  19.   // $clave="0001";
  20.    
  21.    echo ("esta es la clave ") . $_POST['numero'];
  22.    $clave = $_POST['numero'];
  23.    
  24.    echo ("--------");
  25.    
  26.    
  27.    //------------------------WEMAES.DAT--------------------    
  28.         $iFile = new RmFile("RUBROS.DNX",wenteje::lectura(),".");
  29.     // muestra un determinado registro
  30.          if ($iFile->find($clave,0)){
  31.             if ($reg = $iFile->next()){
  32.         //  var_dump($reg);
  33.                 print_r($reg);
  34.                 echo "-------------lo encontro...................";
  35. //              if ($reg["wmid"]->Value == "10"){
  36.             }else{
  37.                 echo "no en el next";
  38.             }
  39.         }else{
  40.         echo "no en el find";
  41.         }
  42.         echo "---------------------------------- MUESTRA TODO EL REGISTRO --------------------";
  43.         // muestra todo el registro completo
  44.     if ($iFile->find($clave,0)){
  45.         while ($reg = $iFile->next())
  46.            
  47.         print_r($reg);
  48.         echo "----------------------------------";
  49.          
  50.         //endwhile;
  51.     }
  52.    
  53.  
  54. ?>
  55.  
  56. </BODY>
  57. </HTML>

Jorgeanna 18 de julio de 2019 04:46

Libreria PHP - JOSE KOBER
 
1 Archivos Adjunto(s)
Para mejor respuesta a tu pregunta, subi un archivo con un ejemplo mas didactico de como se puede utilizar la rutina en php para leer archivos cobol desde la web sin pasar los datos a texto y luego leerlo en mysql. LO UNICO QUE HAY QUE HACER ES LEER Y MOSTRAR LOS RESULTADOS.

Quiero dejar aclarado que no soy el autor de la libreria, me la suministro gentilmente el Sr. JOSE KOBER y ademas me ayudo a ponerla en practica.

Oportunamente vi que la solicitaba Fito y se la envie con la observacion de que si la compartiera hiciera mencion a su creador, pero bueno la publico y ni siquiera dijo recordar quien se la habia enviado, por eso pido por favor demos el credito a quien desinteresadamente suministro esta poderosa libreria.

En el comprimido van una serie de pantallas que estan corriendo en la web, con resultados extraidos directamente desde los archivos enviados por ftp, que se actualiza automaticamente al salir de la aplicacion.

Un demo que hice oportunamente para una presentacion de reconocimiento de ultrasonido podran observar en el siguiente Menu Demo USE

Por ultimo quiero decirles que el tiempo que le dediquen a su implementacion seguro estara ampliamente compensado.

fastpho 18 de julio de 2019 16:30

Muchas Gracias Jorgeanna y tambien a el Sr JOSE KOBER , por su tiempo
seguire haciendo pruebas y subire los resultados para que otras personas puedan utilizar esta libreria para implementar en sus sistemas

Joseg 18 de julio de 2019 17:52

Cita:

Citación del post de Jorgeanna (Mensaje 5034)
Para mejor respuesta a tu pregunta, subi un archivo con un ejemplo mas didactico de como se puede utilizar la rutina en php para leer archivos cobol desde la web sin pasar los datos a texto y luego leerlo en mysql. LO UNICO QUE HAY QUE HACER ES LEER Y MOSTRAR LOS RESULTADOS.

Quiero dejar aclarado que no soy el autor de la libreria, me la suministro gentilmente el Sr. JOSE KOBER y ademas me ayudo a ponerla en practica.

Oportunamente vi que la solicitaba Fito y se la envie con la observacion de que si la compartiera hiciera mencion a su creador, pero bueno la publico y ni siquiera dijo recordar quien se la habia enviado, por eso pido por favor demos el credito a quien desinteresadamente suministro esta poderosa libreria.

En el comprimido van una serie de pantallas que estan corriendo en la web, con resultados extraidos directamente desde los archivos enviados por ftp, que se actualiza automaticamente al salir de la aplicacion.

Un demo que hice oportunamente para una presentacion de reconocimiento de ultrasonido podran observar en el siguiente Menu Demo USE

Por ultimo quiero decirles que el tiempo que le dediquen a su implementacion seguro estara ampliamente compensado.



Muito interessante.
Esta libraria consegue ler qualquer arquivo indexado? Não necessita de runtime do Fujitsu Cobol?
Consegue interpretar campos COMP ?

Jorgeanna 19 de julio de 2019 01:14

No se necesita el runtime del powerCOBOL, y segun tengo entendido es compatible con campos comp, habria que ver si la rutina esta actualizada. Aclaro que no los he utilizado.

los tipos a declarar serian I,S,C,D, no es necesario delarar la totalidad de los campos sino los que se van a utilizar su ubicacion y largo.

Pueden probar con cualquier archivo que tengan, con solo hacer muy pocos cambios al ejemplo enviado pueden ver los resultados inmediatamente

Tengan en cuenta que si lo suben en un servidor web, mantengan los nombres de archivo en minusculas, ya que lo que anda en local cuando se sube a la web no anda y este fue uno de mis primeros dolores de cabeza.

Para quien tenga alguna duda, se puede hacer de todo menos grabar, el resto funciona de maravilla y por eso digo que depende de las ganas de aprender a utilizar esta herramienta, que hace tiempo esta en el foro y nadie le metio mano.

Saludos y suerte.

fastpho 30 de agosto de 2019 16:50

1 Archivos Adjunto(s)
Ejemplo de la rutina php con archivos indexados en pwc 5
La rutina muestra los archivos rapidamente , tiene problema con campos con signo
Y he tenido problemas para poder leer un registro en particular esta detallado en el index.php
en el adjunto van dos archivos de cobol y un print-screen del listado de rubros en pwc
Saludos

Jorgeanna 2 de septiembre de 2019 01:54

ver declaracion de los campos
 
Cita:

Citación del post de fastpho (Mensaje 5115)
Ejemplo de la rutina php con archivos indexados en pwc 5
La rutina muestra los archivos rapidamente , tiene problema con campos con signo
Y he tenido problemas para poder leer un registro en particular esta detallado en el index.php
en el adjunto van dos archivos de cobol y un print-screen del listado de rubros en pwc
Saludos

1. La rutina no tiene problemas. El problema consiste en que declaras un campo numerico como string. Cambia 'S' por 'I' y te va andar, luego formatearas el resultado de salida, tambien podes probar con campos tipo 'E' y 'D' -> 2 decimal.

Los inconvenientes fueron sorteados solamente con cambiar el tipo de dato de la variable y paso andar todo como estaba previsto.

Por mi experiencia, los problemas que se presentas es por desconocimiento del usuario y no de la rutina.

Podes ver el listado enviado en el zip en la siguiente direccion web que es donde hice la prueba ya que hoy domingo no accedo a mi oficina:

http://veterinariatejedo.com.ar/prueba/index.php

se le agrego un css para ver mejor la tabla.
Suerte!

fastpho 2 de septiembre de 2019 16:16

Jorgeanna, Primero antes que todo gracias por contestar un dia domingo ,
Realice los cambios de que me marcaste (cambie la variable string "S" POR "I" integer) y ahora me muestra el listado y el error que tenia para buscar algun registro en particular no lo estaba poniendo entre comillas a la variable de busqueda y ahora me encuentra el registro.
Con respecto al comentario que pruebe de poner campos tipo 'E' y 'D' -> 2 decimal lo hice pero me da error y estuve mirando la funcion seteo campos y no tiene en el case el tipo "E"
y si le coloco "D" me un error Notice: Undefined property: stdClass::$decimal in C:\wamp64\www\php\RmFile.php on line 672

Código PHP:
  1. class fd_rubros{
  2.     public static function get(){
  3.             $fd_rubros["rubcodigo"]    = (Object) array ("desde" => 1 , "cant" => 4 , "tipo"=>"I");
  4.             $fd_rubros["rubnombre"]    = (Object) array ("desde" => 5 , "cant" => 30    , "tipo"=>"S");
  5.             $fd_rubros["rubmargenmin"]    = (Object) array ("desde" => 35 , "cant" => 5 , "tipo"=>"I");
  6.             $fd_rubros["rubmargenmay"]    = (Object) array ("desde" => 40 , "cant" => 5 , "tipo"=>"I");
  7.             $fd_rubros["rubacumulado"]    = (Object) array ("desde" => 45 , "cant" => 11 , "tipo"=>"D" , "decimal"=>2);        
  8.            
  9.            
  10.             return $fd_rubros;
  11.         }
  12.     }
Esta es la linea 672 return (float) substr($a,0,strlen($a)- $v->decimal).",".substr($a ,($v->decimal * - 1));

Funcio Seteo Campos

Código PHP:
  1. protected function SeteoCampos($mBuff,$v){
  2.         switch ($v->tipo) {
  3.             case "I":
  4.                 return (integer) $this->Substr($mBuff,$v->desde-1,$v->cant);
  5.                 break;
  6.             case "S":
  7.                 return  $this->Substr($mBuff,$v->desde-1,$v->cant);
  8.                 break;
  9.             case "D":
  10.                 $a =$this->Substr($mBuff,$v->desde-1,$v->cant);
  11.                 return (float) substr($a,0,strlen($a)- $v->decimal).",".substr($a ,($v->decimal * - 1));
  12. //              return NULL;
  13.                 break;
  14.         }
  15.         return NULL;   
  16.     }


La franja horaria es GMT +2. Ahora son las 03:25.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.