リートン で elixir を学ぶ （その2）text ファイルの write

こちらで行ったのと同じことを [wrtn](https://wrtn.jp/) で行いました。
[ChatGPT で elixir を学ぶ　（その4）text ファイルの write](https://qiita.com/ekzemplaro/items/ece7cebd384d6c6cc86a)

## Python のプログラム

```py:text_create.py
#! /usr/bin/python
#
import	sys
#
# -------------------------------------------------------------------------
def text_write_proc(file_out,dict_aa):
#
	fp_out = open(file_out,mode='w', encoding='utf-8')
	for key in dict_aa.keys():
		unit = dict_aa[key]
		str_out = key + "\t" + str(unit['name']) + "\t"
		str_out += "%d\t" % unit['population']
		str_out += unit['date_mod'] + "\n"
		fp_out.write(str_out)
	fp_out.close()
# -------------------------------------------------------------------------
def dict_append_proc(dict_aa,key,name,population,date_mod):
	dict_aa[key] = {'name':name,'population':population,'date_mod':date_mod}
#
	return dict_aa
#
# -------------------------------------------------------------------------
def	data_prepare_proc():
	dict_aa = {} 
#
	dict_aa = dict_append_proc(dict_aa,'t2381','名古屋',52761,'2003-4-30')
	dict_aa = dict_append_proc(dict_aa,'t2382','豊橋',47195,'2003-5-10')
	dict_aa = dict_append_proc(dict_aa,'t2383','岡崎',21674,'2003-6-14')
	dict_aa = dict_append_proc(dict_aa,'t2384','一宮',83912,'2003-9-9')
	dict_aa = dict_append_proc(dict_aa,'t2385','蒲郡',42791,'2003-8-4')
	dict_aa = dict_append_proc(dict_aa,'t2386','常滑',35287,'2003-1-21')
	dict_aa = dict_append_proc(dict_aa,'t2387','大府',81246,'2003-7-23')
	dict_aa = dict_append_proc(dict_aa,'t2388','瀬戸',25791,'2003-10-26')
	dict_aa = dict_append_proc(dict_aa,'t2389','犬山',54139,'2003-12-15')
#
	return	dict_aa
#
# -------------------------------------------------------------------------
sys.stderr.write("*** 開始 ***\n")
#
file_out = sys.argv[1]
#
print(file_out)
#
dict_aa = data_prepare_proc()
#
try:
	text_write_proc(file_out,dict_aa)
except Exception as ee:
	sys.stderr.write("*** error *** in text_write_proc ***\n")
	sys.stderr.write(str(ee) + '\n')
#
sys.stderr.write("*** 終了 ***\n")
# -------------------------------------------------------------------------
```

## wrtn が作成したプログラム

wrtn では、メインプログラムが作成されませんでした。

```elixir:text_create.exs
defmodule CityData do
  @moduledoc """
  市のデータを扱うモジュール
  """

  # データをファイルに書き込む
  def text_write_proc(file_out, dict_aa) do
    {:ok, file} = File.open(file_out, [:write, :utf8])

    dict_aa
    |> Enum.each(fn {key, val} ->
      str_out = "#{key}\t#{val.name}\t#{val.population}\t#{val.date_mod}\n"
      IO.write(file, str_out)
    end)

    File.close(file)
  end

  # データを辞書に追加する
  def dict_append_proc(dict_aa, key, name, population, date_mod) do
    Map.put(dict_aa, key, %{name: name, population: population, date_mod: date_mod})
  end

  # 初期データを準備する
  def data_prepare_proc do
    dict_aa = %{}
    |> dict_append_proc("t2381", "名古屋", 52761, "2003-4-30")
    |> dict_append_proc("t2382", "豊橋", 47195, "2003-5-10")
    # 他のデータも同様に追加...
    |> dict_append_proc("t2389", "犬山", 54139, "2003-12-15")

    dict_aa
  end
end
```

そこで、次のメインプログラムを加えました。

```elixir
IO.puts :stderr,"*** 開始 ***"
[file_out | _] = System.argv()
IO.puts :stderr,file_out
#

dict_aa = CityData.data_prepare_proc()
CityData.text_write_proc(file_out,dict_aa)
IO.puts :stderr,"*** 終了 ***"
```

実行結果

```text
$ ./text_create.exs cities.txt
*** 開始 ***
cities.txt
*** 終了 ***
```

作成されたファイル

```text:cities.txt
t2381	名古屋	52761	2003-4-30
t2382	豊橋	47195	2003-5-10
t2389	犬山	54139	2003-12-15
```