Author: prino
Posted: Wed Jul 20, 2016 6:18 am (GMT 5.5)
That's why there is dynamic SQL!
And how you translate the PL/I code posted here to that sissy language you're using, that's up to you:
_________________
Robert AH Prins
robert.ah.prins @ the.17+Gb.Google thingy
No programming here (yet)![icon_smile.gif]()
Posted: Wed Jul 20, 2016 6:18 am (GMT 5.5)
That's why there is dynamic SQL!
And how you translate the PL/I code posted here to that sissy language you're using, that's up to you:
Code: |
1/********************************************************************** * XXXX - Working storage * **********************************************************************/ DCL 1 XXXX_WORK, 2 EYE_CATCH06 CHAR (16) INIT ('XXXX WORK06'), 2 DYNAM CHAR (8192) VAR, 2 EYE_CATCH99 CHAR (16) INIT ('XXXX WORK99'); 1/********************************************************************** * XXXX - DB2 cursors * **********************************************************************/ EXEC SQL DECLARE SUMMARY CURSOR FOR XXXX_1_STMT; /********************************************************************** * XXXX - Retrieve data from database (or not) * **********************************************************************/ CALL BUILD_XXXX_QUEUES(); 1/********************************************************************** * BUILD_XXXX_QUEUES: * * * * This procedure builds a temporary storage queue with the data * * retrieved from the database. * * * * If XXXX is entered through non-standard means, ie not from the * * normal selection screen, the calling program should * * * * - set the non_edx indicator to '1'b * * - store the required UMR & TR in the pass fields in the comarea * **********************************************************************/ BUILD_XXXX_QUEUES: PROC; DYNAM = 'SELECT ' || 'P1.RISK_UMR, ' || 'P1.TRAN_REF, ' || 'P1.TRAD_PTR_ID, ' || 'CLSG_SET_CCY, ' || 'RSKT_NET_PSTG_AMT, ' || 'CLSG_SET_DTED, ' || 'PAY_STUS, ' || 'FST_TRANSM_DTE, ' || 'TRANSM_DTE, ' || 'TBK_STUS, ' || 'TBK_DTE, ' || 'LIMRES_STUS, ' || 'LIMRES_DTE, ' || 'ACCT_NO, ' || 'TTRN_CODE, ' || 'MSG_FWDCHN_UMR,' || 'IPOS_SND_PAY_IND, ' || 'IPOS_SPSET_IND, ' || 'MSG_PAY_OS_IND, ' || 'PST_ACCEPT_REF, ' || 'IPOS_SET_DTED, ' || 'P1.UPD_CNT, ' || 'M1.UPD_CNT, ' || 'MSG_TIME_STAMP, ' || 'MOD_UW_REF, ' || 'RISK_DIVN_IDENT, ' || 'TYR_CODE, ' || 'RISK_ROOT_NO, ' || 'PRM_RISK_SUFFIX, ' || 'PRM_TRANS_SEQ, ' || 'IPOS_NO, ' || 'TRACKING_IND '; DYNAM = DYNAM || 'FROM ' || SQLID || 'VPYPOST P1, ' || SQLID || 'VPYMSG M1 '; DYNAM = DYNAM || 'WHERE ' || 'P1.RISK_UMR = M1.RISK_UMR AND ' || 'P1.TRAN_REF = M1.TRAN_REF AND ' || 'TOPR_LEGAL_ENT = ''' || XXXX_WORK.TOPR_LEGAL_ENT || ''' '; IF COM_DATA.TRAD_PTR_ID ^= '' THEN DYNAM = DYNAM || 'AND P1.TRAD_PTR_ID = ''' || COM_DATA.TRAD_PTR_ID || ''' '; SELECT; WHEN (COM_DATA.POSTCODE = ' '); WHEN (INDEX(COM_DATA.POSTCODE, ' ') ^= 0 | INDEX(COM_DATA.POSTCODE, '%') ^= 0 | INDEX(COM_DATA.POSTCODE, '_') ^= 0) DO; DYNAM = DYNAM || 'AND TOPR_DIVCODE = ''' || SUBSTR(COM_DATA.POSTCODE, 1, 2) || ''' '; IF SUBSTR(COM_DATA.POSTCODE, 3, 3) ^= ' ' THEN DO; DYNAM = DYNAM || 'AND TOPR_CODE LIKE '''; DO #I = 3 TO LENGTH(COM_DATA.POSTCODE); SELECT (SUBSTR(COM_DATA.POSTCODE, #I, 1)); WHEN (' ') DYNAM = DYNAM || '_'; OTHER DYNAM = DYNAM || SUBSTR(COM_DATA.POSTCODE, #I, 1); END; END; DYNAM = DYNAM || ''' '; END; END; OTHER DYNAM = DYNAM || 'AND TOPR_DIVCODE || TOPR_CODE = ''' || COM_DATA.POSTCODE || ''' '; END; SELECT; WHEN (NON_EDX | LTSE_TREATY); WHEN (FROM_CLOSURE) DO; DYNAM = DYNAM || 'AND CLSG_SET_CCY = ''' || CLSG_SET_ISO || ''' '; DYNAM = DYNAM || 'AND CLSG_SET_DTED = ''' || SUBSTR(COM_DATA.CLSG_SET_DTED, 1, 2) || '.' || SUBSTR(COM_DATA.CLSG_SET_DTED, 3, 2) || '.' || SUBSTR(COM_DATA.CLSG_SET_DTED, 5, 4) || ''' '; DYNAM = DYNAM || 'AND CLSG_UW_ACCT_REF = ''' || COM_DATA.UW_ACCT_REF || ''' '; END; WHEN (COM_DATA.HELD_ITEMS ^= '') DO; DYNAM = DYNAM || 'AND PAY_STUS = ''H'' '; CALL ADD_DATES('FST_TRANSM_DTE'); END; WHEN (COM_DATA.OVERNIGHT ^= '') DYNAM = DYNAM || 'AND PAY_STUS = ''S'' '; OTHER CALL FULL_SELECT(); END; DYNAM = DYNAM || 'AND M1.MSG_TIME_STAMP = ' || '(SELECT MAX(MSG_TIME_STAMP) ' || 'FROM ' || SQLID || 'VPYMSG MC ' || 'WHERE ' || 'P1.RISK_UMR = MC.RISK_UMR ' || 'AND P1.TRAN_REF = MC.TRAN_REF) '; DYNAM = DYNAM || 'ORDER BY ' || 'RISK_DIVN_IDENT, ' || 'TYR_CODE, ' || 'RISK_ROOT_NO, ' || 'PRM_RISK_SUFFIX, ' || 'PRM_TRANS_SEQ, ' || 'IPOS_NO, ' || 'P1.TRAN_REF'; EXEC SQL PREPARE XXXX_1_STMT FROM :DYNAM; $$NON_00000; EXEC SQL OPEN SUMMARY; $$NON_00000; CALL FETCH_SUMMARY(); DO WHILE(SQLSTATE = '00000'); DATA_FOUND = '1'B; CALL STORE_DATA_IN_QUEUE(); CALL FETCH_SUMMARY(); END; $$NON_02000; EXEC SQL CLOSE SUMMARY; $$NON_00000; |
_________________
Robert AH Prins
robert.ah.prins @ the.17+Gb.Google thingy
No programming here (yet)
