Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La herramienta SQR tiene su propio lenguaje y estructura; Cuando se usa con SQL,
puede producir informes y archivos. Aprenderá los procedimientos, comandos y
funciones de SQR que le permitirán producir archivos e informes informativos.
PeopleSoft recomienda que SQR se use solo para informes porque las ediciones
de la aplicación no se aplican cuando los datos se modifican utilizando los
comandos SQL.
Fundamentos de SQR
Editores
Usar el Bloc de notas es el método más fácil, pero no hay funciones de edición que
ayuden a estructurar o formatear. Para ejecutar un SQR, debe usar un archivo bat
o la aplicación, como se muestra aquí.
Tratamiento
Se realizan dos pasadas a través del SQR cuando se está ejecutando. El pase de
compilación hace lo siguiente:
Hay una estructura básica para todos los programas SQR. Consta de las siguientes
cinco secciones:
Programa o Informe
Configuración
partida
pie
procedimientos
Programa o Informe
Esta sección controla el flujo del programa SQR, llamando a los procedimientos,
utilizando técnicas de programación modular.
Begin-Program
(Commands)
End-Program
Dentro de esta sección, todos los programas SQR deben incluir el setenv.SQC
entregado para identificar el entorno específico de la plataforma. Esto le dice al SQR
en qué entorno necesita ejecutarse. Más SQC que pueden incluirse se tratarán más
adelante en este capítulo.
#include 'setenv.sqc'
Preparar
Esta sección describirá las características del informe (es decir, tamaño de página,
columnas, fuentes de formularios, gráficos). Declare comandos residen en esta
sección.
Begin-Setup
(Commands)
End-Setup
Título
Begin-Heading #
(Commands)
End-Heading
Pie
Esta sección contendrá comandos para imprimir el pie de página en cada página
del informe. PeopleSoft entrega pies de página estándar (archivos SQC) que se
pueden agregar usando #include.
Begin-Footing #
(Commands)
End-Footing
Procedimientos
Begin-Procedure procedure_name
(Paragraphs)
(Commands)
End-Procedure procedure_name
Variables y Comandos
Los nombres de las variables pueden tener cualquier longitud y no distinguen entre
mayúsculas y minúsculas. Las siguientes son variables de tiempo de ejecución
válidas. Los campos de texto y fecha comienzan con "$". Los números comienzan
con "#". Los registros y campos de la base de datos comienzan con "&". Las
variables de tiempo de ejecución no tienen que ser declaradas explícitamente. Las
variables de texto y fecha se inicializan con nulo y cero para las variables numéricas;
de forma predeterminada, todas las variables numéricas se crean como un tipo de
datos de flotador. SQR entrega muchas variables reservadas, que se mantienen
dentro de SQR.
$Name
$CurrDate
Ejemplos de números
#Amount
#Age
&JobCode
&Emplid
Tipos de datos
SQR soporta muchos tipos de datos para variables. Estos pueden definirse
explícitamente dentro del comando Declare-Variable. Si las variables no se definen
explícitamente, utilizarán el valor predeterminado para ese tipo de datos.
Float Variable_Name
Float #AnnSal
3. Entero Este es un valor numérico sin valores después del punto decimal.
Integer Variable_Name
Integer #Year
Date Variable_Name
Date $Curr_Date
5. Texto / Char Esto identifica que los valores son variables de cadena.
Text Variable_Name
Text $Empl_Name
6. Lista Las variables de lista contienen una lista de otras variables. Asigne la
lista a un nombre de variable que comience con ‘%’.
LIST (number_variable1|string_variable1,
number_variable2|string_variable2,...)
Let %ListAddress = List($address1, $address2,
$city,$state,$zip);
Variables Reservadas
Las variables reservadas son variables que SQR ha predefinido. Puede usar estas
variables en su programa, en lugar de tener que crear una función o código para
recuperar los valores. SQR tiene variables de sistema que pueden usarse con
cualquier base de datos y también hay variables creadas que solo funcionan con
PeopleSoft.
Variables de PeopleSoft
La siguiente es una lista de variables que se crearon para trabajar con las
aplicaciones de PeopleSoft. Obtienen valores que son específicos de la
funcionalidad de PeopleSoft.
$prcs_oprid Esto devolverá el Id. De operador de la persona que ejecuta el
SQR.
$prcs_run_cntl_id Esto devolverá el Id. De Control de Ejecución que se está
utilizando para ejecutar el SQR. Esto es útil si los parámetros se pasan a
través de un registro de control de ejecución.
$AsofToday Esto devolverá la fecha del sistema en el formato nativo.
$Asofnow Esto devolverá la hora del sistema en el formato nativo.
$SysDateTime Esto devolverá la fecha y hora del sistema en el formato
nativo.
ReportDate Esto devolverá la Fecha del informe, en el formato de fecha
utilizado en el informe.
ReportTime Esto devolverá la Hora del informe, en el formato de hora
utilizado en el informe.
SQL_Statement Esto generará un texto cuando haya un error de SQL.
Las variables del sistema se pueden utilizar con cualquier aplicación. Como los SQR
son independientes del sistema, los programas que se producen pueden ejecutarse
en cualquier base de datos a la que tenga acceso. Esta lista es una muestra de las
variables del sistema provistas con el lenguaje SQR.
Declarar-variable
Esta variable se utiliza para definir explícitamente las variables. Si está dentro de la
sección de configuración, estas variables serán globales. Cuando se usa en un
procedimiento local, solo se conocerá ese procedimiento.
Variables de sustitución
Example
#Define C1 5
#Define C2 20
…
Print Name (+1, {C1})
Print Phone (0, {C2})
Mover y dejar comandos
Hay dos comandos que se pueden usar para asignar valores a las variables. El
primero es el comando MOVE. Esto copiará los datos de una ubicación de
almacenamiento a otra. Los datos de origen pueden ser un literal o una variable. La
variable de destino debe ser un campo definido por el usuario; Se puede usar una
máscara de edición para formatear los datos.
Los siguientes comandos SQR utilizados en las conjugaciones con comandos SQL
permitirán escribir un programa que pueda modificar, manipular y formatear los
requisitos de datos.
Comentarios
DO procedure_name [(parm_list)]
Do Get-Name
Comando IF
Este comando se usa para pruebas condicionales de variables. Todos los comandos
IF terminan con un END-IF. Los comandos ELSE se ejecutan si la condición es
falsa. SQR utiliza los operadores lógicos de =, <, <=,> =,>, <> y los operadores
booleanos "and", "or", y "not".
If condition
{When condition is true}
[Else
{When condition is false}]
End-If
If #total > 50,000
Let $overflag = 'Y'
Else
Let $overflag = 'N'
End-if
Comando de evaluación
WHILE condition
{Statements when condition is true}
END-WHILE
While &emplid = $prevemplid
Do Get-Salary-Data
Do Get-Tax-Data
End-While
Comando BREAK
BREAK
Evaluate &Status
When 'A'
Let #activecount = #activecount + 1
Break
When 'L'
Let #leavecount = #leavecount + 1
Break
When-Other
Let #termcount = #termcount + 1
End-Evaluate
Comando EXIT-SELECT
Estos comandos son similares a los comandos BREAK, pero se usan para salir de
una instrucción SELECT de SQL.
EXIT-SELECT
Let #count = 0
Begin-select
Select
Emplid
Name
If #count =100
Exit-select
Else
Let #count = #count + 1
End-if
From ps_personal_data
End-Select
Comando GOTO
GOTO {Label}
Begin-Procedure GetHighSalary
If #total < 50,000
GoTo GetHighSalaryExit
End-if
GetHighSalaryExit:
End-Procedure GetHighSalary
Comando de parada
STOP [Quiet]
If #activecounts < 1
Show 'No active employees to process'
Stop
End-if
Hay dos funciones principales que separan una parte de una cadena. SUBSTR
requiere un punto de partida y la cantidad de caracteres que se están extrayendo.
UNSTRING {String|Variable}
BY {Delimiter}
INTO {Results_String1 … Results_StringN}
Unstring $FullName by ',' Into $FirstName $LastName
Función de longitud
Funciones de edición
Para formatear una cadena, use la función EDITAR. Esto se usa normalmente en la
función IMPRIMIR, pero a veces será necesario formatear la cadena para la salida.
Para agregar caracteres a una cadena, use las funciones RPAD y LPAD. Esto
permite que todas las cadenas tengan la misma longitud.
Para asegurarse de que sus variables de cadena sean todas del mismo caso, use
los comandos en mayúsculas o en minúsculas.
{UPPERCASE|LOWERCASE} String
Uppercase $FullName
Lowercase $JobDescr
Función TO_CHAR
Para cambiar una variable numérica de un número a una cadena, use la función
TO_CHAR.
Función TO_NUMBER
Aritmética básica
Hay dos formas de hacer aritmética básica. SQR utiliza los operadores estándar con
el comando LET ("+", "-", "*", "/").
Función ROUND
Función TRUNC
La función TRUNC elimina todos los dígitos más allá del valor de precisión.
Para verificar si hay una variable vacía, use la función ISNULL. Esta función se
puede utilizar en cadenas o fechas. Devolverá un valor Booleon, 1 para verdadero
y 0 para falso. Esto es bueno para usar al verificar entradas válidas. Una cadena se
considera vacía si la longitud es cero. Una fecha se considera vacía si contiene
valores nulos.
ISNULL({String|Date})
If ISNULL($Input_date)
Show 'No Date Entered'
Stop
End-if
Para verificar el espacio en blanco use la función ISBLANK. Los espacios en blanco
pueden ser nulos, tabulación, control de carro, avance de línea y caracteres de
avance de página.
ISBLANK({String|Date})
If ISBLANK($Input_Name)
Show 'No Name Entered'
Stop
End-if
Función STRTODATE
Para convertir una cadena en una fecha, use la función STRTODATE. Esta función
devolverá la representación de fecha de la cadena en función de la máscara de
edición. Si no se especifica una máscara de fecha, entonces el valor predeterminado
usará SQR_DB_DATE_FORMAT entregado en el archivo PSSQR.INI.
Función DATETOSTR
Para convertir una fecha en una cadena, use la función DATETOSTR. Esto utiliza
los mismos valores predeterminados de fecha.
Función DATENOW
Para obtener la fecha de hoy, use la función DATENOW. Devolverá la fecha del
sistema operativo.
Función DATEADD
Para agregar a una fecha, use la función DATEADD. Esta función permite que las
siguientes unidades de fecha (año, trimestre, mes, semana, día, hora, minuto o
segundo) se agreguen o resten de una fecha determinada.
Para encontrar la diferencia entre dos fechas dadas, use la función DATEDIFF. Esta
función devolverá el valor en las siguientes unidades de fecha (año, trimestre, mes,
semana, día, hora, minuto o segundo).
SQR Arrays
Para guardar varias filas del mismo tipo de datos, es mejor trabajar con matrices
SQR. Las matrices son unidades de almacenamiento temporal de datos que se
utilizarán dentro del programa SQR. Los siguientes comandos se utilizan para
trabajar con arrays: CREATE-ARRAY, CLEARARRAY, GET, PUT, ARRAY-ADD,
ARRAY-SUBTRACT, ARRAY-MULTIPLY y ARRAY-DIVIDE. El primer paso es
crear una matriz vacía con los campos requeridos.
Create-Array Name={ArrayName}
Size= {number}
Field = {name:type[:occurs][=initial_value]}
Clear-Array Name={ArrayName}
Este ejemplo creará una matriz, cargará datos y luego borrará la matriz.
Create-Array Name=Employees_by_Dept
Size=12
Field=Month:Char
Field=DeptCnt:3
Put 'Jan' 4 6 10 Into Employees_by_Dept(0)
Month DeptCnt(0) DeptCnt(1) DeptCnt(2)
Put 'Feb' 7 2 4 Into Employees_by_Dept(0)
Month DeptCnt(0) DeptCnt(1) DeptCnt(2)
…
Put 'Dec' 5 4 5 Into Employees_by_Dept(0)
Month DeptCnt(0) DeptCnt(1) DeptCnt(2)
Clear-Array Employees_by_Dept
Impresión
Opciones de formato
Los programas SQR pueden imprimir datos desde las sentencias SELECT. Esto se
hace usando la función ON-BREAK. La función ON-BREAK tiene las siguientes
opciones que se utilizan para determinar cómo imprimir el campo.
Begin-Select
Company (,1,4) On-Break Print=Change/Top-Page
Emplid (,15,10)
Name (, 35,40)
From Ps_Employees
Order by Company, Name
EDITAR MÁSCARA
Enmascaramiento de texto
Gráficos
SQR admite diferentes objetos gráficos que permiten el uso de cuadros, gráficos,
etiquetas e imágenes. Estos tipos de objetos mejoran los informes y formularios.
Tenga en cuenta que no todas las impresoras admitirán estas funciones. El control
de la posición de un gráfico en una página puede ser complicado, ya que el SQR
comenzará en la esquina superior izquierda después de haber impreso el gráfico.
SQR entrega diferentes comandos para ayudar a crear estos objetos gráficos.
DECLARAR CARTA
Este comando definirá todas las características básicas del gráfico. Los tipos de
gráficos disponibles son gráficos de líneas, gráficos de barras, histogramas, gráficos
de área, diagramas de dispersión XY y gráficos de alta-baja-baja.
Begin-Setup
Declare-Chart {Chart Name}
Title={'Chart Title'}
Type = {Line|Pie|Bar|Stacked-Bar|100%-Bar|Overlapped-Bar|
floating|Bar|Histogram|Area|Stacked|100%-Area|XY-Scatter-Plot| High-LowClose}
Legend = {YES|NO}
Legend-Placement = {Center-Right|Center-left|Upper-Right|Upper-Left|
UpperCenter| Lower-Right | Lower-Left | Lower-Center}
X-Axis-Label= {'Label Name'}
Y-Axix-Label = {'Label Name'}
End-Declare
End-Setup
TABLA DE IMPRESIÓN
Declare-Image ImageName
[Type = {EPS- FILE |HPGL- FILE |GIF- FILE |JPEG- FILE |BMP- FILE }]
[Image-Size = (width, height)]
[Source = File_name]
End-Declare
Declare-Image Company_Logo
Type = JPEG-FILE
Image-Size = (10, 20)
Source = 'My_Company_Logo.JPG'
End-Declare
IMPRIMIR IMAGEN
El lenguaje de consulta estructurado (SQL) se utiliza dentro del programa SQR para
extraer datos de la base de datos. Para usar estos comandos, uno necesita conocer
sus tablas dentro de la base de datos. Todos los ejemplos en esta sección harán
referencia a la base de datos de HRMS de PeopleSoft. Todos los comandos SQL,
incluidas las columnas, deben comenzar con justificación a la izquierda. Cualquier
comando SQR incluido dentro del comando SQL debe estar sangrado; de lo
contrario, se producirá un error. Los comandos principales son BEGIN-SELECT y
BEGIN-SQL.
COMENZAR-SELECCIONAR (BEGIN-SELECT)
Este comando se utiliza para extraer datos de la base de datos. Aquí es donde se
identifican las columnas para su uso dentro del programa SQR. Cada columna, a
menos que se especifique, comenzará con una "&" y luego el nombre de la columna.
Cada columna está alineada a la izquierda sin una coma.
El siguiente ejemplo es leer dos tablas, obtener tres variables de estas tablas y usar
el comando SQR DO para llamar a otro párrafo. Luego imprimirá las variables
recuperadas.
Begin-Procedure Get-Empl-Job
Begin-Select
A.EMPLID
A.NAME &NAME
B.JOBCODE &JOBCDE
Do Get-Job-Desc
FROM PS_PERSONAL_DATA A,
PS_JOB B
WHERE ……
END-SELECT
Print &A.Emplid (+1,1)
Print &Name (+0, 10)
Print &Desc (+0, 40)
End-procedure Get-Empl-Job
COMENZAR-SQL
Este comando se utiliza para todos los demás comandos SQL (INSERTAR,
ACTUALIZAR, BORRAR, etc.). Estas declaraciones se utilizan para manipular los
datos en la base de datos. Debe tener el acceso adecuado a la base de datos para
usar estas declaraciones SQL.
Begin-Procedure Update-location
Let $location = 'BLDG1'
Begin-SQL
UPDATE PS_JOB
SET WORK-LOCATION = $location
WHERE WORK_LOCATION = 'BuildingA'
End-SQL
End-procedure Update-location
Esta aplicación de PeopleSoft utiliza filas con fecha efectiva en todo el historial de
mantenimiento del sistema. Esto permite el procesamiento basado en ciertas
fechas. Las filas con fecha futura se pueden ingresar por adelantado y no afectan la
forma en que se procesan los datos en la fecha actual.
Begin-Select
A.EMPLID
A.NAME &NAME
B.JOBCODE &JOBCDE
Do Get-Job-Desc
FROM PS_PERSONAL_DATA A,
PS_JOB B
WHERE A.EMPLID = B.EMPLID
AND B.EFFDT = (SELECT MAX(EFFDT) FROM PS_JOB B1
WHERE B.EMPLID = B1.EMPLID
AND B.EMPL_RCD = B1.EMPL_RCD
AND B1.EFFDT <= $DATEIN)
AND B.EFFSEQ = (SELECT MAX(EFFSEQ) FROM PS_JOB B2
WHERE B.EMPLID = B2.EMPLID
AND B.EMPL_RC = B2.EMPL_RCD
AND B.EFFDT = B2.EFFDT)
END-SELECT
Begin-Select
Emplid
Name
From PS_EMPLOYEES
Where [$Where]
End-Select
Ejecutando un SQR
Para ejecutar un SQR desde Windows, necesita tener permisos para todas las
tablas que necesita su programa en la base de datos. Si está utilizando una
herramienta SQR, como el corredor SQR, siga su proceso de configuración para
ejecutar SQR. Puede usar ejecutables entregados, que normalmente se almacenan
en su servidor. La siguiente ilustración muestra todos los campos disponibles que
deben completarse en función de su configuración.
Los SQR también se pueden ejecutar creando un archivo bat, que se utilizará en
una línea de comandos o mediante un script. Para obtener una explicación más
detallada de las opciones que utilizan el archivo bat, vaya a
http://www.ontko.com/sqr/sqrcard6.html#SQR_COMMAND_LINE.
Ejecutando SQR a través del Programador de Procesos
A veces será necesario iniciar un SQR dentro de PeopleCode. Esto permitirá que el
cliente ejecute un trabajo o lo activará si se cumplen ciertos criterios. Esto se puede
hacer utilizando las funciones de PeopleSoft entregadas: CreateProcessRequest ()
y Schedule (). CreateProcessRequest (): Process_Type y Process_Name necesitan
dos parámetros necesarios. Para Process_Type use "Informe SQR" para un solo
SQR o "PSJob" para múltiples SQR que se hayan programado como un trabajo.
Nombre_proceso es el nombre de su SQR o trabajo, que se ha configurado con la
Definición de proceso. Lo siguiente proporcionará un ejemplo de cómo se debe
configurar PeopleCode para ejecutar un solo programa SQR.
Los programas SQR son muy útiles para leer y escribir archivos externos. Es una
buena herramienta para crear interfaces con sistemas externos. SQR incluye siete
comandos para ayudar a procesar archivos externos: CERRAR, BORRAR, EXISTA,
ABRIR, LEER, RENOMBRAR y ESCRIBIR.
CERRAR
Este comando es opcional a menos que se abran más de 256 archivos, pero es una
buena práctica de codificación cerrar los archivos siempre antes de finalizar el
programa.
BORRAR
Este comando eliminará el archivo de su ubicación. Esta es una buena idea cuando
quiere asegurarse de que un archivo de entrada no se procese dos veces. Si la
eliminación se realiza correctamente, el estado del archivo será 0.
Delete(filename)
#status = delete($bonus_in)
EXISTE
Este comando comprobará que el archivo exista antes de continuar con el proceso.
Una devolución de 0 le dice que el archivo existe.
Exists(filename)
#status = exists($bonus_in)
ABIERTO
Antes de poder leer o escribir un archivo, debe abrirlo. Dentro de este comando, se
establece un nombre de archivo y se adjunta a un número de archivo, tipo de archivo
(lectura o escritura), longitud del archivo y estado del archivo. Se puede abrir un
máximo de 256 archivos a la vez. El nombre del archivo debe estar completamente
calificado, incluida una ruta completa. El archivo puede se puede abrir de tres
formas diferentes. For-Reading solo leerá los datos y los procesará de forma
secuencial. For-Writing creará un nuevo archivo de salida o sobrescribirá un archivo
existente en la misma ubicación. For-Append agregará datos al final de un archivo
existente o creará un nuevo archivo. Las longitudes de los registros se pueden
establecer como fijas o pueden variar en tamaño, pero se deben establecer en el
registro más largo escrito. El estado permite la verificación de errores asegurando
que el archivo está abierto. Este valor debe ser numérico; cero indica éxito y -1
indica fracaso.
LEER
Hay dos formas en que se pueden leer los datos. La primera es leer el archivo en
un solo campo y luego analizarlos en campos separados utilizando la función
SUBSTR.
While 1=1
Read 10 into $DataIn:80
If #END-FILE = 1
Break
End-if
Let $Emplid = Substr($DateIn,1,6)
Let $EmpName = Substr($DateIn, 10,40)
End-While
La segunda forma es leerlo en cada campo; solo tienes que tener en cuenta la
longitud total del registro. Si hay datos que no desea incluir, se les debe asignar una
variable ficticia.
While 1=1
Read 10 into $Emplid:6
$Dummy1:4
$EmpName:40
$Dummy2:30
If #END-FILE = 1
Break
End-if
End-While
REBAUTIZAR
Rename(filename1, filename2)
#status = Rename($bonus_in, $bonus_in_bkup)
ESCRIBIR
#DEBUG
#DEFINE
Esta función declara un valor para una variable de sustitución. Establece variables
estáticas para valores específicos. Estas variables no comienzan con un “$” o “#”.
Directiva de compilación
Esta función solo compilará el código dentro de si la declaración cumple con los
criterios. Hay cinco directivas compiladas entregadas:
#INCLUDE
Esta función muestra cómo todos los archivos SQC y .inc están disponibles para su
uso dentro del SQR. #INCLUDE Los archivos pueden estar al principio o al final del
programa, ya que se procesan durante la fase de compilación.
HTML
Print-Direct [Nolf]
[printer= {HTML}
Text
Print-Direct Printer=html '%%Title Monthly Department Counts'
To specify links use the target option.
Print-Direct Printer=html '%%Href target = "_top" http://www.myweb.com
Do html_on
Do html_h2
Print 'Company Status Report' (1,1)
Do html_h2_end
Do html_blink
Print 'This text blinks' (1,20)
Do html_blink_end
Do html_a ('HREF=myhome.html')
Print 'Go to myhome' (1,1)
Do html_a_end
Para publicar el informe o archivo SQR finalizado, trabaje con su webmaster para
establecer un directorio en el servidor donde se puedan copiar estos documentos.
Entonces cualquiera puede ir a esta ubicación y ver el informe.
http: //www.mycompanyserver/departmentcountreport.html
Programas de muestra