<<最終企画「MSSReasoning」製作資料(その2)>>

ここに、MSS3View クラスで使用するメンバ変数の一覧を示します。

// MSS3View.h : ヘッダー ファイル
//

/////////////////////////////////////////////////////////////////////////////
// CMSS3View フォーム ビュー

#ifndef __AFXEXT_H__
#include <afxext.h>
#endif

class CMSS3View : public CFormView
{
protected:
 CMSS3View();           // 動的生成に使用されるプロテクト コンストラクタ。
 DECLARE_DYNCREATE(CMSS3View)

// フォーム データ
public:
 //{{AFX_DATA(CMSS3View)
 enum { IDD = IDD_MSS_FORM3 };
 CEdit m_ctrl_report;
 CString m_cfin1;
 CString m_analysis;
 CString m_report;
 //}}AFX_DATA

// アトリビュート
public:

// オペレーション
public:

// オーバーライド
 // ClassWizard は仮想関数のオーバーライドを生成します。
 //{{AFX_VIRTUAL(CMSS3View)
 protected:
 virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV サポート
 virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);
 //}}AFX_VIRTUAL

// インプリメンテーション
protected:
 virtual ~CMSS3View();
#ifdef _DEBUG
 virtual void AssertValid() const;
 virtual void Dump(CDumpContext& dc) const;
#endif

 // 生成されたメッセージ マップ関数
 //{{AFX_MSG(CMSS3View)
 afx_msg void OnUpdateEdit13();
 afx_msg void OnConsult();
 afx_msg void OnUpdateEdit14();
 afx_msg void OnExpertSystem();
 afx_msg void OnEditCopy();
 afx_msg void OnEditCut();
 afx_msg void OnEditPaste();
 afx_msg void OnEditUndo();
 afx_msg void OnSaveReport();
 //}}AFX_MSG
 DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio は前行の直前に追加の宣言を挿入します。

#endif // !defined(AFX_MSS3VIEW_H__C5294121_CC67_11D4_9C1E_00000E49332F__INCLUDED_)
 
 

// MSS3View.cpp : インプリメンテーション ファイル
//

#include "stdafx.h"
#include "mss.h"
#include "MSS2Doc.h"
#include "MSS3View.h"
#include "MSS3Doc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMSS3View

IMPLEMENT_DYNCREATE(CMSS3View, CFormView)

CMSS3View::CMSS3View()
 : CFormView(CMSS3View::IDD)
{
 //{{AFX_DATA_INIT(CMSS3View)
 m_cfin1 = _T("");
 m_analysis = _T("");
 m_report = _T("");
 //}}AFX_DATA_INIT
}
CString analysis_pro ;
int check_Edit13 = 0;

CMSS3View::~CMSS3View()
{
}

void CMSS3View::DoDataExchange(CDataExchange* pDX)
{
 CFormView::DoDataExchange(pDX);
 //{{AFX_DATA_MAP(CMSS3View)
 DDX_Control(pDX, IDC_EDIT15, m_ctrl_report);
 DDX_Text(pDX, IDC_EDIT13, m_cfin1);
 DDX_Text(pDX, IDC_EDIT14, m_analysis);
 DDX_Text(pDX, IDC_EDIT15, m_report);
 //}}AFX_DATA_MAP
}
 

BEGIN_MESSAGE_MAP(CMSS3View, CFormView)
 //{{AFX_MSG_MAP(CMSS3View)
 ON_EN_UPDATE(IDC_EDIT13, OnUpdateEdit13)
 ON_COMMAND(IDM_CONSULT, OnConsult)
 ON_EN_UPDATE(IDC_EDIT14, OnUpdateEdit14)
 ON_COMMAND(IDM_EXPERT_SYSTEM, OnExpertSystem)
 ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
 ON_COMMAND(ID_EDIT_CUT, OnEditCut)
 ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
 ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
 ON_COMMAND(IDM_SAVE_REPORT, OnSaveReport)
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMSS3View 診断

#ifdef _DEBUG
void CMSS3View::AssertValid() const
{
 CFormView::AssertValid();
}

void CMSS3View::Dump(CDumpContext& dc) const
{
 CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMSS3View メッセージ ハンドラ

void CMSS3View::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
 // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
 CMSS3Doc* myDoc = (CMSS3Doc*)GetDocument();
 m_report = myDoc->doc_report;

    UpdateData(FALSE);
    check_Edit13++;

 if  (check_Edit13 >= 2)
 {
  OnUpdateEdit13();
  OnUpdateEdit14();
    }

}

void CMSS3View::OnUpdateEdit13()
{
 // TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
 // 内での論理和の ENM_UPDATE フラグ付きで EM_SETEVENTMASK
 // メッセージをコントロールへ送るために CFormView::OnInitDialog() 関数をオーバー
 // ライドしない限りこの通知を送りません。

 // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
 m_cfin1 = CMSS2Doc::doc3_cfin1;
 UpdateData(FALSE);
}

void CMSS3View::OnConsult()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
        CString filename2 = _T("U:\\演習2\\Vcpp\\Bunseki.pro");
        CString filename1 = _T("U:\\演習2\\Vcpp\\Analysis.pro");
    CString buf2;

        char crlf[]="\x0d\x0a";
            int begin, end, length;
            int begin1, end1, length1;

    int flag=0;
        CString begin_mark = "/* cfin1_begin */";
    CString  end_mark = "/* cfin1_end noto */";

        CStdioFile fout(filename2, CFile::modeWrite);

        CStdioFile fin(filename1, CFile::modeRead);
    m_analysis="";
        analysis_pro="";

        while (fin.ReadString(buf2) != NULL){
                m_analysis +=  buf2 + crlf;
                analysis_pro +=  buf2 + "\n";
        }

        begin = m_analysis.Find(begin_mark);
        begin1 = analysis_pro.Find(begin_mark);

    end = m_analysis.Find(end_mark);
        end1 = analysis_pro.Find(end_mark);

        length = m_analysis.GetLength();
    length1 = analysis_pro.GetLength();

    m_analysis = m_analysis.Left(begin + 17)  + crlf +
                m_cfin1 + m_analysis.Right(length - end);

        analysis_pro = analysis_pro.Left(begin1 + 17) +  "\n" +
        CMSS2Doc::doc3_cfin1 + analysis_pro.Right(length1 - end1);

        fout.WriteString(analysis_pro);

        OnUpdateEdit14();
}
 
 

void CMSS3View::OnUpdateEdit14()
{
 // TODO: これが RICHEDIT コントロールの場合、コントロールは、 lParam マスク
 // 内での論理和の ENM_UPDATE フラグ付きで EM_SETEVENTMASK
 // メッセージをコントロールへ送るために CFormView::OnInitDialog() 関数をオーバー
 // ライドしない限りこの通知を送りません。

 // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

 UpdateData(FALSE);

}

void CMSS3View::OnExpertSystem()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
        HINSTANCE ret=ShellExecute(m_hWnd, "open",
"U:\\演習2\\Prolog\\Prolog.exe",  "U:\\演習2\\Vcpp\\Bunseki.pro", NULL, SW_SHOW);

        if((int)ret<=32) AfxMessageBox("cannot get shell processed", MB_OK);

}

void CMSS3View::OnEditCopy()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
 CEdit* myEdit = (CEdit*)GetFocus();
 myEdit->Copy();

}

void CMSS3View::OnEditCut()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
 CEdit* myEdit = (CEdit*)GetFocus();
 myEdit->Cut();

}

void CMSS3View::OnEditPaste()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
 CEdit* myEdit = (CEdit*)GetFocus();
 myEdit->Paste();
}

void CMSS3View::OnEditUndo()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
 CEdit* myEdit = (CEdit*)GetFocus();
 myEdit->Undo();

}
 

void CMSS3View::OnSaveReport()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
m_ctrl_report.SetFocus();
   UpdateData(TRUE);

 CMSS3Doc* myDoc = (CMSS3Doc*)GetDocument();
 myDoc->doc_report = m_report;
 CString strFileName="U:\\演習2\\Vcpp\\Report.txt";
(※)「Report.txt」を置くフォルダの場所は各自で決めて下さい。
myDoc->OnSaveDocument(strFileName);

}
 

// MSS3Doc.h : ヘッダー ファイル
//

/////////////////////////////////////////////////////////////////////////////
// CMSS3Doc ドキュメント

class CMSS3Doc : public CDocument
{
protected:
 CMSS3Doc();           // 動的生成に使用されるプロテクト コンストラクタ。
 DECLARE_DYNCREATE(CMSS3Doc)

// アトリビュート
public:
//static CString doc_report;
CString doc_report;
// オペレーション
public:

// オーバーライド
 // ClassWizard は仮想関数のオーバーライドを生成します。
 //{{AFX_VIRTUAL(CMSS3Doc)
 public:
 virtual void Serialize(CArchive& ar);   // ドキュメント I/O に対してオーバーライドされます。
 virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
 protected:
 virtual BOOL OnNewDocument();
 //}}AFX_VIRTUAL

// インプリメンテーション
public:
 virtual ~CMSS3Doc();
#ifdef _DEBUG
 virtual void AssertValid() const;
 virtual void Dump(CDumpContext& dc) const;
#endif

 // メッセージ マップ関数の生成
protected:
 //{{AFX_MSG(CMSS3Doc)
  // メモ - ClassWizard はこの位置にメンバ関数を追加または削除します。
 //}}AFX_MSG
 DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio は前行の直前に追加の宣言を挿入します。

#endif // !defined(AFX_MSS3DOC_H__17825D01_CDD3_11D4_9C1E_00000E49332F__INCLUDED_)
 
 

// MSS3Doc.cpp : インプリメンテーション ファイル
//

#include "stdafx.h"
#include "mss.h"
#include "MSS3Doc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMSS3Doc

IMPLEMENT_DYNCREATE(CMSS3Doc, CDocument)

CMSS3Doc::CMSS3Doc()
{

}

BOOL CMSS3Doc::OnNewDocument()
{
 if (!CDocument::OnNewDocument())
  return FALSE;
 return TRUE;
}

CMSS3Doc::~CMSS3Doc()
{
}
CString doc_report ="";
//CString CMSS3Doc::doc_report ="";

BEGIN_MESSAGE_MAP(CMSS3Doc, CDocument)
 //{{AFX_MSG_MAP(CMSS3Doc)
  // メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します。
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMSS3Doc 診断

#ifdef _DEBUG
void CMSS3Doc::AssertValid() const
{
 CDocument::AssertValid();
}

void CMSS3Doc::Dump(CDumpContext& dc) const
{
 CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMSS3Doc シリアライズ

void CMSS3Doc::Serialize(CArchive& ar)
{
 CString buf;
 if (ar.IsStoring())
 {
  // TODO: この位置に保存用のコードを追加してください
  ar.WriteString(doc_report);

 }
 else
 {
  // TODO: この位置に読み込み用のコードを追加してください
// CString doc_report;
  doc_report = "";
  while(ar.ReadString(buf)){
  if (buf.GetLength()>0 && buf[0] == '\x1a') break;

  doc_report += buf +  "\x0d\x0a";
  }
 }
}

/////////////////////////////////////////////////////////////////////////////
// CMSS3Doc コマンド

BOOL CMSS3Doc::OnSaveDocument(LPCTSTR lpszPathName)
{
 // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください

 return CDocument::OnSaveDocument(lpszPathName);
}
 

// MSS.cpp : アプリケーション用クラスの機能定義を行います。
//

#include "stdafx.h"
#include "MSS.h"

#include "MainFrm.h"
#include "ChildFrm.h"
#include "MSSDoc.h"
#include "MSS1Doc.h"
#include "MSS2Doc.h"
#include "MSS3Doc.h"
#include "MSSView.h"
#include "MSS1View.h"
#include "MSS2View.h"
#include "MSS3View.h"
#include "VarDialog.h"
#include "SelectDlg.h"
#include "SetGoalDlg.h"
#include "FixedRateDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMSSApp

BEGIN_MESSAGE_MAP(CMSSApp, CWinApp)
 //{{AFX_MSG_MAP(CMSSApp)
 ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
 ON_COMMAND(IDM_COMMON_TO_VAR, OnCommonToVar)
 ON_COMMAND(IDM_VAR_TO_MODEL, OnVarToModel)
 ON_COMMAND(IDM_COM_SCENARIO_TO_DATAFILE, OnComScenarioToDatafile)
 ON_COMMAND(IDM_RUN_EXECUTE, OnRunExecute)
 ON_COMMAND(IDM_GOALSEEK_EXECUTE, OnGoalseekExecute)
 ON_COMMAND(IDM_TEIRITU_HOU, OnTeirituHou)
 ON_COMMAND(IDM_Cfin1_Read, OnCfin1Read)
 //}}AFX_MSG_MAP
 // 標準のファイル基本ドキュメント コマンド
 ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
 ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
 // 標準の印刷セットアップ コマンド
 ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMSSApp クラスの構築

CMSSApp::CMSSApp()
{
 // TODO: この位置に構築用コードを追加してください。
 // ここに InitInstance 中の重要な初期化処理をすべて記述してください。
}

/////////////////////////////////////////////////////////////////////////////
// 唯一の CMSSApp オブジェクト

CMSSApp static theApp;

/////////////////////////////////////////////////////////////////////////////
// CMSSApp クラスの初期化

BOOL CMSSApp::InitInstance()
{
 AfxEnableControlContainer();

 // 標準的な初期化処理
 // もしこれらの機能を使用せず、実行ファイルのサイズを小さく
 //  したければ以下の特定の初期化ルーチンの中から不必要なもの
 //  を削除してください。

#ifdef _AFXDLL
 Enable3dControls();   // 共有 DLL の中で MFC を使用する場合にはここを呼び出してください。
#else
 Enable3dControlsStatic(); // MFC と静的にリンクしている場合にはここを呼び出してください。
#endif

 // 設定が保存される下のレジストリ キーを変更します。
 // 会社名または所属など、適切な文字列に
 // 変更してください。
 SetRegistryKey(_T("Local AppWizard-Generated Applications"));

 LoadStdProfileSettings();  // 標準の INI ファイルのオプションをロー爪します (MRU を含む)

 // アプリケーション用のドキュメント テンプレートを登録します。ドキュメント テンプレート
 //  はドキュメント、フレーム ウィンドウとビューを結合するために機能します。

 CMultiDocTemplate* pDocTemplate;
 pDocTemplate = new CMultiDocTemplate(
  IDR_MSSTYPE,
  RUNTIME_CLASS(CMSSDoc),
  RUNTIME_CLASS(CChildFrame), // カスタム MDI 子フレーム
  RUNTIME_CLASS(CMSSView));
 AddDocTemplate(pDocTemplate);

 pDocTemplate = new CMultiDocTemplate(
  IDR_MSSTYPE1,
  RUNTIME_CLASS(CMSS1Doc),
  RUNTIME_CLASS(CChildFrame), // カスタム MDI 子フレーム
  RUNTIME_CLASS(CMSS1View));
 AddDocTemplate(pDocTemplate);

 pDocTemplate = new CMultiDocTemplate(
 IDR_MSSTYPE2,
 RUNTIME_CLASS(CMSS2Doc),
 RUNTIME_CLASS(CChildFrame), // カスタム MDI 子フレーム
 RUNTIME_CLASS(CMSS2View));
 AddDocTemplate(pDocTemplate);

 pDocTemplate = new CMultiDocTemplate(
 IDR_MSSTYPE4,
 RUNTIME_CLASS(CMSS3Doc),
 RUNTIME_CLASS(CChildFrame), // カスタム MDI 子フレーム
 RUNTIME_CLASS(CMSS3View));
 AddDocTemplate(pDocTemplate);
 // メイン MDI フレーム ウィンドウを作成
 CMainFrame* pMainFrame = new CMainFrame;
 if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
  return FALSE;
 m_pMainWnd = pMainFrame;

 // DDE、file open など標準のシェル コマンドのコマンドラインを解析します。
 CCommandLineInfo cmdInfo;
 ParseCommandLine(cmdInfo);

 // コマンドラインでディスパッチ コマンドを指定します。
 if (!ProcessShellCommand(cmdInfo))
  return FALSE;

 // メイン ウィンドウが初期化されたので、表示と更新を行います。
 pMainFrame->ShowWindow(m_nCmdShow);
 pMainFrame->UpdateWindow();

 return TRUE;
}
 
 

/////////////////////////////////////////////////////////////////////////////
// アプリケーションのバージョン情報で使われる CAboutDlg ダイアログ

class CAboutDlg : public CDialog
{
public:
 CAboutDlg();

// ダイアログ データ
 //{{AFX_DATA(CAboutDlg)
 enum { IDD = IDD_ABOUTBOX };
 //}}AFX_DATA

 // ClassWizard 仮想関数のオーバーライドを生成します。
 //{{AFX_VIRTUAL(CAboutDlg)
 protected:
 virtual void DoDataExchange(CDataExchange* pDX);    // // DDX/DDV のサポート
 //}}AFX_VIRTUAL

// インプリメンテーション
protected:
 //{{AFX_MSG(CAboutDlg)
  // メッセージ ハンドラはありません。
 //}}AFX_MSG
 DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
 //{{AFX_DATA_INIT(CAboutDlg)
 //}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
 //{{AFX_DATA_MAP(CAboutDlg)
 //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
 //{{AFX_MSG_MAP(CAboutDlg)
  // メッセージ ハンドラはありません。
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

// ダイアログを実行するためのアプリケーション コマンド
void CMSSApp::OnAppAbout()
{
 CAboutDlg aboutDlg;
 aboutDlg.DoModal();
}

/////////////////////////////////////////////////////////////////////////////
// CMSSApp コマンド

void CMSSApp::OnCommonToVar()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
//挿入はじめ
      CMSSDoc::Edit_Nr = IDC_EDIT2;
//insert begin
   ++CMSSDoc::check_eidt2;
//insert
   CString strFileName="U:\\演習2\\Vcpp\\Vc.d";
     CWinApp::OpenDocumentFile(strFileName);
//挿入おわり
}

void CMSSApp::OnVarToModel()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
//挿入はじめ
 CMSSDoc  MyDocument;
 MyDocument.Edit_Nr = IDC_EDIT1;
//insert begin
 ++CMSSDoc::check_eidt1;
//insert end
 CString strFileName="U:\\演習2\\Vcpp\\Cm.d";
 CVarDialog VarModelDLG;

 if (VarModelDLG.DoModal()==IDOK){
 }
 OpenDocumentFile(strFileName);
    //挿入おわり
}

void CMSSApp::OnComScenarioToDatafile()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
//挿入はじめ
 CMSSDoc::Edit_Nr = IDC_EDIT4;
//insert begin
 ++CMSSDoc::check_eidt4;
//insert end
 CString strFileName="U:\\演習2\\Vcpp\\Csf.d";
 OpenDocumentFile(strFileName);
//挿入おわり
}

void CMSSApp::OnRunExecute()
{
 CSelectDlg SelectDialog;
 CString strFileName="U:\\演習2\\Vcpp\\Cfin1.dat";

// CString strFileName="Cfin1.txt";
 CMSS1Doc::noto=1;
 if (SelectDialog.DoModal()==IDOK){
//  CWinApp::OpenDocumentFile(strFileName);
  OpenDocumentFile(strFileName);
  // TODO: この位置にコマンド ハンドラ用のコードを追加してください
}
}

void CMSSApp::OnGoalseekExecute()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
  CSetGoalDlg SetGoalseek;
 CString strFileName="U:\\演習2\\Vcpp\\Cfin1.pro";

CMSS2Doc::noto=1;
 if (SetGoalseek.DoModal()==IDOK){
 OpenDocumentFile(strFileName);

}

}

void CMSSApp::OnTeirituHou()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
CFixedRateDlg FixedRateDlg;
 if (FixedRateDlg.DoModal()==IDOK){
}
}

void CMSSApp::OnCfin1Read()
{
 // TODO: この位置にコマンド ハンドラ用のコードを追加してください
 CString strFileName="U:\\演習2\\Vcpp\\Report.txt";
(※)「Report.txt」を置くフォルダの場所は各自で決めて下さい。 OpenDocumentFile(strFileName);

}

その他のファイルの修正について
<<CMSS2Doc.hについて>>

static CString doc3_cfin1;
 

<<CMSS2Doc.cppについて>>

CString CMSS2Doc::doc3_cfin1 = "";
 

void CMSS2Doc::writeCfin1()
{
 CString string;
 doc3_cfin1 = "";

 for (int i = 0; i < CMSS1Doc::NumberOfLines; ++i)
 {
  string = CMSS1Doc::myCfin1.GetAt(i);
  doc_Gcfin1_after = doc_Gcfin1_after + string + "\x0d\x0a";
  doc3_cfin1 += string + "\x0d\x0a";
 }
}
 

<<CMSS1Doc.cppについて>>

int CMSS1Doc::setvalue(CString variable, int time, int scenario, double value)
{
 int REGISTERED = FALSE;
 CString buffer;
 CString d_variable;
 int d_time;
 double d_value;
 int datapointer;

 for (int i=0; i < NumberOfLines; i++)
 {
  buffer = myCfin1.GetAt(i);
  getdata(buffer, d_variable, d_time, d_value);
  data[i].variable = d_variable;
  data[i].time = d_time;

  if ((d_variable == variable) && (d_time == time)){
   data[i].value = value;
   REGISTERED = TRUE;
   datapointer = i;
  }/* if */
  buffer = "";
 }/* for */

 if (REGISTERED == TRUE)
 {
  char buf[14];
  CString s_value;
  CString s_time;
  CString string;
////  char* c_time;
//  char* c_time;
////  itoa(time, c_time, 10);
  _itoa(time, c_time, 10);
  s_time = (CString)c_time;

  gcvt( value, 13, buf);
  s_value = (CString)buf;
  string = variable + "(" + s_time + "," + s_value + "0).";
////////////////////////////////////////////////////////insert 0
  myCfin1.SetAt(datapointer,string);
  CString k_string = myCfin1.GetAt(datapointer);
  return 2;
 }
 else
 {
  return 3;
 }
}