home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / vgserv45.zip / BASE / HPTWGS2 / include / fcwrecd.h < prev    next >
C/C++ Source or Header  |  2001-03-21  |  14KB  |  462 lines

  1. /*****************************************************************************/
  2. /*                                                                           */
  3. /*                           OCO SOURCE MATERIALS                            */
  4. /*                             IBM CONFIDENTIAL                              */
  5. /*                                    OR                                     */
  6. /*                        IBM CONFIDENTIAL RESTRICTED                        */
  7. /*            WHEN COMBINED WITH THE AGGREGATED OCO SOURCE MODULES           */
  8. /*                           FOR THIS PROGRAM PRODUCT                        */
  9. /*                                                                           */
  10. /*   VisualAge Generator Server for OS/2, AIX, HP-UX, SUN, Windows NT, and   */
  11. /*                      SCO OpenServer  -  Version 4.1                       */
  12. /*                    (C) COPYRIGHT IBM CORP. 1994, 2000                     */
  13. /*                                                                           */
  14. /*****************************************************************************/
  15. #ifndef FCWRECD_H
  16. #define FCWRECD_H
  17.  
  18. class Item;
  19. class NumItem;
  20. class RPCParm;
  21.  
  22. /*-------------------------------------------------------------------------*/
  23. /* Parent of item's (ie. base of record and table strutures)               */
  24. /*-------------------------------------------------------------------------*/
  25. class Parent
  26. {
  27.    friend class Item;
  28.    private:
  29.        LIST(Item*) LItems;
  30.        char*       dataPtr;
  31.        Bool        bAllocated;
  32.        long        size;
  33.        void*       pData;
  34.  
  35.    protected:
  36.                    Parent(long);
  37.       virtual      ~Parent();
  38.       void         SetOccurs(int);
  39.       void         Add(Item*);
  40.       void         SetupRpc(LIST(RPCParm*)&, int&, int, Item*, Item*);
  41.  
  42.    public:
  43.       void         Setup (void* b=NULL);
  44.       void         SetEmpty();
  45.       void         SetClear();
  46.  
  47.       char*        Data();
  48.       void         SetData(void*);
  49.       long         Size();
  50.       void         SetSize(long);
  51.       void         ConvertData( char, FILE* );
  52.       Item*        GetItem(int);
  53.       long         GetNumItems();
  54. };
  55.  
  56.  
  57. /*-------------------------------------------------------------------------*/
  58. /*  Record class definition -- base class for all record types             */
  59. /*-------------------------------------------------------------------------*/
  60. class Record : public Parameter, public Parent
  61. {
  62.   private:
  63.     int            numberOfRPCEntries;
  64.     LIST(RPCParm*) LRPCParm;                           /* List of RPC Parms*/
  65.     void*          pData;
  66.  
  67.   protected:
  68.     Record (long l);
  69.     virtual ~Record ();
  70.  
  71.   public:
  72.     void           Setup (void* b=NULL);
  73.  
  74.     long           ParmSize();
  75.     char*          ParmData();
  76.  
  77.     int&           fNumberOfRPCEntries();
  78.     LIST(RPCParm*)& RPCList();
  79.  
  80.     virtual void   SetupRpc();
  81.     virtual Item*  getRLI();
  82.     virtual Item*  getNOI();
  83.     virtual ItemType itemType() const { return tRECORD; };
  84. };
  85.  
  86. /*-------------------------------------------------------------------------*/
  87. /*  FileRecord class - base class for all file  records                    */
  88. /*-------------------------------------------------------------------------*/
  89. class File;
  90. class FileRecord : public Record
  91. {
  92.   protected:
  93.     FileRecord(long l, char* n);
  94.     FileRecord(long l, char* n, char* ft, char* rn);
  95.  
  96.     void      CalcRecordLength();    /* Calculate length of var length recs*/
  97.     void      SetRecOrg(char ro);
  98.     void      SetRecFormat(char rf);
  99.  
  100.     File&     file();
  101.     void      setRLI( NumItem* );
  102.     Bool      hasRLI();
  103.     NumItem&  RLI();
  104.     void      setNOI( NumItem* );
  105.     void      setFixedLength( long );
  106.     void      setOccursItemLength( long );
  107.     Bool      hasNOI() { return ( pNOI != NULL ); };
  108.  
  109.     File*     pfile;                   /* Pointer to associated file object*/
  110.  
  111.   private:
  112.  
  113.     FCWString fileName;
  114.     FCWString fileType;              /* File type (vsam, seq, tempmain, ..)*/
  115.     FCWString resName;                 /* Resource name                    */
  116.     char      recOrg;                 /* Record organization (serial, etc.)*/
  117.     char      recFormat;               /* Record format (fixed, variable)  */
  118.  
  119.     NumItem*  pRLI;                                   /* Record Length Item*/
  120.     NumItem*  pNOI;                                /* Number of Occurs Item*/
  121.     long      fixedLength;             /* Length of fixed-part of record   */
  122.     long      occursItemLength;        /* Length of the Occurs Item        */
  123.     void*     pData;
  124.  
  125.   public:
  126.     virtual   ~FileRecord();
  127.     void      Setup();
  128.  
  129.                                        /* General error checks             */
  130.     int Err();
  131.     int Hrd();
  132.  
  133.                                        /* Soft errors                      */
  134.     int Eof();
  135.     int Nrf();
  136.     int Lok();
  137.     int Dup();
  138.     int Unq();
  139.  
  140.                                        /* Hard errors                      */
  141.     int Ful();
  142.     int Fmt();
  143.     int Fnf();
  144.     int Fna();
  145.  
  146.                                        /* Compatibility  V2x               */
  147.     int Ded();
  148.  
  149.                                        /* operations                       */
  150.     void Close();
  151.     void ChkStatus(char* operation);
  152.  
  153.     void  EZEDEST(char* n);
  154.     void  EZEDEST( FCWString s );
  155.     char* EZEDEST();
  156.  
  157.     FCWString& Name()        ;
  158.     FCWString& Type()        ;
  159.     FCWString& ResourceName();
  160.     char    GetRecOrg()      ;
  161.     char   GetRecFormat()    ;
  162.  
  163.     Item*  getRLI();
  164.     Item*  getNOI();
  165.  
  166.     virtual Bool  isFileRecord() { return True; };
  167.     int           GetStatus();
  168.     void          SetStatus( int );
  169. };
  170.  
  171. /*-------------------------------------------------------------------------*/
  172. /*  SerialRecord class                                                     */
  173. /*-------------------------------------------------------------------------*/
  174. class SerialRecord : public FileRecord
  175. {
  176.   protected:
  177.     SerialRecord(long l, char* n);
  178.     SerialRecord(long l, char* n, char* ft, char* rn);
  179.     SerialRecord(long l, char* n, char* ft, char* rn, int replace);
  180.     virtual ~SerialRecord();
  181.  
  182.   public:
  183.  
  184.     void Add();
  185.     void Scan();
  186.     void Setup();
  187.     void Setup(void* r);
  188.  
  189.   private:
  190.     void*    pData;
  191. };
  192.  
  193. /*-------------------------------------------------------------------------*/
  194. /*  VarLenSerialRecord class                                               */
  195. /*-------------------------------------------------------------------------*/
  196. class VarLenSerialRecord : public SerialRecord
  197. {
  198.   protected:
  199.     VarLenSerialRecord(long l, char* n);
  200.     VarLenSerialRecord(long l, char* n, char* ft, char* rn);
  201.     virtual ~VarLenSerialRecord();
  202.  
  203.   public:
  204.     void Add();
  205.     void Scan();
  206.     void Setup(void* r);
  207.     void Setup(NumItem*, NumItem*, long, long);
  208.  
  209.   private:
  210.     void*    pData;
  211. };
  212.  
  213. /*-------------------------------------------------------------------------*/
  214. /*  IndexedRecord class                                                    */
  215. /*-------------------------------------------------------------------------*/
  216. class IndexedRecord : public FileRecord
  217. {
  218.   protected:
  219.     IndexedRecord(long l, char* n, long ko, long kl);
  220.     IndexedRecord(long l, char* n, long ko, long kl, char* ft, char* rn);
  221.     virtual ~IndexedRecord();
  222.  
  223.     long keyLength;
  224.     long keyOffSet;
  225.  
  226.   public:
  227.  
  228.     void Add();
  229.     void Delete();
  230.     void Inquiry();
  231.     void Replace();
  232.     void Scan();
  233.     void ScanBack();
  234.     void SetScan();
  235.     void Update();
  236.     void Setup();
  237.     void Setup(void* r);
  238.  
  239.   private:
  240.     void*    pData;
  241. };
  242.  
  243. /*-------------------------------------------------------------------------*/
  244. /*  VarLenIndexedRecord class                                              */
  245. /*-------------------------------------------------------------------------*/
  246. class VarLenIndexedRecord : public IndexedRecord
  247. {
  248.   protected:
  249.     VarLenIndexedRecord(long l, char* n, long ko, long kl);
  250.     VarLenIndexedRecord(long l, char* n, long ko, long kl, char* ft, char* rn);
  251.     virtual ~VarLenIndexedRecord();
  252.  
  253.   public:
  254.     void Add();
  255.     void Inquiry();
  256.     void Replace();
  257.     void Scan();
  258.     void ScanBack();
  259.     void Update();
  260.  
  261.     void Setup(void* r);
  262.     void Setup(NumItem*, NumItem*, long, long);
  263.  
  264.   private:
  265.     void*    pData;
  266. };
  267.  
  268. /*-------------------------------------------------------------------------*/
  269. /*  RelativeRecord class                                                   */
  270. /*-------------------------------------------------------------------------*/
  271. class RelativeRecord : public FileRecord
  272. {
  273.   protected:
  274.     RelativeRecord(long l, char* n);
  275.     RelativeRecord(long l, char* n, char* ft, char* rn);
  276.     virtual ~RelativeRecord();
  277.  
  278.     NumItem* pRII;                  /* Record Id Item (relative record num)*/
  279.     long relRecNum;
  280.  
  281.   public:
  282.  
  283.     void Add();
  284.     void Delete();
  285.     void Inquiry();
  286.     void Replace();
  287.     void Scan();
  288.     void Update();
  289.     void Setup(void* r);
  290.     void Setup(NumItem*);
  291.  
  292.   private:
  293.     void*    pData;
  294. };
  295.  
  296. /*-------------------------------------------------------------------------*/
  297. /*  MsgRecord class                                                        */
  298. /*-------------------------------------------------------------------------*/
  299.  
  300. #define OPT_INCMSG    0x00000001
  301. #define OPT_OPENEXC   0x00000002
  302.  
  303. class MsgRecord : public FileRecord
  304. {
  305.   protected:
  306.     MsgRecord( long l, char* n );
  307.     MsgRecord( long l, char* n, char* ft, char* rn );
  308.     virtual ~MsgRecord();
  309.  
  310.   public:
  311.  
  312.     void    Add();
  313.     void    Scan();
  314.  
  315.     void    BuildDescriptor();
  316.     void    EZEDEST(char*);
  317.     void    EZEDEST( FCWString s );
  318.     char*   EZEDEST();
  319.     char*   GetDescriptor()   { return pDescriptor; };
  320.     char*   GetConTableAddr() { return pConTable; };
  321.     Record* GetMQODAddr()     { return pMQOD; };
  322.     Record* GetMQOPTAddr()    { return pMQOPT; };
  323.     Record* GetMQMDAddr()     { return pMQMD; };
  324.     Record* GetMQGMOAddr()    { return pMQGMO; };
  325.     Record* GetMQPMOAddr()    { return pMQPMO; };
  326.     long    GetMQOpts()       { return options; };
  327.  
  328.     void    SetConTableAddr(char* pCT)   { pConTable = pCT; };
  329.     void    SetMQODAddr(Record* pMQod)   { pMQOD = pMQod; };
  330.     void    SetMQOPTAddr(Record* pMQopt) { pMQOPT = pMQopt; };
  331.     void    SetMQMDAddr(Record* pMQmd)   { pMQMD = pMQmd; };
  332.     void    SetMQGMOAddr(Record* pMQgmo) { pMQGMO = pMQgmo; };
  333.     void    SetMQPMOAddr(Record* pMQpmo) { pMQPMO = pMQpmo; };
  334.     void    SetMQOpts(long opts)         { options = opts; };
  335.  
  336.     void    Setup();
  337.     void    Setup( void* r );
  338.     void    Setup( Record* pMQod, Record* pMQopt, Record* pMQmd, Record* pMQgmo,
  339.                 Record* pMQpmo, long options );
  340.     void    Setup( Record* pMQod, Record* pMQopt, Record* pMQmd, Record* pMQgmo,
  341.                 Record* pMQpmo, char* pCT ,long options );
  342.  
  343.   private:
  344.     long     options;
  345.     Record*  pMQOPT;
  346.     Record*  pMQOD;
  347.     Record*  pMQMD;
  348.     Record*  pMQGMO;
  349.     Record*  pMQPMO;
  350.     char*    pConTable;
  351.  
  352.     CMDESC*  pDescriptor;
  353.     void*    pData;
  354. };
  355.  
  356. /*-------------------------------------------------------------------------*/
  357. /*  VarLenMsgRecord class                                                  */
  358. /*-------------------------------------------------------------------------*/
  359. class VarLenMsgRecord : public MsgRecord
  360. {
  361.   protected:
  362.     VarLenMsgRecord(long l, char* n);
  363.     VarLenMsgRecord(long l, char* n, char* ft, char* rn);
  364.     virtual ~VarLenMsgRecord();
  365.  
  366.   public:
  367.     void Add();
  368.     void Scan();
  369.  
  370.     void Setup(void* r);
  371.     void Setup(NumItem* pRLI, NumItem* pNOI, long fl, long oil,
  372.                 Record* pMQod, Record* pMQopt, Record* pMQmd, Record* pMQgmo,
  373.                 Record* pMQpmo, long options );
  374.     void Setup(NumItem* pRLI, NumItem* pNOI, long fl, long oil,
  375.                 Record* pMQod, Record* pMQopt, Record* pMQmd, Record* pMQgmo,
  376.                 Record* pMQpmo, char* pConTable, long options );
  377.  
  378.  
  379.   private:
  380.     void*    pData;
  381. };
  382.  
  383. /*-------------------------------------------------------------------------*/
  384. /*  Working Storage record class                                           */
  385. /*-------------------------------------------------------------------------*/
  386. class WSRecord : public Record
  387. {
  388.   protected:
  389.     WSRecord (long l);
  390.     virtual ~WSRecord();
  391.  
  392.   public:
  393.     void LocalSetup();
  394.     void Retrieve();
  395.  
  396.   private:
  397.     void*    pData;
  398. };
  399.  
  400.  
  401. /*-------------------------------------------------------------------------*/
  402. /*  Redefined Record class                                                 */
  403. /*-------------------------------------------------------------------------*/
  404. class RedefinedRecord : public WSRecord
  405. {
  406.   protected:
  407.     RedefinedRecord (long l);
  408.     virtual ~RedefinedRecord();
  409.  
  410.   public:
  411.     void Setup( Record& );
  412.     void Setup( void* );
  413.  
  414.   private:
  415.     void*    pData;
  416. };
  417.  
  418. /*-------------------------------------------------------------------------*/
  419. /*  Class definition for application and SQL EZEwords                      */
  420. /*-------------------------------------------------------------------------*/
  421. struct recEZEWORDS : public WSRecord
  422. {
  423.   public:
  424.     recEZEWORDS(int);
  425.     virtual ~recEZEWORDS();
  426.  
  427.   private:
  428.     void*    pData;
  429. };
  430.  
  431. struct  recEZESQL : public WSRecord
  432. {
  433.   public:
  434.     recEZESQL(int);
  435.     virtual ~recEZESQL();
  436.  
  437.   private:
  438.     void*    pData;
  439. };
  440.  
  441. /*-------------------------------------------------------------------------*/
  442. /*  Class definition for application and SQL EZEwords                      */
  443. /*-------------------------------------------------------------------------*/
  444. #define LENGTH_EZEDLPSB_NAME      8
  445. #define LENGTH_EZEDLPSB_ADDRESS   4
  446. #define LENGTH_EZEDLPSB_RECORD   LENGTH_EZEDLPSB_NAME + LENGTH_EZEDLPSB_ADDRESS
  447.  
  448. class  recEZEDLPSB : public WSRecord
  449. {
  450.   public:
  451.      recEZEDLPSB(long l);
  452.      virtual ~recEZEDLPSB();
  453.      void Setup( void* p = NULL );
  454.      void SetupRpc();
  455.      virtual ItemType  itemType() const { return tEZEDLPSB; };
  456.  
  457.   private:
  458.     void*    pData;
  459. };
  460.  
  461. #endif
  462.