Jw_cad 情報交換室−その3
JWW についての情報交換の場としてお使いください
初心者の方などのご相談は
Jw_cad 相談
室−その2をご利用ください
なお、情報交換室と相談室の両方に同じ内容を投稿するのはご遠慮ください
2009年9月以前の発言は
過去ログのページからご覧ください。
それ以降の過去ログは消失しています。
申し訳ありませんが、復活の予定はありません。
|
|
ほぼ初心者
- 23/8/12(土) 13:59 -
|
banさん
GAWKM115.ZIPを探してダウンロード。
解凍フォルダ内の、gawk.exeを使用しましたが
解決しません。
もうほかに手段はありませんか?
何度も対応して頂きありがとうございます。
ちなみに、アジアポケットの展開図は利用できます。
▼banさん:
>▼ほぼ初心者さん:
>>someさん
>>
>>最後にpauseを追加したら、以下のメッセージが出ました。
>>これで何が問題かわかりますか?
>>
>>gawk: ARROWsay.awk:73: (FILENAME=jwc_temp.txt FNR=17) 致命的: 関数 `jlength' は定義されていません。
>>続行するには何かキーを押してください . . .
>>
>>というメッセージが出ます。
>>
>>
>>▼somemさん:
>>>▼ほぼ初心者さん:
>>>
>>>>外変は実行できるが、作図ができないということです。
>>>
>>>gawk -f ARROWsay.awk jwc_temp.txt・・・ > temp.txtの次行に、
>>>pauseを追記した時、エラーメッセージは出ませんか?
>
>現在お使いの
>gawk.exeは日本語文字に対応していないと思われます。
>
>GAWKM115.ZIPを探してダウンロードする。
>解凍フォルダ内の、
>gawk.exeを使用する。
>
>ダウンロード参考
>yakushima-tonboさんのサイト
>
>http://www.yakushima-tonbo.com/jw_cad/gaihen.htm
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36@p6523132-ipoe.ipoe.ocn.ne.jp>
GAWKM115.ZIP内からコピーした
gawk.exeは
何処に導入したのですか?
同じエラーメッセージが出ている場合、
動作しているgawk.exeは、
GAWKM115のgawk.exeファイルで無い可能性があります。
gawk.exe 2001/05/26 21:50 316KB
上記バージョンは
jlengthに対応している
batファイルと同じフォルダに入れても動作しませんか?
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203@p7046-ipngn801morioka.iwate.ocn.ne.jp>
|
|
ほぼ初心者
- 23/8/12(土) 15:11 -
|
banさん
最初batファイルと同じフォルダに入れたのですがダメでした。
でも再度トライした所、問題なく動くことが確認できました。
banさん、somemさん、対応本当にありがとうございました。
▼banさん:
>GAWKM115.ZIP内からコピーした
>gawk.exeは
>何処に導入したのですか?
>
>同じエラーメッセージが出ている場合、
>動作しているgawk.exeは、
>GAWKM115のgawk.exeファイルで無い可能性があります。
>
>gawk.exe 2001/05/26 21:50 316KB
>上記バージョンは
>jlengthに対応している
>
>batファイルと同じフォルダに入れても動作しませんか?
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36@p6523132-ipoe.ipoe.ocn.ne.jp>
同じ様な症状が出てたどり着いて、
解決ついでに素人ながらに確認したので備忘録兼ねて追加情報
根本原因はgawkのバージョン次第での
『jlength』関数に対応していない事による起動障害
jlengthが使われているのは、文字間隔による文字列長さの調整であるので、
文字間隔を0で利用するならば関係ない部分であるので、
Arrowsay.awkをメモ帳等で開き編集可能な状態にし、
『+(jlength(No)-1)*pd』を削除してしまって良い
ちなみに、JWCADのバージョンによるかも知れないが、
文字サイズ設定は全角文字基準であるので、
文字間隔を0以外で使用する場合は半角では1/2されるため、
半角2桁以上の場合、文字位置が円中心からズレてしまうので、
上記項『(jlength(No)-1)*pd』を『(jlength(No)-1)*pd/2』に変える必要あり。
また、バグかも知れないが、
『jlength』は全角文字を全角文字として取得する関数と紹介されているが、
半角2文字扱いをされるため文字間隔による長さ増加がおかしくなる。
そもそも全角数字は数字として処理しないので連続処理ができないが⋯
<Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni106-red.in.shared-server.net>
文字コードで説明しないと後で見返したときに「?」になると思います。
jlengthは「文字数」を返す関数です。
'26年現在、本家awk、GNU awk ともにマルチバイトに対応しています。
GNU awk について少し調べました。
(※ 他の実装については説明を避けます。)
# jgawk(GNU awk 日本語対応版 2.15.2 + 1.1 など) との違い
- multibyte characters.
- CSV 形式の読み込み・処理。
- @load
- @include
- 追加されていた組み込み関数 jindex, jlength, jsubstr はない。
- コマンドラインオプション「-Wlang-xxxx(-Wctype=xxxx)」はない。
- 文字コードの判別は UNIX の場合はロケール設定、Windows の場合はコードページ設定に依存する。
- → UNIX: ja_JP.UTF-8, ja_JP.SJIS; Windows: 65001(UTF-8), 932(Shift JIS)
- debuger
- The only supported binary distribution for MS-Windows systems is that provided by Eli Zaretskii’s “ezwinports” project.
# 試す
Windows 版は試した限りにおいて Shift JIS 環境は機能していないように見えます。
よって multibyte characters というのは UTF-8 のことと解釈します。
Linux 版での Shift JIS 環境下は試していません。
ロケール/コードページ設定とスクリプトで使用する文字コードは一致している必要があります。
Shift JIS 環境下において最新の gawk を既存スクリプトで運用する場合は、以下を留意する必要があります。
(※ バッチファイルの文字コードを UTF-8 とした場合、生成される jwc_temp.txt の文字コードは UTF-8(BOM 付き)です。)
- バッチファイルの文字コードは Shift JIS。
- awk スクリプトファイルの文字コードは UTF-8。
- 入出力は Shift JIS 、処理は UTF-8 と考える。
- 文字コードの変換は iconv, nkf, PowerShell などを利用する。
- jgawk は awk または gawk に置換する。
- jindex, jlength, jsubstr はそれぞれ index, length, substr に置換する。
- -Wlang-xxxx(-Wctype=xxxx) は削除する。
## 動作確認環境
Microsoft Windows [Version 10.0.26200.8655]
GNU Awk 5.4.0, API 4.1, (GNU MPFR 4.0.2, GNU MP 6.1.2)
iconv (GNU libiconv 1.19)
## BATCH FILE
@rem coding: CP932
@echo off
rem #jww
set "data_file=jwc_temp.txt"
set "temp_file=temp.txt"
set "awk_script=sample.awk"
chcp 65001
echo.
iconv --version
echo.
gawk --version
echo.
rem 適宣引数を追加してください。
iconv -f CP932 -t UTF-8 %data_file% | gawk -f %awk_script% - | iconv -f UTF-8 -t CP932 > %temp_file%
if exist %data_file% (
del %data_file%
) else (
echo %data_file% not found.
)
if exist %temp_file% (
rename %temp_file% %data_file%
) else (
echo %temp_file% not found.
)
:END
# SITE
One true awk · GitHub
https://github.com/onetrueawk/awk
Gawk - GNU Project - Free Software Foundation (FSF)
https://www.gnu.org/software/gawk/
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni102-red.in.shared-server.net>
▼とりさんさん:
>## 動作確認環境
>GNU Awk 5.4.0, API 4.1, (GNU MPFR 4.0.2, GNU MP 6.1.2)
>
>GNU awk について少し調べました。
>CSV 形式の読み込み・処理。
>Windows 版は試した限りにおいて Shift JIS 環境は機能していないように見えます。
>よって multibyte characters というのは UTF-8 のことと解釈します。
gawk 5.2.2 までとgawk 5.3.0 以降で大きく仕様が変わっている部分がありますね。
ですから私は、今でも gawk 5.2.2 [も] 利用しています。
しかし、今でも (gawk 5.2.2が) ダウンロード出来るかどうかは、わかりません。
あまり細かな確認をしたわけではなく、自分が書いたコードが正常動作すればよいかな位のものです。
<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36@sni102-red.in.shared-server.net>
Jw_cad Copyright (C)1997-2021 Jiro Shimizu & Yoshifumi Tanaka