home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / vgserv45.zip / BASE / HPTWGS2 / include / fcwapp.h next >
C/C++ Source or Header  |  2001-03-21  |  28KB  |  636 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, and Windows NT      */
  11. /*                          Version 3.0  5697-C28                            */
  12. /*                    (C) COPYRIGHT IBM CORP. 1994,1998                      */
  13. /*                                                                           */
  14. /*****************************************************************************/
  15. /*****************************************************************************/
  16. /*      Date      Userid          Description of problem                     */
  17. /*                                                                           */
  18. /*    00/00/00   Biega       PQ01683 - Support LUWCONTROL=CLIENT             */
  19. /*    08/14/98   Proffer     PQ18456 - Fix EZECNVCM in called apps           */
  20. /*    04/09/99   Proffer     D10254  - Back out APAR PQ18456                 */
  21. /*    13/09/99   Lui         F12279  - new function prototype for EZECONCT   */
  22. /*                                                                           */
  23. /*****************************************************************************/
  24.  
  25. #ifndef FCWAPP_H
  26. #define FCWAPP_H
  27.  
  28. /*-------------------------------------------------------------------------*/
  29. /*  Class definition for EZEAID                                            */
  30. /*-------------------------------------------------------------------------*/
  31. class AID
  32. {
  33.    private:
  34.       Bool          isBypass;
  35.       Key::enum_Key key;
  36.       Bool          isHelpKey;
  37.  
  38.    public:
  39.       AID() { isBypass = isHelpKey = False; key = Key::ENTER; }
  40.  
  41.       void  operator = (int& v) { int x = v; key = Key::enum_Key(x); isBypass = False; }
  42.       void  operator = (Key::enum_Key v) { key = v; isBypass = False; }
  43.       void  SetBypass  (Bool v) { isBypass = v; }
  44.       void  SetHelpKey (Bool v) { isHelpKey = v; }
  45.  
  46.       Bool  IsEnter()  const { return (key == Key::ENTER); }
  47.       Bool  IsBypass() const { return isBypass; }
  48.       Bool  IsHelpKey()const { return isHelpKey; }
  49.       Bool  IsPF()     const;
  50.       Bool  IsPF1()    const { return (key == Key::PF1); }
  51.       Bool  IsPF2()    const { return (key == Key::PF2); }
  52.       Bool  IsPF3()    const { return (key == Key::PF3); }
  53.       Bool  IsPF4()    const { return (key == Key::PF4); }
  54.       Bool  IsPF5()    const { return (key == Key::PF5); }
  55.       Bool  IsPF6()    const { return (key == Key::PF6); }
  56.       Bool  IsPF7()    const { return (key == Key::PF7); }
  57.       Bool  IsPF8()    const { return (key == Key::PF8); }
  58.       Bool  IsPF9()    const { return (key == Key::PF9); }
  59.       Bool  IsPF10()   const { return (key == Key::PF10); }
  60.       Bool  IsPF11()   const { return (key == Key::PF11); }
  61.       Bool  IsPF12()   const { return (key == Key::PF12); }
  62.       Bool  IsPF13()   const { return (key == Key::PF13); }
  63.       Bool  IsPF14()   const { return (key == Key::PF14); }
  64.       Bool  IsPF15()   const { return (key == Key::PF15); }
  65.       Bool  IsPF16()   const { return (key == Key::PF16); }
  66.       Bool  IsPF17()   const { return (key == Key::PF17); }
  67.       Bool  IsPF18()   const { return (key == Key::PF18); }
  68.       Bool  IsPF19()   const { return (key == Key::PF19); }
  69.       Bool  IsPF20()   const { return (key == Key::PF20); }
  70.       Bool  IsPF21()   const { return (key == Key::PF21); }
  71.       Bool  IsPF22()   const { return (key == Key::PF22); }
  72.       Bool  IsPF23()   const { return (key == Key::PF23); }
  73.       Bool  IsPF24()   const { return (key == Key::PF24); }
  74.       Bool  IsPA1()    const { return (key == Key::PA1); }
  75.       Bool  IsPA2()    const { return (key == Key::PA2); }
  76.       Bool  IsPA3()    const { return (key == Key::PA3); }
  77.       Bool  IsPA()     const { return (IsPA1() || IsPA2() || IsPA3()); }
  78.       Bool  IsCLEAR()  const { return (key == Key::CLEAR); }
  79. };
  80.  
  81. class InEdit
  82. {
  83.    public:
  84.       enum values
  85.       {
  86.          All    = 1,
  87.          InOnly = 2
  88.       };
  89. };
  90.  
  91. /*-------------------------------------------------------------------------*/
  92. /*  forward references                                                     */
  93. /*-------------------------------------------------------------------------*/
  94. class MapGroup;
  95. class DataStream;
  96. class eMap;
  97. class Table;
  98. class MessageTable;
  99. class Map;
  100. struct ErrInfo;
  101.  
  102. /*-------------------------------------------------------------------------*/
  103. /*  global function prototypes                                             */
  104. /*-------------------------------------------------------------------------*/
  105. Bool  CheckNum (char*, int);
  106. int   Modulo10 (char*, int);
  107. int   Modulo11 (char*, int);
  108.  
  109. /*-------------------------------------------------------------------------*/
  110. /*  EZEword defines                                                        */
  111. /*-------------------------------------------------------------------------*/
  112. #define LENGTH_EZEAPP            8
  113. #define LENGTH_EZECONVT          8
  114. #define LENGTH_EZEDAY            5
  115. #define LENGTH_EZEDAYL           7
  116. #define LENGTH_EZEDAYLC          8
  117. #define LENGTH_EZEDTE            6
  118. #define LENGTH_EZEDTEL           8
  119. #define LENGTH_EZEDTELC          10
  120. #define LENGTH_EZEFEC            1
  121. #define LENGTH_EZELOC            8
  122. #define LENGTH_EZELTERM          8
  123. #define LENGTH_EZEMNO            2
  124. #define LENGTH_EZEOVER           1
  125. #define LENGTH_EZEOVERS          1
  126. #define LENGTH_EZERCODE          4
  127. #define LENGTH_EZERT2            2
  128. #define LENGTH_EZERT8            8
  129. #define LENGTH_EZESEGM           1
  130. #define LENGTH_EZESEGTR          8
  131. #define LENGTH_EZESYS            8
  132. #define LENGTH_EZETIM            8
  133. #define LENGTH_EZETST            2
  134. #define LENGTH_EZEUSR            8
  135. #define LENGTH_EZEUSRID          8
  136. #define LENGTH_EZECNVCM          1
  137. #define LENGTH_EZEDESTP          65
  138. #define LENGTH_EZESQISL          1
  139.  
  140. #define LENGTH_APP_EZEWORDS  LENGTH_EZEAPP   + LENGTH_EZECONVT +   \
  141.                              LENGTH_EZEDAY   + LENGTH_EZEDAYL  +   \
  142.                              LENGTH_EZEDAYLC + LENGTH_EZEDTE   +   \
  143.                              LENGTH_EZEDTEL  + LENGTH_EZEDTELC +   \
  144.                              LENGTH_EZEFEC   + LENGTH_EZELOC   +   \
  145.                              LENGTH_EZELTERM + LENGTH_EZEMNO   +   \
  146.                              LENGTH_EZEOVER  + LENGTH_EZEOVERS +   \
  147.                              LENGTH_EZERCODE + LENGTH_EZERT2   +   \
  148.                              LENGTH_EZERT8   + LENGTH_EZESEGM  +   \
  149.                              LENGTH_EZESEGTR + LENGTH_EZESYS   +   \
  150.                              LENGTH_EZETIM   + LENGTH_EZETST   +   \
  151.                              LENGTH_EZEUSR   + LENGTH_EZEUSRID +   \
  152.                              LENGTH_EZECNVCM + LENGTH_EZEDESTP +   \
  153.                              LENGTH_EZESQISL
  154.  
  155. #define OFFSET_EZEAPP      0
  156. #define OFFSET_EZECONVT    OFFSET_EZEAPP   + LENGTH_EZEAPP
  157. #define OFFSET_EZEDAY      OFFSET_EZECONVT + LENGTH_EZECONVT
  158. #define OFFSET_EZEDAYL     OFFSET_EZEDAY   + LENGTH_EZEDAY
  159. #define OFFSET_EZEDAYLC    OFFSET_EZEDAYL  + LENGTH_EZEDAYL
  160. #define OFFSET_EZEDTE      OFFSET_EZEDAYLC + LENGTH_EZEDAYLC
  161. #define OFFSET_EZEDTEL     OFFSET_EZEDTE   + LENGTH_EZEDTE
  162. #define OFFSET_EZEDTELC    OFFSET_EZEDTEL  + LENGTH_EZEDTEL
  163. #define OFFSET_EZEFEC      OFFSET_EZEDTELC + LENGTH_EZEDTELC
  164. #define OFFSET_EZELOC      OFFSET_EZEFEC   + LENGTH_EZEFEC
  165. #define OFFSET_EZELTERM    OFFSET_EZELOC   + LENGTH_EZELOC
  166. #define OFFSET_EZEMNO      OFFSET_EZELTERM + LENGTH_EZELTERM
  167. #define OFFSET_EZEOVER     OFFSET_EZEMNO   + LENGTH_EZEMNO
  168. #define OFFSET_EZEOVERS    OFFSET_EZEOVER  + LENGTH_EZEOVER
  169. #define OFFSET_EZERCODE    OFFSET_EZEOVERS + LENGTH_EZEOVERS
  170. #define OFFSET_TEMP        81        /* HP aC++ compiler can't handle depth*/
  171. #define OFFSET_EZERT2      OFFSET_TEMP     + LENGTH_EZERCODE
  172. #define OFFSET_EZERT8      OFFSET_EZERT2   + LENGTH_EZERT2
  173. #define OFFSET_EZESEGM     OFFSET_EZERT8   + LENGTH_EZERT8
  174. #define OFFSET_EZESEGTR    OFFSET_EZESEGM  + LENGTH_EZESEGM
  175. #define OFFSET_EZESYS      OFFSET_EZESEGTR + LENGTH_EZESEGTR
  176. #define OFFSET_EZETIM      OFFSET_EZESYS   + LENGTH_EZESYS
  177. #define OFFSET_EZETST      OFFSET_EZETIM   + LENGTH_EZETIM
  178. #define OFFSET_EZEUSR      OFFSET_EZETST   + LENGTH_EZETST
  179. #define OFFSET_EZEUSRID    OFFSET_EZEUSR   + LENGTH_EZEUSR
  180. #define OFFSET_EZECNVCM    OFFSET_EZEUSRID + LENGTH_EZEUSRID
  181. #define OFFSET_EZEDESTP    OFFSET_EZECNVCM + LENGTH_EZECNVCM
  182. #define OFFSET_EZESQISL    OFFSET_EZEDESTP + LENGTH_EZEDESTP
  183.  
  184. enum SegmentedState { Segmented, NonSegmented };
  185. enum Mode { cm_normalFlow, cm_ezeFlow, cm_Goto, cm_End };
  186. enum qType { MAIN, AUX };
  187.  
  188. /**************************************************************************/
  189. /*        Temporary fix for empty record for Generator                    */
  190. /**************************************************************************/
  191. struct recFCWEmpty : WSRecord
  192. {
  193.     recFCWEmpty() : WSRecord(0) {}
  194. };
  195.  
  196. /*-------------------------------------------------------------------------*/
  197. /*  FCWApp Extension class definition                                      */
  198. /*-------------------------------------------------------------------------*/
  199. class FCWAppExt
  200. {
  201.   private:
  202.  
  203.   public:
  204.     FCWAppExt();
  205.     ~FCWAppExt();
  206.  
  207.     NUM    ezereply;
  208.  
  209. };
  210.  
  211. /*-------------------------------------------------------------------------*/
  212. /*  FCWApp class definition - base application class                       */
  213. /*-------------------------------------------------------------------------*/
  214. class FCWApp
  215. {
  216.   private:
  217.     FCWString         app_name;
  218.  
  219.     FCWString         app_MapGroupName;
  220.     FCWString         app_HelpGroupName;
  221.     ByPassKeys        app_ByPassKeys;
  222.     Key::enum_Key     app_HelpKey;
  223.     InEdit::values    app_InEditOption;
  224.  
  225.     MapGroup*         app_pMapGroup;
  226.     MapGroup*         app_pHelpGroup;
  227.  
  228.     FCWString         app_lastMapName;
  229.     FCWString         app_lastGroupName;
  230.     FCWString         app_message;
  231.  
  232.     SegmentedState    app_DefaultSegm;
  233.  
  234.     Bool              app_refresh;
  235.  
  236.     LIST(Table*)      list_pTables;
  237.     LIST(DataStream*) list_pConstants;
  238.     LIST(DataStream*) list_pDataStream;
  239.     LIST(eMap*)       list_fixed_peMap;
  240.     LIST(eMap*)       list_float_peMap;
  241.  
  242.     STACK (char*)     PrcStack;
  243.     void*             pData;
  244.     FCWString         app_DefaultSegtr;
  245.     WSRecord*         app_primaryWS;
  246.     void*             pEIB;
  247.     void*             pCommarea;
  248.     Bool              bHasFirstMap;
  249.  
  250.   protected:
  251.     Mode CtlMode;
  252.  
  253.     recEZESQL EZESQL;                  /* App level SQLCA struct:          */
  254.       HEX     EZESQLCA;                /* 136     bytes                    */
  255.       BIN4    EZESQCOD;                /* 4     bytes                      */
  256.       BIN4    EZESQRD3;                /* 4     bytes                      */
  257.       CHA     EZESQRRM;                /* 70     bytes                     */
  258.       CHA     EZESQWN1;                /* 1     byte                       */
  259.       CHA     EZESQWN6;                /* 1     byte                       */
  260.       CHA     EZESQSTA;                /* 5     byte    :SQLSTATE    *ODBC**/
  261.  
  262.     FCWApp ( char* ,
  263.              char* MapGroupName,
  264.              char* HelpGroupName,
  265.              ByPassKeys BypassKeys,
  266.              Key::enum_Key HelpKey,
  267.              char* destp,
  268.              InEdit::values ineditopt,
  269.              SegmentedState segmented,
  270.              char* segtr );
  271.     virtual ~FCWApp ();
  272.  
  273.   public:
  274.     recFCWEmpty FCWEmptyRecord;        /* Temporary fix                    */
  275.     recEZEWORDS EZEWORDS;              /* App level EZEWORDS               */
  276.       CHA     EZEAPP;                  /* 8 bytes                          */
  277.       CHA     EZECONVT;                /* 8 bytes                          */
  278.       NUM     EZEday;                  /* 5 bytes                          */
  279.       NUM     EZEdayl;                 /* 7 bytes                          */
  280.       CHA     EZEdaylc;                /* 8 bytes                          */
  281.       NUM     EZEdte;                  /* 6 bytes                          */
  282.       NUM     EZEdtel;                 /* 8 bytes                          */
  283.       CHA     EZEdtelc;                /* 10 bytes                         */
  284.       NUM     EZEFEC;                  /* 1 byte                           */
  285.       CHA     EZELOC;                  /* 8 bytes                          */
  286.       CHA     EZELTERM;                /* 8 bytes                          */
  287.       BIN2    EZEMNO;                  /* 2 bytes                          */
  288.       NUM     EZEOVER;                 /* 1 byte                           */
  289.       NUM     EZEOVERS;                /* 1 byte                           */
  290.       BIN4    EZERCODE;                /* 4 bytes                          */
  291.       CHA     EZERT2;                  /* 2 bytes                          */
  292.       CHA     EZERT8;                          //   8 bytes
  293.       NUM     EZESEGM;                         //   1 byte
  294.       CHA     EZESEGTR;                        //   8 bytes
  295.       CHA     EZESYS;                          //   8 bytes
  296.       CHA     EZEtim;                          //   8 bytes
  297.       BIN2    EZETST;                          //   2 bytes
  298.       CHA     EZEUSR;                          //   8 bytes
  299.       CHA     EZEUSRID;                        //   8 bytes
  300.       NUM     EZECNVCM;                        //   1 bytes
  301.       CHA     EZEDESTP;                        //  65 bytes
  302.       NUM     EZESQISL;                        //   1 byte
  303.  
  304.     recEZEDLPSB  EZEDLPSB;
  305.       CHA     EZEDLPSBItem;
  306.       HEX     EZEDLPSBAddr;
  307.  
  308.     FCWString&            Name();
  309.  
  310.     AID                   EZEAID;
  311.     FCWString&            MapGroupName();
  312.     MapGroup*             pMapGroup();
  313.     FCWString&            HelpGroupName();
  314.     MapGroup*             pHelpGroup();
  315.     ByPassKeys const&     BypassKeys();
  316.     Key::enum_Key         HelpKey();
  317.  
  318.     Bool                  refresh();
  319.     void                  setRefresh(Bool v = True);
  320.     LIST(DataStream*)&    bufferList();
  321.     LIST(DataStream*)&    bufferChain();
  322.     LIST(eMap*)&          fixedMapChain();
  323.     LIST(eMap*)&          floatMapChain();
  324.     InEdit::values        InEditOpt();
  325.  
  326.     FCWString const&      getMessage();
  327.     void                  setMessage(FCWString const& msg);
  328.     void                  setLastMapConversed( FCWString const&, FCWString const&);
  329.     Bool                  isLastMapConversed( FCWString const&, FCWString const&);
  330.  
  331.     Table*                find(FCWString const &);
  332.     void                  Register(Table*);
  333.     void                  RetrieveMsg( int, char*, int );
  334.  
  335.     void                  CALL (char*, int, ...);
  336.     void                  CALL (char*, char*, char*, int, ...);
  337.     int                   CALLR (char*, CMCOD*, int, ...);
  338.     int                   CALLR (char*, char*, char*, CMCOD*, int, ...);
  339.     void                  checkCALLRReturnCode(const ErrInfo&);
  340.     void                  CREATX (int options, Record& recd);
  341.     void                  CREATX (FCWCICSLinkage* , int , Record& , Item*);
  342.     void                  CREATX (FCWCICSLinkage* , int , Record& );
  343.     void                  SetEZETST( int );
  344.     void                  EZEWAIT( const quadnum& );
  345.     CHA&                  EZETIM ();
  346.     void                  EZEPURGE( char* );
  347.     void                  EZEPURGE( const FCWString& s );
  348.     int                   EZEC10( CHA, BIN2 );
  349.     int                   EZEC11( CHA, BIN2 );
  350.     int                   EZEG10( CHA&, BIN2 );
  351.     int                   EZEG11( CHA&, BIN2 );
  352.     NUM&                  EZEDAY();
  353.     NUM&                  EZEDAYL();
  354.     CHA&                  EZEDAYLC();
  355.     NUM&                  EZEDTE();
  356.     NUM&                  EZEDTEL();
  357.     CHA&                  EZEDTELC();
  358.     int                   EZECOMIT( int options = OPT_NOREPLY );    /* DUOW*/
  359.     int                   EZEROLLB( int options = OPT_NOREPLY );    /* DUOW*/
  360.     void                  EZECONV( Parameter&, char, char*, int opt = 0 );     /* V2.0 CICS*/
  361.     void                  EZECONV( Parameter& p, char c, FCWString s, int opt = 0 );
  362.     void*                 GetSQLCA();
  363.     void                  EZECONCT( ChaItem&, ChaItem&, ChaItem&,
  364.                                     ChaItem&, ChaItem&, FCWString="R" );/* DUOW*/
  365.     void                  EZECONCT( ChaItem&, ChaItem&, ChaItem&, FCWString="R" ); /*12279*/
  366.  
  367.     void                  ResetEzeWords();
  368.     void                  ReleaseTables();
  369.  
  370.     void                  PrcPush( char* );
  371.     void                  PrcPop();
  372.     char*                 PrcPeek();
  373.  
  374.     Bool                  isNative();
  375.     Bool                  isCalledApp();
  376.  
  377.     int                   GetRCode();  /* return EZERCODE to caller        */
  378.     Mode                  GetCtlMode();
  379.  
  380.     void                  Init( InitKey k, InitValue v );         // ODBC
  381.  
  382.     virtual void          Start() = 0;
  383.     virtual MessageTable* MsgTable();
  384.     virtual Bool          isCICS();
  385.     virtual Bool          isMainApp();
  386.             void*         GetCommarea();
  387.             void*         GetEIB();
  388.             void          SetCommarea( void* );
  389.             void          SetEIB( void* );
  390.  
  391.     // Psuedo-Conversational interface.
  392.     virtual void          SegmentOut( segType t=segmented_Converse ) {};
  393.     virtual void          SegmentIn()              {};
  394.     virtual long          traceBackGet()           { return 0; };
  395.     virtual void          traceBackPush( long )    {};
  396.     virtual void          traceBackPop( )          {};
  397.     virtual void          clearTraceback( )        {};
  398.     virtual void          doFirstMap( Map* )       {};
  399.     virtual qType         WorkDB();
  400.             void          ResetEZESEGM();
  401.             Bool          IsInInitialization();
  402.             void          primaryWS( WSRecord* );
  403.             WSRecord*     primaryWS();
  404.             Bool          hasFirstMap();
  405.             void          hasFirstMap( Bool );
  406.  
  407.             void          SetCurrency(FCWString curSym);
  408.  
  409.             NUM&          EZEReply();
  410.             void          EZEUIERR( Item* fie, ... );
  411.             void          ModulusCheck( Item&, Bool );
  412.             void          SetWebTransEZEWords();
  413. };
  414.  
  415. inline
  416. void  FCWApp :: EZEPURGE( const FCWString& s )
  417. {
  418.    EZEPURGE( (char*)s );
  419. }
  420.  
  421. inline
  422. void  FCWApp :: EZECONV( Parameter& p, char c, FCWString s, int opt )
  423. {
  424.    EZECONV( p, c, (char*)s, opt );
  425. }
  426.  
  427. /*-------------------------------------------------------------------------*/
  428. /*  FCWMainApp class definition                                            */
  429. /*-------------------------------------------------------------------------*/
  430. class FCWMainApp : public FCWApp
  431. {
  432.   protected:
  433. #if defined FCW_HP
  434.     FCWMainApp ( char* name ,
  435.                  char* MapGroupName,
  436.                  char* HelpGroupName,
  437.                  ByPassKeys BypassKeys,
  438.                  Key::enum_Key HelpKey,
  439.                  char* destp,
  440.                  InEdit::values ineditopt,
  441.                  SegmentedState segmented);
  442. #else
  443.     FCWMainApp ( char* name ,
  444.                  char* MapGroupName       = NULL,
  445.                  char* HelpGroupName      = NULL,
  446.                  ByPassKeys BypassKeys    = ByPassKeys(),
  447.                  Key::enum_Key HelpKey    = Key::None,
  448.                  char* destp              = NULL,
  449.                  InEdit::values ineditopt = InEdit::All,
  450.                  SegmentedState segmented = NonSegmented);
  451. #endif
  452.     FCWMainApp ( char* name ,
  453.                  char* MapGroupName       ,
  454.                  char* HelpGroupName      ,
  455.                  ByPassKeys BypassKeys    ,
  456.                  Key::enum_Key HelpKey    ,
  457.                  char* destp              ,
  458.                  InEdit::values ineditopt ,
  459.                  SegmentedState segmented ,
  460.                  char* segtr              );
  461.     virtual ~FCWMainApp ();
  462.  
  463.   public:
  464.     void           DXFR (FCWString appname, int options);
  465.     void           DXFR (FCWString appname, int options, Record& recd);
  466.     void           XFER (FCWString appname, int options);
  467.     void           XFER (FCWString appname, int options, Record& recd);
  468.     void           XFER (FCWString appname, int options, Map& pMap);
  469.     void           XFER (FCWString appname, int options, Record& recd, Map& pMap);
  470.     void           XFER (FCWString appname, int options, UIRecord& pUIRec);
  471.     void           XFER (FCWString appname, int options, Record& recd, UIRecord& pUIRec);
  472.     virtual  Bool  isMainApp();
  473.  
  474.                                        /* Psuedo-Conversational interface. */
  475.     virtual void   SegmentOut( segType t=segmented_Converse );
  476.     virtual void   SegmentIn();
  477.     virtual long   traceBackGet();
  478.  
  479.   private:
  480.     void*             pData;
  481. };
  482.  
  483. /*-------------------------------------------------------------------------*/
  484. /*  FCWCICSMainApp class definition                                        */
  485. /*-------------------------------------------------------------------------*/
  486. class FCWCICSMainApp : public FCWMainApp
  487. {
  488.   protected:
  489. #if defined FCW_HP
  490.     FCWCICSMainApp ( char* name ,
  491.                      char* MapGroupName,
  492.                      char* HelpGroupName,
  493.                      ByPassKeys BypassKeys,
  494.                      Key::enum_Key HelpKey,
  495.                      char* destp,
  496.                      InEdit::values ineditopt,
  497.                      SegmentedState segmented);
  498. #else
  499.     FCWCICSMainApp ( char* name ,
  500.                      char* MapGroupName       = NULL,
  501.                      char* HelpGroupName      = NULL,
  502.                      ByPassKeys BypassKeys    = ByPassKeys(),
  503.                      Key::enum_Key HelpKey    = Key::None,
  504.                      char* destp              = NULL,
  505.                      InEdit::values ineditopt = InEdit::All,
  506.                      SegmentedState segmented = NonSegmented);
  507. #endif
  508.     FCWCICSMainApp ( char* name ,
  509.                      char* MapGroupName       ,
  510.                      char* HelpGroupName      ,
  511.                      ByPassKeys BypassKeys    ,
  512.                      Key::enum_Key HelpKey    ,
  513.                      char* destp              ,
  514.                      InEdit::values ineditopt ,
  515.                      SegmentedState segmented ,
  516.                      char* segtr              );
  517.     virtual ~FCWCICSMainApp ();
  518.  
  519.   private:
  520.     void*             pData;
  521.  
  522.                                        /* Psuedo-Conversational interface. */
  523.     STACK (long)      trbStack1;                                 /* Current*/
  524.     STACK (long)      trbStack2;                                 /* Restore*/
  525.  
  526.   public:
  527.  
  528.     void          DXFR (FCWString appname, int options);
  529.     void          DXFR (FCWString appname, int options, Record& recd);
  530.     void          XFER (FCWString appname, int options);
  531.     void          XFER (FCWString appname, int options, Record& recd);
  532.     void          XFER (FCWString appname, int options, Map& pMap);
  533.     void          XFER (FCWString appname, int options, Record& recd, Map& pMap);
  534.     void          XFER (FCWString appname, int options, UIRecord& pUIRec);
  535.     void          XFER (FCWString appname, int options, Record& recd, UIRecord& pUIRec);
  536.  
  537.     void*         GetParm( int, void*);
  538.     void          CALLCICS (char*, FCWCICSLinkage*, int, ...);
  539.  
  540.     virtual Bool  isCICS();
  541.     virtual Bool  isMainApp();
  542.  
  543.                                        /* Psuedo-Conversational interface. */
  544.     virtual void      SegmentOut( segType t=segmented_Converse );
  545.     virtual void      SegmentIn();
  546.     virtual long      traceBackGet();
  547.     virtual void      traceBackPush( long );
  548.     virtual void      traceBackPop( );
  549.     virtual void      clearTraceback( );
  550.     virtual void      doFirstMap( Map* );
  551.     virtual void      SaveWS()    {};
  552.     virtual void      RestoreWS() {};
  553.             void      GetCtlRecd();
  554.             void      Save( Parameter*, ... );
  555.             void      Restore( Parameter*, ... );
  556.             void      traceBackPush2( long );  /* needed for 1st UI        */
  557. };
  558.  
  559. /*-------------------------------------------------------------------------*/
  560. /*  FCWCalledApp class definition                                          */
  561. /*-------------------------------------------------------------------------*/
  562. class FCWCalledApp : public FCWApp
  563. {
  564.   protected:
  565. #if defined FCW_HP
  566.     FCWCalledApp( char* name ,
  567.                   char* MapGroupName,
  568.                   char* HelpGroupName,
  569.                   ByPassKeys BypassKeys,
  570.                   Key::enum_Key HelpKey,
  571.                   char* destp,
  572.                   InEdit::values ineditopt,
  573.                   SegmentedState segmented);
  574. #else
  575.     FCWCalledApp( char* name ,
  576.                   char* MapGroupName       = NULL,
  577.                   char* HelpGroupName      = NULL,
  578.                   ByPassKeys BypassKeys    = ByPassKeys(),
  579.                   Key::enum_Key HelpKey    = Key::None,
  580.                   char* destp              = NULL,
  581.                   InEdit::values ineditopt = InEdit::All,
  582.                   SegmentedState segmented = NonSegmented);
  583. #endif
  584.     virtual ~FCWCalledApp ();
  585.  
  586.     void VerifyParms(FCWCallBlock* cb, FCWCallBlock* cbVer);
  587.  
  588.     virtual void      SegmentOut( segType t=segmented_Converse );
  589.     virtual void      SegmentIn();
  590.  
  591.   private:
  592.     void*             pData;
  593. };
  594.  
  595. /*-------------------------------------------------------------------------*/
  596. /*  FCWCICSCalledApp class definition                                        */
  597. /*-------------------------------------------------------------------------*/
  598. class FCWCICSCalledApp : public FCWCalledApp
  599. {
  600.   protected:
  601. #if defined FCW_HP
  602.     FCWCICSCalledApp ( char* name ,
  603.                        char* MapGroupName,
  604.                        char* HelpGroupName,
  605.                        ByPassKeys BypassKeys,
  606.                        Key::enum_Key HelpKey,
  607.                        char* destp,
  608.                        InEdit::values ineditopt,
  609.                        SegmentedState segmented);
  610. #else
  611.     FCWCICSCalledApp ( char* name ,
  612.                        char* MapGroupName       = NULL,
  613.                        char* HelpGroupName      = NULL,
  614.                        ByPassKeys BypassKeys    = ByPassKeys(),
  615.                        Key::enum_Key HelpKey    = Key::None,
  616.                        char* destp              = NULL,
  617.                        InEdit::values ineditopt = InEdit::All,
  618.                        SegmentedState segmented = NonSegmented);
  619. #endif
  620.     virtual ~FCWCICSCalledApp ();
  621.  
  622.   private:
  623.     void*         pData;
  624.  
  625.   public:
  626.     void          Verify( int, void* );
  627.     void*         GetParm( int, void*);
  628.     void          CALLCICS (char*, FCWCICSLinkage*, int, ...);
  629.     void          SetErrorInCalledApp();                           /* PQ01683 */
  630.  
  631.     virtual Bool  isCICS();
  632. };
  633.  
  634.  
  635. #endif
  636.