Category : C++ Source Code
Archive   : PXBEN.ZIP
Filename : PDXFLD.CPP
Output of file : PDXFLD.CPP contained in archive : PXBEN.ZIP
³ ³
³ Module: PDXFLD.CPP ³
³ Author: Rick Kligman ³
³ Purpose: Source code for Field class ³
³ ³
³ Last Modified: 05-17-91 00:34am ³
³ ³
³ Copyright 1991 Rick Kligman ³
³ This code may be freely used and distributed in commercial apps ³
³ provided some mention of PXBuddy++ is made in the documentation. ³
³ ³
³ Version 1.00 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ */
#include "pdxfld.h"
#ifndef __STDIO_H
#include
#endif
#include "pdxtbl.h"
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Constructor for absfld class º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
absfld::absfld()
{
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Destructor for absfld class º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
absfld::~absfld()
{
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Constructor for CharFld class º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
CharFld::CharFld()
{
size = 0;
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Destructor for CharFld class º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
CharFld::~CharFld()
{
if (size)
delete data;
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Initialize CHAR Field º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int CharFld::setinfo(pxtable& tblptr, char *fldname)
{
int err;
char fldtype [6]; // will hold len of field...A5, A23, A176 etc..
tblp = &tblptr;
err = PXFldHandle(tblp->th, fldname, &fh);
CKERR;
err = PXFldType(tblp->th, fh, 6, fldtype);
CKERR;
size = atoi(fldtype + 1) + 1; // get len of field plus NULL char
data = new char [size]; // allocate memory for var storage
if ( ! data )
return (PXERR_OUTOFMEM);
return PXSUCCESS;
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Read CHAR Field from record buffer º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int CharFld::get()
{
int blank;
int err;
err = PXFldBlank(tblp->rh, fh, &blank);
CKERR;
if (blank) // char field was blank
data [0] = NULL;
else
err = PXGetAlpha(tblp->rh, fh, size, data);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Overload = to put contents into class º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
void CharFld::operator = (char *newval)
{
strncpy(data, newval, size);
data [size - 1] = NULL; // terminate the string
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Write CHAR Field to record buffer º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int CharFld::put(int)
{
int err;
err = PXPutAlpha(tblp->rh, fh, data);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Search a CHAR Field º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int CharFld::search(char *srchvar, int mode)
{
int err;
RECORDHANDLE newrh;
err = PXRecBufOpen(tblp->th, &newrh);
CKERR;
err = PXRecBufEmpty(newrh);
CKERR;
err = PXPutAlpha(newrh, fh, srchvar);
if ( err ) {
PXRecBufClose(newrh);
return err;
}
err = search_fld(tblp->th, newrh, tblp->keyed, mode);
PXRecBufClose(newrh);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Constructor for ShortFld class º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ShortFld::ShortFld()
{
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Destructor for ShortFld class º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ShortFld::~ShortFld()
{
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Initialize SHORT Field º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int ShortFld::setinfo(pxtable &tblptr, char *fldname)
{
int err;
tblp = &tblptr;
err = PXFldHandle(tblp->th, fldname, &fh);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Read SHORT Field from record buffer º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int ShortFld::get()
{
int blank;
int err;
err = PXFldBlank(tblp->rh, fh, &blank);
CKERR;
if (blank) // short field was blank
data = 0;
else
err = PXGetShort(tblp->rh, fh, &data);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Write SHORT Field to record buffer º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int ShortFld::put(int blank)
{
int err;
if ( data == 0 && blank )
err = PXPutBlank(tblp->rh, fh);
else
err = PXPutShort(tblp->rh, fh, data);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Search a SHORT Field º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int ShortFld::search(short srchvar, int mode)
{
int err;
RECORDHANDLE newrh;
err = PXRecBufOpen(tblp->th, &newrh);
CKERR;
err = PXPutShort(newrh, fh, srchvar);
if ( err ) {
PXRecBufClose(newrh);
return err;
}
err = search_fld(tblp->th, newrh, tblp->keyed, mode);
PXRecBufClose(newrh);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Constructor for DblFld class º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
DblFld::DblFld()
{
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Destructor for DblFld class º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
DblFld::~DblFld()
{
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Initialize DOUBLE Field º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int DblFld::setinfo(pxtable &tblptr, char *fldname)
{
int err;
tblp = &tblptr;
err = PXFldHandle(tblp->th, fldname, &fh);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Read DOUBLE Field from record buffer º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int DblFld::get()
{
int blank;
int err;
err = PXFldBlank(tblp->rh, fh, &blank);
CKERR;
if (blank) // double field was blank
data = 0;
else
err = PXGetDoub(tblp->rh, fh, &data);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Write DOUBLE Field to record buffer º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int DblFld::put(int blank)
{
int err;
if ( data == 0 && blank )
err = PXPutBlank(tblp->rh, fh);
else
err = PXPutDoub(tblp->rh, fh, data);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Search a DOUBLE Field º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int DblFld::search(double srchvar, int mode)
{
int err;
RECORDHANDLE newrh;
err = PXRecBufOpen(tblp->th, &newrh);
CKERR;
err = PXPutDoub(newrh, fh, srchvar);
if ( err ) {
PXRecBufClose(newrh);
return err;
}
err = search_fld(tblp->th, newrh, tblp->keyed, mode);
PXRecBufClose(newrh);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Constructor for DateFld class º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
DateFld::DateFld()
{
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Destructor for DateFld class º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
DateFld::~DateFld()
{
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Initialize DATE Field º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int DateFld::setinfo(pxtable &tblptr, char *fldname)
{
int err;
tblp = &tblptr;
err = PXFldHandle(tblp->th, fldname, &fh);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Read DATE Field from record buffer º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int DateFld::get()
{
int blank;
int err;
int mo, da, yr;
err = PXFldBlank(tblp->rh, fh, &blank);
CKERR;
if (blank) { // date field was blank
strcpy(datastr, "");
}
else {
err = PXGetDate(tblp->rh, fh, &data);
CKERR;
PXDateDecode(data, &mo, &da, &yr);
yr -= 1900;
if ( yr < 0 ) // in case we get something we didn't expect!
yr = 0;
sprintf(datastr, "%.2i/%.2i/%.2i", mo, da, yr);
}
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Write DATE Field to record buffer º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int DateFld::put(int)
{
int err;
// if the date is blank it can be one of two things. If the user never
// enters the field then it will be NULL. If the user does go through
// the field and leaves it blank, Vermont converts the date to 00/00/00
if ( *datastr == NULL )
err = PXPutBlank(tblp->rh, fh);
else
err = PXPutDate(tblp->rh, fh, data);
return (err); // if no error then PXSUCCESS will be returned
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Search a DATE Field with CHAR String º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
#if 0
int DateFld::search(char *srchvar, int mode)
{
int err = -1;
RECORDHANDLE newrh;
err = PXRecBufOpen(tblp->th, &newrh);
CKERR;
err = PXPutDate(newrh, fh, srchvar);
if ( err ) {
PXRecBufClose(newrh);
return err;
}
err = search_fld(tblp->th, newrh, tblp->keyed, mode);
PXRecBufClose(newrh);
return (err); // if no error then PXSUCCESS will be returned
}
#endif
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Convert String to DATE º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int DateFld::operator = (char *newval)
{
int mo, da, yr, err;
char temp [3];
strncpy(datastr, newval, 11);
datastr [10] = NULL;
temp [0] = *newval;
temp [1] = *(newval + 1);
temp [2] = NULL;
mo = atoi(temp);
temp [0] = *(newval + 3);
temp [1] = *(newval + 4);
da = atoi(temp);
temp [0] = *(newval + 6);
temp [1] = *(newval + 7);
yr = atoi(temp);
err = PXDateEncode(mo, da, yr, &data);
return ( err );
}
// ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
// º Search a Field º
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
int absfld::search_fld(TABLEHANDLE th, RECORDHANDLE rh, int keyed, int mode)
{
int err;
if ( ! keyed ) // non keyed searches need to go to top of table
PXRecGoto(th, 1);
// extra if on CLOSESTRECORD is done because even if it finds something
// it will return RECNOTFOUND since it is an inexact match
if ( fh == 1 && keyed )
err = PXSrchKey(th, rh, fh, mode);
else
err = PXSrchFld(th, rh, fh, mode);
if (mode == CLOSESTRECORD && err == PXERR_RECNOTFOUND)
err = PXSUCCESS;
return (err); // if no error then PXSUCCESS will be returned
}
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/