# HG changeset patch # User pyon@macmini # Date 1558090232 -32400 # Node ID efa8836fd42882650cb939b5418ca9b4a7f82c3a # Parent a55c5a0cbd046112b2f77f8c83a50d3f9e1bf0b4 add encoding japanse & rune sample. diff -r a55c5a0cbd04 -r efa8836fd428 src/matsu/matsu.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/matsu/matsu.go Fri May 17 19:50:32 2019 +0900 @@ -0,0 +1,177 @@ +/* + Matsu2 + 訪問調査依頼一覧出力プログラム + original written by GNU-awk + + Last Change: 2019-05-17 金 15:39:21. +*/ +package main + +/* +#cgo LDFLAGS: -L. -lxdwapi -static +#include +#include + +#include +#include + +char* xdw_x2t(const char* file) { + char in_path[_MAX_PATH]; + _fullpath(in_path, file, _MAX_PATH); + + XDW_DOCUMENT_HANDLE h = NULL; // 文書ハンドルを開く + XDW_OPEN_MODE_EX mode = {sizeof(XDW_OPEN_MODE_EX), XDW_OPEN_READONLY, XDW_AUTH_NODIALOGUE}; + if (XDW_OpenDocumentHandle(in_path, &h, (XDW_OPEN_MODE*)&mode)) { + printf("Error: cannot open %s\n", file); + return NULL; + } + + XDW_DOCUMENT_INFO info = {sizeof(XDW_DOCUMENT_INFO), 0, 0, 0}; // 総ページ数を得る + XDW_GetDocumentInformation(h, &info); + int nPage = info.nPages; + + // メイン処理 + char *lpszvalue, *all_lpszvalue; + long datasize[9999]; + for (int i=1; i<=nPage; i++) { + datasize[i] = XDW_GetPageTextToMemory(h, i, NULL, 0, NULL); + datasize[0] += datasize[i]; + } + datasize[0] += nPage - 1; // for "\n" + all_lpszvalue = (char*)malloc(sizeof(char)*datasize[0]); + all_lpszvalue[0] = '\0'; + for (int i=1; i<=nPage; i++) { + if (i 0 { + birth = strings.Replace(d[0], " ", "", -1) + app = strings.Replace(d[1], " ", "", -1) + } + if rehhsno.MatchString(row[i]) { + hhsno = "=\"" + rehhsno.FindString(row[i]) + "\"" + } + if rename.MatchString(row[i]) { + n := []rune(rename.FindString(row[i])) + kana := string(n[10:36]) + kana = strings.Trim(kana, " ") + name = string(n[37:55]) + name = strings.Trim(name, " ") + name = rezensp.ReplaceAllString(name, "") + name += "(" + kana + ")" + } + if recity.MatchString(row[i]) { + c := []rune(recity.FindString(row[i])) + city = string(c[len(c)-3:]) + city = strings.Replace(city, "仙北郡", "美郷町", -1) + } + + if hhsno != "" { + fields := []string{app, hhsno, name, birth, city, empty, empty, empty, req} + fmt.Fprintln(w, strings.Join(fields, ",")) + if *vverbose { + fmt.Fprintf(os.Stderr, " %02d: %s\n", i + 1, hhsno[2:12]) + } + q++ + } + } + } + } + + if *verbose { + fmt.Fprintf(os.Stderr, "finish [%d customer]\n", q) + } + w.Flush() +} +