public static void ConsoleReadLine(Characters destination, int length) { string s = Console.ReadLine(); if (s.Length > length) s = s.Substring(0, length); destination.ToBlanks(length); FortranLib.Copy(destination, s); }
public static void Date_And_Time(Characters date, Characters time) { DateTime _dateTime = DateTime.Now; date.ToBlanks(8); time.ToBlanks(10); FortranLib.Copy(date, _dateTime.ToString("yyyyMMdd")); FortranLib.Copy(time, _dateTime.ToString("hhmmss.fff")); }
public static bool ReadFloat(Characters source, int width, int d, out float destination) { string numberStg = source.Substring(1, width).ToString(); float internalValue; bool isOK = float.TryParse(numberStg, out internalValue); destination = internalValue; if (numberStg.Contains(".") == false) { destination *= (float)Math.Pow(10, -d); } return isOK; }
public static void WriteFloat(Characters destination, float number, int width, int d) { //The term w must be large enough to include: //• a minus sign for a negative value or a plus sign (when SP is in effect) for a positive value //• the decimal point //• d digits to the right of the decimal //If w is insufficiently large, the entire field width is filled with asterisks. //Therefore, w must be > d + 2. destination.ToBlanks(width); string s = ""; if (width <= d + 2) { s = new string('*', width); } else { char[] formatCharArray = new char[width]; for (int i = 0; i < formatCharArray.Length; i++) formatCharArray[i] = '#'; for (int i = 0; i < d; i++) formatCharArray[i] = '0'; formatCharArray[d] = '.'; Array.Reverse(formatCharArray); string format = new string(formatCharArray); s = number.ToString(format); } if (s.Length > width) { s = new string('*', width); } else { s = new string(' ', width - s.Length) + s; } FortranLib.Copy(destination, s); }
public static int INDEX(Characters chars, Characters value) { return FortranLib.INDEX(chars.ToString(), value.ToString()); }
public static int INDEX(Characters chars, string value) { return FortranLib.INDEX(chars.ToString(), value, false); }
public static int INDEX(Characters chars, string value, bool back) { return FortranLib.INDEX(chars.ToString(), value, back); }
public static void Copy(Characters destination, string source) { FortranLib.Copy(destination.CharArray, 1, source.ToCharArray()); }
public static void Copy(Characters destination, int startIndex, int lastIndex, string source) { FortranLib.Copy(destination.CharArray, startIndex, lastIndex, source.ToCharArray()); }
public static void Copy(Characters destination, Characters source) { FortranLib.Copy(destination.CharArray, 1, source.CharArray); }
public Characters Substring(int startIndex, int lastIndex) { int length = lastIndex - startIndex + 1; Characters sub = new Characters(length); startIndex--; //C# index Array.Copy(this._CharArray, startIndex, sub.CharArray, 0, length); return sub; }
public void Replace(Characters source) { this.Replace(source.CharArray); }
public static Characters Add(char[] c1, char[] c2) { Characters newCharacters = new Characters(c1.Length + c2.Length); Array.Copy(c1, newCharacters.CharArray, c1.Length); Array.Copy(c2, 0, newCharacters.CharArray, c1.Length, c2.Length); return newCharacters; }
public static void WriteInt(Characters destination, int number, int width, int m) { //w is a nonzero, unsigned integer constant denoting the size of //the external field, including blanks and a sign, if necessary. //A minus sign (-) is always printed on output if the number //is negative. If the number is positive, a plus sign (+) is //printed only if SP is in effect. //m is an unsigned integer constant denoting the minimum //number of digits required on output. m is ignored on input. //The value of m must not exceed w; if m is omitted, a value of //1 is assumed. //Examples of I Editing on Output //Value Format Output //-12 I7.6 -000012 //12345 I5 12345 destination.ToBlanks(width); char[] formatCharArray = new char[width]; for (int i = 0; i < formatCharArray.Length; i++) formatCharArray[i] = '#'; for (int i = 0; i < m; i++) formatCharArray[i] = '0'; Array.Reverse(formatCharArray); string format = new string(formatCharArray); string s = number.ToString(format); if (s.Length > width) { s = new string('*', width); } else { s = new string(' ', width - s.Length) + s; } FortranLib.Copy(destination, s); }
public static int LEN_TRIM(Characters chars) { return chars.LenTrim(); }
public static int SCAN(Characters charArray, string set) { return FortranLib.SCAN(charArray.ToString(), set); }
public static void Copy(Characters destination, int startIndex, Characters source) { FortranLib.Copy(destination.CharArray, startIndex, source.CharArray); }