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;