Ok, por lo que entiendo recien estas en pañales... no te dare todo ahora, pero si lo necesario para tengas nociones.
Power Builder es un Lengoaje de programacion orientado a objetos, asi que en cualkier objeto puede crearse una o mas funciones, pero a la vez existe un objeto funcion, el cual es global y eso es lo que kieren que crees. para ello una vez creado el workspace, cuando le des click en nuevo y seleccionas la pestaña PB Object encontraras uno que dice function, y es ahi donde debes de crear la funcion.
Este, directo te lleva a una ventana, donde pondras el nombre de la funcion los paramentros de entrada y e salida, y en la parte de abajo el codigo que va dentro de la funcion, OJO que no existe ningun objeto visual solo es el codigo.
Como indicas en tu pregunta, la funcion debe tener 02 parametros, pero directamente no retorna nada, pero ya depende de uno si desea retornar algun valor..., por ejemplo puedo retornar 0 cuando es un valor incorrecto, 1=Numerico, 2=Letras, 3=Alfanumerico, de esta forma controlas mejor tu funcion en cualquier parte... entoncess...
en los campos al momento de crear la funcion debe ir...
RETURN TYPE = INTEGER
FUNCTION NAME = mi_funcion (Aki puede ir el nombre que mas te paresca para la funcion. ejem. uf_validar, siempre es bueno usar los prefijos uf= User Function, si la funcion esta dentro de un objeto of=object function).
ARGUMENT TYPE = STRING y ARGUMENT NAME = as_valor (Este es para el primer argumento, el nombre de la variable es as_valor as=argumento tipo string)
ARGUMENT TYPE = CHARACTER y ARGUMENT NAME = ac_tipo (Para el segundo parametro) 
------ hasta ahi hemos definido el nombre de nuestra funcion, cuantos paramentros tendra y si retornará algun valor. Ahora toca la parte del codigo que debe ejecutar la funcion para identificar que tipo es.
------ solo te dare pistas...
en el codigo iria:
/////////
integer li_ret  //li=Local Integer
choose case ac_tipo
   case 'N'
      if isnumber(as_valor) then 
                   li_ret = 1  //Deciamos que si es 1 es numerico
                 else
                   li_ret = 0 // Aqui le indicas que el tipo datos es incorrecto, imaginemos que puseron letras, pero en el tipo 
                                //te dicen q es nro, osea incongruente
                 end if
   case 'L'
      //Si es letra tienes que verificar si todos son letras que estan entre A a Z
                //Es cuestiond e hacer un recorrido por toda la cadena nada mas, y eliminar los espacios en blanco
               //Si tods la cadena es letra entonces 
                 li_ret = 2
                // Sino 
                li_ret = 0
   case 'A'
      //lo mismo q el anterior pero verificar tambien si es numero
                //Si cumple 
               li_ret = 3
                //Sino 
              li_ret = 0
   case else
           //Enviar mensaje indicando que la funcion no soporta otro tipo que no sea las 3 anteriores
               li_ret = -1
end choose
RETURN li_ret
//////Aki finalizaria la funcion/////////
Por ultimo en la ventana, en cada uno de los campos que te pida...
como todos seran Single Line Edit, por ahora .... cuando le daz el enter.. quiere decir en el evento modified ahi se debe de programar...
evento modified... del campo nombre, donde el campo se llame sle_nombre (Osea el obejto es un SingleLineEdit)
integer li_valret //valor que retornara la funcion que se creo
li_valret = mifuncion(sle_nombre.text,'L') //Aqui le indico que el valor que tenga el campo nombre debe ser solo letras, 
                                                              //por tanto debe retornarme el valor de 2 segun nuestra funcion.
si li_valret=2 entonces
   // paso al siguiente campo
   // quiere decir que debo de enfocar el campo apellidos...
sino
 si li_valret=0 entonces
  //mensaje, datos incorrectos
 si li_valret=-1 entonces
  // la funcion no soporta otros tipos de datos
fin de si
Eso es lo que debe hacer en cada campo, dependiendo del tipo de dato
Espero que te ayude en algo... ps... no es bueno darte todo ok