procedure main(args) if *args <2 then { write("setextからPalmのMeDoc形式TEXTに変換") write("使用法: set2md ") stop("使用例: set2md renki.set renki.txt") } pline := "" metable := table() medoclist := [] numbline := 1 headline1 := "" every i := 1 to 512 do { headline1 := headline1 || "=" } headline2 := "" every i := 1 to 512 do { headline2 := headline2 || "-" } # setext形式からPalmのMeDocインデックスをtableで生成 fi := open(args[1]) | stop("error cannot open setext") while line := read(fi) do { if *line == *pline & *line > 0 & (line == headline1[1:*line+1] | line == headline2[1:*line+1]) then { metable[numbline - 1] := ":" || pline writes(&errout, "*") } numbline +:= 1 pline := line } close(fi) # tableからMeDocインデックス自身の行数を加えてlistに変換 if *metable > 0 then { metable[numbline - 1] := ":Last Line" put (medoclist, "#!Medoc index " || *metable) } numbindex := *metable + 1 every pair := !sort(metable, 1) do { put(medoclist, pair[1] + numbindex || pair[2]) } # MeDocインデックスを頭につけてファイル出力(上書き) fi := open(args[1]) | stop("args[1]: cannot open error") fo := open(args[2], "w") | stop("args[2]: cannot open error") every write(fo, !medoclist) while ss := read(fi) do { write(fo, ss) } close(fo) close(fi) end