Está en la página 1de 5

Utilidades Iseries. Blog: http://iseriesvenezuela.blogspot.

com Autor: Liliana Surez

Este documento ilustra dos utilidades para ser empleadas por desarrolladores en el lenguaje RPGLE, CLP en el Iseries/As/400. 1.- Primera Utilidad. Realizar un Scan de un string de caracteres con la utilidad del Iseries: QCLSCAN
/* PROGRAMA : ELABORADO POR : Liliana Surez */ /* /* OBJETIVO : Scan de un string */ /************************************************************/ PGM /* QCLSCAN VARS */ DCL VAR(&STRING) TYPE(*CHAR) LEN(999) DCL VAR(&PATTERN) TYPE(*CHAR) LEN(999) + VALUE('HOLA') DCL &STRLEN *DEC LEN(3 0) VALUE(999) DCL &STRPOS *DEC LEN(3 0) VALUE(1) DCL &PATLEN *DEC LEN(3 0) VALUE(19) /* longitud del patrn*/ DCL &TRANS *CHAR LEN(1) VALUE('0') DCL &TRIM *CHAR LEN(1) VALUE('0') DCL &WILD *CHAR LEN(1) VALUE('0') DCL &RESULT *DEC LEN(3 0) VALUE(1) /* BUSQUEDA EXITOSA*/ http://iseriesvenezuela.blogspot.com Autor: Liliana Surez.

Utilidades Iseries. Blog: http://iseriesvenezuela.blogspot.com Autor: Liliana Surez /* El PATRN de BSQUEDA HOLA Si EST EN EL STRING */ CHGVAR VAR(&PATTERN) VALUE(HOLA) CALL QCLSCAN PARM(&STRING &STRLEN &STRPOS + &PATTERN &PATLEN &TRANS &TRIM &WILD &RESULT) /* LA VARIABLE RESULT TIENE VALOR > 0*/ /* DEVUELVE LA POSICION DEL STRING DONDE COMIENZA EL MATCH*/ /*---------------------------------------------------------------------------------------*/ /* SEGUNDO EJEMPLO: El Patron de Busqueda ADIOS no est en el String*/ /* BUSQUEDA FALLIDA*/ CHGVAR VAR(&PATTERN) VALUE(ADIOS) CALL QCLSCAN PARM(&STRING &STRLEN &STRPOS + &PATTERN &PATLEN &TRANS &TRIM &WILD &RESULT) /* LA VARIABLE RESULT TIENE VALOR = 0*/

/*---------------------------------------------------------*/ /*-TEXTO INFORMATIVO */ /*---------------------------------------------------------*/ /* CUANDO EL VALOR DE RETORNO ES NEGATIVO*/ /*-1 THE PATTERN IS LONGER THAN THE STRING. */ /*-2 THE PATTERN LENGTH IS LESS THAN 1. */ /*-3 THE FIRST CHARACTER OF THE PATTERN IS A WILDCARD CHARACTER*/ /*-4 THE PATTERN IS BLANK AND THE TRIM TRAILING BLANKS PARAMETER*/ /*VALUE IS 1. */ /*-5 THE STARTING POSITION WITHIN THE STRING IS NOT VALID.*/ ENDPGM

http://iseriesvenezuela.blogspot.com Autor: Liliana Surez.

Utilidades Iseries. Blog: http://iseriesvenezuela.blogspot.com Autor: Liliana Surez

2.-SEGUNDA UTILIDAD. Valida la fecha guardada en una variable numrica de longitud 8. Tiene tres parmetros: el primer parmetro es la fecha numrica de ocho, el segundo Parmetro es el formato de fecha asociado a la fecha del primer parmetro. Puede verse en el programa (por medio del SELECT) los formatos considerados. El tercer parmetro devuelve el error de validacin. Aunque la fecha almacenada sea de seis posiciones, juliana de 5 o 7 posiciones, valida correctamente la fecha que es incorporada en el parmetro de entrada. Si hay error de validacin devuelve una F cuando el formato no corresponde al formato enviado en el segundo parmetro. Cuando devuelve el valor D el problema es de Data recibida en el primer parmetro. |__________________________________________________________________|* *| *| Programa : uvalidate *|Valida Cualquier formato de fecha almacenado en campo numrico 8 posiciones. *|Creado por: Liliana Suarez *| /*-----------------------------------------------------------------------------------*/ /if defined(*crtbndrpg) h dftactgrp(*no) h bnddir('QSYS/QC2LE') h actgrp(*new) /endif h option(*noexpdds: *showskp: *noxref: *noext) hdebug(*yes) hdftname(CONVERDATE) htimfmt(*HMS) haut(*all) hfixnbr(*zoned) htext(*srcmbrtxt) **Variables de trabajo dHay_error S D W@Date D Wfecha D* D Main D P_fecha D Formato D p_error D Main S S pr n D 8 0 EXTPGM('UVALIDATE') 8S 0 5 1

pi

http://iseriesvenezuela.blogspot.com Autor: Liliana Surez.

Utilidades Iseries. Blog: http://iseriesvenezuela.blogspot.com Autor: Liliana Surez D P_fecha D Formato D p_error /Free // // Validar_Fechas; // Hay_error = *Off; p_error = ' '; Wfecha = P_fecha; Monitor; Select; when Formato = '*YMD'; w@Date = %date(WFecha:*YMD); when Formato = '*MDY'; w@Date = %date(Wfecha:*MDY); when Formato = '*DMY'; w@Date = %date(Wfecha:*DMY); when Formato = '*CYMD'; w@Date = %date(Wfecha:*CYMD); when Formato = '*CMDY'; w@Date = %date(Wfecha:*CMDY); when Formato = '*CDMY'; w@Date = %date(Wfecha:*CDMY); when Formato = '*JUL'; w@Date = %date(Wfecha:*JUL); when Formato = '*LONGJUL'; w@Date = %date(Wfecha:*LONGJUL); when Formato = '*USA'; w@Date = %date(Wfecha:*USA); when Formato = '*ISO'; w@Date = %date(Wfecha:*ISO); Other; Hay_error = *ON; P_error = 'F'; Dsply 'Formato desconocido'; EndSl; on-error; Hay_error = *ON; P_error = 'D'; Endmon; *InLr = *ON; /End-Free Saludos Cordiales! Liliana Surez 8S 0 5 1

http://iseriesvenezuela.blogspot.com Autor: Liliana Surez.

Utilidades Iseries. Blog: http://iseriesvenezuela.blogspot.com Autor: Liliana Surez

http://iseriesvenezuela.blogspot.com Autor: Liliana Surez.