Exemplo n.º 1
0
 //ISO8211 레코드 데이터 포맷 처리 함수
 private Type ReadDataOfDataFormat(ISO_8211_Record_DataDesc.FORMAT_CONTROL fORMAT_CONTROL)
 {
     switch (fORMAT_CONTROL)
     {
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.A:
             return typeof(string);
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.I:
             break;
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.R:
             break;
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.B:
             break;
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.b1:
             return typeof(uint);
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.b2:
             return typeof(int);
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.b4:
             return typeof(double);
         default:
             break;
     }
     return null;
 }
Exemplo n.º 2
0
 private int subRecordBinding(ISO_8211_Record_DataDesc.FormatControl fc, byte[] unitBuff, int fieldPos,ISO_8211_Record_SubField subRecord)
 {
     int length = fc.length;
     byte[] buff;
     switch (fc.type)
     {
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.A:
             StringBuilder sb = new StringBuilder();
             char ch;
             if (length == 0)
             {
                 while ((ch =Convert.ToChar(unitBuff[fieldPos++])) != (char)DELIMITERS.FT)
                     sb.Append(ch);
             }
             else
             {
                 for (int t = 0; t < length; t++)
                 {
                     ch = Convert.ToChar(unitBuff[fieldPos++]);
                     sb.Append(ch);
                 }
             }
             subRecord.type = ISO_8211_Record_DataDesc.FORMAT_CONTROL.A;
             subRecord.value = Encoding.ASCII.GetBytes(sb.ToString());
             break;
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.I:
             break;
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.R:
             break;
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.B:
             break;
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.b1:
             buff = new byte[length];
             Array.Copy(unitBuff, fieldPos, buff, 0, length);
             fieldPos += length;
             subRecord.type = ISO_8211_Record_DataDesc.FORMAT_CONTROL.b1;
             subRecord.value = buff;
             break;
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.b2:
             buff = new byte[length];
             Array.Copy(unitBuff, fieldPos, buff, 0, length);
             fieldPos += length;
             subRecord.type = ISO_8211_Record_DataDesc.FORMAT_CONTROL.b2;
             subRecord.value = buff;
             break;
         case ISO_8211_Record_DataDesc.FORMAT_CONTROL.b4:
             buff = new byte[length];
             Array.Copy(unitBuff, fieldPos, buff, 0, length);
             fieldPos += length;
             subRecord.type = ISO_8211_Record_DataDesc.FORMAT_CONTROL.b4;
             subRecord.value = buff;
             break;
         default:
             break;
     }
     return fieldPos;
 }
Exemplo n.º 3
0
        //Load DataDescriptions Record
        private Dictionary<string, ISO_8211_Record_DataDesc> Load_DataDescriptionRecord(ISO_8211_Leader leader, List<ISO_8211_Directory> dirList, int fullPos)
        {
            Dictionary<string, ISO_8211_Record_DataDesc> descList = new Dictionary<string, ISO_8211_Record_DataDesc>();
            int descPos = leader.bafa+fullPos;
            ISO_8211_Directory entry;
            int sp = 0;
            int ep = 0;

            for (int i = 0; i < dirList.Count; i++)
            {
                entry = dirList[i];
                sp = descPos;
                ep = descPos;

                ISO_8211_Record_DataDesc desc = new ISO_8211_Record_DataDesc();

                //Field controls
                while (fullData[ep++] != (int)DELIMITERS.FCT) ;
                char[] fieldControlBuff = new char[ep - sp];
                Array.Copy(fullData, sp, fieldControlBuff, 0, ep - sp);
                desc.field_control = fieldControlBuff;
                sp = ep;
                //Console.WriteLine("Field Controls : " + new string(fieldControlBuff));

                //DataField name
                while (fullData[ep++] != (int)DELIMITERS.FT) ;
                char[] dataFieldNameBuff = new char[ep - sp];
                Array.Copy(fullData, sp, dataFieldNameBuff, 0, ep - sp);
                desc.field_name = new string(dataFieldNameBuff);
                sp = ep;
                //Console.WriteLine("DataField name : " + new string(dataFieldNameBuff));

                //Array descriptor
                while (fullData[ep++] != (int)DELIMITERS.UT) ;
                char[] arrayDescStrBuff = new char[ep - sp];
                Array.Copy(fullData, sp, arrayDescStrBuff, 0, ep - sp);
                if (arrayDescStrBuff.Contains((char)DELIMITERS.FT))
                {
                    int arrayDescIndex = 0;
                    while (arrayDescStrBuff[arrayDescIndex++] != (char)DELIMITERS.FT) ;
                    char[] arrayDescBuff = new char[arrayDescIndex];
                    Array.Copy(arrayDescStrBuff, 0, arrayDescBuff, 0, arrayDescIndex);
                    desc.array_desc_str = new string(arrayDescBuff);
                    desc.array_descriptions = SplitArrayDescStr(desc.array_desc_str,leader.sizeOfFieldTagField-48);
                    //Console.WriteLine("Array descriptor : " + desc.array_desc_str);

                    int typeIndex = arrayDescIndex;
                    while (arrayDescStrBuff[typeIndex++] != (char)DELIMITERS.UT) ;
                    char[] fmfBuff = new char[typeIndex - arrayDescIndex];
                    Array.Copy(arrayDescStrBuff, arrayDescIndex, fmfBuff, 0, typeIndex - arrayDescIndex);
                    desc.format_control_str = new string(fmfBuff);
                    desc.format_controls = SplitFormatControlStr(desc.format_control_str);
                    //Console.WriteLine("Format Control : " + desc.format_control_str);
                }
                else
                {
                    desc.array_desc_str = new string(arrayDescStrBuff);
                    desc.array_descriptions = SplitArrayDescStr(desc.array_desc_str, leader.sizeOfFieldTagField - 48);
                    //Console.WriteLine("Array descriptor : " + desc.array_desc_str.ToString());
                }
                descList.Add(new string(dirList[i].Tag),desc);
                descPos = descPos + entry.Length;
                //Console.WriteLine();
            }
            return descList;
        }