RPG. Llamada con parametro numérico desde línea de mandatos

1 Flares Twitter 1 Facebook 0 LinkedIn 0 Google+ 0 1 Flares ×

Tanto en RPG como en ILERPG, cuando tenemos un parametro de entrada definido como campo numérico, no podemos llamarlo directamente poniendo un valor constante decimal sin encontrarnos el fastidioso mensaje de error de datos decimales.

Por ejemplo, en un programa tenemos definidos los siguientes parámetros de entrada

Parametros_de_entrada_ILERPG

El segundo parámetro NUH es un campo que definimos como numérico de 7 dígitos sin decimales.

Si queremos hacer una llamada directa al programa pasándole unos valores constantes, no podemos indicar un valor decimal en la segunda posición tal como haríamos en el ejemplo de la siguiente imagen

Llamada_Programa_RPG_1

Si hacemos esto, la respuesta que obtendremos será el fastidioso error de datos decimales

Error_Datos_Decimales

Para evitar esto hay una solución bien sencilla. Se trata de poner delante y detrás del valor que le estamos pasando el programa las constantes x’ y f’. De esta manera le indicamos al sistema que lo que está entre estas dos series es un valor numérico constante y se ejecutará correctamente.

En el caso anterior, si ponemos la llamada como muestra la imagen, el programa se ejecutará sin ningún tipo de error…. o al menos no por el paso de parámetros numéricos.

Llamada_Programa_RPG_2

JoBenCa

http://jobenca.es

Administrador y desarrollador de sistemas IBM System i y curioso de todo tipo de tecnología.

View more posts from this author
7 thoughts on “RPG. Llamada con parametro numérico desde línea de mandatos
  1. Antonio Balboa

    Muy buen consejo. Solo puntualizar que hay que poner el parámetro con los ceros a la izquierda que pudiera tener y que si el parámetro tuviese una longitud par, hay que añadirle un cero más a la izquierda para que funcione (es el bit del signo), de tal modo:

    Si el campo es 7S0 –> x’00XXXXXf’
    si el campo es de 8S0 –> x’0XXXXXXXXf’

    Espero haber ayudado.

     
    Reply
    1. Concepción Bellorin

      Con el respeto de lo comentado de las instrucciones anteriores. Esa permite solo pasar los parametros, pero lo pasa mal y solo te permite ajustarlo una vez que está adentro en el debug. por lo que realmente no funciona. Lo que si funciona es sencillamente la siguiente, sin complicaciones, si el campo parm es
      7s 0. Solo debes decirle por ejemplo un valor de 7 digitos en linea de parámetros : > 0030304F y listo, sin comillas ni apostrofes, eso si funciona y el parametro numerico que lo recibe, lo recibe tal cual se lo escribiste. Créalo… C Bellorin from Venezuela

       
      Reply
      1. Martin J.M. Rodea Serrano

        Tks. a lot I can ran my program:
        CALL PGM(WH9999) PARM(‘FX’ ‘FI’ ‘DIU927606’ ‘R1D4’ ‘0’ ‘0’ ‘0685926’ ‘001’
        ‘0000000010f’ ‘AGO_14’ ‘ ‘ ‘00000’)

        Regards

         
        Reply
  2. Jaime A. Garcia Tenorio

    Ejecute el programa con tres parametro numéricos y uno tipo caracter.
    Como los dos primeros son pares les agregue un cero al inicio y si funcionó como lo indican al inicio.

    *ENTRY PLIST
    PARM wrkser 6 0
    PARM wrklin 4 0
    PARM wrksec 1 0
    PARM FLAG 1

    CALL PGM(SVG4593) PARM(x’0000400f’ x’00006f’ x’0f’ ‘ ‘)

     
    Reply

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

1 Flares Twitter 1 Facebook 0 LinkedIn 0 Google+ 0 1 Flares ×