Code SQL built-in and scalar functions as keywords for the database access calls DB-DECLARE, DB-OBTAIN, and DB-PROCESS.
SQL
DB-DECLARE cursorname [correlname1.]copylibname-REC ... function1[(](expression)[,expression[,Y][)]] ... function2[(](expression)[,expression[,Y][)]] . . . ... functionN[(](expression)[,expression[,Y][)]] ... WHERE ...
DB-OBTAIN REC [correlname1.]copylibname-REC ... function1[(](expression)[,expression[,Y][)]] ... function2[(](expression)[,expression[,Y][)]] . . . ... functionN[(](expression)[,expression[,Y][)]] ... WHERE ...
DB-PROCESS REC [correlname1.]copylibname-REC ... [DB-PROCESS-ID name] ... function1[(](expression)[,expression[,Y][)]] ... function2[(](expression)[,expression[,Y][)]] . . . ... functionN[(](expression)[,expression[,Y][)]] ... WHERE ...
DB-OBTAIN .. REC PARTDESC-REC .. WHERE .. MAX (PD_LONG_DESC) = 3
DB-DECLARE D2MAST-CURSOR D2TAB-REC ... MIN((PM_UNIT_BASE_PRICE),WS-PM-UNIT-BASE-PRICE,Y) ... COUNT((DISTINCT PM_COLOR),WS-PM-COLOR,Y) ... WHERE PM_PART_NO = :WS-PART-NO
DB-OBTAIN REC D2TAB-REC ... MAX((PM_UNIT_BASE_PRICE),WS-MAX-PRICE,Y) ... MIN((PM_UNIT_BASE_PRICE * PM_UNITS),WS-MIN-RESULT,Y) ... WHERE PM_PART_SHORT_DESC = 'WIDGET'
Generated code:
EXEC SQL SELECT MAX(PM_UNIT_BASE_PRICE) MIN(PM_UNIT_BASE_PRICE * PM_UNITS) into :WS-MAX-PRICE, :WS-MAX-PRICE-IND :WS-MIN-RESULT :WS-MIN-RESULT-IND FROM AUTHID.D2MASTER WHERE PM_PART_SHORT_DESC = 'WIDGET' END-EXEC.
DB-OBTAIN REC D2TAB-REC ... SUM(PM_UNITS) ... AVG((PM_UNITS),WS-AVG-UNITS,Y) ... WHERE PM_PART_NO = '23432'
Generated code:
EXEC SQL select SUM(PM_UNITS) AVG(PM_UNITS) INTO :D2TAB-REC.PM-UNITS :IND-D2TAB-REC.IND-PM-UNITS, :WS-AVG-UNITS :WS-AVG-UNITS-IND FROM AUTHID.D2MASTER WHERE PM_PART_NO = '23432' END-EXEC.
DB-OBTAIN REC D2MASTER-REC ... MAX((PM-UNITS),WS-MAX-PM-UNITS) ... COUNT((*),WS-PM-COUNT-FLD) ... AVG((PM-UNIT-BASE-PRICE),WS-AVG-PRICE) ... WHERE PM-PART-SHORT-DESC='WIDGET' ... AND PM-COLOR='RED'
Generated code:
EXEC SQL select MAX(PM-UNITS) MIN(PM-UNIT-BASE-PRICE) COUNT(*) AVG(PM-UNIT-BASE-PRICE) INTO WS-MAX-PM-UNITS WS-MAX-PM-UNITS-IND, WS-PM-COUNT-FLD, WS-AVG-PRICE WS-AVG-PRICE-IND FROM AUTHID.D2MASTER WHERE PM-PART-SHORT-DESC='WIDGET' AND PM-COLOR='RED' END-EXEC.
DB-OBTAIN REC D2INVEN-REC ... IN_PART_NO ... DATE(IN_DATE_LAST_UPDTE) ... TIME((IN_TIME_LAST_UPDTE),WS-TIME-RETURN,Y) ... CHAR((IN_DATE_LAST_ORDER,ISO),WS-CHAR-RETURN) ... IN_QTY_ONHAND ... WHERE IN_PART_NO = '23432'
Generated code:
EXEC SQL SELECT IN_PART_NO DATE(IN_DATE_LAST_UPDTE) TIME(IN_TIME_LAST_UPDTE) CHAR(IN_DATE_LAST_ORDER,ISO) IN_QTY_ONHAND INTO :D2INVEN-REC.IN-PART-NO, :D2INVEN-REC.IN-DATE-LAST-UPDTE :IND-D2INVEN-REC.IN-DATE-LAST-UPDTE, :WS-TIME-RETURN :WS-TIME-RETURN-IND, :WS-CHAR-RETURN :WS-CHAR-RETURN-IND, :D2INVEN-REC.IN-QTY-ONHAND :IND-D2INVEN-REC.IN-QTY-ONHAND FROM AUTHID.D2INVTRY WHERE IN_PART_NO = '23432' END-EXEC.