Compare commits
10 Commits
ffb13ee948
...
bf1d811041
Author | SHA1 | Date | |
---|---|---|---|
|
bf1d811041 | ||
|
b7fcd00035 | ||
|
44a23a3a7f | ||
|
d6b7c66a7b | ||
|
5c1c862d5e | ||
|
c939079819 | ||
|
87802fb8c3 | ||
|
d1b66d0c6f | ||
|
0496074951 | ||
|
ee82f99ecc |
93
MQSLoad.java
93
MQSLoad.java
@ -1,12 +1,12 @@
|
|||||||
// $RCSfile: MQSLoad.java,v $
|
// $RCSfile: MQSLoad.java,v $
|
||||||
// $Revision: 1.16 $
|
// $Revision: 1.22 $
|
||||||
// $Name: $
|
// $Name: $
|
||||||
// $Date: 2008/12/09 15:01:02 $
|
// $Date: 2013/11/08 17:15:45 $
|
||||||
// $Author: agibert $
|
// $Author: agibert $
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MQSLoad.java - Data file to MQ/Series queue loader
|
* MQSLoad.java - Data file to MQ/Series queue loader
|
||||||
* Copyright (C) 2001-2006 Arnaud G. Gibert
|
* Copyright (C) 2001-2008 Arnaud G. Gibert
|
||||||
* mailto:arnaud@rx3.net
|
* mailto:arnaud@rx3.net
|
||||||
* http://www.rx3.org/dvp/MQSLoad
|
* http://www.rx3.org/dvp/MQSLoad
|
||||||
*
|
*
|
||||||
@ -28,23 +28,23 @@
|
|||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.text.*;
|
import java.text.*;
|
||||||
import com.ibm.mq.*;
|
import com.ibm.mq.*;
|
||||||
|
import com.ibm.mq.constants.*;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class MQSLoad
|
public class MQSLoad
|
||||||
{
|
{
|
||||||
private String MQSLoad_Revision = "$Revision: 1.16 $";
|
private String MQSLoad_Revision = "$Revision: 1.22 $";
|
||||||
private String MQSLoad_Tag = "$Name: $";
|
private String MQSLoad_Tag = "$Name: $";
|
||||||
private String MQSLoad_Date = "$Date: 2008/12/09 15:01:02 $";
|
private String MQSLoad_Date = "$Date: 2013/11/08 17:15:45 $";
|
||||||
private String MQSLoad_Author = "$Author: agibert $";
|
private String MQSLoad_Author = "$Author: agibert $";
|
||||||
private MQQueueManager QMng = null;
|
private MQQueueManager QMng = null;
|
||||||
private String QMng_Name = "";
|
private String QMng_Name = "";
|
||||||
private MQQueue MsgQ;
|
private MQQueue MsgQ;
|
||||||
private String MsgQ_Name;
|
private String MsgQ_Name;
|
||||||
private int MsgQ_Open_Options = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;
|
private int MsgQ_Open_Options = CMQC.MQOO_OUTPUT | CMQC.MQOO_FAIL_IF_QUIESCING;
|
||||||
|
private boolean Character_Convert = false;
|
||||||
private int Character_Set = 1208;
|
private int Character_Set = 1208;
|
||||||
|
private int Message_Priority = CMQC.MQPRI_PRIORITY_AS_Q_DEF;
|
||||||
private int Sleep_Time = 0;
|
private int Sleep_Time = 0;
|
||||||
private String Field_Break = "";
|
private String Field_Break = "";
|
||||||
private String Message_Break = "\r\n";
|
private String Message_Break = "\r\n";
|
||||||
@ -202,7 +202,7 @@ public class MQSLoad
|
|||||||
//
|
//
|
||||||
//-------------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
private void Arg_Parse( String args[]) throws Exception
|
private void Args_Parse( String args[]) throws Exception
|
||||||
{
|
{
|
||||||
int argc = 0;
|
int argc = 0;
|
||||||
|
|
||||||
@ -223,6 +223,10 @@ public class MQSLoad
|
|||||||
throw new Exception();
|
throw new Exception();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ( args[argc].equals( "-cc"))
|
||||||
|
{
|
||||||
|
Character_Convert = true;
|
||||||
|
}
|
||||||
else if ( args[argc].equals( "-cs"))
|
else if ( args[argc].equals( "-cs"))
|
||||||
{
|
{
|
||||||
if( argc < ( args.length + 1))
|
if( argc < ( args.length + 1))
|
||||||
@ -235,6 +239,18 @@ public class MQSLoad
|
|||||||
throw new Exception();
|
throw new Exception();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ( args[argc].equals( "-mp"))
|
||||||
|
{
|
||||||
|
if( argc < ( args.length + 1))
|
||||||
|
{
|
||||||
|
Message_Priority = Integer.parseInt( args[++argc]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
System.out.println( "Invalid number of command line options...");
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
}
|
||||||
else if ( args[argc].equals( "-st"))
|
else if ( args[argc].equals( "-st"))
|
||||||
{
|
{
|
||||||
if( argc < ( args.length + 1))
|
if( argc < ( args.length + 1))
|
||||||
@ -583,29 +599,28 @@ public class MQSLoad
|
|||||||
//
|
//
|
||||||
//-------------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
private int Msg_Put( MQMessage Output_Msg, int Msg_Id, int Msg_Nb, int Msg_Skip, int Msg_Count) throws Exception
|
private boolean Msg_Put( MQMessage Output_Msg, int Msg_Id, int Msg_Skip, int Msg_Count) throws Exception
|
||||||
{
|
{
|
||||||
if( Msg_Id < Msg_Skip)
|
if( Msg_Id < Msg_Skip)
|
||||||
{
|
|
||||||
Counter_Print( "*");
|
|
||||||
Msg_Skiped_Nb++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if( ( Msg_Count != 0) && ( Msg_Id >= ( Msg_Skip + Msg_Count)))
|
|
||||||
{
|
{
|
||||||
Counter_Print( "#");
|
Counter_Print( "#");
|
||||||
Msg_Skiped_Nb++;
|
Msg_Skiped_Nb++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Output_Msg.messageId = MQC.MQMI_NONE;
|
if( ( Msg_Count != 0) && ( Msg_Id >= ( Msg_Skip + Msg_Count)))
|
||||||
|
{
|
||||||
|
Counter_Print( "*");
|
||||||
|
Msg_Skiped_Nb++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Output_Msg.messageId = CMQC.MQMI_NONE;
|
||||||
MQSPut_Msg( Output_Msg);
|
MQSPut_Msg( Output_Msg);
|
||||||
Output_Msg.clearMessage();
|
Output_Msg.clearMessage();
|
||||||
|
|
||||||
Counter_Print( ".");
|
Counter_Print( ".");
|
||||||
|
|
||||||
Msg_Nb++;
|
|
||||||
Msg_Read_Nb++;
|
Msg_Read_Nb++;
|
||||||
|
|
||||||
Stand_By( Sleep_Time);
|
Stand_By( Sleep_Time);
|
||||||
@ -617,11 +632,11 @@ public class MQSLoad
|
|||||||
if( ( Msg_Count != 0) && ( Msg_Id >= ( Msg_Skip + Msg_Count)))
|
if( ( Msg_Count != 0) && ( Msg_Id >= ( Msg_Skip + Msg_Count)))
|
||||||
{
|
{
|
||||||
/* Last Message to be read */
|
/* Last Message to be read */
|
||||||
return( -1);
|
return( false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return( Msg_Nb);
|
return( true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -643,13 +658,17 @@ public class MQSLoad
|
|||||||
int buf_size, work_win_size, break_win_size, prefetch_size, fetch_size;
|
int buf_size, work_win_size, break_win_size, prefetch_size, fetch_size;
|
||||||
int cur_buf_size, cur_work_win_size, cur_pos, msg_break;
|
int cur_buf_size, cur_work_win_size, cur_pos, msg_break;
|
||||||
int msg_id = 0;
|
int msg_id = 0;
|
||||||
int msg_nb = 0;
|
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
output_msg.format = MQC.MQFMT_STRING;
|
if( Character_Convert)
|
||||||
|
{
|
||||||
|
output_msg.format = CMQC.MQFMT_STRING;
|
||||||
|
}
|
||||||
|
|
||||||
output_msg.characterSet = Character_Set;
|
output_msg.characterSet = Character_Set;
|
||||||
|
output_msg.priority = Message_Priority;
|
||||||
|
|
||||||
work_win_size = 1024 * 64;
|
work_win_size = 1024 * 64;
|
||||||
break_win_size = Field_Break.length() + message_break.length;
|
break_win_size = Field_Break.length() + message_break.length;
|
||||||
@ -725,7 +744,7 @@ public class MQSLoad
|
|||||||
/* send the message */
|
/* send the message */
|
||||||
// System.out.println( "* Put Msg()");
|
// System.out.println( "* Put Msg()");
|
||||||
|
|
||||||
if( ( msg_nb = Msg_Put( output_msg, msg_id, msg_nb, Msg_Skip, Msg_Count)) == -1)
|
if( Msg_Put( output_msg, msg_id, Msg_Skip, Msg_Count) == false)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -754,7 +773,7 @@ public class MQSLoad
|
|||||||
{
|
{
|
||||||
/* flush the message */
|
/* flush the message */
|
||||||
// System.out.println( "* Put Msg()");
|
// System.out.println( "* Put Msg()");
|
||||||
Msg_Put( output_msg, msg_id, msg_nb, Msg_Skip, Msg_Count);
|
Msg_Put( output_msg, msg_id, Msg_Skip, Msg_Count);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -774,10 +793,11 @@ public class MQSLoad
|
|||||||
//
|
//
|
||||||
//-------------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
private void Print_Usage( ) throws Exception
|
private void Usage_Print( ) throws Exception
|
||||||
{
|
{
|
||||||
System.out.println( "Usage: MQSLoad [-qm \"Output_QueueMng_Name\"] [-cs \"character_set\"] [-st \"sleep_time\"] [-fb \"field_break\"] [-mb \"message_break\"] [-mt \"message_tail\"] [-kmb] [-ms \"message_skip\"] [-mc \"message_count\"] [-rc \"repeat_count\"] <Output_MsgQueue_Name> <Input_File_Name>");
|
System.out.println( "Usage: MQSLoad [-qm \"Output_QueueMng_Name\"] [-cc] [-cs \"character_set\"] [-mp \"message_priority\"] [-st \"sleep_time\"] [-fb \"field_break\"] [-mb \"message_break\"] [-mt \"message_tail\"] [-kmb] [-ms \"message_skip\"] [-mc \"message_count\"] [-rc \"repeat_count\"] <Output_MsgQueue_Name> <Input_File_Name>");
|
||||||
System.out.println( " Default: Output QueueMng Name: (" + QMng_Name + ") Character Set: (" + Character_Set + ") Sleep Time: (" + Sleep_Time + ") Field Break: (" + Str_UnFormat( Field_Break) + ") Message Break: (" + Str_UnFormat( Message_Break) + ") Message Tail: (" + Str_UnFormat( Message_Tail) + ") Keep Message Break: (" + Keep_Message_Break + ") Message Skip: (" + Message_Skip + ") Message Count: (" + Message_Count + ") Repeat Count: (" + Repeat_Count + ")");
|
System.out.println( "");
|
||||||
|
System.out.println( " Default: Output QueueMng Name: (" + QMng_Name + ") Character Convert: (" + Character_Convert + ") Character Set: (" + Character_Set + ") Message Priority: (" + Message_Priority + ") Sleep Time: (" + Sleep_Time + ") Field Break: (" + Str_UnFormat( Field_Break) + ") Message Break: (" + Str_UnFormat( Message_Break) + ") Message Tail: (" + Str_UnFormat( Message_Tail) + ") Keep Message Break: (" + Keep_Message_Break + ") Message Skip: (" + Message_Skip + ") Message Count: (" + Message_Count + ") Repeat Count: (" + Repeat_Count + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -788,10 +808,10 @@ public class MQSLoad
|
|||||||
//
|
//
|
||||||
//-------------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
private void Print_Args( ) throws Exception
|
private void Args_Print( ) throws Exception
|
||||||
{
|
{
|
||||||
System.out.println( "Output QueueMng Name: (" + QMng_Name + ") Output MsgQueue Name: (" + MsgQ_Name + ") Input File Name: (" + File_Name + ")");
|
System.out.println( "Output QueueMng Name: (" + QMng_Name + ") Output MsgQueue Name: (" + MsgQ_Name + ") Input File Name: (" + File_Name + ")");
|
||||||
System.out.println( "Character Set: (" + Character_Set + ") Sleep Time: (" + Sleep_Time + ") Field Break: (" + Str_UnFormat( Field_Break) + ") Message Break: (" + Str_UnFormat( Message_Break) + ") Message Tail: (" + Str_UnFormat( Message_Tail) + ") Keep Message Break: (" + Keep_Message_Break + ") Message Skip: (" + Message_Skip + ") Message Count: (" + Message_Count + ") Repeat Count: (" + Repeat_Count + ")");
|
System.out.println( "Character Convert: (" + Character_Convert + ") Character Set: (" + Character_Set + ") Message Priority: (" + Message_Priority + ") Sleep Time: (" + Sleep_Time + ") Field Break: (" + Str_UnFormat( Field_Break) + ") Message Break: (" + Str_UnFormat( Message_Break) + ") Message Tail: (" + Str_UnFormat( Message_Tail) + ") Keep Message Break: (" + Keep_Message_Break + ") Message Skip: (" + Message_Skip + ") Message Count: (" + Message_Count + ") Repeat Count: (" + Repeat_Count + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -808,6 +828,7 @@ public class MQSLoad
|
|||||||
long time_begin, time_end;
|
long time_begin, time_end;
|
||||||
double time_elapsed, speed;
|
double time_elapsed, speed;
|
||||||
NumberFormat nf = NumberFormat.getInstance();
|
NumberFormat nf = NumberFormat.getInstance();
|
||||||
|
RandomAccessFile input_file = null;
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -816,21 +837,23 @@ public class MQSLoad
|
|||||||
|
|
||||||
if( ( args.length < 2) || ( args.length > 19))
|
if( ( args.length < 2) || ( args.length > 19))
|
||||||
{
|
{
|
||||||
Print_Usage();
|
Usage_Print();
|
||||||
System.exit( 1);
|
System.exit( 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
System.out.println( "MQS Load Starting...");
|
System.out.println( "MQS Load Starting...");
|
||||||
|
|
||||||
Arg_Parse( args);
|
Args_Parse( args);
|
||||||
Print_Args();
|
Args_Print();
|
||||||
|
|
||||||
MQSInit();
|
MQSInit();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
RandomAccessFile input_file = new RandomAccessFile( File_Name, "r");
|
input_file = new RandomAccessFile( File_Name, "r");
|
||||||
|
|
||||||
|
System.out.println( "Legend: .: Loaded #: Skiped");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
45
ReadMe.txt
45
ReadMe.txt
@ -1,7 +1,7 @@
|
|||||||
# $RCSfile: ReadMe.txt,v $
|
# $RCSfile: ReadMe.txt,v $
|
||||||
# $Revision: 1.8 $
|
# $Revision: 1.11 $
|
||||||
# $Name: $
|
# $Name: $
|
||||||
# $Date: 2007/12/11 16:46:37 $
|
# $Date: 2009/01/05 17:45:40 $
|
||||||
# $Author: agibert $
|
# $Author: agibert $
|
||||||
|
|
||||||
|
|
||||||
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
Compilation:
|
Compilation:
|
||||||
------------
|
------------
|
||||||
|
|
||||||
- Just type: "javac MQSLoad.java" !
|
- Just type: "javac MQSLoad.java" !
|
||||||
|
|
||||||
|
|
||||||
@ -21,10 +22,42 @@ Installation:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
------
|
||||||
|
|
||||||
|
MQSLoad [-qm "Output_QueueMng_Name"] [-cc] [-cs "character_set"] [-mp "message_priority"] [-st "sleep_time"] [-fb "field_break"] [-mb "message_break"] [-mt "message_tail"] [-kmb] [-ms "message_skip"] [-mc "message_count"] [-rc "repeat_count"] <Output_MsgQueue_Name> <Input_File_Name>
|
||||||
|
|
||||||
|
Default: Output QueueMng Name: () Character Convert: (false) Character Set: (1208) Message Priority: (-1) Sleep Time: (0) Field Break: () Message Break: (\r\n) Message Tail: () Keep Message Break: (false) Message Skip: (0) Message Count: (0) Repeat Count: (1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
----------
|
||||||
|
|
||||||
|
- Optional arguments:
|
||||||
|
-qm "Output_QueueMng_Name": Name of the queue manager to use,
|
||||||
|
-cc "character_convert": Switch on the caracter conversion (Set the MQMessage format to MQC.MQFMT_STRING),
|
||||||
|
-cs "character_set": MQMessage character set,
|
||||||
|
-mp "message_priority": Priority of the message,
|
||||||
|
-st "sleep_time": Delay between message sending,
|
||||||
|
-fb "field_break": String used as field separator,
|
||||||
|
-mb "message_break": String used as message separator,
|
||||||
|
-mt "message_tail": String added at the message end,
|
||||||
|
-kmb "keep_message_break": Keep the message break (inserted at the message end, next to the message tail),
|
||||||
|
-ms "message_skip": Number of messages to skip before to start the loading,
|
||||||
|
-mc "message_count": Number of messages to load,
|
||||||
|
-rc "repeat_count": Number of time the whole process (start of file + skip + load) should be repeated.
|
||||||
|
|
||||||
|
- Mandatory arguments:
|
||||||
|
<Output_MsgQueue_Name>: Name of the output message queue to load to,
|
||||||
|
<Input_File_Name>: Name of the input file to load from.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
------
|
------
|
||||||
|
|
||||||
- MQSLoad has been tested with MQ/Series 5.2, 5.3 and WMQ 6.0
|
- MQSLoad has been tested with WMQ 6.0
|
||||||
|
|
||||||
- "-fb" and "-mb" arguments accept a string with formated escape character:
|
- "-fb" and "-mb" arguments accept a string with formated escape character:
|
||||||
+ "\n" for newline,
|
+ "\n" for newline,
|
||||||
@ -54,9 +87,15 @@ Usage Examples:
|
|||||||
|
|
||||||
- To load a swift batch file "swift-batch.txt" with "---MESSAGE-BREAK---" message separator into the MQ/Series "SWIFT-QUEUE" use:
|
- To load a swift batch file "swift-batch.txt" with "---MESSAGE-BREAK---" message separator into the MQ/Series "SWIFT-QUEUE" use:
|
||||||
java MQSLoad -mb "---MESSAGE-BREAK---\r\n" SWIFT-QUEUE swift-batch.txt
|
java MQSLoad -mb "---MESSAGE-BREAK---\r\n" SWIFT-QUEUE swift-batch.txt
|
||||||
|
|
||||||
|
- To load 10 time the third message of the file "swift-batch.txt" with "---MESSAGE-BREAK---" as message separator into the MQ/Series "SWIFT-QUEUE" use:
|
||||||
|
java MQSLoad -mb "---MESSAGE-BREAK---\r\n" -ms 2 -mc 1 -rc 10 SWIFT-QUEUE swift-batch.txt
|
||||||
|
|
||||||
- To load a raw swift batch file "swift-batch-raw.txt" with "}\r\n" message break into the MQ/Series "SWIFT-QUEUE" and by keeping message break separator use:
|
- To load a raw swift batch file "swift-batch-raw.txt" with "}\r\n" message break into the MQ/Series "SWIFT-QUEUE" and by keeping message break separator use:
|
||||||
java MQSLoad -mb "}\r\n" -kmb SWIFT-QUEUE swift-batch-raw.txt
|
java MQSLoad -mb "}\r\n" -kmb SWIFT-QUEUE swift-batch-raw.txt
|
||||||
|
|
||||||
- To load a raw swift batch file "swift-batch-raw.txt" with "}\r\n" message break into the MQ/Series "SWIFT-QUEUE" and by keeping only "}" as end of message use:
|
- To load a raw swift batch file "swift-batch-raw.txt" with "}\r\n" message break into the MQ/Series "SWIFT-QUEUE" and by keeping only "}" as end of message use:
|
||||||
java MQSLoad -mb "}\r\n" -mt "}" SWIFT-QUEUE swift-batch-raw.txt
|
java MQSLoad -mb "}\r\n" -mt "}" SWIFT-QUEUE swift-batch-raw.txt
|
||||||
|
|
||||||
- To load a csv batch file "batch.csv" with ";" field separator into the MQ/Series "DATA-QUEUE" use:
|
- To load a csv batch file "batch.csv" with ";" field separator into the MQ/Series "DATA-QUEUE" use:
|
||||||
java MQSLoad -fb ";" DATA-QUEUE csv-batch.csv
|
java MQSLoad -fb ";" DATA-QUEUE csv-batch.csv
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# $RCSfile: ReleaseNotes.txt,v $
|
# $RCSfile: ReleaseNotes.txt,v $
|
||||||
# $Revision: 1.12 $
|
# $Revision: 1.16 $
|
||||||
# $Name: $
|
# $Name: $
|
||||||
# $Date: 2008/12/04 10:45:06 $
|
# $Date: 2009/01/05 17:43:32 $
|
||||||
# $Author: agibert $
|
# $Author: agibert $
|
||||||
|
|
||||||
|
|
||||||
@ -9,13 +9,16 @@
|
|||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
MQSLoad V 2.0.0 - A. Gibert - 2008/12/03
|
MQSLoad V 2.0.0 - A. Gibert - 2008/01/05
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
- Major code cleanup,
|
- Major code rewrite and cleanup,
|
||||||
- Add message skip option "-ms",
|
- Add message skip option "-ms",
|
||||||
- Add message count option "-mc",
|
- Add message count option "-mc",
|
||||||
- Add repeat count option "-rc",
|
- Add repeat count option "-rc",
|
||||||
|
- Add character set option "-cs",
|
||||||
|
- Add character convert option "-cc",
|
||||||
|
- Add message priority option "-mp",
|
||||||
- Fix Java 1.4 compatibility.
|
- Fix Java 1.4 compatibility.
|
||||||
|
|
||||||
|
|
||||||
|
9
ToDo.txt
9
ToDo.txt
@ -1,12 +1,13 @@
|
|||||||
# $RCSfile: ToDo.txt,v $
|
# $RCSfile: ToDo.txt,v $
|
||||||
# $Revision: 1.2 $
|
# $Revision: 1.3 $
|
||||||
# $Name: $
|
# $Name: $
|
||||||
# $Date: 2002/04/23 16:25:50 $
|
# $Date: 2008/12/12 10:47:06 $
|
||||||
# $Author: giberta1 $
|
# $Author: agibert $
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- write a better documentation !
|
- Add stdin pipe support,
|
||||||
|
- Write a better documentation !
|
||||||
- ...
|
- ...
|
||||||
|
Loading…
Reference in New Issue
Block a user