miércoles, 31 de octubre de 2012

Funciones incorporadas en Power Builder

                                   
FUNCIONES CADENA

Nombre
Descripción
Asc(String)
Convierte el primer carácter de una cadena en un valor numérico ASCII
Left ( string, n )
Extrae un conjunto de caracteres a partir del lado izquierdo.
LeftTrim(string)
Elimina los espacios en blanco del lado izquierdo de una cadena.
Len(string)
Retorna la cantidad de caracteres de una cadena.
Lower ( string )
Convierte en minúsculas una cadena.
Mid ( string, start {, length } )
Permite extraer un numero de caracteres según la posición y la cantidad indicada.
Pos ( string1, string2 {, start } )
Retorna la posición en donde se encuentra una coincidencia de la cadena2, en la cadena 1.
Replace ( string1, start, n, string2 )
Reemplaza una porción de un cadena con otra.
Reverse ( string )
Ordena de manera inversa una cadena.
Right ( string, n )
Extrae un conjunto de caracteres de una cadena a partir del lado derecho.
RightTrim ( string )
Elimina los espacios en blanco del lado derecho de una cadena.
Trim ( string )
Elimina los espacios en blanco del lado derecho e izquierdo de una cadena.
Upper ( string )
Convierte en mayúsculas una cadena.

 FUNCIONES NUMERICAS

Nombre
Descripción
Abs ( n )
Obtiene el valor absoluto de un número.
Cos ( n )
Retorna el coseno de un valor numérico.
Int ( n )
Determina la parte entera de un valor numérico.
Fact ( n )
Obtiene el factorial de un número.
Log ( n )
Retorna el logaritmo de un número.
Max ( x,  y )
Retorna el valor máximo de 2 números.
Min ( x, y )
Retorna el valor mínimo de 2 números
Mod ( x, y )
Retorna el residuo de una operación de división.
Rand ( n )
Permite generar números aleatorios desde 1 hasta un numero indicado.
Round ( x, n )
Permite realizar el redondeo de un numero, en el cual se indica el numero de decimales.
Sin ( n )
Retorna el seno de un valor numérico.
Sqrt ( n )
Retorna la raiz cuadrada de un numero.

 FUNCIONES FECHA Y HORA

Nombre
Descripción
Day ( date )
Retorna el día de una fecha.
DayName ( date )
Retorna el nombre del día de la semana de una fecha.
DayNumber ( date )
Retorna el día, que representa el día de la semana de una fecha.
DaysAfter ( date1, date2 )
Retorna el numero de días transcurridos entre 2 fechas.
Hour ( time )
Retorna la hora de un dato tipo Hora.
Minute ( time )
Retorna los minutos de un dato tipo Hora.
Month ( date )
Retorna el mes de un dato de tipo fecha.
Now ( )
Retorna la hora del sistema.
Second ( time )
Retorna los segundos de un dato tipo Hora.
SecondsAfter ( time1, time2 )
Retorna la cantidad de segundos entre 2 datos de tipo hora.
Today ( )
Retorna la fecha del sistema.
Year ( date )
Retorna el año de un dato de tipo fecha.

lunes, 29 de octubre de 2012

Estructuras de Control en Power Builder


-->
Los flujos de control permiten que las acciones ha ser realizadas puedan ser bifurcadas a otra dependiendo de alguna expresión condicional. Existen 2 tipos de flujos de control

CONDICIONAL
Se refiere a que el flujo de control es bifurcado desde una sentencia, o conjunto de estas, a otra, o conjunto de estas. Existen 2 clase de Flujos de control condicionales

IF..THEN..ELSE
La sentencia 'IF' permite bifurcar la ejecución del código entre 2 caminos posibles dependiendo de la veracidad o no de una expresión condicional. El tamaño, en líneas de código, de los segmentos, 'verdadero' o 'falso' no tienen un limite.

Ejemplo:
     If monto_cuota=13 Then nombre= 'Ramiro'
            Else     nombre= 'Francisco'
      End If
También es posible anidar varios 'If..Then..Else' consecutivamente.


Ejemplo:
If monto_cuota=13 Then
nombre= 'Ramiro'
ElseIf monto_cuota=15 Then
nombre= 'Roberto'
Else
nombre= 'Francisco'
End If


CHOOSE
Permite bifurcar la ejecución del código entre múltiples caminos posibles; dependiendo de la veracidad o no de una expresión condicional, principalmente una variable. El tamaño, en líneas de código, de los segmentos 1..'n' no tienen un limite.
Ejemplo:
Choose case monto_cuota
Case Is< 13:  nombre='Ramiro'
Case 16 To 48: nombre= 'Roberto'
Else
nombre= 'Francisco'
End Cose

Cada Case puede tener los siguientes valores:
·         Un valor
·         Una lista de valores separados por coma. (ej. 2, 4, 6, 8)
·         Una cláusula TO, desde hasta. (ej. 1 TO 30)
·         Una cláusula IS seguida por un operador relacional y un valor a comparar. (ej. IS>5)
·         Cualquier combinación de lo anterior, implícitamente indica un OR. (ej.1, 3, 5, 7, 9, 27 TO 33, IS >42)

Se refiere a la repetición de una(s) sentencia(s) que son definidas dentro de un bloque clarificado por una sentencia iterativa. Existen 2 clases de Flujos de control Iterativos.

FOR..NEXT..STEP
La sentencia ‘for’ permite repetir una(s) sentencia(s) un número definido anterior al comienzo de la ejecución de estas sentencias.
El tamaño, en líneas de código, del segmento 1, no tienen un limite.
Ejemplo:
for i= 1 to 23
j= i + ( j * 1.2 )
next
La variable ‘i’ se denomina "contador", el valor final de iteraciones no debe ser superior al rango definido para el tipo de dato del contador. Si el valor de ‘i’ es superior al valor final de iteración, las sentencias no se ejecutan.
Ejemplo:
For n = 5 to 25 step 5
a = a+10
Next

En este ejemplo la sentencia se ejecutara cuando n>=5 y n<=25, y el valor inicial de n (5) se incrementa en 5 por cada ejecución de las sentencias del bloque dentro de la sentencia for. El valor de Step puede ser negativo, en cuyo caso el valor inicial de la variable contador deberá ser inferior al valor final de la iteración.
 
DO..UNTIL | WHILE |LOOP
La sentencia ‘Do’ es utilizada para repetir una(s) sentencia(s) un número no muy definido de veces. El número de veces es casi siempre definido por la comparación de una variable o expresión condicional. Dentro de esta sentencia existen variantes, cuya única diferencia es el momento cuando se evalúa la expresión que condiciona la ejecución del bloque.

Ejemplo:
integer A = 1, B = 1 //Emite un pito por los parlantes hasta que la variable
DO UNTIL A > 15 // A sea mayor que 15.
Beep(A)
A = (A + 1) * B
LOOP

integer A = 1, B = 1 //Emite un pito por los parlantes mientras la variable
DO WHILE A <= 15 // A sea menor o igual a 15.
Beep(A)
A = (A + 1) * B
LOOP


Observación
En ambos tipos de iteraciones se puede terminar la ejecución del bloque utilizando la sentencia ‘Exit’.

Ejemplo:
integer A=1, B=1
DO WHILE A < 100
A = A+1
B = B+1
IF B > 3 THEN CONTINUE
MessageBox("Hola", "B es = " + String(B) )
LOOP

Ejemplo:
FOR contador = 1 to 10
IF vector1[Contador] = 0 THEN EXIT
NEXT
En ambos tipos de iteraciones se puede continuar la ejecución del bloque, desde el principio y no ejecutando las demás instrucciones del bloque.


Instrucciones para el control de los ciclos repetitivos

EXIT
Permite abandonar la ejecución de un bucle (For y Do Loop) ejecutando la siguiente instrucción después del bucle, es decir que el control pasa a la sentencia que va a continuación del Loop. Una sentencia Exit se puede utilizar en cualquier lugar de un bloque de sentencias          
       Ejemplo:
            Integer A = 1, C = 0
            Do While A < 20
                        If C > 15 Then  EXIT
                        C++
                        A++
            Loop
            A = 0               
            // La sentencia Exit pasa el control aquí
           
La sentencia Loop se ejecuta mientras el valor de A sea menor que 20. la sentencia IF del bloque de sentencias ejecuta una sentencia EXIT cuando el calor de C se hace mayor que 15. Esto provoca que finalice la sentencia LOOP y se pase el control a la sentencia que va a continuación de ella.

CONTINUE
 Cuando aparece una sentencia CONTINUE en una Do While Loop; el control pasa al Do While; las sentencias existentes entre CONTINUE y Loop no se ejecutan. En una estructura Do While Loop anidada, una sentencia CONTINUE sólo afecta a la estructura Do While Loop en la que se encuentra.
En resumen esta sentencia permite volver a ejecutar el bucle sin necesidad que se ejecuten todas las instrucciones que contiene.
La función MessageBox solo se muestra 2 veces
 
Int A = 1, B = 1
Do While A < 11
            A++
            B++
            If B > 3 Then Continue
            MessageBox(“Valores”, “A = “ + String(A) + “B= ” + String(B))
Loop

RETURN
La sentencia RETURN termina el script o función, devolviendo el control a quien lo llame. Si es un script de evento, RETURN generalmente devuelve el control a Power Builder. Si el script o función regresa un valor, la sentencia RETURN debe incluir el valor.
HALT
La sentencia HALT termina definitivamente la ejecución de una aplicación.
Sintaxis : HALT

GOTO
Cambia el control de una sentencia a otra donde se especifica una etiqueta..

Int A = 1
Do While A < 11
            A++
            If A =6 Then GOTO Mensaje
            MessageBox(“Valores”, “A = “ + String(A))
Loop

Mensaje:
            MessageBox(“Salida”, “A = “ + String(A))

viernes, 26 de octubre de 2012

Tipos de datos en Power Builder


Los tipos de datos que están definidos para PowerBuilder son los siguientes, se denominan “Tipos de Datos Estándar”.

Tipo de Dato
Descripción
Blob
Objeto binario largo. Usado para almacenar una gran cantidad de datos, pero cuyo largo no esta claro.(ej. Imágenes, archivos de texto, documentos)
Boolean
Contiene solo Verdadero o Falso. (TRUE o FALSE)
Char
Almacena un único carácter ASCII.
Date
Date Incluye una fecha, en formato americano (yy[yy],mm, dd) Año (1000- 3000), mes (01- 12) y días. (01- 31)

DateTime
Contiene la Fecha y la Hora en un único tipo de dato, usado solo para lectura o escritura de valores ‘DateTime’ definidos en una Base de Datos. Para convertir un valor ‘DataTime’ en un tipo de dato que pueda ser usado en PowerBuilder (date, time), use:
·         Date(DateTime), para convertir un valor ‘DateTime’ en un valor Date.
·         Time(DateTime), para convertir un valor ‘DateTime’ en un valor Time.
·         DateTime(Date, Time), para convertir un ‘Date’ y un ‘Time’ en un valor DateTime

Dec
Soporta números decimales con sobre 18 dígitos. Ej. 123456,000001
Double
Números con punto flotante, con 15 dígitos de precisión y un rango desde 2.2E308 a 1.7E+308.
Int
Un entero de 16 bits, con rango de -32768 a +32767.
Long
Un entero largo de 32 bits, con rango de -2,147,483,648 a +2,147,483,647.
Real
Un numero con punto flotante, con 6 dígitos de precisión y un rango desde 1.17 E -38 a 3.4 E +38.
Real
Real Cualquier carácter ASCII con un largo variable. (0 a 60,000)
Time
Hora en formato 24 horas, incluye la hora (00-23), minutos (00- 59) segundos (00- 59) y fracción de segundos (sobre 6 dígitos). Con un rango desde 00:00:00 a 23:59:59.999999