# d_num.awk by TEMITORAVIOS # basic 行番号削除用 # # jgawk -f d_num.awk ttt.bas >ttt.bs # BEGIN { tab = 4; } { #整形 sub (/^[0-9]+ /,""); # 行番号削除 sub (/[\t  ]+$/,""); # 行末スペース削除 sub (/ /," "); # 全角空白を 半角空白x2に $0 = un_ex_tab($0,tab) # 先頭のみ処理 if ($0 ~ /^'$/) { # コメントのみの行を空行に print ""; next; } # # 文字列以外を 小文字に変換する if ($0 ~ /data/ || $0 ~ /DATA/) { # デ−タ行と見ていじらない。(判断が不完全) } else if ($0 ~ /^ *'/) { # コメント行と見ていじらない。 } else if ($0 ~ /"/) { # 文字列が含まれている時 # 文字列以外のみ小文字に変換 # ' (コメント)の考慮していないが 殆ど問題ないでしょう。 n = split ($0,a,"\x22"); s = tolower(a[1]); for (i = 2; i <= n; i += 2) { s = s "\x22" a[i]; #文字列部分 if (i+1 <= n) s = s "\x22" tolower(a[i+1]); } $0 = s for (i in a) delete a[i] } else if ($0 ~ /'/) { # コメントが含まれる時 n = jindex($0,"'"); $0 = tolower(jsubstr($0,1,n-1)) jsubstr($0,n); } else { $0 = tolower($0); } # 現在はラベルも小文字変換に変換されてしまう。 # print $0; } function un_ex_tab(s,t, i,n,r) { # 先頭のみ処理 match (s,/^ +/); n = int(RLENGTH / 4); for (i = 0; i < n; i++) r = r "\t"; r = r substr(s,n*t + 1); return r; }