+ Reply to Thread
Results 1 to 2 of 2

Thread: OPNQRYF w/packed fields

  1. #1
    Guest.Visitor Guest

    Default OPNQRYF w/packed fields

    I am fairly new to the RPG programming environment and need to use the OPNQRYF command. I am having trouble with packed fields. I have included the code that I am trying to use and the field that is causing me grief is SEYC. In the physical file, field SEY004 is packed(2,0). When this program runs, and the CPYFRMQRYF executes there are no records. Do you see anything wrong with my code or do you have other suggestions on how to handle this type coding? Please email your answers to klscott@netdoor.com or kscott@garan.com Thanks for any help provided. PGM /*================================================= ==*/ /* VARIABLE DECLARATIONS */ /*================================================= ==*/ DCLF FILE(*LIBL/MNSCSLBL4) DCL VAR(&CPYC) TYPE(*CHAR) LEN(2) DCL VAR(&DIVI) TYPE(*CHAR) LEN(2) DCL VAR(&SEAC) TYPE(*CHAR) LEN(1) These are the problem fields DCL VAR(&SEYC) TYPE(*CHAR) LEN(3) VALUE('000') DCL VAR(&SEY#) TYPE(*CHAR) LEN(2) DCL VAR(&STYC) TYPE(*CHAR) LEN(10) DCL VAR(&FABC) TYPE(*CHAR) LEN(10) DCL VAR(&CLRC) TYPE(*CHAR) LEN(5) DCL VAR(&LEN) TYPE(*CHAR) LEN(5) DCL VAR(&CUT) TYPE(*CHAR) LEN(7) DCL VAR(&LBLTP) TYPE(*CHAR) LEN(1) DCL VAR(&QSEL) TYPE(*CHAR) LEN(200) /*================================================= ==*/ /* PREPARE FILE AND GET INFORMATION */ /*================================================= ==*/ RMVLIBLE LIB(QTEMP) ADDLIBLE LIB(QTEMP) POSITION(*FIRST) NEWF: DLTF FILE(QTEMP/PUP004WK) MONMSG MSGID(CPF0000) RTVDTAARA DTAARA(*LDA (410 2)) RTNVAR(&PLANT) CHGVAR VAR(&CPYC) VALUE('01') READ: SNDF RCDFMT(SCR001A) RCVF RCDFMT(SCR001A) IF (&IN03) GOTO END /*================================================= ==*/ /* CREATE SELECTION CRITERIA */ /*================================================= ==*/ /* STYLE */ /*===========*/ IF COND(&STYC *NE ' ') THEN(DO) CHGVAR VAR(&QSEL) VALUE('STY004 *EQ + "' *CAT &STYC *CAT '"') ENDDO ELSE DO CHGVAR VAR(&STYC) VALUE('REQUIRED') GOTO READ ENDDO /* FABRIC */ /*============*/ IF COND(&FABC *NE ' ') THEN(DO) CHGVAR VAR(&QSEL) VALUE(&QSEL *BCAT '*AND + FAB004 *EQ "' *CAT &FABC *CAT '"') ENDDO /* SEASON */ /*============*/ IF COND(&SEAC *NE ' ') THEN(DO) CHGVAR VAR(&QSEL) VALUE(&QSEL *BCAT '*AND + SEA004 *EQ "' *CAT &SEAC *CAT '"') ENDDO /* YEAR */ /*============*/ CHGVAR VAR(&SEYC) VALUE('0' *CAT &SEY#) IF COND(&SEYC *NE ' ') THEN(DO) CHGVAR VAR(&QSEL) VALUE(&QSEL *BCAT '*AND + SEY004C *EQ "' *CAT &SEYC *CAT '"') ENDDO /* DIVISION */ /*============*/ IF COND(&DIVI *NE ' ') THEN(DO) CHGVAR VAR(&QSEL) VALUE(&QSEL *BCAT '*AND DIV004C + *EQ "' *CAT &DIVI *CAT '"') ENDDO /* COLOR */ /*============*/ IF COND(&CLRC *NE ' ') THEN(DO) CHGVAR VAR(&QSEL) VALUE(&QSEL *BCAT '*AND + CLR004 *EQ "' *CAT &CLRC *CAT '"') ENDDO /* LEN-PACK */ /*============*/ IF COND(&LEN *NE ' ') THEN(DO) CHGVAR VAR(&QSEL) VALUE(&QSEL *BCAT '*AND + LEN004 *EQ "' *CAT &LEN *CAT '"') ENDDO /*================================================= ==*/ /* CREATE TEMP FILE */ /*================================================= ==*/ OVRDBF FILE(PUP004) TOFILE(*LIBL/PUP004) SHARE(*YES) OPNQRYF FILE((*LIBL/PUP004)) OPTION(*INP) + QRYSLT(&QSEL) KEYFLD(*FILE) + MAPFLD((DIV004C 'DIV004' *CHAR 2) + (SEY004C '%DIGITS(SEY004)')) + IGNDECERR(*YES) MONMSG MSGID(CPF0000) CPYFRMQRYF FROMOPNID(PUP004) TOFILE(QTEMP/PUP004WK) + MBROPT(*REPLACE) CRTFILE(*YES) MONMSG MSGID(CPF0000) CALL PGM(*LIBL/MNRCSLBL4) PARM(&CPYC &PLANT + &SEAC &SEYC &DIVI + &STYC &FABC &CLRC &LEN &CUT &LBLTP &PRT + &PRTNME) CHGVAR VAR(&QSEL) VALUE(' ') CLOF OPNID(PUP004) RCLRSC DLTOVR FILE(PUP004) GOTO NEWF END: ENDPGM

  2. #2

    Default OPNQRYF w/packed fields

    You're making this more complicated than it needs to be. OPNQRYF can compare numerics, so there's no need to create the mapped field. Try this:
     DCL VAR(&SEY#) TYPE(*CHAR) LEN(2) IF COND(&SEY# *NE ' ') THEN(DO) CHGVAR VAR(&QSEL) VALUE(&QSEL *BCAT '*AND + SEY004 *EQ ' *CAT &SEY#) ENDDO OPNQRYF FILE((*LIBL/PUP004)) OPTION(*INP) + QRYSLT(&QSEL) KEYFLD(*FILE) + MAPFLD((DIV004C 'DIV004' *CHAR 2)) + IGNDECERR(*YES) 

+ Reply to Thread

Similar Threads

  1. Packed Fields
    By dacust in forum CL
    Replies: 7
    Last Post: 01-14-2004, 01:37 PM
  2. ODBC, SQL, and Packed Fields
    By M.Savino in forum General
    Replies: 2
    Last Post: 10-22-2003, 12:37 PM
  3. Unsigned Packed Fields
    By B.Morris in forum Visual Basic
    Replies: 4
    Last Post: 07-12-2002, 02:03 PM
  4. unpacking packed fields
    By Guest.Visitor in forum Application Software
    Replies: 18
    Last Post: 07-19-2000, 04:14 PM
  5. FTP and packed fields
    By Guest.Visitor in forum Internet
    Replies: 2
    Last Post: 07-17-1998, 05:04 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts