MORSE

引数に指定した文字列をモールス信号、またはモールス信号を文字列に変換します。

構文
  1. UString = MORSE.encode( str )
  2. UString = MORSE.decode( str )
引数
str
エンコード・デコードする文字列(区切りは半角スペース)
戻値
変換した文字列

プログラム

//////////////////////////////////////////////////
// 【引数】
//   str : エンコード・デコードする文字列(区切りは半角スペース) 
// 【戻値】
//   変換した文字列 
//////////////////////////////////////////////////
MODULE MORSE
	HASHTBL code
	PROCEDURE MORSE()
		code["A"] = "・-"
		code["B"] = "-・・・"
		code["C"] = "-・-・"
		code["D"] = "-・・"
		code["E"] = "・"
		code["F"] = "・・-・"
		code["G"] = "--・"
		code["H"] = "・・・・"
		code["I"] = "・・"
		code["J"] = "・---"
		code["K"] = "-・-"
		code["L"] = "・-・・"
		code["M"] = "--"
		code["N"] = "-・"
		code["O"] = "---"
		code["P"] = "・--・"
		code["Q"] = "--・-"
		code["R"] = "・-・"
		code["S"] = "・・・"
		code["T"] = "-"
		code["U"] = "・・-"
		code["V"] = "・・・-"
		code["W"] = "・--"
		code["X"] = "-・・-"
		code["Y"] = "-・--"
		code["Z"] = "--・・"
		code["1"] = "・----"
		code["2"] = "・・---"
		code["3"] = "・・・--"
		code["4"] = "・・・・-"
		code["5"] = "・・・・・"
		code["6"] = "-・・・・"
		code["7"] = "--・・・"
		code["8"] = "---・・"
		code["9"] = "----・"
		code["0"] = "-----"
		code["."] = "・-・-・-"
		code[","] = "--・・--"
		code["?"] = "・・--・・"
		code["--"] = "-・・・-"
		code["-"] = "-・・・・-"
		code["/"] = "-・・-・"
		code["@"] = "・--・-・"
		FOR n = 0 TO LENGTH(code)
			code[code[n, HASH_VAL]] = code[n, HASH_KEY]
		NEXT
	FEND
	FUNCTION encode(str)
		DIM res = ""
		FOR n = 1 TO LENGTH(str)
			res = res + code[COPY(str, n, 1)] + " "
		NEXT
		RESULT = TRIM(res)
	FEND
	FUNCTION decode(str)
		DIM res = ""
		DIM arr = SPLIT(str, " ")
		FOR n = 0 TO UBound(arr)
			res = res + code[arr[n]]
		NEXT
		RESULT = res
	FEND
ENDMODULE

//////////////////////////////////////////////////
// 【引数】
//   配列 : 上限値を求める配列 
// 【戻値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(array[])
	RESULT = RESIZE(array)
FEND