引数のない関数の作り方
命令を自作するときは、#deffunc命令を使います。
関数は何らかな処理を行った後、戻値(または返り値という)として処理結果のデータを必ずメインプログラムに返し、メインプログラムは関数をデータとして扱います。
※命令のように処理の結果をstat変数に入れることはできません。
新しい関数名は、関数の内容が分かる名前にします。
※CAOSでは単語の頭のみを大文字にして自作命令および自作関数であること区別しています。
#defcfunc 新しい関数名
return 戻値
/*////////////////////////////////////////////////////////////////////
処理:日付を文字列で返す関数
概要:日付を文字列で返します
引数:
戻値:西暦4桁-月2桁-日2桁
--------------------------------------------------------------------*/
#defcfunc GetDateStr
return strf("%04d-%02d-%02d",gettime(0),gettime(1),gettime(3))
命令名:#deffunc「新しい関数を作る」
新しい関数名:GetDateStr「日付を文字列で返す」
(日付を返す処理)
命令名:return「新しい関数の結果を返す」
戻値:strf("%04d-%02d-%02d",gettime(0),gettime(1),gettime(3))「現在の日付をyyyy-mm-ddの形式の文字列」
mes GetDateStr() //日付を文字列で取得して表示
両方のプログラムが保存できたら、メインプログラムを実行してサブプログラムの命令が正しく実行されるか確認してみましょう。
※上記2つののプログラムは「命令を作る」で作成した「subprog.hsp」および「mainprog.hsp」に追記していきます。
引数のある関数の作り方
新しい関数名の後に引数の型と引数を列挙していきます。
引数の型とは、呼び出し元が提供するデータの型を指定するものです。
引数名は、この自作関数の中で呼び出し元から得たデータに名前(エイリアス名)をつけます。
ローカル変数は、命令や関数が呼び出される度に宣言される命令や関数内のみで使うことができる変数です。
ローカル変数について
#defcfunc 新しい関数名 引数の型1 引数名1,引数の型2 引数名2...
return 戻値
/*////////////////////////////////////////////////////////////////////
処理:払出率を文字列で返す関数
概要:払出率を文字列で返します
引数:賭けた数,当たった数
戻値:小数第3位を四捨五入して%を含む8文字の文字列で返す
--------------------------------------------------------------------*/
#defcfunc GetPayoutCalcStr int bet, int won, local kotae
kotae = double(won) / double(bet)
kotae *= 100
return strf("%7.02f%%",kotae)
命令名:#defcfunc「新しい関数を作る」
新しい関数名:GetPayoutCalcStr「払出率を計算して文字列で返す」
引数の型:int「整数型の値で」
引数名:bet「賭けた数」
引数の型:int「整数型の値で」
引数名:won「当たった数」
ローカル変数:local「命令・関数内のみで有効な変数宣言」
引数名:kotae「計算結果」
(払出率を求める計算式)
命令名:return「新しい関数の結果を返す」
戻値:strf("%7.02f%%",kotae)「小数第3位を四捨五入した4桁.2桁%で払出率計算結果の文字列」
mes GetPayoutCalcStr(9876,8765) //払出率を文字列で取得して表示
両方のプログラムが保存できたら、メインプログラムを実行してサブプログラムの命令が正しく実行されるか確認してみましょう。
※上記2つののプログラムは「命令を作る」で作成した「subprog.hsp」および「mainprog.hsp」に追記していきます。
Copyright © 2002-2025 team.Dakuji All Rights Reserved.