Add new attachment

Only authorized users are allowed to upload new attachments.

This page (revision-1) was last changed on 02-May-2012 12:16 by UnknownAuthor

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 1 added 278 lines
%%(display:none)
{{{
WikiUp
}}}
/%
[{TableOfContents }]\\
!!! OBIETTIVO\\
Restituisce in formato alfanumerico i risultati di una istruzione SQL Select tramite un cursore
con allocazione dinamica della SQLDA
!!! FUNZIONI E METODI\\
!! CLOSE - Chiude il cursore\\
%%quote
| C EVAL £SQLD_FUNFU='CLOSE'
| C EVAL £SQLD_FUNME=*BLANKS
| C EXSR £SQLD
/%
----
!! OPEN - Prepara lo statement, apre il cursore, dimensiona la SQLDA\\
__Prima di eseguire la funzione 'OPEN' è necessario impostare la variabile £SQLDString con l'istruzione SELECT.__
! NAM - recuperando i nomi di sistema dei campi in £SQLDCName\\
%%quote
| C EVAL £SQLDString=SelectSQL
| * numero di righe per istruzione OPTIMIZE (se 0 assume 5000)
| C EVAL £SQLDRows=n
| C EVAL £SQLD_FUNFU='OPEN'
| C EVAL £SQLD_FUNME='NAM'
| C EXSR £SQLD
/%
----
! NAMLAB - recuperando i nomi di sistema dei campi in £SQLDCName e le intestazioni in £SQLDCLabel\\
__ ATTENZIONE: COMPORTA UN'ALLOCAZIONE DI MEMORIA TRIPLA__
%%quote
| C EVAL £SQLDString=SelectSQL
| C EVAL £SQLD_FUNFU='OPEN'
| C EVAL £SQLD_FUNME='NAMLAB'
| C EXSR £SQLD
/%
----
! LAB - recuperando le intestazioni dei campi in £SQLDCName\\
%%quote
| C EVAL £SQLDString=SelectSQL
| C EVAL £SQLD_FUNFU='OPEN'
| C EVAL £SQLD_FUNME='LAB'
| C EXSR £SQLD
/%
----
!! POS - Posizionamento cursore\\
! NEXT - al record successivo\\
%%quote
| C EVAL £SQLD_FUNFU='POS'
| C EVAL £SQLD_FUNME='NEXT'
| C EXSR £SQLD
/%
----
! PRIOR - al record precedente\\
%%quote
| C EVAL £SQLD_FUNFU='POS'
| C EVAL £SQLD_FUNME='PRIOR'
| C EXSR £SQLD
/%
----
! FIRST - al primo record\\
%%quote
| C EVAL £SQLD_FUNFU='POS'
| C EVAL £SQLD_FUNME='FIRST'
| C EXSR £SQLD
/%
----
! LAST - all'ultimo record\\
%%quote
| C EVAL £SQLD_FUNFU='POS'
| C EVAL £SQLD_FUNME='LAST'
| C EXSR £SQLD
/%
----
! BEFORE - a BOF\\
%%quote
| C EVAL £SQLD_FUNFU='POS'
| C EVAL £SQLD_FUNME='BEFORE'
| C EXSR £SQLD
/%
----
! AFTER - a EOF\\
%%quote
| C EVAL £SQLD_FUNFU='POS'
| C EVAL £SQLD_FUNME='AFTER'
| C EXSR £SQLD
/%
----
! RELATIVE - relativo al record corrente\\
__(posizionamento relativo al record corrente di +n o -n in base alla variabile £SQLDRows)__
%%quote
| C EVAL £SQLRel=n
| C EVAL £SQLD_FUNFU='POS'
| C EVAL £SQLD_FUNME='RELATIVE'
| C EXSR £SQLD
/%
----
!! READF - Recupera il Valore della colonna\\
%%quote
| C EVAL £SQLD_FUNFU='READF'
| C EVAL £SQLD_FUNME=' '
| C EXSR £SQLD
/%
----
!! FINDC - Recupera la definizione della colonna\\
! NAM - Ricerca dal nome della colonna in £SQLDCName\\
%%quote
| C EVAL £SQLDCName=NomeCampo
| C EVAL £SQLD_FUNFU='FINDC'
| C EVAL £SQLD_FUNME='NAM'
| C EXSR £SQLD
/%
----
! LET - Posizionamento\\
%%quote
| C EVAL £SQLD_FUNFU='FINDC'
| C EVAL £SQLD_FUNME='POS'
| C EXSR £SQLD
/%
----
! LET - Lettura\\
%%quote
| * ciclo sui campi
| C DO *HIVAL
| C EVAL £SQLD_FUNFU='FINDC'
| C EVAL £SQLD_FUNME='LET'
| C EXSR £SQLD
| C IF £SQLD35=*ON
| C LEAVE
| C ENDIF
| C ENDDO
/%
----
!! RETREC - Restituisce in £SQLDString l'intero record\\
! G18 - con i campi separati da ' '\\
%%quote
| C EVAL £SQLD_FUNFU='RETREC'
| C EVAL £SQLD_FUNME='G18'
| C EXSR £SQLD
/%
----
! MAT - con i campi separati da '|'\\
%%quote
| C EVAL £SQLD_FUNFU='RETREC'
| C EVAL £SQLD_FUNME='MAT'
| C EXSR £SQLD
/%
----
! CSV - con i campi separati da ';'\\
%%quote
| C EVAL £SQLD_FUNFU='RETREC'
| C EVAL £SQLD_FUNME='CSV'
| C EXSR £SQLD
/%
----
!! RETINT - Restituisce in £SQLDString le intestazioni\\
! G18 - con i campi separati da ' '\\
%%quote
| C EVAL £SQLD_FUNFU='RETINT'
| C EVAL £SQLD_FUNME='G18'
| C EXSR £SQLD
/%
----
! CSV - con i campi separati da ';'\\
%%quote
| C EVAL £SQLD_FUNFU='RETINT'
| C EVAL £SQLD_FUNME='CSV'
| C EXSR £SQLD
/%
----
!!! TIPI DI DATI SUPPORTATI\\
- __Tipo dato RPG__ | __Tipo dato SQL__ | __Tipo dato £IR1__\\
- A | CHAR | A\\
- A (VARYING) | VARCHAR | A\\
- 05I 0 | SMALLINT | B\\
- 10I 0 | INTEGER | B\\
- 20I 0 | BIGINT | B\\
- F | FLOAT | F\\
- D | DATE | L\\
- P | DECIMAL | P\\
- S | NUMERIC | S\\
- T | TIME | T\\
- Z | TIMESTAMP | Z\\
!!! VARIABILI\\
%%quote
|L(PUN)
|- Stringa istruzione SQL (in INPUT)
|- Record restituito (in OUTPUT con funzione 'RETREC')
|- Valore del campo restituito (in OUTPUT con funzione 'READF')
/%
----
D £SQLDString S 32766 VARYING
********************************************************************\\
* DS INPUT/OUTPUT\\
D £SQLD_DS1 DS
* INPUT
D* numero in base al quale eseguire il fetch relative (con funzione 'RELATIVE')
D* numero di righe per l'optimize su apertura cursore
D £SQLDRows 30P 0
* OUTPUT con info campi (con funzione 'READF')
D* nome colonna (con metodo 'NAM' o 'NAMLAB') o intestazione (con metodo 'LAB')
D £SQLDCName 30
D* label (intestazione) colonna (con metodo 'NAMLAB')
D £SQLDCLabel 30
D* tipo di dato del campo
D £SQLDCDType 5I 0
D* lunghezza campo stringa
D £SQLDCLen 5I 0
D* scala campo numerico (numero posizioni decimali)
D £SQLDCScale 10I 0
D* precisione campo numerico
D £SQLDCPrec 10I 0
D* indice della colonna corrente del record
D £SQLDCurCol 7 0
D* numero totale delle colonne del record
D £SQLDTotCol 7 0
D* tipo di dato del campo nel formato della £IR1AC
D £SQLDCDTpIR 1
****************************************************************\\
* DS OUTPUT Info ERRORE\\
D £SQLD_ERROR DS
* Indicatore di errore
D £SQLD35 N
* SQLCOD
D £SQLDCOD 5I 0
* SQLERM
D £SQLDERM 80
* %Status (per errori di allocazione di memoria)
D £SQLDSTATUS 5S 0
* Variabili per errore non SQL
D £SQLDVA 45
!!! ESEMPIO\\
%%quote
| ESEGUIRE UNA LETTURA DEL BRARTI0F QUERY : SELECT * FROM BRARTI0F
| C*APRO
| C EVAL £SQLDString='SELECT * FROM BRARTI0F'
| C EVAL £SQLD_FUNFU='OPEN'
| C EVAL £SQLD_FUNME='NAM'
| C EXSR £SQLD
|1 C IF £SQLD35=*ON
| C LEAVESR
|1e C ENDIF
| C*posizionamento
| C EVAL £SQLD_FUNFU='POS'
| C EVAL £SQLD_FUNME='NEXT'
| C EXSR £SQLD
|1 C IF £SQLD35=*ON
| C LEAVESR
|1e C ENDIF
| C*lettura
| C DO *HIVAL
| C EVAL £SQLD_FUNFU='RETREC'
| C EVAL £SQLD_FUNME='MAT'
| C EXSR £SQLD
|1 C IF £SQLD35=*ON
| C LEAVE
|1e C ENDIF
| C* £SQLDString CONTIENE IL RISULTATO DELLA FETCH
|1e C ENDDO
| C*CHIUDO
| C EVAL £SQLD_FUNFU='CLOSE'
| C EVAL £SQLD_FUNME=*BLANKS
| C EXSR £SQLD
| C* LA FUNZIONE CLOSE CHIUDE IL CURSORE E PULISCE £SQLDString
/%
----
This page has only one version
«