- PR -

.NETで財務処理を行いたい場合

1
投稿者投稿内容
masaki
常連さん
会議室デビュー日: 2001/12/10
投稿数: 26
投稿日時: 2002-08-30 21:47
 お世話になってます。

VBAで搭載されていた財務関数に相当する処理を.NETから行いたいのですが、.NET Frameworkのクラスライブラリではこれらの処理は提供されているのでしょうか?

具体的には、IRR処理(一連の定期的なキャッシュフローに対する内部利益率を返す)を行おうと考えているのですが、以前のVisual BasicではIRR関数が標準で提供されていました。
.NETの中にこういった財務処理を行うクラスが提供されているのをご存知の方がいらしたら、情報提供をお願いします。

小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2002-08-30 22:43
> 具体的には、IRR処理(一連の定期的なキャッシュフローに対する
> 内部利益率を返す)を行おうと考えているのですが、以前のVisual
> BasicではIRR関数が標準で提供されていました。
> .NETの中にこういった財務処理を行うクラスが提供されているのを
> ご存知の方がいらしたら、情報提供をお願いします。

.NET Framework SDKのドキュメントをIRRで検索したらちゃんとのってました。
VisualBasic .NETでは使えるようです。

#SDKのドキュメントはほとんど日本語化されてます。SDK自体、フリーで
 提供されてますので、いちどおとしてみてみることをおすすめします。
masaki
常連さん
会議室デビュー日: 2001/12/10
投稿数: 26
投稿日時: 2002-08-31 01:02
 shuさん、早速の返事ありがとうございます。
実はMSDNだけを検索していてSDKの検索までは行っていませんでした。すみません。
SDKドキュメントのほうをあさってみたいと思います・・・
masaki
常連さん
会議室デビュー日: 2001/12/10
投稿数: 26
投稿日時: 2002-08-31 16:32
 その後の報告です。

VBで以下のような実行ファイルを作成して実行したところ、正常に動作しました。

== irr.vb ==========================

Option Explicit
Option Strict

Imports System
Imports Microsoft.VisualBasic.Financial

Namespace Test
  Public Class Financial
    Public Overloads Shared Sub Main()
      Try
        Dim guess   As Double
        Dim ret    As Double
        Dim values(4) As Double
        guess = 0.1
        values(0) = -70000
        values(1) = 22000
        values(2) = 25000
        values(3) = 28000
        values(4) = 31000
        ret = IRR( values, guess ) * 100
        Console.WriteLine( "The internal rate of return for these five cash flows is " & _
                  System.Convert.ToString( ret ) & " percent." )
        Exit Sub
      Catch e As Exception
        Console.WriteLine( e.ToString() )
      End Try
    End Sub
  End Class
End Namespace

ところがこれを今度はDLLにして表示しようとしたところ、処理が途中で中断してしまいます。
コンソールで追ってみたところ、DLL側でIRR関数を起動する直前のコンソール出力までは正常に実行されるのですが、IRR関数を実行するとそこで呼び出し側のEXEごと処理が終了してしまうようです。(DLL内のIRR呼び出し後のコンソール文も、呼び出し側での実行後のコンソール文も出力されない)

== DLL:test.vb ====================

Option Explicit
Option Strict

Imports System
Imports Microsoft.VisualBasic.Financial

Namespace Test
  Public Class Financial
    Public Function DisplayIRR() As String
      Try
        Dim guess   As Double
        Dim ret    As Double
        Dim values(4) As Double
        Dim msg    As String
        guess = 0.1
        values(0) = -70000
        values(1) = 22000
        values(2) = 25000
        values(3) = 28000
        values(4) = 31000
        Console.WriteLine( "IRRを計算します..." )
        ret = IRR( values, guess ) * 100
        msg = "The internal rate of return for these five cash flows is " & _
            System.Convert.ToString( ret ) & " percent."
        Console.WriteLine( msg )
        DisplayIRR = msg
        Exit Function
      Catch e As Exception
        Throw e
      End Try
    End Function
  End Class
End Namespace

== 呼び出しEXE:testclient.cs ======

using System;
using Test;

namespace TestClient
{
  public class FinancialClient
  {
    public static void Main()
    {
      try {
        Test.Financial test = new Test.Financial();
        Console.WriteLine( "DisplayIRR begin." );
        test.DisplayIRR();
        Console.WriteLine( "DisplayIRR complete." );
        return;
      }
      catch( Exception e ) {
        Console.WriteLine( e );
      }
    }
  }
}

これで実行した場合の結果・・・

C:\\>testclient
DisplayIRR begin.
IRRを計算します...

どこに問題があるのでしょうか?もう少し調べてみます・・・

1

スキルアップ/キャリアアップ(JOB@IT)