📄 findata.fxjdata.cs
字号:
}
return tableNames;
}
public string GetTableDef(string dataType, string descDataType, bool delOldTable)
{
dataType = dataType.Trim(); descDataType = descDataType.Trim();
string result = "";
fileStruct dzhFileStruct = new fileStruct((DataTypes)Enum.Parse(typeof(DataTypes), dataType.ToLower()));
switch (descDataType.ToUpper())
{
case "SAS":
for (int i = 0; i < dzhFileStruct.fields.GetLength(0); i++)
{
if (result != "") result += ",";
result += dzhFileStruct.fields[i, 0];//字段
if (" ,code,string".IndexOf(dzhFileStruct.fields[i, 2]) > 0)
{
result += " char(" + dzhFileStruct.fields[i, 3] + ") format=$" + dzhFileStruct.fields[i, 3] + "."; //字符串
}
else if (" ,int,single,double".IndexOf(dzhFileStruct.fields[i, 2]) > 0)
{
result += " num "; //数值类型
}
else if (" ,date".IndexOf(dzhFileStruct.fields[i, 2]) > 0)
{
result += " num format=YYMMDD10."; //date类型
}
else if (" ,datetime".IndexOf(dzhFileStruct.fields[i, 2]) > 0)
{
result += " num format=datetime."; //datetime类型
}
result += " label='" + dzhFileStruct.fields[i, 1] + "'";//标签
}
result = "create table FinData." + dataType + "(" + result + ");";
if (delOldTable == true)
{
result = "drop table FinData." + dataType + ";" + result;
}
result = "proc sql;" + result + "quit;";
break;
case "SASINPUT"://用于SAS直接读取数据时所用的INPUT语句,需进一步修改
for (int i = 0; i < dzhFileStruct.fields.GetLength(0); i++)
{
if (" ,code,string".IndexOf(dzhFileStruct.fields[i, 2]) > 0)
{
result += " @(p+" + dzhFileStruct.fields[i, 5] + ") " + dzhFileStruct.fields[i, 0] + " $" + dzhFileStruct.fields[i, 3] + "."; //字符串
}
else if (" ,int,date,datetime".IndexOf(dzhFileStruct.fields[i, 2]) > 0)
{
result += " @(p+" + dzhFileStruct.fields[i, 5] + ") " + dzhFileStruct.fields[i, 0] + " ib" + dzhFileStruct.fields[i, 3] + "."; //数值类型
}
else if (" ,single".IndexOf(dzhFileStruct.fields[i, 2]) > 0)
{
result += " @(p+" + dzhFileStruct.fields[i, 5] + ") " + dzhFileStruct.fields[i, 0] + " float" + dzhFileStruct.fields[i, 3] + "."; //数值类型
}
else if (" ,double".IndexOf(dzhFileStruct.fields[i, 2]) > 0)
{
result += " @(p+" + dzhFileStruct.fields[i, 5] + ") " + dzhFileStruct.fields[i, 0] + " rb" + dzhFileStruct.fields[i, 3] + "."; //数值类型
}
}
break;
case "FIELDS"://列出字段名称
for (int i = 0; i < dzhFileStruct.fields.GetLength(0); i++)
{
result += " " + dzhFileStruct.fields[i, 0] ;
}
break;
default:
result = "";
break;
}
return result;
}
public string GetCodeType(string code)
{
code = code.Trim().ToUpper();
if (Regex.IsMatch(code, @"(SH000300)") == true)
{
return "zs";
}
if (Regex.IsMatch(code, @"(SH60[0-8]\d{3})|(SH90\d{4})|(SZ00[01256789]\d{3})|(SZ20\d{4})|(SZ4[02]\d{4})") == true)
{
return "gp";
}
else if (Regex.IsMatch(code, @"(SH00000\d)|(SH00001[0-6])") == true)
{
return "zs";
}
else if (Regex.IsMatch(code, @"(SH[012]\d{5})|(SZ1[0123]\d{4})") == true && Regex.IsMatch(code, @"(SH181\d{3})") == false && Regex.IsMatch(code, @"(SH190\d{3})") == false)
{
return "zq";
}
else if (Regex.IsMatch(code, @"(SH5[01]\d{4})|(SZ184\d{3})|(SZ1[56]\d{4})") == true)
{
return "jj";
}
else if (Regex.IsMatch(code, @"(SH58\d{4})|(SZ03\d{4})") == true)
{
return "qz";
}
else if (Regex.IsMatch(code, @"(SH000\d{3})|(SZ399\d{3})|(SH8[013]\d{4})") == true)
{
return "zs";
}
return "";
}
private string [] GetCodes(string Market) //读取Day.dat中的代码
{
//沪市指数代码转换表,大智慧同时保存沪市两类代码
string[,] codesRename = new string[,]
{
{"SH1A0001","SH000001"},
{"SH1A0002","SH000002"},
{"SH1A0003","SH000003"},
{"SH1B0001","SH000004"},
{"SH1B0002","SH000005"},
{"SH1B0004","SH000006"},
{"SH1B0005","SH000007"},
{"SH1B0006","SH000008"},
{"SH1B0007","SH000010"},
{"SH1B0008","SH000011"},
{"SH1B0009","SH000012"},
{"SH1B0010","SH000013"},
{"SH1C0003","SH000016"}
};
long len = -1;
long pos = 0;
int flag;
if (DzhDataPath == "")
{
msg = @"无法在注册表中到大智慧数据文件目录,请自行将属性 DzhDataPath设置为有效路径,如c:\dzh\data\。";
return new string[1] { null };
}
Market = Market.Trim().ToUpper();
if (Market == "")
{
msg = "Market参数只能是市场简称,如沪市为SH,深市为SZ,香港为HK等。";
return null;
}
string DzhFile = dzhDataPath + Market+@"\DAY.DAT";
msg="";
if (!File.Exists(DzhFile)) //DAY.DAT文件不存在
{
msg = DzhFile + "不存在!";
return new string[1] { null };
}
try
{
this.checkFileStream(DzhFile);
int secCounts = 0;//文件中证券总数
string code = "";
len = fs.Length;
fs.Position=0;
flag = br.ReadInt32();
if (flag == -65823756) //0xFC139BF4
{
fs.Position = 12;
secCounts=br.ReadInt32();
string[] codes = new string[secCounts];
for (int i = 0; i < secCounts; i++)
{
pos = 24 + 64*i;
if (pos <= len)
{
fs.Position = pos;
code = new string(br.ReadChars(10));//大智慧用10个字节保存代码,一般用6个字节
code = Market + code.Replace("\0", "");
code = code.Replace("HKHK", "HK"); //香港证券代码本身保存为HKxxxx
code = code.ToUpper();
for (int icode = 0; icode < codesRename.GetLength(0); icode++)
{
code = code.Replace(codesRename[icode, 0], codesRename[icode, 1]);
}
codes[i] = code;
}
}
//fs.Close();
msg = "";
return codes;
}
}
catch(Exception e)
{
msg=e.Message;
}
return new string[1] { null };
}
public string[,] GetFields(string dataType)
{
msg = "";
try
{
DataTypes d = (DataTypes)Enum.Parse(typeof(DataTypes), dataType.ToLower());
return GetFields(d);
}
catch
{
msg = @"输入的参数有误。参数只能是:";
foreach (string s in Enum.GetNames(typeof(DataTypes)))
msg += " \"" + s + "\"";
msg += @" 或者 ";
foreach (int i in Enum.GetValues(typeof(DataTypes)))
msg += " " + i.ToString();
return new string[1, 1] { { null } };
}
}
private string[,] GetFields(DataTypes dataType)
{
msg = "";
try
{
fileStruct dzhFileStruct = new fileStruct(dataType);
string[,] fields = new string[dzhFileStruct.fields.GetLength(0), 3];
//fields[0, 0] = "<字段名>"; fields[0, 1] = "<含义>"; fields[0, 2] = "<类型>";
for (int i = 0; i < dzhFileStruct.fields.GetLength(0); i++)
{
for (int j = 0; j < 3; j++)
{
fields[i, j] = dzhFileStruct.fields[i, j];
}
}
return fields;
}
catch
{
msg = "错误"; return new string[1, 1] { { null } };
}
}
public string[,] GetData(string dataType, string code)
{
return GetData(dataType, code, "");
}
public string[,] GetData(string dataType, string code, string newFileName)
{
try
{
DataTypes d = (DataTypes)Enum.Parse(typeof(DataTypes), dataType.ToLower());
return GetData(d, code,newFileName);
}
catch
{
msg = @"输入的参数有误。第一个参数只能是:";
foreach (string s in Enum.GetNames(typeof(DataTypes)))
msg += " \"" + s + "\"";
msg += @" 或者 ";
foreach (int i in Enum.GetValues(typeof(DataTypes)))
msg += " " + i.ToString() ;
return new string[1, 1] { { null } };
}
}
public string[,] GetData2(string dataType, string code, string newFileName)
{
try
{
DataTypes d = (DataTypes)Enum.Parse(typeof(DataTypes), dataType.ToLower());
return GetData(d, code, newFileName);
}
catch
{
msg = @"输入的参数有误。第一个参数只能是:";
foreach (string s in Enum.GetNames(typeof(DataTypes)))
msg += " \"" + s + "\"";
msg += @" 或者 ";
foreach (int i in Enum.GetValues(typeof(DataTypes)))
msg += " " + i.ToString();
return new string[1, 1] { { null } };
}
}
private string[,] GetData(DataTypes dataType,string code,string newFileName) //读取数据,重载
{
if (dataType == DataTypes.bk) return GetBK(code);
if (dataType == DataTypes.pj) return GetPJ(code);
if (dataType == DataTypes.hqfq) return GetHqfq(dataType,code,newFileName);
#region 读取数据前初始化
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -