メインスクリプト main.hsp
/***********************************************************

	"lnsfx.exe" main script

		【2005/11/18 更新】

	引数に指定された文字列を標準入力から取得したテキストの
	各行末に追加、または各行末から削除するコンソール・アプリ

	引数
		p1: 各行末に追加または削除する文字列
		   (必ず""で囲む。)
		   ("を指定するのは不可)

	オプション
		(なし): p1に指定された文字列を行末に追加
		/r:   p1に指定された文字列を行末から削除


	使用上の注意

		出力されるテキストの改行コードは自動的にCRLF形式
		に変換されます。

	同梱の実行ファイルは[実行ファイル自動作成]で作りました。

***********************************************************/

/******************************/
/* 実行ファイル作成オプション */
/******************************/
#packopt name	"lnsfx"
#runtime		"hsp3cl"

/******************/
/* 定数マクロなど */
/******************/
#define	SUFFIX_REMOVE	"r"

/******************/
/* 汎用モジュール */
/******************/
#include "gm_stdio.hsp"
#include "gm_crlf.hsp"
#include "gm_record_str.hsp"
#include "gm_cmdline.hsp"
#include "gm_quote.hsp"
#include "gm_rm_fix.hsp"

	/**************/
	/* メイン処理 */
	/**************/

	/* 処理対象データを取得 */
	if is_stdin_redirected() {	// 標準入力がリダイレクトされている
;		input buf,,0
/*
		input命令を使うと受け取るデータが大きいとき
		システムエラー(error 1)が発生して落ちる。
		bufのサイズを十分に確保していてもダメ。
*/
		input2 buf
	}
	else {
		end			// 標準入力がリダイレクトされていなければ終了
	}
	conv_crlf buf,TYPE_CRLF		// 改行コードをCRLFに変換

	/* 引数とオプションに従ってデータを加工 */
	i = 0
	p1 = getarg(i)
	rmquot p1,TYPE_DQUOTE
	if p1="" {
		goto *@f		// 引数が指定されていなければそのまま出力して終了
	}

	notesel buf
	repeat notemax
		noteget linestr,cnt
		if chkopt(SUFFIX_REMOVE) {
			rm_suffix linestr,p1
		}
		else {
			linestr += p1
		}
		noteadd linestr,cnt,1
	loop
*@

	/* 出力 */
	mes2 buf
	end