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

Reply With Quote