OSI/MHS Management Programming Manual
Examples
OSI/MHS Management Programming Manual—424824-001
C-48
Example in C
/* corresponding to the APPL name. If the password and the OSI addresses */
/* match, set passw_valid to TRUE, else set passw_valid to FALSE. */
/* Any SQL error causes passw_valid to be set to FALSE, and the SQL error */
/* code (except row not found) to be returned. */
/* If the OSI address is not present, set the zlength fields in */
/* ua_osi_address to -1. */
/***************************************************************************/
int validate_bind_password (zmhs_ddl_appl_name_def *appl_name,
 zmhs_ddl_passw_def *passw_in,
 zmhs_ddl_ua_osi_address_def *ua_osi_address,
 bool *passw_valid)
{
 int sql_error;
 zmhs_ddl_passw_def password;
 zmhs_ddl_ua_osi_address_def osi_address;
 sql_error = 0;
 *passw_valid = FALSE;
 memcpy (mspwtabl_row.appl_name, appl_name, sizeof 
(zmhs_ddl_appl_name_def));
 memset (&password, BLANKS, sizeof (zmhs_ddl_passw_def));
 memset (&osi_address, BLANKS, sizeof (zmhs_ddl_ua_osi_address_def));
 memcpy (password.zstring, passw_in->zstring, passw_in->zlength);
 if (ua_osi_address->zpselector.zlength > 0)
 memcpy (osi_address.zpselector.zstring,
 ua_osi_address->zpselector.zstring,
 ua_osi_address->zpselector.zlength);
 if (ua_osi_address->zsselector.zlength > 0)
 memcpy (osi_address.zsselector.zstring,
 ua_osi_address->zsselector.zstring,
 ua_osi_address->zsselector.zlength);
 if (ua_osi_address->ztselector.zlength > 0)
 memcpy (osi_address.ztselector.zstring,
 ua_osi_address->ztselector.zstring,
 ua_osi_address->ztselector.zlength);
 if (ua_osi_address->znsap.zlength > 0)
 memcpy (osi_address.znsap.zstring,
 ua_osi_address->znsap.zstring,
 ua_osi_address->znsap.zlength);
 exec sql begin work;
 /* obtain the old values for the optional fields */
 exec sql
 select password,
 pselector,
 sselector,
 tselector,
 nsap
 into :mspwtabl_row.password,
 :mspwtabl_row.pselector,
 :mspwtabl_row.sselector,
 :mspwtabl_row.tselector,
 :mspwtabl_row.nsap
 from =mspwtabl
 where (appl_name = :mspwtabl_row.appl_name);
 *passw_valid = (sqlcode == 0);
 sql_error = (sqlcode == SQL_ROW_NOT_FOUND_ERROR) ? 0 : sqlcode;
 exec sql commit work;










