home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 3 / FREEWARE.BIN / towns_os / taropyon / he386 / defs / addpart.awk next >
Text File  |  1980-01-02  |  2KB  |  90 lines

  1. #
  2. #    MML テキストにパートを加える    By TARO
  3. #
  4. #    書式    jgawk -f addpart.awk -- 
  5. #                <入力パス名> <出力パス名>
  6. #                <パート数> <挿入パート> <挿入パート数> <追加MML> [<nulline skip>]
  7. #
  8. #    <nulline skip>は何か文字列があれば指定されたとみなされる
  9. #
  10. #    【使用例】
  11. #        jgawk -f addpart.awk -- test1.mml test2.mml 14 0 2 $ins skip
  12. #        
  13. #        パート数<14>で構成されるtest1.mmlから入力し,<0>番目のパートに<2>つのMML 
  14. #        行の<$ins>を追加する。なお空行は無効とする
  15. #
  16. #
  17. #    ※ #includeで外部ファイルをインクルードしているものや#ifdef~#els
  18. #      e~#endif を使ったMML テキストでは正常に処理できません。
  19. #
  20. #     AWK で作ったたあいのないユーティリティですので,気にする必要あり
  21. #    ません。
  22. #     実行にはJGAWK.EXE が必要です。
  23. #
  24.  
  25. BEGIN    {
  26.     if ( ARGC < 7 )
  27.     {    print "@ Parameter error!!\n"
  28.         exit
  29.     }
  30.     READFILE  = ARGV[1]
  31.     WRITEFILE = ARGV[2]
  32.     PARTMAX   = ARGV[3]
  33.     INSP      = ARGV[4]
  34.     INSN      = ARGV[5]
  35.     MML       = ARGV[6]
  36.     if( ARGC > 7 )
  37.         NULSKIP = 1
  38.     else
  39.         NULSKIP = 0
  40.     ARGC = 2
  41.     printf "/* filename '%s' (%s)\n",WRITEFILE,READFILE >WRITEFILE
  42.     PART = 0
  43. }
  44.  
  45. {    s = $0
  46.     if ( match(s,"^/")!=0 )
  47.         print s >WRITEFILE
  48.     else if ( match(s,"^\.")!=0 )
  49.     {    if( index(s,"next")!=0 )
  50.         {    PART = 0
  51.             print "found next\n"
  52.         } else if( index(s,"partmax")!=0 )
  53.         {    PARTMAX = $2
  54.             printf "partmax = %d\n", PARTMAX
  55.         } else if( index(s,"nulline")!=0 )
  56.         {    if( index(s,"skip")!=0 )
  57.                 NULSKIP = 1
  58.             else if( index(s,"rest")!=0 )
  59.                 NULSKIP = 0
  60.         }
  61.         print s >WRITEFILE
  62.     } else if( match(s,"^#")!=0 )
  63.         print s >WRITEFILE
  64.     else
  65.     {    if( NULSKIP==0 )
  66.         {    if ( PART == INSP )
  67.             {    for ( i=0; i<INSN; ++i )
  68.                     printf " %s /* insert\n",MML >WRITEFILE
  69.             }
  70.             ++PART
  71.             if ( PART >= PARTMAX  )
  72.                 PART = 0
  73.         } else if( NF!=0 )
  74.         {    if ( PART == INSP )
  75.             {    for ( i=0; i<INSN; ++i )
  76.                     printf " %s /* insert\n",MML >WRITEFILE
  77.             }
  78.             ++PART
  79.             if ( PART >= PARTMAX  )
  80.                 PART = 0
  81.         }
  82.         print s >WRITEFILE
  83.     }
  84. }
  85.  
  86. END {
  87.     printf "/* end of '%s' (%s)\n",WRITEFILE,READFILE >WRITEFILE
  88.     print "***** Completed *****\n"
  89. }
  90.