%PARSER (analizador {: options})

%PARSER se utiliza como tercer operando del código de operación DATA-INTO para especificar el programa o procedimiento para realizar el análisis y las opciones soportadas por el analizador. %PARSER no devuelve un valor y no se puede especificar en ningún lugar que no sea para el código de operación DATA-INTO.

El primer operando especifica el programa o procedimiento para realizar el análisis. Puede ser
  • Una expresión de puntero de procedimiento
  • La función incorporada %PADDR
  • Expresión de caracteres que identifica un programa. Debe estar en uno de los siguientes formatos
    • MIPGM
    • MYLIB/MYPGM
    • *LIBL/MYPGM
  • Expresión de caracteres que identifica un procedimiento en un programa de servicio. Debe estar en uno de los siguientes formatos
    • MYSRVPGM (myProcedure)
    • MYLIB/MYSRVPGM (myProcedure)
    • *LIBL/MYSRVPGM (myProcedure)
Nota: Si se especifica un nombre de prototipo, se presupone que es un procedimiento que devuelve un valor de puntero de procedimiento o un valor de carácter. Si el analizador es un procedimiento con prototipo, utilice la función incorporada %PADDR.

El segundo operando especifica las opciones que se pasan directamente al analizador. El analizador determina la naturaleza de las opciones a las que da soporte.

Si el segundo operando es el nombre de una variable que se puede modificar, la dirección de la variable se pasa directamente al analizador.

Si el segundo operando es una expresión de tipo carácter, incluido el nombre de una variable de tipo carácter que no se puede modificar, se pasa al analizador un puntero a una serie terminada en nulo que contiene el contenido de la expresión.

El analizador recibe información que indica si el puntero del puntero es una serie terminada en nulo.

Ejemplos de %PARSER

Se ha especificado un nombre de programa para el primer operando. Se omite el segundo operando. El programa analizador 'MYPARSER' no recibe ninguna opción.

DATA-INTO myfld %DATA(document) %PARSER('MYPARSER');
Se ha especificado un procedimiento en un programa de servicio para el primer operando. Se ha especificado una variable modificable para el segundo operando. El procedimiento 'myProcedure' recibe un puntero a la estructura de datos "parserOptions".

DCL-DS parserOptions LIKEDS(myParserOpts_T);
DATA-INTO myDs %DATA('myData.txt' : 'doc=file')
               %PARSER('MYPARSERS(myProcedure)' : parserOptions);
Se ha especificado un puntero de procedimiento para el primer operando. Se ha especificado una expresión de tipo carácter para el segundo operando. El procedimiento especificado por el puntero de procedimiento recibe un puntero a una serie terminada en nulo con el valor "sep = coma".

DCL-S p POINTER(*PROC);
DCL-S sep CHAR(1) INZ(',');
DATA-INTO myds %DATA('myData.txt' : 'doc=file')
               %PARSER(p : 'sep=' + sep);
Se ha especificado la función incorporada %PADDR para el primer operando. Se especifica una variable de carácter no modificable "constParm" para el segundo operando. El valor de "constParm" es "boolean=indicator". El procedimiento especificado por el prototipo "myProc" recibe un puntero a una cadena terminada en cero con el valor "boolean=indicador". especificado como segundo operando.

DCL-PI *N;
   constParm VARCHAR(20) CONST;
END-PI;
DATA-INTO myds %DATA('myData.txt' : 'doc=file')
               %PARSER(%PADDR(myProc) : constParm);

Para obtener más ejemplos de %PARSER y más información sobre la operación DATA-INTO, consulte DATA-INTO (Analizar un documento en una variable).

Consulte el tema Rational® Open Access: RPG Edition para obtener información sobre cómo escribir un analizador.