/************************************************************************
*	未読タイトルリストを元にダウンする発言を選択する処理		*
************************************************************************/

/*	未読タイトルディレクトリのファイルをチェックする	*/
%LISTVIEW{
	%Loop{
	B:=1;
	case	(NUMBER={},
		{No},	{loop({
			LISTFILE:=LOGPATH|{\TITLE\}|JUMP|{.F}|
					@nth(NUMBER,B,{,});
			case	(@filechk(LISTFILE),
				{Yes},	{SIGDATA:=@read(LISTFILE,1,1);
					listview});
			case	(@nth(NUMBER,B+1,{,})={},
				{Yes},	{im({No})},,
					{B:=B+1;im({Yes})});
				})});
	};

	%Loop2{
	B:=1;
	case	(NUMBER2={},
		{No},	{loop({
			LISTFILE:=LOGPATH|{\TITLE\}|JUMP|{.K}|
					@nth(NUMBER2,B,{,});
			case	(@filechk(LISTFILE),
				{Yes},	{SIGDATA:=@read(LISTFILE,1,1);
					listview});
			case	(@nth(NUMBER2,B+1,{,})={},
				{Yes},	{im({No})},,
					{B:=B+1;im({Yes})});
				})});
	};

	%Plane{
	case	(PCVAN={},
		{No},	{n:=1;
			d:=1;

			%Plane2{
			%jumpcode @nth(onevan,3,{/});
			case	(8-@nochar(jumpcode),
				0,{c:=jumpcode},	1,{c:=jumpcode|{ }},
				2,{c:=jumpcode|{  }},	3,{c:=jumpcode|{   }},
				4,{c:=jumpcode|{    }},	5,{c:=jumpcode|{     }},
				6,{c:=jumpcode|{      }},
				7,{c:=jumpcode|{       }},
				8,{c:=jumpcode|{        }});
			a:=b|{:}|c;

			case	(d,
				1,	{PcVan:=PcVan|{s   /}|a;
					d:=2;NOLINE:=NOLINE+1},
				2,	{PcVan:=PcVan|{/}|a;d:=3},
				3,	{PcVan:=PcVan|{/}|a;d:=4},
				4,	{PcVan:=PcVan|{/}|a|{\n};d:=1});
			};

			loop({
			onevan:=@getline(PCVAN,n,1);
			case	(onevan={\n},
				{Yes},,
				{No},
				{case	(@nth(onevan,1,{/}),
					{ＢＢＳタイトル},
						{b:={BBS};
						LISTSIG:=LISTSIG|
						@nth(onevan,3,{/})|{/}|
						@nth(onevan,4,{/})|{//\n};
						Plane2},
					{ＳＩＧタイトル},
						{b:={SIG};
						LISTSIG:=LISTSIG|
						@nth(onevan,3,{/})|{/}|
						@nth(onevan,4,{/})|{/}|
						@nth(onevan,5,{/})|{/\n};
						Plane2},
					{ＣＵＧタイトル},
						{b:={CUG};
						LISTSIG:=LISTSIG|
						@nth(onevan,3,{/})|{/}|
						@nth(onevan,6,{/})|{/}|
						@nth(onevan,8,{/})|{/\n};
						Plane2});
			case	(@getline(PCVAN,n+1,1),
				{},
				{case	(d<>1,
					{Yes},	{PcVan:=PcVan|{\n}});im({No})},,
						{n:=n+1;im({Yes})})});
			})});
	};

	case	(TITLFILE,
		{},	{var PcVan	[1000];	var NOLINE	[2];
			var NOLINE2	[2];	var a		[26];
			var b		[12];	var c		[8];
			var n		[2];	var d		[2];
			var onevan	[100];	var check	[3];
			Plane;
			loop({
			SNDMSG({erande_f.snd});
			footnote({リストを表示する場所を指定して下さい});
			%a @plane({cリストを表示する場所を指定して下さい\n}|
				PcVan|
				{s   /   戻  る   });
			NOLINE2:=1;
			check:={No};
			%ok   @head(@getline(a,NOLINE+1,1),{\n});
			case	(PcVan={},
				{No},
				{loop({
				case	(@head(@getline(a,NOLINE2,1),{\n}),
					{ 1},
					{%JUMP @nth(@getline(LISTSIG,
						NOLINE2*4-3,1),1,{/});
					%NUMBER @nth(@getline(LISTSIG,
						NOLINE2*4-3,1),2,{/});
					%NUMBER2 @nth(@getline(LISTSIG,
						NOLINE2*4-3,1),3,{/});
					Loop;Loop2;
					check:={Yes};
					im({No})},
					{ 2},	
					{%JUMP @nth(@getline(LISTSIG,
						NOLINE2*4-2,1),1,{/});
					%NUMBER @nth(@getline(LISTSIG,
						NOLINE2*4-2,1),2,{/});
					%NUMBER2 @nth(@getline(LISTSIG,
						NOLINE2*4-2,1),3,{/});
					Loop;Loop2;
					check:={Yes};
					im({No})},
					{ 3},
					{%JUMP @nth(@getline(LISTSIG,
						NOLINE2*4-1,1),1,{/});
					%NUMBER @nth(@getline(LISTSIG,
						NOLINE2*4-1,1),2,{/});
					%NUMBER2 @nth(@getline(LISTSIG,
						NOLINE2*4-1,1),3,{/});
					Loop;Loop2;
					check:={Yes};
					im({No})},
					{ 4},
					{%JUMP @nth(@getline(LISTSIG,
						NOLINE2*4,1),1,{/});
					%NUMBER @nth(@getline(LISTSIG,
						NOLINE2*4,1),2,{/});
					%NUMBER2 @nth(@getline(LISTSIG,
						NOLINE2*4,1),3,{/});
					Loop;Loop2;
					check:={Yes};
					im({No})},,
					{case	(NOLINE2,
						NOLINE,	{im({No})},,
							{NOLINE2:=NOLINE2+1;
							im({Yes})})});
				})});
			case(ok,{ 1},	{im({No})},,
					{case	(ok={ 0}&&check={No},
						{Yes},	{im({No})},
						{No},	{im({Yes})})});
			})},,
			{A:=1;
			loop({
			LISTFILE:=LOGPATH|{\TITLE\}|@nth(TITLFILE,A,{/});
			case	(@filechk(LISTFILE),
				{Yes},	{SIGDATA:=@read(LISTFILE,1,1);
					listview});
			case	(@nth(TITLFILE,A+1,{/})={},
				{Yes},	{im({No})},,
					{A:=A+1;im({Yes})});
			})});
};

/*	未読タイトルをメモに表示	*/
%listwrite{	/*	７００行表示	*/
	madd(memono,{\n});
	mclear(memono);
	madd(memono,SIGDATA|{\n});
	madd(memono,@read(LISTFILE,NOLINE2,NOLINE3));
	mopen(memono,0,21,639,459,{r});
};
%ListWrite{	/*	新規分だけ表示	*/
	madd(memono,{\n});
	mclear(memono);
	madd(memono,SIGDATA|{\n});
	fopen(LISTFILE);
	loop({
	var item[82];
	%line @fread(9,{/});
	item:={ }|line;
	madd(memono,item);
	im(line<>{});
	});
	fclose;
	mopen(memono,0,21,639,459,{r});
};

/*	メイン	*/
%listview{
	var NOLINE1[10];
	var NOLINE2[10];
	var NOLINE3[3];
	NOLINE3:=700;
	delfile(TEMPPATH|{\TITLE.BAK});
	case	(TITLFILE,
		{},	{NOLINE1:=@noline(@read(LISTFILE));
			NOLINE2:=NOLINE1-700;
			case(NOLINE2<=2,{Yes},{NOLINE2:=3});
			listwrite},,
			{ListWrite});
	loop({
	case	(TITLFILE,
		{},	{SNDMSG({erande_f.snd});
			case	(SITEN,
				{},	{footnote({予約 次 選択始点}|
			{                        前項次項},{b})},,
					{footnote({予約 次 選択終点}|
			{                        前項次項},{b})});
			waitx();
			case	(@xtype,
				101,	{InactMemo;
					mwrite(TEMPPATH|{\TITLE.BAK},memono);
					CloseMEMO(memono);
					DOWNSET;im({No})},
				201,	{InactMemo;
					mwrite(TEMPPATH|{\TITLE.BAK},memono);
					CloseMEMO(memono);
					DOWNSET;im({No})},
				102,	{CloseMEMO(memono);im({No})},
				202,	{CloseMEMO(memono);im({No})},
				103,	{SELECT;im({Yes})},
				203,	{SELECT;im({Yes})},
				104,	{SELECT2;im({Yes})},
				204,	{SELECT2;im({Yes})},
				111,	{case	(NOLINE2=3,
						{No},
						{InactMemo;
						write(TEMPPATH|{\TITLE.BAK},
							@memo(memono));
						CloseMEMO(memono);
						case	((NOLINE2-700)<=2,
							{Yes},
							{NOLINE3:=NOLINE2-1;
							NOLINE2:=3},,
							{NOLINE2:=NOLINE2-700;
							NOLINE3:=700});
						listwrite});
					im({Yes})},
				211,	{case	(NOLINE2=3,
						{No},
						{InactMemo;
						write(TEMPPATH|{\TITLE.BAK},
							@memo(memono));
						CloseMEMO(memono);
						case	((NOLINE2-700)<=2,
							{Yes},
							{NOLINE3:=NOLINE2-1;
							NOLINE2:=3},,
							{NOLINE2:=NOLINE2-700;
							NOLINE3:=700});
						listwrite});
					im({Yes})},
				112,	{case	(NOLINE2+700>=NOLINE1,
						{No},
						{InactMemo;
						write(TEMPPATH|{\TITLE.BAK},
							@memo(memono));
						CloseMEMO(memono);
						case	(NOLINE3<=699,
							{Yes},
							{NOLINE2:=NOLINE3+1;
							NOLINE3:=700},,
							{NOLINE2:=NOLINE2+700;
							NOLINE3:=700});
						listwrite});
					im({Yes})},
				212,	{case	(NOLINE2+700>=NOLINE1,
						{No},
						{InactMemo;
						write(TEMPPATH|{\TITLE.BAK},
							@memo(memono));
						CloseMEMO(memono);
						case	(NOLINE3<=699,
							{Yes},
							{NOLINE2:=NOLINE3+1;
							NOLINE3:=700},,
							{NOLINE2:=NOLINE2+700;
							NOLINE3:=700});
						listwrite});
					im({Yes})},
				memono,{SELECT;im({Yes})},,{im({Yes})})},,
			{SNDMSG({erande_f.snd});
			case	(SITEN,
				{},	{footnote({予約 次 選択始点},{b})},,
					{footnote({予約 次 選択終点},{b})});
			waitx();
			case	(@xtype,
				101,	{InactMemo;
					mwrite(TEMPPATH|{\TITLE.BAK},memono);
					CloseMEMO(memono);
					DOWNSET;im({No})},
				201,	{InactMemo;
					mwrite(TEMPPATH|{\TITLE.BAK},memono);
					CloseMEMO(memono);
					DOWNSET;im({No})},
				102,	{CloseMEMO(memono);im({No})},
				202,	{CloseMEMO(memono);im({No})},
				103,	{SELECT;im({Yes})},
				203,	{SELECT;im({Yes})},
				104,	{SELECT2;im({Yes})},
				204,	{SELECT2;im({Yes})},
				memono,{SELECT;im({Yes})},,{im({Yes})})});
	});
		case	(TITLFILE={},
		{No},	{madd(memono,SIGDATA|{\n});
			fopen(LISTFILE);
			loop({
			var item[82];
			%line @fread(10,{/});
			item:=line;
			madd(memono,item);
			im(line<>{});
			});
			fclose;
			madd(memono,	{------------------------------}|
					{  以降新規取得分  }|
					{------------------------------\n});
			fopen(LISTFILE);
			loop({
			var item[82];
			%line @fread(9,{/});
			item:={ }|line;
			madd(memono,item);
			im(line<>{});
			});
			fclose;
			mwrite(LISTFILE,memono);
			CloseMEMO(memono)});
};

/*	ダウンロード場所判定	*/
%DOWNSET{
	%PLASE @read(LISTFILE,1,1);
	case	(@nth(PLASE,2,{|}),
		{FORUM},{FORUMSET},
		{KAIGI},{FORUMSET},
		{BBS},	{FORUMSET},
		{CUGKEI},{CUGSET},
		{CUGKAI},{CUGSET});
};

/*	フォーラム、会議室、ＢＢＳからのダウンロード設定	*/
%FORUMSET{
	fopen(TEMPPATH|{\TITLE.BAK});
	var DOWNMES[1000];
	loop({
	%line @fread(1,{*});
	case	(line={},
		{No},{case	(DOWNMES={},
				{Yes},	{C:={ }|@head(line,{*},{  9});
					DOWNMES:=@tail(C,{ });
					im({Yes})},
				{No},	{C:={ }|@head(line,{*},{  9});
					C:=@tail(C,{ });
					DOWNMES:=DOWNMES|{,}|C});
					im({Yes})},,
			{im({No})});
	});
	fclose;
	%plase @case	(@nth(PLASE,2,{|}),
			{FORUM},{im({フォーラム指定発言})},
			{KAIGI},{im({ＳＩＧ内会議室指定発言})},
			{BBS},	{im({ＢＢＳ指定発言})});
	%jumpcode	@nth(PLASE,1,{|});
	%number		@nth(PLASE,3,{|});
	case	(DOWNMES={},
		{No},	{write	(TEMPPATH|{\PVAPDOWN.DAT},
				plase|{|}|
				jumpcode|{|}|number|{|}|DOWNMES|{|\n})});
};

/*	ＣＵＧからのダウンロード設定	*/
%CUGSET{
	fopen(TEMPPATH|{\TITLE.BAK});
	var DOWNMES[1000];
	loop({
	%line @fread(1,{*});
	case	(line={},
		{No},{case	(DOWNMES={},
				{Yes},	{C:={ }|@head(line,{*},{  9});
					DOWNMES:=@tail(C,{ });
					im({Yes})},
				{No},	{C:={ }|@head(line,{*},{  9});
					C:=@tail(C,{ });
					DOWNMES:=DOWNMES|{,}|C});
					im({Yes})},,
			{im({No})});
	});
	fclose;
	%plase @case	(@nth(PLASE,2,{|}),
			{CUGKEI},{im({ＣＵＧ内掲示板指定発言})},
			{CUGKAI},{im({ＣＵＧ内会議室指定発言})});
	%jumpcode	@nth(PLASE,1,{|});
	%pass		@tail(PCVAN,{/}|jumpcode|{/},{/});
	%mainnum	@nth(PLASE,4,{|});
	%number		@nth(PLASE,3,{|});
	case	(DOWNMES={},
		{No},	{write	(TEMPPATH|{\PVAPDOWN.DAT},
				plase|{|}|
				jumpcode|{|}|pass|{|}|mainnum|{|}|
				number|{|}|DOWNMES|{|\n})});
};

/*	「*」付け	*/
%SELECT{
	%LineNo @xlinenum;
	%MemoLine @nolmemo(memono);
	%line1	@case	(LineNo>MemoLine,
			{Yes},{im(@memo(memono,MemoLine,1))},
			{No},{case	(LineNo<=0,
					{Yes},{im(@memo(memono,1,1))},
					{No},{im(@memo(memono,LineNo,1))})});
	%lineno	@case	(LineNo>MemoLine,
			{Yes},	{im(MemoLine)},
			{No},	{case	(LineNo<=0,
					{Yes},{im(1)},
					{No},{im(LineNo)})});
	case	(@head(line1,{  9},{/})={2}||
		@head(line1,{  9},{/})={3}||
		@head(line1,{  9},{/})={4},
		{Yes},	{case	(@getchar(line1,1,1)={*},
				{No},
				{%MEMODAT @memo(memono,1,lineno-1)|
					{*}|@getchar(line1,2)|
					@memo(memono,lineno+1);
				mclose(1);
				mclear(memono);
				madd(memono,MEMODAT);
				mopen(memono,0,21,639,459,{r})},
				{Yes},
				{%MEMODAT @memo(memono,1,lineno-1)|
					{ }|@getchar(line1,2)|
					@memo(memono,lineno+1);
				mclose(1);
				mclear(memono);
				madd(memono,MEMODAT);
				mopen(memono,0,21,639,459,{r})})});
};

/*	「始点」「終点」処理	*/
%SELECT2{
	%LineNo @xlinenum;
	%MemoLine @nolmemo(memono);
	%line1	@case	(LineNo>MemoLine,
			{Yes},{im(@memo(memono,MemoLine,1))},
			{No},{case	(LineNo<=0,
					{Yes},{im(@memo(memono,1,1))},
					{No},{im(@memo(memono,LineNo,1))})});
	%lineno	@case	(LineNo>MemoLine,
			{Yes},	{im(MemoLine)},
			{No},	{case	(LineNo<=0,
					{Yes},{im(1)},
					{No},{im(LineNo)})});
	case	(@head(line1,{  9},{/})={2}||
		@head(line1,{  9},{/})={3}||
		@head(line1,{  9},{/})={4},
		{Yes},	{case	(SITEN={},
				{Yes},
				{SITEN:=lineno;
				%MEMODAT @memo(memono,1,lineno-1)|
					{+}|@getchar(line1,2)|
					@memo(memono,lineno+1);
				mclose(1);
				mclear(memono);
				madd(memono,MEMODAT);
				mopen(memono,0,21,639,459,{r})},
				{No},
				{SYUTEN:=lineno;
				case	(SITEN>SYUTEN,
					{Yes},	{C:=SYUTEN;
						SYUTEN:=SITEN;
						SITEN:=C;},
					{No},	{C:=SITEN});
				var MEMODAT[10000];
				loop({
			case	(@getchar(@memo(memono,C,1),1,1),
				{*},
				{MEMODAT:=MEMODAT|									{ }|@getchar(@memo(memono,C,1),2)},
				{+},
				{MEMODAT:=MEMODAT|									{*}|@getchar(@memo(memono,C,1),2)},
				{-},
				{MEMODAT:=MEMODAT|@memo(memono,C,1)},
				{ },
				{MEMODAT:=MEMODAT|
					{*}|@getchar(@memo(memono,C,1),2)});
				case	(C=SYUTEN,
					{Yes},{im({No})},
					{No},{C:=C+1;im({Yes})});
				});
				%memodat @memo(memono,1,SITEN-1)|MEMODAT|
					@memo(memono,SYUTEN+1);
				mclose(1);
				mclear(memono);
				madd(memono,memodat);
				mopen(memono,0,21,639,459,{r});
				SITEN:={};
				});});
};

/*	実行	*/
CloseAllMemo;
%memono @mlast+1;
var LISTFILE[64];
var SIGDATA[20];
var LISTSIG[100];
var SITEN[4];
var SYUTEN[4];
case	(memono==9,
	{Yes},
	{SNDMSG({kaknin_f.snd});
	footnote({メモ９を削除してもよろしいですか？});
	select	({メモ９を削除してもよろしいですか？},
		99999,,	{ は  い },{%memono {9};LISTVIEW},
			{ いいえ },)},
	{No},{LISTVIEW});
