Figure 8: Free-format RPG integrated with SQL

h nomain

d getOrderCount   pr            10i 0

d  inCustNumber                  9b 0 const

d  outSqlState                   5a

d  outSqlMsg                   256a



 *******************************************

p getOrderCount   b                   export

 *******************************************

 * Returns the number of orders in the table

 * for the specified customer number



d getOrderCount   pi            10i 0

d  inCustNumber                  9b 0 const

d  outSqlState                   5a

d  outSqlMsg                   256a



d  ordercount     s             10i 0



 /free

   outSqlMsg   = *blanks;



   exec sql SELECT count(*) into :orderCount

            FROM allOrders

            WHERE customer_no = :inCustNumber;



  outSqlState = sqlState;

  if %subst(sqlState:1:2) <> '00';

   exec sql GET DIAGNOSTICS CONDITION 1

                :outSqlMsg = MESSAGE_TEXT;

    orderCount = 0;

  endif;



  return orderCount;

 /end-free

p getOrderCount   e