RPG %bif

%bif son funciones incorporadas en Lenguaje IBM RPG IV
información provisional, pegada de otras fuentes, si quieres incluir alguna info, ya sabes.

En los manuales RPG de IBM (así como otros publicados) tienes más info:

RPG es un Lenguaje de Programación de IBM, principalmente usado en su plataforma intermedia, y con una historia de 40 años, en los cuales ha tenido incontables mejoras sucesivas hasta alcanzar hoy dia la version RPG IV (tambien llamado ILE), que incluye un formato de escritura libre denominado RpgFree y contando con un montón de funciones incorporadas denominadas %bif.

En la página RPG hay algunos enlaces interesantes de IBM

Los %bif son funciones incorporadas dentro del lenguaje para hacerlo más poderoso. Por ejemplo:

  • Alfa = %trim(variable); la funcion %trim elimina los blancos a izquierda y derecha, %trimR quita sólo a derecha
  • Alfa = %subst(variable:6:2); %subst toma la parte de la variable de las posic 6a7 (2 posic desde la posic 6), es como la op MID de otros lenguajes
  • Alfa = %edit(Saldo:'J'); %edit edita el campo Saldo con el codigo de edicion J
  • Alfa = %editW(fecha : ' / / '); → edita con palabra de edicion editWord
  • Alfa = %trim(%edit(Saldo:'J'));
    • se pueden combinar operaciones bif: ya que al editar un campo quizá queden espacios en blanco, la %trim anidada los quita
  • Alfa = %char(numero); → %charconvierte numero entero a cadena quitando ceros a izqda

Hay un montón de funciones %bif, creciendo con cada versión del Operativo y del Lenguaje…

  • %mseconds, %seconds, %minutes, %hours, %days, %months y %years
  • %DIFF, para restar un valor de fecha, hora o indicación de la hora de otro
  • Funciones para convertir una serie de caracteres (o fecha o indicación de la hora) en una fecha, hora o indicación de la hora: %DATE, %TIME y %TIMESTAMP.
  • La función %SUBDT, para extraer un subconjunto de una fecha, hora o indicación de la hora
  • Funciones para asignar o reasignar almacenamiento: %ALLOC y %REALLOC (poco uso)
  • Funciones para buscar un elemento en una matriz: %LOOKUP, %LOOKUPGT, %LOOKUPGE, %LOOKUPLT y %LOOKUPLE.
  • Funciones para buscar un elemento en una tabla: %TLOOKUP, %TLOOKUPGT, %TLOOKUPGE, %TLOOKUPLT y %TLOOKUPLE.
  • Funciones para verificar que una serie contenga sólo los caracteres especificados (o buscar la primera o última excepción a esta norma): %CHECK y %CHECKR
  • La función %XLATE, para convertir una serie a partir de una lista de caracteres origen en caracteres destino.
  • La función %OCCUR, para obtener o establecer la aparición actual de una estructura de datos de apariciones múltiples.
  • La función %SHTDN, para determinar si el operador ha solicitado la conclusión.
  • La función %SQRT, para calcular la raíz cuadrada de un número.
  • %SCAN para buscar en cadena, como
    • If %scan('argumento' : cadena) > 0;
    • p = %scan('argumento' : cadena);

Los bucles se pueden indentar para mejorar la lectura, tal como

   for i = 1 to numRegTot ;     
       lin = Array(i) ;        
       if %subst(lin : 12 : 4)='....';
          exSr Calculo;
       endif;
   endFor;                    

La función incorporada %PADDR ahora puede tomar un nombre de prototipo o un nombre de punto de entrada como argumento

Direct conversion of date/time/timestamp to numeric, using %DEC:

%DEC is enhanced (v5r3) to allow the first parameter to be a date, time or timestamp, and the optional second parameter to specify the format of the resulting numeric value.

Example:

D numDdMmYy s 6p 0

D date s d datfmt(*jul)

date = D'2003-08-21';

numDdMmYy = %dec(date : *dmy);

// now numDdMmYy = 210803

Conversion from character to numeric

Built-in functions %DEC, %DECH, %INT, %INTH, %UNS, %UNSH and %FLOAT are enhanced to allow character parameters. For example, %DEC('-12345.67' : 7 : 2) returns the numeric value -12345.67.

New assignment operators

The new assignment operators +=, -=, *=, /=, **= allow a variable to be modified based on its old value in a more concise manner.

Example: totals(current_customer) += count;

This statement adds “count” to the value currently in “totals(current_customer)” without having to code “totals(current_customer)” twice


%KDS(data structure) Used in free-form keyed operation codes CHAIN, SETLL, SETGT, READE and READPE, to indicate that the keys for the operation are in the data structure.

Functions for verifying that a string contains only specified characters (or finding the first or last exception to this rule): %CHECK and %CHECKR

The %XLATE function, for translating a string based on a list of from-characters and to-characters.

The %OCCUR function, for getting or setting the current occurrence in a multiple-occurrence data structure.

The %SHTDN function, for determining if the operator has requested shutdown

%XFOOT built-in function sums all elements of a specified array expression

EVALR operation code evaluates expressions and assigns the result to a fixed-length character or graphic result. The assignment right-adjusts the data within the result.

The new FOR operation code performs an iterative loop and allows free-form expressions for the initial, increment, and limit values.

The new LEAVESR operation code can be used to exit from any point within a subroutine.

The new *NEXT parameter on the OVERLAY(name:*NEXT) keyword indicates that a subfield overlays another subfield at the next available position.

The new *START and *END values for the SETLL operation code position to the beginning or end of the file.

Built-in functions %EOF, %EQUAL, %FOUND, and %OPEN have been added to query the results of input/output operations. Built-in functions %ERROR and %STATUS, and the operation code extender 'E' have been added for error handling.

Built-in functions %CHAR and %REPLACE have been added to make string manipulation easier

New support for externally defined *CMDY, *CDMY, and *LONGJUL date data formats

Built-in functions %CHAR(graphic, date, time or timestamp expression) Returns the value in a character data type.

%EOF{file name} Returns '1' if the most recent file input operation or write to a subfile (for a particular file, if specified) ended in an end-of-file or beginning-of-file condition; otherwise, it returns '0'.

%EQUAL{file name} Returns '1' if the most recent SETLL (for a particular file, if specified) or LOOKUP operation found an exact match; otherwise, it returns '0'.

%ERROR Returns '1' if the most recent operation code with extender 'E' specified resulted in an error; otherwise, it returns '0'.

%FOUND{file name} Returns '1' if the most recent relevant operation (for a particular file, if specified) found a record (CHAIN, DELETE, SETGT, SETLL), an element (LOOKUP), or a match (CHECK, CHECKR and SCAN); otherwise, it returns '0'.

%OPEN(file name) Returns '1' if the specified file is open and '0' if the specified file is closed.

%REPLACE(replacement string: source string {:start position {:source length to replace}}) Returns the string produced by inserting a replacement string into a source string, starting at the start position and replacing the specified number of characters.

%STATUS{file name} If no program or file error occurred since the most recent operation code with extender 'E' specified, it returns 0. If an error occurred, it returns the most recent value set for any program or file status. If a file is specified, the value returned is the most recent status for that file.

Operation code Extender E Allows for error handling using the %ERROR and %STATUS built-in functions on the CALLP operation and all operations that allow error indicators.

New century formats *CMDY (cmm/dd/yy) To be used by the MOVE, MOVEL, and TEST operations.

*CDMY (cdd/mm/yy) To be used by the MOVE, MOVEL, and TEST operations.

New 4-digit year format *LONGJUL (yyyy/ddd) To be used by the MOVE, MOVEL, and TEST operations.

editing (%EDITW, %EDITC, %EDITFLT)

type conversions (%INT, %FLOAT, %DEC, %UNS)

type conversions with half-adjust (%INTH, %DECH, %UNSH)

precision of intermediate results for decimal expressions (%DEC)

length and decimals of variables and expressions (%LEN, %DECPOS)

absolute value (%ABS)

set and test null-capable fields (%NULLIND)

handle null terminated strings (%STR)

 
/kunden/homepages/8/d674751560/htdocs/cpies/doc/data/pages/as400/rpgbif.txt · Última modificación: 12/07/2017 11:41 por admin
[unknown button type]
 
Excepto donde se indique lo contrario, el contenido de este wiki esta bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki