home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 3
/
FREEWARE.BIN
/
towns_os
/
taropyon
/
he386
/
defs
/
addpart.awk
next >
Wrap
Text File
|
1980-01-02
|
2KB
|
90 lines
#
# MML テキストにパートを加える By TARO
#
# 書式 jgawk -f addpart.awk --
# <入力パス名> <出力パス名>
# <パート数> <挿入パート> <挿入パート数> <追加MML> [<nulline skip>]
#
# <nulline skip>は何か文字列があれば指定されたとみなされる
#
# 【使用例】
# jgawk -f addpart.awk -- test1.mml test2.mml 14 0 2 $ins skip
#
# パート数<14>で構成されるtest1.mmlから入力し,<0>番目のパートに<2>つのMML
# 行の<$ins>を追加する。なお空行は無効とする
#
#
# ※ #includeで外部ファイルをインクルードしているものや#ifdef~#els
# e~#endif を使ったMML テキストでは正常に処理できません。
#
# AWK で作ったたあいのないユーティリティですので,気にする必要あり
# ません。
# 実行にはJGAWK.EXE が必要です。
#
BEGIN {
if ( ARGC < 7 )
{ print "@ Parameter error!!\n"
exit
}
READFILE = ARGV[1]
WRITEFILE = ARGV[2]
PARTMAX = ARGV[3]
INSP = ARGV[4]
INSN = ARGV[5]
MML = ARGV[6]
if( ARGC > 7 )
NULSKIP = 1
else
NULSKIP = 0
ARGC = 2
printf "/* filename '%s' (%s)\n",WRITEFILE,READFILE >WRITEFILE
PART = 0
}
{ s = $0
if ( match(s,"^/")!=0 )
print s >WRITEFILE
else if ( match(s,"^\.")!=0 )
{ if( index(s,"next")!=0 )
{ PART = 0
print "found next\n"
} else if( index(s,"partmax")!=0 )
{ PARTMAX = $2
printf "partmax = %d\n", PARTMAX
} else if( index(s,"nulline")!=0 )
{ if( index(s,"skip")!=0 )
NULSKIP = 1
else if( index(s,"rest")!=0 )
NULSKIP = 0
}
print s >WRITEFILE
} else if( match(s,"^#")!=0 )
print s >WRITEFILE
else
{ if( NULSKIP==0 )
{ if ( PART == INSP )
{ for ( i=0; i<INSN; ++i )
printf " %s /* insert\n",MML >WRITEFILE
}
++PART
if ( PART >= PARTMAX )
PART = 0
} else if( NF!=0 )
{ if ( PART == INSP )
{ for ( i=0; i<INSN; ++i )
printf " %s /* insert\n",MML >WRITEFILE
}
++PART
if ( PART >= PARTMAX )
PART = 0
}
print s >WRITEFILE
}
}
END {
printf "/* end of '%s' (%s)\n",WRITEFILE,READFILE >WRITEFILE
print "***** Completed *****\n"
}