Alfonso:
adjunto te envío un .txt con los ejemplos que he extraido de los manuales y que creo que valen como muestra.
Saludos,
Francisco Rubio Enríquez
Analista
Cibernos Consulting, SAU
> Como veo que no te contesta nadie, lo hago yo, aunque te advierto
> que no he
> usado nunca este comando. pero buscando en google tienes algunos
> ejemplosp.e.:
> http://faq.midrange.com/data/cache/204.html
> Suerte.
> Martí Riera
> 2005/11/17, Ing. Alfonso Quintanar Monroy
> <[EMAIL PROTECTED]>:>
> > Estimados [EMAIL PROTECTED],
> >
> > No tengo absolutamente conocimiento de cómo se crea, se carga,
> se ejecuta,
> > etc., etc., los Opnqry, alguien de ustedes me puede ilustrar con
> algún> manual, link.
> >
> > De antemano mil gracias.
> >
> > S2
> > Alfonso Quintanar
> >
> >
> > __________________________________________________
> > Forum.HELP400 es un servicio más de NEWS/400.
> > (c) Publicaciones Help400, S.L. - Todos los derechos reservados
> > http://www.help400.es
> > _____________________________________________________
> >
> > Para darte de baja visita la siguente URL:
> > http://coyote.combios.es/mailman/listinfo/forum.help400
> >
>
>
>
> --
> Marti Riera
> {\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fnil MS Sans Serif;}{\f1\fnil\fcharset2 Symbol;}{\f2\fswiss\fprq2 System;}{\f3\fnil Times New Roman;}{\f4\fnil Courier New;}} {\colortbl\red0\green0\blue0;\red0\green0\blue255;\red128\green0\blue0;\red0\green255\blue255;\red255\green0\blue0;} \deflang1034\pard\plain\f4\fs20\cf1\b /*********************************************************************/ \par /* OS/400 CL REFERENCE V4R3 */ \par /* */ \par /* \plain\f4\fs20\cf4\b MANDATO OPNQRYF (OPEN QUERY FILE) \plain\f4\fs20\cf1\b */ \par /* \plain\f4\fs20\cf4\b Y MANDATOS RELACIONADOS \plain\f4\fs20\cf1\b */ \par /* */ \par /*********************************************************************/ \par PGM \par \par /*********************************************************************/ \par /* */ \par /* FUNCIONES */ \par /* */ \par /*********************************************************************/ \par \par \plain\f4\fs20\cf2\b /* Funciones para QRYSLT, MAPFLD y GRPSLT ---------------------------*/ \par \plain\f4\fs20\cf1\b \par /* %ABSVAL (numerico) */ \par /* %ACOS (numerico) */ \par /* %AND (serie ...) */ \par /* %ANTILOG (numerico) */ \par /* %ASIN (numerico) */ \par /* %ATAN (numerico) */ \par /* %ATANH (numerico) */ \par /* %AVG (numerico) */ \par /* %CHAR (fecha/hora fecha/hora-formato) */ \par /* %COS (numerico) */ \par /* %COSH (numerico) */ \par /* %COT (numerico) */ \par /* %COUNT */ \par /* %CURDATE */ \par /* %CURSERVER */ \par /* %CURTIME */ \par /* %CURTIMESTP */ \par /* %CURTIMEZONE */ \par /* %DATE (fecha/hora) */ \par /* %DAY (fecha/hora) */ \par /* %DAYS (fecha/hora) */ \par /* %DIGITS (numerico) */ \par /* %DURDAY (entero) */ \par /* %DURHOUR (entero) */ \par /* %DURMICSEC (entero) */ \par /* %DURMINUTE (entero) */ \par /* %DURMONTH (entero) */ \par /* %DURSEC (entero) */ \par /* %DURYEAR (entero) */ \par /* %EXP (numerico) */ \par /* %HASH (expresion) */ \par /* %HEX (hexadecimal) */ \par /* %HOUR (fecha/hora) */ \par /* %LEN (longitud) */ \par /* %LN (numerico) */ \par /* %LOG (numerico) */ \par /* %MAX (numerico/serie/fecha/hora ....) */ \par /* %MICSEC (fecha/hora) */ \par /* %MIN (numerico/serie/fecha/hora ...) */ \par /* %MINUTE (fecha/hora) */ \par /* %MONTH (fecha/hora) */ \par /* %NODENAME (entero) */ \par /* %NODENUMBER (entero) */ \par /* %NONNULL (argumento ...) */ \par /* %NOT (serie ...) */ \par /* %OR (serie ...) */ \par /* %PARTITION (entero) */ \par /* %SECOND (fecha/hora) */ \par /* %SIN (numerico) */ \par /* %SINH (numerico) */ \par /* %SQRT (numerico) */ \par /* %SST (serie posicion-inicial <longitud>) */ \par /* %STDDEV (numerico) */ \par /* %STRIP(serie <caracter-strip> <funcion-strip>) */ \par /* %SUBSTRING (serie posicion-inicial longitud) */ \par /* %SUM (numerico) */ \par /* %TAN (numerico) */ \par /* %TANH (numerico) */ \par /* %TIME (fecha/hora) */ \par /* %TIMESTP (fecha/hora fecha/hora) */ \par /* %USER */ \par /* %VAR (numerico) */ \par /* %XLATE (serie tabla) */ \par /* %XOR (serie ...) */ \par /* %YEAR */ \par /* */ \par \plain\f4\fs20\cf2\b /* Funciones para QRYSLT y GRPSLT como segundo operando -------------*/ \par \plain\f4\fs20\cf1\b /* */ \par /* %NULL */ \par /* %RANGE (valor-minimo valor-maximo) */ \par /* %VALUES (valor-permitido ...) */ \par /* %WLDCRD (''serie-patron'' ''caracteres-comodin'']) */ \par /* */ \par /*********************************************************************/ \par /* */ \par /* \plain\f4\fs20\cf4\b EJEMPLOS\plain\f4\fs20\cf1\b */ \par /* */ \par /*********************************************************************/ \par \par \plain\f4\fs20\cf4\b /* Uso de OPNQRYF ---------------------------------------------------*/ \par \plain\f4\fs20\cf1\b \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(ORDFILE) OPTION(*ALL) + \par QRYSLT('ORDDATE=%RANGE("840101" "841231") & ORDAMT>100') + \par KEYFLD((ORDAMT *DESCEND)) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(TELEFILE) + \par QRYSLT('%XLATE(USRNAME QSYSTRNTBL) *CT "GEORGE"') \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(TELEFILE) QRYSLT('USRNAME *CT ''GEORGE''') + \par MAPFLD((USRNAME '%XLATE(TELEFILE/USRNAME QSYSTRNTBL)')) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE((HISTLIB/ORDFILE HIST1)) + \par OPTION(*INP *UPD *DLT) + \par FORMAT(ORDINFO ORDDTLS) + \par QRYSLT('MONTH=7') + \par MAPFLD((YEAR '%SST(ORDDATE 1 2)' *ZONED 2) + \par (MONTH '%SST(ORDDATE 3 2)' *ZONED 2) + \par (DAY '%SST(ORDDATE 5 2)' *ZONED 2)) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE((ROUTELF *FIRST LOCUSR)) + \par QRYSLT('%SST(TOLOC 1 4) *EQ "ROCH"') + \par KEYFLD(FROMUSR FROMLOC TOUSR TOLOC) + \par UNIQUEKEY(*ALL) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(PARTPF PARTPF) + \par FORMAT(PARTJOIN) JFLD((1/PNBR 2/PNBR *GE)) + \par MAPFLD((PNM1 '1/PNAME') (PNM2 '2/PNAME') (PNBR '1/PNBR')) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(PARTPF PARTPF) FORMAT(PARTJOIN) + \par QRYSLT('1/PNBR *GE 2/PNBR') + \par MAPFLD((PNM1 '1/PNAME') (PNM2 '2/PNAME') (PNBR '1/PNBR')) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(CUSMAS ORDFIL) FORMAT(CUSMAS) + \par JFLD((CUSNBR ORDFIL/CUSNBR)) JDFTVAL(*ONLYDFT) + \par MAPFLD((CUSNBR 'CUSMAS/CUSNBR')) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(ORDFIL CUSMAS) FORMAT(ORDFIL) + \par JFLD((CUSNBR CUSMAS/CUSNBR)) JDFTVAL(*ONLYDFT) + \par MAPFLD((CUSNBR 'ORDFIL/CUSNBR')) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(SCORES) FORMAT(CLSSTATS) GRPFLD(CLSID) + \par GRPSLT('CLSAVG<70&clsmax-clsmin>30') + \par MAPFLD((CLSCNT '%COUNT') (CLSAVG '%AVG(USRSCORE)') + \par (CLSMIN '%MIN(USRSCORE)') (CLSMAX '%MAX(USRSCORE)')) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(ITMMAST) QRYSLT('ITMCODE=%RANGE(32 50) & ITMTYPE="P"') + \par ALWCPYDTA(*NO) OPTIMIZE(*FIRSTIO) SEQONLY(*YES 10) TYPE(*PERM) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(ITMMAST) QRYSLT('ITMTYPE=PFIELD') + \par MAPFLD((PFIELD 'P' *CHAR 1 *N 930)) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE((EMPLOYEE)) KEYFLD((NAME)) ALWCPYDTA(*OPTIMIZE) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE((EMPLOYEE) (MANAGEMENT)) + \par FORMAT(EMPLOYEE) KEYFLD((NAME)) + \par JFLD((1/EMPID 2/MEMPID)) ALWCPYDTA(*OPTIMIZE) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE((LIBRARY/FILE)) + \par QRYSLT('STARTFLD > %CURDATE + ONEYEAR *AND + \par ENDFLD <%curdate+%duryear(2)')mapfld((oneyear'%duryear(1)'))\par\par\plain\f4\fs20\cf4\bopnqryf\plain\f4\fs20\cf1\bfile((corpdata/employee))format(fname)+\parmapfld((hash'%hash((1/empno)(1/ln))'))\par\par\plain\f4\fs20\cf4\bopnqryf\plain\f4\fs20\cf1\bfile(library/file)qryslt(('%hour(timefld2)=12'))\par\par\plain\f4\fs20\cf4\bopnqryf\plain\f4\fs20\cf1\bfile(library/file)qryslt('%len(varlenfld)<=30')\par\par\plain\f4\fs20\cf4\bopnqryf\plain\f4\fs20\cf1\bfile((corpdata/employee))format(fname)+\parmapfld((nodename'%nodename(1)'))\par\par\plain\f4\fs20\cf4\bopnqryf\plain\f4\fs20\cf1\bfile((corpdata/employee)(corpdata/department))format(fname)+\parjfld((employee/deptnodepartment/deptno*eq))+\parmapfld((empno'employee/empno')(nodename1'%nodename(1)')+\par(nodename1'%nodename(2)'))\par\par\plain\f4\fs20\cf4\bopnqryf\plain\f4\fs20\cf1\bfile((corpdata/employee)(corpdata/department))format(fname)+\parjfld((1/nodename12/nodename2*eq))mapfld((nodename1'%nodename(1)')+\par(nodename2'%nodename(2)'))\par\par\plain\f4\fs20\cf4\bopnqryf\plain\f4\fs20\cf1\bfile((corpdata/employee))format(fname)+\parmapfld((nodename'%nodenumber(1)')(lname'1/lastname'))\par\par\plain\f4\fs20\cf4\bopnqryf\plain\f4\fs20\cf1\bfile(library/file)qryslt('%nonnull(fld1fld20)> 0') \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE((CORPDATA/EMPLOYEE)) FORMAT(FNAME) + \par MAPFLD((PART1 '%PARTITION(1)')) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE((EMPLOYEE)) QRYSLT('%PARTITION(1) *EQ 100') \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE((CORPDATA/EMPLOYEE) (CORPDATA/DEPARTMENT)) FORMAT(FNAME) + \par JFLD((1/PART1 2/PART2 *EQ)) MAPFLD((PART1 '%PARTITION(1)') + \par (PART2 '%PARTITION(2)')) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(LIBRARY/FILE) + \par QRYSLT('FIELD1 = %SST(FIELD2 (NUMFLD1+3) (NUMFLD1+NUMFLD2))') \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(LIBRARY/FILE) QRYSLT('%STRIP(FLD ''.'' *TRAIL) = ''MR''') \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(LIBRARY/FILE) QRYSLT('FIELD = %USER') \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(LIBRARY/FILE) QRYSLT('CHARFLD = %NULL') \par \par \plain\f4\fs20\cf4\b /* Uso de CPYFRMQRYF -----------------------------------------------*/ \par \plain\f4\fs20\cf1\b \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(CUSTOMER/ADDRESS) QRYSLT('STATE *EQ "TEXAS"') \par \plain\f4\fs20\cf4\b CPYFRMQRYF\plain\f4\fs20\cf1\b FROMOPNID(ADDRESS) TOFILE(TEXAS/ADDRESS) CRTFILE(*YES) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(FILEA) QRYSLT('CITY *EQ "CHICAGO"') \par \plain\f4\fs20\cf4\b CPYFRMQRYF\plain\f4\fs20\cf1\b FROMOPNID(FILEA) TOFILE(*PRINT) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(FILEB) QRYSLT('FIELDB *EQ "10"') OPNID(MYID) \par \plain\f4\fs20\cf4\b CPYFRMQRYF\plain\f4\fs20\cf1\b FROMOPNID(MYID) TOFILE(DISK1) \par \par \plain\f4\fs20\cf4\b OPNQRYF\plain\f4\fs20\cf1\b FILE(FILEA FILEB) FORMAT(JOINAB) + \par JFLD((FILEA/CUST FILEB/CUST)) + \par MAPFLD((CUST 'FILEA/CUST')) OPNID(QRYFILE) \par \plain\f4\fs20\cf4\b CPYFRMQRYF\plain\f4\fs20\cf1\b FROMOPNID(QRYFILE) TOFILE(MYLIB/FILEC) CRTFILE(*YES) \par \par \plain\f4\fs20\cf4\b /* Uso de CLOF -----------------------------------------------------*/ \par \plain\f4\fs20\cf1\b \par \plain\f4\fs20\cf4\b CLOF\plain\f4\fs20\cf1\b OPNID(APPL) \par \par ENDPGM \par \par }
-- Disclaimer ------------------------------------ Ce message ainsi que les eventuelles pieces jointes constituent une correspondance privee et confidentielle a l'attention exclusive du destinataire designe ci-dessus. Si vous n'etes pas le destinataire du present message ou une personne susceptible de pouvoir le lui delivrer, il vous est signifie que toute divulgation, distribution ou copie de cette transmission est strictement interdite. Si vous avez recu ce message par erreur, nous vous remercions d'en informer l'expediteur par telephone ou de lui retourner le present message, puis d'effacer immediatement ce message de votre systeme. *** This e-mail and any attachments is a confidential correspondence intended only for use of the individual or entity named above. If you are not the intended recipient or the agent responsible for delivering the message to the intended recipient, you are hereby notified that any disclosure, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify the sender by phone or by replying this message, and then delete this message from your system.
