【CRSプログラム入門】 第9回 オブジェクトの操作①

2006-08-06 16:38:26 | 【CRSプログラム入門】
オブジェクトの操作

 オブジェクトとは、「もの」を表現するため考え方である。たとえば、自動車を例に見てみよう。自動車は、メーカ、車種、車名、色、車高、車幅、価格などといった属性を持っている。こうした属性を持つ物の集合として自動車は一つの種類(クラス)を成している。それぞれの自動車は、そのクラスのメンバーであるので、自動車というクラスのインスタンスといえる。ある自動車は「トヨタ」で、別の自動車は「ニッサン」といったように、自動車の持つ属性の値は、それぞれの自動車に依存する。
 このように考えると、「もの」(オブジェクト)を記述するためには、まずそれが属するクラスを定め、次にその「もの」をクラスの一つのインスタンスとした上で、その「もの」が持つ具体的な属性を指定してやることが必要になる。これがプログラムでのオブジェクトの考え方である。

オブジェクトの生成

 Objectの生成は、次の構文により行う。

 ObjectType[ : ValueType] ObjectName; … 【1】
 ObjectType[ : ValueType] ObjectName[ n ]; … 【2】

 var 変数名 = new ObjectType; … 【3】
 var 変数名 = new ObjectType(); … 【4】
 var 変数名 = new ObjectType( コンストラクタ引数 ); … 【5】


プロパティの型 初期値
Number  0
Fixed  0
Date  0(無効な日付)
String  空文字
Object  null


【CRSプログラム入門】 第8回 CRSプログラミング②

2006-08-06 05:35:04 | 【CRSプログラム入門】
例外ハンドリング
 CRSスクリプトでは、JavaScriptとほぼ同じようにtry…catchにより例外をハンドリングすることができる。

 【try … catch throw 文】
 try {
      実行文1
 }
 catch( e ) {
      実行文2
 }
  tryブロックで囲まれた実行文1を実行し、その実行過程で例外が発生した場合、後続の実行文1にステートメント実行を中止し、実行文2に制御を移す。
  catchステートメントの仮引数 e は、Exceptionオブジェクトが渡される。Exceptionオブジェクトのプロパティによりどのような例外が発生したか知ることができる。
  e.message    エラーメッセージ
  e.method    例外を起こした機能分類
  e.code     例外コード

  注意:try … catch による例外ハンドリングは実行時のみ有効。Biz/Designerで生成されるCRSファイル全体をtryブロックに入れても、イベントハンドラの実行により発生した例外は捕らえることができない。

 【ユーザ定義の例外】
 Exceptionオブジェクトを生成し、throw文に渡すことでアプリケーション固有の例外を発生させることができる。

 【グローバル例外ハンドラ】
 ルートオブジェクト//にOnExceptionファンクションを定義することで、catchされない全ての例外を捕捉して呼び出すことができる。
 OnExceptionハンドラは、アプリケーション固有のエラー報告手段を提供するために用意された機能で、通常はユーザに対してエラーを報告して終了する。OnExceptionハンドラに制御が渡った時点で、実行途中のコールスタックは全て解放されているので、エラーを起こしたスクリプトの処理を継続させることはできない。

【CRSプログラム入門】 第8回 CRSプログラミング①

2006-08-06 04:24:42 | 【CRSプログラム入門】
CRSプログラミング
 CRSスクリプトでは、JavaScriptに似た機能を多く取り込んでいて、クラスやパッケージ機能が仕様拡張されている。基本はJavaScriptライクだが、これからCRSプログラミングについてポイントを説明していこう。

制御構造
 CRSスクリプトの制御構造は、JavaScriptとほぼ同じ文法である。

 【if … else 文】 条件分岐
if ( 条件式 ) ステートメント1 [ else ステートメント2 ]
  条件式が真のとき、ステートメント1が実行。オプションのelse が指定されている場合、条件式が偽のとき、ステートメント2が実行。

 【for 文】 forループ
for( 初期化式 ; 終了条件式 ; インクリメント式 ) ステートメント
  初期化式を実行後、終了条件式が真の間、ステートメントを実行。次の終了条件を確認する前にインクリメント式を実行。ステートメント内でbreak文を実行すると即座にループを終了。また、ステートメント内でcontinue文を実行すると後続のステートメントを実行せずに次のループに移る。

 【for in 文】 配列などの要素に対応したループ
for( ループ変数 in 対象変数 ) ステートメント
  対象変数の内容を列挙するための値をループ変数に代入しながらステートメントを実行。対象変数は配列化されたオブジェクト、Arrayオブジェクト、およびイテレータをサポートする一部のオブジェクトを指定することが可能。ステートメント内でbreak文を実行すると即座にループを終了。また、ステートメント内でcontinue文を実行すると後続のステートメントを実行せずに次のループに移る。

 【while 文】 条件ループ
while( 条件式 ) ステートメント
  条件式が真の間、ステートメント実行。ステートメントの実行前に条件式が評価。ステートメント内でbreak文を実行すると即座にループを終了。また、ステートメント内でcontinue文を実行すると後続のステートメントを実行せずに次のループに移る。

 【do … while 文】 条件ループ
do ステートメント while( 条件式 )
  条件式が真の間、ステートメント実行。ステートメントの実行後に条件式が評価。ステートメント内でbreak文を実行すると即座にループを終了。また、ステートメント内でcontinue文を実行すると後続のステートメントを実行せずに次のループに移る。

 【switch case 文】 条件により分岐
 switch( 評価式 ) {
   case 結果1:
          実行文
   case 結果2:
          実行文
         :
   case 結果n:
          実行文
   default:
          実行文
 }
  評価式を評価しその結果と一致するcaseラベルにジャンプする。もし、defaultラベルが定義されている場合、評価式が他のどのcaseラベルとも一致しなかった場合にdefaultラベルにジャンプ。ジャンプした後もそのラベル以降のステートメントの実行を継続する。ステートメントの実行を中断してswitchブロックの最後にジャンプするためにはbreak文を置く。
 break文の利用例

  var data = 1;
  switch( data ) {
    case 0:
        print( "dataは0ですn" );
    break;
    case 1:
        print( "dataは1ですn" );
    break;
    case 2:
        print( "dataは2ですn" );
    break;
    case 3:
        print( "dataは3ですn" );
    break;
    default:
        print( "dataは3ですn" );
    break;
  }
    実行結果

    dataは1です


【CRSプログラム入門】 第7回 Biz/Designer開発環境②

2006-08-05 03:01:20 | 【CRSプログラム入門】
実行メニュー
 Biz/Designerでは、開発しながらの実行テストが行える。コンパイル作業は必要ないため、実際の動作を確認しながら開発ができる。エンドユーザと実際の画面を見ながら進めていくといったプロトタイプ手法での開発も行える。

 ■編集中ファイルからテスト実行
 ■テスト実行開始
 ■ステップイン
 ■ステップオーバー
 ■ステップアウト
 ■一時停止
 ■実行終了
 ■イベントログの表示
 ■プロファイリング
 ■CRS文法チェック
 ■ネットワークの設定
 ※Biz/Designer自身がプロキシサーバ機能をもっている。ネットワークの設定で通信帯域を任意に制限して、低速回線(64Kなど)を想定したシミュレートが行える。

デバッグ機能
 Biz/Designerには、テスト、デバック効率を上げるための豊富な機能がある。いろいろな角度からデバックすることができるので大変良い。特に通信ログでは、サーバ間のデータやファイルのやりとりをモニターできるのでエラー原因の切り分けがしやすい。
 
  ■一時停止、再開機能
  ■ブレークポイント
  ■ステップイン・ステップオーバー・ステップアウト
  ■通信ログ
  ■イベントログ
  ■プロファイリング
  ■ウォッチビュー
  ■ログビュー

その他のちょっといい機能

  ●レイアウトロック
    デザインビューで画面のレイアウトをロックできる。

  ●スクリプト行の折り返し表示
    スクリプト画面で横に長い行もそのまま折り返して表示できる。

  ●プロジェクトビューの同期
    複数のプログラムを開いている時など、プロジェクトビューと開発中のプログラムとの同期をとることができる。

  ●ソース管理機能
    マスターファイルの保護、バージョン管理と、履歴管理、修正差分のマージ、競合解決のサポートなどのソース管理機能を利用した開発ができる。

  ●プロジェクトのエクスポート
    プロジェクトフォルダにあるファイルから純粋に必要なファイルのみ抜き出し別フォルダにコピーできる。(その際にコメント行を削除することも可能)

  ●ドキュメント作成機能
    エクステンションによるドキュメント作成機能を使って簡単な仕様書が作成できる。(カスタマイズ可能)

  ●位置の初期化
    ドッキングウィンドウの位置の初期化ができる。

  ●スクリプト文字の拡大縮小
    スクリプト画面での文字フォントのサイズを任意に拡大縮小できる。
    (Ctrlキー+マウスのホイール操作、またはテンキーの+/-キー)

  ●CSVファイルでの動作テスト
    サーバ側のビジネスロジックがなくても、とりあえずCSVファイルで動作テストができる。

  ●CRSアーカイブ
    複数のファイルを圧縮(パスワード設定も可能)し、1つのファイルとしたCRSアーカイブ(CAR)ファイルを扱うことが可能。プログラムソースの開示保護やファイルサイズ縮小による通信負荷の低減ができる。Biz/BrowserでのみCARファイルのままでファイル展開され、ロード実行される。

【CRSプログラム入門】 第7回 Biz/Designer開発環境①

2006-08-03 21:12:05 | 【CRSプログラム入門】
CRSプログラムの開発環境
 Biz/Browserで実行されるCRSプログラムは、テキストエディタで開発できなくもないが開発の生産性やテスト、デバッグ効率を上げるには専用の開発環境が必要だ。
 そこで活躍するのがBiz/Designerである。VBライクな馴染みのある画面構成だ。その便利な機能を押さえておこう。

2Way画面と自動格納機能
 これは一般的なVGA(1024×768)解像度でのディスプレイ画面である。中央にデザイン(GUI)とスクリプトの2Wayのデザインビューがある。デザイン画面とスクリプト画面が連動しているので相互に切り替えて開発ができる。その周りを各ドッキングビューが取り囲む。

 デザイン
 
 ※プロジェクトビューで小さなプレビューの小窓がついた。わざわざファイルを開かなくても、プログラム名を選択しただけでその画面イメージを確認できる。Ver4.1.3.2(2006/7/21リリース)から追加された機能。

 スクリプト
 

 VGAディスプレイだとかなりデザインビューが狭くなってしまう。ドッキングビューを手動で切り離したり閉じたり、[F8]キーでデザインビュー専用モードに切り替えたりちょっと操作が面倒だったりする。しかし、こんな時はドッキングビューの自動格納機能がある。カーソルの位置で自動的にスライドして開いたり閉じたりしてくれるのでVGAディスプレイでもデザインビューが広く使える。高解像度のディスプレイでない場合は重宝する。

 

 フレームの各ドッキングビューのボタンにカーソルを重ねると自動的に開き、

 

 ドッキングビューから離れると自動的に閉じてくれる。

 

 別のドッキングビューをオープン。

 

 ※自動格納機能は、Ver4.1.3.2(2006/7/21リリース)から追加された機能。

【CRSプログラム入門】 第6回 パッケージとクラス

2006-08-03 19:28:50 | 【CRSプログラム入門】
パッケージとクラス
 Biz/Browserで実行されるCRSスクリプトでは、標準で下記のようなパッケージ(クラス)を持っている。また、標準のオブジェクトやパッケージを使って別のオリジナルのパッケージ(クラス)を作り、標準パッケージと同じようにメニューに組み込み使用することが可能だ。
パッケージ名 説明
 System 数値、文字列、配列といったCRS言語仕様に含まれるネイティブなクラス
 Standard ラベル、ボタン、テキストボックスといった標準GUIをサポートするパッケージ 
 Extension3 日付入力、TABフォーム、ツリービューといった拡張GUIをサポートするパッケージ(Ver3.0以降)
 Extension4 コンポボックス、リストビュー、イメージボタンといった拡張GUIをサポートするパッケージ(Ver4.0以降)
 CSV CSV(Connma Sepalated Value)形式のデータを扱うためのパッケージ
 XML W3C(World Wide Web Consortium) で策定されているDOM (Document Object
Model) Level 2の一部の機能を除いたサブセット
 Xpath W3C(World Wide Web Consortium) で策定されているDOM (Document Object
Model) Level 3 XPath Version1.0の一部の機能を除いたサブセット
 HTTP WEBサーバと通信するためのパッケージ
 Runtime ファイルシステムの操作やファイル入出力といった実行環境に依存した動作を行うクラスを集めたパッケージ
  ExternalEvent ActiveXなどの外部のプログラムとイベントを通じて連携するためのパッケージ
 PrintStream Biz/BrowserからBiz/PrintServerの印刷モジュールPrintStreamのスプールファイルを印刷するパッケージ
 Converter 文字コード変換、Base64変換、文書整形といったコンバート関連のクラスを集めたパッケージ
 Mail SMTPおよびPOP3プロトコルによるインターネットメールを処理するクライアント機能のクラスを集めたパッケージ
 Security 暗号化、暗号復号、ハッシュ生成といったセキュリティ関連機能を持つクラスを集めたパッケージ


【CRSプログラム入門】 第5回 グローバル関数②

2006-08-03 19:10:32 | 【CRSプログラム入門】
...続き

統計関数
関数名 説明
 avg 平均値を求めます
 max 最大値を求めます
 min 最小値を求めます
 std 標準偏差を求める(母集団全体)
 stds 標準偏差を求める(サンプル)
 var 分散を求める(母集団全体)
 vars 分散を求める(サンプル)
 rank 順位を求めます
 sum 合計を求めます

財務関数
関数名 説明
 cterm 元金が目標満期額に達する期間
 db 定率償却法での減価償却額
 ddb 倍率償却法での減価償却額
 fv 毎期一定投資による将来価値
 gankin 元金均等返済の利息
 ganri 元利均等返済の利息
 irr 内部利益率
 npv キャッシュフローの正味現在価値
 pmt 借入金の元利均等返済額
 pv 投資の現在価値
 rate 期間利率
 sln 定額法での償却額
 syd 算術級数法での減価償却額
 term 積立期間数

システム関数
関数名 説明
 sysdate 現在のシステム日付、時刻を返します
 cachedate 現在接続しているサーバから取得しているキャッシュ情報の最も新しい更新日付を返します
 deleteCache キャッシュを削除します
 setPalette カラーコードの色を変更します
 link ハイパーリンクを実行します
 debugMessage デバッグ用メッセージをBiz/Designerに表示します
 setBookmark ブックマークのエントリを変更、追加します
 remBookmark ブックマークのエントリを削除します
 getBookmark ブックマークリストを取得します
 getHTTPSession 現在のHTTPセッションを取得します
 findHTTPSession 指定のHTTPセッションを検索、作成します
 encodeURI 文字列をURLエンコードします
 decodeURI 文字列をURLデコードします
 getPrinterList プリンタの一覧を取得します
 setDefaultPrinter 通常使うプリンタを設定します
 ChangeProfile Biz/Browserの動作環境を変更します
 GetLocaleInfo ロケール情報の取得
 HasConnectionLicense 接続ライセンスの確認
 ImportConnectionLicense 接続ライセンス証明書のインポート


【CRSプログラム入門】 第5回 グローバル関数①

2006-08-03 15:08:27 | 【CRSプログラム入門】
グローバル関数
 Biz/Browserで実行されるCRSスクリプトにはグローバル関数がある。グローバル関数を使うことで複雑な計算式を表現できるので、サーバに対するリクエストを最低限に抑えることができる。また、これらのグローバル関数を組み合わせてオリジナルの関数を作ることも可能だ。

 主なグローバル関数は下記の通り。

文字列操作関数
関数名 説明
 find 文字列を検索
 fullp 半角文字を全角文字に変換
 halfp 全角文字を半角文字に変換
 left 文字列を左から取り出します
 length 文字列の長さを求めます
 lower 大文字を小文字に変換
 mid 文字列を途中から取り出します
 replace 文字列を置換
 right 文字列を右から取り出します
 str 数値を文字列に変換
 suuji 数値を漢数字に変換
 trim 文字列中の余分な空白を除去
 upper 小文字を大文字に変換
 val 文字列を数値に変換
 split 文字列をデリミタで区切り要素を取得します
 strf 書式指定文字列で文字列を結合します

日付関数
関数名 説明
 year 年を求めます
 month 月を求めます
 day 日を求めます
 youbi 曜日番号を求めます
 hour 時を求めます
 minute 分を求めます
 second 秒を求めます
 datedif 日付の差を計算します
 dateval 文字列を日付連番に変換します

算術関数
関数名 説明
 abs
数値の絶対値を求めます
 Int 浮動小数点型の数値の小数点以下の桁を切り捨てます
 rand 0~1の範囲の乱数を返します
 round 指定の桁で四捨五入します
 rounddown 任意の桁で負の方向に切り捨てます
 roundup 任意の桁で正の方向に切り上桁が正の場合小数点以下を指定した桁で切り上げます。桁が負の場合整数部分を指定した桁で切り上げます。桁を省略した時小数点以下を切り上げます
 roundm 元の値を倍数で指定した値の倍数になるようにします
 sign 数値の符号を判定します


【CRSプログラム入門】 第4回 定数

2006-08-01 23:30:10 | 【CRSプログラム入門】
定数
 Biz/Browserで実行されるCRSスクリプトで数値や文字列を定数として扱うときの種類は以下の通り。
定数 種類 CRS型 表記例
数値 10進整数 Number  100, -100
16進整数  0xFF, -0xFF 
実数  3.14, -3.14
論理型  true, false
固定小数点数 Fixed  10.19F, -10.19F
文字 文字列 String "bizn"
時間 日付 Date "2006/04/01"
時刻 "2003/04/01 10:10:10"


特別な文字
 特別な文字"\\"を使用して文字列に制御コードや文字列の区切り文字などを含める。
制御コード、文字 表記 使用例
改行  \\n  "1行目\\n2行目"
復帰  \\r  "1行目\\r\\n2行目"
タブ  \\t  "項目1\\t項目2"
\\  \\\\  "\\\\100"


【CRSプログラム入門】 第3回 式と演算子

2006-08-01 17:35:05 | 【CRSプログラム入門】
式と演算子
 Biz/Browserで実行されるCRSプログラムのオブジェクトでは、計算式を使うことができる。計算式はクライアント内で完結して動作するため、ネットワーク通信などのオーバヘッドを必要とせず高速に動作する。
 計算式で使う四則演算や比較式などは、一般的なプログラム言語と同等である。CRS特有の演算子としては 参照演算子(&=)がある。この演算子は、右辺の評価結果の変動を検出し、自動的に再計算を実行して結果を左辺に代入する。表計算ソフトの計算式のように動作する。例えば、金額 &= 数量 * 単価; と記述すれば、数量と単価の値の変動にともなって金額は常に数量 * 単価の値となる。
種類 記号
new演算子  new
メンバ参照演算子  .(ピリオド)
配列演算子  [ と ]
括弧演算子  ( )
左加算、左減算  ++, --
右加算、右減算  ++, --
単項演算子  -, +, !
算術演算子  *, /, %, +, -
関係演算子  >, >=, <, <=
等価演算子  ==, !=, ==&, !=&
論理結合演算子  &, &&, |, ||
3項演算子  ?, :
代入演算子  +=, -=, *=, /= %= 
代入演算子  =, &=, <<
カンマ演算子  ,