Initial import.
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/.classpath Fri Jun 01 18:46:53 2007 +0000
1.3 @@ -0,0 +1,11 @@
1.4 +<?xml version="1.0" encoding="UTF-8"?>
1.5 +<classpath>
1.6 + <classpathentry excluding="bin/|dist/|ftptemp/|res/|testdata/" path="" kind="src"/>
1.7 + <classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER" kind="con"/>
1.8 + <classpathentry sourcepath="swt-win/src.zip" path="swt-win/swt.jar" kind="lib">
1.9 + <attributes>
1.10 + <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="RepDev/swt-win"/>
1.11 + </attributes>
1.12 + </classpathentry>
1.13 + <classpathentry path="" kind="output"/>
1.14 +</classpath>
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/.project Fri Jun 01 18:46:53 2007 +0000
2.3 @@ -0,0 +1,19 @@
2.4 +<?xml version="1.0" encoding="UTF-8"?>
2.5 +<projectDescription>
2.6 + <name>RepDev</name>
2.7 + <comment></comment>
2.8 + <projects>
2.9 + </projects>
2.10 + <buildSpec>
2.11 + <buildCommand>
2.12 + <name>org.eclipse.jdt.core.javabuilder</name>
2.13 + <arguments>
2.14 + </arguments>
2.15 + </buildCommand>
2.16 + </buildSpec>
2.17 + <natures>
2.18 + <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
2.19 + <nature>org.eclipse.jdt.core.javanature</nature>
2.20 + <nature>org.eclipse.jem.beaninfo.BeanInfoNature</nature>
2.21 + </natures>
2.22 +</projectDescription>
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/.settings/org.eclipse.jdt.core.prefs Fri Jun 01 18:46:53 2007 +0000
3.3 @@ -0,0 +1,7 @@
3.4 +#Sat Jul 29 16:22:50 EDT 2006
3.5 +eclipse.preferences.version=1
3.6 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
3.7 +org.eclipse.jdt.core.compiler.compliance=1.5
3.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
3.9 +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
3.10 +org.eclipse.jdt.core.compiler.source=1.5
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/build.xml Fri Jun 01 18:46:53 2007 +0000
4.3 @@ -0,0 +1,49 @@
4.4 +<project name="RepDev" default="dist" basedir=".">
4.5 + <description>
4.6 + Creates a /bin directory that other people can checkout just for testing purposes
4.7 + </description>
4.8 + <!-- set global properties for this build -->
4.9 + <property name="src" location="./" />
4.10 + <property name="build" location="bin" />
4.11 + <property name="dist" location="dist" />
4.12 +
4.13 + <target name="init">
4.14 + <!-- Create the time stamp -->
4.15 + <tstamp />
4.16 + <!-- Create the build directory structure used by compile -->
4.17 + <mkdir dir="${build}" />
4.18 + </target>
4.19 +
4.20 +
4.21 + <target name="compile" depends="init" description="compile the source ">
4.22 + <!-- Compile the java code from ${src} into ${build} -->
4.23 + <javac srcdir="${src}" destdir="${build}" />
4.24 + </target>
4.25 +
4.26 + <target name="dist" description="generate the distribution">
4.27 + <!-- Create the distribution directory -->
4.28 + <mkdir dir="${dist}" />
4.29 +
4.30 + <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
4.31 + <!-- <jar jarfile="${dist}/RepDev-${DSTAMP}.jar" basedir="${build}"/> -->
4.32 +
4.33 + <copy todir="${dist}" overwrite="true">
4.34 + <fileset dir="${src}">
4.35 + <exclude name="**/*.java" />
4.36 + <exclude name="**/bin/**" />
4.37 + <exclude name="**/dist/**" />
4.38 + </fileset>
4.39 + </copy>
4.40 +
4.41 + <delete dir="${build}" />
4.42 + <delete dir="${dist}/bin" />
4.43 + <delete dir="${dist}/dist" />
4.44 +
4.45 + </target>
4.46 +
4.47 + <target name="clean" description="clean up">
4.48 + <!-- Delete the ${build} and ${dist} directory trees -->
4.49 + <delete dir="${build}" />
4.50 + <delete dir="${dist}" />
4.51 + </target>
4.52 +</project>
4.53 \ No newline at end of file
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
5.2 +++ b/com/repdev/Config.java Fri Jun 01 18:46:53 2007 +0000
5.3 @@ -0,0 +1,65 @@
5.4 +package com.repdev;
5.5 +
5.6 +import java.io.*;
5.7 +import java.util.*;
5.8 +
5.9 +public class Config implements Serializable {
5.10 + private static Config me = new Config();
5.11 + private static final long serialVersionUID = 1L;
5.12 + private ArrayList<Integer> syms = new ArrayList<Integer>();
5.13 + private String server = "127.0.0.1";
5.14 + private int tabSize = 0; // 0 = Regular tab
5.15 + private String lastUsername = "", lastPassword = "";
5.16 +
5.17 + private Config() {
5.18 + }
5.19 +
5.20 + public static void setSyms(ArrayList<Integer> syms) {
5.21 + me.syms = syms;
5.22 + }
5.23 +
5.24 + public static ArrayList<Integer> getSyms() {
5.25 + return me.syms;
5.26 + }
5.27 +
5.28 + public static Config getConfig() {
5.29 + return me;
5.30 + }
5.31 +
5.32 + public static String getLastPassword() {
5.33 + return me.lastPassword;
5.34 + }
5.35 +
5.36 + public static void setLastPassword(String lastPassword) {
5.37 + me.lastPassword = lastPassword;
5.38 + }
5.39 +
5.40 + public static String getLastUsername(){
5.41 + return me.lastUsername;
5.42 + }
5.43 +
5.44 + public static void setLastUsername(String lastUsername) {
5.45 + me.lastUsername = lastUsername;
5.46 + }
5.47 +
5.48 + public static void setConfig(Config config) {
5.49 + me = config;
5.50 + }
5.51 +
5.52 + public static void setServer(String server) {
5.53 + me.server = server;
5.54 + }
5.55 +
5.56 + public static String getServer() {
5.57 + return me.server;
5.58 + }
5.59 +
5.60 + public static void setTabSize(int tabSize) {
5.61 + me.tabSize = tabSize;
5.62 + }
5.63 +
5.64 + public static int getTabSize() {
5.65 + return me.tabSize;
5.66 + }
5.67 +
5.68 +}
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2 +++ b/com/repdev/DatabaseLayout.java Fri Jun 01 18:46:53 2007 +0000
6.3 @@ -0,0 +1,290 @@
6.4 +package com.repdev;
6.5 +
6.6 +import java.io.BufferedReader;
6.7 +import java.io.FileReader;
6.8 +import java.io.IOException;
6.9 +import java.util.*;
6.10 +import java.util.regex.*;
6.11 +
6.12 +public class DatabaseLayout {
6.13 +
6.14 + private ArrayList<Record> tree = new ArrayList<Record>(); // Main DB from
6.15 + // file
6.16 + private ArrayList<Record> flat = new ArrayList<Record>(); // Cached after
6.17 + // loading from
6.18 + // file
6.19 +
6.20 + // Cached after loading to compare easily to tokens in the syntax
6.21 + private HashSet<String> lowerCaseRecordNames = new HashSet<String>();
6.22 + private HashSet<String> lowerCaseFieldNames = new HashSet<String>();
6.23 +
6.24 + public enum DataType {
6.25 + CHARACTER(0), DATE(3), NUMBER(4), MONEY(7), RATE(2), CODE(5);
6.26 +
6.27 + public int code;
6.28 +
6.29 + DataType(int myCode) {
6.30 + code = myCode;
6.31 + }
6.32 +
6.33 + }
6.34 +
6.35 + public class Record {
6.36 + private ArrayList<Record> subRecords = new ArrayList<Record>();
6.37 + private ArrayList<Field> fields = new ArrayList<Field>();
6.38 + private String description = "";
6.39 + private String name = "";
6.40 + private Record root;
6.41 +
6.42 + public Record(String name, String desc, Record root) {
6.43 + this.description = desc;
6.44 + this.name = name;
6.45 + this.root = root;
6.46 + }
6.47 +
6.48 + public void setSubRecords(ArrayList<Record> subRecords) {
6.49 + this.subRecords = subRecords;
6.50 + }
6.51 +
6.52 + public ArrayList<Record> getSubRecords() {
6.53 + return subRecords;
6.54 + }
6.55 +
6.56 + public void setFields(ArrayList<Field> fields) {
6.57 + this.fields = fields;
6.58 + }
6.59 +
6.60 + public ArrayList<Field> getFields() {
6.61 + return fields;
6.62 + }
6.63 +
6.64 + public void setDescription(String description) {
6.65 + this.description = description;
6.66 + }
6.67 +
6.68 + public String getDescription() {
6.69 + return description;
6.70 + }
6.71 +
6.72 + public void setName(String name) {
6.73 + this.name = name;
6.74 + }
6.75 +
6.76 + public String getName() {
6.77 + return name;
6.78 + }
6.79 +
6.80 + public String toString() {
6.81 + return "Record: " + name;
6.82 + }
6.83 +
6.84 + public void setRoot(Record root) {
6.85 + this.root = root;
6.86 + }
6.87 +
6.88 + public Record getRoot() {
6.89 + return root;
6.90 + }
6.91 +
6.92 + }
6.93 +
6.94 + public class Field implements Comparable {
6.95 + private String name = "", description = "";
6.96 + private int fieldNumber;
6.97 + private DataType dataType;
6.98 + private int len;
6.99 +
6.100 + public Field(String name, String description, int fieldNumber, DataType dataType, int len) {
6.101 + super();
6.102 + this.name = name;
6.103 + this.description = description;
6.104 + this.fieldNumber = fieldNumber;
6.105 + this.dataType = dataType;
6.106 + this.len = len;
6.107 + }
6.108 +
6.109 + public int compareTo(Object o) {
6.110 + if (o instanceof Field)
6.111 + return name.compareToIgnoreCase(((Field) o).getName());
6.112 + else
6.113 + return -1;
6.114 + }
6.115 +
6.116 + public void setName(String name) {
6.117 + this.name = name;
6.118 + }
6.119 +
6.120 + public String getName() {
6.121 + return name;
6.122 + }
6.123 +
6.124 + public void setDescription(String description) {
6.125 + this.description = description;
6.126 + }
6.127 +
6.128 + public String getDescription() {
6.129 + return description;
6.130 + }
6.131 +
6.132 + public DataType getDataType() {
6.133 + return dataType;
6.134 + }
6.135 +
6.136 + public void setDataType(DataType dataType) {
6.137 + this.dataType = dataType;
6.138 + }
6.139 +
6.140 + public int getFieldNumber() {
6.141 + return fieldNumber;
6.142 + }
6.143 +
6.144 + public void setFieldNumber(int fieldNumber) {
6.145 + this.fieldNumber = fieldNumber;
6.146 + }
6.147 +
6.148 + public String toString() {
6.149 + return "Field: " + name;
6.150 + }
6.151 +
6.152 + public void setLen(int len) {
6.153 + this.len = len;
6.154 + }
6.155 +
6.156 + public int getLen() {
6.157 + return len;
6.158 + }
6.159 + }
6.160 +
6.161 + private DatabaseLayout() {
6.162 + Pattern recPattern, fieldPattern;
6.163 + Matcher recMatcher, fieldMatcher;
6.164 + Record currentRecord = null, rootRecord = null;
6.165 + int depth = 0, lastDepth = 0;
6.166 +
6.167 + recPattern = Pattern.compile("(.*)\\*\\*\\*\\|(.*)\\|(.*)");
6.168 + fieldPattern = Pattern.compile("([\\s]*)([a-zA-Z0-9:]*)\\|(.*)\\|(.*)\\|(.*)\\|(.*)");
6.169 +
6.170 + try {
6.171 + BufferedReader br = new BufferedReader(new FileReader("db.txt"));
6.172 + String line;
6.173 +
6.174 + while ((line = br.readLine()) != null) {
6.175 +
6.176 + if (line.contains("***")) {
6.177 + recMatcher = recPattern.matcher(line);
6.178 + recMatcher.matches();
6.179 +
6.180 + depth = recMatcher.group(1).length();
6.181 +
6.182 + if (depth > lastDepth)
6.183 + rootRecord = currentRecord;
6.184 + else if (depth < lastDepth) {
6.185 + for (int i = depth; i < lastDepth; i++) {
6.186 + rootRecord = rootRecord.getRoot();
6.187 + }
6.188 + }
6.189 +
6.190 + // System.out.println("On Record: " + recMatcher.group(2) +
6.191 + // " Root: " + rootRecord + " depth: " + depth + " last
6.192 + // Depth: " + lastDepth);
6.193 +
6.194 + currentRecord = new Record(recMatcher.group(2), recMatcher.group(3), rootRecord);
6.195 +
6.196 + if (depth == 0)
6.197 + tree.add(currentRecord);
6.198 + else
6.199 + rootRecord.getSubRecords().add(currentRecord);
6.200 +
6.201 + lastDepth = depth;
6.202 + } else {
6.203 + fieldMatcher = fieldPattern.matcher(line);
6.204 + fieldMatcher.matches();
6.205 +
6.206 + DataType curType = null;
6.207 + int len, type;
6.208 +
6.209 + type = Integer.parseInt(fieldMatcher.group(5));
6.210 +
6.211 + for (DataType cur : DataType.values())
6.212 + if (cur.code == type) {
6.213 + curType = cur;
6.214 + break;
6.215 + }
6.216 +
6.217 + if (!fieldMatcher.group(6).equals("null"))
6.218 + len = Integer.parseInt(fieldMatcher.group(6));
6.219 + else
6.220 + len = -1;
6.221 +
6.222 + currentRecord.getFields().add(new Field(fieldMatcher.group(2), fieldMatcher.group(3), Integer.parseInt(fieldMatcher.group(4)), curType, len));
6.223 + }
6.224 + }
6.225 +
6.226 + // Build caches, this speeds things up a whole ton
6.227 + flat = getFlatRecordsWorker(tree);
6.228 +
6.229 + for (Record cur : flat) {
6.230 + lowerCaseRecordNames.add(cur.getName().toLowerCase());
6.231 +
6.232 + for (Field fCur : cur.getFields())
6.233 + lowerCaseFieldNames.add(fCur.getName().toLowerCase());
6.234 + }
6.235 +
6.236 + System.out.println("Loaded DB Layout");
6.237 +
6.238 + br.close();
6.239 + } catch (IOException e) {
6.240 + }
6.241 + }
6.242 +
6.243 + private ArrayList<Record> getFlatRecordsWorker(ArrayList<Record> list) {
6.244 + ArrayList<Record> toRet = new ArrayList<Record>();
6.245 +
6.246 + for (Record rec : list) {
6.247 + toRet.add(rec);
6.248 + toRet.addAll(getFlatRecordsWorker(rec.getSubRecords()));
6.249 + }
6.250 +
6.251 + return toRet;
6.252 + }
6.253 +
6.254 + public ArrayList<Record> getFlatRecords() {
6.255 + return flat;
6.256 + }
6.257 +
6.258 + /**
6.259 + * Case insensitive search for any record name
6.260 + *
6.261 + * @param name
6.262 + * @return
6.263 + */
6.264 + public boolean containsRecordName(String name) {
6.265 + name = name.toLowerCase();
6.266 +
6.267 + return lowerCaseRecordNames.contains(name);
6.268 + }
6.269 +
6.270 + /**
6.271 + * Case insensitve search for any record name
6.272 + *
6.273 + * @param name
6.274 + * @return
6.275 + */
6.276 + public boolean containsFieldName(String name) {
6.277 + name = name.toLowerCase();
6.278 +
6.279 + return lowerCaseFieldNames.contains(name);
6.280 + }
6.281 +
6.282 + private static class SingletonHolder {
6.283 + private static DatabaseLayout instance = new DatabaseLayout();
6.284 + }
6.285 +
6.286 + public static DatabaseLayout getInstance() {
6.287 + return SingletonHolder.instance;
6.288 + }
6.289 +
6.290 + public ArrayList<Record> getTreeRecords() {
6.291 + return tree;
6.292 + }
6.293 +}
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
7.2 +++ b/com/repdev/DirectSymitarSession.java Fri Jun 01 18:46:53 2007 +0000
7.3 @@ -0,0 +1,598 @@
7.4 +package com.repdev;
7.5 +
7.6 +import java.text.DecimalFormat;
7.7 +import java.util.ArrayList;
7.8 +import java.util.HashMap;
7.9 +import java.util.regex.Matcher;
7.10 +import java.util.regex.Pattern;
7.11 +import java.io.BufferedReader;
7.12 +import java.io.IOException;
7.13 +import java.io.InputStreamReader;
7.14 +import java.io.PrintWriter;
7.15 +import java.net.*;
7.16 +
7.17 +public class DirectSymitarSession extends SymitarSession {
7.18 + Socket socket;
7.19 + BufferedReader in;
7.20 + PrintWriter out;
7.21 + boolean connected = false;
7.22 +
7.23 + @Override
7.24 + public int acceptRepGenQuery(String value) {
7.25 + // TODO Auto-generated method stub
7.26 + return 0;
7.27 + }
7.28 +
7.29 + private String log(String str) {
7.30 + System.out.println(str);
7.31 + return str;
7.32 + }
7.33 +
7.34 + @Override
7.35 + public SessionError connect(String server, String aixUsername, String aixPassword, int sym, String userID) {
7.36 + String line = "";
7.37 +
7.38 + this.server = server;
7.39 + this.aixUsername = aixUsername;
7.40 + this.aixPassword = aixPassword;
7.41 + this.userID = userID;
7.42 +
7.43 + try {
7.44 + socket = new Socket(server, 23);
7.45 + socket.setKeepAlive(true);
7.46 +
7.47 + // Constant commands, these are the basic telnet establishment
7.48 + // stuffs, which really don't change, so I just send them directly
7.49 + char init1[] = { 0xff, 0xfb, 0x18 };
7.50 + char init2[] = { 0xff, 0xfa, 0x18, 0x00, 0x61, 0x69, 0x78, 0x74, 0x65, 0x72, 0x6d, 0xff, 0xf0 };
7.51 + char init3[] = { 0xff, 0xfd, 0x01 };
7.52 + char init4[] = { 0xff, 0xfd, 0x03, 0xff, 0xfc, 0x1f, 0xff, 0xfc, 0x01 };
7.53 +
7.54 + in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
7.55 + out = new PrintWriter(socket.getOutputStream());
7.56 +
7.57 + out.print(init1);
7.58 + out.print(init2);
7.59 + out.print(init3);
7.60 + out.print(init4);
7.61 + out.print(aixUsername + "\r");
7.62 + out.flush();
7.63 +
7.64 + log(readUntil("Password:"));
7.65 +
7.66 + line = writeLog(aixPassword + "\r", "[c", ":");
7.67 +
7.68 + if (line.indexOf("invalid login") != -1)
7.69 + return SessionError.AIX_LOGIN_WRONG;
7.70 +
7.71 + writeLog("WINDOWSLEVEL=3\n", "$ ");
7.72 + write("sym " + sym + "\r");
7.73 +
7.74 + Command current;
7.75 +
7.76 + while (!(current = readNextCommand()).getCommand().equals("Input"))
7.77 + ;
7.78 +
7.79 + log(current.toString());
7.80 +
7.81 + write(userID + "\r");
7.82 +
7.83 + current = readNextCommand();
7.84 + log(current.getCommand());
7.85 +
7.86 + if (current.getCommand().equals("SymLogonInvalidUser"))
7.87 + return SessionError.USERID_INVALID;
7.88 +
7.89 + write("\r");
7.90 + log(readNextCommand().toString());
7.91 +
7.92 + write("\r");
7.93 + log(readNextCommand().toString());
7.94 +
7.95 + connected = true;
7.96 + log("Connected to Symitar!");
7.97 + } catch (UnknownHostException e) {
7.98 + e.printStackTrace();
7.99 + return SessionError.SERVER_NOT_FOUND;
7.100 + } catch (IOException e) {
7.101 + e.printStackTrace();
7.102 + return SessionError.IO_ERROR;
7.103 + }
7.104 +
7.105 + return SessionError.NONE;
7.106 + }
7.107 +
7.108 + private static class Command {
7.109 + String command = "";
7.110 + HashMap<String, String> parameters = new HashMap<String, String>();
7.111 + String data = "";
7.112 + static Pattern commandPattern = Pattern.compile("(.*?)~.*");
7.113 + static int currentMessageId = 10000;
7.114 +
7.115 + public Command(String command) {
7.116 + parameters.put("MsgId", String.valueOf(currentMessageId));
7.117 + currentMessageId++;
7.118 +
7.119 + this.command = command;
7.120 + }
7.121 +
7.122 + public Command(String command, HashMap<String, String> parameters, String data) {
7.123 + super();
7.124 + this.command = command;
7.125 + this.parameters = parameters;
7.126 + this.data = data;
7.127 +
7.128 + parameters.put("MsgId", String.valueOf(currentMessageId));
7.129 + currentMessageId++;
7.130 + }
7.131 +
7.132 + public Command() {
7.133 + parameters.put("MsgId", String.valueOf(currentMessageId));
7.134 + currentMessageId++;
7.135 + }
7.136 +
7.137 + // Returns string containing any file data sent in this message
7.138 + public String getFileData() {
7.139 + return data.substring(data.indexOf(Character.toString((char) 253)) + 1, data.indexOf(Character.toString((char) 254)));
7.140 + }
7.141 +
7.142 + public String sendStr() {
7.143 + String data = "";
7.144 + data += command + "~";
7.145 +
7.146 + for (String key : parameters.keySet())
7.147 + if (parameters.get(key).equals(""))
7.148 + data += key + "~";
7.149 + else
7.150 + data += key + "=" + parameters.get(key) + "~";
7.151 +
7.152 + data = data.substring(0, data.length() - 1);
7.153 +
7.154 + return Character.toString((char) 0x07) + data.length() + "\r" + data;
7.155 + }
7.156 +
7.157 + public static Command parse(String data) {
7.158 + String[] sep;
7.159 +
7.160 + Command command = new Command();
7.161 + command.setData(data);
7.162 +
7.163 + if (data.indexOf("~") != -1 && data.indexOf(253) == -1) {
7.164 + Matcher match;
7.165 + match = commandPattern.matcher(data);
7.166 + match.matches();
7.167 +
7.168 + command.setCommand(match.group(1));
7.169 + sep = data.substring(match.group(1).length() + 1).split("~");
7.170 +
7.171 + for (String cur : sep) {
7.172 + if (cur.indexOf("=") == -1)
7.173 + command.getParameters().put(cur, "");
7.174 + else
7.175 + command.getParameters().put(cur.substring(0, cur.indexOf("=")), cur.substring(cur.indexOf("=") + 1));
7.176 + }
7.177 + } else
7.178 + command.setCommand(data);
7.179 +
7.180 + return command;
7.181 + }
7.182 +
7.183 + public String toString() {
7.184 + return data;
7.185 + }
7.186 +
7.187 + public String getCommand() {
7.188 + return command;
7.189 + }
7.190 +
7.191 + public void setCommand(String command) {
7.192 + this.command = command;
7.193 + }
7.194 +
7.195 + public String getData() {
7.196 + return data;
7.197 + }
7.198 +
7.199 + public void setData(String data) {
7.200 + this.data = data;
7.201 + }
7.202 +
7.203 + public HashMap<String, String> getParameters() {
7.204 + return parameters;
7.205 + }
7.206 +
7.207 + public void setParameters(HashMap<String, String> parameters) {
7.208 + this.parameters = parameters;
7.209 + }
7.210 + }
7.211 +
7.212 + private void write(String str) {
7.213 + out.write(str);
7.214 + out.flush();
7.215 + }
7.216 +
7.217 + private void write(Command cmd) {
7.218 + write(cmd.sendStr());
7.219 + }
7.220 +
7.221 + private String writeLog(String command, String... waitFor) throws IOException {
7.222 + write(command);
7.223 + return log(readUntil(waitFor));
7.224 + }
7.225 +
7.226 + private Command readNextCommand() throws IOException {
7.227 + readUntil(Character.toString((char) 0x1b) + Character.toString((char) 0xfe));
7.228 + String data = readUntil(Character.toString((char) 0xfc));
7.229 +
7.230 + return Command.parse(data.substring(0, data.length() - 1));
7.231 + }
7.232 +
7.233 + private String readUntil(String... strs) throws IOException {
7.234 + String buf = "";
7.235 +
7.236 + while (true) {
7.237 + int cur = in.read();
7.238 + buf += (char) cur;
7.239 + for (String str : strs)
7.240 + if (buf.indexOf(str) != -1)
7.241 + return buf;
7.242 + }
7.243 + }
7.244 +
7.245 + @Override
7.246 + public SessionError disconnect() {
7.247 + if (!connected)
7.248 + return SessionError.NOT_CONNECTED;
7.249 +
7.250 + try {
7.251 + in.close();
7.252 + out.close();
7.253 + socket.close();
7.254 + } catch (Exception e) {
7.255 + return SessionError.IO_ERROR;
7.256 + }
7.257 +
7.258 + return null;
7.259 + }
7.260 +
7.261 + @Override
7.262 + public synchronized ErrorCheckResult errorCheckRepGen(String filename) {
7.263 + Command cur;
7.264 + String error = "";
7.265 + int line = -1, column = -1;
7.266 +
7.267 + try{
7.268 +
7.269 + write("mm3" + (char)27); //Managment menu #3- repgen, of course!!
7.270 +
7.271 + log(readNextCommand().toString());
7.272 +
7.273 + write("7\r");
7.274 + log(readNextCommand().toString());
7.275 + log(readNextCommand().toString());
7.276 +
7.277 + write(filename+"\r");
7.278 +
7.279 + cur = readNextCommand();
7.280 + log(cur.toString());
7.281 +
7.282 + if( cur.getParameters().get("Warning") != null || cur.getParameters().get("Error") != null){
7.283 + readNextCommand();
7.284 + return new ErrorCheckResult("File does not exist on server!",-1,-1,ErrorCheckResult.Type.ERROR);
7.285 + }
7.286 +
7.287 + if( cur.getParameters().get("Action").equals("NoError") ){
7.288 + readNextCommand();
7.289 + return new ErrorCheckResult("",-1,-1,ErrorCheckResult.Type.NO_ERROR);
7.290 + }
7.291 +
7.292 + if( cur.getParameters().get("Action").equals("Init")){
7.293 + while( !(cur=readNextCommand()).getParameters().get("Action").equals("DisplayEdit")){
7.294 + if( cur.getParameters().get("Action").equals("FileInfo") )
7.295 + {
7.296 + line = Integer.parseInt(cur.getParameters().get("Line").replace(",", ""));
7.297 + column = Integer.parseInt(cur.getParameters().get("Col").replace(",", ""));
7.298 + }
7.299 + else if( cur.getParameters().get("Action").equals("ErrText") )
7.300 + error += cur.getParameters().get("Line") + "\n";
7.301 +
7.302 + log(cur.toString());
7.303 + }
7.304 +
7.305 + readNextCommand();
7.306 +
7.307 + return new ErrorCheckResult(error.trim(),line,column,ErrorCheckResult.Type.ERROR);
7.308 + }
7.309 +
7.310 + }
7.311 + catch(IOException e)
7.312 + {
7.313 + return null;
7.314 + }
7.315 +
7.316 + return null;
7.317 + }
7.318 +
7.319 + @Override
7.320 + public int getBatchOutputSequenceNumber() {
7.321 + // TODO Auto-generated method stub
7.322 + return 0;
7.323 + }
7.324 +
7.325 + @Override
7.326 + public synchronized String getFile(SymitarFile file) {
7.327 + StringBuilder data = new StringBuilder();
7.328 +
7.329 + Command current;
7.330 + Command retrieve = new Command();
7.331 + retrieve.setCommand("File");
7.332 + retrieve.getParameters().put("Action", "Retrieve");
7.333 +
7.334 + if (file.getType() == FileType.REPGEN)
7.335 + retrieve.getParameters().put("Type", "RepWriter");
7.336 + else if (file.getType() == FileType.HELP)
7.337 + retrieve.getParameters().put("Type", "Help");
7.338 + else if (file.getType() == FileType.LETTER)
7.339 + retrieve.getParameters().put("Type", "Letter");
7.340 +
7.341 + retrieve.getParameters().put("Name", file.getName());
7.342 +
7.343 + write(retrieve);
7.344 +
7.345 + try {
7.346 + while (true) {
7.347 + current = readNextCommand();
7.348 +
7.349 + if (current.getParameters().get("Status") != null)
7.350 + return null;
7.351 +
7.352 + if (current.getParameters().get("Done") != null)
7.353 + return data.toString();
7.354 +
7.355 + data.append(current.getFileData());
7.356 + }
7.357 + } catch (IOException e) {
7.358 + return null;
7.359 + }
7.360 +
7.361 + }
7.362 +
7.363 + @Override
7.364 + public synchronized ArrayList<SymitarFile> getFileList(FileType type, String search) {
7.365 + ArrayList<SymitarFile> toRet = new ArrayList<SymitarFile>();
7.366 + Command current;
7.367 +
7.368 + Command list = new Command("File");
7.369 +
7.370 + if (type == FileType.REPGEN)
7.371 + list.getParameters().put("Type", "RepWriter");
7.372 + else if (type == FileType.HELP)
7.373 + list.getParameters().put("Type", "Help");
7.374 + else if (type == FileType.LETTER)
7.375 + list.getParameters().put("Type", "Letter");
7.376 +
7.377 + list.getParameters().put("Name", search);
7.378 + list.getParameters().put("Action", "List");
7.379 +
7.380 + write(list);
7.381 +
7.382 + while (true) {
7.383 + try {
7.384 + current = readNextCommand();
7.385 + } catch (IOException e) {
7.386 + e.printStackTrace();
7.387 + return null;
7.388 + }
7.389 +
7.390 + log(current.toString());
7.391 +
7.392 + if (current.getParameters().get("Status") != null)
7.393 + break;
7.394 +
7.395 + if( current.getParameters().get("Name") != null)
7.396 + toRet.add(new SymitarFile(current.getParameters().get("Name"), type));
7.397 +
7.398 + if(current.getParameters().get("Done") != null)
7.399 + break;
7.400 + }
7.401 +
7.402 + return toRet;
7.403 + }
7.404 +
7.405 + @Override
7.406 + public String getRepGenQuery() {
7.407 + // TODO Auto-generated method stub
7.408 + return null;
7.409 + }
7.410 +
7.411 + @Override
7.412 + public int getRepgenQueue() {
7.413 + // TODO Auto-generated method stub
7.414 + return 0;
7.415 + }
7.416 +
7.417 + @Override
7.418 + public ArrayList<Integer> getSequenceNumbers() {
7.419 + // TODO Auto-generated method stub
7.420 + return null;
7.421 + }
7.422 +
7.423 + @Override
7.424 + public boolean isConnected() {
7.425 + return connected;
7.426 + }
7.427 +
7.428 + @Override
7.429 + public SessionError printFileLPT(SymitarFile file, boolean formsOverride, int formLength, int startPage, int endPage, int copies, boolean landscape, boolean duplex, int queuePriority) {
7.430 + // TODO Auto-generated method stub
7.431 + return null;
7.432 + }
7.433 +
7.434 + @Override
7.435 + public SessionError printFileTPT(SymitarFile file, int queue) {
7.436 + // TODO Auto-generated method stub
7.437 + return null;
7.438 + }
7.439 +
7.440 + @Override
7.441 + public SessionError removeFile(SymitarFile file) {
7.442 + // TODO Auto-generated method stub
7.443 + return null;
7.444 + }
7.445 +
7.446 + @Override
7.447 + public SessionError runBatchFM(String title) {
7.448 + // TODO Auto-generated method stub
7.449 + return null;
7.450 + }
7.451 +
7.452 + @Override
7.453 + public void runRepGen(String name) {
7.454 + // TODO Auto-generated method stub
7.455 +
7.456 + }
7.457 +
7.458 + @Override
7.459 + public void runRepGen(String name, int queue) {
7.460 + // TODO Auto-generated method stub
7.461 +
7.462 + }
7.463 +
7.464 + @Override
7.465 + public synchronized SessionError saveFile(SymitarFile file, String text) {
7.466 + int partSize = 3996;
7.467 + int curPart = 0;
7.468 + DecimalFormat f3 = new DecimalFormat("000");
7.469 + DecimalFormat f5 = new DecimalFormat("00000");
7.470 + char[] buf = new char[16];
7.471 + String pad20 = "";
7.472 +
7.473 + if (!connected)
7.474 + return SessionError.NOT_CONNECTED;
7.475 +
7.476 + for (int i = 0; i < 6; i++)
7.477 + pad20 += Character.toString((char) 0x20);
7.478 +
7.479 + Command store = new Command();
7.480 + store.setCommand("File");
7.481 + store.getParameters().put("Action", "Store");
7.482 +
7.483 + Command unpause = new Command();
7.484 + unpause.setCommand("WakeUp");
7.485 +
7.486 + Command current;
7.487 +
7.488 + if (file.getType() == FileType.REPGEN)
7.489 + store.getParameters().put("Type", "RepWriter");
7.490 + else if (file.getType() == FileType.HELP)
7.491 + store.getParameters().put("Type", "Help");
7.492 + else if (file.getType() == FileType.LETTER)
7.493 + store.getParameters().put("Type", "Letter");
7.494 +
7.495 + store.getParameters().put("Name", file.getName());
7.496 +
7.497 + write(store);
7.498 +
7.499 + try {
7.500 + current = readNextCommand();
7.501 +
7.502 + String[] badList = current.getParameters().get("BadCharList").split(",");
7.503 +
7.504 + for (String cur : badList) {
7.505 + text = text.replaceAll(Character.toString((char) Integer.parseInt(cur)), "");
7.506 + }
7.507 +
7.508 + String toSend = "";
7.509 + do {
7.510 + do {
7.511 + toSend = text.substring(0, Math.min(text.length(), partSize));
7.512 + write("PROT" + f3.format(curPart) + "DATA" + f5.format(toSend.length()));
7.513 + write(toSend);
7.514 + in.read(buf, 0, 16);
7.515 + } while (buf[7] == 'N'); // Resend if we get a NAK message
7.516 +
7.517 + curPart++;
7.518 + text = text.substring(toSend.length());
7.519 + } while (text.length() > 0);
7.520 +
7.521 + write("PROT" + f3.format(curPart) + "EOF" + pad20);
7.522 + in.read(buf, 0, 16);
7.523 +
7.524 + current = readNextCommand();
7.525 + write(unpause);
7.526 + } catch (IOException e) {
7.527 + return SessionError.IO_ERROR;
7.528 + }
7.529 + return SessionError.NONE;
7.530 + }
7.531 +
7.532 + @Override
7.533 + public void waitOnChange() {
7.534 + // TODO Auto-generated method stub
7.535 +
7.536 + }
7.537 +
7.538 + @Override
7.539 + public synchronized ErrorCheckResult installRepgen(String filename) {
7.540 + Command cur;
7.541 + String error = "";
7.542 + int line = -1, column = -1;
7.543 +
7.544 + try{
7.545 +
7.546 + write("mm3" + (char)27); //Managment menu #3- repgen, of course!!
7.547 +
7.548 + log(readNextCommand().toString());
7.549 +
7.550 + write("8\r");
7.551 + log(readNextCommand().toString());
7.552 + log(readNextCommand().toString());
7.553 +
7.554 + write(filename+"\r");
7.555 +
7.556 + cur = readNextCommand();
7.557 + log(cur.toString());
7.558 +
7.559 + if( cur.getParameters().get("Warning") != null || cur.getParameters().get("Error") != null){
7.560 + readNextCommand();
7.561 + return new ErrorCheckResult("File does not exist on server!",-1,-1,ErrorCheckResult.Type.ERROR);
7.562 + }
7.563 +
7.564 + if( cur.getCommand().equals("SpecfileData") ){
7.565 + readNextCommand();
7.566 + write("1\r");
7.567 +
7.568 + readNextCommand();
7.569 + readNextCommand();
7.570 + return new ErrorCheckResult("",Integer.parseInt(cur.getParameters().get("Size").replace(",", "")),ErrorCheckResult.Type.INSTALLED_SUCCESSFULLY);
7.571 +
7.572 + }
7.573 +
7.574 + if( cur.getParameters().get("Action").equals("Init")){
7.575 + while( !(cur=readNextCommand()).getParameters().get("Action").equals("DisplayEdit")){
7.576 + if( cur.getParameters().get("Action").equals("FileInfo") )
7.577 + {
7.578 + line = Integer.parseInt(cur.getParameters().get("Line").replace(",", ""));
7.579 + column = Integer.parseInt(cur.getParameters().get("Col").replace(",", ""));
7.580 + }
7.581 + else if( cur.getParameters().get("Action").equals("ErrText") )
7.582 + error += cur.getParameters().get("Line") + "\n";
7.583 +
7.584 + log(cur.toString());
7.585 + }
7.586 +
7.587 + readNextCommand();
7.588 +
7.589 + return new ErrorCheckResult(error.trim(),line,column,ErrorCheckResult.Type.ERROR);
7.590 + }
7.591 +
7.592 + }
7.593 + catch(IOException e)
7.594 + {
7.595 + return null;
7.596 + }
7.597 +
7.598 + return null;
7.599 + }
7.600 +
7.601 +}
8.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
8.2 +++ b/com/repdev/EditorComposite.java Fri Jun 01 18:46:53 2007 +0000
8.3 @@ -0,0 +1,653 @@
8.4 +package com.repdev;
8.5 +
8.6 +import java.util.LinkedList;
8.7 +import java.util.Stack;
8.8 +
8.9 +import org.eclipse.swt.*;
8.10 +import org.eclipse.swt.custom.*;
8.11 +import org.eclipse.swt.events.*;
8.12 +import org.eclipse.swt.graphics.Color;
8.13 +import org.eclipse.swt.graphics.Point;
8.14 +import org.eclipse.swt.layout.*;
8.15 +import org.eclipse.swt.widgets.*;
8.16 +
8.17 +public class EditorComposite extends Composite {
8.18 + private SymitarFile file;
8.19 + private int sym;
8.20 + private Color lineBackgroundColor = new Color(Display.getCurrent(), 232, 242, 254);
8.21 + private ToolBar bar;
8.22 + private ToolItem save;
8.23 + private ToolItem install;
8.24 + private StyledText txt;
8.25 +
8.26 + private static final int UNDO_LIMIT = 500;
8.27 + private Stack<TextChange> undos = new Stack<TextChange>();
8.28 + private Stack<TextChange> redos = new Stack<TextChange>();
8.29 +
8.30 + // 1 = Regular
8.31 + // 2 = Undoing, so save as redos
8.32 + // 0 = Ignore all
8.33 + private int undoMode = 0;
8.34 +
8.35 + private int lastLine = 0;
8.36 + private SyntaxHighlighter highlighter;
8.37 + private RepgenParser parser;
8.38 + private boolean modified = false;
8.39 +
8.40 + static SuggestShell suggest = new SuggestShell();
8.41 +
8.42 + class TextChange {
8.43 + private int start, length, topIndex;
8.44 + private String replacedText;
8.45 + private boolean commit;
8.46 +
8.47 + public TextChange(boolean commit) {
8.48 + this.commit = true;
8.49 + }
8.50 +
8.51 + public TextChange(int start, int length, String replacedText, int topIndex) {
8.52 + this.start = start;
8.53 + this.length = length;
8.54 + this.replacedText = replacedText;
8.55 + this.topIndex = topIndex;
8.56 + this.commit = false;
8.57 + }
8.58 +
8.59 + public int getTopIndex(){
8.60 + return topIndex;
8.61 + }
8.62 +
8.63 + public boolean isCommit() {
8.64 + return commit;
8.65 + }
8.66 +
8.67 + public int getStart() {
8.68 + return start;
8.69 + }
8.70 +
8.71 + public int getLength() {
8.72 + return length;
8.73 + }
8.74 +
8.75 + public String getReplacedText() {
8.76 + return replacedText;
8.77 + }
8.78 + }
8.79 +
8.80 + public EditorComposite(Composite parent, SymitarFile file, int sym) {
8.81 + super(parent, SWT.NONE);
8.82 + this.file = file;
8.83 + this.sym = sym;
8.84 +
8.85 + buildGUI();
8.86 + }
8.87 +
8.88 + public boolean canUndo(){
8.89 + return undos.size() > 0;
8.90 + }
8.91 +
8.92 + public boolean canRedo(){
8.93 + return redos.size() > 0;
8.94 + }
8.95 +
8.96 + public void undo() {
8.97 + try {
8.98 + TextChange change;
8.99 +
8.100 + if (!undos.empty()) {
8.101 + if (undos.peek().isCommit() == true)
8.102 + undos.pop();
8.103 +
8.104 + undoMode = 2;
8.105 + txt.setRedraw(false);
8.106 + if( parser != null)
8.107 + parser.setReparse(false);
8.108 +
8.109 + while (!(undos.size() == 0 || (change = undos.pop()).isCommit())) {
8.110 + txt.replaceTextRange(change.getStart(), change.getLength(), change.getReplacedText());
8.111 + txt.setCaretOffset(change.getStart());
8.112 + txt.setTopIndex(change.getTopIndex());
8.113 +
8.114 + }
8.115 +
8.116 + redos.push(new TextChange(true));
8.117 +
8.118 + }
8.119 + } catch (Exception e) {
8.120 + MessageBox dialog = new MessageBox(this.getShell(), SWT.ICON_ERROR | SWT.OK);
8.121 + dialog.setMessage("The Undo Manager has failed! Email Jake!");
8.122 + dialog.setText("ERROR!");
8.123 + dialog.open();
8.124 +
8.125 + e.printStackTrace();
8.126 + }
8.127 + finally{
8.128 + undoMode = 1;
8.129 + txt.setRedraw(true);
8.130 + if( parser != null){
8.131 + parser.setReparse(true);
8.132 + parser.reparseAll();
8.133 + }
8.134 +
8.135 + lineHighlight();
8.136 + }
8.137 + }
8.138 +
8.139 + public void redo() {
8.140 + try {
8.141 + TextChange change;
8.142 +
8.143 + if (!redos.empty()) {
8.144 + if (redos.peek().isCommit() == true)
8.145 + redos.pop();
8.146 +
8.147 + undoMode = 1;
8.148 + txt.setRedraw(false);
8.149 +
8.150 + if( parser != null)
8.151 + parser.setReparse(false);
8.152 +
8.153 + while (!(redos.size() == 0 || (change = redos.pop()).isCommit())) {
8.154 + txt.replaceTextRange(change.getStart(), change.getLength(), change.getReplacedText());
8.155 + txt.setCaretOffset(change.getStart());
8.156 + txt.setTopIndex(change.getTopIndex());
8.157 + }
8.158 +
8.159 + }
8.160 + } catch (Exception e) {
8.161 + MessageBox dialog = new MessageBox(this.getShell(), SWT.ICON_ERROR | SWT.OK);
8.162 + dialog.setMessage("The Undo Manager has failed! Email Jake!");
8.163 + dialog.setText("ERROR!");
8.164 + dialog.open();
8.165 +
8.166 + e.printStackTrace();
8.167 + }
8.168 + finally{
8.169 + undoMode = 1;
8.170 + txt.setRedraw(true);
8.171 + if( parser != null){
8.172 + parser.setReparse(true);
8.173 + parser.reparseAll();
8.174 + }
8.175 +
8.176 + lineHighlight();
8.177 + }
8.178 + }
8.179 +
8.180 + public void commitUndo() {
8.181 + if (undos.size() == 0 || !undos.peek().isCommit())
8.182 + undos.add(new TextChange(true));
8.183 + }
8.184 +
8.185 + private void lineHighlight() {
8.186 + try {
8.187 + int start, end, currentLine;
8.188 +
8.189 + txt.setLineBackground(0, txt.getLineCount(), txt.getBackground());
8.190 +
8.191 + currentLine = txt.getLineAtOffset(txt.getCaretOffset());
8.192 +
8.193 + if (txt.getSelectionText().indexOf("\n") == -1)
8.194 + txt.setLineBackground(currentLine, 1, lineBackgroundColor);
8.195 +
8.196 + if( lastLine <= txt.getLineCount() -1 )
8.197 + start = txt.getOffsetAtLine(lastLine);
8.198 + else
8.199 + start = txt.getOffsetAtLine(txt.getLineCount()-1);
8.200 +
8.201 + end = txt.getOffsetAtLine(Math.min(txt.getLineCount() - 1, lastLine + 1));
8.202 +
8.203 + if (lastLine + 1 == txt.getLineCount())
8.204 + txt.redraw();
8.205 + else
8.206 + txt.redrawRange(start, end - start, true);
8.207 +
8.208 + start = txt.getOffsetAtLine(currentLine);
8.209 + end = txt.getOffsetAtLine(Math.min(txt.getLineCount() - 1, currentLine + 1));
8.210 +
8.211 + if (currentLine + 1 == txt.getLineCount())
8.212 + txt.redraw();
8.213 + else
8.214 + txt.redrawRange(start, end - start, true);
8.215 +
8.216 + } catch (Exception e) {
8.217 + System.err.println("Line Highlighter failed!!");
8.218 + e.printStackTrace();
8.219 + } finally {
8.220 + lastLine = txt.getLineAtOffset(txt.getCaretOffset());
8.221 + }
8.222 + }
8.223 +
8.224 + private void groupIndent(int direction, int startLine, int endLine) {
8.225 + String tabStr = getTabStr();
8.226 +
8.227 + if (endLine >= txt.getLineCount() - 1)
8.228 + endLine = Math.max(txt.getLineCount() - 2, startLine + 1);
8.229 +
8.230 + try {
8.231 + Point oldSelection = txt.getSelection();
8.232 + int offset = 0;
8.233 +
8.234 + if( parser != null)
8.235 + parser.setReparse(false);
8.236 +
8.237 + if (direction < 0) {
8.238 + for (int i = startLine; i <= endLine; i++) {
8.239 + int startOffset = txt.getOffsetAtLine(i);
8.240 + int endOffset = txt.getOffsetAtLine(i + 1);
8.241 +
8.242 + String line = txt.getText(startOffset, endOffset - 1);
8.243 +
8.244 + for (int x = 0; x < Math.min(tabStr.length(), line.length()); x++)
8.245 + if (line.charAt(x) > 32)
8.246 + return;
8.247 + }
8.248 + }
8.249 + txt.setRedraw(false);
8.250 +
8.251 + for (int i = startLine; i <= endLine; i++) {
8.252 + int startOffset = txt.getOffsetAtLine(i);
8.253 + int endOffset = txt.getOffsetAtLine(i + 1);
8.254 +
8.255 + String line = txt.getText(startOffset, endOffset - 1);
8.256 +
8.257 + if (direction > 0)
8.258 + txt.replaceTextRange(startOffset, endOffset - startOffset, tabStr + line);
8.259 + else {
8.260 + txt.replaceTextRange(startOffset, endOffset - startOffset, line.substring(Math.min(tabStr.length(), line.length())));
8.261 + }
8.262 +
8.263 + offset += tabStr.length() * direction;
8.264 +
8.265 + }
8.266 +
8.267 + if( parser != null)
8.268 + parser.setReparse(true);
8.269 +
8.270 + oldSelection.y += offset;
8.271 + oldSelection.x += tabStr.length() * direction;
8.272 +
8.273 + // TODO: This fails if you are right inbetween a /r
8.274 + // and /n, better fix it ;)
8.275 +
8.276 + txt.setSelection(oldSelection);
8.277 +
8.278 + } catch (Exception ex) {
8.279 + ex.printStackTrace();
8.280 + } finally {
8.281 + txt.setRedraw(true);
8.282 + if( parser != null){
8.283 + parser.setReparse(true);
8.284 + parser.reparseAll();
8.285 + }
8.286 + }
8.287 +
8.288 + }
8.289 +
8.290 + private String getTabStr() {
8.291 + String tabStr = "";
8.292 +
8.293 + if (Config.getTabSize() == 0)
8.294 + tabStr = "\t";
8.295 + else
8.296 + for (int i = 0; i < Config.getTabSize(); i++)
8.297 + tabStr += " ";
8.298 +
8.299 + return tabStr;
8.300 + }
8.301 +
8.302 + public StyledText getStyledText(){
8.303 + return txt;
8.304 + }
8.305 +
8.306 + private void buildGUI() {
8.307 + setLayout(new FormLayout());
8.308 +
8.309 + bar = new ToolBar(this, SWT.HORIZONTAL | SWT.WRAP);
8.310 + save = new ToolItem(bar, SWT.NONE);
8.311 + save.setImage(RepDevMain.smallActionSaveImage);
8.312 + save.setToolTipText("Saves the current file.");
8.313 +
8.314 + install = new ToolItem(bar, SWT.NONE);
8.315 + install.setImage(RepDevMain.smallSymAddImage);
8.316 + install.setToolTipText("Installs current file for onDemand use.");
8.317 +
8.318 + txt = new StyledText(this, SWT.H_SCROLL | SWT.V_SCROLL);
8.319 +
8.320 + if (file.getType() == FileType.REPGEN){
8.321 + parser = new RepgenParser(txt, file, sym);
8.322 + highlighter = new SyntaxHighlighter(parser);
8.323 + }
8.324 +
8.325 + txt.addFocusListener(new FocusListener(){
8.326 +
8.327 + public void focusGained(FocusEvent e) {
8.328 + suggest.attach(txt, parser);
8.329 + }
8.330 +
8.331 + public void focusLost(FocusEvent e) {
8.332 + // TODO Auto-generated method stub
8.333 +
8.334 + }
8.335 +
8.336 + });
8.337 +
8.338 + suggest.attach(txt, parser);
8.339 +
8.340 + txt.addTraverseListener(new TraverseListener() {
8.341 +
8.342 + public void keyTraversed(TraverseEvent e) {
8.343 + if (e.detail == SWT.TRAVERSE_TAB_PREVIOUS) {
8.344 + Event ev = new Event();
8.345 + ev.stateMask = SWT.SHIFT;
8.346 + ev.text = "\t";
8.347 + ev.start = txt.getSelection().x;
8.348 + ev.end = txt.getSelection().y;
8.349 +
8.350 + txt.notifyListeners(SWT.Verify, ev);
8.351 +
8.352 + e.detail = SWT.TRANSPARENCY_NONE;
8.353 + }
8.354 + }
8.355 +
8.356 + });
8.357 +
8.358 + txt.addVerifyListener(new VerifyListener() {
8.359 + public void verifyText(VerifyEvent e) {
8.360 + if (e.text.equals("\t")) {
8.361 +
8.362 + int direction = (e.stateMask == SWT.SHIFT) ? -1 : 1;
8.363 +
8.364 + if (txt.getSelectionCount() > 1) {
8.365 + e.doit = false;
8.366 +
8.367 + int startLine = txt.getLineAtOffset(e.start);
8.368 + int endLine = txt.getLineAtOffset(e.end);
8.369 +
8.370 + if (startLine == endLine) {
8.371 + e.doit = true;
8.372 + e.text = getTabStr();
8.373 + return;
8.374 + }
8.375 +
8.376 + groupIndent(direction, startLine, endLine);
8.377 +
8.378 + } else {
8.379 + e.doit = true;
8.380 + e.text = getTabStr();
8.381 +
8.382 + return;
8.383 + }
8.384 + }
8.385 +
8.386 + if (e.text.equals("\r\n")) {
8.387 + String indent = "";
8.388 + int posStart = txt.getOffsetAtLine(txt.getLineAtOffset(e.start));
8.389 + int posEnd = e.start;
8.390 + String lastLine = txt.getTextRange(posStart, posEnd - posStart);
8.391 +
8.392 + for (int i = 0; i < lastLine.length(); i++)
8.393 + if (lastLine.charAt(i) != ' ' && lastLine.charAt(i) != '\t')
8.394 + break;
8.395 + else
8.396 + indent += lastLine.charAt(i);
8.397 +
8.398 + e.text += indent;
8.399 +
8.400 + lineHighlight();
8.401 + commitUndo();
8.402 + }
8.403 + }
8.404 + });
8.405 +
8.406 + txt.addExtendedModifyListener(new ExtendedModifyListener() {
8.407 +
8.408 + public void modifyText(ExtendedModifyEvent event) {
8.409 + lineHighlight();
8.410 +
8.411 + modified = true;
8.412 + updateModified();
8.413 +
8.414 + Stack<TextChange> stack = null;
8.415 +
8.416 + if (undoMode == 1)
8.417 + stack = undos;
8.418 + else if (undoMode == 2)
8.419 + stack = redos;
8.420 +
8.421 + if (undoMode != 0) {
8.422 + stack.push(new TextChange(event.start, event.length, event.replacedText, txt.getTopIndex()));
8.423 +
8.424 + if (stack.size() > UNDO_LIMIT)
8.425 + stack.remove(0);
8.426 + }
8.427 + }
8.428 +
8.429 + });
8.430 +
8.431 + txt.addKeyListener(new KeyAdapter() {
8.432 + public void keyPressed(KeyEvent e) {
8.433 + lineHighlight();
8.434 +
8.435 + if (e.stateMask == SWT.CTRL) {
8.436 + switch (e.keyCode) {
8.437 + case 's':
8.438 + case 'S':
8.439 + save.notifyListeners(SWT.Selection, null);
8.440 + break;
8.441 + case 'z':
8.442 + case 'Z':
8.443 + undo();
8.444 + break;
8.445 + case 'y':
8.446 + case 'Y':
8.447 + redo();
8.448 + break;
8.449 + case 'a':
8.450 + case 'A':
8.451 + txt.selectAll();
8.452 + break;
8.453 + }
8.454 + }
8.455 +
8.456 + if (e.keyCode == SWT.ARROW_DOWN || e.keyCode == SWT.ARROW_LEFT || e.keyCode == SWT.ARROW_RIGHT || e.keyCode == SWT.ARROW_UP)
8.457 + commitUndo();
8.458 +
8.459 + }
8.460 +
8.461 + public void keyReleased(KeyEvent e) {
8.462 +
8.463 + }
8.464 + });
8.465 +
8.466 + txt.addMouseListener(new MouseAdapter() {
8.467 + public void mouseDown(MouseEvent e) {
8.468 + lineHighlight();
8.469 +
8.470 + commitUndo();
8.471 + }
8.472 +
8.473 + public void mouseUp(MouseEvent e) {
8.474 + lineHighlight();
8.475 + }
8.476 +
8.477 + });
8.478 +
8.479 + txt.addSelectionListener(new SelectionAdapter() {
8.480 + public void widgetSelected(SelectionEvent e) {
8.481 + lineHighlight();
8.482 + }
8.483 + });
8.484 +
8.485 + Menu contextMenu = new Menu(txt);
8.486 +
8.487 + final MenuItem indentMore = new MenuItem(contextMenu, SWT.NONE);
8.488 + indentMore.setText("Increase Indentation");
8.489 + indentMore.setImage(RepDevMain.smallIndentMoreImage);
8.490 + indentMore.addSelectionListener(new SelectionAdapter() {
8.491 + public void widgetSelected(SelectionEvent e) {
8.492 + int startLine = txt.getLineAtOffset(txt.getSelection().x);
8.493 + int endLine = txt.getLineAtOffset(txt.getSelection().y);
8.494 +
8.495 + groupIndent(1, startLine, endLine);
8.496 + }
8.497 + });
8.498 +
8.499 + final MenuItem indentLess = new MenuItem(contextMenu, SWT.NONE);
8.500 + indentLess.setText("Decrease Indentation");
8.501 + indentLess.setImage(RepDevMain.smallIndentLessImage);
8.502 + indentLess.addSelectionListener(new SelectionAdapter() {
8.503 + public void widgetSelected(SelectionEvent e) {
8.504 + int startLine = txt.getLineAtOffset(txt.getSelection().x);
8.505 + int endLine = txt.getLineAtOffset(txt.getSelection().y);
8.506 +
8.507 + groupIndent(-1, startLine, endLine);
8.508 + }
8.509 + });
8.510 +
8.511 + new MenuItem(contextMenu,SWT.SEPARATOR);
8.512 +
8.513 + final MenuItem editCut = new MenuItem(contextMenu,SWT.PUSH);
8.514 + editCut.setImage(RepDevMain.smallCutImage);
8.515 + editCut.setText("Cut\tCTRL+X");
8.516 + editCut.addSelectionListener(new SelectionAdapter() {
8.517 + public void widgetSelected(SelectionEvent arg0) {
8.518 + txt.cut();
8.519 + }
8.520 + });
8.521 +
8.522 + final MenuItem editCopy = new MenuItem(contextMenu,SWT.PUSH);
8.523 + editCopy.setImage(RepDevMain.smallCopyImage);
8.524 + editCopy.setText("Copy\tCTRL+C");
8.525 + editCopy.addSelectionListener(new SelectionAdapter() {
8.526 + public void widgetSelected(SelectionEvent arg0) {
8.527 + txt.copy();
8.528 + }
8.529 + });
8.530 +
8.531 + final MenuItem editPaste = new MenuItem(contextMenu,SWT.PUSH);
8.532 + editPaste.setImage(RepDevMain.smallPasteImage);
8.533 + editPaste.setText("Paste\tCTRL+V");
8.534 + editPaste.addSelectionListener(new SelectionAdapter() {
8.535 + public void widgetSelected(SelectionEvent arg0) {
8.536 + txt.paste();
8.537 + }
8.538 + });
8.539 +
8.540 +
8.541 + contextMenu.addMenuListener(new MenuListener() {
8.542 +
8.543 + public void menuHidden(MenuEvent e) {
8.544 + // TODO Auto-generated method stub
8.545 +
8.546 + }
8.547 +
8.548 + public void menuShown(MenuEvent e) {
8.549 + int startLine = txt.getLineAtOffset(txt.getSelection().x);
8.550 + int endLine = txt.getLineAtOffset(txt.getSelection().y);
8.551 +
8.552 + if (startLine == endLine) {
8.553 + indentMore.setEnabled(false);
8.554 + indentLess.setEnabled(false);
8.555 + } else {
8.556 + indentMore.setEnabled(true);
8.557 + indentLess.setEnabled(true);
8.558 + }
8.559 + }
8.560 +
8.561 + });
8.562 +
8.563 + txt.setMenu(contextMenu);
8.564 +
8.565 + String str = RepDevMain.SYMITAR_SESSIONS.get(sym).getFile(file);
8.566 + if (str == null)
8.567 + str = "";
8.568 + txt.setText(str);
8.569 +
8.570 + suggest.close();
8.571 +
8.572 + save.addSelectionListener(new SelectionAdapter() {
8.573 + public void widgetSelected(SelectionEvent e) {
8.574 + saveFile();
8.575 + }
8.576 + });
8.577 +
8.578 + install.addSelectionListener(new SelectionAdapter() {
8.579 + public void widgetSelected(SelectionEvent e) {
8.580 + MessageBox dialog = new MessageBox(Display.getCurrent().getActiveShell(),SWT.YES | SWT.NO | SWT.ICON_QUESTION);
8.581 + MessageBox dialog2 = null;
8.582 +
8.583 + dialog.setText("Confirm Repgen Installation");
8.584 + dialog.setMessage("Are you sure you want to save this file and install this repgen?");
8.585 +
8.586 + if( dialog.open() == SWT.YES ){
8.587 + saveFile();
8.588 + ErrorCheckResult result = RepDevMain.SYMITAR_SESSIONS.get(sym).installRepgen(file.getName());
8.589 +
8.590 + dialog2 = new MessageBox(Display.getCurrent().getActiveShell(),SWT.OK | ( result.getType() == ErrorCheckResult.Type.INSTALLED_SUCCESSFULLY ? SWT.ICON_INFORMATION : SWT.ICON_ERROR ));
8.591 + dialog2.setText("Installation Result");
8.592 +
8.593 + if( result.getType() != ErrorCheckResult.Type.INSTALLED_SUCCESSFULLY )
8.594 + dialog2.setMessage("Error Installing Repgen: \n" + result.getErrorMessage());
8.595 + else
8.596 + dialog2.setMessage("Repgen Installed, Size: " + result.getInstallSize());
8.597 +
8.598 + dialog2.open();
8.599 + }
8.600 +
8.601 + }
8.602 + });
8.603 +
8.604 + FormData frmBar = new FormData();
8.605 + frmBar.top = new FormAttachment(0);
8.606 + frmBar.left = new FormAttachment(0);
8.607 + frmBar.right = new FormAttachment(100);
8.608 + bar.setLayoutData(frmBar);
8.609 +
8.610 + FormData frmTxt = new FormData();
8.611 + frmTxt.top = new FormAttachment(bar);
8.612 + frmTxt.left = new FormAttachment(0);
8.613 + frmTxt.right = new FormAttachment(100);
8.614 + frmTxt.bottom = new FormAttachment(100);
8.615 + txt.setLayoutData(frmTxt);
8.616 +
8.617 + undoMode = 1;
8.618 + modified = false;
8.619 + updateModified();
8.620 + }
8.621 +
8.622 + public void saveFile(){
8.623 + RepDevMain.SYMITAR_SESSIONS.get(sym).saveFile(file, txt.getText());
8.624 + commitUndo();
8.625 + modified = false;
8.626 + updateModified();
8.627 +
8.628 + if( parser != null)
8.629 + parser.errorCheck();
8.630 +
8.631 + RepDevMain.mainShell.updateErrorList();
8.632 + }
8.633 +
8.634 + public void updateModified(){
8.635 + CTabFolder folder = (CTabFolder)getParent();
8.636 +
8.637 + for( CTabItem cur : folder.getItems())
8.638 + if( ((SymitarFile)cur.getData("file")).equals(file) && ((Integer)cur.getData("sym")) == sym )
8.639 + if( modified && ( cur.getData("modified") == null || !((Boolean)cur.getData("modified")))){
8.640 + cur.setData("modified", true);
8.641 + cur.setText(cur.getText() + " *");
8.642 + }
8.643 + else if( !modified && ( cur.getData("modified") == null || ((Boolean)cur.getData("modified")))){
8.644 + cur.setData("modified", false);
8.645 + cur.setText(cur.getText().substring(0,cur.getText().length() - 2));
8.646 + }
8.647 + }
8.648 +
8.649 + public RepgenParser getParser() {
8.650 + return parser;
8.651 + }
8.652 +
8.653 + public void setParser(RepgenParser parser) {
8.654 + this.parser = parser;
8.655 + }
8.656 +}
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
9.2 +++ b/com/repdev/ErrorCheckResult.java Fri Jun 01 18:46:53 2007 +0000
9.3 @@ -0,0 +1,83 @@
9.4 +package com.repdev;
9.5 +
9.6 +/**
9.7 + * Result returned by SymitarSession after the server has error checked a spec
9.8 + * file.
9.9 + *
9.10 + * @author Administrator
9.11 + *
9.12 + */
9.13 +public class ErrorCheckResult {
9.14 + private String errorMessage;
9.15 + private int lineNumber;
9.16 + private int column;
9.17 + private Type type;
9.18 + private int installSize;
9.19 +
9.20 + public enum Type{
9.21 + ERROR,
9.22 + WARNING,
9.23 + NO_ERROR,
9.24 + INSTALLED_SUCCESSFULLY,
9.25 + }
9.26 +
9.27 + public ErrorCheckResult() {
9.28 +
9.29 + }
9.30 +
9.31 + public ErrorCheckResult(String errorMessage, int lineNumber, int column, Type type) {
9.32 + this.errorMessage = errorMessage;
9.33 + this.lineNumber = lineNumber;
9.34 + this.column = column;
9.35 + this.type = type;
9.36 + }
9.37 +
9.38 + public ErrorCheckResult(String errorMessage, int installSize, Type type) {
9.39 + this.errorMessage = errorMessage;
9.40 + this.lineNumber = -1;
9.41 + this.column = -1;
9.42 + this.installSize = installSize;
9.43 + this.type = type;
9.44 + }
9.45 +
9.46 +
9.47 + public String getErrorMessage() {
9.48 + return errorMessage;
9.49 + }
9.50 +
9.51 + public void setErrorMessage(String errorMessage) {
9.52 + this.errorMessage = errorMessage;
9.53 + }
9.54 +
9.55 + public int getLineNumber() {
9.56 + return lineNumber;
9.57 + }
9.58 +
9.59 + public Type getType(){
9.60 + return type;
9.61 + }
9.62 +
9.63 + public void setType(Type newType){
9.64 + type=newType;
9.65 + }
9.66 +
9.67 + public void setLineNumber(int lineNumber) {
9.68 + this.lineNumber = lineNumber;
9.69 + }
9.70 +
9.71 + public void setColumn(int column) {
9.72 + this.column = column;
9.73 + }
9.74 +
9.75 + public int getColumn() {
9.76 + return column;
9.77 + }
9.78 +
9.79 + public void setInstallSize(int installSize) {
9.80 + this.installSize = installSize;
9.81 + }
9.82 +
9.83 + public int getInstallSize() {
9.84 + return installSize;
9.85 + }
9.86 +}
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
10.2 +++ b/com/repdev/FileDialog.java Fri Jun 01 18:46:53 2007 +0000
10.3 @@ -0,0 +1,279 @@
10.4 +package com.repdev;
10.5 +
10.6 +import java.util.ArrayList;
10.7 +
10.8 +import org.eclipse.swt.SWT;
10.9 +import org.eclipse.swt.events.ModifyEvent;
10.10 +import org.eclipse.swt.events.ModifyListener;
10.11 +import org.eclipse.swt.events.SelectionAdapter;
10.12 +import org.eclipse.swt.events.SelectionEvent;
10.13 +import org.eclipse.swt.layout.FormAttachment;
10.14 +import org.eclipse.swt.layout.FormData;
10.15 +import org.eclipse.swt.layout.FormLayout;
10.16 +import org.eclipse.swt.widgets.Button;
10.17 +import org.eclipse.swt.widgets.Combo;
10.18 +import org.eclipse.swt.widgets.Control;
10.19 +import org.eclipse.swt.widgets.Display;
10.20 +import org.eclipse.swt.widgets.Label;
10.21 +import org.eclipse.swt.widgets.MessageBox;
10.22 +import org.eclipse.swt.widgets.Shell;
10.23 +import org.eclipse.swt.widgets.Table;
10.24 +import org.eclipse.swt.widgets.TableColumn;
10.25 +import org.eclipse.swt.widgets.TableItem;
10.26 +import org.eclipse.swt.widgets.Text;
10.27 +
10.28 +public class FileDialog {
10.29 + Shell shell, parent;
10.30 + Display display;
10.31 + Mode mode;
10.32 + int sym;
10.33 + ArrayList<SymitarFile> files = new ArrayList<SymitarFile>();
10.34 + Table table;
10.35 + Combo typeCombo;
10.36 + Text nameText;
10.37 + boolean listLoaded = false;
10.38 +
10.39 + public enum Mode {
10.40 + SAVE, OPEN,
10.41 + }
10.42 +
10.43 + public FileDialog(Shell parent, Mode mode, int sym) {
10.44 + this.parent = parent;
10.45 + this.mode = mode;
10.46 + this.sym = sym;
10.47 + this.display = parent.getDisplay();
10.48 + }
10.49 +
10.50 + private void create() {
10.51 + FormLayout layout = new FormLayout();
10.52 + layout.marginTop = 5;
10.53 + layout.marginBottom = 5;
10.54 + layout.marginLeft = 5;
10.55 + layout.marginRight = 5;
10.56 + layout.spacing = 5;
10.57 +
10.58 + FormData data;
10.59 +
10.60 + shell = new Shell(parent, SWT.APPLICATION_MODAL | SWT.DIALOG_TRIM | SWT.RESIZE);
10.61 + shell.setText((mode == Mode.OPEN ? "Open" : "Save") + " Symitar File" + (mode == Mode.OPEN ? "(s)" : ""));
10.62 + shell.setLayout(layout);
10.63 + shell.setMinimumSize(600, 350);
10.64 +
10.65 + Label nameLabel = new Label(shell, SWT.NONE);
10.66 + nameLabel.setText("Filename:");
10.67 +
10.68 + Label typeLabel = new Label(shell, SWT.NONE);
10.69 + typeLabel.setText("Type:");
10.70 +
10.71 + typeCombo = new Combo(shell, SWT.DROP_DOWN | SWT.READ_ONLY);
10.72 +
10.73 + for (FileType type : FileType.values())
10.74 + typeCombo.add(type.toString());
10.75 +
10.76 + typeCombo.select(FileType.REPGEN.ordinal());
10.77 +
10.78 + table = new Table(shell, (mode == Mode.OPEN ? SWT.MULTI : SWT.SINGLE) | SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
10.79 + table.setLinesVisible(false);
10.80 + table.setHeaderVisible(true);
10.81 +
10.82 + table.addSelectionListener(new SelectionAdapter() {
10.83 + public void widgetDefaultSelected(SelectionEvent e) {
10.84 + if (table.getSelectionIndex() != -1) {
10.85 + if (mode == Mode.SAVE) {
10.86 + MessageBox dialog = new MessageBox(shell, SWT.ICON_QUESTION | SWT.OK | SWT.CANCEL);
10.87 + dialog.setText("Confirm Overwrite");
10.88 + dialog.setMessage("This file already exists, are you sure you want to overwrite it?");
10.89 +
10.90 + if (dialog.open() == SWT.CANCEL)
10.91 + return;
10.92 + }
10.93 +
10.94 + files.add((SymitarFile) (table.getSelection())[0].getData());
10.95 + shell.close();
10.96 + } else if (mode == Mode.SAVE) {
10.97 + files.add(new SymitarFile(nameText.getText().trim(), FileType.valueOf(typeCombo.getText())));
10.98 + shell.close();
10.99 + }
10.100 + }
10.101 + });
10.102 +
10.103 + TableColumn nameCol = new TableColumn(table, SWT.NONE);
10.104 + nameCol.setText("Name");
10.105 + nameCol.setWidth(300);
10.106 +
10.107 + TableColumn sizeCol = new TableColumn(table, SWT.NONE);
10.108 + sizeCol.setText("Size");
10.109 + sizeCol.setWidth(120);
10.110 +
10.111 + TableColumn dateCol = new TableColumn(table, SWT.NONE);
10.112 + dateCol.setText("Date");
10.113 + dateCol.setWidth(150);
10.114 +
10.115 + nameText = new Text(shell, SWT.SINGLE | SWT.BORDER);
10.116 +
10.117 + nameText.addSelectionListener(new SelectionAdapter() {
10.118 + public void widgetDefaultSelected(SelectionEvent e) {
10.119 + createList();
10.120 +
10.121 + if (table.getItemCount() == 1 && !isTemplate()) {
10.122 + if (mode == Mode.SAVE) {
10.123 + MessageBox dialog = new MessageBox(shell, SWT.ICON_QUESTION | SWT.OK | SWT.CANCEL);
10.124 + dialog.setText("Confirm Overwrite");
10.125 + dialog.setMessage("This file already exists, are you sure you want to overwrite it?");
10.126 +
10.127 + if (dialog.open() == SWT.CANCEL)
10.128 + return;
10.129 + }
10.130 +
10.131 + files.add((SymitarFile) (table.getItems()[0].getData()));
10.132 + shell.close();
10.133 + } else if (mode == Mode.SAVE && nameText.getText().trim().length() > 0 && !isTemplate()) {
10.134 + files.add(new SymitarFile(nameText.getText().trim(), FileType.valueOf(typeCombo.getText())));
10.135 + shell.close();
10.136 + }
10.137 +
10.138 + }
10.139 + });
10.140 +
10.141 + nameText.addModifyListener(new ModifyListener() {
10.142 +
10.143 + public void modifyText(ModifyEvent e) {
10.144 + listLoaded = false;
10.145 + }
10.146 +
10.147 + });
10.148 +
10.149 + final Button ok = new Button(shell, SWT.PUSH);
10.150 +
10.151 + if (mode == Mode.OPEN)
10.152 + ok.setText("Open File(s)");
10.153 + else
10.154 + ok.setText("Save File");
10.155 +
10.156 + ok.addSelectionListener(new SelectionAdapter() {
10.157 + public void widgetSelected(SelectionEvent e) {
10.158 + if (!listLoaded)
10.159 + createList();
10.160 +
10.161 + if (mode == Mode.OPEN && table.getSelectionIndex() != -1 ) {
10.162 + for (TableItem cur : table.getSelection())
10.163 + files.add((SymitarFile) cur.getData());
10.164 +
10.165 + shell.close();
10.166 + }
10.167 +
10.168 + if( mode == Mode.SAVE){
10.169 + if( table.getSelectionIndex() != -1 ){
10.170 + MessageBox dialog = new MessageBox(shell, SWT.ICON_QUESTION | SWT.OK | SWT.CANCEL);
10.171 + dialog.setText("Confirm Overwrite");
10.172 + dialog.setMessage("This file already exists, are you sure you want to overwrite it?");
10.173 +
10.174 + if (dialog.open() == SWT.CANCEL)
10.175 + return;
10.176 +
10.177 + files.add((SymitarFile)table.getSelection()[0].getData());
10.178 + shell.close();
10.179 + }
10.180 + else
10.181 + {
10.182 + files.add(new SymitarFile(nameText.getText().trim(), FileType.valueOf(typeCombo.getText())));
10.183 + shell.close();
10.184 + }
10.185 + }
10.186 + }
10.187 + });
10.188 +
10.189 + Button cancel = new Button(shell, SWT.PUSH);
10.190 + cancel.setText("Cancel");
10.191 + cancel.addSelectionListener(new SelectionAdapter() {
10.192 + public void widgetSelected(SelectionEvent e) {
10.193 + shell.close();
10.194 + }
10.195 + });
10.196 +
10.197 + data = new FormData();
10.198 + data.left = new FormAttachment(0);
10.199 + data.top = new FormAttachment(0);
10.200 + nameLabel.setLayoutData(data);
10.201 +
10.202 + data = new FormData();
10.203 + data.left = new FormAttachment(nameLabel);
10.204 + data.right = new FormAttachment(typeLabel);
10.205 + data.top = new FormAttachment(0);
10.206 + nameText.setLayoutData(data);
10.207 +
10.208 + data = new FormData();
10.209 + data.right = new FormAttachment(typeCombo);
10.210 + data.top = new FormAttachment(0);
10.211 + typeLabel.setLayoutData(data);
10.212 +
10.213 + data = new FormData();
10.214 + // data.left = new FormAttachment(typeLabel);
10.215 + data.top = new FormAttachment(0);
10.216 + data.right = new FormAttachment(100);
10.217 + typeCombo.setLayoutData(data);
10.218 +
10.219 + data = new FormData();
10.220 + data.left = new FormAttachment(0);
10.221 + data.top = new FormAttachment(typeCombo);
10.222 + data.bottom = new FormAttachment(cancel);
10.223 + data.right = new FormAttachment(100);
10.224 + table.setLayoutData(data);
10.225 +
10.226 + data = new FormData();
10.227 + data.right = new FormAttachment(100);
10.228 + data.bottom = new FormAttachment(100);
10.229 + cancel.setLayoutData(data);
10.230 +
10.231 + data = new FormData();
10.232 + data.right = new FormAttachment(cancel);
10.233 + data.bottom = new FormAttachment(100);
10.234 + ok.setLayoutData(data);
10.235 +
10.236 + nameText.setFocus();
10.237 +
10.238 + shell.pack();
10.239 + shell.open();
10.240 + }
10.241 +
10.242 + // TODO: Finish up with other template forms
10.243 + private boolean isTemplate() {
10.244 + return nameText.getText().contains("+");
10.245 + }
10.246 +
10.247 + private void createList() {
10.248 + table.removeAll();
10.249 +
10.250 + SymitarSession session = RepDevMain.SYMITAR_SESSIONS.get(sym);
10.251 +
10.252 + for (SymitarFile cur : session.getFileList(FileType.valueOf(typeCombo.getText()), nameText.getText())) {
10.253 + TableItem item = new TableItem(table, SWT.NONE);
10.254 + item.setText(0, cur.getName());
10.255 +
10.256 + if( cur.getType() == FileType.REPGEN )
10.257 + item.setImage(0, RepDevMain.smallRepGenImage);
10.258 + else
10.259 + item.setImage(0, RepDevMain.smallFileImage);
10.260 +
10.261 + item.setText(1, String.valueOf(cur.getSize()));
10.262 + item.setText(2, cur.getModified().toString());
10.263 + item.setData(cur);
10.264 + }
10.265 +
10.266 + if (table.getItemCount() > 0)
10.267 + table.select(0);
10.268 +
10.269 + listLoaded = true;
10.270 + }
10.271 +
10.272 + public ArrayList<SymitarFile> open() {
10.273 + create();
10.274 +
10.275 + while (!shell.isDisposed()) {
10.276 + if (!display.readAndDispatch())
10.277 + display.sleep();
10.278 + }
10.279 +
10.280 + return files;
10.281 + }
10.282 +}
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
11.2 +++ b/com/repdev/FileType.java Fri Jun 01 18:46:53 2007 +0000
11.3 @@ -0,0 +1,5 @@
11.4 +package com.repdev;
11.5 +
11.6 +public enum FileType {
11.7 + LETTER, REPGEN, HELP,
11.8 +};
11.9 \ No newline at end of file
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
12.2 +++ b/com/repdev/MainShell.java Fri Jun 01 18:46:53 2007 +0000
12.3 @@ -0,0 +1,1150 @@
12.4 +package com.repdev;
12.5 +
12.6 +import java.awt.FlowLayout;
12.7 +import java.util.ArrayList;
12.8 +
12.9 +import org.eclipse.swt.*;
12.10 +import org.eclipse.swt.custom.*;
12.11 +import org.eclipse.swt.layout.*;
12.12 +import org.eclipse.swt.events.*;
12.13 +import org.eclipse.swt.graphics.Image;
12.14 +import org.eclipse.swt.widgets.*;
12.15 +
12.16 +public class MainShell {
12.17 + private static final int MIN_COL_WIDTH = 75, MIN_COMP_SIZE = 125;
12.18 + private CTabFolder mainfolder;
12.19 + private Display display;
12.20 + private Shell shell;
12.21 + private Tree tree;
12.22 + private Table tblErrors, tblTasks;
12.23 +
12.24 + public MainShell(Display display) {
12.25 + this.display = display;
12.26 + createShell();
12.27 + }
12.28 +
12.29 + public void open() {
12.30 + shell.open();
12.31 + }
12.32 +
12.33 + public boolean isDisposed() {
12.34 + return shell.isDisposed();
12.35 + }
12.36 +
12.37 + private void createShell() {
12.38 + int leftPercent = 20, bottomPercent = 15;
12.39 +
12.40 + shell = new Shell(display);
12.41 + shell.setText(RepDevMain.NAMESTR);
12.42 + createMenuDefault();
12.43 +
12.44 + shell.setLayout(new FormLayout());
12.45 +
12.46 + shell.addShellListener(new ShellAdapter(){
12.47 +
12.48 + public void shellClosed(ShellEvent e){
12.49 + boolean close = true;
12.50 +
12.51 + for(CTabItem tab : mainfolder.getItems())
12.52 + if( !confirmClose(tab) )
12.53 + close = false;
12.54 +
12.55 + e.doit = close;
12.56 + }
12.57 +
12.58 +
12.59 + });
12.60 +
12.61 + final Composite left = new Composite(shell, SWT.NONE);
12.62 + createExplorer(left);
12.63 + final Sash sashVert = new Sash(shell, SWT.VERTICAL | SWT.SMOOTH);
12.64 + final Composite right = new Composite(shell, SWT.NONE);
12.65 + right.setLayout(new FormLayout());
12.66 +
12.67 + Composite main = new Composite(right, SWT.NONE);
12.68 + createEditorPane(main);
12.69 + final Sash sashHoriz = new Sash(right, SWT.HORIZONTAL | SWT.SMOOTH);
12.70 + final Composite bottom = new Composite(right, SWT.NONE);
12.71 + createBottom(bottom);
12.72 +
12.73 + FormData frmLeft = new FormData();
12.74 + frmLeft.top = new FormAttachment(0);
12.75 + frmLeft.left = new FormAttachment(0);
12.76 + frmLeft.right = new FormAttachment(sashVert);
12.77 + frmLeft.bottom = new FormAttachment(100);
12.78 + left.setLayoutData(frmLeft);
12.79 +
12.80 + final FormData frmSashVert = new FormData();
12.81 + frmSashVert.top = new FormAttachment(0);
12.82 + frmSashVert.left = new FormAttachment(leftPercent);
12.83 + frmSashVert.bottom = new FormAttachment(100);
12.84 + sashVert.setLayoutData(frmSashVert);
12.85 +
12.86 + FormData frmRight = new FormData();
12.87 + frmRight.top = new FormAttachment(0);
12.88 + frmRight.left = new FormAttachment(sashVert);
12.89 + frmRight.right = new FormAttachment(100);
12.90 + frmRight.bottom = new FormAttachment(100);
12.91 + right.setLayoutData(frmRight);
12.92 +
12.93 + FormData frmMain = new FormData();
12.94 + frmMain.top = new FormAttachment(0);
12.95 + frmMain.left = new FormAttachment(0);
12.96 + frmMain.right = new FormAttachment(100);
12.97 + frmMain.bottom = new FormAttachment(sashHoriz);
12.98 + main.setLayoutData(frmMain);
12.99 +
12.100 + final FormData frmSashHoriz = new FormData();
12.101 + frmSashHoriz.top = new FormAttachment(100 - bottomPercent);
12.102 + frmSashHoriz.left = new FormAttachment(0);
12.103 + frmSashHoriz.right = new FormAttachment(100);
12.104 + sashHoriz.setLayoutData(frmSashHoriz);
12.105 +
12.106 + FormData frmBottom = new FormData();
12.107 + frmBottom.top = new FormAttachment(sashHoriz);
12.108 + frmBottom.left = new FormAttachment(0);
12.109 + frmBottom.right = new FormAttachment(100);
12.110 + frmBottom.bottom = new FormAttachment(100);
12.111 + bottom.setLayoutData(frmBottom);
12.112 +
12.113 + left.addControlListener(new ControlAdapter() {
12.114 + public void controlResized(ControlEvent e) {
12.115 + if (left.getSize().x < MIN_COMP_SIZE) {
12.116 + frmSashVert.left = new FormAttachment(0, MIN_COMP_SIZE);
12.117 + shell.layout();
12.118 + }
12.119 + }
12.120 + });
12.121 +
12.122 + bottom.addControlListener(new ControlAdapter() {
12.123 + public void controlResized(ControlEvent e) {
12.124 + if (bottom.getSize().y < MIN_COMP_SIZE) {
12.125 + frmSashHoriz.top = new FormAttachment(right.getSize().y - MIN_COMP_SIZE, right.getSize().y, 0);
12.126 + right.layout();
12.127 + }
12.128 + }
12.129 + });
12.130 +
12.131 + sashVert.addListener(SWT.Selection, new Listener() {
12.132 + public void handleEvent(Event e) {
12.133 +
12.134 + if (e.x < MIN_COMP_SIZE)
12.135 + e.x = MIN_COMP_SIZE;
12.136 +
12.137 + if (shell.getClientArea().width - e.x < MIN_COMP_SIZE)
12.138 + e.x = shell.getClientArea().width - MIN_COMP_SIZE;
12.139 +
12.140 + if (e.x != sashVert.getBounds().x) {
12.141 + frmSashVert.left = new FormAttachment(0, e.x);
12.142 + shell.layout();
12.143 + }
12.144 + }
12.145 + });
12.146 +
12.147 + sashHoriz.addListener(SWT.Selection, new Listener() {
12.148 + public void handleEvent(Event e) {
12.149 + if (e.y < MIN_COMP_SIZE)
12.150 + e.y = MIN_COMP_SIZE;
12.151 +
12.152 + if (right.getSize().y - e.y < MIN_COMP_SIZE)
12.153 + e.y = right.getSize().y - MIN_COMP_SIZE;
12.154 +
12.155 + if (e.y != sashHoriz.getBounds().y) {
12.156 + frmSashHoriz.top = new FormAttachment(e.y, right.getSize().y, 0);
12.157 + right.layout();
12.158 + }
12.159 + }
12.160 + });
12.161 +
12.162 + shell.setMinimumSize(3 * MIN_COMP_SIZE, 3 * MIN_COMP_SIZE);
12.163 + }
12.164 +
12.165 + private void openFile(SymitarFile file, int sym) {
12.166 + boolean found = false;
12.167 +
12.168 + for (CTabItem c : mainfolder.getItems()) {
12.169 + if (c.getData("file") != null && c.getData("file").equals(file) && c.getData("sym") != null && ((Integer) c.getData("sym")) == sym) {
12.170 + mainfolder.setSelection(c);
12.171 + found = true;
12.172 + break;
12.173 + }
12.174 + }
12.175 +
12.176 + if (!found) {
12.177 + CTabItem item = new CTabItem(mainfolder, SWT.CLOSE);
12.178 +
12.179 + item.setText(file.getName());
12.180 + item.setImage(getFileImage(file, sym));
12.181 + item.setData("file", file);
12.182 + item.setData("sym", sym);
12.183 +
12.184 + EditorComposite editor = new EditorComposite(mainfolder, file, sym);
12.185 + item.setControl(editor);
12.186 +
12.187 + mainfolder.setSelection(item);
12.188 + }
12.189 + }
12.190 +
12.191 + private void doubleClickTreeItem() {
12.192 + TreeItem[] selection = tree.getSelection();
12.193 + if (selection.length != 1)
12.194 + return;
12.195 +
12.196 + TreeItem cur = selection[0];
12.197 +
12.198 + if ((cur.getData() instanceof SymitarFile)) {
12.199 + SymitarFile file = (SymitarFile) cur.getData();
12.200 + int sym = ((Project) cur.getParentItem().getData()).getSym();
12.201 +
12.202 + openFile(file, sym);
12.203 + } else {
12.204 + doTree(cur);
12.205 + }
12.206 + }
12.207 +
12.208 + /**
12.209 + * Expands or Collapses the item passed to it on the tree
12.210 + *
12.211 + * @param item
12.212 + */
12.213 + private void doTree(TreeItem item) {
12.214 + item.setExpanded(!item.getExpanded());
12.215 +
12.216 + if (item.getExpanded()) {
12.217 + Event e = new Event();
12.218 + e.item = item;
12.219 + tree.notifyListeners(SWT.Expand, e);
12.220 + }
12.221 + }
12.222 +
12.223 + private void addSym() {
12.224 + int sym = SymLoginShell.symLogin(display, shell, -1);
12.225 +
12.226 + if (sym != -1) {
12.227 + boolean exists = false;
12.228 +
12.229 + for (TreeItem current : tree.getItems()) {
12.230 + if (current.getData() instanceof Integer && ((Integer) current.getData()) == sym)
12.231 + exists = true;
12.232 + }
12.233 +
12.234 + if (!exists) {
12.235 + TreeItem item = new TreeItem(tree, SWT.NONE);
12.236 + item.setText("Sym " + sym);
12.237 + item.setImage(RepDevMain.smallSymImage);
12.238 + item.setData(sym);
12.239 + new TreeItem(item, SWT.NONE).setText("Loading...");
12.240 + }
12.241 + } else {
12.242 + MessageBox dialog = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
12.243 + dialog.setMessage("Could not connect to symitar server, please set a correct server in the options menu");
12.244 + dialog.setText("Error connecting");
12.245 + dialog.open();
12.246 + }
12.247 + }
12.248 +
12.249 + private void removeSym() {
12.250 + TreeItem[] selection = tree.getSelection();
12.251 + TreeItem currentItem;
12.252 + int sym;
12.253 +
12.254 + if (selection.length != 1)
12.255 + return;
12.256 + currentItem = selection[0];
12.257 +
12.258 + while (!(currentItem.getData() instanceof Integer)) {
12.259 + currentItem = currentItem.getParentItem();
12.260 +
12.261 + if (currentItem == null)
12.262 + return;
12.263 + }
12.264 +
12.265 + sym = (Integer) currentItem.getData();
12.266 +
12.267 + MessageBox dialog = new MessageBox(shell, SWT.ICON_QUESTION | SWT.OK | SWT.CANCEL);
12.268 + dialog.setText("Confirm Sym Close");
12.269 + dialog.setMessage("Are you sure you want to close this Sym?");
12.270 +
12.271 + if (dialog.open() == SWT.OK) {
12.272 + ProjectManager.saveProjects(sym);
12.273 + RepDevMain.SYMITAR_SESSIONS.get(sym).disconnect();
12.274 + RepDevMain.SYMITAR_SESSIONS.remove(sym);
12.275 +
12.276 + currentItem.dispose();
12.277 + }
12.278 +
12.279 + tree.notifyListeners(SWT.Selection, null);
12.280 + }
12.281 +
12.282 + private void addProject() {
12.283 + TreeItem[] selection = tree.getSelection();
12.284 + if (selection.length != 1)
12.285 + return;
12.286 +
12.287 + TreeItem cur = selection[0];
12.288 + while (cur.getParentItem() != null)
12.289 + cur = cur.getParentItem();
12.290 +
12.291 + int sym = (Integer) cur.getData();
12.292 + String str = NewProjShell.askForName(display, shell, sym);
12.293 + if (str != null) {
12.294 + Project proj = ProjectManager.createProject(str, sym);
12.295 +
12.296 + if (proj != null) {
12.297 + TreeItem item = new TreeItem(cur, SWT.NONE);
12.298 + item.setText(proj.getName());
12.299 + item.setData(proj);
12.300 + item.setImage(RepDevMain.smallProjectImage);
12.301 + new TreeItem(item, SWT.NONE).setText("Loading...");
12.302 + }
12.303 + }
12.304 + }
12.305 +
12.306 + private void removeProject() {
12.307 + TreeItem[] selection = tree.getSelection();
12.308 + if (selection.length != 1)
12.309 + return;
12.310 +
12.311 + TreeItem cur = selection[0];
12.312 + while (cur != null && !(cur.getData() instanceof Project))
12.313 + cur = cur.getParentItem();
12.314 +
12.315 + if (cur == null)
12.316 + return;
12.317 +
12.318 + Project proj = (Project) cur.getData();
12.319 + RemProjShell.Result result = RemProjShell.confirm(display, shell, proj);
12.320 +
12.321 + if (result == RemProjShell.Result.OK_KEEP) {
12.322 + cur.dispose();
12.323 + ProjectManager.removeProject(proj, false);
12.324 + } else if (result == RemProjShell.Result.OK_DELETE) {
12.325 + cur.dispose();
12.326 + ProjectManager.removeProject(proj, true);
12.327 + }
12.328 +
12.329 + tree.notifyListeners(SWT.Selection, null);
12.330 + }
12.331 +
12.332 + private void importFiles() {
12.333 + TreeItem[] selection = tree.getSelection();
12.334 + if (selection.length != 1)
12.335 + return;
12.336 +
12.337 + TreeItem cur = selection[0];
12.338 + while (cur != null && !(cur.getData() instanceof Project))
12.339 + cur = cur.getParentItem();
12.340 +
12.341 + if (cur == null)
12.342 + return;
12.343 +
12.344 + Project proj = (Project) cur.getData();
12.345 +
12.346 + FileDialog dialog = new FileDialog(shell, FileDialog.Mode.OPEN, proj.getSym());
12.347 + ArrayList<SymitarFile> files = dialog.open();
12.348 +
12.349 + if (files != null) {
12.350 + for (SymitarFile file : files) {
12.351 + if (!proj.hasFile(file)) {
12.352 + proj.addFile(file);
12.353 + TreeItem item = new TreeItem(cur, SWT.NONE);
12.354 + item.setText(file.getName());
12.355 + item.setData(file);
12.356 + item.setImage(getFileImage(file));
12.357 + }
12.358 + }
12.359 + }
12.360 + }
12.361 +
12.362 + private void newFileInProject() {
12.363 + FileDialog dialog = new FileDialog(shell, FileDialog.Mode.SAVE, getCurrentTreeSym());
12.364 + ArrayList<SymitarFile> files = dialog.open();
12.365 +
12.366 + if (files.size() > 0) {
12.367 + SymitarFile file = files.get(0);
12.368 +
12.369 + TreeItem[] selection = tree.getSelection();
12.370 + if (selection.length != 1)
12.371 + return;
12.372 +
12.373 + TreeItem cur = selection[0];
12.374 + while (cur != null && !(cur.getData() instanceof Project))
12.375 + cur = cur.getParentItem();
12.376 +
12.377 + if (cur == null)
12.378 + return;
12.379 +
12.380 + Project proj = (Project) cur.getData();
12.381 +
12.382 + if (!proj.hasFile(file)) {
12.383 + proj.addFile(file);
12.384 + TreeItem item = new TreeItem(cur, SWT.NONE);
12.385 + item.setText(file.getName());
12.386 + item.setData(file);
12.387 + item.setImage(getFileImage(file));
12.388 + }
12.389 +
12.390 + RepDevMain.SYMITAR_SESSIONS.get(getCurrentTreeSym()).saveFile(file, "");
12.391 + openFile(file, getCurrentTreeSym());
12.392 + tree.notifyListeners(SWT.Selection, null);
12.393 + }
12.394 + }
12.395 +
12.396 + private void removeFile() {
12.397 + TreeItem[] selection = tree.getSelection();
12.398 + if (selection.length != 1)
12.399 + return;
12.400 +
12.401 + if (!(selection[0].getData() instanceof SymitarFile))
12.402 + return;
12.403 +
12.404 + SymitarFile file = (SymitarFile) selection[0].getData();
12.405 + Project proj = (Project) selection[0].getParentItem().getData();
12.406 +
12.407 + RemFileShell.Result result = RemFileShell.confirm(display, shell, proj, file);
12.408 +
12.409 + if (result == RemFileShell.Result.OK_KEEP) {
12.410 + proj.removeFile(file, false);
12.411 + selection[0].dispose();
12.412 + } else if (result == RemFileShell.Result.OK_DELETE) {
12.413 + proj.removeFile(file, true);
12.414 + selection[0].dispose();
12.415 + }
12.416 +
12.417 + tree.notifyListeners(SWT.Selection, null);
12.418 + }
12.419 +
12.420 + private void createExplorer(Composite self) {
12.421 + self.setLayout(new FillLayout());
12.422 + Group group = new Group(self, SWT.NONE);
12.423 + group.setText("Project Explorer");
12.424 + group.setLayout(new FormLayout());
12.425 +
12.426 + ToolBar toolbar = new ToolBar(group, SWT.HORIZONTAL | SWT.WRAP);
12.427 +
12.428 + ToolItem addSym = new ToolItem(toolbar, SWT.PUSH);
12.429 + addSym.setImage(RepDevMain.smallSymAddImage);
12.430 + addSym.setToolTipText("Add a new Sym to this list.");
12.431 +
12.432 + final ToolItem remSym = new ToolItem(toolbar, SWT.PUSH);
12.433 + remSym.setImage(RepDevMain.smallSymRemoveImage);
12.434 + remSym.setToolTipText("Remove the selected Sym from this list.");
12.435 + remSym.setEnabled(false);
12.436 +
12.437 + final ToolItem addProj = new ToolItem(toolbar, SWT.PUSH);
12.438 + addProj.setImage(RepDevMain.smallProjectAddImage);
12.439 + addProj.setToolTipText("Create a new project in the selected Sym.");
12.440 + addProj.setEnabled(false);
12.441 +
12.442 + final ToolItem remProj = new ToolItem(toolbar, SWT.PUSH);
12.443 + remProj.setImage(RepDevMain.smallProjectRemoveImage);
12.444 + remProj.setToolTipText("Delete the selected project.");
12.445 + remProj.setEnabled(false);
12.446 +
12.447 + final ToolItem newFile = new ToolItem(toolbar, SWT.PUSH);
12.448 + newFile.setImage(RepDevMain.smallFileAddImage);
12.449 + newFile.setToolTipText("Create a new file in your current project.");
12.450 + newFile.setEnabled(false);
12.451 +
12.452 + final ToolItem importFile = new ToolItem(toolbar, SWT.PUSH);
12.453 + importFile.setImage(RepDevMain.smallImportImage);
12.454 + importFile.setToolTipText("Import Existing Files to your current project.");
12.455 + importFile.setEnabled(false);
12.456 +
12.457 + final ToolItem remFile = new ToolItem(toolbar, SWT.PUSH);
12.458 + remFile.setImage(RepDevMain.smallFileRemoveImage);
12.459 + remFile.setToolTipText("Disassociate the selected file from its project, and optionally delete the file from the server.");
12.460 + remFile.setEnabled(false);
12.461 +
12.462 + toolbar.pack();
12.463 +
12.464 + tree = new Tree(group, SWT.NONE | SWT.BORDER );
12.465 + for (int sym : Config.getSyms()) {
12.466 + TreeItem item = new TreeItem(tree, SWT.NONE);
12.467 + item.setText("Sym " + sym);
12.468 + item.setImage(RepDevMain.smallSymImage);
12.469 + item.setData(sym);
12.470 + new TreeItem(item, SWT.NONE).setText("Loading...");
12.471 + }
12.472 +
12.473 + Menu treeMenu = new Menu(tree);
12.474 +
12.475 + Menu newMenu = new Menu(treeMenu);
12.476 + MenuItem newItem = new MenuItem(treeMenu, SWT.CASCADE);
12.477 + newItem.setMenu(newMenu);
12.478 + newItem.setText("New...");
12.479 +
12.480 + MenuItem newFreeFile = new MenuItem(newMenu, SWT.NONE);
12.481 + newFreeFile.setImage(RepDevMain.smallFileNewImage);
12.482 + newFreeFile.setText("New File");
12.483 + newFreeFile.addSelectionListener(new SelectionAdapter() {
12.484 + public void widgetSelected(SelectionEvent e) {
12.485 + FileDialog dialog = new FileDialog(shell, FileDialog.Mode.SAVE, getCurrentTreeSym());
12.486 + ArrayList<SymitarFile> files = dialog.open();
12.487 +
12.488 + if (files.size() > 0) {
12.489 + SymitarFile file = files.get(0);
12.490 +
12.491 + RepDevMain.SYMITAR_SESSIONS.get(getCurrentTreeSym()).saveFile(file, "");
12.492 + openFile(file, getCurrentTreeSym());
12.493 + }
12.494 + }
12.495 + });
12.496 +
12.497 + final MenuItem newProjectFile = new MenuItem(newMenu, SWT.NONE);
12.498 + newProjectFile.setImage(RepDevMain.smallFileAddImage);
12.499 + newProjectFile.setText("New File in Project");
12.500 + newProjectFile.addSelectionListener(new SelectionAdapter() {
12.501 + public void widgetSelected(SelectionEvent e) {
12.502 + newFileInProject();
12.503 + }
12.504 + });
12.505 +
12.506 + new MenuItem(newMenu, SWT.SEPARATOR);
12.507 +
12.508 + MenuItem newProject = new MenuItem(newMenu, SWT.NONE);
12.509 + newProject.setText("Project");
12.510 + newProject.setImage(RepDevMain.smallProjectAddImage);
12.511 + newProject.addSelectionListener(new SelectionAdapter() {
12.512 + public void widgetSelected(SelectionEvent e) {
12.513 + addProject();
12.514 + }
12.515 + });
12.516 +
12.517 + new MenuItem(treeMenu, SWT.SEPARATOR);
12.518 +
12.519 + final Menu runMenu = new Menu(treeMenu);
12.520 + final MenuItem runMenuItem = new MenuItem(treeMenu,SWT.CASCADE);
12.521 + runMenuItem.setMenu(runMenu);
12.522 + runMenuItem.setText("Run");
12.523 + runMenuItem.setImage(RepDevMain.smallRunImage);
12.524 +
12.525 + MenuItem runReport = new MenuItem(runMenu,SWT.NONE);
12.526 + runReport.setText("Run Report");
12.527 + runReport.setImage(RepDevMain.smallRunImage);
12.528 + runReport.addSelectionListener(new SelectionAdapter() {
12.529 + public void widgetSelected(SelectionEvent e) {
12.530 + runReport();
12.531 + }
12.532 + });
12.533 +
12.534 + MenuItem runFMReport = new MenuItem(runMenu,SWT.NONE);
12.535 + runFMReport.setText("Run Report with FM");
12.536 + runFMReport.setImage(RepDevMain.smallRunFMImage);
12.537 +
12.538 + MenuItem openLastReport = new MenuItem(runMenu,SWT.NONE);
12.539 + openLastReport.setText("Open Last Report Run");
12.540 + openLastReport.setImage(RepDevMain.smallFileOpenImage);
12.541 +
12.542 + MenuItem findReport = new MenuItem(runMenu,SWT.NONE);
12.543 + findReport.setText("Find runs in Print History");
12.544 + findReport.setImage(RepDevMain.smallFindImage);
12.545 +
12.546 +
12.547 + new MenuItem(treeMenu, SWT.SEPARATOR);
12.548 +
12.549 + MenuItem deleteFile = new MenuItem(treeMenu, SWT.NONE);
12.550 + deleteFile.setText("Remove");
12.551 + deleteFile.setImage(RepDevMain.smallDeleteImage);
12.552 + deleteFile.addSelectionListener(new SelectionAdapter() {
12.553 + public void widgetSelected(SelectionEvent e) {
12.554 + TreeItem[] selection = tree.getSelection();
12.555 + if (selection.length != 1)
12.556 + return;
12.557 +
12.558 + TreeItem cur = selection[0];
12.559 + Object data = cur.getData();
12.560 +
12.561 + if (data instanceof Integer)
12.562 + removeSym();
12.563 + else if (data instanceof Project)
12.564 + removeProject();
12.565 + else
12.566 + removeFile();
12.567 +
12.568 + }
12.569 + });
12.570 +
12.571 + new MenuItem(treeMenu, SWT.SEPARATOR);
12.572 +
12.573 + final MenuItem openFile = new MenuItem(treeMenu, SWT.NONE);
12.574 + openFile.setText("Open Existing...");
12.575 + openFile.setImage(RepDevMain.smallFileOpenImage);
12.576 + openFile.addSelectionListener(new SelectionAdapter() {
12.577 +
12.578 + public void widgetSelected(SelectionEvent e) {
12.579 +
12.580 + FileDialog dialog = new FileDialog(shell, FileDialog.Mode.OPEN, getCurrentTreeSym());
12.581 +
12.582 + for (SymitarFile file : dialog.open())
12.583 + openFile(file, getCurrentTreeSym());
12.584 + }
12.585 +
12.586 + });
12.587 +
12.588 + final MenuItem importFilem = new MenuItem(treeMenu, SWT.NONE);
12.589 + importFilem.setText("Import Files to Project");
12.590 + importFilem.setImage(RepDevMain.smallImportImage);
12.591 + importFilem.addSelectionListener(new SelectionAdapter() {
12.592 +
12.593 + public void widgetSelected(SelectionEvent e) {
12.594 + importFiles();
12.595 + }
12.596 +
12.597 + });
12.598 +
12.599 + treeMenu.addMenuListener(new MenuListener() {
12.600 +
12.601 + public void menuHidden(MenuEvent e) {
12.602 + }
12.603 +
12.604 + public void menuShown(MenuEvent e) {
12.605 + if (tree.getSelection()[0].getData() instanceof Integer) {
12.606 + importFilem.setEnabled(false);
12.607 + newProjectFile.setEnabled(false);
12.608 + } else {
12.609 + importFilem.setEnabled(true);
12.610 + newProjectFile.setEnabled(true);
12.611 + }
12.612 +
12.613 + if( tree.getSelectionCount() == 1 && tree.getSelection()[0].getData() instanceof SymitarFile && ((SymitarFile)tree.getSelection()[0].getData()).getType() == FileType.REPGEN){
12.614 + runMenuItem.setEnabled(true);
12.615 + }
12.616 + else
12.617 + runMenuItem.setEnabled(false);
12.618 + }
12.619 +
12.620 + });
12.621 +
12.622 + tree.setMenu(treeMenu);
12.623 +
12.624 + tree.addListener(SWT.Expand, new Listener() {
12.625 + public void handleEvent(Event e) {
12.626 + final TreeItem root = (TreeItem) e.item;
12.627 +
12.628 + for (TreeItem child : root.getItems())
12.629 + child.dispose();
12.630 +
12.631 + if (root.getData() instanceof Integer) {
12.632 + SymitarSession session = RepDevMain.SYMITAR_SESSIONS.get(root.getData());
12.633 +
12.634 + if (session == null || !session.isConnected()) {
12.635 + if (SymLoginShell.symLogin(display, shell, (Integer) root.getData()) == -1) {
12.636 + display.asyncExec(new Runnable() {
12.637 +
12.638 + public void run() {
12.639 + TreeItem newItem = new TreeItem(root, SWT.NONE);
12.640 + newItem.setText("Loading...");
12.641 + newItem.setExpanded(false);
12.642 + root.setExpanded(false);
12.643 + }
12.644 +
12.645 + });
12.646 +
12.647 + return;
12.648 + }
12.649 + }
12.650 +
12.651 + for (Project proj : ProjectManager.getProjects((Integer) root.getData())) {
12.652 + TreeItem item = new TreeItem(root, SWT.NONE);
12.653 + item.setText(proj.getName());
12.654 + item.setData(proj);
12.655 + item.setImage(RepDevMain.smallProjectImage);
12.656 + new TreeItem(item, SWT.NONE).setText("Loading...");
12.657 + }
12.658 + } else if (root.getData() instanceof Project) {
12.659 + for (SymitarFile file : ((Project) root.getData()).getFiles()) {
12.660 + TreeItem item = new TreeItem(root, SWT.NONE);
12.661 + item.setText(file.getName());
12.662 +
12.663 + item.setImage(getFileImage(file));
12.664 +
12.665 + item.setData(file);
12.666 + }
12.667 + }
12.668 + }
12.669 + });
12.670 +
12.671 + tree.addListener(SWT.Selection, new Listener() {
12.672 + public void handleEvent(Event e) {
12.673 + TreeItem[] selection = tree.getSelection();
12.674 +
12.675 + if (selection.length != 1) {
12.676 + remSym.setEnabled(false);
12.677 + addProj.setEnabled(false);
12.678 + remProj.setEnabled(false);
12.679 + importFile.setEnabled(false);
12.680 + newFile.setEnabled(false);
12.681 + remFile.setEnabled(false);
12.682 + return;
12.683 + }
12.684 +
12.685 + Object data = ((TreeItem) selection[0]).getData();
12.686 + if (data instanceof Integer) {
12.687 + remSym.setEnabled(true);
12.688 + addProj.setEnabled(true);
12.689 + remProj.setEnabled(false);
12.690 + importFile.setEnabled(false);
12.691 + newFile.setEnabled(false);
12.692 + remFile.setEnabled(false);
12.693 + } else if (data instanceof Project) {
12.694 + remSym.setEnabled(true);
12.695 + addProj.setEnabled(true);
12.696 + remProj.setEnabled(true);
12.697 + importFile.setEnabled(true);
12.698 + newFile.setEnabled(true);
12.699 + remFile.setEnabled(false);
12.700 + } else if (data instanceof SymitarFile) {
12.701 + remSym.setEnabled(true);
12.702 + addProj.setEnabled(true);
12.703 + remProj.setEnabled(true);
12.704 + importFile.setEnabled(true);
12.705 + newFile.setEnabled(true);
12.706 + remFile.setEnabled(true);
12.707 + }
12.708 + }
12.709 + });
12.710 +
12.711 + tree.addSelectionListener(new SelectionAdapter() {
12.712 + public void widgetDefaultSelected(SelectionEvent e) {
12.713 + doubleClickTreeItem();
12.714 + }
12.715 + });
12.716 +
12.717 + addSym.addSelectionListener(new SelectionAdapter() {
12.718 + public void widgetSelected(SelectionEvent e) {
12.719 + addSym();
12.720 + }
12.721 + });
12.722 + remSym.addSelectionListener(new SelectionAdapter() {
12.723 + public void widgetSelected(SelectionEvent e) {
12.724 + removeSym();
12.725 + }
12.726 + });
12.727 + addProj.addSelectionListener(new SelectionAdapter() {
12.728 + public void widgetSelected(SelectionEvent e) {
12.729 + addProject();
12.730 + }
12.731 + });
12.732 + remProj.addSelectionListener(new SelectionAdapter() {
12.733 + public void widgetSelected(SelectionEvent e) {
12.734 + removeProject();
12.735 + }
12.736 + });
12.737 + importFile.addSelectionListener(new SelectionAdapter() {
12.738 + public void widgetSelected(SelectionEvent e) {
12.739 + importFiles();
12.740 + }
12.741 + });
12.742 + remFile.addSelectionListener(new SelectionAdapter() {
12.743 + public void widgetSelected(SelectionEvent e) {
12.744 + removeFile();
12.745 + }
12.746 + });
12.747 + newFile.addSelectionListener(new SelectionAdapter() {
12.748 + public void widgetSelected(SelectionEvent e) {
12.749 + newFileInProject();
12.750 + }
12.751 + });
12.752 +
12.753 + FormData frmToolbar = new FormData();
12.754 + frmToolbar.top = new FormAttachment(0);
12.755 + frmToolbar.left = new FormAttachment(0);
12.756 + frmToolbar.right = new FormAttachment(100);
12.757 + toolbar.setLayoutData(frmToolbar);
12.758 +
12.759 + FormData frmTree = new FormData();
12.760 + frmTree.top = new FormAttachment(toolbar);
12.761 + frmTree.left = new FormAttachment(0);
12.762 + frmTree.right = new FormAttachment(100);
12.763 + frmTree.bottom = new FormAttachment(100);
12.764 + tree.setLayoutData(frmTree);
12.765 + }
12.766 +
12.767 + protected void runReport() {
12.768 + Object data = tree.getSelection()[0].getData();
12.769 +
12.770 + if( !(data instanceof SymitarFile) )
12.771 + return;
12.772 +
12.773 + RunReportShell dialog = new RunReportShell(shell,(SymitarFile)data,getCurrentTreeSym());
12.774 + dialog.open();
12.775 + }
12.776 +
12.777 + /**
12.778 + *
12.779 + * @return Sym of currently selected tree item
12.780 + */
12.781 + private int getCurrentTreeSym() {
12.782 + int sym = -1;
12.783 + Object data = tree.getSelection()[0].getData();
12.784 +
12.785 + if (data instanceof Integer)
12.786 + sym = (Integer) data;
12.787 + else if (data instanceof Project)
12.788 + sym = ((Project) data).getSym();
12.789 + else
12.790 + sym = ((Project) tree.getSelection()[0].getParentItem().getData()).getSym();
12.791 +
12.792 + return sym;
12.793 + }
12.794 +
12.795 + private Image getFileImage(SymitarFile file) {
12.796 + return getFileImage(file, -1);
12.797 + }
12.798 +
12.799 + private Image getFileImage(SymitarFile file, int sym) {
12.800 + Image img;
12.801 +
12.802 + switch (file.getType()) {
12.803 + case REPGEN:
12.804 + img = RepDevMain.smallRepGenImage;
12.805 + break;
12.806 + default:
12.807 + img = RepDevMain.smallFileImage;
12.808 + }
12.809 +
12.810 + return img;
12.811 +
12.812 + }
12.813 +
12.814 + private void createEditorPane(Composite self) {
12.815 + self.setLayout(new FillLayout());
12.816 + mainfolder = new CTabFolder(self, SWT.TOP | SWT.BORDER);
12.817 + mainfolder.setLayout(new FillLayout());
12.818 + mainfolder.setSimple(false);
12.819 +
12.820 + mainfolder.addCTabFolder2Listener(new CTabFolder2Listener(){
12.821 +
12.822 + public void close(CTabFolderEvent event) {
12.823 + event.doit = confirmClose( mainfolder.getSelection() );
12.824 + }
12.825 +
12.826 + public void maximize(CTabFolderEvent event) {
12.827 + // TODO Auto-generated method stub
12.828 +
12.829 + }
12.830 +
12.831 + public void minimize(CTabFolderEvent event) {
12.832 + // TODO Auto-generated method stub
12.833 +
12.834 + }
12.835 +
12.836 + public void restore(CTabFolderEvent event) {
12.837 + // TODO Auto-generated method stub
12.838 +
12.839 + }
12.840 +
12.841 + public void showList(CTabFolderEvent event) {
12.842 + // TODO Auto-generated method stub
12.843 +
12.844 + }
12.845 +
12.846 + });
12.847 + }
12.848 +
12.849 + private boolean confirmClose(CTabItem item) {
12.850 + if (item != null && item.getData("modified") != null && ((Boolean) item.getData("modified"))) {
12.851 + MessageBox dialog = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES | SWT.NO | SWT.CANCEL);
12.852 + dialog.setText("Confirm File Close");
12.853 + dialog.setMessage("The file '" + item.getData("file") + "' on Sym " + item.getData("sym") + " has been modified, do you want to save it before closing it?");
12.854 +
12.855 + int result = dialog.open();
12.856 +
12.857 + if (result == SWT.CANCEL)
12.858 + return false;
12.859 + else if (result == SWT.YES) {
12.860 + ((EditorComposite) item.getControl()).saveFile();
12.861 + }
12.862 + }
12.863 +
12.864 + return true;
12.865 + }
12.866 +
12.867 + private void createBottom(Composite self) {
12.868 + self.setLayout(new FillLayout());
12.869 + CTabFolder folder = new CTabFolder(self, SWT.TOP | SWT.BORDER);
12.870 + folder.setLayout(new FillLayout());
12.871 + folder.setSimple(false);
12.872 +
12.873 + CTabItem errors = new CTabItem(folder, SWT.NONE);
12.874 + errors.setText("&Errors");
12.875 + errors.setImage(RepDevMain.smallErrorsImage);
12.876 + tblErrors = new Table(folder, SWT.NONE);
12.877 + createTable(tblErrors);
12.878 + errors.setControl(tblErrors);
12.879 +
12.880 + CTabItem tasks = new CTabItem(folder, SWT.NONE);
12.881 + tasks.setText("&Tasks");
12.882 + tasks.setImage(RepDevMain.smallTasksImage);
12.883 + tblTasks = new Table(folder, SWT.NONE);
12.884 + createTable(tblTasks);
12.885 + tasks.setControl(tblTasks);
12.886 +
12.887 + folder.setSelection(errors);
12.888 + }
12.889 +
12.890 + private void createTable(Table tbl) {
12.891 + tbl.setHeaderVisible(true);
12.892 + tbl.setLinesVisible(true);
12.893 +
12.894 + String[] names = { "Description", "RepGen", "Line" };
12.895 + int[] widths = {400,100,50};
12.896 + int i = 0;
12.897 +
12.898 + for (String name : names) {
12.899 + TableColumn col = new TableColumn(tbl, SWT.NONE);
12.900 + col.setText(name);
12.901 + col.setMoveable(false);
12.902 + col.pack();
12.903 +
12.904 + col.setWidth(widths[i]);
12.905 +
12.906 + if (col.getWidth() < MIN_COL_WIDTH)
12.907 + col.setWidth(MIN_COL_WIDTH);
12.908 +
12.909 +
12.910 +
12.911 + col.addControlListener(new ControlAdapter() {
12.912 + public void controlResized(ControlEvent e) {
12.913 + TableColumn col = (TableColumn) e.widget;
12.914 +
12.915 + if (col.getWidth() < MIN_COL_WIDTH)
12.916 + col.setWidth(MIN_COL_WIDTH);
12.917 + }
12.918 + });
12.919 +
12.920 + i++;
12.921 + }
12.922 + }
12.923 +
12.924 + private void createMenuDefault() {
12.925 + Menu bar = new Menu(shell, SWT.BAR);
12.926 +
12.927 + MenuItem fileItem = new MenuItem(bar, SWT.CASCADE);
12.928 + fileItem.setText("&File");
12.929 + MenuItem editItem = new MenuItem(bar, SWT.CASCADE);
12.930 + editItem.setText("&Edit");
12.931 + MenuItem toolsItem = new MenuItem(bar, SWT.CASCADE);
12.932 + toolsItem.setText("&Tools");
12.933 + MenuItem helpItem = new MenuItem(bar, SWT.CASCADE);
12.934 + helpItem.setText("&Help");
12.935 +
12.936 + Menu fileMenu = new Menu(shell, SWT.DROP_DOWN);
12.937 + fileItem.setMenu(fileMenu);
12.938 + Menu toolsMenu = new Menu(shell, SWT.DROP_DOWN);
12.939 + toolsItem.setMenu(toolsMenu);
12.940 + Menu helpMenu = new Menu(shell, SWT.DROP_DOWN);
12.941 + helpItem.setMenu(helpMenu);
12.942 + Menu editMenu = new Menu(shell, SWT.DROP_DOWN);
12.943 + editItem.setMenu(editMenu);
12.944 +
12.945 + MenuItem fileExit = new MenuItem(fileMenu, SWT.PUSH);
12.946 + fileExit.setText("E&xit");
12.947 + fileExit.setImage(RepDevMain.smallExitImage);
12.948 + fileExit.addSelectionListener(new SelectionAdapter() {
12.949 + public void widgetSelected(SelectionEvent arg0) {
12.950 + close();
12.951 + }
12.952 + });
12.953 +
12.954 + final MenuItem editUndo = new MenuItem(editMenu,SWT.PUSH);
12.955 + editUndo.setImage(RepDevMain.smallUndoImage);
12.956 + editUndo.setText("Undo Typing\tCTRL+Z");
12.957 + editUndo.addSelectionListener(new SelectionAdapter() {
12.958 + public void widgetSelected(SelectionEvent arg0) {
12.959 + if( mainfolder.getSelectionIndex() == -1)
12.960 + return;
12.961 +
12.962 + ((EditorComposite)mainfolder.getItem(mainfolder.getSelectionIndex()).getControl()).undo();
12.963 + }
12.964 + });
12.965 +
12.966 + final MenuItem editRedo = new MenuItem(editMenu,SWT.PUSH);
12.967 + editRedo.setImage(RepDevMain.smallRedoImage);
12.968 + editRedo.setText("Redo Typing\tCTRL+Y");
12.969 + editRedo.addSelectionListener(new SelectionAdapter() {
12.970 + public void widgetSelected(SelectionEvent arg0) {
12.971 + if( mainfolder.getSelectionIndex() == -1)
12.972 + return;
12.973 +
12.974 + ((EditorComposite)mainfolder.getItem(mainfolder.getSelectionIndex()).getControl()).redo();
12.975 + }
12.976 + });
12.977 +
12.978 + new MenuItem(editMenu,SWT.SEPARATOR);
12.979 +
12.980 + final MenuItem editCut = new MenuItem(editMenu,SWT.PUSH);
12.981 + editCut.setImage(RepDevMain.smallCutImage);
12.982 + editCut.setText("Cut\tCTRL+X");
12.983 + editCut.addSelectionListener(new SelectionAdapter() {
12.984 + public void widgetSelected(SelectionEvent arg0) {
12.985 + if( mainfolder.getSelectionIndex() == -1)
12.986 + return;
12.987 +
12.988 + ((EditorComposite)mainfolder.getItem(mainfolder.getSelectionIndex()).getControl()).getStyledText().cut();
12.989 + }
12.990 + });
12.991 +
12.992 + final MenuItem editCopy = new MenuItem(editMenu,SWT.PUSH);
12.993 + editCopy.setImage(RepDevMain.smallCopyImage);
12.994 + editCopy.setText("Copy\tCTRL+C");
12.995 + editCopy.addSelectionListener(new SelectionAdapter() {
12.996 + public void widgetSelected(SelectionEvent arg0) {
12.997 + if( mainfolder.getSelectionIndex() == -1)
12.998 + return;
12.999 +
12.1000 + ((EditorComposite)mainfolder.getItem(mainfolder.getSelectionIndex()).getControl()).getStyledText().copy();
12.1001 + }
12.1002 + });
12.1003 +
12.1004 + final MenuItem editPaste = new MenuItem(editMenu,SWT.PUSH);
12.1005 + editPaste.setImage(RepDevMain.smallPasteImage);
12.1006 + editPaste.setText("Paste\tCTRL+V");
12.1007 + editPaste.addSelectionListener(new SelectionAdapter() {
12.1008 + public void widgetSelected(SelectionEvent arg0) {
12.1009 + if( mainfolder.getSelectionIndex() == -1)
12.1010 + return;
12.1011 +
12.1012 + ((EditorComposite)mainfolder.getItem(mainfolder.getSelectionIndex()).getControl()).getStyledText().paste();
12.1013 + }
12.1014 + });
12.1015 +
12.1016 + new MenuItem(editMenu,SWT.SEPARATOR);
12.1017 +
12.1018 + final MenuItem editSelectAll = new MenuItem(editMenu,SWT.PUSH);
12.1019 + editSelectAll.setImage(RepDevMain.smallSelectAllImage);
12.1020 + editSelectAll.setText("Select All\tCTRL+A");
12.1021 + editSelectAll.addSelectionListener(new SelectionAdapter() {
12.1022 + public void widgetSelected(SelectionEvent arg0) {
12.1023 + if( mainfolder.getSelectionIndex() == -1)
12.1024 + return;
12.1025 +
12.1026 + ((EditorComposite)mainfolder.getItem(mainfolder.getSelectionIndex()).getControl()).getStyledText().selectAll();
12.1027 + }
12.1028 + });
12.1029 +
12.1030 + new MenuItem(editMenu,SWT.SEPARATOR);
12.1031 +
12.1032 + final MenuItem editFind = new MenuItem(editMenu,SWT.PUSH);
12.1033 + editFind.setImage(RepDevMain.smallFindReplaceImage);
12.1034 + editFind.setText("Find/Replace\tCTRL+F");
12.1035 + editFind.addSelectionListener(new SelectionAdapter() {
12.1036 + public void widgetSelected(SelectionEvent arg0) {
12.1037 + if( mainfolder.getSelectionIndex() == -1)
12.1038 + return;
12.1039 +
12.1040 +
12.1041 + }
12.1042 + });
12.1043 +
12.1044 + final MenuItem editFindNext = new MenuItem(editMenu,SWT.PUSH);
12.1045 + editFindNext.setImage(RepDevMain.smallFindImage);
12.1046 + editFindNext.setText("Find Next\tF3");
12.1047 + editFindNext.addSelectionListener(new SelectionAdapter() {
12.1048 + public void widgetSelected(SelectionEvent arg0) {
12.1049 + if( mainfolder.getSelectionIndex() == -1)
12.1050 + return;
12.1051 +
12.1052 +
12.1053 + }
12.1054 + });
12.1055 +
12.1056 +
12.1057 + editMenu.addMenuListener(new MenuListener(){
12.1058 +
12.1059 + public void menuHidden(MenuEvent e) {
12.1060 + // TODO Auto-generated method stub
12.1061 +
12.1062 + }
12.1063 +
12.1064 + public void menuShown(MenuEvent e) {
12.1065 + if(mainfolder.getSelectionIndex() == -1){
12.1066 + editRedo.setEnabled(false);
12.1067 + editUndo.setEnabled(false);
12.1068 +
12.1069 + editCut.setEnabled(false);
12.1070 + editCopy.setEnabled(false);
12.1071 + editPaste.setEnabled(false);
12.1072 +
12.1073 + editSelectAll.setEnabled(false);
12.1074 + editFind.setEnabled(false);
12.1075 + editFindNext.setEnabled(false);
12.1076 + }
12.1077 + else{
12.1078 + editCut.setEnabled(true);
12.1079 + editCopy.setEnabled(true);
12.1080 + editPaste.setEnabled(true);
12.1081 + editSelectAll.setEnabled(true);
12.1082 + editFind.setEnabled(true);
12.1083 + editFindNext.setEnabled(true);
12.1084 +
12.1085 + if( ((EditorComposite)mainfolder.getItem(mainfolder.getSelectionIndex()).getControl()).canRedo() )
12.1086 + editRedo.setEnabled(true);
12.1087 + else
12.1088 + editRedo.setEnabled(false);
12.1089 +
12.1090 + if( ((EditorComposite)mainfolder.getItem(mainfolder.getSelectionIndex()).getControl()).canUndo() )
12.1091 + editUndo.setEnabled(true);
12.1092 + else
12.1093 + editUndo.setEnabled(false);
12.1094 +
12.1095 + }
12.1096 + }
12.1097 +
12.1098 + });
12.1099 +
12.1100 + MenuItem toolsOptions = new MenuItem(toolsMenu, SWT.PUSH);
12.1101 + toolsOptions.setText("&Options");
12.1102 + toolsOptions.setImage(RepDevMain.smallOptionsImage);
12.1103 + toolsOptions.addSelectionListener(new SelectionAdapter() {
12.1104 + public void widgetSelected(SelectionEvent arg0) {
12.1105 + showOptions();
12.1106 + }
12.1107 + });
12.1108 +
12.1109 + MenuItem helpAbout = new MenuItem(helpMenu, SWT.PUSH);
12.1110 + helpAbout.setText("&About " + RepDevMain.NAMESTR);
12.1111 + helpAbout.addSelectionListener(new SelectionAdapter() {
12.1112 + public void widgetSelected(SelectionEvent arg0) {
12.1113 + showAboutBox();
12.1114 + }
12.1115 + });
12.1116 +
12.1117 + shell.setMenuBar(bar);
12.1118 + }
12.1119 +
12.1120 + public void updateErrorList(){
12.1121 + tblErrors.clearAll();
12.1122 +
12.1123 + for( CTabItem item : mainfolder.getItems()){
12.1124 + if( item.getControl() != null && ((SymitarFile)item.getData("file")).getType() == FileType.REPGEN )
12.1125 + {
12.1126 + synchronized(((EditorComposite)item.getControl()).getParser()){
12.1127 + for( RepgenParser.Error error : ((EditorComposite)item.getControl()).getParser().getErrorList()){
12.1128 + TableItem row = new TableItem(tblErrors,SWT.NONE);
12.1129 + row.setText(0, error.getDescription());
12.1130 + row.setText(1, error.getFile());
12.1131 + row.setText(2, String.valueOf(error.getLine()));
12.1132 + }
12.1133 + }
12.1134 + }
12.1135 + }
12.1136 + }
12.1137 +
12.1138 + private void showOptions() {
12.1139 + OptionsShell.showOptions(shell.getDisplay(), shell);
12.1140 + }
12.1141 +
12.1142 + private void showAboutBox() {
12.1143 + MessageBox dialog = new MessageBox(shell, SWT.OK | SWT.ICON_INFORMATION);
12.1144 + dialog.setMessage(RepDevMain.NAMESTR);
12.1145 + dialog.setText("About");
12.1146 +
12.1147 + dialog.open();
12.1148 + }
12.1149 +
12.1150 + private void close() {
12.1151 + shell.dispose();
12.1152 + }
12.1153 +}
13.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
13.2 +++ b/com/repdev/NewFileShell.java Fri Jun 01 18:46:53 2007 +0000
13.3 @@ -0,0 +1,293 @@
13.4 +package com.repdev;
13.5 +
13.6 +import org.eclipse.swt.*;
13.7 +import java.util.ArrayList;
13.8 +import org.eclipse.swt.events.*;
13.9 +import org.eclipse.swt.layout.*;
13.10 +import org.eclipse.swt.widgets.*;
13.11 +
13.12 +public class NewFileShell {
13.13 + private static NewFileShell me = new NewFileShell();
13.14 + private Shell shell;
13.15 + private ArrayList<SymitarFile> result = null;
13.16 +
13.17 + private NewFileShell() {
13.18 + }
13.19 +
13.20 + public enum Mode {
13.21 + NEW, OPEN, BOTH
13.22 + };
13.23 +
13.24 + private void create(Shell parent, final Project project, Mode mode) {
13.25 + FormLayout layout = new FormLayout();
13.26 + layout.marginTop = 5;
13.27 + layout.marginBottom = 5;
13.28 + layout.marginLeft = 5;
13.29 + layout.marginRight = 5;
13.30 + layout.spacing = 5;
13.31 +
13.32 + shell = new Shell(parent, SWT.APPLICATION_MODAL | SWT.DIALOG_TRIM | SWT.RESIZE);
13.33 + shell.setText("Save/Open Symitar File");
13.34 + shell.setLayout(layout);
13.35 + shell.setMinimumSize(300, 450);
13.36 +
13.37 + final Button createNew = new Button(shell, SWT.RADIO);
13.38 + createNew.setText("Create New");
13.39 +
13.40 + final Label nameLabelNew = new Label(shell, SWT.NONE);
13.41 + nameLabelNew.setText("Name: ");
13.42 +
13.43 + final Label typeLabelNew = new Label(shell, SWT.NONE);
13.44 + typeLabelNew.setText("Type: ");
13.45 +
13.46 + final Text nameTextNew = new Text(shell, SWT.BORDER);
13.47 +
13.48 + final Combo typeComboNew = new Combo(shell, SWT.READ_ONLY);
13.49 +
13.50 + for (FileType type : FileType.values()) {
13.51 + typeComboNew.add(type.toString());
13.52 + }
13.53 +
13.54 + typeComboNew.select(FileType.REPGEN.ordinal());
13.55 +
13.56 + final Button importExisting = new Button(shell, SWT.RADIO);
13.57 + importExisting.setText("Import Existing");
13.58 +
13.59 + final List fileList = new List(shell, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER);
13.60 + fileList.setToolTipText("Select the files you want to import into your project. Hold CTRL to select more than one");
13.61 +
13.62 + final Label nameLabelImport = new Label(shell, SWT.NONE);
13.63 + nameLabelImport.setText("Name: ");
13.64 +
13.65 + final Label typeLabelImport = new Label(shell, SWT.NONE);
13.66 + typeLabelImport.setText("Type: ");
13.67 +
13.68 + final Text nameTextImport = new Text(shell, SWT.BORDER);
13.69 + nameTextImport.setToolTipText("Enter the pattern for files to load, standard Symitar wildcards apply ('+')");
13.70 +
13.71 + final Combo typeComboImport = new Combo(shell, SWT.READ_ONLY);
13.72 +
13.73 + // Only letter/help/repgen available here
13.74 + typeComboImport.add("REPGEN");
13.75 + typeComboImport.add("HELP");
13.76 + typeComboImport.add("LETTER");
13.77 +
13.78 + typeComboImport.select(0);
13.79 +
13.80 + final Button search = new Button(shell, SWT.PUSH);
13.81 + search.setText("Search");
13.82 + search.addSelectionListener(new SelectionAdapter() {
13.83 +
13.84 + public void widgetSelected(SelectionEvent e) {
13.85 + fileList.removeAll();
13.86 + fileList.select(-1);
13.87 + SymitarSession session = RepDevMain.SYMITAR_SESSIONS.get(project.getSym());
13.88 +
13.89 + for (SymitarFile file : session.getFileList(FileType.valueOf(typeComboImport.getText()), nameTextImport.getText())) {
13.90 + fileList.add(file.getName());
13.91 + }
13.92 + }
13.93 +
13.94 + });
13.95 +
13.96 + final Button add = new Button(shell, SWT.PUSH);
13.97 + add.setText("Create &File");
13.98 + add.addSelectionListener(new SelectionAdapter() {
13.99 + public void widgetSelected(SelectionEvent e) {
13.100 + result = new ArrayList<SymitarFile>();
13.101 +
13.102 + if (createNew.getSelection()) {
13.103 + if (nameTextNew.getText().trim().equals("")) {
13.104 + MessageBox dialog = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
13.105 + dialog.setText("Input Error");
13.106 + dialog.setMessage("You must enter a valid name for your file.");
13.107 + dialog.open();
13.108 + return;
13.109 + }
13.110 +
13.111 + result.add(new SymitarFile(nameTextNew.getText().trim(), FileType.valueOf(typeComboNew.getText())));
13.112 + }
13.113 + if (importExisting.getSelection()) {
13.114 + for (String line : fileList.getSelection()) {
13.115 + result.add(new SymitarFile(line, FileType.valueOf(typeComboImport.getText())));
13.116 + }
13.117 + }
13.118 +
13.119 + shell.dispose();
13.120 + }
13.121 + });
13.122 +
13.123 + fileList.addSelectionListener(new SelectionAdapter() {
13.124 + public void widgetDefaultSelected(SelectionEvent e) {
13.125 + if (fileList.getSelectionCount() == 1) {
13.126 + add.notifyListeners(SWT.Selection, null);
13.127 + }
13.128 + }
13.129 + });
13.130 +
13.131 + final Button cancel = new Button(shell, SWT.PUSH);
13.132 + cancel.setText("&Cancel");
13.133 + cancel.addSelectionListener(new SelectionAdapter() {
13.134 + public void widgetSelected(SelectionEvent e) {
13.135 + result = null;
13.136 + shell.dispose();
13.137 + }
13.138 + });
13.139 +
13.140 + // These three listeners are down here so that everything is defined UI
13.141 + // wises
13.142 + createNew.addSelectionListener(new SelectionAdapter() {
13.143 + public void widgetSelected(SelectionEvent e) {
13.144 + for (Control control : shell.getChildren())
13.145 + control.setEnabled(false);
13.146 +
13.147 + nameLabelNew.setEnabled(true);
13.148 + nameTextNew.setEnabled(true);
13.149 + typeLabelNew.setEnabled(true);
13.150 + typeComboNew.setEnabled(true);
13.151 +
13.152 + createNew.setEnabled(true);
13.153 + importExisting.setEnabled(true);
13.154 + add.setEnabled(true);
13.155 + cancel.setEnabled(true);
13.156 +
13.157 + add.setText("Create File");
13.158 + shell.layout();
13.159 + add.pack();
13.160 + shell.setDefaultButton(add);
13.161 + }
13.162 + });
13.163 +
13.164 + importExisting.addSelectionListener(new SelectionAdapter() {
13.165 + public void widgetSelected(SelectionEvent e) {
13.166 + for (Control control : shell.getChildren())
13.167 + control.setEnabled(false);
13.168 +
13.169 + fileList.setEnabled(true);
13.170 + nameLabelImport.setEnabled(true);
13.171 + nameTextImport.setEnabled(true);
13.172 + typeLabelImport.setEnabled(true);
13.173 + typeComboImport.setEnabled(true);
13.174 + search.setEnabled(true);
13.175 +
13.176 + createNew.setEnabled(true);
13.177 + importExisting.setEnabled(true);
13.178 + add.setEnabled(true);
13.179 + cancel.setEnabled(true);
13.180 +
13.181 + add.setText("Import File(s)");
13.182 + shell.layout();
13.183 +
13.184 + shell.setDefaultButton(search);
13.185 + }
13.186 + });
13.187 +
13.188 + typeComboImport.addSelectionListener(new SelectionAdapter() {
13.189 + public void widgetSelected(SelectionEvent e) {
13.190 + fileList.removeAll();
13.191 + }
13.192 + });
13.193 +
13.194 + createNew.setSelection(true);
13.195 + importExisting.setSelection(false);
13.196 +
13.197 + createNew.notifyListeners(SWT.Selection, new Event());
13.198 +
13.199 + FormData data = new FormData();
13.200 +
13.201 + data.left = new FormAttachment(0);
13.202 + data.right = new FormAttachment(100);
13.203 + data.top = new FormAttachment(0);
13.204 + createNew.setLayoutData(data);
13.205 +
13.206 + data = new FormData();
13.207 + data.left = new FormAttachment(createNew, 5, SWT.LEFT);
13.208 + data.top = new FormAttachment(createNew);
13.209 + nameLabelNew.setLayoutData(data);
13.210 +
13.211 + data = new FormData();
13.212 + data.left = new FormAttachment(nameLabelNew);
13.213 + data.top = new FormAttachment(createNew);
13.214 + data.right = new FormAttachment(100);
13.215 + nameTextNew.setLayoutData(data);
13.216 +
13.217 + data = new FormData();
13.218 + data.left = new FormAttachment(nameLabelNew, 0, SWT.LEFT);
13.219 + data.top = new FormAttachment(nameTextNew);
13.220 + typeLabelNew.setLayoutData(data);
13.221 +
13.222 + data = new FormData();
13.223 + data.left = new FormAttachment(typeLabelNew);
13.224 + data.top = new FormAttachment(nameTextNew);
13.225 + data.right = new FormAttachment(100);
13.226 + typeComboNew.setLayoutData(data);
13.227 +
13.228 + data = new FormData();
13.229 + data.left = new FormAttachment(0);
13.230 + data.top = new FormAttachment(typeComboNew);
13.231 + data.right = new FormAttachment(100);
13.232 + importExisting.setLayoutData(data);
13.233 +
13.234 + data = new FormData();
13.235 + data.left = new FormAttachment(importExisting, 5, SWT.LEFT);
13.236 + data.top = new FormAttachment(importExisting);
13.237 + typeLabelImport.setLayoutData(data);
13.238 +
13.239 + data = new FormData();
13.240 + data.top = new FormAttachment(importExisting);
13.241 + data.left = new FormAttachment(typeLabelImport);
13.242 + data.right = new FormAttachment(100);
13.243 + typeComboImport.setLayoutData(data);
13.244 +
13.245 + data = new FormData();
13.246 + data.left = new FormAttachment(typeLabelImport, 0, SWT.LEFT);
13.247 + data.top = new FormAttachment(typeComboImport);
13.248 + data.bottom = new FormAttachment(search);
13.249 + data.right = new FormAttachment(100);
13.250 + fileList.setLayoutData(data);
13.251 +
13.252 + data = new FormData();
13.253 + data.left = new FormAttachment(fileList, 0, SWT.LEFT);
13.254 + data.bottom = new FormAttachment(cancel);
13.255 + nameLabelImport.setLayoutData(data);
13.256 +
13.257 + data = new FormData();
13.258 + data.left = new FormAttachment(nameLabelImport);
13.259 + data.bottom = new FormAttachment(cancel);
13.260 + data.right = new FormAttachment(search);
13.261 + nameTextImport.setLayoutData(data);
13.262 +
13.263 + data = new FormData();
13.264 + data.bottom = new FormAttachment(cancel);
13.265 + data.right = new FormAttachment(100);
13.266 + search.setLayoutData(data);
13.267 +
13.268 + data = new FormData();
13.269 + data.right = new FormAttachment(100);
13.270 + data.bottom = new FormAttachment(100);
13.271 + cancel.setLayoutData(data);
13.272 +
13.273 + data = new FormData();
13.274 + data.right = new FormAttachment(cancel);
13.275 + data.bottom = new FormAttachment(100);
13.276 + add.setLayoutData(data);
13.277 +
13.278 + result = null;
13.279 + shell.pack();
13.280 + shell.open();
13.281 + }
13.282 +
13.283 + // returns -1 on cancel
13.284 +
13.285 + public static ArrayList<SymitarFile> getNewFile(Display display, Shell parent, Project project, Mode mode) {
13.286 +
13.287 + me.create(parent, project, mode);
13.288 +
13.289 + while (!me.shell.isDisposed()) {
13.290 + if (!display.readAndDispatch())
13.291 + display.sleep();
13.292 + }
13.293 +
13.294 + return me.result;
13.295 + }
13.296 +}
14.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
14.2 +++ b/com/repdev/NewProjShell.java Fri Jun 01 18:46:53 2007 +0000
14.3 @@ -0,0 +1,99 @@
14.4 +package com.repdev;
14.5 +
14.6 +import org.eclipse.swt.*;
14.7 +import org.eclipse.swt.events.*;
14.8 +import org.eclipse.swt.layout.*;
14.9 +import org.eclipse.swt.widgets.*;
14.10 +
14.11 +public class NewProjShell {
14.12 + private static NewProjShell me = new NewProjShell();
14.13 + private Shell shell;
14.14 + private String result;
14.15 +
14.16 + private NewProjShell() {
14.17 + }
14.18 +
14.19 + private void create(Shell parent, int sym) {
14.20 + FormLayout layout = new FormLayout();
14.21 + layout.marginTop = 5;
14.22 + layout.marginBottom = 5;
14.23 + layout.marginLeft = 5;
14.24 + layout.marginRight = 5;
14.25 + layout.spacing = 5;
14.26 +
14.27 + shell = new Shell(parent, SWT.APPLICATION_MODAL | SWT.DIALOG_TRIM);
14.28 + shell.setText("Create new project");
14.29 + shell.setLayout(layout);
14.30 +
14.31 + Label questionImage = new Label(shell, SWT.NONE);
14.32 + questionImage.setImage(shell.getDisplay().getSystemImage(SWT.ICON_QUESTION));
14.33 +
14.34 + Label lbl = new Label(shell, SWT.NONE);
14.35 + lbl.setText("What is the name of the project that you want to create in Sym " + sym + "?");
14.36 +
14.37 + final Text txt = new Text(shell, SWT.BORDER);
14.38 +
14.39 + Button add = new Button(shell, SWT.PUSH);
14.40 + add.setText("Create &Project");
14.41 + add.addSelectionListener(new SelectionAdapter() {
14.42 + public void widgetSelected(SelectionEvent e) {
14.43 + result = txt.getText();
14.44 + shell.dispose();
14.45 + }
14.46 + });
14.47 + shell.setDefaultButton(add);
14.48 +
14.49 + Button cancel = new Button(shell, SWT.PUSH);
14.50 + cancel.setText("&Cancel");
14.51 + cancel.addSelectionListener(new SelectionAdapter() {
14.52 + public void widgetSelected(SelectionEvent e) {
14.53 + shell.dispose();
14.54 + }
14.55 + });
14.56 +
14.57 + FormData frmImg = new FormData();
14.58 + frmImg.left = new FormAttachment(0);
14.59 + frmImg.top = new FormAttachment(0);
14.60 + questionImage.setLayoutData(frmImg);
14.61 +
14.62 + FormData frmLbl = new FormData();
14.63 + frmLbl.top = new FormAttachment(0);
14.64 + frmLbl.left = new FormAttachment(questionImage);
14.65 + frmLbl.right = new FormAttachment(100);
14.66 + lbl.setLayoutData(frmLbl);
14.67 +
14.68 + FormData frmTxt = new FormData();
14.69 + frmTxt.top = new FormAttachment(lbl);
14.70 + frmTxt.left = new FormAttachment(lbl, 5, SWT.LEFT);
14.71 + frmTxt.right = new FormAttachment(100);
14.72 + txt.setLayoutData(frmTxt);
14.73 +
14.74 + FormData frmOK = new FormData();
14.75 + frmOK.top = new FormAttachment(txt);
14.76 + frmOK.right = new FormAttachment(cancel);
14.77 + frmOK.bottom = new FormAttachment(100);
14.78 + add.setLayoutData(frmOK);
14.79 +
14.80 + FormData frmCancel = new FormData();
14.81 + frmCancel.top = new FormAttachment(txt);
14.82 + frmCancel.right = new FormAttachment(100);
14.83 + frmCancel.bottom = new FormAttachment(100);
14.84 + cancel.setLayoutData(frmCancel);
14.85 +
14.86 + result = null;
14.87 + shell.pack();
14.88 + shell.open();
14.89 + }
14.90 +
14.91 + // returns -1 on cancel
14.92 + public static String askForName(Display display, Shell parent, int sym) {
14.93 + me.create(parent, sym);
14.94 +
14.95 + while (!me.shell.isDisposed()) {
14.96 + if (!display.readAndDispatch())
14.97 + display.sleep();
14.98 + }
14.99 +
14.100 + return me.result;
14.101 + }
14.102 +}
15.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
15.2 +++ b/com/repdev/OptionsShell.java Fri Jun 01 18:46:53 2007 +0000
15.3 @@ -0,0 +1,200 @@
15.4 +package com.repdev;
15.5 +
15.6 +import org.eclipse.swt.*;
15.7 +import org.eclipse.swt.events.*;
15.8 +import org.eclipse.swt.layout.FormAttachment;
15.9 +import org.eclipse.swt.layout.FormData;
15.10 +import org.eclipse.swt.layout.FormLayout;
15.11 +import org.eclipse.swt.widgets.*;
15.12 +
15.13 +public class OptionsShell {
15.14 + Shell shell;
15.15 + private static OptionsShell me = new OptionsShell();
15.16 + private Button telnetRadio, testRadio;
15.17 + private Text serverText, tabText;
15.18 + private Label serverLabel;
15.19 +
15.20 + private void create(Shell parent) {
15.21 + FormLayout layout = new FormLayout();
15.22 + layout.marginTop = 5;
15.23 + layout.marginBottom = 5;
15.24 + layout.marginLeft = 5;
15.25 + layout.marginRight = 5;
15.26 + layout.spacing = 5;
15.27 +
15.28 + FormData data = new FormData();
15.29 +
15.30 + shell = new Shell(parent, SWT.APPLICATION_MODAL | SWT.CLOSE | SWT.TITLE | SWT.RESIZE);
15.31 + shell.setText("Global Options");
15.32 + shell.setLayout(layout);
15.33 +
15.34 + Group serverGroup = new Group(shell, SWT.NONE);
15.35 + serverGroup.setText("Symitar Connection Options");
15.36 + layout = new FormLayout();
15.37 + layout.marginTop = 5;
15.38 + layout.marginBottom = 5;
15.39 + layout.marginLeft = 5;
15.40 + layout.marginRight = 5;
15.41 + layout.spacing = 5;
15.42 + serverGroup.setLayout(layout);
15.43 +
15.44 + telnetRadio = new Button(serverGroup, SWT.RADIO);
15.45 + telnetRadio.setText("Direct Symitar Session");
15.46 + telnetRadio.addSelectionListener(new SelectionAdapter() {
15.47 + public void widgetSelected(SelectionEvent e) {
15.48 + redraw();
15.49 + }
15.50 + });
15.51 +
15.52 + testRadio = new Button(serverGroup, SWT.RADIO);
15.53 + testRadio.setText("Local Symitar Emulation");
15.54 + testRadio.addSelectionListener(new SelectionAdapter() {
15.55 + public void widgetSelected(SelectionEvent e) {
15.56 + redraw();
15.57 + }
15.58 + });
15.59 +
15.60 + if (Config.getServer().equals("test")) {
15.61 + testRadio.setSelection(true);
15.62 + } else
15.63 + telnetRadio.setSelection(true);
15.64 +
15.65 + serverLabel = new Label(serverGroup, SWT.NONE);
15.66 + serverLabel.setText("Symitar Server IP Address:");
15.67 +
15.68 + serverText = new Text(serverGroup, SWT.SINGLE | SWT.BORDER);
15.69 + serverText.setText(Config.getServer());
15.70 +
15.71 + Button cancel = new Button(shell, SWT.PUSH);
15.72 + cancel.setText("Cancel");
15.73 + cancel.addSelectionListener(new SelectionAdapter() {
15.74 + public void widgetSelected(SelectionEvent e) {
15.75 + shell.close();
15.76 + }
15.77 + });
15.78 +
15.79 + Button ok = new Button(shell, SWT.PUSH);
15.80 + ok.setText("Save Settings");
15.81 + ok.addSelectionListener(new SelectionAdapter() {
15.82 + public void widgetSelected(SelectionEvent e) {
15.83 + try {
15.84 + Config.setTabSize(Integer.valueOf(tabText.getText()));
15.85 + } catch (Exception ex) {
15.86 + MessageBox dialog = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
15.87 + dialog.setText("Input Error");
15.88 + dialog.setMessage("Tab Size is incorrect!");
15.89 + dialog.open();
15.90 +
15.91 + return;
15.92 + }
15.93 +
15.94 + if (testRadio.getSelection())
15.95 + Config.setServer("test");
15.96 + else
15.97 + Config.setServer(serverText.getText());
15.98 +
15.99 + shell.close();
15.100 + }
15.101 + });
15.102 +
15.103 + Group editorGroup = new Group(shell, SWT.NONE);
15.104 + editorGroup.setText("Editor Options");
15.105 + layout = new FormLayout();
15.106 + layout.marginTop = 5;
15.107 + layout.marginBottom = 5;
15.108 + layout.marginLeft = 5;
15.109 + layout.marginRight = 5;
15.110 + layout.spacing = 5;
15.111 + editorGroup.setLayout(layout);
15.112 +
15.113 + Label tabLabel = new Label(editorGroup, SWT.NONE);
15.114 + tabLabel.setText("Tab Width (0 for Regular Tabs):");
15.115 +
15.116 + tabText = new Text(editorGroup, SWT.BORDER);
15.117 + tabText.setText(String.valueOf(Config.getTabSize()));
15.118 +
15.119 + data = new FormData();
15.120 + data.left = new FormAttachment(0);
15.121 + data.right = new FormAttachment(100);
15.122 + data.top = new FormAttachment(0);
15.123 + data.bottom = new FormAttachment(editorGroup);
15.124 + serverGroup.setLayoutData(data);
15.125 +
15.126 + data = new FormData();
15.127 + data.left = new FormAttachment(0);
15.128 + data.right = new FormAttachment(100);
15.129 + data.top = new FormAttachment(serverGroup);
15.130 + data.bottom = new FormAttachment(cancel);
15.131 + editorGroup.setLayoutData(data);
15.132 +
15.133 + data = new FormData();
15.134 + data.left = new FormAttachment(0);
15.135 + data.top = new FormAttachment(0);
15.136 + telnetRadio.setLayoutData(data);
15.137 +
15.138 + data = new FormData();
15.139 + data.left = new FormAttachment(telnetRadio);
15.140 + data.top = new FormAttachment(0);
15.141 + testRadio.setLayoutData(data);
15.142 +
15.143 + data = new FormData();
15.144 + data.left = new FormAttachment(0);
15.145 + data.top = new FormAttachment(telnetRadio);
15.146 + serverLabel.setLayoutData(data);
15.147 +
15.148 + data = new FormData();
15.149 + data.left = new FormAttachment(serverLabel);
15.150 + data.top = new FormAttachment(telnetRadio);
15.151 + data.right = new FormAttachment(100);
15.152 + serverText.setLayoutData(data);
15.153 +
15.154 + data = new FormData();
15.155 + data.left = new FormAttachment(0);
15.156 + data.top = new FormAttachment(0);
15.157 + tabLabel.setLayoutData(data);
15.158 +
15.159 + data = new FormData();
15.160 + data.left = new FormAttachment(tabLabel);
15.161 + data.right = new FormAttachment(100);
15.162 + data.top = new FormAttachment(0);
15.163 + tabText.setLayoutData(data);
15.164 +
15.165 + data = new FormData();
15.166 + data.right = new FormAttachment(100);
15.167 + data.bottom = new FormAttachment(100);
15.168 + cancel.setLayoutData(data);
15.169 +
15.170 + data = new FormData();
15.171 + data.bottom = new FormAttachment(100);
15.172 + data.right = new FormAttachment(cancel);
15.173 + ok.setLayoutData(data);
15.174 +
15.175 + redraw();
15.176 +
15.177 + shell.setDefaultButton(ok);
15.178 + shell.pack();
15.179 + shell.open();
15.180 + }
15.181 +
15.182 + private void redraw() {
15.183 + if (telnetRadio.getSelection()) {
15.184 + serverText.setEnabled(true);
15.185 + serverLabel.setEnabled(true);
15.186 + } else if (testRadio.getSelection()) {
15.187 + serverText.setEnabled(false);
15.188 + serverLabel.setEnabled(false);
15.189 + serverText.setText("");
15.190 + }
15.191 +
15.192 + }
15.193 +
15.194 + public static void showOptions(Display display, Shell parent) {
15.195 + me.create(parent);
15.196 +
15.197 + while (!me.shell.isDisposed()) {
15.198 + if (!display.readAndDispatch())
15.199 + display.sleep();
15.200 + }
15.201 +
15.202 + }
15.203 +}
16.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
16.2 +++ b/com/repdev/Project.java Fri Jun 01 18:46:53 2007 +0000
16.3 @@ -0,0 +1,59 @@
16.4 +package com.repdev;
16.5 +
16.6 +import java.util.ArrayList;
16.7 +
16.8 +public class Project {
16.9 +
16.10 + private ArrayList<SymitarFile> files = new ArrayList<SymitarFile>();
16.11 + private String name;
16.12 + private int sym;
16.13 +
16.14 + public Project(String name, int sym) {
16.15 + this.name = name;
16.16 + this.sym = sym;
16.17 + }
16.18 +
16.19 + public int getSym() {
16.20 + return sym;
16.21 + }
16.22 +
16.23 + public String getName() {
16.24 + return name;
16.25 + }
16.26 +
16.27 + public void setName(String name) {
16.28 + this.name = name;
16.29 + }
16.30 +
16.31 + public ArrayList<SymitarFile> getFiles() {
16.32 + return files;
16.33 + }
16.34 +
16.35 + public boolean hasFile(SymitarFile file) {
16.36 + for (SymitarFile cFile : files)
16.37 + if (cFile.getName().equals(file.getName()) && cFile.getType().equals(file.getType()))
16.38 + return true;
16.39 +
16.40 + return false;
16.41 + }
16.42 +
16.43 + public void addFile(SymitarFile file) {
16.44 + if (!hasFile(file))
16.45 + files.add(file);
16.46 + }
16.47 +
16.48 + public void removeFile(SymitarFile file, boolean delete) {
16.49 + if (!hasFile(file))
16.50 + return;
16.51 +
16.52 + files.remove(file);
16.53 +
16.54 + if (delete)
16.55 + RepDevMain.SYMITAR_SESSIONS.get(sym).removeFile(file);
16.56 + }
16.57 +
16.58 + public String toString() {
16.59 + return name;
16.60 + }
16.61 +
16.62 +}
17.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
17.2 +++ b/com/repdev/ProjectManager.java Fri Jun 01 18:46:53 2007 +0000
17.3 @@ -0,0 +1,124 @@
17.4 +package com.repdev;
17.5 +
17.6 +import java.util.ArrayList;
17.7 +import java.util.*;
17.8 +
17.9 +public class ProjectManager {
17.10 + private static HashMap<Integer, ArrayList<Project>> symProjects = new HashMap<Integer, ArrayList<Project>>();
17.11 +
17.12 + public static void saveAllProjects() {
17.13 + for (Integer sym : symProjects.keySet())
17.14 + saveProjects(sym);
17.15 + }
17.16 +
17.17 + public static void removeProject(Project project, boolean delete) {
17.18 + int sym = project.getSym();
17.19 + ArrayList<Project> projects = getProjects(sym);
17.20 + int i = 0;
17.21 +
17.22 + for (Project cur : projects) {
17.23 + if (cur.getName().equals(project.getName()))
17.24 + break;
17.25 +
17.26 + i++;
17.27 + }
17.28 +
17.29 + projects.remove(i);
17.30 +
17.31 + if (delete)
17.32 + for (SymitarFile file : project.getFiles())
17.33 + RepDevMain.SYMITAR_SESSIONS.get(sym).removeFile(file);
17.34 +
17.35 + }
17.36 +
17.37 + public static void saveProjects(int sym) {
17.38 + StringBuilder sb = new StringBuilder();
17.39 + ArrayList<Project> myProjects = symProjects.get(sym);
17.40 +
17.41 + if (myProjects == null)
17.42 + return;
17.43 +
17.44 + for (Project proj : myProjects) {
17.45 + sb.append("PROJECT");
17.46 + sb.append("\t");
17.47 + sb.append(proj.getName());
17.48 + sb.append("\r\n");
17.49 +
17.50 + for (SymitarFile file : proj.getFiles()) {
17.51 + sb.append("FILE");
17.52 + sb.append("\t");
17.53 + sb.append(file.getType());
17.54 + sb.append("\t");
17.55 + sb.append(file.getName());
17.56 + sb.append("\r\n");
17.57 + }
17.58 +
17.59 + sb.append("\r\n");
17.60 + }
17.61 +
17.62 + RepDevMain.SYMITAR_SESSIONS.get(sym).saveFile(getProjectFile(sym), sb.toString());
17.63 + }
17.64 +
17.65 + public static Project createProject(String name, int sym) {
17.66 + Project project = new Project(name, sym);
17.67 + getProjects(sym).add(project);
17.68 +
17.69 + return project;
17.70 + }
17.71 +
17.72 + /**
17.73 + * Creates a file name from an open symitar session based on user id
17.74 + *
17.75 + * @param session
17.76 + * @return
17.77 + */
17.78 + private static SymitarFile getProjectFile(int sym) {
17.79 + SymitarSession session = RepDevMain.SYMITAR_SESSIONS.get(sym);
17.80 + String prefix = "tester";
17.81 +
17.82 + if (session.getUserID() == null || session.getUserID().length() >= 3)
17.83 + prefix = session.userID.substring(0, 3);
17.84 +
17.85 + return new SymitarFile("repdev." + prefix + "projects", FileType.REPGEN);
17.86 + }
17.87 +
17.88 + private static void loadProjects(int sym) {
17.89 + ArrayList<Project> myProjs = new ArrayList<Project>();
17.90 + String dataTemp = RepDevMain.SYMITAR_SESSIONS.get(sym).getFile(getProjectFile(sym));
17.91 + Project curProject = null;
17.92 +
17.93 + if (dataTemp == null) {
17.94 + symProjects.put(sym, myProjs);
17.95 + return;
17.96 + }
17.97 +
17.98 + String[] data = dataTemp.trim().split("\n");
17.99 +
17.100 + for (String line : data) {
17.101 + String[] parts = line.split("\t");
17.102 +
17.103 + if (parts[0].equals("PROJECT")) {
17.104 + if (curProject != null)
17.105 + myProjs.add(curProject);
17.106 +
17.107 + curProject = new Project(parts[1], sym);
17.108 + } else if (parts[0].equals("FILE")) {
17.109 + curProject.addFile(new SymitarFile(parts[2].trim(), FileType.valueOf(parts[1])));
17.110 + }
17.111 + }
17.112 +
17.113 + if (curProject != null)
17.114 + myProjs.add(curProject);
17.115 +
17.116 + symProjects.put(sym, myProjs);
17.117 + }
17.118 +
17.119 + public static ArrayList<Project> getProjects(int sym) {
17.120 + if (symProjects.get(sym) == null) {
17.121 + loadProjects(sym);
17.122 + }
17.123 +
17.124 + return symProjects.get(sym);
17.125 + }
17.126 +
17.127 +}
18.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
18.2 +++ b/com/repdev/QueueInfo.java Fri Jun 01 18:46:53 2007 +0000
18.3 @@ -0,0 +1,25 @@
18.4 +package com.repdev;
18.5 +
18.6 +import java.util.ArrayList;
18.7 +
18.8 +public class QueueInfo {
18.9 + private int num;
18.10 + private ArrayList<String> queue;
18.11 +
18.12 + public int getNum() {
18.13 + return num;
18.14 + }
18.15 +
18.16 + public void setNum(int num) {
18.17 + this.num = num;
18.18 + }
18.19 +
18.20 + public ArrayList<String> getQueue() {
18.21 + return queue;
18.22 + }
18.23 +
18.24 + public void setQueue(ArrayList<String> queue) {
18.25 + this.queue = queue;
18.26 + }
18.27 +
18.28 +}
19.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
19.2 +++ b/com/repdev/RemFileShell.java Fri Jun 01 18:46:53 2007 +0000
19.3 @@ -0,0 +1,118 @@
19.4 +package com.repdev;
19.5 +
19.6 +import org.eclipse.swt.*;
19.7 +import org.eclipse.swt.events.*;
19.8 +import org.eclipse.swt.layout.*;
19.9 +import org.eclipse.swt.widgets.*;
19.10 +
19.11 +public class RemFileShell {
19.12 + private static RemFileShell me = new RemFileShell();
19.13 + private Shell shell;
19.14 + private Result result = Result.CANCEL;
19.15 +
19.16 + private RemFileShell() {
19.17 + }
19.18 +
19.19 + public enum Result {
19.20 + OK_DELETE, OK_KEEP, CANCEL
19.21 + };
19.22 +
19.23 + private void create(Shell parent, Project proj, SymitarFile file) {
19.24 + FormLayout layout = new FormLayout();
19.25 + layout.marginTop = 5;
19.26 + layout.marginBottom = 5;
19.27 + layout.marginLeft = 5;
19.28 + layout.marginRight = 5;
19.29 + layout.spacing = 5;
19.30 +
19.31 + shell = new Shell(parent, SWT.APPLICATION_MODAL | SWT.DIALOG_TRIM);
19.32 + shell.setText("Remove File");
19.33 + shell.setLayout(layout);
19.34 +
19.35 + Label questionImage = new Label(shell, SWT.NONE);
19.36 + questionImage.setImage(shell.getDisplay().getSystemImage(SWT.ICON_QUESTION));
19.37 +
19.38 + Label lbl = new Label(shell, SWT.NONE);
19.39 + lbl.setText("Are you sure you want to remove file '" + file.getName() + "' from project '" + proj.getName() + "'?");
19.40 +
19.41 + final Button radioDelete = new Button(shell, SWT.RADIO);
19.42 + radioDelete.setText("Also delete file from server");
19.43 +
19.44 + final Button radioKeep = new Button(shell, SWT.RADIO);
19.45 + radioKeep.setText("Do not delete file");
19.46 + radioKeep.setSelection(true);
19.47 +
19.48 + Button add = new Button(shell, SWT.PUSH);
19.49 + add.setText("Remove &File from Project");
19.50 + add.addSelectionListener(new SelectionAdapter() {
19.51 + public void widgetSelected(SelectionEvent e) {
19.52 + if (radioKeep.getSelection())
19.53 + result = Result.OK_KEEP;
19.54 + else if (radioDelete.getSelection())
19.55 + result = Result.OK_DELETE;
19.56 +
19.57 + shell.dispose();
19.58 + }
19.59 + });
19.60 +
19.61 + Button cancel = new Button(shell, SWT.PUSH);
19.62 + cancel.setText("&Cancel");
19.63 + cancel.addSelectionListener(new SelectionAdapter() {
19.64 + public void widgetSelected(SelectionEvent e) {
19.65 + result = Result.CANCEL;
19.66 + shell.dispose();
19.67 + }
19.68 + });
19.69 +
19.70 + FormData frmImg = new FormData();
19.71 + frmImg.left = new FormAttachment(0);
19.72 + frmImg.top = new FormAttachment(0);
19.73 + questionImage.setLayoutData(frmImg);
19.74 +
19.75 + FormData frmLbl = new FormData();
19.76 + frmLbl.top = new FormAttachment(0, 10);
19.77 + frmLbl.left = new FormAttachment(questionImage);
19.78 + frmLbl.right = new FormAttachment(100);
19.79 + lbl.setLayoutData(frmLbl);
19.80 +
19.81 + FormData frmRadioK = new FormData();
19.82 + frmRadioK.left = new FormAttachment(0);
19.83 + frmRadioK.right = new FormAttachment(100);
19.84 + frmRadioK.top = new FormAttachment(radioDelete);
19.85 + radioKeep.setLayoutData(frmRadioK);
19.86 +
19.87 + FormData frmRadioD = new FormData();
19.88 + frmRadioD.left = new FormAttachment(0);
19.89 + frmRadioD.right = new FormAttachment(100);
19.90 + frmRadioD.top = new FormAttachment(questionImage, 15);
19.91 + radioDelete.setLayoutData(frmRadioD);
19.92 +
19.93 + FormData frmOK = new FormData();
19.94 + frmOK.top = new FormAttachment(radioKeep);
19.95 + frmOK.right = new FormAttachment(cancel);
19.96 + frmOK.bottom = new FormAttachment(100);
19.97 + add.setLayoutData(frmOK);
19.98 +
19.99 + FormData frmCancel = new FormData();
19.100 + frmCancel.top = new FormAttachment(radioKeep);
19.101 + frmCancel.right = new FormAttachment(100);
19.102 + frmCancel.bottom = new FormAttachment(100);
19.103 + cancel.setLayoutData(frmCancel);
19.104 +
19.105 + result = null;
19.106 + shell.pack();
19.107 + shell.open();
19.108 + }
19.109 +
19.110 + // returns -1 on cancel
19.111 + public static Result confirm(Display display, Shell parent, Project proj, SymitarFile file) {
19.112 + me.create(parent, proj, file);
19.113 +
19.114 + while (!me.shell.isDisposed()) {
19.115 + if (!display.readAndDispatch())
19.116 + display.sleep();
19.117 + }
19.118 +
19.119 + return me.result;
19.120 + }
19.121 +}
20.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
20.2 +++ b/com/repdev/RemProjShell.java Fri Jun 01 18:46:53 2007 +0000
20.3 @@ -0,0 +1,118 @@
20.4 +package com.repdev;
20.5 +
20.6 +import org.eclipse.swt.*;
20.7 +import org.eclipse.swt.events.*;
20.8 +import org.eclipse.swt.layout.*;
20.9 +import org.eclipse.swt.widgets.*;
20.10 +
20.11 +public class RemProjShell {
20.12 + private static RemProjShell me = new RemProjShell();
20.13 + private Shell shell;
20.14 + private Result result = Result.CANCEL;
20.15 +
20.16 + private RemProjShell() {
20.17 + }
20.18 +
20.19 + public enum Result {
20.20 + OK_DELETE, OK_KEEP, CANCEL
20.21 + };
20.22 +
20.23 + private void create(Shell parent, int sym, Project project) {
20.24 + FormLayout layout = new FormLayout();
20.25 + layout.marginTop = 5;
20.26 + layout.marginBottom = 5;
20.27 + layout.marginLeft = 5;
20.28 + layout.marginRight = 5;
20.29 + layout.spacing = 5;
20.30 +
20.31 + shell = new Shell(parent, SWT.APPLICATION_MODAL | SWT.DIALOG_TRIM);
20.32 + shell.setText("Remove Project");
20.33 + shell.setLayout(layout);
20.34 +
20.35 + Label questionImage = new Label(shell, SWT.NONE);
20.36 + questionImage.setImage(shell.getDisplay().getSystemImage(SWT.ICON_QUESTION));
20.37 +
20.38 + Label lbl = new Label(shell, SWT.NONE);
20.39 + lbl.setText("Are you sure you want to delete project '" + project.getName() + "' from Sym " + sym + "?");
20.40 +
20.41 + final Button radioDelete = new Button(shell, SWT.RADIO);
20.42 + radioDelete.setText("Also delete the files in the project from the server");
20.43 +
20.44 + final Button radioKeep = new Button(shell, SWT.RADIO);
20.45 + radioKeep.setText("Do not delete the files");
20.46 + radioKeep.setSelection(true);
20.47 +
20.48 + Button add = new Button(shell, SWT.PUSH);
20.49 + add.setText("Delete &Project");
20.50 + add.addSelectionListener(new SelectionAdapter() {
20.51 + public void widgetSelected(SelectionEvent e) {
20.52 + if (radioKeep.getSelection())
20.53 + result = Result.OK_KEEP;
20.54 + else if (radioDelete.getSelection())
20.55 + result = Result.OK_DELETE;
20.56 +
20.57 + shell.dispose();
20.58 + }
20.59 + });
20.60 +
20.61 + Button cancel = new Button(shell, SWT.PUSH);
20.62 + cancel.setText("&Cancel");
20.63 + cancel.addSelectionListener(new SelectionAdapter() {
20.64 + public void widgetSelected(SelectionEvent e) {
20.65 + result = Result.CANCEL;
20.66 + shell.dispose();
20.67 + }
20.68 + });
20.69 +
20.70 + FormData frmImg = new FormData();
20.71 + frmImg.left = new FormAttachment(0);
20.72 + frmImg.top = new FormAttachment(0, 10);
20.73 + questionImage.setLayoutData(frmImg);
20.74 +
20.75 + FormData frmLbl = new FormData();
20.76 + frmLbl.top = new FormAttachment(0, 10);
20.77 + frmLbl.left = new FormAttachment(questionImage);
20.78 + frmLbl.right = new FormAttachment(100);
20.79 + lbl.setLayoutData(frmLbl);
20.80 +
20.81 + FormData frmRadioK = new FormData();
20.82 + frmRadioK.left = new FormAttachment(0);
20.83 + frmRadioK.right = new FormAttachment(100);
20.84 + frmRadioK.top = new FormAttachment(radioDelete);
20.85 + radioKeep.setLayoutData(frmRadioK);
20.86 +
20.87 + FormData frmRadioD = new FormData();
20.88 + frmRadioD.left = new FormAttachment(0);
20.89 + frmRadioD.right = new FormAttachment(100);
20.90 + frmRadioD.top = new FormAttachment(questionImage, 15);
20.91 + radioDelete.setLayoutData(frmRadioD);
20.92 +
20.93 + FormData frmOK = new FormData();
20.94 + frmOK.top = new FormAttachment(radioKeep);
20.95 + frmOK.right = new FormAttachment(cancel);
20.96 + frmOK.bottom = new FormAttachment(100);
20.97 + add.setLayoutData(frmOK);
20.98 +
20.99 + FormData frmCancel = new FormData();
20.100 + frmCancel.top = new FormAttachment(radioKeep);
20.101 + frmCancel.right = new FormAttachment(100);
20.102 + frmCancel.bottom = new FormAttachment(100);
20.103 + cancel.setLayoutData(frmCancel);
20.104 +
20.105 + result = null;
20.106 + shell.pack();
20.107 + shell.open();
20.108 + }
20.109 +
20.110 + // returns -1 on cancel
20.111 + public static Result confirm(Display display, Shell parent, Project project) {
20.112 + me.create(parent, project.getSym(), project);
20.113 +
20.114 + while (!me.shell.isDisposed()) {
20.115 + if (!display.readAndDispatch())
20.116 + display.sleep();
20.117 + }
20.118 +
20.119 + return me.result;
20.120 + }
20.121 +}
21.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
21.2 +++ b/com/repdev/RepDevMain.java Fri Jun 01 18:46:53 2007 +0000
21.3 @@ -0,0 +1,149 @@
21.4 +package com.repdev;
21.5 +
21.6 +import java.io.*;
21.7 +import java.util.ArrayList;
21.8 +import java.util.HashMap;
21.9 +
21.10 +import org.eclipse.swt.graphics.Image;
21.11 +import org.eclipse.swt.widgets.*;
21.12 +
21.13 +public class RepDevMain {
21.14 + public static final HashMap<Integer, SymitarSession> SYMITAR_SESSIONS = new HashMap<Integer, SymitarSession>();
21.15 + public static final String VERSION = "v .01";
21.16 + public static final String NAMESTR = "RepDev - " + VERSION;
21.17 + public static MainShell mainShell;
21.18 + private static Display display;
21.19 + public static Image largeActionSaveImage, largeAddImage, largeFileAddImage, largeFileRemoveImage, largePrintLocalImage, largePrintLPTImage, largePrintTPTImage, largeProjectAddImage, largeProjectRemoveImage, largeRemoveImage, largeRunImage,
21.20 + largeSymAddImage, largeSymRemoveImage, smallAddImage, smallErrorsImage, smallFileImage, smallProjectImage, smallRemoveImage, smallRepGenImage, smallSymImage, smallTasksImage, smallActionSaveImage, smallFileAddImage, smallFileRemoveImage,
21.21 + smallProjectAddImage, smallProjectRemoveImage, smallRunImage, smallSymAddImage, smallSymRemoveImage, smallDBFieldImage, smallDBRecordImage, smallVariableImage, smallImportImage, smallFileNewImage, smallFileOpenImage, smallDeleteImage,
21.22 + smallOptionsImage, smallIndentLessImage, smallIndentMoreImage, smallCutImage, smallCopyImage, smallPasteImage, smallSelectAllImage, smallRedoImage, smallUndoImage, smallFindImage, smallFindReplaceImage, smallExitImage, smallRunFMImage;
21.23 + public static final String IMAGE_DIR = "repdev-icons/";
21.24 +
21.25 + public static void main(String[] args) {
21.26 + display = new Display();
21.27 +
21.28 + loadSettings();
21.29 + createImages();
21.30 + createGUI();
21.31 +
21.32 + while (!mainShell.isDisposed()) {
21.33 + if (!display.readAndDispatch())
21.34 + display.sleep();
21.35 + }
21.36 +
21.37 + // Save off projects
21.38 + ProjectManager.saveAllProjects();
21.39 + saveSettings();
21.40 + display.dispose();
21.41 + }
21.42 +
21.43 + private static void createImages() {
21.44 + largeActionSaveImage = new Image(display, IMAGE_DIR + "large-action-save.png");
21.45 + largeAddImage = new Image(display, IMAGE_DIR + "large-add.png");
21.46 + largeFileAddImage = new Image(display, IMAGE_DIR + "large-file-add.png");
21.47 + largeFileRemoveImage = new Image(display, IMAGE_DIR + "large-file-remove.png");
21.48 + largePrintLocalImage = new Image(display, IMAGE_DIR + "large-print-local.png");
21.49 + largePrintLPTImage = new Image(display, IMAGE_DIR + "large-print-lpt.png");
21.50 + largePrintTPTImage = new Image(display, IMAGE_DIR + "large-print-tpt.png");
21.51 + largeProjectAddImage = new Image(display, IMAGE_DIR + "large-project-add.png");
21.52 + largeProjectRemoveImage = new Image(display, IMAGE_DIR + "large-project-remove.png");
21.53 + largeRemoveImage = new Image(display, IMAGE_DIR + "large-remove.png");
21.54 + largeRunImage = new Image(display, IMAGE_DIR + "large-run.png");
21.55 + largeSymAddImage = new Image(display, IMAGE_DIR + "large-sym-add.png");
21.56 + largeSymRemoveImage = new Image(display, IMAGE_DIR + "large-sym-remove.png");
21.57 +
21.58 + smallActionSaveImage = new Image(display, IMAGE_DIR + "small-action-save.png");
21.59 + smallAddImage = new Image(display, IMAGE_DIR + "small-add.png");
21.60 + smallErrorsImage = new Image(display, IMAGE_DIR + "small-errors.png");
21.61 + smallFileAddImage = new Image(display, IMAGE_DIR + "small-file-add.png");
21.62 + smallFileRemoveImage = new Image(display, IMAGE_DIR + "small-file-remove.png");
21.63 + smallFileImage = new Image(display, IMAGE_DIR + "small-file.png");
21.64 + smallErrorsImage = new Image(display, IMAGE_DIR + "small-errors.png");
21.65 + smallProjectAddImage = new Image(display, IMAGE_DIR + "small-project-add.png");
21.66 + smallProjectRemoveImage = new Image(display, IMAGE_DIR + "small-project-remove.png");
21.67 + smallProjectImage = new Image(display, IMAGE_DIR + "small-project.png");
21.68 + smallRemoveImage = new Image(display, IMAGE_DIR + "small-remove.png");
21.69 + smallRepGenImage = new Image(display, IMAGE_DIR + "small-repgen.png");
21.70 + smallRunImage = new Image(display, IMAGE_DIR + "small-run.png");
21.71 + smallSymImage = new Image(display, IMAGE_DIR + "small-sym.png");
21.72 + smallTasksImage = new Image(display, IMAGE_DIR + "small-tasks.png");
21.73 + smallSymAddImage = new Image(display, IMAGE_DIR + "small-sym-add.png");
21.74 + smallSymRemoveImage = new Image(display, IMAGE_DIR + "small-sym-remove.png");
21.75 + smallDBRecordImage = new Image(display, IMAGE_DIR + "small-db-record.png");
21.76 + smallDBFieldImage = new Image(display, IMAGE_DIR + "small-db-field.png");
21.77 + smallVariableImage = new Image(display, IMAGE_DIR + "small-variable.png");
21.78 + smallImportImage = new Image(display, IMAGE_DIR + "small-import.png");
21.79 + smallFileNewImage = new Image(display, IMAGE_DIR + "small-file-new.png");
21.80 + smallFileOpenImage = new Image(display, IMAGE_DIR + "small-file-open.png");
21.81 + smallDeleteImage = new Image(display, IMAGE_DIR + "small-delete.png");
21.82 + smallOptionsImage = new Image(display, IMAGE_DIR + "small-options.png");
21.83 + smallIndentLessImage = new Image(display, IMAGE_DIR + "small-indent-less.png");
21.84 + smallIndentMoreImage = new Image(display, IMAGE_DIR + "small-indent-more.png");
21.85 + smallCutImage = new Image(display, IMAGE_DIR + "small-cut.png");
21.86 + smallCopyImage = new Image(display, IMAGE_DIR + "small-copy.png");
21.87 + smallPasteImage = new Image(display, IMAGE_DIR + "small-paste.png");
21.88 + smallRedoImage = new Image(display, IMAGE_DIR + "small-redo.png");
21.89 + smallUndoImage = new Image(display, IMAGE_DIR + "small-undo.png");
21.90 + smallSelectAllImage = new Image(display, IMAGE_DIR + "small-select-all.png");
21.91 + smallFindImage = new Image(display, IMAGE_DIR + "small-find.png");
21.92 + smallFindReplaceImage = new Image(display, IMAGE_DIR + "small-find-replace.png");
21.93 + smallExitImage = new Image(display, IMAGE_DIR + "small-exit.png");
21.94 + smallRunFMImage = new Image(display, IMAGE_DIR + "small-run-fm.png");
21.95 + }
21.96 +
21.97 + /**
21.98 + * Loads Config object and settings from a serialized file Also connects to
21.99 + * all syms in the config file
21.100 + *
21.101 + */
21.102 + public static void loadSettings() {
21.103 + try {
21.104 + ObjectInputStream in = new ObjectInputStream(new FileInputStream(System.getProperty("user.home") + System.getProperty("file.separator") + "repdev.conf"));
21.105 + Config configObject = (Config) in.readObject();
21.106 + Config.setConfig(configObject);
21.107 +
21.108 + } catch (ClassCastException e) {
21.109 + System.out.println("FILE OUT OF DATE!");
21.110 + } catch (IOException e) {
21.111 + System.out.println("Could not load data file.");
21.112 + } catch (ClassNotFoundException e) {
21.113 + e.printStackTrace();
21.114 + }
21.115 + SymitarSession session;
21.116 +
21.117 + // Start up data
21.118 + for (int sym : Config.getSyms()) {
21.119 + if (Config.getServer().equals("test"))
21.120 + session = new TestingSymitarSession();
21.121 + else
21.122 + session = new DirectSymitarSession();
21.123 +
21.124 + SYMITAR_SESSIONS.put(sym, session);
21.125 + }
21.126 + }
21.127 +
21.128 + public static void saveSettings() {
21.129 + try {
21.130 + // Write the current syms to the Config file
21.131 + ArrayList<Integer> newSyms = new ArrayList<Integer>();
21.132 +
21.133 + for (int sym : SYMITAR_SESSIONS.keySet()) {
21.134 + newSyms.add(sym);
21.135 + }
21.136 +
21.137 + Config.setSyms(newSyms);
21.138 +
21.139 + ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(System.getProperty("user.home") + System.getProperty("file.separator") + "repdev.conf"));
21.140 + out.writeObject(Config.getConfig());
21.141 + } catch (Exception e) {
21.142 + System.err.println("Error saving Config data");
21.143 + e.printStackTrace();
21.144 + }
21.145 + }
21.146 +
21.147 + private static void createGUI() {
21.148 + mainShell = new MainShell(display);
21.149 + mainShell.open();
21.150 + }
21.151 +
21.152 +}
22.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
22.2 +++ b/com/repdev/RepgenParser.java Fri Jun 01 18:46:53 2007 +0000
22.3 @@ -0,0 +1,1066 @@
22.4 +package com.repdev;
22.5 +
22.6 +import java.io.BufferedReader;
22.7 +import java.io.File;
22.8 +import java.io.FileReader;
22.9 +import java.io.IOException;
22.10 +import java.util.ArrayList;
22.11 +import java.util.HashSet;
22.12 +
22.13 +import org.eclipse.swt.SWT;
22.14 +import org.eclipse.swt.custom.StyleRange;
22.15 +import org.eclipse.swt.custom.StyledText;
22.16 +import org.eclipse.swt.graphics.Font;
22.17 +import org.eclipse.swt.widgets.Display;
22.18 +
22.19 +import com.repdev.DatabaseLayout.Field;
22.20 +import com.repdev.DatabaseLayout.Record;
22.21 +
22.22 +public class RepgenParser {
22.23 + private StyledText txt;
22.24 + private SymitarFile file;
22.25 + private int sym;
22.26 + private boolean reparse = true;
22.27 +
22.28 + private static HashSet<String> functions, keywords, specialvars;
22.29 + private static DatabaseLayout db;
22.30 +
22.31 + private ArrayList<Token> ltokens = new ArrayList<Token>();
22.32 + private ArrayList<Variable> lvars = new ArrayList<Variable>();
22.33 + private ArrayList<Token> lasttokens = new ArrayList<Token>();
22.34 + private ArrayList<Include> includes = new ArrayList<Include>();
22.35 +
22.36 + private ArrayList<Error> errorList = new ArrayList<Error>();
22.37 + private ArrayList<Task> taskList = new ArrayList<Task>();
22.38 +
22.39 + boolean refreshIncludes = true;
22.40 +
22.41 + static {
22.42 + functions = build(new File("functions.txt"));
22.43 + keywords = build(new File("keywords.txt"));
22.44 + specialvars = build(new File("vars.txt"));
22.45 + db = DatabaseLayout.getInstance();
22.46 + }
22.47 +
22.48 +
22.49 +
22.50 + public RepgenParser(StyledText txt, SymitarFile file, int sym) {
22.51 + this.txt = txt;
22.52 + this.file = file;
22.53 + this.sym = sym;
22.54 + }
22.55 +
22.56 + public class Error{
22.57 + private String fileName = "", description = "";
22.58 + private int line = 0, col = 0;
22.59 +
22.60 + public Error(ErrorCheckResult result){
22.61 + fileName = file.getName();
22.62 + line = result.getLineNumber();
22.63 + col = result.getColumn();
22.64 + description = result.getErrorMessage();
22.65 + }
22.66 +
22.67 + public Error( String description, int line, int col) {
22.68 + fileName = file.getName();
22.69 + this.description = description;
22.70 + this.line = line;
22.71 + this.col = col;
22.72 + }
22.73 +
22.74 + public Error(String file, String description, int line, int col) {
22.75 + fileName = file;
22.76 + this.description = description;
22.77 + this.line = line;
22.78 + this.col = col;
22.79 + }
22.80 +
22.81 + public int getCol() {
22.82 + return col;
22.83 + }
22.84 + public void setCol(int col) {
22.85 + this.col = col;
22.86 + }
22.87 + public String getDescription() {
22.88 + return description;
22.89 + }
22.90 + public void setDescription(String description) {
22.91 + this.description = description;
22.92 + }
22.93 + public String getFile() {
22.94 + return fileName;
22.95 + }
22.96 + public void setFile(String file) {
22.97 + this.fileName = file;
22.98 + }
22.99 + public int getLine() {
22.100 + return line;
22.101 + }
22.102 + public void setLine(int line) {
22.103 + this.line = line;
22.104 + }
22.105 +
22.106 +
22.107 + }
22.108 +
22.109 + public class Task{
22.110 +
22.111 + }
22.112 +
22.113 + public class Include{
22.114 + private String fileName;
22.115 + public Division division;
22.116 +
22.117 + public Include(String fileName, Division division) {
22.118 + super();
22.119 + this.fileName = fileName;
22.120 + this.division = division;
22.121 + }
22.122 +
22.123 + public Division getDivision() {
22.124 + return division;
22.125 + }
22.126 +
22.127 + public void setDivision(Division division) {
22.128 + this.division = division;
22.129 + }
22.130 +
22.131 + public String getFileName() {
22.132 + return fileName;
22.133 + }
22.134 +
22.135 + public void setFileName(String fileName) {
22.136 + this.fileName = fileName;
22.137 + }
22.138 + }
22.139 +
22.140 + public enum Division{
22.141 + DEFINE, SETUP, SELECT, SORT, PRINT, TOTAL, NONE //Procedure
22.142 + }
22.143 +
22.144 + public class Token {
22.145 + private String str;
22.146 + private Token after = null, before = null;
22.147 + private int pos, commentDepth, afterDepth;
22.148 + private boolean inString, afterString, inDate, afterDate, inDefs;
22.149 +
22.150 + public Token(String str, int pos, int commentDepth, int afterDepth, boolean inString, boolean afterString, boolean inDefs, boolean inDate, boolean afterDate) {
22.151 + this.str = str;
22.152 + this.pos = pos;
22.153 + this.commentDepth = commentDepth;
22.154 + this.afterDepth = afterDepth;
22.155 + this.inString = inString;
22.156 + this.afterString = afterString;
22.157 + this.inDate = inDate;
22.158 + this.afterDate = afterDate;
22.159 + this.inDefs = inDefs;
22.160 + }
22.161 +
22.162 + public void setNearTokens(ArrayList<Token> tokens, int mypos) {
22.163 + after = null;
22.164 + before = null;
22.165 +
22.166 + // if(inString || commentDepth!=0)
22.167 + // return;
22.168 +
22.169 + for (int i = mypos - 1; i >= 0; i--) {
22.170 + // if(!tokens.get(i).getInString() &&
22.171 + // tokens.get(i).getCDepth()==0) {
22.172 + before = tokens.get(i);
22.173 + break;
22.174 + // }
22.175 + }
22.176 +
22.177 + for (int i = mypos + 1; i < tokens.size(); i++) {
22.178 + // if(!tokens.get(i).getInString() &&
22.179 + // tokens.get(i).getCDepth()==0) {
22.180 + after = tokens.get(i);
22.181 + break;
22.182 + }
22.183 + // }
22.184 + }
22.185 +
22.186 + public Token getNextNCToken() {
22.187 + return after;
22.188 + }
22.189 +
22.190 + public int getStart() {
22.191 + return pos;
22.192 + }
22.193 +
22.194 + public int getEnd() {
22.195 + return pos + str.length();
22.196 + }
22.197 +
22.198 + public String getStr() {
22.199 + return str;
22.200 + }
22.201 +
22.202 + public int length() {
22.203 + return str.length();
22.204 + }
22.205 +
22.206 + public int getCDepth() {
22.207 + return commentDepth;
22.208 + }
22.209 +
22.210 + public int getEndCDepth() {
22.211 + return afterDepth;
22.212 + }
22.213 +
22.214 + public boolean getInString() {
22.215 + return inString;
22.216 + }
22.217 +
22.218 + public boolean getEndInString() {
22.219 + return afterString;
22.220 + }
22.221 +
22.222 + public boolean getInDate() {
22.223 + return inDate;
22.224 + }
22.225 +
22.226 + public boolean getEndInDate() {
22.227 + return afterDate;
22.228 + }
22.229 +
22.230 + public boolean inDefs() {
22.231 + return inDefs;
22.232 + }
22.233 +
22.234 + public void incStart(int amount) {
22.235 + pos += amount;
22.236 + }
22.237 +
22.238 + public void setInDefs(boolean b) {
22.239 + inDefs = b;
22.240 + }
22.241 +
22.242 + public void setCDepth(int before, int after) {
22.243 + commentDepth = before;
22.244 + afterDepth = after;
22.245 + }
22.246 +
22.247 + public void setInString(boolean before, boolean after) {
22.248 + inString = before;
22.249 + afterString = after;
22.250 + }
22.251 +
22.252 + public void setInDate(boolean before, boolean after) {
22.253 + inDate = before;
22.254 + afterDate = after;
22.255 + }
22.256 +
22.257 + public boolean dbFieldValid(ArrayList<Record> records) {
22.258 + Token record = before.before;
22.259 +
22.260 + if (record == null)
22.261 + return false;
22.262 +
22.263 + if (!record.dbRecordValid())
22.264 + return false;
22.265 +
22.266 + String recordName = record.getStr();
22.267 +
22.268 + for (Record rec : db.getFlatRecords()) {
22.269 + if (rec.getName().toLowerCase().equals(recordName)) {
22.270 + for (Field field : rec.getFields()) {
22.271 + if (field.getName().toLowerCase().equals(str))
22.272 + return true;
22.273 + }
22.274 + }
22.275 + }
22.276 +
22.277 + return false;
22.278 + }
22.279 +
22.280 + public boolean dbRecordValid() {
22.281 + return db.containsRecordName(str);
22.282 + }
22.283 +
22.284 + public String toString() {
22.285 + return pos + ":" + str + "(" + commentDepth + "," + inString + "," + inDefs + ")";
22.286 + }
22.287 +
22.288 + public Token getAfter() {
22.289 + return after;
22.290 + }
22.291 +
22.292 + public Token getBefore() {
22.293 + return before;
22.294 + }
22.295 + }
22.296 +
22.297 + public static class Variable implements Comparable {
22.298 + private String name, filename, type;
22.299 + boolean constant;
22.300 + private int pos;
22.301 +
22.302 + public Variable(String name, String filename, int pos, String type) {
22.303 + this.name = name;
22.304 + this.filename = filename;
22.305 + this.pos = pos;
22.306 + this.type = type;
22.307 + }
22.308 +
22.309 + public String getName() {
22.310 + return name;
22.311 + }
22.312 +
22.313 + public String getFilename() {
22.314 + return filename;
22.315 + }
22.316 +
22.317 + public int getPos() {
22.318 + return pos;
22.319 + }
22.320 +
22.321 + public void incPos(int amount) {
22.322 + pos += amount;
22.323 + }
22.324 +
22.325 + public String toString() {
22.326 + return pos + ":" + name;
22.327 + }
22.328 +
22.329 + public boolean equals(Object o) {
22.330 + if (!(o instanceof Variable))
22.331 + return false;
22.332 +
22.333 + Variable v = (Variable) o;
22.334 +
22.335 + return v.name.equals(name);
22.336 + }
22.337 +
22.338 + public int compareTo(Object o) {
22.339 + if (o instanceof Variable)
22.340 + return name.compareToIgnoreCase(((Variable) o).getName());
22.341 + else
22.342 + return -1;
22.343 + }
22.344 +
22.345 + public void setType(String type) {
22.346 + this.type = type;
22.347 + }
22.348 +
22.349 + public String getType() {
22.350 + return type;
22.351 + }
22.352 +
22.353 + public boolean isConstant() {
22.354 + return constant;
22.355 + }
22.356 +
22.357 + public void setConstant(boolean constant) {
22.358 + this.constant = constant;
22.359 + }
22.360 + }
22.361 +
22.362 + /**
22.363 + * Worker class for loading any included files and parsing out their contents
22.364 + * Currently runs once at opening of the report
22.365 + * @author poznanja
22.366 + *
22.367 + */
22.368 + public class BackgroundIncludeParser extends Thread{
22.369 + String text;
22.370 +
22.371 + public BackgroundIncludeParser(String text){
22.372 + super("Background Include Parser");
22.373 + this.text = text;
22.374 + }
22.375 +
22.376 + public void run(){
22.377 + for( Token tok : ltokens ){
22.378 + if( tok.str.equals("#include") && tok.after != null){
22.379 + String fileName = getFullString(tok.after,text);
22.380 +
22.381 + if( tok.inDefs ){
22.382 + includes.add(new Include(fileName,Division.DEFINE));
22.383 + rebuildVars(fileName);
22.384 + }
22.385 + }
22.386 + }
22.387 + }
22.388 + }
22.389 +
22.390 + /**
22.391 + * Warning: Doesn't save symitar file
22.392 + *
22.393 + * Can be called to validate
22.394 + * @author poznanja
22.395 + *
22.396 + */
22.397 + public class BackgroundSymitarErrorChecker extends Thread{
22.398 + RepgenParser me;
22.399 +
22.400 + public BackgroundSymitarErrorChecker(RepgenParser instance){
22.401 + me = instance;
22.402 + }
22.403 +
22.404 + public void run(){
22.405 + synchronized(me){
22.406 + errorList.clear();
22.407 + errorList.add(new Error(RepDevMain.SYMITAR_SESSIONS.get(sym).errorCheckRepGen(file.getName())));
22.408 + }
22.409 + }
22.410 + }
22.411 +
22.412 +
22.413 + /**
22.414 + * Adds tokens to ltokens, but also keeps track of it in the new tokens list for determining what to process later
22.415 + * @param spot
22.416 + * @param tok
22.417 + */
22.418 + private void addToken(ArrayList<Token> tokens, int spot, Token tok){
22.419 + tokens.add(spot,tok);
22.420 + lasttokens.add(tok);
22.421 + }
22.422 +
22.423 + private boolean parse(String filename, String str, int start, int end, int oldend, ArrayList<Token> tokens, ArrayList<Variable> vars, StyledText txt) {
22.424 + Token modToken = null;
22.425 +
22.426 + lasttokens.clear();
22.427 +
22.428 + boolean allDefs = true;
22.429 +
22.430 + if (str.length() == 0)
22.431 + return false;
22.432 +
22.433 + int ftoken;
22.434 + for (ftoken = 0; ftoken < tokens.size(); ftoken++)
22.435 + if (tokens.get(ftoken).getEnd() >= start)
22.436 + break;
22.437 +
22.438 + int ltoken;
22.439 + for (ltoken = ftoken; ltoken < tokens.size(); ltoken++)
22.440 + if (tokens.get(ltoken).getStart() > oldend)
22.441 + break;
22.442 +
22.443 + if (tokens.size() > 0) {
22.444 + // Must scan several more ahead for records with spaces
22.445 + ltoken = Math.min(tokens.size() - 1, ltoken + 3);
22.446 +
22.447 + // And two back for editing the second "word" in a record, and for
22.448 + // fields with colons
22.449 + ftoken = Math.max(0, ftoken - 2);
22.450 +
22.451 + boolean inStr;
22.452 +
22.453 + inStr = tokens.get(ltoken).inString;
22.454 +
22.455 + while (tokens.get(ltoken).inString == inStr) {
22.456 + ltoken++;
22.457 +
22.458 + if (ltoken > tokens.size() - 1) {
22.459 + ltoken = tokens.size() - 1;
22.460 + break;
22.461 + }
22.462 + }
22.463 +
22.464 + }
22.465 +
22.466 + int charStart, charEnd;
22.467 +
22.468 + if (ftoken < tokens.size())
22.469 + charStart = Math.min(start, tokens.get(ftoken).getStart());
22.470 + else
22.471 + charStart = start;
22.472 +
22.473 + if (ltoken < tokens.size())
22.474 + charEnd = Math.min(str.length(), Math.max(end, tokens.get(ltoken).getStart() + end - oldend + tokens.get(ltoken).getStr().length()));
22.475 + else
22.476 + charEnd = str.length();
22.477 +
22.478 + char[] chars = str.substring(charStart, charEnd).toLowerCase().toCharArray();
22.479 +
22.480 + boolean inString = false, inDate = false, inDefine = false;
22.481 + int commentDepth = 0;
22.482 + if (ftoken > 0) {
22.483 + inString = tokens.get(ftoken - 1).getEndInString();
22.484 + inDate = tokens.get(ftoken - 1).getEndInDate();
22.485 + commentDepth = tokens.get(ftoken - 1).getEndCDepth();
22.486 + inDefine = tokens.get(ftoken - 1).inDefs();
22.487 + }
22.488 +
22.489 + boolean oldInString = false, oldInDefine = false, oldInDate = false;
22.490 + int oldCommentDepth = 0;
22.491 + if (ltoken < tokens.size()) {
22.492 + oldInString = tokens.get(ltoken).getInString();
22.493 + oldInDate = tokens.get(ltoken).getInDate();
22.494 + oldCommentDepth = tokens.get(ltoken).getCDepth();
22.495 + oldInDefine = tokens.get(ltoken).inDefs();
22.496 + }
22.497 +
22.498 + if (inDefine || oldInDefine) {
22.499 + reparseAll();
22.500 + return false;
22.501 + }
22.502 +
22.503 + if (tokens.size() > 0)
22.504 + for (int i = 0; i <= ltoken - ftoken; i++)
22.505 + tokens.remove(ftoken);
22.506 +
22.507 + int curspot = ftoken, cstart = charStart;
22.508 + StringBuilder sb = new StringBuilder();
22.509 + for (int i = 0; i < chars.length; i++) {
22.510 + char cur = chars[i];
22.511 +
22.512 + if ((cur >= 'a' && cur <= 'z') || (cur >= '0' && cur <= '9') || cur == '#' || cur == '@') {
22.513 + sb.append(cur);
22.514 + } else {
22.515 + String scur = null;
22.516 +
22.517 + // Look ahead one name to see if a record exists with this name
22.518 + // and make it all one token
22.519 + if (cur == ' ') {
22.520 + String tempRecord = sb.toString() + " ";
22.521 + int x;
22.522 +
22.523 + for (x = Math.min(i + 1,chars.length-1); x < chars.length; x++) {
22.524 + tempRecord += chars[x];
22.525 +
22.526 + if (!((chars[x] >= 'a' && chars[x] <= 'z') || (chars[x] >= '0' && chars[x] <= '9') || chars[x] == '#' || chars[x] == '@')) {
22.527 + tempRecord = tempRecord.substring(0, tempRecord.length() - 1);
22.528 + break;
22.529 + }
22.530 + }
22.531 +
22.532 + if (db.containsRecordName(tempRecord)) {
22.533 + scur = tempRecord;
22.534 + i = x;
22.535 +
22.536 + if( i == chars.length )
22.537 + i--;
22.538 +
22.539 + cur = chars[i];
22.540 + }
22.541 +
22.542 + }
22.543 +
22.544 + // Look ahead again for field names with colons
22.545 + if (cur == ':') {
22.546 + String tempRecord = sb.toString() + ":";
22.547 + int x;
22.548 +
22.549 + for (x = i + 1; x < chars.length; x++) {
22.550 + tempRecord += chars[x];
22.551 +
22.552 + if (!((chars[x] >= 'a' && chars[x] <= 'z') || (chars[x] >= '0' && chars[x] <= '9') || chars[x] == '#' || chars[x] == '@')) {
22.553 + tempRecord = tempRecord.substring(0, tempRecord.length() - 1);
22.554 + break;
22.555 + }
22.556 + }
22.557 +
22.558 + if (db.containsFieldName(tempRecord)) {
22.559 + scur = tempRecord;
22.560 + i = x;
22.561 + cur = chars[i];
22.562 + }
22.563 +
22.564 + }
22.565 +
22.566 + if (scur == null)
22.567 + scur = sb.toString().trim();
22.568 +
22.569 + if (scur.length() > 0) {
22.570 + if (commentDepth == 0 && !inString) {
22.571 + if (scur.equals("define")) {
22.572 + inDefine = true;
22.573 + } else if (scur.equals("end")) {
22.574 + inDefine = false;
22.575 + allDefs = false;
22.576 + }
22.577 + }
22.578 +
22.579 + Token nToken = new Token(scur, cstart, commentDepth, commentDepth, inString, inString, inDefine, inDate, inDate);
22.580 + addToken(tokens, curspot, nToken);
22.581 +
22.582 + curspot++;
22.583 + }
22.584 +
22.585 + sb = new StringBuilder();
22.586 + cstart = i + charStart;
22.587 +
22.588 + scur = "" + cur;
22.589 + if (commentDepth == 0 && cur == '"') {
22.590 + if (inString)
22.591 + addToken(tokens, curspot, new Token(scur, cstart, 0, 0, true, false, inDefine, inDate, inDate));
22.592 + else
22.593 + addToken(tokens, curspot, new Token(scur, cstart, 0, 0, true, true, inDefine, inDate, inDate));
22.594 +
22.595 + curspot++;
22.596 + inString = !inString;
22.597 + } else if (!inString && cur == '[') {
22.598 + commentDepth++;
22.599 + addToken(tokens, curspot, new Token(scur, cstart, commentDepth, commentDepth, false, false, inDefine, inDate, inDate));
22.600 + curspot++;
22.601 + } else if (!inString && cur == ']') {
22.602 + commentDepth--;
22.603 + if (commentDepth < 0)
22.604 + commentDepth = 0;
22.605 +
22.606 + addToken(tokens, curspot, new Token(scur, cstart, commentDepth + 1, commentDepth, false, false, inDefine, inDate, inDate));
22.607 + curspot++;
22.608 + } else if (commentDepth == 0 && !inString && cur == '\'') {
22.609 + if (inDate)
22.610 + addToken(tokens, curspot, new Token(scur, cstart, 0, 0, inString, inString, inDefine, true, false));
22.611 + else
22.612 + addToken(tokens, curspot, new Token(scur, cstart, 0, 0, inString, inString, inDefine, true, true));
22.613 +
22.614 + curspot++;
22.615 + inDate = !inDate;
22.616 + } else if (scur.trim().length() != 0) {
22.617 + addToken(tokens, curspot, new Token(scur, cstart, commentDepth, commentDepth, inString, inString, inDefine, inDate, inDate));
22.618 + curspot++;
22.619 + }
22.620 +
22.621 + cstart++;
22.622 + }
22.623 + }
22.624 +
22.625 + String scur = sb.toString().trim();
22.626 + if (scur.length() > 0) {
22.627 + if (commentDepth == 0 && !inString) {
22.628 + if (scur.equals("define")) {
22.629 + inDefine = true;
22.630 + } else if (scur.equals("end")) {
22.631 + inDefine = false;
22.632 + allDefs = false;
22.633 + }
22.634 + }
22.635 + modToken = new Token(scur, cstart, commentDepth, commentDepth, inString, inString, inDefine, inDate, inDate);
22.636 + modToken.setNearTokens(tokens, curspot);
22.637 +
22.638 + addToken(tokens, curspot, modToken);
22.639 + curspot++;
22.640 + }
22.641 +
22.642 + if (end != oldend)
22.643 + for (int i = curspot; i < tokens.size(); i++)
22.644 + tokens.get(i).incStart(end - oldend);
22.645 +
22.646 + int fixspot = curspot;
22.647 +
22.648 + if (inString != oldInString || commentDepth != oldCommentDepth || inDefine != oldInDefine || inDate != oldInDate) {
22.649 + for (fixspot = curspot; fixspot < tokens.size(); fixspot++) {
22.650 + Token tcur = tokens.get(fixspot);
22.651 + String cur = tcur.getStr();
22.652 +
22.653 + oldInString = tcur.getInString();
22.654 + oldInDate = tcur.getInDate();
22.655 + oldCommentDepth = tcur.getCDepth();
22.656 + oldInDefine = tcur.inDefs();
22.657 +
22.658 + tcur.setInString(inString, inString);
22.659 + tcur.setInDate(inDate, inDate);
22.660 + tcur.setCDepth(commentDepth, commentDepth);
22.661 + tcur.setInDefs(inDefine);
22.662 +
22.663 + if (commentDepth == 0 && cur.equals("\"")) {
22.664 + if (inString)
22.665 + tcur.setInString(true, false);
22.666 + else
22.667 + tcur.setInString(true, true);
22.668 +
22.669 + inString = !inString;
22.670 + } else if (!inString && cur.equals("[")) {
22.671 + commentDepth++;
22.672 +
22.673 + tcur.setCDepth(commentDepth, commentDepth);
22.674 + } else if (!inString && cur.equals("]")) {
22.675 + commentDepth--;
22.676 + if (commentDepth < 0)
22.677 + commentDepth = 0;
22.678 +
22.679 + tcur.setCDepth(commentDepth + 1, commentDepth);
22.680 + } else if (!inString && commentDepth == 0 && cur.equals("define")) {
22.681 + inDefine = true;
22.682 + tcur.setInDefs(true);
22.683 + } else if (!inString && commentDepth == 0 && cur.equals("end")) {
22.684 + inDefine = false;
22.685 + tcur.setInDefs(false);
22.686 + } else if (!inString && commentDepth == 0 && cur.equals("'")) {
22.687 + if (inDate)
22.688 + tcur.setInDate(true, false);
22.689 + else
22.690 + tcur.setInDate(true, true);
22.691 +
22.692 + inDate = !inDate;
22.693 + } else if (inDefine == oldInDefine && commentDepth == oldCommentDepth && inString == oldInString && inDate == oldInDate) {
22.694 + break;
22.695 + }
22.696 + }
22.697 + }
22.698 +
22.699 + // Go forward 2 tokens to redraw field, if this is a record
22.700 + if (modToken != null && !modToken.inDate && !modToken.inString && modToken.commentDepth == 0 && modToken.after != null && modToken.after.before != null && modToken.after.before.getStr().equals(":")) {
22.701 + fixspot = Math.min(Math.max(fixspot, curspot + 2), tokens.size());
22.702 + }
22.703 +
22.704 + for (int i = curspot - 1; i >= 0; i--)
22.705 + if (!tokens.get(i).getInString() && tokens.get(i).getCDepth() != 0) {
22.706 + tokens.get(i).setNearTokens(tokens, i);
22.707 + break;
22.708 + }
22.709 +
22.710 + for (int i = ftoken; i < fixspot; i++)
22.711 + tokens.get(i).setNearTokens(tokens, i);
22.712 +
22.713 + if (tokens.size() > 1) {
22.714 + if (ftoken < tokens.size())
22.715 + charStart = tokens.get(ftoken).getStart();
22.716 + else
22.717 + charStart = tokens.get(ftoken - 1).getEnd();
22.718 +
22.719 + if (fixspot < tokens.size())
22.720 + charEnd = tokens.get(fixspot).getStart();
22.721 + else
22.722 + charEnd = str.length() - 1;
22.723 +
22.724 + if( txt != null)
22.725 + txt.redrawRange(charStart, charEnd - charStart, false);
22.726 + }
22.727 +
22.728 + return allDefs;
22.729 + }
22.730 +
22.731 + private static HashSet<String> build(File in) {
22.732 + HashSet<String> result = new HashSet<String>();
22.733 +
22.734 + try {
22.735 + BufferedReader br = new BufferedReader(new FileReader(in));
22.736 + String line;
22.737 +
22.738 + while ((line = br.readLine()) != null) {
22.739 + line = line.trim().toLowerCase();
22.740 +
22.741 + if (line.length() != 0)
22.742 + result.add(line);
22.743 + }
22.744 +
22.745 + br.close();
22.746 + } catch (IOException e) {
22.747 + }
22.748 +
22.749 + return result;
22.750 + }
22.751 +
22.752 + private static String getFullString(Token cur, String fileData){
22.753 + if( !cur.inString )
22.754 + return "";
22.755 +
22.756 + String type = "";
22.757 + Token fToken, lToken = null;
22.758 +
22.759 + if( cur.after == null)
22.760 + return "";
22.761 +
22.762 + fToken = cur.after;
22.763 +
22.764 +
22.765 + while( (cur=cur.after) != null )
22.766 + {
22.767 + if(!cur.inString || cur.str.equals("\""))
22.768 + break;
22.769 +
22.770 + lToken =cur;
22.771 + }
22.772 +
22.773 + type += fileData.substring(fToken.getStart(),Math.min(lToken == null ? fileData.length() -1 : lToken.getEnd(),fileData.length()-1));
22.774 +
22.775 + return type;
22.776 + }
22.777 +
22.778 + private static boolean isNumber(String str){
22.779 + try{
22.780 + Integer.parseInt(str);
22.781 + return true;
22.782 + }
22.783 + catch(Exception e){
22.784 + return false;
22.785 + }
22.786 + }
22.787 +
22.788 + private void rebuildVars(String fileName) {
22.789 + ArrayList<Variable> newvars = new ArrayList<Variable>();
22.790 + ArrayList<Variable> oldvars = new ArrayList<Variable>();
22.791 + ArrayList<Token> tokens = new ArrayList<Token>();
22.792 + String data;
22.793 +
22.794 + boolean changed = false, exists = false;
22.795 +
22.796 + int c = 0;
22.797 + while( c < lvars.size() ){
22.798 + if( lvars.get(c).getFilename().equals(fileName))
22.799 + oldvars.add(lvars.remove(c));
22.800 + else
22.801 + c++;
22.802 + }
22.803 +
22.804 + if( fileName.equals(file.getName())){
22.805 + tokens = ltokens;
22.806 + data = txt.getText();
22.807 + }
22.808 + else{
22.809 +
22.810 + data = RepDevMain.SYMITAR_SESSIONS.get(sym).getFile(new SymitarFile(fileName,FileType.REPGEN));
22.811 +
22.812 + if( data == null )
22.813 + return;
22.814 +
22.815 + parse(fileName, data, 0, data.length(), 0, tokens, new ArrayList<Variable>(),null);
22.816 +
22.817 + //Set to be in defs, since we are assuming only working with Include files already in the define division
22.818 + for( Token cur : tokens)
22.819 + cur.setInDefs(true);
22.820 + }
22.821 +
22.822 + System.out.println("Parsing vars for " + fileName);
22.823 +
22.824 + for (Token tcur : tokens) {
22.825 + Variable newVar;
22.826 +
22.827 + if (tcur.after != null && tcur.inDefs && tcur.commentDepth == 0 && !tcur.inString && !tcur.inDate && tcur.after.getStr().equals("=") && tcur.after.after != null) {
22.828 + Token typeToken = tcur.after.after;
22.829 + boolean isConstant = true;
22.830 +
22.831 + if( typeToken == null )
22.832 + continue;
22.833 +
22.834 + String type = typeToken.getStr();
22.835 +
22.836 + //Strings
22.837 + if (typeToken.inString){
22.838 + type = "\"" + getFullString(typeToken,data) + "\"";
22.839 + }
22.840 +
22.841 + //Date
22.842 + if( typeToken != null && typeToken.inDate ){
22.843 + for(int i = 0; i<=5;i++)
22.844 + {
22.845 + typeToken = typeToken.after;
22.846 +
22.847 + if( typeToken == null)
22.848 + break;
22.849 +
22.850 + type += typeToken.str;
22.851 + }
22.852 + }
22.853 +
22.854 + //Rate
22.855 + if( typeToken != null && isNumber(typeToken.str) && typeToken.after != null && typeToken.after.str.equals(".") && typeToken.after.after != null && isNumber(typeToken.after.after.str)){
22.856 + for(int i = 0; i<=2;i++)
22.857 + {
22.858 + typeToken = typeToken.after;
22.859 +
22.860 + if( typeToken == null)
22.861 + break;
22.862 +
22.863 + type += typeToken.str;
22.864 + }
22.865 + }
22.866 +
22.867 + //Money
22.868 + if( typeToken != null && typeToken.str.equals("$")){
22.869 + while( (typeToken = typeToken.after) != null )
22.870 + {
22.871 + if( !isNumber(typeToken.str) && !typeToken.getStr().equals(",") && !typeToken.getStr().equals(".") )
22.872 + break;
22.873 +
22.874 + type += typeToken.str;
22.875 + }
22.876 + }
22.877 +
22.878 + for( DatabaseLayout.DataType cur : DatabaseLayout.DataType.values())
22.879 + if( cur.toString().equalsIgnoreCase(type))
22.880 + isConstant = false;
22.881 +
22.882 + //Array support
22.883 + if( typeToken != null && typeToken.after != null && typeToken.after.getStr().equals("array")){
22.884 +
22.885 + while( (typeToken = typeToken.after) != null )
22.886 + {
22.887 + if( !isNumber(typeToken.str) && !typeToken.getStr().equals(")") && !typeToken.getStr().equals("(") && !typeToken.getStr().equals("array"))
22.888 + break;
22.889 +
22.890 + type += (isNumber(typeToken.str) || typeToken.str.equals(")") ? "" : " ") + typeToken.str;
22.891 + }
22.892 + }
22.893 +
22.894 + newVar = new Variable(tcur.getStr(), fileName, tcur.pos, type);
22.895 + newVar.setConstant(isConstant);
22.896 + newvars.add(newVar);
22.897 + }
22.898 + }
22.899 +
22.900 + changed = !(oldvars.size() == newvars.size());
22.901 +
22.902 + if( !changed ){
22.903 + for (Variable var : newvars) {
22.904 + exists = false;
22.905 +
22.906 + for (Variable lvar : oldvars)
22.907 + if (lvar.equals(var))
22.908 + exists = true;
22.909 +
22.910 + if (!exists) {
22.911 + changed = true;
22.912 + break;
22.913 + }
22.914 + }
22.915 + }
22.916 +
22.917 + lvars.addAll(newvars);
22.918 +
22.919 + if (changed && fileName.equals(file.getName()))
22.920 + txt.redrawRange(0, txt.getText().length(), false);
22.921 +
22.922 + }
22.923 +
22.924 + public void textModified(int start, int length, String replacedText){
22.925 + if (reparse) {
22.926 + int st = start;
22.927 + int end = st + length;
22.928 + int oldend = st + replacedText.length();
22.929 + boolean rebuildVars = false;
22.930 +
22.931 + long time = System.currentTimeMillis();
22.932 +
22.933 + try {
22.934 + parse(file.getName(), txt.getText(), st, end, oldend, ltokens, lvars, txt);
22.935 +
22.936 + for( Token cur : lasttokens)
22.937 + if( cur.inDefs )
22.938 + rebuildVars = true;
22.939 +
22.940 + if( rebuildVars )
22.941 + rebuildVars(file.getName());
22.942 +
22.943 + if( refreshIncludes ){
22.944 + parseIncludes();
22.945 + refreshIncludes = false;
22.946 + }
22.947 + } catch (Exception e) {
22.948 + System.err.println("Syntax Highlighter error!");
22.949 + e.printStackTrace();
22.950 + }
22.951 + // parse(file.getName(),txt.getText(),txt.,end,end,ltokens,lvars);
22.952 + System.out.println("Parse time: " + (System.currentTimeMillis() - time));
22.953 + }
22.954 + }
22.955 +
22.956 + public synchronized void parseIncludes(){
22.957 + includes.clear();
22.958 +
22.959 + BackgroundIncludeParser parser = new BackgroundIncludeParser(txt.getText());
22.960 + parser.start();
22.961 + }
22.962 +
22.963 + public synchronized void errorCheck(){
22.964 + BackgroundSymitarErrorChecker checker = new BackgroundSymitarErrorChecker(this);
22.965 + checker.start();
22.966 + }
22.967 +
22.968 + public void reparseAll() {
22.969 + try {
22.970 + ltokens = new ArrayList<Token>();
22.971 + parse(file.getName(), txt.getText(), 0, txt.getCharCount() - 1, 0, ltokens, lvars, txt);
22.972 + rebuildVars(file.getName());
22.973 +
22.974 + System.out.println("Reparsed");
22.975 + } catch (Exception e) {
22.976 + System.err.println("Syntax Highlighter error!");
22.977 + e.printStackTrace();
22.978 + }
22.979 + }
22.980 +
22.981 +
22.982 + public ArrayList<Token> getLtokens() {
22.983 + return ltokens;
22.984 + }
22.985 +
22.986 + public ArrayList<Variable> getLvars() {
22.987 + return lvars;
22.988 + }
22.989 +
22.990 + public void setReparse(boolean reparse) {
22.991 + this.reparse = reparse;
22.992 + }
22.993 +
22.994 + public boolean isReparse() {
22.995 + return reparse;
22.996 + }
22.997 +
22.998 + public SymitarFile getFile() {
22.999 + return file;
22.1000 + }
22.1001 +
22.1002 + public void setFile(SymitarFile file) {
22.1003 + this.file = file;
22.1004 + }
22.1005 +
22.1006 + public int getSym() {
22.1007 + return sym;
22.1008 + }
22.1009 +
22.1010 + public void setSym(int sym) {
22.1011 + this.sym = sym;
22.1012 + }
22.1013 +
22.1014 + public StyledText getTxt() {
22.1015 + return txt;
22.1016 + }
22.1017 +
22.1018 + public void setTxt(StyledText txt) {
22.1019 + this.txt = txt;
22.1020 + }
22.1021 +
22.1022 + public static HashSet<String> getFunctions() {
22.1023 + return functions;
22.1024 + }
22.1025 +
22.1026 + public static void setFunctions(HashSet<String> functions) {
22.1027 + RepgenParser.functions = functions;
22.1028 + }
22.1029 +
22.1030 + public static HashSet<String> getKeywords() {
22.1031 + return keywords;
22.1032 + }
22.1033 +
22.1034 + public static void setKeywords(HashSet<String> keywords) {
22.1035 + RepgenParser.keywords = keywords;
22.1036 + }
22.1037 +
22.1038 + public static HashSet<String> getSpecialvars() {
22.1039 + return specialvars;
22.1040 + }
22.1041 +
22.1042 + public static void setSpecialvars(HashSet<String> specialvars) {
22.1043 + RepgenParser.specialvars = specialvars;
22.1044 + }
22.1045 +
22.1046 + public static DatabaseLayout getDb() {
22.1047 + return db;
22.1048 + }
22.1049 +
22.1050 + public static void setDb(DatabaseLayout db) {
22.1051 + RepgenParser.db = db;
22.1052 + }
22.1053 +
22.1054 + public void setErrorList(ArrayList<Error> errorList) {
22.1055 + this.errorList = errorList;
22.1056 + }
22.1057 +
22.1058 + public ArrayList<Error> getErrorList() {
22.1059 + return errorList;
22.1060 + }
22.1061 +
22.1062 + public void setTaskList(ArrayList<Task> taskList) {
22.1063 + this.taskList = taskList;
22.1064 + }
22.1065 +
22.1066 + public ArrayList<Task> getTaskList() {
22.1067 + return taskList;
22.1068 + }
22.1069 +}
23.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
23.2 +++ b/com/repdev/RunReportShell.java Fri Jun 01 18:46:53 2007 +0000
23.3 @@ -0,0 +1,302 @@
23.4 +package com.repdev;
23.5 +
23.6 +import java.awt.TextArea;
23.7 +
23.8 +import org.eclipse.swt.SWT;
23.9 +import org.eclipse.swt.events.SelectionAdapter;
23.10 +import org.eclipse.swt.events.SelectionEvent;
23.11 +import org.eclipse.swt.layout.FormAttachment;
23.12 +import org.eclipse.swt.layout.FormData;
23.13 +import org.eclipse.swt.layout.FormLayout;
23.14 +import org.eclipse.swt.widgets.*;
23.15 +
23.16 +public class RunReportShell {
23.17 + private Shell shell, parent;
23.18 + private Display display;
23.19 + private SymitarFile file;
23.20 + int sym;
23.21 +
23.22 + public RunReportShell(Shell parent, SymitarFile file, int sym) {
23.23 + this.parent = parent;
23.24 + display = parent.getDisplay();
23.25 + this.file = file;
23.26 + this.sym = sym;
23.27 + }
23.28 +
23.29 + private void create(){
23.30 + shell = new Shell(parent,SWT.SHELL_TRIM | SWT.APPLICATION_MODAL);
23.31 + shell.setText("Run Report");
23.32 + shell.setImage(RepDevMain.smallRunImage);
23.33 +
23.34 + FormLayout layout = new FormLayout();
23.35 + layout.marginTop = 5;
23.36 + layout.marginBottom = 5;
23.37 + layout.marginLeft = 5;
23.38 + layout.marginRight = 5;
23.39 + layout.spacing = 5;
23.40 + shell.setLayout(layout);
23.41 +
23.42 + FormData data;
23.43 +
23.44 + Label fileLabel = new Label(shell,SWT.NONE);
23.45 + fileLabel.setText("File name:");
23.46 +
23.47 + Label symLabel = new Label(shell,SWT.NONE);
23.48 + symLabel.setText("Sym: ");
23.49 +
23.50 + Text fileText = new Text(shell,SWT.READ_ONLY | SWT.BORDER);
23.51 + fileText.setText(file.getName());
23.52 +
23.53 + Text symText = new Text(shell,SWT.READ_ONLY | SWT.BORDER);
23.54 + symText.setText(String.valueOf(sym));
23.55 +
23.56 + Group promptGroup = new Group(shell,SWT.NONE);
23.57 + promptGroup.setText("User Prompt Options");
23.58 + layout = new FormLayout();
23.59 + layout.marginTop = 5;
23.60 + layout.marginBottom = 5;
23.61 + layout.marginLeft = 5;
23.62 + layout.marginRight = 5;
23.63 + layout.spacing = 5;
23.64 + promptGroup.setLayout(layout);
23.65 +
23.66 + Group fmGroup = new Group(shell,SWT.NONE);
23.67 + fmGroup.setText("File Maintenance Options");
23.68 + layout = new FormLayout();
23.69 + layout.marginTop = 5;
23.70 + layout.marginBottom = 5;
23.71 + layout.marginLeft = 5;
23.72 + layout.marginRight = 5;
23.73 + layout.spacing = 5;
23.74 + fmGroup.setLayout(layout);
23.75 +
23.76 + Button defaultsButton = new Button(promptGroup,SWT.RADIO);
23.77 + defaultsButton.setText("Answer default to all prompt");
23.78 + defaultsButton.setSelection(true);
23.79 +
23.80 + Button promptButton = new Button(promptGroup,SWT.RADIO);
23.81 + promptButton.setText("Prompt user at run time");
23.82 +
23.83 + final Label titleLabel = new Label(fmGroup,SWT.NONE);
23.84 + titleLabel.setText("Report Title: ");
23.85 +
23.86 + final Label typeLabel = new Label(fmGroup,SWT.NONE);
23.87 + typeLabel.setText("Root File Type: ");
23.88 +
23.89 + final Text titleText = new Text(fmGroup, SWT.BORDER);
23.90 + final Combo typeCombo = new Combo(fmGroup,SWT.READ_ONLY | SWT.DROP_DOWN);
23.91 +
23.92 + Button noFMButton = new Button(fmGroup,SWT.RADIO);
23.93 + noFMButton.setText("Do not run File Maintenance");
23.94 + noFMButton.addSelectionListener( new SelectionAdapter(){
23.95 + public void widgetSelected(SelectionEvent e){
23.96 + titleLabel.setEnabled(false);
23.97 + typeLabel.setEnabled(false);
23.98 + titleText.setEnabled(false);
23.99 + typeCombo.setEnabled(false);
23.100 + }
23.101 + });
23.102 + noFMButton.setSelection(true);
23.103 +
23.104 + Button yesFMButton = new Button(fmGroup,SWT.RADIO);
23.105 + yesFMButton.setText("Execute File Maintenance after running report");
23.106 + yesFMButton.addSelectionListener( new SelectionAdapter(){
23.107 + public void widgetSelected(SelectionEvent e){
23.108 + titleLabel.setEnabled(true);
23.109 + typeLabel.setEnabled(true);
23.110 + titleText.setEnabled(true);
23.111 + typeCombo.setEnabled(true);
23.112 + }
23.113 + });
23.114 +
23.115 + Button runButton = new Button(shell,SWT.NONE);
23.116 + runButton.setText("Run Report");
23.117 +
23.118 + Button cancelButton = new Button(shell,SWT.NONE);
23.119 + cancelButton.setText("Cancel");
23.120 +
23.121 + Button closeButton = new Button(shell,SWT.NONE);
23.122 + closeButton.setText("Close Window");
23.123 +
23.124 + Group ioGroup = new Group(shell,SWT.NONE);
23.125 + ioGroup.setText("Report Run I/O");
23.126 + layout = new FormLayout();
23.127 + layout.marginTop = 5;
23.128 + layout.marginBottom = 5;
23.129 + layout.marginLeft = 5;
23.130 + layout.marginRight = 5;
23.131 + layout.spacing = 5;
23.132 + ioGroup.setLayout(layout);
23.133 +
23.134 + ProgressBar progressBar = new ProgressBar(ioGroup,SWT.NONE);
23.135 +
23.136 + Label messageLabel = new Label(ioGroup,SWT.NONE);
23.137 + messageLabel.setText("Messages:");
23.138 +
23.139 + Text ioText = new Text(ioGroup,SWT.MULTI | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL);
23.140 +
23.141 + Label promptLabel = new Label(ioGroup,SWT.NONE);
23.142 + promptLabel.setText("Prompt:");
23.143 +
23.144 + Text promptText = new Text(ioGroup,SWT.BORDER);
23.145 +
23.146 + Button nextPromptButton = new Button(ioGroup,SWT.NONE);
23.147 + nextPromptButton.setText("Next");
23.148 +
23.149 + Button prevPromptButton = new Button(ioGroup,SWT.NONE);
23.150 + prevPromptButton.setText("Prev");
23.151 +
23.152 + data = new FormData();
23.153 + data.left = new FormAttachment(0);
23.154 + data.top = new FormAttachment(0);
23.155 + fileLabel.setLayoutData(data);
23.156 +
23.157 + data = new FormData();
23.158 + data.left = new FormAttachment(fileLabel);
23.159 + data.right = new FormAttachment(symLabel);
23.160 + data.top = new FormAttachment(0);
23.161 + fileText.setLayoutData(data);
23.162 +
23.163 + data = new FormData();
23.164 + data.right = new FormAttachment(symText);
23.165 + data.top = new FormAttachment(0);
23.166 + symLabel.setLayoutData(data);
23.167 +
23.168 + data = new FormData();
23.169 + //data.left = new FormAttachment(symLabel);
23.170 + data.right = new FormAttachment(100);
23.171 + data.top = new FormAttachment(0);
23.172 + symText.setLayoutData(data);
23.173 +
23.174 + data = new FormData();
23.175 + data.left = new FormAttachment(0);
23.176 + data.top = new FormAttachment(fileText,0,SWT.BOTTOM);
23.177 + data.right = new FormAttachment(ioGroup);
23.178 + //data.bottom = new FormAttachment(fmGroup);
23.179 + promptGroup.setLayoutData(data);
23.180 +
23.181 + data = new FormData();
23.182 + data.left = new FormAttachment(0);
23.183 + data.top = new FormAttachment(promptGroup);
23.184 + data.right = new FormAttachment(ioGroup);
23.185 + fmGroup.setLayoutData(data);
23.186 +
23.187 + data = new FormData();
23.188 + data.left = new FormAttachment(promptGroup);
23.189 + data.right = new FormAttachment(100);
23.190 + data.top = new FormAttachment(symText);
23.191 + data.bottom = new FormAttachment(cancelButton);
23.192 + ioGroup.setLayoutData(data);
23.193 +
23.194 + data = new FormData();
23.195 + data.right = new FormAttachment(100);
23.196 + data.bottom = new FormAttachment(100);
23.197 + closeButton.setLayoutData(data);
23.198 +
23.199 + data = new FormData();
23.200 + data.bottom = new FormAttachment(100);
23.201 + data.right = new FormAttachment(closeButton);
23.202 + cancelButton.setLayoutData(data);
23.203 +
23.204 + data = new FormData();
23.205 + data.bottom = new FormAttachment(100);
23.206 + data.right = new FormAttachment(cancelButton);
23.207 + runButton.setLayoutData(data);
23.208 +
23.209 + data = new FormData();
23.210 + data.left = new FormAttachment(0);
23.211 + data.top = new FormAttachment(0);
23.212 + defaultsButton.setLayoutData(data);
23.213 +
23.214 + data = new FormData();
23.215 + data.left = new FormAttachment(0);
23.216 + data.top = new FormAttachment(defaultsButton);
23.217 + promptButton.setLayoutData(data);
23.218 +
23.219 + data = new FormData();
23.220 + data.left = new FormAttachment(0);
23.221 + data.top = new FormAttachment(0);
23.222 + noFMButton.setLayoutData(data);
23.223 +
23.224 + data = new FormData();
23.225 + data.left = new FormAttachment(0);
23.226 + data.right = new FormAttachment(100);
23.227 + data.top = new FormAttachment(noFMButton);
23.228 + yesFMButton.setLayoutData(data);
23.229 +
23.230 + data = new FormData();
23.231 + data.right = new FormAttachment(100);
23.232 + data.top = new FormAttachment(yesFMButton);
23.233 + titleText.setLayoutData(data);
23.234 +
23.235 + data = new FormData();
23.236 + data.right = new FormAttachment(titleText);
23.237 + data.top = new FormAttachment(yesFMButton);
23.238 + titleLabel.setLayoutData(data);
23.239 +
23.240 + data = new FormData();
23.241 + data.right = new FormAttachment(100);
23.242 + data.top = new FormAttachment(titleText);
23.243 + typeCombo.setLayoutData(data);
23.244 +
23.245 + data = new FormData();
23.246 + data.right = new FormAttachment(typeCombo);
23.247 + data.top = new FormAttachment(titleText);
23.248 + typeLabel.setLayoutData(data);
23.249 +
23.250 + data = new FormData();
23.251 + data.left = new FormAttachment(0);
23.252 + data.top = new FormAttachment(0);
23.253 + data.right = new FormAttachment(100);
23.254 + progressBar.setLayoutData(data);
23.255 +
23.256 + data = new FormData();
23.257 + data.left = new FormAttachment(0);
23.258 + data.top = new FormAttachment(progressBar);
23.259 + messageLabel.setLayoutData(data);
23.260 +
23.261 + data = new FormData();
23.262 + data.left = new FormAttachment(0);
23.263 + data.right = new FormAttachment(100);
23.264 + data.top = new FormAttachment(messageLabel);
23.265 + data.bottom = new FormAttachment(prevPromptButton);
23.266 + ioText.setLayoutData(data);
23.267 +
23.268 + data = new FormData();
23.269 + data.left = new FormAttachment(0);
23.270 + data.bottom = new FormAttachment(100);
23.271 + promptLabel.setLayoutData(data);
23.272 +
23.273 + data = new FormData();
23.274 + data.left = new FormAttachment(promptLabel);
23.275 + data.right = new FormAttachment(nextPromptButton);
23.276 + data.bottom = new FormAttachment(100);
23.277 + promptText.setLayoutData(data);
23.278 +
23.279 + data = new FormData();
23.280 + data.right = new FormAttachment(100);
23.281 + data.bottom = new FormAttachment(100);
23.282 + prevPromptButton.setLayoutData(data);
23.283 +
23.284 + data = new FormData();
23.285 + data.right = new FormAttachment(prevPromptButton);
23.286 + data.bottom = new FormAttachment(100);
23.287 + nextPromptButton.setLayoutData(data);
23.288 +
23.289 + shell.pack();
23.290 + shell.open();
23.291 + shell.setMinimumSize(shell.getSize().x + 100, shell.getSize().y + 50);
23.292 + }
23.293 +
23.294 +
23.295 + public void open(){
23.296 + create();
23.297 +
23.298 + while (!shell.isDisposed()) {
23.299 + if (!display.readAndDispatch())
23.300 + display.sleep();
23.301 + }
23.302 + }
23.303 +
23.304 +
23.305 +}
24.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
24.2 +++ b/com/repdev/ScriptHandler.java Fri Jun 01 18:46:53 2007 +0000
24.3 @@ -0,0 +1,62 @@
24.4 +package com.repdev;
24.5 +
24.6 +import java.util.Vector;
24.7 +
24.8 +/**
24.9 + * A script handler, that tries to match strings and returns true when it found
24.10 + * the string it searched for.
24.11 + * <P>
24.12 + * <B>Maintainer:</B> Matthias L. Jugel
24.13 + *
24.14 + * @version $Id: ScriptHandler.java 499 2005-09-29 08:24:54Z leo $
24.15 + * @author Matthias L. Jugel, Marcus Mei�ner
24.16 + */
24.17 +public class ScriptHandler {
24.18 +
24.19 + /** debugging level */
24.20 + private final static int debug = 0;
24.21 +
24.22 + private int matchPos; // current position in the match
24.23 + private byte[] match; // the current bytes to look for
24.24 + private boolean done = true; // nothing to look for!
24.25 +
24.26 + /**
24.27 + * Setup the parser using the passed string.
24.28 + *
24.29 + * @param match
24.30 + * the string to look for
24.31 + */
24.32 + public void setup(String match) {
24.33 + if (match == null)
24.34 + return;
24.35 + this.match = match.getBytes();
24.36 + matchPos = 0;
24.37 + done = false;
24.38 + }
24.39 +
24.40 + /**
24.41 + * Try to match the byte array s against the match string.
24.42 + *
24.43 + * @param s
24.44 + * the array of bytes to match against
24.45 + * @param length
24.46 + * the amount of bytes in the array
24.47 + * @return true if the string was found, else false
24.48 + */
24.49 + public boolean match(byte[] s, int length) {
24.50 + if (done)
24.51 + return true;
24.52 + for (int i = 0; !done && i < length; i++) {
24.53 + if (s[i] == match[matchPos]) {
24.54 + // the whole thing matched so, return the match answer
24.55 + // and reset to use the next match
24.56 + if (++matchPos >= match.length) {
24.57 + done = true;
24.58 + return true;
24.59 + }
24.60 + } else
24.61 + matchPos = 0; // get back to the beginning
24.62 + }
24.63 + return false;
24.64 + }
24.65 +}
25.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
25.2 +++ b/com/repdev/SessionError.java Fri Jun 01 18:46:53 2007 +0000
25.3 @@ -0,0 +1,5 @@
25.4 +package com.repdev;
25.5 +
25.6 +public enum SessionError {
25.7 + NONE, SERVER_NOT_FOUND, AIX_LOGIN_WRONG, SYM_INVALID, USERID_INVALID, ALREADY_CONNECTED, NOT_CONNECTED, IO_ERROR, CONSOLE_BLOCKED,
25.8 +};
25.9 \ No newline at end of file
26.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
26.2 +++ b/com/repdev/SuggestShell.java Fri Jun 01 18:46:53 2007 +0000
26.3 @@ -0,0 +1,361 @@
26.4 +package com.repdev;
26.5 +
26.6 +import java.util.ArrayList;
26.7 +import java.util.Collections;
26.8 +
26.9 +import org.eclipse.swt.SWT;
26.10 +import org.eclipse.swt.custom.CLabel;
26.11 +import org.eclipse.swt.custom.StyleRange;
26.12 +import org.eclipse.swt.custom.StyledText;
26.13 +import org.eclipse.swt.custom.VerifyKeyListener;
26.14 +import org.eclipse.swt.events.FocusAdapter;
26.15 +import org.eclipse.swt.events.FocusEvent;
26.16 +import org.eclipse.swt.events.FocusListener;
26.17 +import org.eclipse.swt.events.KeyEvent;
26.18 +import org.eclipse.swt.events.KeyListener;
26.19 +import org.eclipse.swt.events.MouseAdapter;
26.20 +import org.eclipse.swt.events.MouseEvent;
26.21 +import org.eclipse.swt.events.MouseListener;
26.22 +import org.eclipse.swt.events.SelectionAdapter;
26.23 +import org.eclipse.swt.events.SelectionEvent;
26.24 +import org.eclipse.swt.events.SelectionListener;
26.25 +import org.eclipse.swt.events.TraverseEvent;
26.26 +import org.eclipse.swt.events.TraverseListener;
26.27 +import org.eclipse.swt.events.VerifyEvent;
26.28 +import org.eclipse.swt.graphics.Color;
26.29 +import org.eclipse.swt.graphics.Point;
26.30 +import org.eclipse.swt.graphics.RGB;
26.31 +import org.eclipse.swt.layout.FillLayout;
26.32 +import org.eclipse.swt.widgets.Control;
26.33 +import org.eclipse.swt.widgets.Event;
26.34 +import org.eclipse.swt.widgets.Layout;
26.35 +import org.eclipse.swt.widgets.Shell;
26.36 +import org.eclipse.swt.widgets.Table;
26.37 +import org.eclipse.swt.widgets.TableItem;
26.38 +import com.repdev.SyntaxHighlighter.*;
26.39 +import com.repdev.RepgenParser.*;
26.40 +import com.repdev.DatabaseLayout.*;
26.41 +
26.42 +public class SuggestShell {
26.43 + private Shell shell,tooltip;
26.44 + private StyledText toolText;
26.45 + private Table table;
26.46 + private StyledText txt;
26.47 + private RepgenParser parser;
26.48 + private boolean open = false;
26.49 + private Token current;
26.50 +
26.51 + public void open() {
26.52 + open = true;
26.53 + update();
26.54 +
26.55 + shell.setVisible(true);
26.56 + tooltip.setVisible(true);
26.57 + shell.moveAbove(txt);
26.58 + txt.setFocus();
26.59 + }
26.60 +
26.61 + private void update() {
26.62 + String tokenStr = "";
26.63 + Point loc = shell.getDisplay().map(txt, null, txt.getLocationAtOffset(txt.getCaretOffset()));
26.64 + loc.x += 5;
26.65 + loc.y += 20;
26.66 + shell.setLocation(loc);
26.67 + tooltip.setLocation(shell.getLocation().x+shell.getSize().x, shell.getLocation().y);
26.68 +
26.69 + if (parser == null || parser.getLtokens() == null)
26.70 + return;
26.71 +
26.72 + current = null;
26.73 +
26.74 + for (Token t : parser.getLtokens()) {
26.75 + if (t.getEnd() == txt.getCaretOffset()) {
26.76 + current = t;
26.77 + break;
26.78 + }
26.79 + }
26.80 +
26.81 + table.removeAll();
26.82 +
26.83 + if (current == null)
26.84 + tokenStr = "";
26.85 + else
26.86 + tokenStr = current.getStr();
26.87 +
26.88 + table.setRedraw(false);
26.89 +
26.90 + // add DB subfields, if we are on that
26.91 + if (current != null && (tokenStr.equals(":") || (current.getBefore() != null && current.getBefore().getStr().equals(":")))) {
26.92 + Token record = current.getBefore();
26.93 +
26.94 + if ((current.getBefore() != null && current.getBefore().getStr().equals(":")))
26.95 + record = record.getBefore();
26.96 +
26.97 + if (record == null)
26.98 + return;
26.99 +
26.100 + DatabaseLayout.Record dRecord = null;
26.101 +
26.102 + if (DatabaseLayout.getInstance().containsRecordName(record.getStr())) {
26.103 + for (DatabaseLayout.Record cur : DatabaseLayout.getInstance().getFlatRecords()) {
26.104 + if (cur.getName().toLowerCase().equals(record.getStr())) {
26.105 + dRecord = cur;
26.106 + break;
26.107 + }
26.108 + }
26.109 +
26.110 + ArrayList<Field> sortedFields = dRecord.getFields();
26.111 +
26.112 + Collections.sort(sortedFields);
26.113 +
26.114 + for (DatabaseLayout.Field field : dRecord.getFields()) {
26.115 + if (tokenStr.equals(":") || field.getName().toLowerCase().startsWith(tokenStr)) {
26.116 + TableItem item = new TableItem(table, SWT.NONE);
26.117 + item.setText(field.getName().toUpperCase() + " " + field.getDataType());
26.118 + item.setImage(RepDevMain.smallDBFieldImage);
26.119 + item.setData("value", field.getName().toUpperCase());
26.120 + String tooltip = field.getName().toUpperCase() + "\nType: " + field.getDataType() + (field.getLen() != -1 ? "(" + field.getLen() + ")" : "" ) + "\nField Number: " + field.getFieldNumber() + "\n\n" + field.getDescription();
26.121 +
26.122 + item.setData("tooltip", tooltip) ;
26.123 + StyleRange[] styles = {
26.124 + new StyleRange(0,field.getName().length(),null,null,SWT.BOLD),
26.125 + new StyleRange(field.getName().length()+1,tooltip.indexOf("\n\n") - field.getName().length(),null,null,SWT.ITALIC),
26.126 + };
26.127 + item.setData("tooltipstyles", styles);
26.128 + }
26.129 + }
26.130 + }
26.131 + } else {
26.132 + // Otherwise, let's populate with variable names, db records, etc.
26.133 + if (tokenStr.equals("=") || tokenStr.equals(":"))
26.134 + tokenStr = "";
26.135 +
26.136 + ArrayList<Variable> vars = new ArrayList<Variable>(parser.getLvars());
26.137 +
26.138 + if(tokenStr.startsWith("@"))
26.139 + for( Object cur :RepgenParser.getSpecialvars().toArray())
26.140 + if( cur instanceof String)
26.141 + vars.add(new Variable((String)cur,"Special Variable",-1,""));
26.142 +
26.143 + Collections.sort(vars);
26.144 +
26.145 +
26.146 +
26.147 + for (Variable var : vars) {
26.148 + if (var.getName().toLowerCase().startsWith(tokenStr)) {
26.149 + TableItem item = new TableItem(table, SWT.NONE);
26.150 + item.setText(var.getName().toUpperCase() + " " + (var.isConstant() ? var.getType() : var.getType().toUpperCase()));
26.151 + item.setImage(RepDevMain.smallVariableImage);
26.152 + item.setData("value", var.getName().toUpperCase());
26.153 +
26.154 + String tooltip = var.getName().toUpperCase();
26.155 +
26.156 + if( var.isConstant())
26.157 + tooltip += "\nConstant Value: " + var.getType();
26.158 + else
26.159 + tooltip += "\nType: " + var.getType().toUpperCase();
26.160 +
26.161 + tooltip += "\nFile: " + var.getFilename();
26.162 +
26.163 + item.setData("tooltip", tooltip);
26.164 +
26.165 + StyleRange[] styles = {
26.166 + new StyleRange(0,var.getName().length(),null,null,SWT.BOLD),
26.167 +
26.168 + };
26.169 + item.setData("tooltipstyles", styles);
26.170 + }
26.171 + }
26.172 +
26.173 + ArrayList<Record> records = DatabaseLayout.getInstance().getFlatRecords();
26.174 + for (Record record : records) {
26.175 + if (record.getName().toLowerCase().startsWith(tokenStr)) {
26.176 + TableItem item = new TableItem(table, SWT.NONE);
26.177 + item.setText(record.getName().toUpperCase());
26.178 + item.setImage(RepDevMain.smallDBRecordImage);
26.179 + item.setData("value", record.getName().toUpperCase());
26.180 +
26.181 + String tooltip = record.getName().toUpperCase() + "\nParent: " + ( record.getRoot() == null ? "None" : record.getRoot().getName() ) + "\n\n" + record.getDescription();
26.182 +
26.183 + item.setData("tooltip", tooltip) ;
26.184 +
26.185 + StyleRange[] styles = {
26.186 + new StyleRange(0,record.getName().length(),null,null,SWT.BOLD),
26.187 + new StyleRange(record.getName().length()+1,tooltip.indexOf("\n\n") - record.getName().length(),null,null,SWT.ITALIC),
26.188 + };
26.189 + item.setData("tooltipstyles", styles);
26.190 + }
26.191 + }
26.192 +
26.193 + }
26.194 +
26.195 +
26.196 + table.setRedraw(true);
26.197 + table.setSelection(0);
26.198 + refreshTooltip();
26.199 +
26.200 + }
26.201 +
26.202 + public void attach(StyledText txt, RepgenParser parser) {
26.203 + if (txt == null || parser== null || shell == null || this.txt != txt || this.parser != parser|| shell.isDisposed()) {
26.204 + this.txt = txt;
26.205 + this.parser = parser;
26.206 + createNewShell();
26.207 + }
26.208 + }
26.209 +
26.210 + public void close() {
26.211 + open = false;
26.212 + shell.setVisible(false);
26.213 + tooltip.setVisible(false);
26.214 + }
26.215 +
26.216 + private void createNewShell() {
26.217 + if (shell != null && !shell.isDisposed()){
26.218 + shell.dispose();
26.219 + tooltip.dispose();
26.220 + }
26.221 +
26.222 + shell = new Shell(txt.getDisplay(), SWT.BORDER | SWT.ON_TOP);
26.223 + shell.setVisible(false);
26.224 + shell.setLayout(new FillLayout());
26.225 +
26.226 + tooltip = new Shell(txt.getDisplay(),SWT.BORDER | SWT.ON_TOP );
26.227 + tooltip.setVisible(false);
26.228 + tooltip.setLayout(new FillLayout());
26.229 +
26.230 + toolText = new StyledText(tooltip,SWT.READ_ONLY);
26.231 + toolText.setText("Testing Tooltip");
26.232 + toolText.setBackground(new Color(shell.getDisplay(),new RGB(255,255,225)));
26.233 +
26.234 + if( txt.getData("suggestlistenersloaded") == null){
26.235 + txt.setData("suggestlistenersloaded", true);
26.236 +
26.237 + txt.addKeyListener(new KeyListener() {
26.238 +
26.239 + public void keyPressed(KeyEvent e) {
26.240 +
26.241 + if (open && e.keyCode != SWT.ARROW_DOWN && e.keyCode != SWT.ARROW_UP && e.keyCode != SWT.SHIFT)
26.242 + update();
26.243 +
26.244 + if ((e.character == ' ' && e.stateMask == SWT.CTRL) || e.character == ':') {
26.245 + open();
26.246 + }
26.247 +
26.248 + if (open && (e.keyCode == SWT.ESC || e.keyCode == SWT.ARROW_LEFT || e.keyCode == SWT.ARROW_RIGHT))
26.249 + close();
26.250 + }
26.251 +
26.252 + public void keyReleased(KeyEvent e) {
26.253 + // TODO Auto-generated method stub
26.254 +
26.255 + }
26.256 +
26.257 + });
26.258 +
26.259 + txt.addMouseListener(new MouseAdapter() {
26.260 + public void mouseDown(MouseEvent e) {
26.261 + if (open)
26.262 + close();
26.263 + }
26.264 + });
26.265 +
26.266 + txt.addFocusListener(new FocusAdapter() {
26.267 + public void focusGained(FocusEvent e){
26.268 +
26.269 + }
26.270 +
26.271 + public void focusLost(FocusEvent e) {
26.272 +
26.273 + if (open && !(shell.isFocusControl() || table.isFocusControl())) {
26.274 + close();
26.275 + txt.setFocus();
26.276 + }
26.277 + }
26.278 +
26.279 + });
26.280 +
26.281 + txt.addVerifyKeyListener(new VerifyKeyListener() {
26.282 + public void verifyKey(VerifyEvent e) {
26.283 +
26.284 + if (open) {
26.285 +
26.286 + if (e.keyCode == SWT.ARROW_DOWN) {
26.287 + table.setSelection(Math.min(table.getSelectionIndex() + 1, table.getItemCount() - 1));
26.288 + refreshTooltip();
26.289 + e.doit = false;
26.290 + } else if (e.keyCode == SWT.ARROW_UP) {
26.291 + table.setSelection(Math.max(table.getSelectionIndex() - 1, 0));
26.292 + refreshTooltip();
26.293 + e.doit = false;
26.294 + } else if ((e.keyCode == '\r' || e.character == ':') && table.getSelectionIndex() != -1 && table.getItemCount() > 0) {
26.295 + String value = (String) table.getSelection()[0].getData("value");
26.296 +
26.297 + if (e.character == ':')
26.298 + value += ":";
26.299 +
26.300 + if (current != null && current.getStr().equals(":")) {
26.301 + txt.replaceTextRange(txt.getCaretOffset(), 0, value);
26.302 + txt.setCaretOffset(txt.getCaretOffset() + value.length());
26.303 + } else {
26.304 + int len = 0;
26.305 + if (current != null && !current.getStr().equals(":") && !current.getStr().equals("="))
26.306 + len = current.getStr().length();
26.307 +
26.308 + txt.replaceTextRange(txt.getCaretOffset() - len, len, value);
26.309 +
26.310 + if (len == 0)
26.311 + txt.setCaretOffset(txt.getCaretOffset() + value.length());
26.312 + }
26.313 +
26.314 + e.doit = false;
26.315 +
26.316 + if (e.keyCode == '\r')
26.317 + close();
26.318 + }
26.319 +
26.320 + }
26.321 + }
26.322 +
26.323 + });
26.324 + }
26.325 +
26.326 + table = new Table(shell, SWT.SINGLE);
26.327 +
26.328 + table.addSelectionListener(new SelectionAdapter() {
26.329 + public void widgetSelected(SelectionEvent e){
26.330 + refreshTooltip();
26.331 + }
26.332 +
26.333 + public void widgetDefaultSelected(SelectionEvent e) {
26.334 + if (open && e.item != null) {
26.335 + Event event = new Event();
26.336 + event.keyCode = '\r';
26.337 + txt.notifyListeners(SWT.KeyDown, event);
26.338 +
26.339 + }
26.340 + }
26.341 + });
26.342 +
26.343 + shell.setSize(280, 180);
26.344 + tooltip.setSize(200,120);
26.345 +
26.346 + // shell.open();
26.347 + txt.setFocus();
26.348 + }
26.349 +
26.350 + public void refreshTooltip(){
26.351 + if( table.getSelectionIndex() == -1){
26.352 + toolText.setText("");
26.353 + return;
26.354 + }
26.355 +
26.356 + if( table.getSelection()[0].getData("tooltip") != null ){
26.357 + toolText.setText((String)table.getSelection()[0].getData("tooltip"));
26.358 + toolText.setStyleRanges((StyleRange[])table.getSelection()[0].getData("tooltipstyles"));
26.359 + }
26.360 + else
26.361 + toolText.setText("");
26.362 + }
26.363 +
26.364 +}
27.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
27.2 +++ b/com/repdev/SymLoginShell.java Fri Jun 01 18:46:53 2007 +0000
27.3 @@ -0,0 +1,214 @@
27.4 +package com.repdev;
27.5 +
27.6 +import org.eclipse.swt.*;
27.7 +import org.eclipse.swt.events.SelectionAdapter;
27.8 +import org.eclipse.swt.events.SelectionEvent;
27.9 +import org.eclipse.swt.layout.*;
27.10 +import org.eclipse.swt.widgets.*;
27.11 +
27.12 +public class SymLoginShell {
27.13 + private static SymLoginShell me = new SymLoginShell();
27.14 + private Shell shell;
27.15 +
27.16 + private SymLoginShell() {
27.17 + }
27.18 +
27.19 + private int LABEL_WIDTH = 80;
27.20 + private int result = -1;
27.21 + private int sym;
27.22 + private String aixUsername, aixPassword, userID;
27.23 + public static String lastUsername = Config.getLastUsername() == null ? "" : Config.getLastUsername(), lastPassword = "";
27.24 +
27.25 + private void create(Shell parent, int inSym) {
27.26 + result = -1;
27.27 +
27.28 + FormLayout layout = new FormLayout();
27.29 + layout.marginTop = 5;
27.30 + layout.marginBottom = 5;
27.31 + layout.marginLeft = 5;
27.32 + layout.marginRight = 5;
27.33 + layout.spacing = 5;
27.34 +
27.35 + shell = new Shell(parent, SWT.APPLICATION_MODAL | SWT.DIALOG_TRIM);
27.36 + shell.setText("Sym Login");
27.37 + shell.setLayout(layout);
27.38 +
27.39 + Label symLabel = new Label(shell, SWT.NONE);
27.40 + symLabel.setText("Sym:");
27.41 +
27.42 + Label aixUserLabel = new Label(shell, SWT.NONE);
27.43 + aixUserLabel.setText("AIX Username:");
27.44 +
27.45 + Label aixPasswordLabel = new Label(shell, SWT.NONE);
27.46 + aixPasswordLabel.setText("AIX Password:");
27.47 +
27.48 + Label userIDLabel = new Label(shell, SWT.NONE);
27.49 + userIDLabel.setText("UserID:");
27.50 +
27.51 + final Text symText = new Text(shell, SWT.BORDER | (inSym != -1 ? SWT.READ_ONLY : SWT.NONE));
27.52 +
27.53 + if (inSym != -1)
27.54 + symText.setText(String.valueOf(inSym));
27.55 +
27.56 + final Text aixUserText = new Text(shell, SWT.BORDER);
27.57 + aixUserText.setText(lastUsername);
27.58 +
27.59 + final Text aixPasswordText = new Text(shell, SWT.BORDER | SWT.PASSWORD);
27.60 + aixPasswordText.setText(lastPassword);
27.61 +
27.62 + final Text userIDText = new Text(shell, SWT.BORDER | SWT.PASSWORD);
27.63 +
27.64 + if (inSym != -1)
27.65 + aixUserText.setFocus();
27.66 +
27.67 + if( !aixUserText.getText().trim().equals("") )
27.68 + aixPasswordText.setFocus();
27.69 +
27.70 + Button ok = new Button(shell, SWT.PUSH);
27.71 + ok.setText("Login");
27.72 + ok.addSelectionListener(new SelectionAdapter() {
27.73 + public void widgetSelected(SelectionEvent e) {
27.74 +
27.75 + try {
27.76 + sym = Integer.parseInt(symText.getText().trim());
27.77 + } catch (Exception ex) {
27.78 + MessageBox dialog = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
27.79 + dialog.setMessage("The Sym number you entered was invalid");
27.80 + dialog.setText("Input Error");
27.81 + dialog.open();
27.82 + symText.setFocus();
27.83 + return;
27.84 + }
27.85 +
27.86 + aixUsername = aixUserText.getText().trim();
27.87 + aixPassword = aixPasswordText.getText().trim();
27.88 + userID = userIDText.getText().trim();
27.89 +
27.90 + lastUsername = aixUsername;
27.91 + lastPassword = aixPassword;
27.92 +
27.93 + //Config.setLastPassword(lastPassword);
27.94 + Config.setLastUsername(lastUsername);
27.95 +
27.96 + result = 1000;
27.97 +
27.98 + shell.dispose();
27.99 + }
27.100 + });
27.101 +
27.102 + Button cancel = new Button(shell, SWT.PUSH);
27.103 + cancel.setText("Cancel");
27.104 + cancel.addSelectionListener(new SelectionAdapter() {
27.105 + public void widgetSelected(SelectionEvent e) {
27.106 + result = -1;
27.107 + shell.dispose();
27.108 + }
27.109 + });
27.110 +
27.111 + FormData data;
27.112 +
27.113 + data = new FormData();
27.114 + data.left = new FormAttachment(0);
27.115 + data.top = new FormAttachment(0);
27.116 + data.width = LABEL_WIDTH;
27.117 + symLabel.setLayoutData(data);
27.118 +
27.119 + data = new FormData();
27.120 + data.left = new FormAttachment(symLabel);
27.121 + data.top = new FormAttachment(0);
27.122 + data.right = new FormAttachment(100);
27.123 + data.width = 160;
27.124 + symText.setLayoutData(data);
27.125 +
27.126 + data = new FormData();
27.127 + data.left = new FormAttachment(0);
27.128 + data.top = new FormAttachment(symText);
27.129 + data.width = LABEL_WIDTH;
27.130 + aixUserLabel.setLayoutData(data);
27.131 +
27.132 + data = new FormData();
27.133 + data.left = new FormAttachment(aixUserLabel);
27.134 + data.top = new FormAttachment(symText);
27.135 + data.right = new FormAttachment(100);
27.136 + aixUserText.setLayoutData(data);
27.137 +
27.138 + data = new FormData();
27.139 + data.left = new FormAttachment(0);
27.140 + data.top = new FormAttachment(aixUserText);
27.141 + data.width = LABEL_WIDTH;
27.142 + aixPasswordLabel.setLayoutData(data);
27.143 +
27.144 + data = new FormData();
27.145 + data.left = new FormAttachment(aixPasswordLabel);
27.146 + data.top = new FormAttachment(aixUserText);
27.147 + data.right = new FormAttachment(100);
27.148 + aixPasswordText.setLayoutData(data);
27.149 +
27.150 + data = new FormData();
27.151 + data.left = new FormAttachment(0);
27.152 + data.top = new FormAttachment(aixPasswordText);
27.153 + data.width = LABEL_WIDTH;
27.154 + userIDLabel.setLayoutData(data);
27.155 +
27.156 + data = new FormData();
27.157 + data.left = new FormAttachment(userIDLabel);
27.158 + data.top = new FormAttachment(aixPasswordText);
27.159 + data.right = new FormAttachment(100);
27.160 + userIDText.setLayoutData(data);
27.161 +
27.162 + data = new FormData();
27.163 + data.top = new FormAttachment(userIDText);
27.164 + data.right = new FormAttachment(100);
27.165 + cancel.setLayoutData(data);
27.166 +
27.167 + data = new FormData();
27.168 + data.top = new FormAttachment(userIDText);
27.169 + data.right = new FormAttachment(cancel);
27.170 + ok.setLayoutData(data);
27.171 +
27.172 + shell.setDefaultButton(ok);
27.173 + shell.pack();
27.174 + shell.open();
27.175 + }
27.176 +
27.177 + private void symLogin() {
27.178 + SymitarSession session = RepDevMain.SYMITAR_SESSIONS.get(sym);
27.179 +
27.180 + if (session == null) {
27.181 + if (Config.getServer().equals("test"))
27.182 + session = new TestingSymitarSession();
27.183 + else
27.184 + session = new DirectSymitarSession();
27.185 +
27.186 + RepDevMain.SYMITAR_SESSIONS.put(sym, session);
27.187 + }
27.188 +
27.189 + if (session.isConnected()) {
27.190 + me.result = -1;
27.191 + return;
27.192 + }
27.193 +
27.194 + SessionError error = session.connect(Config.getServer(), aixUsername, aixPassword, sym, userID);
27.195 +
27.196 + if (error == SessionError.NONE)
27.197 + me.result = sym;
27.198 + else
27.199 + me.result = -1;
27.200 + }
27.201 +
27.202 + // returns -1 on cancel
27.203 + // Pass -1 to sym to hide sym field
27.204 + public static int symLogin(Display display, Shell parent, int sym) {
27.205 + me.create(parent, sym);
27.206 +
27.207 + while (!me.shell.isDisposed()) {
27.208 + if (!display.readAndDispatch())
27.209 + display.sleep();
27.210 + }
27.211 +
27.212 + if (me.result != -1)
27.213 + me.symLogin();
27.214 +
27.215 + return me.result;
27.216 + }
27.217 +}
28.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
28.2 +++ b/com/repdev/SymitarFile.java Fri Jun 01 18:46:53 2007 +0000
28.3 @@ -0,0 +1,66 @@
28.4 +package com.repdev;
28.5 +
28.6 +import java.util.Date;
28.7 +
28.8 +public class SymitarFile {
28.9 + private String name;
28.10 + private FileType type;
28.11 + private Date modified = new Date(0), installed = new Date(0);
28.12 + private long size = -1;
28.13 +
28.14 + public SymitarFile(String name, FileType type) {
28.15 + this.name = name;
28.16 + this.type = type;
28.17 + }
28.18 +
28.19 + public SymitarFile(String name, FileType type, Date modified, long size) {
28.20 + this.name = name;
28.21 + this.type = type;
28.22 + this.modified = modified;
28.23 + this.size = size;
28.24 + }
28.25 +
28.26 + public String getName() {
28.27 + return name;
28.28 + }
28.29 +
28.30 + public FileType getType() {
28.31 + return type;
28.32 + }
28.33 +
28.34 + public String toString() {
28.35 + return name;
28.36 + }
28.37 +
28.38 + public Date getModified() {
28.39 + return modified;
28.40 + }
28.41 +
28.42 + public void setModified(Date modified) {
28.43 + this.modified = modified;
28.44 + }
28.45 +
28.46 + public long getSize() {
28.47 + return size;
28.48 + }
28.49 +
28.50 + public void setSize(long size) {
28.51 + this.size = size;
28.52 + }
28.53 +
28.54 + public boolean equals(Object o) {
28.55 + if (!(o instanceof SymitarFile))
28.56 + return false;
28.57 +
28.58 + SymitarFile file = (SymitarFile) o;
28.59 + return name.equals(file.name) && type.equals(file.type);
28.60 + }
28.61 +
28.62 + public void setInstalled(Date installed) {
28.63 + this.installed = installed;
28.64 + }
28.65 +
28.66 + public Date getInstalled() {
28.67 + return installed;
28.68 + }
28.69 +}
29.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
29.2 +++ b/com/repdev/SymitarSession.java Fri Jun 01 18:46:53 2007 +0000
29.3 @@ -0,0 +1,166 @@
29.4 +package com.repdev;
29.5 +
29.6 +import java.util.ArrayList;
29.7 +
29.8 +public abstract class SymitarSession {
29.9 + protected String server, aixUsername, aixPassword, userID;
29.10 + protected int sym;
29.11 + protected ArrayList<QueueInfo> queueInfoList;
29.12 +
29.13 + /**
29.14 + * Initiates a connection to the server, if we are not already connected
29.15 + *
29.16 + * @param server
29.17 + * @param aixUsername
29.18 + * @param aixPassword
29.19 + * @param sym
29.20 + * @param userID
29.21 + * @return SessionError
29.22 + */
29.23 + public abstract SessionError connect(String server, String aixUsername, String aixPassword, int sym, String userID);
29.24 +
29.25 + /**
29.26 + *
29.27 + * @return SessionError
29.28 + */
29.29 + public abstract SessionError disconnect();
29.30 +
29.31 + /**
29.32 + *
29.33 + * @return boolean
29.34 + */
29.35 + public abstract boolean isConnected();
29.36 +
29.37 + /**
29.38 + * Gets file of given type from server
29.39 + *
29.40 + * @param type
29.41 + * @param name
29.42 + * @return String containing contents, null if not connected or if can't
29.43 + * find file
29.44 + */
29.45 + public abstract String getFile(SymitarFile file);
29.46 +
29.47 + public abstract SessionError removeFile(SymitarFile file);
29.48 +
29.49 + /**
29.50 + *
29.51 + * @param type
29.52 + * @param name
29.53 + * @param text
29.54 + * @return SessionError
29.55 + */
29.56 + public abstract SessionError saveFile(SymitarFile file, String text);
29.57 +
29.58 + public abstract void runRepGen(String name);
29.59 +
29.60 + public abstract void runRepGen(String name, int queue);
29.61 +
29.62 + /**
29.63 + * Returns an arraylist of QueueInfo objects
29.64 + *
29.65 + * @return
29.66 + */
29.67 + public ArrayList<QueueInfo> getQueueInfo() {
29.68 + return queueInfoList;
29.69 + }
29.70 +
29.71 + /**
29.72 + * Blocks until a change is available from the session, telnet or otherwise
29.73 + * For example, if we had asked for a repgen to be run, entered its prompts,
29.74 + * then we would call this method and it would block.
29.75 + *
29.76 + * Then, when new data was available, ex. the repgen finished, or the queue
29.77 + * listing got updated. It would unblock. The caller would then have to
29.78 + * determine what changed, (ex. update the UI) and if required, call this
29.79 + * method again
29.80 + *
29.81 + * Current Changes Possible: 1. Repgen Completion 2. Repgen Prompt 3. Queue
29.82 + * Info Chane
29.83 + *
29.84 + * @return
29.85 + */
29.86 + public abstract void waitOnChange();
29.87 +
29.88 + /**
29.89 + * Returns a query that the user must respond to in this repgen, null if
29.90 + * there are no more queries
29.91 + *
29.92 + * @return
29.93 + */
29.94 + public abstract String getRepGenQuery();
29.95 +
29.96 + /**
29.97 + * Sends an answer to the next waiting query
29.98 + *
29.99 + * @param value
29.100 + * @return
29.101 + */
29.102 + public abstract int acceptRepGenQuery(String value);
29.103 +
29.104 + /**
29.105 + *
29.106 + * @return Queue number of currently running repgen
29.107 + */
29.108 + public abstract int getRepgenQueue();
29.109 +
29.110 + /**
29.111 + * Sequence numbers for the last batch process to run, not including BATCH
29.112 + * OUTPUT file
29.113 + *
29.114 + * @return
29.115 + */
29.116 + public abstract ArrayList<Integer> getSequenceNumbers();
29.117 +
29.118 + /**
29.119 + * Batch ouput sequence number for the last batch process to run
29.120 + *
29.121 + * @return
29.122 + */
29.123 + public abstract int getBatchOutputSequenceNumber();
29.124 +
29.125 + public abstract SessionError runBatchFM(String title);
29.126 +
29.127 + /**
29.128 + * Supports default "+" as a wildcard
29.129 + *
29.130 + * @param search
29.131 + * @return
29.132 + */
29.133 + public abstract ArrayList<SymitarFile> getFileList(FileType type, String search);
29.134 +
29.135 + public abstract SessionError printFileLPT(SymitarFile file, boolean formsOverride, int formLength, int startPage, int endPage, int copies, boolean landscape, boolean duplex, int queuePriority);
29.136 +
29.137 + /**
29.138 + * Calls the regular print command with default options
29.139 + */
29.140 + public SessionError printFileLPT(SymitarFile file) {
29.141 + return printFileLPT(file, false, 0, 0, 0, 1, false, false, 4);
29.142 + }
29.143 +
29.144 + public abstract SessionError printFileTPT(SymitarFile file, int queue);
29.145 +
29.146 + public abstract ErrorCheckResult errorCheckRepGen(String filename);
29.147 +
29.148 + public String getAixUsername() {
29.149 + return aixUsername;
29.150 + }
29.151 +
29.152 + public String getAixPassword() {
29.153 + return aixPassword;
29.154 + }
29.155 +
29.156 + public int getSym() {
29.157 + return sym;
29.158 + }
29.159 +
29.160 + public String getServer() {
29.161 + return server;
29.162 + }
29.163 +
29.164 + public String getUserID() {
29.165 + return userID;
29.166 + }
29.167 +
29.168 + public abstract ErrorCheckResult installRepgen(String f);
29.169 +}
30.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
30.2 +++ b/com/repdev/SyntaxHighlighter.java Fri Jun 01 18:46:53 2007 +0000
30.3 @@ -0,0 +1,154 @@
30.4 +package com.repdev;
30.5 +
30.6 +import org.eclipse.swt.*;
30.7 +import org.eclipse.swt.custom.*;
30.8 +import org.eclipse.swt.graphics.*;
30.9 +import org.eclipse.swt.widgets.*;
30.10 +
30.11 +import java.io.File;
30.12 +import java.io.FileReader;
30.13 +import java.io.BufferedReader;
30.14 +import java.io.IOException;
30.15 +import java.util.ArrayList;
30.16 +import java.util.HashSet;
30.17 +
30.18 +import com.repdev.DatabaseLayout.Record;
30.19 +import com.repdev.DatabaseLayout.Field;
30.20 +import com.repdev.RepgenParser.Variable;
30.21 +import com.repdev.RepgenParser.Token;
30.22 +
30.23 +public class SyntaxHighlighter implements ExtendedModifyListener, LineStyleListener {
30.24 + private static final String FONT_NAME = "Courier New";
30.25 + private static final int FONT_SIZE = 11;
30.26 +
30.27 + private static final RGB BACKGROUND = new RGB(255, 255, 255), FOREGROUND = new RGB(0, 0, 0);
30.28 + private static final EStyle NORMAL = new EStyle(null, null), COMMENTS = new EStyle(new RGB(127, 127, 127), null), VARIABLES = new EStyle(new RGB(0, 0, 0), null, SWT.BOLD), FUNCTIONS = new EStyle(new RGB(0, 0, 255), null, SWT.BOLD),
30.29 + KEYWORDS = new EStyle(new RGB(0, 0, 255), null), TYPE_CHAR = new EStyle(new RGB(255, 0, 0), null), TYPE_DATE = new EStyle(new RGB(255, 0, 0), null, SWT.BOLD), STRUCT1 = new EStyle(new RGB(255, 0, 255), null), STRUCT2 = new EStyle(
30.30 + new RGB(255, 128, 255), null), STRUCT1_INVALID = new EStyle(new RGB(255, 0, 255), new RGB(128, 0, 0), SWT.NONE), STRUCT2_INVALID = new EStyle(new RGB(255, 128, 255), new RGB(128, 0, 0), SWT.NONE);
30.31 +
30.32 + private static final Color FORECOLOR = new Color(Display.getCurrent(), FOREGROUND), BACKCOLOR = new Color(Display.getCurrent(), BACKGROUND);
30.33 + private static final Font FONT;
30.34 +
30.35 + private RepgenParser parser;
30.36 + private StyledText txt;
30.37 + private SymitarFile file;
30.38 + private int sym;
30.39 +
30.40 + static {
30.41 + Font cur = null;
30.42 +
30.43 + try {
30.44 + cur = new Font(Display.getCurrent(), FONT_NAME, FONT_SIZE, SWT.NORMAL);
30.45 + } catch (Exception e) {
30.46 + }
30.47 +
30.48 + FONT = cur;
30.49 + }
30.50 +
30.51 + public SyntaxHighlighter(RepgenParser parser) {
30.52 + this.parser = parser;
30.53 + this.txt = parser.getTxt();
30.54 + this.file = parser.getFile();
30.55 + this.sym = parser.getSym();
30.56 +
30.57 +
30.58 + txt.setForeground(FORECOLOR);
30.59 + txt.setBackground(BACKCOLOR);
30.60 + txt.addExtendedModifyListener(this);
30.61 + txt.addLineStyleListener(this);
30.62 + if (FONT != null)
30.63 + txt.setFont(FONT);
30.64 + }
30.65 +
30.66 + private static class EStyle {
30.67 + private Color fcolor = null, bgcolor = null;
30.68 + private int style;
30.69 +
30.70 + public EStyle(RGB frgb, RGB bgrgb, int style) {
30.71 + if (frgb != null)
30.72 + fcolor = new Color(Display.getCurrent(), frgb);
30.73 + if (bgrgb != null)
30.74 + bgcolor = new Color(Display.getCurrent(), bgrgb);
30.75 + this.style = style;
30.76 + }
30.77 +
30.78 + public EStyle(RGB frgb, RGB bgrgb) {
30.79 + this(frgb, bgrgb, SWT.NORMAL);
30.80 + }
30.81 +
30.82 + public StyleRange getRange(int start, int len) {
30.83 + return new StyleRange(start, len, fcolor, bgcolor, style);
30.84 + }
30.85 + }
30.86 +
30.87 + public void modifyText(ExtendedModifyEvent e) {
30.88 + parser.textModified(e.start, e.length, e.replacedText);
30.89 + }
30.90 +
30.91 + public StyleRange getStyle(Token tok) {
30.92 + boolean isVar = false;
30.93 +
30.94 + if (tok.getCDepth() != 0)
30.95 + return COMMENTS.getRange(tok.getStart(), tok.length());
30.96 + else if (tok.getInString())
30.97 + return TYPE_CHAR.getRange(tok.getStart(), tok.length());
30.98 + else if (tok.getInDate())
30.99 + return TYPE_DATE.getRange(tok.getStart(), tok.length());
30.100 + else if (tok.getAfter() != null && tok.getAfter().getStr().equals(":")) {
30.101 + if (tok.dbRecordValid())
30.102 + return STRUCT1.getRange(tok.getStart(), tok.length());
30.103 + else
30.104 + return STRUCT1_INVALID.getRange(tok.getStart(), tok.length());
30.105 + } else if (tok.getBefore() != null && tok.getBefore().getStr().equals(":")) {
30.106 + if (tok.dbFieldValid(RepgenParser.getDb().getTreeRecords()))
30.107 + return STRUCT2.getRange(tok.getStart(), tok.length());
30.108 + else
30.109 + return STRUCT2_INVALID.getRange(tok.getStart(), tok.length());
30.110 + } else if (RepgenParser.getFunctions().contains(tok.getStr()) && tok.getAfter() != null && tok.getAfter().getStr().equals("("))
30.111 + return FUNCTIONS.getRange(tok.getStart(), tok.length());
30.112 + else if (RepgenParser.getKeywords().contains(tok.getStr()))
30.113 + return KEYWORDS.getRange(tok.getStart(), tok.length());
30.114 + else if (RepgenParser.getSpecialvars().contains(tok.getStr()))
30.115 + return VARIABLES.getRange(tok.getStart(), tok.length());
30.116 +
30.117 + for (Variable var : parser.getLvars()) {
30.118 + if (var.getName().equals(tok.getStr()))
30.119 + isVar = true;
30.120 + }
30.121 +
30.122 + if (isVar)
30.123 + return VARIABLES.getRange(tok.getStart(), tok.length());
30.124 + else
30.125 + return NORMAL.getRange(tok.getStart(), tok.length());
30.126 +
30.127 + }
30.128 +
30.129 +
30.130 + public void lineGetStyle(LineStyleEvent event) {
30.131 + ArrayList<Token> ltokens = parser.getLtokens();
30.132 +
30.133 + int line = txt.getLineAtOffset(event.lineOffset);
30.134 +
30.135 + int ftoken;
30.136 + for (ftoken = 0; ftoken < ltokens.size(); ftoken++)
30.137 + if (ltokens.get(ftoken).getEnd() >= event.lineOffset)
30.138 + break;
30.139 +
30.140 + int ltoken = ltokens.size();
30.141 + if (line + 1 < txt.getLineCount()) {
30.142 + int pos = txt.getOffsetAtLine(line + 1);
30.143 +
30.144 + for (ltoken = ftoken; ltoken < ltokens.size(); ltoken++)
30.145 + if (ltokens.get(ltoken).getStart() > pos)
30.146 + break;
30.147 + }
30.148 +
30.149 + StyleRange[] result = new StyleRange[ltoken - ftoken];
30.150 + for (int i = ftoken; i < ltoken; i++)
30.151 + result[i - ftoken] = getStyle(ltokens.get(i));
30.152 +
30.153 + event.styles = result;
30.154 +
30.155 + }
30.156 +
30.157 +}
31.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
31.2 +++ b/com/repdev/TelnetProtocolHandler.java Fri Jun 01 18:46:53 2007 +0000
31.3 @@ -0,0 +1,689 @@
31.4 +package com.repdev;
31.5 +
31.6 +import java.io.IOException;
31.7 +import java.awt.Dimension;
31.8 +
31.9 +import java.lang.Byte;
31.10 +
31.11 +/**
31.12 + * This is a telnet protocol handler. The handler needs implementations for
31.13 + * several methods to handle the telnet options and to be able to read and write
31.14 + * the buffer.
31.15 + * <P>
31.16 + * <B>Maintainer:</B> Marcus Meissner
31.17 + *
31.18 + * @version $Id: TelnetProtocolHandler.java 503 2005-10-24 07:34:13Z marcus $
31.19 + * @author Matthias L. Jugel, Marcus Meissner
31.20 + */
31.21 +public abstract class TelnetProtocolHandler {
31.22 + /** contains the current revision id */
31.23 + public final static String ID = "$Id: TelnetProtocolHandler.java 503 2005-10-24 07:34:13Z marcus $";
31.24 +
31.25 + /** debug level */
31.26 + private final static int debug = 0;
31.27 +
31.28 + /** temporary buffer for data-telnetstuff-data transformation */
31.29 + private byte[] tempbuf = new byte[0];
31.30 +
31.31 + /** the data sent on pressing <RETURN> \n */
31.32 + private byte[] crlf = new byte[2];
31.33 + /** the data sent on pressing <LineFeed> \r */
31.34 + private byte[] cr = new byte[2];
31.35 +
31.36 + /**
31.37 + * Create a new telnet protocol handler.
31.38 + */
31.39 + public TelnetProtocolHandler() {
31.40 + reset();
31.41 +
31.42 + crlf[0] = 13;
31.43 + crlf[1] = 10;
31.44 + cr[0] = 13;
31.45 + cr[1] = 0;
31.46 + }
31.47 +
31.48 + /**
31.49 + * Get the current terminal type for TTYPE telnet option.
31.50 + *
31.51 + * @return the string id of the terminal
31.52 + */
31.53 + protected abstract String getTerminalType();
31.54 +
31.55 + /**
31.56 + * Get the current window size of the terminal for the NAWS telnet option.
31.57 + *
31.58 + * @return the size of the terminal as Dimension
31.59 + */
31.60 + protected abstract Dimension getWindowSize();
31.61 +
31.62 + /**
31.63 + * Set the local echo option of telnet.
31.64 + *
31.65 + * @param echo
31.66 + * true for local echo, false for no local echo
31.67 + */
31.68 + protected abstract void setLocalEcho(boolean echo);
31.69 +
31.70 + /**
31.71 + * Generate an EOR (end of record) request. For use by prompt displaying.
31.72 + */
31.73 + protected abstract void notifyEndOfRecord();
31.74 +
31.75 + /**
31.76 + * Send data to the remote host.
31.77 + *
31.78 + * @param b
31.79 + * array of bytes to send
31.80 + */
31.81 + protected abstract void write(byte[] b) throws IOException;
31.82 +
31.83 + /**
31.84 + * Send one byte to the remote host.
31.85 + *
31.86 + * @param b
31.87 + * the byte to be sent
31.88 + * @see #write(byte[] b)
31.89 + */
31.90 + private static byte[] one = new byte[1];
31.91 +
31.92 + private void write(byte b) throws IOException {
31.93 + one[0] = b;
31.94 + write(one);
31.95 + }
31.96 +
31.97 + /**
31.98 + * Reset the protocol handler. This may be necessary after the connection
31.99 + * was closed or some other problem occured.
31.100 + */
31.101 + public void reset() {
31.102 + neg_state = 0;
31.103 + receivedDX = new byte[256];
31.104 + sentDX = new byte[256];
31.105 + receivedWX = new byte[256];
31.106 + sentWX = new byte[256];
31.107 + }
31.108 +
31.109 + // ===================================================================
31.110 + // the actual negotiation handling for the telnet protocol follows:
31.111 + // ===================================================================
31.112 +
31.113 + /** state variable for telnet negotiation reader */
31.114 + private byte neg_state = 0;
31.115 +
31.116 + /** constants for the negotiation state */
31.117 + private final static byte STATE_DATA = 0;
31.118 + private final static byte STATE_IAC = 1;
31.119 + private final static byte STATE_IACSB = 2;
31.120 + private final static byte STATE_IACWILL = 3;
31.121 + private final static byte STATE_IACDO = 4;
31.122 + private final static byte STATE_IACWONT = 5;
31.123 + private final static byte STATE_IACDONT = 6;
31.124 + private final static byte STATE_IACSBIAC = 7;
31.125 + private final static byte STATE_IACSBDATA = 8;
31.126 + private final static byte STATE_IACSBDATAIAC = 9;
31.127 +
31.128 + /** What IAC SB <xx> we are handling right now */
31.129 + private byte current_sb;
31.130 +
31.131 + /** current SB negotiation buffer */
31.132 + private byte[] sbbuf;
31.133 +
31.134 + /** IAC - init sequence for telnet negotiation. */
31.135 + private final static byte IAC = (byte) 255;
31.136 + /** [IAC] End Of Record */
31.137 + private final static byte EOR = (byte) 239;
31.138 + /** [IAC] WILL */
31.139 + private final static byte WILL = (byte) 251;
31.140 + /** [IAC] WONT */
31.141 + private final static byte WONT = (byte) 252;
31.142 + /** [IAC] DO */
31.143 + private final static byte DO = (byte) 253;
31.144 + /** [IAC] DONT */
31.145 + private final static byte DONT = (byte) 254;
31.146 + /** [IAC] Sub Begin */
31.147 + private final static byte SB = (byte) 250;
31.148 + /** [IAC] Sub End */
31.149 + private final static byte SE = (byte) 240;
31.150 + /** Telnet option: binary mode */
31.151 + private final static byte TELOPT_BINARY = (byte) 0; /* binary mode */
31.152 + /** Telnet option: echo text */
31.153 + private final static byte TELOPT_ECHO = (byte) 1; /* echo on/off */
31.154 + /** Telnet option: sga */
31.155 + private final static byte TELOPT_SGA = (byte) 3; /* supress go ahead */
31.156 + /** Telnet option: End Of Record */
31.157 + private final static byte TELOPT_EOR = (byte) 25; /* end of record */
31.158 + /** Telnet option: Negotiate About Window Size */
31.159 + private final static byte TELOPT_NAWS = (byte) 31; /* NA-WindowSize */
31.160 + /** Telnet option: Terminal Type */
31.161 + private final static byte TELOPT_TTYPE = (byte) 24; /* terminal type */
31.162 +
31.163 + private final static byte[] IACWILL = { IAC, WILL };
31.164 + private final static byte[] IACWONT = { IAC, WONT };
31.165 + private final static byte[] IACDO = { IAC, DO };
31.166 + private final static byte[] IACDONT = { IAC, DONT };
31.167 + private final static byte[] IACSB = { IAC, SB };
31.168 + private final static byte[] IACSE = { IAC, SE };
31.169 +
31.170 + /** Telnet option qualifier 'IS' */
31.171 + private final static byte TELQUAL_IS = (byte) 0;
31.172 + /** Telnet option qualifier 'SEND' */
31.173 + private final static byte TELQUAL_SEND = (byte) 1;
31.174 +
31.175 + /** What IAC DO(NT) request do we have received already ? */
31.176 + private byte[] receivedDX;
31.177 + /** What IAC WILL/WONT request do we have received already ? */
31.178 + private byte[] receivedWX;
31.179 + /** What IAC DO/DONT request do we have sent already ? */
31.180 + private byte[] sentDX;
31.181 + /** What IAC WILL/WONT request do we have sent already ? */
31.182 + private byte[] sentWX;
31.183 +
31.184 + /**
31.185 + * Send a Telnet Escape character (IAC <code>)
31.186 + */
31.187 + public void sendTelnetControl(byte code) throws IOException {
31.188 + byte[] b = new byte[2];
31.189 +
31.190 + b[0] = IAC;
31.191 + b[1] = code;
31.192 + write(b);
31.193 + }
31.194 +
31.195 + /**
31.196 + * Send the new Window Size (via NAWS)
31.197 + */
31.198 + public void setWindowSize(int columns, int rows) throws IOException {
31.199 + if (debug > 2)
31.200 + System.err.println("sending NAWS");
31.201 +
31.202 + if (receivedDX[TELOPT_NAWS] != DO) {
31.203 + System.err.println("not allowed to send NAWS? (DONT NAWS)");
31.204 + return;
31.205 + }
31.206 + write(IAC);
31.207 + write(SB);
31.208 + write(TELOPT_NAWS);
31.209 + write((byte) (columns >> 8));
31.210 + write((byte) (columns & 0xff));
31.211 + write((byte) (rows >> 8));
31.212 + write((byte) (rows & 0xff));
31.213 + write(IAC);
31.214 + write(SE);
31.215 + }
31.216 +
31.217 + /**
31.218 + * Handle an incoming IAC SB <type> <bytes> IAC SE
31.219 + *
31.220 + * @param type
31.221 + * type of SB
31.222 + * @param sbata
31.223 + * byte array as <bytes>
31.224 + */
31.225 + private void handle_sb(byte type, byte[] sbdata) throws IOException {
31.226 + if (debug > 1)
31.227 + System.err.println("TelnetIO.handle_sb(" + type + ")");
31.228 + switch (type) {
31.229 + case TELOPT_TTYPE:
31.230 + if (sbdata.length > 0 && sbdata[0] == TELQUAL_SEND) {
31.231 + write(IACSB);
31.232 + write(TELOPT_TTYPE);
31.233 + write(TELQUAL_IS);
31.234 + /*
31.235 + * FIXME: need more logic here if we use more than one terminal
31.236 + * type
31.237 + */
31.238 + String ttype = getTerminalType();
31.239 + if (ttype == null)
31.240 + ttype = "dumb";
31.241 + write(ttype.getBytes());
31.242 + write(IACSE);
31.243 + }
31.244 +
31.245 + }
31.246 + }
31.247 +
31.248 + /**
31.249 + * Do not send any notifications at startup. We do not know, whether the
31.250 + * remote client understands telnet protocol handling, so we are silent.
31.251 + * (This used to send IAC WILL SGA, but this is false for a compliant
31.252 + * client.)
31.253 + */
31.254 + public void startup() throws IOException {
31.255 + }
31.256 +
31.257 + /**
31.258 + * Transpose special telnet codes like 0xff or newlines to values that are
31.259 + * compliant to the protocol. This method will also send the buffer
31.260 + * immediately after transposing the data.
31.261 + *
31.262 + * @param buf
31.263 + * the data buffer to be sent
31.264 + */
31.265 + public void transpose(byte[] buf) throws IOException {
31.266 + int i;
31.267 +
31.268 + byte[] nbuf, xbuf;
31.269 + int nbufptr = 0;
31.270 + nbuf = new byte[buf.length * 2]; // FIXME: buffer overflows possible
31.271 +
31.272 + for (i = 0; i < buf.length; i++) {
31.273 + switch (buf[i]) {
31.274 + // Escape IAC twice in stream ... to be telnet protocol compliant
31.275 + // this is there in binary and non-binary mode.
31.276 + case IAC:
31.277 + nbuf[nbufptr++] = IAC;
31.278 + nbuf[nbufptr++] = IAC;
31.279 + break;
31.280 + // We need to heed RFC 854. LF (\n) is 10, CR (\r) is 13
31.281 + // we assume that the Terminal sends \n for lf+cr and \r for just cr
31.282 + // linefeed+carriage return is CR LF */
31.283 + case 10: // \n
31.284 + if (receivedDX[TELOPT_BINARY + 128] != DO) {
31.285 + while (nbuf.length - nbufptr < crlf.length) {
31.286 + xbuf = new byte[nbuf.length * 2];
31.287 + System.arraycopy(nbuf, 0, xbuf, 0, nbufptr);
31.288 + nbuf = xbuf;
31.289 + }
31.290 + for (int j = 0; j < crlf.length; j++)
31.291 + nbuf[nbufptr++] = crlf[j];
31.292 + break;
31.293 + } else {
31.294 + // copy verbatim in binary mode.
31.295 + nbuf[nbufptr++] = buf[i];
31.296 + }
31.297 + break;
31.298 + // carriage return is CR NUL */
31.299 + case 13: // \r
31.300 + if (receivedDX[TELOPT_BINARY + 128] != DO) {
31.301 + while (nbuf.length - nbufptr < cr.length) {
31.302 + xbuf = new byte[nbuf.length * 2];
31.303 + System.arraycopy(nbuf, 0, xbuf, 0, nbufptr);
31.304 + nbuf = xbuf;
31.305 + }
31.306 + for (int j = 0; j < cr.length; j++)
31.307 + nbuf[nbufptr++] = cr[j];
31.308 + } else {
31.309 + // copy verbatim in binary mode.
31.310 + nbuf[nbufptr++] = buf[i];
31.311 + }
31.312 + break;
31.313 + // all other characters are just copied
31.314 + default:
31.315 + nbuf[nbufptr++] = buf[i];
31.316 + break;
31.317 + }
31.318 + }
31.319 + xbuf = new byte[nbufptr];
31.320 + System.arraycopy(nbuf, 0, xbuf, 0, nbufptr);
31.321 + write(xbuf);
31.322 + }
31.323 +
31.324 + public void setCRLF(String xcrlf) {
31.325 + crlf = xcrlf.getBytes();
31.326 + }
31.327 +
31.328 + public void setCR(String xcr) {
31.329 + cr = xcr.getBytes();
31.330 + }
31.331 +
31.332 + /**
31.333 + * Handle telnet protocol negotiation. The buffer will be parsed and
31.334 + * necessary actions are taken according to the telnet protocol. See <A
31.335 + * HREF="RFC-Telnet-URL">RFC-Telnet</A>
31.336 + *
31.337 + * @param nbuf
31.338 + * the byte buffer put out after negotiation
31.339 + * @return number of bytes processed, 0 for none, and -1 for end of buffer.
31.340 + */
31.341 + public int negotiate(byte nbuf[]) throws IOException {
31.342 + int count = tempbuf.length;
31.343 + byte[] buf = tempbuf;
31.344 + byte sendbuf[] = new byte[3];
31.345 + byte b, reply;
31.346 + int boffset = 0, noffset = 0;
31.347 + boolean dobreak = false;
31.348 +
31.349 + if (count == 0) // buffer is empty.
31.350 + return -1;
31.351 +
31.352 + while (!dobreak && (boffset < count) && (noffset < nbuf.length)) {
31.353 + b = buf[boffset++];
31.354 + // of course, byte is a signed entity (-128 -> 127)
31.355 + // but apparently the SGI Netscape 3.0 doesn't seem
31.356 + // to care and provides happily values up to 255
31.357 + if (b >= 128)
31.358 + b = (byte) ((int) b - 256);
31.359 + if (debug > 2) {
31.360 + Byte B = new Byte(b);
31.361 + System.err.print("byte: " + B.intValue() + " ");
31.362 + }
31.363 + switch (neg_state) {
31.364 + case STATE_DATA:
31.365 + if (b == IAC) {
31.366 + neg_state = STATE_IAC;
31.367 + dobreak = true; // leave the loop so we can sync.
31.368 + } else
31.369 + nbuf[noffset++] = b;
31.370 + break;
31.371 + case STATE_IAC:
31.372 + switch (b) {
31.373 + case IAC:
31.374 + if (debug > 2)
31.375 + System.err.print("IAC ");
31.376 + neg_state = STATE_DATA;
31.377 + nbuf[noffset++] = IAC;
31.378 + break;
31.379 + case WILL:
31.380 + if (debug > 2)
31.381 + System.err.print("WILL ");
31.382 + neg_state = STATE_IACWILL;
31.383 + break;
31.384 + case WONT:
31.385 + if (debug > 2)
31.386 + System.err.print("WONT ");
31.387 + neg_state = STATE_IACWONT;
31.388 + break;
31.389 + case DONT:
31.390 + if (debug > 2)
31.391 + System.err.print("DONT ");
31.392 + neg_state = STATE_IACDONT;
31.393 + break;
31.394 + case DO:
31.395 + if (debug > 2)
31.396 + System.err.print("DO ");
31.397 + neg_state = STATE_IACDO;
31.398 + break;
31.399 + case EOR:
31.400 + if (debug > 1)
31.401 + System.err.print("EOR ");
31.402 + notifyEndOfRecord();
31.403 + dobreak = true; // leave the loop so we can sync.
31.404 + neg_state = STATE_DATA;
31.405 + break;
31.406 + case SB:
31.407 + if (debug > 2)
31.408 + System.err.print("SB ");
31.409 + neg_state = STATE_IACSB;
31.410 + break;
31.411 + default:
31.412 + if (debug > 2)
31.413 + System.err.print("<UNKNOWN " + b + " > ");
31.414 + neg_state = STATE_DATA;
31.415 + break;
31.416 + }
31.417 + break;
31.418 + case STATE_IACWILL:
31.419 + switch (b) {
31.420 + case TELOPT_ECHO:
31.421 + if (debug > 2)
31.422 + System.err.println("ECHO");
31.423 + reply = DO;
31.424 + setLocalEcho(false);
31.425 + break;
31.426 + case TELOPT_SGA:
31.427 + if (debug > 2)
31.428 + System.err.println("SGA");
31.429 + reply = DO;
31.430 + break;
31.431 + case TELOPT_EOR:
31.432 + if (debug > 2)
31.433 + System.err.println("EOR");
31.434 + reply = DO;
31.435 + break;
31.436 + case TELOPT_BINARY:
31.437 + if (debug > 2)
31.438 + System.err.println("BINARY");
31.439 + reply = DO;
31.440 + break;
31.441 + default:
31.442 + if (debug > 2)
31.443 + System.err.println("<UNKNOWN," + b + ">");
31.444 + reply = DONT;
31.445 + break;
31.446 + }
31.447 + if (debug > 1)
31.448 + System.err.println("<" + b + ", WILL =" + WILL + ">");
31.449 + if (reply != sentDX[b + 128] || WILL != receivedWX[b + 128]) {
31.450 + sendbuf[0] = IAC;
31.451 + sendbuf[1] = reply;
31.452 + sendbuf[2] = b;
31.453 + write(sendbuf);
31.454 + sentDX[b + 128] = reply;
31.455 + receivedWX[b + 128] = WILL;
31.456 + }
31.457 + neg_state = STATE_DATA;
31.458 + break;
31.459 + case STATE_IACWONT:
31.460 + switch (b) {
31.461 + case TELOPT_ECHO:
31.462 + if (debug > 2)
31.463 + System.err.println("ECHO");
31.464 + setLocalEcho(true);
31.465 + reply = DONT;
31.466 + break;
31.467 + case TELOPT_SGA:
31.468 + if (debug > 2)
31.469 + System.err.println("SGA");
31.470 + reply = DONT;
31.471 + break;
31.472 + case TELOPT_EOR:
31.473 + if (debug > 2)
31.474 + System.err.println("EOR");
31.475 + reply = DONT;
31.476 + break;
31.477 + case TELOPT_BINARY:
31.478 + if (debug > 2)
31.479 + System.err.println("BINARY");
31.480 + reply = DONT;
31.481 + break;
31.482 + default:
31.483 + if (debug > 2)
31.484 + System.err.println("<UNKNOWN," + b + ">");
31.485 + reply = DONT;
31.486 + break;
31.487 + }
31.488 + if (reply != sentDX[b + 128] || WONT != receivedWX[b + 128]) {
31.489 + sendbuf[0] = IAC;
31.490 + sendbuf[1] = reply;
31.491 + sendbuf[2] = b;
31.492 + write(sendbuf);
31.493 + sentDX[b + 128] = reply;
31.494 + receivedWX[b + 128] = WILL;
31.495 + }
31.496 + neg_state = STATE_DATA;
31.497 + break;
31.498 + case STATE_IACDO:
31.499 + switch (b) {
31.500 + case TELOPT_ECHO:
31.501 + if (debug > 2)
31.502 + System.err.println("ECHO");
31.503 + reply = WILL;
31.504 + setLocalEcho(true);
31.505 + break;
31.506 + case TELOPT_SGA:
31.507 + if (debug > 2)
31.508 + System.err.println("SGA");
31.509 + reply = WILL;
31.510 + break;
31.511 + case TELOPT_TTYPE:
31.512 + if (debug > 2)
31.513 + System.err.println("TTYPE");
31.514 + reply = WILL;
31.515 + break;
31.516 + case TELOPT_BINARY:
31.517 + if (debug > 2)
31.518 + System.err.println("BINARY");
31.519 + reply = WILL;
31.520 + break;
31.521 + case TELOPT_NAWS:
31.522 + if (debug > 2)
31.523 + System.err.println("NAWS");
31.524 + Dimension size = getWindowSize();
31.525 + receivedDX[b] = DO;
31.526 + if (size == null) {
31.527 + // this shouldn't happen
31.528 + write(IAC);
31.529 + write(WONT);
31.530 + write(TELOPT_NAWS);
31.531 + reply = WONT;
31.532 + sentWX[b] = WONT;
31.533 + break;
31.534 + }
31.535 + reply = WILL;
31.536 + sentWX[b] = WILL;
31.537 + sendbuf[0] = IAC;
31.538 + sendbuf[1] = WILL;
31.539 + sendbuf[2] = TELOPT_NAWS;
31.540 + write(sendbuf);
31.541 + write(IAC);
31.542 + write(SB);
31.543 + write(TELOPT_NAWS);
31.544 + write((byte) (size.width >> 8));
31.545 + write((byte) (size.width & 0xff));
31.546 + write((byte) (size.height >> 8));
31.547 + write((byte) (size.height & 0xff));
31.548 + write(IAC);
31.549 + write(SE);
31.550 + break;
31.551 + default:
31.552 + if (debug > 2)
31.553 + System.err.println("<UNKNOWN," + b + ">");
31.554 + reply = WONT;
31.555 + break;
31.556 + }
31.557 + if (reply != sentWX[128 + b] || DO != receivedDX[128 + b]) {
31.558 + sendbuf[0] = IAC;
31.559 + sendbuf[1] = reply;
31.560 + sendbuf[2] = b;
31.561 + write(sendbuf);
31.562 + sentWX[b + 128] = reply;
31.563 + receivedDX[b + 128] = DO;
31.564 + }
31.565 + neg_state = STATE_DATA;
31.566 + break;
31.567 + case STATE_IACDONT:
31.568 + switch (b) {
31.569 + case TELOPT_ECHO:
31.570 + if (debug > 2)
31.571 + System.err.println("ECHO");
31.572 + reply = WONT;
31.573 + setLocalEcho(false);
31.574 + break;
31.575 + case TELOPT_SGA:
31.576 + if (debug > 2)
31.577 + System.err.println("SGA");
31.578 + reply = WONT;
31.579 + break;
31.580 + case TELOPT_NAWS:
31.581 + if (debug > 2)
31.582 + System.err.println("NAWS");
31.583 + reply = WONT;
31.584 + break;
31.585 + case TELOPT_BINARY:
31.586 + if (debug > 2)
31.587 + System.err.println("BINARY");
31.588 + reply = WONT;
31.589 + break;
31.590 + default:
31.591 + if (debug > 2)
31.592 + System.err.println("<UNKNOWN," + b + ">");
31.593 + reply = WONT;
31.594 + break;
31.595 + }
31.596 + if (reply != sentWX[b + 128] || DONT != receivedDX[b + 128]) {
31.597 + write(IAC);
31.598 + write(reply);
31.599 + write(b);
31.600 + sentWX[b + 128] = reply;
31.601 + receivedDX[b + 128] = DONT;
31.602 + }
31.603 + neg_state = STATE_DATA;
31.604 + break;
31.605 + case STATE_IACSBIAC:
31.606 + if (debug > 2)
31.607 + System.err.println("" + b + " ");
31.608 + if (b == IAC) {
31.609 + sbbuf = new byte[0];
31.610 + current_sb = b;
31.611 + neg_state = STATE_IACSBDATA;
31.612 + } else {
31.613 + System.err.println("(bad) " + b + " ");
31.614 + neg_state = STATE_DATA;
31.615 + }
31.616 + break;
31.617 + case STATE_IACSB:
31.618 + if (debug > 2)
31.619 + System.err.println("" + b + " ");
31.620 + switch (b) {
31.621 + case IAC:
31.622 + neg_state = STATE_IACSBIAC;
31.623 + break;
31.624 + default:
31.625 + current_sb = b;
31.626 + sbbuf = new byte[0];
31.627 + neg_state = STATE_IACSBDATA;
31.628 + break;
31.629 + }
31.630 + break;
31.631 + case STATE_IACSBDATA:
31.632 + if (debug > 2)
31.633 + System.err.println("" + b + " ");
31.634 + switch (b) {
31.635 + case IAC:
31.636 + neg_state = STATE_IACSBDATAIAC;
31.637 + break;
31.638 + default:
31.639 + byte[] xsb = new byte[sbbuf.length + 1];
31.640 + System.arraycopy(sbbuf, 0, xsb, 0, sbbuf.length);
31.641 + sbbuf = xsb;
31.642 + sbbuf[sbbuf.length - 1] = b;
31.643 + break;
31.644 + }
31.645 + break;
31.646 + case STATE_IACSBDATAIAC:
31.647 + if (debug > 2)
31.648 + System.err.println("" + b + " ");
31.649 + switch (b) {
31.650 + case IAC:
31.651 + neg_state = STATE_IACSBDATA;
31.652 + byte[] xsb = new byte[sbbuf.length + 1];
31.653 + System.arraycopy(sbbuf, 0, xsb, 0, sbbuf.length);
31.654 + sbbuf = xsb;
31.655 + sbbuf[sbbuf.length - 1] = IAC;
31.656 + break;
31.657 + case SE:
31.658 + handle_sb(current_sb, sbbuf);
31.659 + current_sb = 0;
31.660 + neg_state = STATE_DATA;
31.661 + break;
31.662 + case SB:
31.663 + handle_sb(current_sb, sbbuf);
31.664 + neg_state = STATE_IACSB;
31.665 + break;
31.666 + default:
31.667 + neg_state = STATE_DATA;
31.668 + break;
31.669 + }
31.670 + break;
31.671 + default:
31.672 + if (debug > 1)
31.673 + System.err.println("This should not happen: " + neg_state + " ");
31.674 + neg_state = STATE_DATA;
31.675 + break;
31.676 + }
31.677 + }
31.678 + // shrink tempbuf to new processed size.
31.679 + byte[] xb = new byte[count - boffset];
31.680 + System.arraycopy(tempbuf, boffset, xb, 0, count - boffset);
31.681 + tempbuf = xb;
31.682 + return noffset;
31.683 + }
31.684 +
31.685 + public void inputfeed(byte[] b, int len) {
31.686 + byte[] xb = new byte[tempbuf.length + len];
31.687 +
31.688 + System.arraycopy(tempbuf, 0, xb, 0, tempbuf.length);
31.689 + System.arraycopy(b, 0, xb, tempbuf.length, len);
31.690 + tempbuf = xb;
31.691 + }
31.692 +}
32.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
32.2 +++ b/com/repdev/TelnetSymitarSession.java Fri Jun 01 18:46:53 2007 +0000
32.3 @@ -0,0 +1,492 @@
32.4 +package com.repdev;
32.5 +
32.6 +import java.io.*;
32.7 +import java.util.ArrayList;
32.8 +
32.9 +public class TelnetSymitarSession extends SymitarSession {
32.10 + TelnetWrapper telnet = new TelnetWrapper();
32.11 +
32.12 + private enum State {
32.13 + MAIN_MENU, MANAGEMENT_MENU, PC_TRANSFER_MENU,
32.14 + }
32.15 +
32.16 + private State state = null;
32.17 + boolean connected = false;
32.18 +
32.19 + @Override
32.20 + public int acceptRepGenQuery(String value) {
32.21 + // TODO Auto-generated method stub
32.22 + return 0;
32.23 + }
32.24 +
32.25 + private void log(String data) {
32.26 + System.out.println(data);
32.27 + }
32.28 +
32.29 + @Override
32.30 + public SessionError connect(String server, String aixUsername, String aixPassword, int sym, String userID) {
32.31 + String temp;
32.32 +
32.33 + this.server = server;
32.34 + this.sym = sym;
32.35 + this.aixUsername = aixUsername;
32.36 + this.aixPassword = aixPassword;
32.37 + this.userID = userID;
32.38 +
32.39 + connected = true;
32.40 +
32.41 + try {
32.42 +
32.43 + telnet.connect(server, 23);
32.44 + telnet.login(aixUsername, aixPassword);
32.45 + temp = telnet.waitfor("$", "invalid login");
32.46 +
32.47 + log(temp);
32.48 +
32.49 + if (temp.indexOf("invalid login") != -1) {
32.50 + return SessionError.AIX_LOGIN_WRONG;
32.51 + }
32.52 +
32.53 + log(telnet.sendLine("sym " + sym));
32.54 +
32.55 + // Wait for the user ID prompt
32.56 + temp = telnet.waitfor("UserId :", ")");
32.57 + if (temp.indexOf(")") != -1) {
32.58 + return SessionError.CONSOLE_BLOCKED;
32.59 + }
32.60 +
32.61 + log(telnet.sendLine(userID));
32.62 +
32.63 + // Get through Console Dedication, and application prompt and to the
32.64 + // main menu
32.65 + temp = telnet.waitfor(":");
32.66 + log(temp);
32.67 +
32.68 + if (temp.toLowerCase().indexOf("userid") != -1) {
32.69 + return SessionError.USERID_INVALID;
32.70 + }
32.71 +
32.72 + log(telnet.sendLine("Y"));
32.73 +
32.74 + temp = telnet.waitfor(":");
32.75 +
32.76 + log(temp);
32.77 +
32.78 + if (temp.indexOf("Application") != -1) {
32.79 + telnet.sendLine("");
32.80 + telnet.waitfor(":");
32.81 + }
32.82 +
32.83 + state = State.MAIN_MENU;
32.84 +
32.85 + } catch (Exception e) {
32.86 + return SessionError.IO_ERROR;
32.87 + }
32.88 +
32.89 + return SessionError.NONE;
32.90 + }
32.91 +
32.92 + @Override
32.93 + public SessionError disconnect() {
32.94 + try {
32.95 + telnet.disconnect();
32.96 + } catch (Exception e) {
32.97 + }
32.98 +
32.99 + connected = false;
32.100 +
32.101 + return null;
32.102 + }
32.103 +
32.104 + @Override
32.105 + public int getBatchOutputSequenceNumber() {
32.106 + // TODO Auto-generated method stub
32.107 + return 0;
32.108 + }
32.109 +
32.110 + private void getToState(State newState) throws IOException {
32.111 + if (state == State.MAIN_MENU) {
32.112 + if (newState == State.PC_TRANSFER_MENU) {
32.113 + // Management
32.114 + log(telnet.sendLine("8"));
32.115 + log(telnet.waitfor(":"));
32.116 +
32.117 + // PC Transfer
32.118 + log(telnet.sendLine("2"));
32.119 + log(telnet.waitfor(":"));
32.120 + state = State.PC_TRANSFER_MENU;
32.121 + }
32.122 +
32.123 + if (newState == State.MANAGEMENT_MENU) {
32.124 + log(telnet.sendLine("8"));
32.125 + log(telnet.waitfor(":"));
32.126 + state = State.MANAGEMENT_MENU;
32.127 + }
32.128 + }
32.129 +
32.130 + if (state == State.PC_TRANSFER_MENU) {
32.131 + if (newState == State.MAIN_MENU) {
32.132 + log(telnet.send(Character.toString((char) 27)));
32.133 + log(telnet.waitfor(":"));
32.134 +
32.135 + log(telnet.send(Character.toString((char) 27)));
32.136 + log(telnet.waitfor(":"));
32.137 +
32.138 + state = State.MAIN_MENU;
32.139 + }
32.140 +
32.141 + if (newState == State.MANAGEMENT_MENU) {
32.142 + getToState(State.MAIN_MENU);
32.143 + getToState(State.MANAGEMENT_MENU);
32.144 + }
32.145 + }
32.146 +
32.147 + if (state == State.MANAGEMENT_MENU) {
32.148 + if (newState == State.PC_TRANSFER_MENU) {
32.149 + // PC Transfer
32.150 + log(telnet.sendLine("2"));
32.151 + log(telnet.waitfor(":"));
32.152 + state = State.PC_TRANSFER_MENU;
32.153 + }
32.154 +
32.155 + if (newState == State.MAIN_MENU) {
32.156 + log(telnet.send(Character.toString((char) 27)));
32.157 + log(telnet.waitfor(":"));
32.158 + state = State.MAIN_MENU;
32.159 + }
32.160 + }
32.161 + }
32.162 +
32.163 + @Override
32.164 + public String getFile(SymitarFile file) {
32.165 + String data = "", temp = "";
32.166 + StringBuilder stringBuilder = new StringBuilder();
32.167 +
32.168 + if (!connected || file == null || file.getName() == null || file.getName().trim().equals(""))
32.169 + return null;
32.170 +
32.171 + System.out.println("Requesting File: " + file.getName() + " from Sym " + sym);
32.172 +
32.173 + try {
32.174 + getToState(State.PC_TRANSFER_MENU);
32.175 +
32.176 + // Select which type of upload
32.177 + if (file.getType() == FileType.REPGEN) {
32.178 + log(telnet.sendLine("3"));
32.179 + log(telnet.waitfor(":"));
32.180 + } else if (file.getType() == FileType.LETTER) {
32.181 + log(telnet.sendLine("1"));
32.182 + log(telnet.waitfor(":"));
32.183 + } else if (file.getType() == FileType.HELP) {
32.184 + log(telnet.sendLine("5"));
32.185 + log(telnet.waitfor(":"));
32.186 + }
32.187 +
32.188 + log(telnet.sendLine(file.getName()));
32.189 + temp = telnet.waitfor(":");
32.190 +
32.191 + log(temp);
32.192 +
32.193 + if (temp.indexOf("No such file") != -1) {
32.194 + log(telnet.send(Character.toString((char) 27)));
32.195 + log(telnet.waitfor(":"));
32.196 +
32.197 + return null;
32.198 + }
32.199 +
32.200 + log(telnet.sendLine("2"));
32.201 + log(telnet.waitfor(":"));
32.202 +
32.203 + log(telnet.sendLine(""));
32.204 + log(telnet.waitfor(":"));
32.205 +
32.206 + log(telnet.sendLine(""));
32.207 + log(telnet.waitfor(":"));
32.208 +
32.209 + // log(telnet.sendLine(FTPManager.UPLOADUSER));
32.210 + log(telnet.waitfor(":"));
32.211 +
32.212 + // log(telnet.sendLine(FTPManager.UPLOADPASS));
32.213 + log(telnet.waitfor(":"));
32.214 +
32.215 + log(telnet.sendLine("1"));
32.216 + log(telnet.waitfor(":"));
32.217 +
32.218 + log(telnet.sendLine(sym + ".REPGEN." + file.getName()));
32.219 + log(telnet.waitfor(":"));
32.220 +
32.221 + log(telnet.sendLine(""));
32.222 + log(telnet.waitfor("221 Goodbye."));
32.223 + log(telnet.waitfor(":"));
32.224 +
32.225 + log(telnet.sendLine(""));
32.226 + log(telnet.waitfor(":"));
32.227 +
32.228 + // Read in the file now
32.229 + // BufferedReader in = new BufferedReader(new
32.230 + // FileReader(FTPManager.UPLOADDIR + "/" + sym + ".REPGEN." +
32.231 + // file.getName()));
32.232 +
32.233 + // while((temp=in.readLine())!= null)
32.234 + // stringBuilder.append(temp + "\n");
32.235 +
32.236 + return stringBuilder.toString();
32.237 +
32.238 + } catch (IOException e) {
32.239 + return null;
32.240 + }
32.241 +
32.242 + }
32.243 +
32.244 + @Override
32.245 + public ArrayList<SymitarFile> getFileList(FileType type, String search) {
32.246 + ArrayList<SymitarFile> files = new ArrayList<SymitarFile>();
32.247 + String temp = "";
32.248 +
32.249 + try {
32.250 + getToState(State.MANAGEMENT_MENU);
32.251 +
32.252 + if (type == FileType.REPGEN) {
32.253 + log(telnet.sendLine("3"));
32.254 + log(telnet.waitfor(":"));
32.255 + } else if (type == FileType.LETTER) {
32.256 + log(telnet.sendLine("4"));
32.257 + log(telnet.waitfor(":"));
32.258 + } else if (type == FileType.HELP) {
32.259 + log(telnet.sendLine("5"));
32.260 + log(telnet.waitfor(":"));
32.261 + }
32.262 +
32.263 + log(telnet.sendLine("1"));
32.264 + log(telnet.waitfor(":"));
32.265 +
32.266 + log(telnet.sendLine(search));
32.267 + log(telnet.waitfor(":"));
32.268 +
32.269 + log(telnet.sendLine(""));
32.270 + log(telnet.waitfor(":"));
32.271 +
32.272 + log(telnet.sendLine("1"));
32.273 + log(telnet.waitfor(":"));
32.274 +
32.275 + do {
32.276 + log(telnet.sendLine(""));
32.277 + temp = telnet.waitfor(":").trim();
32.278 + log(temp);
32.279 +
32.280 + files.addAll(parseFileListPage(temp));
32.281 + } while (temp.indexOf("End of File List") == -1);
32.282 +
32.283 + log(telnet.sendLine(""));
32.284 + log(telnet.waitfor(":"));
32.285 +
32.286 + log(telnet.send(Character.toString((char) 27)));
32.287 + temp = telnet.waitfor(":");
32.288 + log(temp);
32.289 +
32.290 + // Bizzarre bug here, when requesting a lot of list files
32.291 + if (temp.indexOf("File Name") != -1) {
32.292 + // log(telnet.send(Character.toString((char)27)));
32.293 + byte[] bytes = { (byte) 27 };
32.294 + telnet.write(bytes);
32.295 + log(telnet.waitfor(":"));
32.296 +
32.297 + log(telnet.send(Character.toString((char) 27)));
32.298 + temp = telnet.waitfor(":");
32.299 + log(temp);
32.300 +
32.301 + state = State.MAIN_MENU;
32.302 + }
32.303 + } catch (IOException e) {
32.304 + e.printStackTrace();
32.305 + return files;
32.306 + }
32.307 +
32.308 + return files;
32.309 + }
32.310 +
32.311 + /**
32.312 + * Parses one page of file listing
32.313 + *
32.314 + * @param data
32.315 + * @return
32.316 + */
32.317 + private ArrayList<SymitarFile> parseFileListPage(String data) {
32.318 + ArrayList<SymitarFile> files = new ArrayList<SymitarFile>();
32.319 + String[] lines = data.split("\n");
32.320 +
32.321 + for (String currentLine : lines) {
32.322 + if (currentLine.length() > 3 && currentLine.substring(1, 4).equals("[1m"))
32.323 + files.add(new SymitarFile(currentLine.substring(4, currentLine.length() - 1), FileType.REPGEN));
32.324 + }
32.325 +
32.326 + return files;
32.327 + }
32.328 +
32.329 + @Override
32.330 + public String getRepGenQuery() {
32.331 + // TODO Auto-generated method stub
32.332 + return null;
32.333 + }
32.334 +
32.335 + @Override
32.336 + public int getRepgenQueue() {
32.337 + // TODO Auto-generated method stub
32.338 + return 0;
32.339 + }
32.340 +
32.341 + @Override
32.342 + public ArrayList<Integer> getSequenceNumbers() {
32.343 + // TODO Auto-generated method stub
32.344 + return null;
32.345 + }
32.346 +
32.347 + @Override
32.348 + public boolean isConnected() {
32.349 + return connected;
32.350 + }
32.351 +
32.352 + @Override
32.353 + public SessionError removeFile(SymitarFile file) {
32.354 + // TODO Auto-generated method stub
32.355 + return null;
32.356 + }
32.357 +
32.358 + @Override
32.359 + public SessionError runBatchFM(String title) {
32.360 + // TODO Auto-generated method stub
32.361 + return null;
32.362 + }
32.363 +
32.364 + @Override
32.365 + public void runRepGen(String name) {
32.366 + // TODO Auto-generated method stub
32.367 +
32.368 + }
32.369 +
32.370 + @Override
32.371 + public void runRepGen(String name, int queue) {
32.372 + // TODO Auto-generated method stub
32.373 +
32.374 + }
32.375 +
32.376 + @Override
32.377 + public SessionError saveFile(SymitarFile file, String text) {
32.378 + String temp = "";
32.379 + PrintWriter out;
32.380 +
32.381 + if (!connected || file == null || file.getName() == null || file.getName().trim().equals(""))
32.382 + return null;
32.383 +
32.384 + System.out.println("Saving File: " + file.getName() + " from Sym " + sym);
32.385 +
32.386 + try {
32.387 + // out = new PrintWriter(new FileWriter(FTPManager.UPLOADDIR + "/" +
32.388 + // sym + ".REPGEN." + file.getName()));
32.389 + // out.print(text.replaceAll("\r\n", "\n"));
32.390 + // out.close();
32.391 + } catch (Exception e) {
32.392 + e.printStackTrace();
32.393 + }
32.394 +
32.395 + try {
32.396 + getToState(State.PC_TRANSFER_MENU);
32.397 +
32.398 + // Select which type of upload
32.399 + if (file.getType() == FileType.REPGEN) {
32.400 + log(telnet.sendLine("9"));
32.401 + log(telnet.waitfor(":"));
32.402 + } else if (file.getType() == FileType.LETTER) {
32.403 + log(telnet.sendLine("7"));
32.404 + log(telnet.waitfor(":"));
32.405 + } else if (file.getType() == FileType.HELP) {
32.406 + log(telnet.sendLine("10"));
32.407 + log(telnet.waitfor(":"));
32.408 + }
32.409 +
32.410 + log(telnet.sendLine("2"));
32.411 + log(telnet.waitfor(":"));
32.412 +
32.413 + log(telnet.sendLine(""));
32.414 + log(telnet.waitfor(":"));
32.415 +
32.416 + // log(telnet.sendLine(FTPManager.UPLOADUSER));
32.417 + // log(telnet.waitfor(":"));
32.418 +
32.419 + // log(telnet.sendLine(FTPManager.UPLOADPASS));
32.420 + // log(telnet.waitfor(":"));
32.421 +
32.422 + log(telnet.sendLine("1"));
32.423 + log(telnet.waitfor(":"));
32.424 +
32.425 + log(telnet.sendLine(sym + ".REPGEN." + file.getName()));
32.426 + log(telnet.waitfor(":"));
32.427 +
32.428 + log(telnet.sendLine(file.getName()));
32.429 + log(telnet.waitfor(":"));
32.430 +
32.431 + log(telnet.sendLine(""));
32.432 + log(telnet.waitfor("221 Goodbye."));
32.433 + log(telnet.waitfor(":"));
32.434 +
32.435 + log(telnet.sendLine(""));
32.436 + log(telnet.waitfor(":"));
32.437 +
32.438 + } catch (IOException e) {
32.439 + return SessionError.IO_ERROR;
32.440 + }
32.441 +
32.442 + return SessionError.NONE;
32.443 + }
32.444 +
32.445 + @Override
32.446 + public void waitOnChange() {
32.447 + // TODO Auto-generated method stub
32.448 +
32.449 + }
32.450 +
32.451 + @Override
32.452 + public SessionError printFileLPT(SymitarFile file, boolean formsOverride, int formLength, int startPage, int endPage, int copies, boolean landscape, boolean duplex, int queuePriority) {
32.453 + // TODO Auto-generated method stub
32.454 + return null;
32.455 + }
32.456 +
32.457 + @Override
32.458 + public SessionError printFileTPT(SymitarFile file, int queue) {
32.459 + // TODO Auto-generated method stub
32.460 + return null;
32.461 + }
32.462 +
32.463 + @Override
32.464 + public ErrorCheckResult errorCheckRepGen(String filename) {
32.465 + // TODO Auto-generated method stub
32.466 + return null;
32.467 + }
32.468 +
32.469 + public ErrorCheckResult installRepgen(String file) {
32.470 + try {
32.471 + getToState(State.MANAGEMENT_MENU);
32.472 +
32.473 + log(telnet.sendLine("3"));
32.474 + log(telnet.waitfor(":"));
32.475 +
32.476 + log(telnet.sendLine("8")); // get to the install repgen section
32.477 + log(telnet.waitfor(":"));
32.478 +
32.479 + log(telnet.sendLine(file));
32.480 + log(telnet.waitfor(":"));
32.481 + log(telnet.sendLine("Y"));
32.482 +
32.483 + log(telnet.waitfor(":"));
32.484 + log(telnet.send(Character.toString((char) 27)));
32.485 + log(telnet.waitfor(":"));
32.486 + log(telnet.send(Character.toString((char) 27)));
32.487 + log(telnet.waitfor(":"));
32.488 +
32.489 + getToState(State.MANAGEMENT_MENU);
32.490 + } catch (IOException e) {
32.491 + // ut oh!
32.492 + }
32.493 + return null;
32.494 + }
32.495 +}
33.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
33.2 +++ b/com/repdev/TelnetWrapper.java Fri Jun 01 18:46:53 2007 +0000
33.3 @@ -0,0 +1,149 @@
33.4 +package com.repdev;
33.5 +
33.6 +import java.io.InputStream;
33.7 +import java.io.OutputStream;
33.8 +import java.io.IOException;
33.9 +import java.net.Socket;
33.10 +
33.11 +import java.util.Vector;
33.12 +import java.util.Properties;
33.13 +
33.14 +import java.awt.Dimension;
33.15 +
33.16 +/**
33.17 + * The telnet wrapper is a sample class for how to use the telnet protocol
33.18 + * handler of the JTA source package. To write a program using the wrapper you
33.19 + * may use the following piece of code as an example:
33.20 + *
33.21 + * <PRE>
33.22 + *
33.23 + * TelnetWrapper telnet = new TelnetWrapper(); try { telnet.connect(args[0],
33.24 + * 23); telnet.login("user", "password"); telnet.setPrompt("user@host");
33.25 + * telnet.waitfor("Terminal type?"); telnet.send("dumb");
33.26 + * System.out.println(telnet.send("ls -l")); } catch(java.io.IOException e) {
33.27 + * e.printStackTrace(); }
33.28 + *
33.29 + * </PRE>
33.30 + *
33.31 + * Please keep in mind that the password is visible for anyone who can download
33.32 + * the class file. So use this only for public accounts or if you are absolutely
33.33 + * sure nobody can see the file.
33.34 + * <P>
33.35 + * <B>Maintainer:</B> Matthias L. Jugel
33.36 + *
33.37 + * @version $Id: TelnetWrapper.java 499 2005-09-29 08:24:54Z leo $
33.38 + * @author Matthias L. Jugel, Marcus Mei�ner
33.39 + */
33.40 +public class TelnetWrapper extends Wrapper {
33.41 + protected TelnetProtocolHandler handler;
33.42 +
33.43 + /** debugging level */
33.44 + private final static int debug = 0;
33.45 +
33.46 + public TelnetWrapper() {
33.47 + handler = new TelnetProtocolHandler() {
33.48 + /** get the current terminal type */
33.49 + public String getTerminalType() {
33.50 + return "vt320";
33.51 + }
33.52 +
33.53 + /** get the current window size */
33.54 + public Dimension getWindowSize() {
33.55 + return new Dimension(80, 25);
33.56 + }
33.57 +
33.58 + /** notify about local echo */
33.59 + public void setLocalEcho(boolean echo) {
33.60 + /* EMPTY */
33.61 + }
33.62 +
33.63 + /** write data to our back end */
33.64 + public void write(byte[] b) throws IOException {
33.65 + out.write(b);
33.66 + out.flush();
33.67 + }
33.68 +
33.69 + /** sent on IAC EOR (prompt terminator for remote access systems). */
33.70 + public void notifyEndOfRecord() {
33.71 + }
33.72 + };
33.73 + }
33.74 +
33.75 + public TelnetProtocolHandler getHandler() {
33.76 + return handler;
33.77 + }
33.78 +
33.79 + public void connect(String host, int port) throws IOException {
33.80 + super.connect(host, port);
33.81 + handler.reset();
33.82 + }
33.83 +
33.84 + /**
33.85 + * Send a command to the remote host. A newline is appended and if a prompt
33.86 + * is set it will return the resulting data until the prompt is encountered.
33.87 + *
33.88 + * @param cmd
33.89 + * the command
33.90 + * @return output of the command or null if no prompt is set
33.91 + */
33.92 + public String sendLine(String cmd) throws IOException {
33.93 + byte arr[];
33.94 + arr = (cmd + "\n").getBytes();
33.95 + handler.transpose(arr);
33.96 + if (getPrompt() != null)
33.97 + return waitfor(getPrompt());
33.98 + return null;
33.99 + }
33.100 +
33.101 + /**
33.102 + * Send a command to the remote host. NO newline is appended and if a prompt
33.103 + * is set it will return the resulting data until the prompt is encountered.
33.104 + *
33.105 + * @param cmd
33.106 + * the command
33.107 + * @return output of the command or null if no prompt is set
33.108 + *
33.109 + * This method created by Jake Poznanski
33.110 + */
33.111 + public String send(String cmd) throws IOException {
33.112 + byte arr[];
33.113 + arr = (cmd).getBytes();
33.114 + handler.transpose(arr);
33.115 + if (getPrompt() != null)
33.116 + return waitfor(getPrompt());
33.117 + return null;
33.118 + }
33.119 +
33.120 + /**
33.121 + * Read data from the socket and use telnet negotiation before returning the
33.122 + * data read.
33.123 + *
33.124 + * @param b
33.125 + * the input buffer to read in
33.126 + * @return the amount of bytes read
33.127 + */
33.128 + public int read(byte[] b) throws IOException {
33.129 + /* process all already read bytes */
33.130 + int n;
33.131 +
33.132 + do {
33.133 + n = handler.negotiate(b);
33.134 + if (n > 0)
33.135 + return n;
33.136 + } while (n == 0);
33.137 +
33.138 + while (n <= 0) {
33.139 + do {
33.140 + n = handler.negotiate(b);
33.141 + if (n > 0)
33.142 + return n;
33.143 + } while (n == 0);
33.144 + n = in.read(b);
33.145 + if (n < 0)
33.146 + return n;
33.147 + handler.inputfeed(b, n);
33.148 + n = handler.negotiate(b);
33.149 + }
33.150 + return n;
33.151 + }
33.152 +}
34.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
34.2 +++ b/com/repdev/TestingSymitarSession.java Fri Jun 01 18:46:53 2007 +0000
34.3 @@ -0,0 +1,246 @@
34.4 +package com.repdev;
34.5 +
34.6 +import java.util.ArrayList;
34.7 +import java.util.Date;
34.8 +import java.io.*;
34.9 +import java.util.regex.*;
34.10 +
34.11 +public class TestingSymitarSession extends SymitarSession {
34.12 + boolean isConnected;
34.13 + int repGenRun = -1;
34.14 +
34.15 + @Override
34.16 + public SessionError connect(String server, String aixUsername, String aixPassword, int sym, String userID) {
34.17 + this.sym = sym;
34.18 + this.aixUsername = aixUsername;
34.19 + this.aixPassword = aixPassword;
34.20 + this.userID = userID;
34.21 + isConnected = true;
34.22 + return SessionError.NONE;
34.23 + }
34.24 +
34.25 + @Override
34.26 + public SessionError disconnect() {
34.27 + if (isConnected) {
34.28 + isConnected = false;
34.29 + return SessionError.NONE;
34.30 + } else
34.31 + return SessionError.NOT_CONNECTED;
34.32 + }
34.33 +
34.34 + @Override
34.35 + public int acceptRepGenQuery(String value) {
34.36 + // TODO Auto-generated method stub
34.37 + return 0;
34.38 + }
34.39 +
34.40 + @Override
34.41 + public int getBatchOutputSequenceNumber() {
34.42 + if (repGenRun == 1)
34.43 + return 133;
34.44 + else
34.45 + return -1;
34.46 + }
34.47 +
34.48 + @Override
34.49 + public String getFile(SymitarFile file) {
34.50 + StringBuilder data = new StringBuilder();
34.51 + String line;
34.52 + BufferedReader in;
34.53 +
34.54 + System.out.println("Requesting File: " + file.getName() + " from Sym " + sym);
34.55 +
34.56 + try {
34.57 + in = new BufferedReader(new FileReader("testdata" + System.getProperty("file.separator") + getSym() + "." + file.getType().toString() + "." + file.getName() + ".txt"));
34.58 +
34.59 + while ((line = in.readLine()) != null) {
34.60 + data.append(line);
34.61 + data.append("\r\n");
34.62 + }
34.63 +
34.64 + if (in != null)
34.65 + in.close();
34.66 +
34.67 + return data.toString();
34.68 + } catch (Exception e) {
34.69 + return null;
34.70 + }
34.71 +
34.72 + }
34.73 +
34.74 + // A silly class to make file system files work with wildcards like on
34.75 + // Symitar
34.76 + private class SymitarWildcardFilter implements FilenameFilter {
34.77 + String matcher;
34.78 + FileType type;
34.79 +
34.80 + public SymitarWildcardFilter(String matcher, FileType type) {
34.81 + this.matcher = matcher;
34.82 + this.type = type;
34.83 + }
34.84 +
34.85 + public boolean accept(File dir, String name) {
34.86 + // Strip out other things to get just the name we want
34.87 + try {
34.88 + if (!name.startsWith(String.valueOf(getSym())))
34.89 + return false;
34.90 +
34.91 + name = name.substring(name.indexOf(".") + 1);
34.92 +
34.93 + if (!name.startsWith(type.toString()))
34.94 + return false;
34.95 +
34.96 + name = name.substring(name.indexOf(".") + 1);
34.97 +
34.98 + name = name.substring(0, name.lastIndexOf("."));
34.99 +
34.100 + Pattern p = Pattern.compile(matcher.replaceAll("\\+", ".*"));
34.101 + Matcher m = p.matcher(name);
34.102 +
34.103 + return m.matches();
34.104 +
34.105 + } catch (Exception e) {
34.106 + }
34.107 +
34.108 + return true;
34.109 + }
34.110 + }
34.111 +
34.112 + @Override
34.113 + public ArrayList<SymitarFile> getFileList(FileType type, String search) {
34.114 + ArrayList<SymitarFile> data = new ArrayList<SymitarFile>();
34.115 +
34.116 + File file = new File("testdata");
34.117 + File[] fileListData;
34.118 +
34.119 + search = search.trim();
34.120 +
34.121 + if (search.equals(""))
34.122 + search = "+";
34.123 +
34.124 + fileListData = file.listFiles(new SymitarWildcardFilter(search, type));
34.125 +
34.126 + if (fileListData != null)
34.127 + for (File current : fileListData) {
34.128 + String name = current.getName();
34.129 + name = name.substring(name.indexOf(".") + 1);
34.130 + name = name.substring(name.indexOf(".") + 1);
34.131 + name = name.substring(0, name.lastIndexOf("."));
34.132 +
34.133 + data.add(new SymitarFile(name, type, new Date(current.lastModified()), current.length()));
34.134 + }
34.135 +
34.136 + return data;
34.137 + }
34.138 +
34.139 + @Override
34.140 + public String getRepGenQuery() {
34.141 + switch (repGenRun) {
34.142 + case 0:
34.143 + repGenRun = 1;
34.144 + return "Enter the date to run report on";
34.145 + }
34.146 +
34.147 + return null;
34.148 + }
34.149 +
34.150 + @Override
34.151 + public int getRepgenQueue() {
34.152 + return 0;
34.153 + }
34.154 +
34.155 + @Override
34.156 + public ArrayList<Integer> getSequenceNumbers() {
34.157 + if (repGenRun == 1) {
34.158 + ArrayList<Integer> temp = new ArrayList<Integer>();
34.159 + temp.add(134);
34.160 + temp.add(135);
34.161 + }
34.162 +
34.163 + return null;
34.164 + }
34.165 +
34.166 + @Override
34.167 + public boolean isConnected() {
34.168 + return isConnected;
34.169 + }
34.170 +
34.171 + @Override
34.172 + public SessionError runBatchFM(String title) {
34.173 + // TODO Auto-generated method stub
34.174 + return null;
34.175 + }
34.176 +
34.177 + @Override
34.178 + public void runRepGen(String name) {
34.179 + runRepGen(name, 0);
34.180 + }
34.181 +
34.182 + @Override
34.183 + public void runRepGen(String name, int queue) {
34.184 + repGenRun = 0;
34.185 + }
34.186 +
34.187 + @Override
34.188 + public SessionError saveFile(SymitarFile file, String text) {
34.189 + PrintWriter out = null;
34.190 +
34.191 + System.out.println("Saving File: " + file.getName() + " from Sym " + sym);
34.192 +
34.193 + try {
34.194 + out = new PrintWriter(new FileWriter("testdata" + System.getProperty("file.separator") + getSym() + "." + file.getType().toString() + "." + file.getName() + ".txt"));
34.195 +
34.196 + out.print(text);
34.197 +
34.198 + if (out != null)
34.199 + out.close();
34.200 +
34.201 + return SessionError.NONE;
34.202 +
34.203 + } catch (Exception e) {
34.204 + return SessionError.IO_ERROR;
34.205 + }
34.206 +
34.207 + }
34.208 +
34.209 + @Override
34.210 + public void waitOnChange() {
34.211 + return;
34.212 + }
34.213 +
34.214 + @Override
34.215 + public SessionError removeFile(SymitarFile file) {
34.216 + File localFile = new File("testdata" + System.getProperty("file.separator") + getSym() + "." + file.getType().toString() + "." + file.getName() + ".txt");
34.217 +
34.218 + if (!localFile.exists())
34.219 + return SessionError.IO_ERROR;
34.220 +
34.221 + localFile.delete();
34.222 +
34.223 + return SessionError.NONE;
34.224 + }
34.225 +
34.226 + @Override
34.227 + public SessionError printFileLPT(SymitarFile file, boolean formsOverride, int formLength, int startPage, int endPage, int copies, boolean landscape, boolean duplex, int queuePriority) {
34.228 + // TODO Auto-generated method stub
34.229 + return null;
34.230 + }
34.231 +
34.232 + @Override
34.233 + public SessionError printFileTPT(SymitarFile file, int queue) {
34.234 + // TODO Auto-generated method stub
34.235 + return null;
34.236 + }
34.237 +
34.238 + @Override
34.239 + public ErrorCheckResult errorCheckRepGen(String filename) {
34.240 + // TODO Auto-generated method stub
34.241 + return null;
34.242 + }
34.243 +
34.244 + @Override
34.245 + public ErrorCheckResult installRepgen(String f) {
34.246 + return null;
34.247 + }
34.248 +
34.249 +}
35.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
35.2 +++ b/com/repdev/Wrapper.java Fri Jun 01 18:46:53 2007 +0000
35.3 @@ -0,0 +1,197 @@
35.4 +package com.repdev;
35.5 +
35.6 +import java.io.InputStream;
35.7 +import java.io.OutputStream;
35.8 +import java.io.IOException;
35.9 +import java.net.Socket;
35.10 +
35.11 +import java.util.Vector;
35.12 +import java.util.Properties;
35.13 +
35.14 +import java.awt.Dimension;
35.15 +
35.16 +/**
35.17 + * To write a program using the wrapper you may use the following piece of code
35.18 + * as an example:
35.19 + *
35.20 + * <PRE>
35.21 + *
35.22 + * TelnetWrapper telnet = new TelnetWrapper(); try { telnet.connect(args[0],
35.23 + * 23); telnet.login("user", "password"); telnet.setPrompt("user@host");
35.24 + * telnet.waitfor("Terminal type?"); telnet.send("dumb");
35.25 + * System.out.println(telnet.send("ls -l")); } catch(java.io.IOException e) {
35.26 + * e.printStackTrace(); }
35.27 + *
35.28 + * </PRE>
35.29 + *
35.30 + * Please keep in mind that the password is visible for anyone who can download
35.31 + * the class file. So use this only for public accounts or if you are absolutely
35.32 + * sure nobody can see the file.
35.33 + * <P>
35.34 + * <B>Maintainer:</B> Matthias L. Jugel
35.35 + *
35.36 + * @version $Id: Wrapper.java 499 2005-09-29 08:24:54Z leo $
35.37 + * @author Matthias L. Jugel, Marcus Mei\u00dfner
35.38 + */
35.39 +
35.40 +public class Wrapper {
35.41 +
35.42 + /** debugging level */
35.43 + private final static int debug = 0;
35.44 +
35.45 + protected ScriptHandler scriptHandler = new ScriptHandler();
35.46 + private Thread reader;
35.47 +
35.48 + protected InputStream in;
35.49 + protected OutputStream out;
35.50 + protected Socket socket;
35.51 + protected String host;
35.52 + protected int port = 23;
35.53 + protected Vector script = new Vector();
35.54 +
35.55 + /** Connect the socket and open the connection. */
35.56 + public void connect(String host, int port) throws IOException {
35.57 + if (debug > 0)
35.58 + System.err.println("Wrapper: connect(" + host + "," + port + ")");
35.59 + try {
35.60 + socket = new java.net.Socket(host, port);
35.61 + in = socket.getInputStream();
35.62 + out = socket.getOutputStream();
35.63 + } catch (Exception e) {
35.64 + System.err.println("Wrapper: " + e);
35.65 + disconnect();
35.66 + throw ((IOException) e);
35.67 + }
35.68 + }
35.69 +
35.70 + /** Disconnect the socket and close the connection. */
35.71 + public void disconnect() throws IOException {
35.72 + if (debug > 0)
35.73 + System.err.println("Wrapper: disconnect()");
35.74 + if (socket != null)
35.75 + socket.close();
35.76 + }
35.77 +
35.78 + /**
35.79 + * Login into remote host. This is a convenience method and only works if
35.80 + * the prompts are "login:" and "Password:".
35.81 + *
35.82 + * @param user
35.83 + * the user name
35.84 + * @param pwd
35.85 + * the password
35.86 + */
35.87 + public void login(String user, String pwd) throws IOException {
35.88 + waitfor("login:"); // throw output away
35.89 + sendLine(user);
35.90 + waitfor("Password:"); // throw output away
35.91 + sendLine(pwd);
35.92 + }
35.93 +
35.94 + /**
35.95 + * Set the prompt for the send() method.
35.96 + */
35.97 + private String prompt = null;
35.98 +
35.99 + public void setPrompt(String prompt) {
35.100 + this.prompt = prompt;
35.101 + }
35.102 +
35.103 + public String getPrompt() {
35.104 + return prompt;
35.105 + }
35.106 +
35.107 + /**
35.108 + * Send a command to the remote host. A newline is appended and if a prompt
35.109 + * is set it will return the resulting data until the prompt is encountered.
35.110 + *
35.111 + * @param cmd
35.112 + * the command
35.113 + * @return output of the command or null if no prompt is set
35.114 + */
35.115 + public String sendLine(String cmd) throws IOException {
35.116 + return null;
35.117 + }
35.118 +
35.119 + /**
35.120 + * Wait for a string to come from the remote host and return all that
35.121 + * characters that are received until that happens (including the string
35.122 + * being waited for).
35.123 + *
35.124 + * @param match
35.125 + * the string to look for
35.126 + * @return skipped characters
35.127 + */
35.128 +
35.129 + public String waitfor(String... searchElements) throws IOException {
35.130 + ScriptHandler[] handlers = new ScriptHandler[searchElements.length];
35.131 + for (int i = 0; i < searchElements.length; i++) {
35.132 + // initialize the handlers
35.133 + handlers[i] = new ScriptHandler();
35.134 + handlers[i].setup(searchElements[i]);
35.135 + }
35.136 +
35.137 + byte[] b1 = new byte[1];
35.138 + int n = 0;
35.139 + StringBuffer ret = new StringBuffer();
35.140 + String current;
35.141 +
35.142 + while (n >= 0) {
35.143 + n = read(b1);
35.144 + if (n > 0) {
35.145 + current = new String(b1, 0, n);
35.146 + if (debug > 0)
35.147 + System.err.print(current);
35.148 + ret.append(current);
35.149 + for (int i = 0; i < handlers.length; i++) {
35.150 + if (handlers[i].match(ret.toString().getBytes(), ret.length())) {
35.151 + return ret.toString();
35.152 + } // if
35.153 + } // for
35.154 + } // if
35.155 + } // while
35.156 + return null; // should never happen
35.157 + }
35.158 +
35.159 + public String waitfor(String match) throws IOException {
35.160 + String[] matches = new String[1];
35.161 +
35.162 + matches[0] = match;
35.163 + return waitfor(matches);
35.164 + }
35.165 +
35.166 + /**
35.167 + * Read data from the socket and use telnet negotiation before returning the
35.168 + * data read.
35.169 + *
35.170 + * @param b
35.171 + * the input buffer to read in
35.172 + * @return the amount of bytes read
35.173 + */
35.174 + public int read(byte[] b) throws IOException {
35.175 + return -1;
35.176 + };
35.177 +
35.178 + /**
35.179 + * Write data to the socket.
35.180 + *
35.181 + * @param b
35.182 + * the buffer to be written
35.183 + */
35.184 + public void write(byte[] b) throws IOException {
35.185 + out.write(b);
35.186 + }
35.187 +
35.188 + public String getTerminalType() {
35.189 + return "dumb";
35.190 + }
35.191 +
35.192 + public Dimension getWindowSize() {
35.193 + return new Dimension(80, 24);
35.194 + }
35.195 +
35.196 + public void setLocalEcho(boolean echo) {
35.197 + if (debug > 0)
35.198 + System.err.println("local echo " + (echo ? "on" : "off"));
35.199 + }
35.200 +}
36.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
36.2 +++ b/db.txt Fri Jun 01 18:46:53 2007 +0000
36.3 @@ -0,0 +1,7508 @@
36.4 +***|Account|Account
36.5 + Number|Account Number|1|0|10
36.6 + Type|Account Type|2|5|9999
36.7 + LastFMDate|Last FM Date|3|3|null
36.8 + OpenDate|Open Date|5|3|null
36.9 + CloseDate|Close Date|6|3|null
36.10 + Branch|Branch|7|5|9999
36.11 + Restrict|Restricted Access|8|5|6
36.12 + Reference|Reference|9|0|20
36.13 + WarningCode:1|Warning 1 Code|10|5|99
36.14 + WarningCode:2|Warning 2 Code|10|5|99
36.15 + WarningCode:3|Warning 3 Code|10|5|99
36.16 + WarningCode:4|Warning 4 Code|10|5|99
36.17 + WarningCode:5|Warning 5 Code|10|5|99
36.18 + WarningCode:6|Warning 6 Code|10|5|99
36.19 + WarningCode:7|Warning 7 Code|10|5|99
36.20 + WarningCode:8|Warning 8 Code|10|5|99
36.21 + PaymentHistory:1|Payments Made|11|5|9999
36.22 + PaymentHistory:2|31- 60 Days DQ|11|5|9999
36.23 + PaymentHistory:3|61- 90 Days DQ|11|5|9999
36.24 + PaymentHistory:4|91-120 Days DQ|11|5|9999
36.25 + PaymentHistory:5|121-180 Days DQ|11|5|9999
36.26 + PaymentHistory:6|181 and up Days DQ|11|5|9999
36.27 + MemberStatus|Membership Status|13|5|1
36.28 + CorrespondDate|Correspondence Date|14|3|null
36.29 + ProxyDate|Proxy Date|15|3|null
36.30 + HeadOfHousehold|Head of Household|16|5|1
36.31 + WarningExpiration:1|Warning 1 Expiration|17|3|null
36.32 + WarningExpiration:2|Warning 2 Expiration|17|3|null
36.33 + WarningExpiration:3|Warning 3 Expiration|17|3|null
36.34 + WarningExpiration:4|Warning 4 Expiration|17|3|null
36.35 + WarningExpiration:5|Warning 5 Expiration|17|3|null
36.36 + WarningExpiration:6|Warning 6 Expiration|17|3|null
36.37 + WarningExpiration:7|Warning 7 Expiration|17|3|null
36.38 + WarningExpiration:8|Warning 8 Expiration|17|3|null
36.39 + NSFMonthlyCount:1|NSF Month 01 Day Count|18|5|9999
36.40 + NSFMonthlyCount:2|NSF Month 02 Day Count|18|5|9999
36.41 + NSFMonthlyCount:3|NSF Month 03 Day Count|18|5|9999
36.42 + NSFMonthlyCount:4|NSF Month 04 Day Count|18|5|9999
36.43 + NSFMonthlyCount:5|NSF Month 05 Day Count|18|5|9999
36.44 + NSFMonthlyCount:6|NSF Month 06 Day Count|18|5|9999
36.45 + NSFMonthlyCount:7|NSF Month 07 Day Count|18|5|9999
36.46 + NSFMonthlyCount:8|NSF Month 08 Day Count|18|5|9999
36.47 + NSFMonthlyCount:9|NSF Month 09 Day Count|18|5|9999
36.48 + NSFMonthlyCount:10|NSF Month 10 Day Count|18|5|9999
36.49 + NSFMonthlyCount:11|NSF Month 11 Day Count|18|5|9999
36.50 + NSFMonthlyCount:12|NSF Month 12 Day Count|18|5|9999
36.51 + NSFMonthlyCount:13|NSF Month 13 Day Count|18|5|9999
36.52 + NSFMonthlyCount:14|NSF Month 14 Day Count|18|5|9999
36.53 + NSFMonthlyCount:15|NSF Month 15 Day Count|18|5|9999
36.54 + NSFMonthlyCount:16|NSF Month 16 Day Count|18|5|9999
36.55 + NSFMonthlyCount:17|NSF Month 17 Day Count|18|5|9999
36.56 + NSFMonthlyCount:18|NSF Month 18 Day Count|18|5|9999
36.57 + NSFMonthlyCount:19|NSF Month 19 Day Count|18|5|9999
36.58 + NSFMonthlyCount:20|NSF Month 20 Day Count|18|5|9999
36.59 + NSFMonthlyCount:21|NSF Month 21 Day Count|18|5|9999
36.60 + NSFMonthlyCount:22|NSF Month 22 Day Count|18|5|9999
36.61 + NSFMonthlyCount:23|NSF Month 23 Day Count|18|5|9999
36.62 + NSFMonthlyCount:24|NSF Month 24 Day Count|18|5|9999
36.63 + NSFToday|NSF Today Count|19|5|9999
36.64 + MemberGroup|Member Group|20|5|9999
36.65 + CommercialCode|Commercial Code|21|5|2
36.66 + FMLastPurgeDate|FM History Purge Date|22|3|null
36.67 + StateReporting|State Reporting|24|0|2
36.68 + HouseholdAccount|Household Account|25|0|10
36.69 + HouseholdStatement|Household Statement|26|5|1
36.70 + FrozenMode|Audio/HB Frozen Mode|27|5|1
36.71 + InvalidAttemptCount|Invalid Attempt Count|28|5|9999
36.72 + InvalidAttemptDate|Last Inv Attempt Date|29|3|null
36.73 + InvalidAttemptTime|Last Inv Attempt Time|30|5|2359
36.74 + StatementMailCode|Statement Mail Code|31|5|99
36.75 + RelationshipCode|Relationship Code|32|5|99
36.76 + RelationshipOverride|Relationship Override|33|5|99
36.77 + RelationshipOverrideEffDate|Rel Override Eff Date|34|3|null
36.78 + RelationshipOverrideExpDate|Rel Override Exp Date|35|3|null
36.79 + KRHoldBaseAmount|Check Hold Base Amount|36|7|null
36.80 + KRTotalAmount|Check Dep Total Amount|37|7|null
36.81 + KRTotalDate|Check Dep Total Date|38|3|null
36.82 + EstmtNotify|E-Statement Email Notify|39|5|1
36.83 + EstmtEnable|E-Statement Enable|40|5|2
36.84 + CRTotalAmount|US Cash Rcvd Amount|41|7|null
36.85 + CDTotalAmount|US Cash Disb Amount|42|7|null
36.86 + FRCRTotalAmount|Frgn Cash Rcvd Amt|43|7|null
36.87 + FRCDTotalAmount|Frgn Cash Disb Amt|44|7|null
36.88 + UserChar1|Seller|45|0|40
36.89 + UserChar2|Initial Employer|46|0|40
36.90 + UserChar3|Student CU school name|47|0|40
36.91 + UserChar4|User Char 04|48|0|40
36.92 + UserAmount1|User Amount 01|49|7|null
36.93 + UserAmount2|User Amount 02|50|7|null
36.94 + UserDate1|Date account went below $5 min|51|3|null
36.95 + UserDate2|Bill Payer Enrollment Date|52|3|null
36.96 + EnableFloat|Enable Floats|53|5|1
36.97 + DivYTDTax|Dividend This Year Taxable|80|7|null
36.98 + DivYTDNonTax|Dividend This Year Non-Tax|81|7|null
36.99 + DivLastYearTax|Dividend Last Year Taxable|82|7|null
36.100 + DivLastYearNonTax|Dividend Last Year Non-Tax|83|7|null
36.101 + InterestYTD|Interest This Year|84|7|null
36.102 + InterestLastYear|Interest Last Year|85|7|null
36.103 + BondIntYTD|Bond Interest This Year|86|7|null
36.104 + BondIntLastYear|Bond Interest Last Year|87|7|null
36.105 + CurrentRelationshipCode|Current Relationship Code|88|5|99
36.106 + PayeeLine:1|Payee Line 1|89|0|40
36.107 + PayeeLine:2|Payee Line 2|89|0|40
36.108 + PayeeLine:3|Payee Line 3|89|0|40
36.109 + PayeeLine:4|Payee Line 4|89|0|40
36.110 + PayeeLine:5|Payee Line 5|89|0|40
36.111 + PayeeLine:6|Payee Line 6|89|0|40
36.112 + ActivityDate|Activity Date|90|3|null
36.113 + ***|FMHistory|FM History
36.114 + AccountNumber|Account Number|0|0|10
36.115 + IDType|ID Type|0|5|4
36.116 + ID|ID|0|0|2
36.117 + SequenceNumber|Sequence Number|0|4|null
36.118 + PostDate|Post Date|0|3|null
36.119 + PostTime|Post Time|0|5|9999
36.120 + UserNumber|User Number|0|5|4999
36.121 + UserOverride|User Override|0|5|4999
36.122 + SecurityLevels|Security Levels|0|5|9999
36.123 + Branch|Branch|0|5|9999
36.124 + FMType|FM Type|0|5|2
36.125 + LastFMDate|FM Last Date|0|3|null
36.126 + RecordType|Record Type|0|4|null
36.127 + FieldNumber|Field Number|0|4|null
36.128 + SubfieldNumber|Sub Field Number|0|5|9999
36.129 + DataType|Data Type|0|5|8
36.130 + OldNumber|Old Number|0|4|null
36.131 + NewNumber|New Number|0|4|null
36.132 + OldCharacter|Old Character|0|1|40
36.133 + NewCharacter|New Character|0|1|40
36.134 + OldMoney|Old Money|0|7|null
36.135 + NewMoney|New Money|0|7|null
36.136 + OldDate|Old Date|0|3|null
36.137 + NewDate|New Date|0|3|null
36.138 + OldRate|Old Rate|0|2|null
36.139 + NewRate|New Rate|0|2|null
36.140 + ConsoleNumber|Console Number|0|5|9999
36.141 + BatchSequence|Batch Sequence|0|4|null
36.142 + ProcessorUser|Processor User|0|5|32767
36.143 + RecordName|Record Name|2480|1|40
36.144 + FieldName|Field Name|2481|1|40
36.145 + ***|Name|Name
36.146 + Type|Name Type|101|5|53
36.147 + SubType|Name SubType|102|5|99
36.148 + MailOverride|Mail Override|103|5|1
36.149 + SSNOverride|SSN/TIN Override|104|5|3
36.150 + SSNCertification|SSN/TIN Certification|105|5|2
36.151 + SSNType|SSN/TIN Type|106|5|9
36.152 + EffectiveDate|Effective Date|107|3|null
36.153 + ExpirationDate|Expiration Date|108|3|null
36.154 + BirthDate|Birth Date|109|3|null
36.155 + Title|Title|110|0|8
36.156 + First|First Name|111|0|20
36.157 + Middle|Middle Name|112|0|10
36.158 + Last|Last Name|113|0|40
36.159 + Suffix|Suffix|114|0|4
36.160 + ExtraAddress|Extra Address|115|0|40
36.161 + Street|Street|116|0|40
36.162 + City|City|117|0|40
36.163 + State|State|118|0|10
36.164 + ZipCode|Zip Code|119|0|10
36.165 + HomePhone|Home Phone|120|0|16
36.166 + SSN|SSN/TIN|121|0|9
36.167 + WorkPhone|Work Phone|122|0|16
36.168 + LastFMDate|Last FM Date|123|3|null
36.169 + CarrierRoute|Carrier Route|124|0|4
36.170 + AddressType|Address Type|125|5|2
36.171 + BeneficiaryPercent|Beneficiary Percent|126|2|null
36.172 + IRSCorrection|IRS Correction|127|5|1
36.173 + WorkPhoneExtension|Work Phone Ext|128|0|6
36.174 + DeathDate|Death Date|130|3|null
36.175 + ECOACode|ECOA Code|131|5|11
36.176 + Country|Country|132|0|20
36.177 + CountryCode|Country Code|133|0|2
36.178 + Email|E-Mail Address|134|0|40
36.179 + MothersMaidenName|Mother's Maiden Name|135|0|20
36.180 + EmployerName|Current Employer|136|0|40
36.181 + AltEmail|Alt E-Mail Address|137|0|40
36.182 + Locator|Locator|138|4|null
36.183 + MobilePhone|Mobile Phone|139|0|16
36.184 + PagerNumber|Pager Number|140|0|16
36.185 + USPersonFlag|U.S. Person Flag|141|5|1
36.186 + IdentDocFlag:1|Documentary Flag 1|142|5|1
36.187 + IdentDocFlag:2|Documentary Flag 2|142|5|1
36.188 + IdentDocFlag:3|Documentary Flag 3|142|5|1
36.189 + IdentIDType:1|ID Type 1|143|5|999
36.190 + IdentIDType:2|ID Type 2|143|5|999
36.191 + IdentIDType:3|ID Type 3|143|5|999
36.192 + IdentIDDescription:1|ID Description 1|144|0|40
36.193 + IdentIDDescription:2|ID Description 2|144|0|40
36.194 + IdentIDDescription:3|ID Description 3|144|0|40
36.195 + IdentIDNumber:1|ID Number 1|145|0|40
36.196 + IdentIDNumber:2|ID Number 2|145|0|40
36.197 + IdentIDNumber:3|ID Number 3|145|0|40
36.198 + IdentIDIssueDate:1|ID Issuance Date 1|146|3|null
36.199 + IdentIDIssueDate:2|ID Issuance Date 2|146|3|null
36.200 + IdentIDIssueDate:3|ID Issuance Date 3|146|3|null
36.201 + IdentIDExpireDate:1|ID Expiration Date 1|147|3|null
36.202 + IdentIDExpireDate:2|ID Expiration Date 2|147|3|null
36.203 + IdentIDExpireDate:3|ID Expiration Date 3|147|3|null
36.204 + IdentIDVerifyDate:1|ID Verification Date 1|148|3|null
36.205 + IdentIDVerifyDate:2|ID Verification Date 2|148|3|null
36.206 + IdentIDVerifyDate:3|ID Verification Date 3|148|3|null
36.207 + Occupation|Occupation|149|0|20
36.208 + UserChar1|User Char 01|150|0|40
36.209 + UserChar2|User Char 02|151|0|40
36.210 + UserChar3|User Char 03|152|0|40
36.211 + UserChar4|User Char 04|153|0|40
36.212 + UserAmount1|User Amount 01|154|7|null
36.213 + UserAmount2|User Amount 02|155|7|null
36.214 + UserDate1|User Date 01|156|3|null
36.215 + UserDate2|User Date 02|157|3|null
36.216 + LastAddrChgDate|Address Change Date|158|3|null
36.217 + LastAddrVerifDate|Address Verify Date|159|3|null
36.218 + CreditReportConsumerInfo|Credit Report Consumer Info|160|0|2
36.219 + ShortName|Short Name|180|0|16
36.220 + LongName|Long Name|181|1|40
36.221 + License|License|129|0|20
36.222 + ***|Lookup|Lookup
36.223 + Type|Lookup Type|201|5|99
36.224 + Number|Lookup|202|0|20
36.225 + IDType|Reference ID Type|203|5|2
36.226 + ID|Reference ID|204|0|2
36.227 + Locator|Locator|205|4|null
36.228 + ***|Comment|Comment
36.229 + Type|Comment Type|301|5|3
36.230 + EffectiveDate|Effective Date|302|3|null
36.231 + ExpirationDate|Expiration Date|303|3|null
36.232 + Comment|Comment|304|0|40
36.233 + Locator|Locator|305|4|null
36.234 + ***|Household|Household
36.235 + Type|Household Type|2301|5|99
36.236 + AccountNumber|Household Account|2302|0|10
36.237 + Locator|Locator|2303|4|null
36.238 + ***|Preference|Preference
36.239 + InteractMode|Interaction Mode|6601|5|1
36.240 + Language|Language|6602|5|9
36.241 + HomeFax|Home Fax|6603|0|12
36.242 + BusinessFax|Business Fax|6604|0|12
36.243 + TranCodes|Tran Codes|6605|0|18
36.244 + AudioAccess|Audio Access Code|6606|0|16
36.245 + AudioEnable|Audio Enable Code|6607|5|2
36.246 + AudioCallCount|Audio Call Count|6608|5|9999
36.247 + AudioCallMinutes|Audio Call Minutes|6609|5|9999
36.248 + ListTransactions|List Transactions|6610|5|99
36.249 + Type|Type|6611|5|99
36.250 + HBMode|HB Mode|6612|5|1
36.251 + HBEnable|HB Enable Code|6613|5|2
36.252 + HBCallCount|HB Call Count|6614|5|9999
36.253 + HBCallMinutes|HB Call Minutes|6615|5|9999
36.254 + LastAccessChangeDate|Last Access Code Change|6616|3|null
36.255 + LastLogonDate|Last Logon Date|6617|3|null
36.256 + LastLogonTime|Last Logon Time|6618|5|2359
36.257 + Reference|Reference|6619|0|40
36.258 + UserCode|User Code|6620|5|999
36.259 + HBPassword|HB Password|6621|0|20
36.260 + LastHBPWChangeDate|Last HB Password Change|6622|3|null
36.261 + LastTranDate|Last Transaction Date|6623|3|null
36.262 + WDCashMax|Maximum Cash W/D|6624|7|null
36.263 + WDCashLimit|Cash W/D Limit|6625|7|null
36.264 + WDCashAmount|Cash W/D Amount|6626|7|null
36.265 + WDCashCountLimit|Cash W/D Count Limit|6627|5|9999
36.266 + WDCashCount|Cash W/D Count|6628|5|9999
36.267 + WDCheckMax|Maximum Check W/D|6629|7|null
36.268 + WDCheckLimit|Check W/D Limit|6630|7|null
36.269 + WDCheckAmount|Check W/D Amount|6631|7|null
36.270 + WDCheckCountLimit|Check W/D Count Limit|6632|5|9999
36.271 + WDCheckCount|Check W/D Count|6633|5|9999
36.272 + XferMax|Maximum Transfer|6634|7|null
36.273 + XferLimit|Transfer Limit|6635|7|null
36.274 + XferAmount|Transfer Amount|6636|7|null
36.275 + XferCountLimit|Transfer Count Limit|6637|5|9999
36.276 + XferCount|Transfer Count|6638|5|9999
36.277 + BillPayMax|Maximum Bill Pmt|6639|7|null
36.278 + BillPayLimit|Bill Pmt Limit|6640|7|null
36.279 + BillPayAmount|Bill Pmt Amount|6641|7|null
36.280 + BillPayCountLimit|Bill Pmt Count Limit|6642|5|9999
36.281 + BillPayCount|Bill Pmt Count|6643|5|9999
36.282 + DepMax|Maximum Deposit|6644|7|null
36.283 + DepLimit|Deposit Limit|6645|7|null
36.284 + DepAmount|Deposit Amount|6646|7|null
36.285 + DepCountLimit|Deposit Count Limit|6647|5|9999
36.286 + DepCount|Deposit Count|6648|5|9999
36.287 + Locator|Locator|6649|4|null
36.288 + HBLastLogonDate|Last HB Logon Date|6650|3|null
36.289 + HBLastLogonTime|Last HB Logon Time|6651|5|2359
36.290 + AudLastLogonDate|Last Audio Logon Date|6652|3|null
36.291 + AudLastLogonTime|Last Audio Logon Time|6653|5|2359
36.292 + EmailAddress|Email-Address|56|0|40
36.293 + ***|Preference Access|Preference Access
36.294 + AccessType|Access Type|6701|5|3
36.295 + AccountNumber|Account Number|6702|0|10
36.296 + IDType|ID Type|6703|5|2
36.297 + ID|ID|6704|0|2
36.298 + EnableWithdrawal|Enable Withdrawals|6705|5|1
36.299 + EnableDeposit|Enable Deposits|6706|5|1
36.300 + EnableInquiry|Enable Inquiries|6707|5|1
36.301 + Locator|Locator|6708|4|null
36.302 + EnableFM|Enable FM|6709|5|1
36.303 + Qualifier|Qualifier|6710|0|3
36.304 + ***|Tracking|Tracking
36.305 + Type|Tracking Type|6801|5|99
36.306 + ID|ID|6802|0|2
36.307 + IDType|ID Type|6803|5|4
36.308 + UserID|User ID|6804|5|4999
36.309 + FMLastDate|Last FM Date|6805|3|null
36.310 + CreationDate|Creation Date|6806|3|null
36.311 + CreationTime|Creation Time|6807|5|2359
36.312 + ExpireDate|Expiration Date|6808|3|null
36.313 + TrackingCode|Tracking Code|6809|5|99
36.314 + UserNumber1|User Number 01|6810|4|null
36.315 + UserNumber2|User Number 02|6811|4|null
36.316 + UserNumber3|User Number 03|6812|4|null
36.317 + UserNumber4|User Number 04|6813|4|null
36.318 + UserNumber5|User Number 05|6814|4|null
36.319 + UserNumber6|User Number 06|6815|4|null
36.320 + UserNumber7|User Number 07|6816|4|null
36.321 + UserNumber8|User Number 08|6817|4|null
36.322 + UserNumber9|User Number 09|6818|4|null
36.323 + UserNumber10|User Number 10|6819|4|null
36.324 + UserChar1|User Char 01|6820|0|40
36.325 + UserChar2|User Char 02|6821|0|40
36.326 + UserChar3|User Char 03|6822|0|40
36.327 + UserChar4|User Char 04|6823|0|40
36.328 + UserChar5|User Char 05|6824|0|40
36.329 + UserChar6|User Char 06|6825|0|40
36.330 + UserChar7|User Char 07|6826|0|40
36.331 + UserChar8|User Char 08|6827|0|40
36.332 + UserChar9|User Char 09|6828|0|40
36.333 + UserChar10|User Char 10|6829|0|40
36.334 + UserAmount1|User Amount 01|6830|7|null
36.335 + UserAmount2|User Amount 02|6831|7|null
36.336 + UserAmount3|User Amount 03|6832|7|null
36.337 + UserAmount4|User Amount 04|6833|7|null
36.338 + UserAmount5|User Amount 05|6834|7|null
36.339 + UserAmount6|User Amount 06|6835|7|null
36.340 + UserAmount7|User Amount 07|6836|7|null
36.341 + UserAmount8|User Amount 08|6837|7|null
36.342 + UserAmount9|User Amount 09|6838|7|null
36.343 + UserAmount10|User Amount 10|6839|7|null
36.344 + UserCode1|User Code 01|6840|5|9999
36.345 + UserCode2|User Code 02|6841|5|9999
36.346 + UserCode3|User Code 03|6842|5|9999
36.347 + UserCode4|User Code 04|6843|5|9999
36.348 + UserCode5|User Code 05|6844|5|9999
36.349 + UserCode6|User Code 06|6845|5|9999
36.350 + UserCode7|User Code 07|6846|5|9999
36.351 + UserCode8|User Code 08|6847|5|9999
36.352 + UserCode9|User Code 09|6848|5|9999
36.353 + UserCode10|User Code 10|6849|5|9999
36.354 + UserDate1|User Date 01|6850|3|null
36.355 + UserDate2|User Date 02|6851|3|null
36.356 + UserDate3|User Date 03|6852|3|null
36.357 + UserDate4|User Date 04|6853|3|null
36.358 + UserDate5|User Date 05|6854|3|null
36.359 + UserDate6|User Date 06|6855|3|null
36.360 + UserDate7|User Date 07|6856|3|null
36.361 + UserDate8|User Date 08|6857|3|null
36.362 + UserDate9|User Date 09|6858|3|null
36.363 + UserDate10|User Date 10|6859|3|null
36.364 + UserRate1|User Rate 01|6860|2|null
36.365 + UserRate2|User Rate 02|6861|2|null
36.366 + UserRate3|User Rate 03|6862|2|null
36.367 + UserRate4|User Rate 04|6863|2|null
36.368 + UserRate5|User Rate 05|6864|2|null
36.369 + UserRate6|User Rate 06|6865|2|null
36.370 + UserRate7|User Rate 07|6866|2|null
36.371 + UserRate8|User Rate 08|6867|2|null
36.372 + UserRate9|User Rate 09|6868|2|null
36.373 + UserRate10|User Rate 10|6869|2|null
36.374 + Locator|Locator|6870|4|null
36.375 + UserNumber11|User Number 11|6871|4|null
36.376 + UserNumber12|User Number 12|6872|4|null
36.377 + UserNumber13|User Number 13|6873|4|null
36.378 + UserNumber14|User Number 14|6874|4|null
36.379 + UserNumber15|User Number 15|6875|4|null
36.380 + UserNumber16|User Number 16|6876|4|null
36.381 + UserNumber17|User Number 17|6877|4|null
36.382 + UserNumber18|User Number 18|6878|4|null
36.383 + UserNumber19|User Number 19|6879|4|null
36.384 + UserNumber20|User Number 20|6880|4|null
36.385 + UserChar11|User Char 11|6881|0|40
36.386 + UserChar12|User Char 12|6882|0|40
36.387 + UserChar13|User Char 13|6883|0|40
36.388 + UserChar14|User Char 14|6884|0|40
36.389 + UserChar15|User Char 15|6885|0|40
36.390 + UserChar16|User Char 16|6886|0|40
36.391 + UserChar17|User Char 17|6887|0|40
36.392 + UserChar18|User Char 18|6888|0|40
36.393 + UserChar19|User Char 19|6889|0|40
36.394 + UserChar20|User Char 20|9400|0|40
36.395 + UserAmount11|User Amount 11|9401|7|null
36.396 + UserAmount12|User Amount 12|9402|7|null
36.397 + UserAmount13|User Amount 13|9403|7|null
36.398 + UserAmount14|User Amount 14|9404|7|null
36.399 + UserAmount15|User Amount 15|9405|7|null
36.400 + UserAmount16|User Amount 16|9406|7|null
36.401 + UserAmount17|User Amount 17|9407|7|null
36.402 + UserAmount18|User Amount 18|9408|7|null
36.403 + UserAmount19|User Amount 19|9409|7|null
36.404 + UserAmount20|User Amount 20|9410|7|null
36.405 + UserCode11|User Code 11|9411|5|9999
36.406 + UserCode12|User Code 12|9412|5|9999
36.407 + UserCode13|User Code 13|9413|5|9999
36.408 + UserCode14|User Code 14|9414|5|9999
36.409 + UserCode15|User Code 15|9415|5|9999
36.410 + UserCode16|User Code 16|9416|5|9999
36.411 + UserCode17|User Code 17|9417|5|9999
36.412 + UserCode18|User Code 18|9418|5|9999
36.413 + UserCode19|User Code 19|9419|5|9999
36.414 + UserCode20|User Code 20|9420|5|9999
36.415 + UserDate11|User Date 11|9421|3|null
36.416 + UserDate12|User Date 12|9422|3|null
36.417 + UserDate13|User Date 13|9423|3|null
36.418 + UserDate14|User Date 14|9424|3|null
36.419 + UserDate15|User Date 15|9425|3|null
36.420 + UserDate16|User Date 16|9426|3|null
36.421 + UserDate17|User Date 17|9427|3|null
36.422 + UserDate18|User Date 18|9428|3|null
36.423 + UserDate19|User Date 19|9429|3|null
36.424 + UserDate20|User Date 20|9430|3|null
36.425 + UserRate11|User Rate 11|9431|2|null
36.426 + UserRate12|User Rate 12|9432|2|null
36.427 + UserRate13|User Rate 13|9433|2|null
36.428 + UserRate14|User Rate 14|9434|2|null
36.429 + UserRate15|User Rate 15|9435|2|null
36.430 + UserRate16|User Rate 16|9436|2|null
36.431 + UserRate17|User Rate 17|9437|2|null
36.432 + UserRate18|User Rate 18|9438|2|null
36.433 + UserRate19|User Rate 19|9439|2|null
36.434 + UserRate20|User Rate 20|9440|2|null
36.435 + ***|Note|Note
36.436 + ID|ID|2701|0|2
36.437 + IDType|ID Type|2702|5|4
36.438 + Code|Note Code|2703|5|199
36.439 + Text:1|Text Line 01|2704|0|40
36.440 + Text:2|Text Line 02|2704|0|40
36.441 + Text:3|Text Line 03|2704|0|40
36.442 + Text:4|Text Line 04|2704|0|40
36.443 + Text:5|Text Line 05|2704|0|40
36.444 + Text:6|Text Line 06|2704|0|40
36.445 + Text:7|Text Line 07|2704|0|40
36.446 + Text:8|Text Line 08|2704|0|40
36.447 + Text:9|Text Line 09|2704|0|40
36.448 + Text:10|Text Line 10|2704|0|40
36.449 + Text:11|Text Line 11|2704|0|40
36.450 + Text:12|Text Line 12|2704|0|40
36.451 + UserID|User ID|2705|5|4999
36.452 + EnterDate|Enter Date|2706|3|null
36.453 + EnterTime|Enter Time|2707|5|2359
36.454 + VoidFlag|Voided|2709|5|1
36.455 + VoidedBy|Voided By|2710|5|4999
36.456 + ExpirationDate|Expiration Date|2711|3|null
36.457 + Locator|Locator|2719|4|null
36.458 + TextLineCount|Text Line Count|2712|4|null
36.459 + ***|Share|Share
36.460 + ID|Share ID|1001|0|2
36.461 + CheckDigits|Check Digits|1002|0|2
36.462 + Type|Share Type|1003|5|9999
36.463 + LastFMDate|Last FM Date|1004|3|null
36.464 + LastTranDate|Last Transaction Date|1005|3|null
36.465 + OpenDate|Open Date|1006|3|null
36.466 + CloseDate|Close Date|1007|3|null
36.467 + Reference|Reference|1008|0|20
36.468 + WarningCode:1|Warning 1 Code|1009|5|99
36.469 + WarningCode:2|Warning 2 Code|1009|5|99
36.470 + WarningCode:3|Warning 3 Code|1009|5|99
36.471 + WarningCode:4|Warning 4 Code|1009|5|99
36.472 + WarningCode:5|Warning 5 Code|1009|5|99
36.473 + WarningCode:6|Warning 6 Code|1009|5|99
36.474 + WarningCode:7|Warning 7 Code|1009|5|99
36.475 + WarningCode:8|Warning 8 Code|1009|5|99
36.476 + Service:1|Service 1|1010|5|99
36.477 + Service:2|Service 2|1010|5|99
36.478 + Service:3|Service 3|1010|5|99
36.479 + Service:4|Service 4|1010|5|99
36.480 + Service:5|Service 5|1010|5|99
36.481 + Service:6|Service 6|1010|5|99
36.482 + Service:7|Service 7|1010|5|99
36.483 + Service:8|Service 8|1010|5|99
36.484 + ShareCode|Share Code|1011|5|3
36.485 + IRSCode|IRS Code|1012|5|15
36.486 + DivPostCode|Dividend Post Code|1013|5|3
36.487 + LastDivDate|Last Dividend Date|1014|3|null
36.488 + LastDivAmount|Last Dividend Amt|1015|7|null
36.489 + DivYTD|Dividend YTD|1016|7|null
36.490 + DivLastYear|Dividend Last Yr|1017|7|null
36.491 + DivFromOpen|Dividend From Open|1018|7|null
36.492 + DivType|Dividend Type|1019|5|9999
36.493 + DivRate|Dividend Rate|1020|2|null
36.494 + DivAccrualdate|Dividend Accrual Date|1021|3|null
36.495 + DivAccrual|Dividend Accrual|1022|7|null
36.496 + WithholdingCode|Fed Withholding Code|1023|5|1
36.497 + WithholdingYTD|Fed Withheld YTD|1024|7|null
36.498 + WithholdingLastYear|Fed Withheld Lst Yr|1025|7|null
36.499 + PenaltyType|Penalty Type|1026|5|9
36.500 + PenaltyYTD|Penalty YTD|1027|7|null
36.501 + PenaltyLastYear|Penalty Last Year|1028|7|null
36.502 + Balance|Balance|1029|7|null
36.503 + OriginalBalance|Original Balance|1030|7|null
36.504 + MinimumBalance|Minimum Balance|1031|7|null
36.505 + InsuranceType|Insurance Type|1032|5|99
36.506 + InsuranceMaximum|Insurance Maximum|1033|7|null
36.507 + InsuranceBalanceAge:1|Ins Balance Age 55|1034|7|null
36.508 + InsuranceBalanceAge:2|Ins Balance Age 60|1034|7|null
36.509 + InsuranceBalanceAge:3|Ins Balance Age 65|1034|7|null
36.510 + InsuranceBalanceAge:4|Ins Balance Age 70|1034|7|null
36.511 + MinimumDeposit|Minimum Deposit|1035|7|null
36.512 + MinimumWithdrawal|Minimum Withdraw|1036|7|null
36.513 + WithdrawalLimit|Withdrawal Limit|1037|5|9999
36.514 + WithdrawalCount|Withdrawal Count|1038|5|9999
36.515 + WithdrawnFromOpen|Withdraw From Open|1039|7|null
36.516 + WithdrawalFeetYpe|Withdrawal Fee Type|1040|5|5
36.517 + WithdrawalFeeCount|Withdrawal Fee Count|1041|5|9999
36.518 + LastPurgeDate|Last Purge Date|1043|3|null
36.519 + StatementGroup|Statement Group|1044|5|99
36.520 + StatementDate|Statement Date|1045|3|null
36.521 + StatementMailCode|Statement Mail Code|1046|5|99
36.522 + RegECount|Reg E Count|1047|5|9999
36.523 + RegDCheckCount|Reg D Check Count|1048|5|9999
36.524 + RegDTransferCount|Reg D Transfer Count|1049|5|9999
36.525 + MaturityPostCode|Maturity Post Code|1050|5|3
36.526 + MaturityDate|Maturity Date|1051|3|null
36.527 + TermFrequency|Term Frequency|1052|5|1
36.528 + TermPeriod|Term Period|1053|5|9999
36.529 + CertificateNumber|Certificate Number|1054|0|10
36.530 + Description|Description|1055|0|30
36.531 + LoanPaymentHold|Loan Payment Hold|1056|7|null
36.532 + StatementPrevDate|Statement Previous Date|1057|3|null
36.533 + BondIntYTD|Bond Interest YTD|1058|7|null
36.534 + BondIntLastYear|Bond Int Last Year|1059|7|null
36.535 + NSFMonthToDate|NSF Month to Date|1060|5|9999
36.536 + NSFYTD|NSF Year to Date|1061|5|9999
36.537 + NSFLastYear|NSF Last Year|1062|5|9999
36.538 + XfrMonthToDate|XFR Month to Date|1063|5|9999
36.539 + XfrYTD|XFR Year to Date|1064|5|9999
36.540 + XfrLastYear|XFR Last Year|1065|5|9999
36.541 + WarningExpiration:1|Warning 1 Expiration|1066|3|null
36.542 + WarningExpiration:2|Warning 2 Expiration|1066|3|null
36.543 + WarningExpiration:3|Warning 3 Expiration|1066|3|null
36.544 + WarningExpiration:4|Warning 4 Expiration|1066|3|null
36.545 + WarningExpiration:5|Warning 5 Expiration|1066|3|null
36.546 + WarningExpiration:6|Warning 6 Expiration|1066|3|null
36.547 + WarningExpiration:7|Warning 7 Expiration|1066|3|null
36.548 + WarningExpiration:8|Warning 8 Expiration|1066|3|null
36.549 + FeeCount:1|Fee Count 1|1067|5|9999
36.550 + FeeCount:2|Fee Count 2|1067|5|9999
36.551 + FeeCount:3|Fee Count 3|1067|5|9999
36.552 + FeeCount:4|Fee Count 4|1067|5|9999
36.553 + StateWithholdingCode|State Withholding Code|1068|5|1
36.554 + StateWithholdingYTD|State Withheld YTD|1069|7|null
36.555 + StateWithholdingLastYear|State Withheld Lst Yr|1070|7|null
36.556 + CUTotalsUseCode|CU Totals Code|1071|5|1
36.557 + DivPeriodStart|Dividend Period Start|1072|3|null
36.558 + DivPeriodBaldAys|Div BalDays|1073|7|null
36.559 + ChargeOffAmount|Charge-off Amount|1074|7|null
36.560 + ChargeOffDate|Charge-off Date|1075|3|null
36.561 + ChargeOffType|Charge-off Type|1076|5|99
36.562 + CreditReportingCode|Credit Reporting Code|1077|5|99
36.563 + CreditReportNumber|Credit Report Number|1078|0|17
36.564 + Branch|Branch|1079|5|9999
36.565 + CreditReportOccurDate|Credit Report Occurrence|1080|3|null
36.566 + CreditReportLastsTatus|Credit Report Last Status|1081|5|99
36.567 + CreditReportComment|Credit Report Comment|1082|0|2
36.568 + BumpRate|Bump Rate|1083|2|null
36.569 + BumpEffectiveDate|Bump Effective Date|1084|3|null
36.570 + BumpExpirationDate|Bump Expiration Date|1085|3|null
36.571 + IRSPlan|IRS Plan|1086|5|99
36.572 + OriginalDepositDate|Original Deposit Date|1087|3|null
36.573 + OriginalDeposit|Original Deposit|1088|7|null
36.574 + CreditReportConsumerInfo|Credit Report Consumer Info|1089|0|2
36.575 + CreditReportCompliance|Credit Report Compliance Info|1090|0|2
36.576 + ActivityDate|Activity Date|1091|3|null
36.577 + CourtesyPayMonthToDate|Courtesy Pay Month to Date|1092|5|9999
36.578 + CourtesyPayYTD|Courtesy Pay Year to Date|1093|5|9999
36.579 + CourtesyPayLastYear|Courtesy Pay Last Year|1094|5|9999
36.580 + OverdraftTolerance|Overdraft Tolerance|1095|7|null
36.581 + CDDivAccrytd|Cert Accrual YTD|1096|7|null
36.582 + CDDivAccrlastyr|Cert Accrual Last Yr|1097|7|null
36.583 + AmortizationSchd|Amortization Schedule|1098|5|9999
36.584 + AmortizationSchdType|Amortize Schd Type|1099|5|1
36.585 + DividendRateMarginsIgn|Dividend Rate Margin Sign|1100|5|1
36.586 + DividendRatePeriodDate|Periodic Cap Start Date|1101|3|null
36.587 + DividendRatePeriodFREQ|Periodic Cap Frequency|1102|5|1
36.588 + DividendRateMargin|Dividend Rate Margin|1103|10|null
36.589 + DividendRateMax|Dividend Rate Maximum|1104|10|null
36.590 + DividendRateMin|Dividend Rate Minimum|1105|10|null
36.591 + PeriodicCap|Periodic Cap|1106|10|null
36.592 + PeriodicStartRate|Periodic Cap Start Rt|1107|10|null
36.593 + CallItemsChd|Call Item Schedule|1108|5|9999
36.594 + CallItemsChdType|Call Item Schd Type|1109|5|1
36.595 + MemberUserTransferCode|Member User Transfer Code|1110|5|9999
36.596 + CorporateUserTransferCode|Corporate User Transfer Code|1111|5|9999
36.597 + MemberBranchSupport|Member Branch Support|1112|5|1
36.598 + MCDivYTD|Mat Cert Div YTD|1113|7|null
36.599 + MCDivLastYear|Mat Cert Div Last Yr|1114|7|null
36.600 + UserChar1|Seller|1115|0|40
36.601 + UserChar2|Reason for Rate Override|1116|0|40
36.602 + UserChar3|User Char 03|1117|0|40
36.603 + UserChar4|User Char 04|1118|0|40
36.604 + UserAmount1|User Amount 01|1119|7|null
36.605 + UserAmount2|User Amount 02|1120|7|null
36.606 + UserDate1|Negative Date|1121|3|null
36.607 + UserDate2|User Date 02|1122|3|null
36.608 + PutItemsChd|Put Item Schedule|1123|5|9999
36.609 + PutItemsChdType|Put Item Schd Type|1124|5|1
36.610 + LedgerAccrual|Ledger Accrual|1125|7|null
36.611 + LedgerAccrualdate|Ledger Accrual Date|1126|3|null
36.612 + CurrDivPayable|Current Div Payable|1127|7|null
36.613 + CurrMonthPaidDiv|Current Mth Paid Div|1136|7|null
36.614 + MTDPaidDivs|MTD Paid Dividends|1128|7|null
36.615 + MTDAccruedDivs|MTD Accrued Div|1130|7|null
36.616 + MTDEarnedDivs|MTD Earned Div|1129|7|null
36.617 + PreMthDivPaid:1|01 Mth Pre Div Paid|1133|7|null
36.618 + PreMthDivPaid:2|02 Mth Pre Div Paid|1133|7|null
36.619 + PreMthDivPaid:3|03 Mth Pre Div Paid|1133|7|null
36.620 + PreMthDivAccrued:1|01 Mth Pre Div Accr|1132|7|null
36.621 + PreMthDivAccrued:2|02 Mth Pre Div Accr|1132|7|null
36.622 + PreMthDivAccrued:3|03 Mth Pre Div Accr|1132|7|null
36.623 + PreMthDivEarned:1|01 Mth Pre Div Earned|1131|7|null
36.624 + PreMthDivEarned:2|02 Mth Pre Div Earned|1131|7|null
36.625 + PreMthDivEarned:3|03 Mth Pre Div Earned|1131|7|null
36.626 + PreMthDivEarned:4|04 Mth Pre Div Earned|1131|7|null
36.627 + PreMthDivEarned:5|05 Mth Pre Div Earned|1131|7|null
36.628 + PreMthDivEarned:6|06 Mth Pre Div Earned|1131|7|null
36.629 + PreMthDivEarned:7|07 Mth Pre Div Earned|1131|7|null
36.630 + PreMthDivEarned:8|08 Mth Pre Div Earned|1131|7|null
36.631 + PreMthDivEarned:9|09 Mth Pre Div Earned|1131|7|null
36.632 + PreMthDivEarned:10|10 Mth Pre Div Earned|1131|7|null
36.633 + PreMthDivEarned:11|11 Mth Pre Div Earned|1131|7|null
36.634 + PreMthDivEarned:12|12 Mth Pre Div Earned|1131|7|null
36.635 + MTDPriorRateAccrual|MTD Prior Rate Accr|1135|7|null
36.636 + LastAccrualupdatedate|Last Accr Updt Date|1134|3|null
36.637 + MICRAcctNumber|MICR Account Number|1137|0|20
36.638 + UnpaidFeeYTD|Unpaid Item Fee YTD|1138|7|null
36.639 + UnpaidFeeLastYear|Unpaid Item Fee Lst Yr|1139|7|null
36.640 + OverdraftFeeYTD|OD Item Fee YTD|1140|7|null
36.641 + OverdraftFeeLastYr|OD Item Fee Last Year|1141|7|null
36.642 + AvailableBalance|Available Balance|1280|7|null
36.643 + ***|Share Hold|Share Hold
36.644 + Type|Hold Type|501|5|19
36.645 + EffectiveDate|Effective Date|502|3|null
36.646 + ExpirationDate|Expiration Date|503|3|null
36.647 + Reference1|Reference 1|504|0|10
36.648 + Reference2|Reference 2|505|0|10
36.649 + Amount|Hold Amount|506|7|null
36.650 + PayeeName|Payee Name|507|0|16
36.651 + ExpirationTime|Expiration Time|508|5|2359
36.652 + Locator|Locator|509|4|null
36.653 + MemberBranch|Member Branch|510|0|4
36.654 + StopPayCode|Stop Reason Code|511|5|99
36.655 + Reference3|Reference 3|512|0|40
36.656 + Reference4|Reference 4|513|0|40
36.657 + MatchDate|Match Date|514|3|null
36.658 + MatchTime|Match Time|515|5|2359
36.659 + FeeCode|Fee Code|516|5|9999
36.660 + FeeDescription|Fee Description|580|1|40
36.661 + ***|Share Name|Share Name
36.662 + Type|Name Type|101|5|53
36.663 + SubType|Name SubType|102|5|99
36.664 + MailOverride|Mail Override|103|5|1
36.665 + SSNOverride|SSN/TIN Override|104|5|3
36.666 + SSNCertification|SSN/TIN Certification|105|5|2
36.667 + SSNType|SSN/TIN Type|106|5|9
36.668 + EffectiveDate|Effective Date|107|3|null
36.669 + ExpirationDate|Expiration Date|108|3|null
36.670 + BirthDate|Birth Date|109|3|null
36.671 + Title|Title|110|0|8
36.672 + First|First Name|111|0|20
36.673 + Middle|Middle Name|112|0|10
36.674 + Last|Last Name|113|0|40
36.675 + Suffix|Suffix|114|0|4
36.676 + ExtraAddress|Extra Address|115|0|40
36.677 + Street|Street|116|0|40
36.678 + City|City|117|0|40
36.679 + State|State|118|0|10
36.680 + ZipCode|Zip Code|119|0|10
36.681 + HomePhone|Home Phone|120|0|16
36.682 + SSN|SSN/TIN|121|0|9
36.683 + WorkPhone|Work Phone|122|0|16
36.684 + LastFMDate|Last FM Date|123|3|null
36.685 + CarrierRoute|Carrier Route|124|0|4
36.686 + AddressType|Address Type|125|5|2
36.687 + BeneficiaryPercent|Beneficiary Percent|126|2|null
36.688 + IRSCorrection|IRS Correction|127|5|1
36.689 + WorkPhoneExtension|Work Phone Ext|128|0|6
36.690 + DeathDate|Death Date|130|3|null
36.691 + ECOACode|ECOA Code|131|5|11
36.692 + Country|Country|132|0|20
36.693 + CountryCode|Country Code|133|0|2
36.694 + Email|E-Mail Address|134|0|40
36.695 + MothersMaidenName|Mother's Maiden Name|135|0|20
36.696 + EmployerName|Current Employer|136|0|40
36.697 + AltEmail|Alt E-Mail Address|137|0|40
36.698 + Locator|Locator|138|4|null
36.699 + MobilePhone|Mobile Phone|139|0|16
36.700 + PagerNumber|Pager Number|140|0|16
36.701 + USPersonFlag|U.S. Person Flag|141|5|1
36.702 + IdentDocFlag:1|Documentary Flag 1|142|5|1
36.703 + IdentDocFlag:2|Documentary Flag 2|142|5|1
36.704 + IdentDocFlag:3|Documentary Flag 3|142|5|1
36.705 + IdentIDType:1|ID Type 1|143|5|999
36.706 + IdentIDType:2|ID Type 2|143|5|999
36.707 + IdentIDType:3|ID Type 3|143|5|999
36.708 + IdentIDDescription:1|ID Description 1|144|0|40
36.709 + IdentIDDescription:2|ID Description 2|144|0|40
36.710 + IdentIDDescription:3|ID Description 3|144|0|40
36.711 + IdentIDNumber:1|ID Number 1|145|0|40
36.712 + IdentIDNumber:2|ID Number 2|145|0|40
36.713 + IdentIDNumber:3|ID Number 3|145|0|40
36.714 + IdentIDIssueDate:1|ID Issuance Date 1|146|3|null
36.715 + IdentIDIssueDate:2|ID Issuance Date 2|146|3|null
36.716 + IdentIDIssueDate:3|ID Issuance Date 3|146|3|null
36.717 + IdentIDExpireDate:1|ID Expiration Date 1|147|3|null
36.718 + IdentIDExpireDate:2|ID Expiration Date 2|147|3|null
36.719 + IdentIDExpireDate:3|ID Expiration Date 3|147|3|null
36.720 + IdentIDVerifyDate:1|ID Verification Date 1|148|3|null
36.721 + IdentIDVerifyDate:2|ID Verification Date 2|148|3|null
36.722 + IdentIDVerifyDate:3|ID Verification Date 3|148|3|null
36.723 + Occupation|Occupation|149|0|20
36.724 + UserChar1|User Char 01|150|0|40
36.725 + UserChar2|User Char 02|151|0|40
36.726 + UserChar3|User Char 03|152|0|40
36.727 + UserChar4|User Char 04|153|0|40
36.728 + UserAmount1|User Amount 01|154|7|null
36.729 + UserAmount2|User Amount 02|155|7|null
36.730 + UserDate1|User Date 01|156|3|null
36.731 + UserDate2|User Date 02|157|3|null
36.732 + LastAddrChgDate|Address Change Date|158|3|null
36.733 + LastAddrVerifDate|Address Verify Date|159|3|null
36.734 + CreditReportConsumerInfo|Credit Report Consumer Info|160|0|2
36.735 + ShortName|Short Name|180|0|16
36.736 + LongName|Long Name|181|1|40
36.737 + License|License|129|0|20
36.738 + ***|Share Transfer|Share Transfer
36.739 + Type|Transfer Type|901|5|8
36.740 + AccountNumber|Account|902|0|10
36.741 + IDType|ID Type|903|5|2
36.742 + ID|ID|904|0|2
36.743 + Amount|Amount|905|7|null
36.744 + Percent|Percent|906|2|null
36.745 + EffectiveDate|Effective Date|907|3|null
36.746 + ExpirationDate|Expiration Date|908|3|null
36.747 + AmountOption|Amount Option|909|5|5
36.748 + NextDate|Next Transfer Date|910|3|null
36.749 + Frequency|Transfer Frequency|911|5|14
36.750 + Day1|Transfer Day 1|912|5|31
36.751 + Day2|Transfer Day 2|913|5|31
36.752 + Locator|Locator|914|4|null
36.753 + MinimumBalance|Minimum Balance|915|7|null
36.754 + MaximumBalance|Maximum Balance|916|7|null
36.755 + RegE|Reg E|917|5|1
36.756 + LastDate|Last Transfer Date|918|3|null
36.757 + PaymentType|Transfer Payment Type|919|5|1
36.758 + SweepMinimum|Sweep Minimum|920|7|null
36.759 + ***|Share CheckOrder|Share Check Order
36.760 + Processor|Processor|6501|5|3
36.761 + Status|Status|6502|5|6
36.762 + OpenDate|Open Date|6503|3|null
36.763 + LastOrderDate|Last Order Date|6504|3|null
36.764 + StatusDate|Status Date|6505|3|null
36.765 + LastFMDate|Last FM Date|6506|3|null
36.766 + CheckType|Check Type|6507|5|1
36.767 + Branch|Branch|6508|5|9999
36.768 + StartNumber|Starting Number|6509|4|null
36.769 + Quantity|Quantity|6510|4|null
36.770 + ChecksTyle|Check Style|6511|0|12
36.771 + CoversTyle|Cover Style|6512|0|8
36.772 + CutNumber|Cut Style|6513|0|8
36.773 + BillingCode|Billing Code|6514|5|9
36.774 + ShipMethod|Shipping Method|6515|5|13
36.775 + ShipTo|Ship To|6516|5|4
36.776 + ImprintFont|Imprint Font Style|6517|5|8
36.777 + ImprintJustify|Imprint Justification|6518|5|2
36.778 + ImprintLine:1|Imprint Line 1|6519|0|40
36.779 + ImprintLine:2|Imprint Line 2|6519|0|40
36.780 + ImprintLine:3|Imprint Line 3|6519|0|40
36.781 + ImprintLine:4|Imprint Line 4|6519|0|40
36.782 + ImprintLine:5|Imprint Line 5|6519|0|40
36.783 + ImprintLine:6|Imprint Line 6|6519|0|40
36.784 + ImprintPhone|Imprint Phone|6520|0|12
36.785 + ImprintZipCode|Imprint Zip Code|6521|0|10
36.786 + MailAddress:1|Mailing Address 1|6522|0|40
36.787 + MailAddress:2|Mailing Address 2|6522|0|40
36.788 + MailAddress:3|Mailing Address 3|6522|0|40
36.789 + MailAddress:4|Mailing Address 4|6522|0|40
36.790 + MailAddress:5|Mailing Address 5|6522|0|40
36.791 + MailAddress:6|Mailing Address 6|6522|0|40
36.792 + MailZipCode|Mailing Zip Code|6523|0|10
36.793 + OverSigLine:1|Over Signature Line 1|6524|0|40
36.794 + OverSigLine:2|Over Signature Line 2|6524|0|40
36.795 + OverSigFont|Over Signature Font Style|6525|5|8
36.796 + NumberSigLineS|Number of Signature Lines|6526|5|3
36.797 + CoverInitials|Cover Initials|6527|0|3
36.798 + SpecialInstR:1|Special Instructions 1|6528|0|25
36.799 + SpecialInstR:2|Special Instructions 2|6528|0|25
36.800 + SpecialInstR:3|Special Instructions 3|6528|0|25
36.801 + SpecialInstR:4|Special Instructions 4|6528|0|25
36.802 + SpecialInstR:5|Special Instructions 5|6528|0|25
36.803 + SpecialInstR:6|Special Instructions 6|6528|0|25
36.804 + SpecialInstR:7|Special Instructions 7|6528|0|25
36.805 + SpecialInstR:8|Special Instructions 8|6528|0|25
36.806 + SSN:1|Imprint SSN/TIN 1|6529|0|9
36.807 + SSN:2|Imprint SSN/TIN 2|6529|0|9
36.808 + License:1|Imprint License 1|6530|0|25
36.809 + License:2|Imprint License 2|6530|0|25
36.810 + Binding|Binding Mnemonic|6531|0|6
36.811 + Design|Design Mnemonic|6532|0|8
36.812 + BusinessSerial|Business Serial Letters|6533|0|3
36.813 + BusNumCopies|Business Number of Copies|6534|5|4
36.814 + BusBindingsTyle|Business Binding Style|6535|5|11
36.815 + BusVoucherNumber|Business Voucher Number|6536|0|6
36.816 + BusCaptions:1|Business Caption 1|6537|0|2
36.817 + BusCaptions:2|Business Caption 2|6537|0|2
36.818 + BusCaptions:3|Business Caption 3|6537|0|2
36.819 + BusCaptions:4|Business Caption 4|6537|0|2
36.820 + BusCaptions:5|Business Caption 5|6537|0|2
36.821 + BusCaptions:6|Business Caption 6|6537|0|2
36.822 + BusCaptions:7|Business Caption 7|6537|0|2
36.823 + BusCaptions:8|Business Caption 8|6537|0|2
36.824 + PromoNumber|Promo Number|6538|0|4
36.825 + AcctAddrInkColor|Account/Address Ink Color|6539|5|7
36.826 + TitleInkColor|Titleplate Ink Color|6540|5|7
36.827 + CutInkColor|Cut Ink Color|6541|5|7
36.828 + TaxExemptCode|Tax Exempt Code|6542|5|1
36.829 + RerunReason|Rerun Reason|6543|5|5
36.830 + ImprintLineSize:1|Imprint Line 1 Size|6544|5|1
36.831 + ImprintLineSize:2|Imprint Line 2 Size|6544|5|1
36.832 + ImprintLineSize:3|Imprint Line 3 Size|6544|5|1
36.833 + ImprintLineSize:4|Imprint Line 4 Size|6544|5|1
36.834 + ImprintLineSize:5|Imprint Line 5 Size|6544|5|1
36.835 + ImprintLineSize:6|Imprint Line 6 Size|6544|5|1
36.836 + OverSigJustify|Over Signature Justification|6545|5|2
36.837 + OverSigLineSize|Over Signature Line Size|6546|5|1
36.838 + PONumber|Purchase Order|6547|0|10
36.839 + ChargeShipping|Charge Shipping To|6548|5|1
36.840 + ImprintUsage:1|Imprint Line 1 Usage|6549|5|1
36.841 + ImprintUsage:2|Imprint Line 2 Usage|6549|5|1
36.842 + ImprintUsage:3|Imprint Line 3 Usage|6549|5|1
36.843 + ImprintUsage:4|Imprint Line 4 Usage|6549|5|1
36.844 + ImprintUsage:5|Imprint Line 5 Usage|6549|5|1
36.845 + ImprintUsage:6|Imprint Line 6 Usage|6549|5|1
36.846 + Accent|Accent Figure|6550|0|5
36.847 + Phantom|Phantom Figure|6551|0|5
36.848 + SigFigure|Signature Figure|6552|0|5
36.849 + CheckInitials|Check Initials|6553|0|3
36.850 + ImprintCity|Imprint City|6554|0|30
36.851 + ImprintState|Imprint State|6555|0|2
36.852 + MailCity|Mailing City|6556|0|30
36.853 + MailState|Mailing State|6557|0|2
36.854 + MICRLine|MICR Line|6558|0|20
36.855 + UserID|User ID|6559|5|4999
36.856 + LastFreeOrder|Last Free Order|6560|3|null
36.857 + Locator|Locator|6561|4|null
36.858 + ***|Share Tracking|Share Tracking
36.859 + Type|Tracking Type|6891|5|99
36.860 + ID|ID|6802|0|2
36.861 + IDType|ID Type|6803|5|4
36.862 + UserID|User ID|6804|5|4999
36.863 + FMLastDate|Last FM Date|6805|3|null
36.864 + CreationDate|Creation Date|6806|3|null
36.865 + CreationTime|Creation Time|6807|5|2359
36.866 + ExpireDate|Expiration Date|6808|3|null
36.867 + TrackingCode|Tracking Code|6809|5|99
36.868 + UserNumber1|User Number 01|6810|4|null
36.869 + UserNumber2|User Number 02|6811|4|null
36.870 + UserNumber3|User Number 03|6812|4|null
36.871 + UserNumber4|User Number 04|6813|4|null
36.872 + UserNumber5|User Number 05|6814|4|null
36.873 + UserNumber6|User Number 06|6815|4|null
36.874 + UserNumber7|User Number 07|6816|4|null
36.875 + UserNumber8|User Number 08|6817|4|null
36.876 + UserNumber9|User Number 09|6818|4|null
36.877 + UserNumber10|User Number 10|6819|4|null
36.878 + UserChar1|User Char 01|6820|0|40
36.879 + UserChar2|User Char 02|6821|0|40
36.880 + UserChar3|User Char 03|6822|0|40
36.881 + UserChar4|User Char 04|6823|0|40
36.882 + UserChar5|User Char 05|6824|0|40
36.883 + UserChar6|User Char 06|6825|0|40
36.884 + UserChar7|User Char 07|6826|0|40
36.885 + UserChar8|User Char 08|6827|0|40
36.886 + UserChar9|User Char 09|6828|0|40
36.887 + UserChar10|User Char 10|6829|0|40
36.888 + UserAmount1|User Amount 01|6830|7|null
36.889 + UserAmount2|User Amount 02|6831|7|null
36.890 + UserAmount3|User Amount 03|6832|7|null
36.891 + UserAmount4|User Amount 04|6833|7|null
36.892 + UserAmount5|User Amount 05|6834|7|null
36.893 + UserAmount6|User Amount 06|6835|7|null
36.894 + UserAmount7|User Amount 07|6836|7|null
36.895 + UserAmount8|User Amount 08|6837|7|null
36.896 + UserAmount9|User Amount 09|6838|7|null
36.897 + UserAmount10|User Amount 10|6839|7|null
36.898 + UserCode1|User Code 01|6840|5|9999
36.899 + UserCode2|User Code 02|6841|5|9999
36.900 + UserCode3|User Code 03|6842|5|9999
36.901 + UserCode4|User Code 04|6843|5|9999
36.902 + UserCode5|User Code 05|6844|5|9999
36.903 + UserCode6|User Code 06|6845|5|9999
36.904 + UserCode7|User Code 07|6846|5|9999
36.905 + UserCode8|User Code 08|6847|5|9999
36.906 + UserCode9|User Code 09|6848|5|9999
36.907 + UserCode10|User Code 10|6849|5|9999
36.908 + UserDate1|User Date 01|6850|3|null
36.909 + UserDate2|User Date 02|6851|3|null
36.910 + UserDate3|User Date 03|6852|3|null
36.911 + UserDate4|User Date 04|6853|3|null
36.912 + UserDate5|User Date 05|6854|3|null
36.913 + UserDate6|User Date 06|6855|3|null
36.914 + UserDate7|User Date 07|6856|3|null
36.915 + UserDate8|User Date 08|6857|3|null
36.916 + UserDate9|User Date 09|6858|3|null
36.917 + UserDate10|User Date 10|6859|3|null
36.918 + UserRate1|User Rate 01|6860|2|null
36.919 + UserRate2|User Rate 02|6861|2|null
36.920 + UserRate3|User Rate 03|6862|2|null
36.921 + UserRate4|User Rate 04|6863|2|null
36.922 + UserRate5|User Rate 05|6864|2|null
36.923 + UserRate6|User Rate 06|6865|2|null
36.924 + UserRate7|User Rate 07|6866|2|null
36.925 + UserRate8|User Rate 08|6867|2|null
36.926 + UserRate9|User Rate 09|6868|2|null
36.927 + UserRate10|User Rate 10|6869|2|null
36.928 + Locator|Locator|6870|4|null
36.929 + UserNumber11|User Number 11|6871|4|null
36.930 + UserNumber12|User Number 12|6872|4|null
36.931 + UserNumber13|User Number 13|6873|4|null
36.932 + UserNumber14|User Number 14|6874|4|null
36.933 + UserNumber15|User Number 15|6875|4|null
36.934 + UserNumber16|User Number 16|6876|4|null
36.935 + UserNumber17|User Number 17|6877|4|null
36.936 + UserNumber18|User Number 18|6878|4|null
36.937 + UserNumber19|User Number 19|6879|4|null
36.938 + UserNumber20|User Number 20|6880|4|null
36.939 + UserChar11|User Char 11|6881|0|40
36.940 + UserChar12|User Char 12|6882|0|40
36.941 + UserChar13|User Char 13|6883|0|40
36.942 + UserChar14|User Char 14|6884|0|40
36.943 + UserChar15|User Char 15|6885|0|40
36.944 + UserChar16|User Char 16|6886|0|40
36.945 + UserChar17|User Char 17|6887|0|40
36.946 + UserChar18|User Char 18|6888|0|40
36.947 + UserChar19|User Char 19|6889|0|40
36.948 + UserChar20|User Char 20|9400|0|40
36.949 + UserAmount11|User Amount 11|9401|7|null
36.950 + UserAmount12|User Amount 12|9402|7|null
36.951 + UserAmount13|User Amount 13|9403|7|null
36.952 + UserAmount14|User Amount 14|9404|7|null
36.953 + UserAmount15|User Amount 15|9405|7|null
36.954 + UserAmount16|User Amount 16|9406|7|null
36.955 + UserAmount17|User Amount 17|9407|7|null
36.956 + UserAmount18|User Amount 18|9408|7|null
36.957 + UserAmount19|User Amount 19|9409|7|null
36.958 + UserAmount20|User Amount 20|9410|7|null
36.959 + UserCode11|User Code 11|9411|5|9999
36.960 + UserCode12|User Code 12|9412|5|9999
36.961 + UserCode13|User Code 13|9413|5|9999
36.962 + UserCode14|User Code 14|9414|5|9999
36.963 + UserCode15|User Code 15|9415|5|9999
36.964 + UserCode16|User Code 16|9416|5|9999
36.965 + UserCode17|User Code 17|9417|5|9999
36.966 + UserCode18|User Code 18|9418|5|9999
36.967 + UserCode19|User Code 19|9419|5|9999
36.968 + UserCode20|User Code 20|9420|5|9999
36.969 + UserDate11|User Date 11|9421|3|null
36.970 + UserDate12|User Date 12|9422|3|null
36.971 + UserDate13|User Date 13|9423|3|null
36.972 + UserDate14|User Date 14|9424|3|null
36.973 + UserDate15|User Date 15|9425|3|null
36.974 + UserDate16|User Date 16|9426|3|null
36.975 + UserDate17|User Date 17|9427|3|null
36.976 + UserDate18|User Date 18|9428|3|null
36.977 + UserDate19|User Date 19|9429|3|null
36.978 + UserDate20|User Date 20|9430|3|null
36.979 + UserRate11|User Rate 11|9431|2|null
36.980 + UserRate12|User Rate 12|9432|2|null
36.981 + UserRate13|User Rate 13|9433|2|null
36.982 + UserRate14|User Rate 14|9434|2|null
36.983 + UserRate15|User Rate 15|9435|2|null
36.984 + UserRate16|User Rate 16|9436|2|null
36.985 + UserRate17|User Rate 17|9437|2|null
36.986 + UserRate18|User Rate 18|9438|2|null
36.987 + UserRate19|User Rate 19|9439|2|null
36.988 + UserRate20|User Rate 20|9440|2|null
36.989 + ***|Share Note|Share Note
36.990 + ID|ID|2701|0|2
36.991 + IDType|ID Type|2702|5|4
36.992 + Code|Note Code|2713|5|199
36.993 + Text:1|Text Line 01|2704|0|40
36.994 + Text:2|Text Line 02|2704|0|40
36.995 + Text:3|Text Line 03|2704|0|40
36.996 + Text:4|Text Line 04|2704|0|40
36.997 + Text:5|Text Line 05|2704|0|40
36.998 + Text:6|Text Line 06|2704|0|40
36.999 + Text:7|Text Line 07|2704|0|40
36.1000 + Text:8|Text Line 08|2704|0|40
36.1001 + Text:9|Text Line 09|2704|0|40
36.1002 + Text:10|Text Line 10|2704|0|40
36.1003 + Text:11|Text Line 11|2704|0|40
36.1004 + Text:12|Text Line 12|2704|0|40
36.1005 + UserID|User ID|2705|5|4999
36.1006 + EnterDate|Enter Date|2706|3|null
36.1007 + EnterTime|Enter Time|2707|5|2359
36.1008 + VoidFlag|Voided|2709|5|1
36.1009 + VoidedBy|Voided By|2710|5|4999
36.1010 + ExpirationDate|Expiration Date|2711|3|null
36.1011 + Locator|Locator|2719|4|null
36.1012 + TextLineCount|Text Line Count|2712|4|null
36.1013 + ***|Share Transaction|Share Transaction
36.1014 + AccountNumber|Account Number|0|0|10
36.1015 + ID|ID|0|0|2
36.1016 + IDType|ID Type|0|5|1
36.1017 + CommentCode|Comment Code|0|5|1
36.1018 + TransferCode|Transfer Code|0|5|1
36.1019 + AdjustmentCode|Adjustment Code|0|5|1
36.1020 + RegECode|Reg E Code|0|5|1
36.1021 + RegDCheckCode|Reg D Check Code|0|5|1
36.1022 + RegDTransferCode|Reg D Transfer Code|0|5|1
36.1023 + VoidCode|Void Code|0|5|1
36.1024 + SubActionCode|Sub Action Code|0|0|1
36.1025 + SequenceNumber|Sequence Number|0|4|null
36.1026 + EffectiveDate|Effective Date|0|3|null
36.1027 + PostDate|Post Date|0|3|null
36.1028 + PostTime|Post Time|0|5|2359
36.1029 + UserNumber|User Number|0|5|4999
36.1030 + UserOverride|User Override|0|5|4999
36.1031 + SecurityLevels|Security Levels|0|5|9999
36.1032 + Description|Description|0|0|16
36.1033 + ActionCode|Action Code|0|0|1
36.1034 + SourceCode|Source Code|0|0|1
36.1035 + BalanceChange|Balance Change|0|7|null
36.1036 + Interest|Interest/Penalty|0|7|null
36.1037 + NewBalance|New Balance|0|7|null
36.1038 + FeeAmount|Fee Amount|0|7|null
36.1039 + EscrowAmount|Escrow Amount|0|7|null
36.1040 + LastTranDate|Last Tran Date|0|3|null
36.1041 + MaturityLoanDueDate|Maturity/Loan Due Date|0|3|null
36.1042 + Comment|Comment|0|0|42
36.1043 + Branch|Branch|0|5|9999
36.1044 + ConsoleNumber|Console Number|0|5|9999
36.1045 + BatchSequence|Batch Sequence|0|4|null
36.1046 + SalesTaxAmount|Sales Tax Amount|0|7|null
36.1047 + ActivityDate|Activity Date|0|3|null
36.1048 + BilledFeeAmount|Billed Fee Amount|0|7|null
36.1049 + ProcessorUser|Processor User|0|5|32767
36.1050 + MemberBranch|Member Branch|0|0|4
36.1051 + PrevAvailBalance|Prev Available Balance|0|7|null
36.1052 + SubSource|Sub Source Code|0|5|9999
36.1053 + SubSourceDescr|Sub Source Description|2460|1|40
36.1054 + ***|Share Analysis|Share Analysis
36.1055 + Plan|Analysis Plan|9301|5|99
36.1056 + StatementDate|Statement Date|9302|3|null
36.1057 + StatementPrevDate|Statement Prev Date|9303|3|null
36.1058 + StatementGroup|Statement Group|9304|5|99
36.1059 + Locator|Locator|9305|4|null
36.1060 + Counter:1|Deposit Count|9306|5|32767
36.1061 + Counter:2|Dep Correction Count|9306|5|32767
36.1062 + Counter:3|Returned Deposit Count|9306|5|32767
36.1063 + Counter:4|Draft Count|9306|5|32767
36.1064 + Counter:5|Bulk Count|9306|5|32767
36.1065 + Counter:6|Change Order Count|9306|5|32767
36.1066 + Counter:7|NSF Count|9306|5|32767
36.1067 + Counter:8|Sweep Count|9306|5|32767
36.1068 + Counter:9|Stop Payment Count|9306|5|32767
36.1069 + Counter:10|Account Printout Count|9306|5|32767
36.1070 + Counter:11|Stmt Balancing Count|9306|5|32767
36.1071 + Counter:12|Statement Copy Count|9306|5|32767
36.1072 + Counter:13|Check Copy Count|9306|5|32767
36.1073 + Counter:14|Primary Check Count|9306|5|32767
36.1074 + Counter:15|Secondary Check Count|9306|5|32767
36.1075 + Counter:16|Money Order Count|9306|5|32767
36.1076 + Counter:17|Wire Xfer In Count|9306|5|32767
36.1077 + Counter:18|Wire Xfer Out Count|9306|5|32767
36.1078 + Counter:19|Overdraft Xfer Count|9306|5|32767
36.1079 + Counter:20|Courtesy Pay Count|9306|5|32767
36.1080 + Counter:21|ACH Debit Count|9306|5|32767
36.1081 + Counter:22|ACH Credit Count|9306|5|32767
36.1082 + Counter:23|ACH Orig Debit Count|9306|5|32767
36.1083 + Counter:24|ACH Orig Credit Count|9306|5|32767
36.1084 + Counter:25|Checks Received Count|9306|5|32767
36.1085 + Counter:26|On Us Item Count|9306|5|32767
36.1086 + Counter:27|Lobby Visit Count|9306|5|32767
36.1087 + Counter:28|Loose Coin Count|9306|5|32767
36.1088 + Counter:29|Rolled Coin Count|9306|5|32767
36.1089 + Counter:30|Loose Currency Count|9306|5|32767
36.1090 + Counter:31|Strap Currency Count|9306|5|32767
36.1091 + Counter:32|Counter 032 Count|9306|5|32767
36.1092 + Counter:33|Counter 033 Count|9306|5|32767
36.1093 + Counter:34|Counter 034 Count|9306|5|32767
36.1094 + Counter:35|Counter 035 Count|9306|5|32767
36.1095 + Counter:36|Counter 036 Count|9306|5|32767
36.1096 + Counter:37|Counter 037 Count|9306|5|32767
36.1097 + Counter:38|Counter 038 Count|9306|5|32767
36.1098 + Counter:39|Counter 039 Count|9306|5|32767
36.1099 + Counter:40|Counter 040 Count|9306|5|32767
36.1100 + Counter:41|Counter 041 Count|9306|5|32767
36.1101 + Counter:42|Counter 042 Count|9306|5|32767
36.1102 + Counter:43|Counter 043 Count|9306|5|32767
36.1103 + Counter:44|Counter 044 Count|9306|5|32767
36.1104 + Counter:45|Counter 045 Count|9306|5|32767
36.1105 + Counter:46|Counter 046 Count|9306|5|32767
36.1106 + Counter:47|Counter 047 Count|9306|5|32767
36.1107 + Counter:48|Counter 048 Count|9306|5|32767
36.1108 + Counter:49|Counter 049 Count|9306|5|32767
36.1109 + Counter:50|Counter 050 Count|9306|5|32767
36.1110 + Counter:51|LOCKBOX COUNTER Count|9306|5|32767
36.1111 + Counter:52|Counter 052 Count|9306|5|32767
36.1112 + Counter:53|Counter 053 Count|9306|5|32767
36.1113 + Counter:54|Counter 054 Count|9306|5|32767
36.1114 + Counter:55|Counter 055 Count|9306|5|32767
36.1115 + Counter:56|Counter 056 Count|9306|5|32767
36.1116 + Counter:57|Counter 057 Count|9306|5|32767
36.1117 + Counter:58|Counter 058 Count|9306|5|32767
36.1118 + Counter:59|Counter 059 Count|9306|5|32767
36.1119 + Counter:60|Counter 060 Count|9306|5|32767
36.1120 + Counter:61|Counter 061 Count|9306|5|32767
36.1121 + Counter:62|Counter 062 Count|9306|5|32767
36.1122 + Counter:63|Counter 063 Count|9306|5|32767
36.1123 + Counter:64|Counter 064 Count|9306|5|32767
36.1124 + Counter:65|Counter 065 Count|9306|5|32767
36.1125 + Counter:66|Counter 066 Count|9306|5|32767
36.1126 + Counter:67|Counter 067 Count|9306|5|32767
36.1127 + Counter:68|Counter 068 Count|9306|5|32767
36.1128 + Counter:69|Counter 069 Count|9306|5|32767
36.1129 + Counter:70|Counter 070 Count|9306|5|32767
36.1130 + Counter:71|Counter 071 Count|9306|5|32767
36.1131 + Counter:72|Counter 072 Count|9306|5|32767
36.1132 + Counter:73|Counter 073 Count|9306|5|32767
36.1133 + Counter:74|Counter 074 Count|9306|5|32767
36.1134 + Counter:75|Counter 075 Count|9306|5|32767
36.1135 + Counter:76|Counter 076 Count|9306|5|32767
36.1136 + Counter:77|Counter 077 Count|9306|5|32767
36.1137 + Counter:78|Counter 078 Count|9306|5|32767
36.1138 + Counter:79|Counter 079 Count|9306|5|32767
36.1139 + Counter:80|Counter 080 Count|9306|5|32767
36.1140 + Counter:81|Counter 081 Count|9306|5|32767
36.1141 + Counter:82|Counter 082 Count|9306|5|32767
36.1142 + Counter:83|Counter 083 Count|9306|5|32767
36.1143 + Counter:84|Counter 084 Count|9306|5|32767
36.1144 + Counter:85|Counter 085 Count|9306|5|32767
36.1145 + Counter:86|Counter 086 Count|9306|5|32767
36.1146 + Counter:87|Counter 087 Count|9306|5|32767
36.1147 + Counter:88|Counter 088 Count|9306|5|32767
36.1148 + Counter:89|Counter 089 Count|9306|5|32767
36.1149 + Counter:90|Counter 090 Count|9306|5|32767
36.1150 + Counter:91|Counter 091 Count|9306|5|32767
36.1151 + Counter:92|Counter 092 Count|9306|5|32767
36.1152 + Counter:93|Counter 093 Count|9306|5|32767
36.1153 + Counter:94|Counter 094 Count|9306|5|32767
36.1154 + Counter:95|Counter 095 Count|9306|5|32767
36.1155 + Counter:96|Counter 096 Count|9306|5|32767
36.1156 + Counter:97|Counter 097 Count|9306|5|32767
36.1157 + Counter:98|Counter 098 Count|9306|5|32767
36.1158 + Counter:99|Counter 099 Count|9306|5|32767
36.1159 + Counter:100|Counter 100 Count|9306|5|32767
36.1160 + ***|IRS|IRS
36.1161 + MaxContribution|Max Contribution|401|7|null
36.1162 + ContrLastYear:1|Contr 05 for 05|402|7|null
36.1163 + ContrLastYear:2|Contr 05 for 04|402|7|null
36.1164 + ContrLastYear:3|Contr 05 Rollover|402|7|null
36.1165 + ContrLastYear:4|Contr 05 Transfer|402|7|null
36.1166 + ContrLastYear:5|Contr 05 Roth Conv/MSA|402|7|null
36.1167 + ContrLastYear:6|Contr 05 Rechar/MSA|402|7|null
36.1168 + DistrLastYear:1|Distr 05 No Excptn|403|7|null
36.1169 + DistrLastYear:2|Distr 05 Exception|403|7|null
36.1170 + DistrLastYear:3|Distr 05 Disability|403|7|null
36.1171 + DistrLastYear:4|Distr 05 Death|403|7|null
36.1172 + DistrLastYear:5|Distr 05 Prohib Trn|403|7|null
36.1173 + DistrLastYear:6|Distr 05 Unspecif|403|7|null
36.1174 + DistrLastYear:7|Distr 05 Normal|403|7|null
36.1175 + DistrLastYear:8|Distr 05 Excess 05|403|7|null
36.1176 + DistrLastYear:9|Distr 05 Excess 04|403|7|null
36.1177 + DistrLastYear:10|Distr 05 Unspecif|403|7|null
36.1178 + DistrLastYear:11|Distr 05 Transfer|403|7|null
36.1179 + DistrLastYear:12|Distr 05 Ex Earn 05|403|7|null
36.1180 + DistrLastYear:13|Distr 05 Ex Earn 04|403|7|null
36.1181 + ContrThisYear:1|Contr 06 for 06|404|7|null
36.1182 + ContrThisYear:2|Contr 06 for 05|404|7|null
36.1183 + ContrThisYear:3|Contr 06 Rollover|404|7|null
36.1184 + ContrThisYear:4|Contr 06 Transfer|404|7|null
36.1185 + ContrThisYear:5|Contr 06 Roth Conv/MSA|404|7|null
36.1186 + ContrThisYear:6|Contr 06 Rechar/MSA|404|7|null
36.1187 + DistrThisYear:1|Distr 06 No Excptn|405|7|null
36.1188 + DistrThisYear:2|Distr 06 Exception|405|7|null
36.1189 + DistrThisYear:3|Distr 06 Disability|405|7|null
36.1190 + DistrThisYear:4|Distr 06 Death|405|7|null
36.1191 + DistrThisYear:5|Distr 06 Prohib Trn|405|7|null
36.1192 + DistrThisYear:6|Distr 06 Unspecif|405|7|null
36.1193 + DistrThisYear:7|Distr 06 Normal|405|7|null
36.1194 + DistrThisYear:8|Distr 06 Excess 06|405|7|null
36.1195 + DistrThisYear:9|Distr 06 Excess 05|405|7|null
36.1196 + DistrThisYear:10|Distr 06 Unspecif|405|7|null
36.1197 + DistrThisYear:11|Distr 06 Transfer|405|7|null
36.1198 + DistrThisYear:12|Distr 06 Ex Earn 06|405|7|null
36.1199 + DistrThisYear:13|Distr 06 Ex Earn 05|405|7|null
36.1200 + SSN|Taxpayer ID|406|0|9
36.1201 + IRSCode|IRS Code|407|5|15
36.1202 + ContributionYear|Contribution Year|408|5|1
36.1203 + FairMarketValueLastYear|Fair Mkt Value 05|409|7|null
36.1204 + OpenDate|Open Date|410|3|null
36.1205 + MSAHolderCode|MSA Holder Code|411|5|2
36.1206 + IRSPlan|IRS Plan|412|5|99
36.1207 + FairMarketValueDeath|Fair Mkt Value Death|413|7|null
36.1208 + Locator|Locator|414|4|null
36.1209 + IraRmd|Req Min Distrib 06|416|7|null
36.1210 + IRSHolderBirthDate|IRS Holder Birth Date|417|3|null
36.1211 + IRSHoldersPOUseBirthDate|IRS Holder Spouse Birth Date|418|3|null
36.1212 + ActualMaxContribution|Actual Max Contribution|480|7|null
36.1213 + ***|IRS Name|IRS Name
36.1214 + Type|Name Type|101|5|53
36.1215 + SubType|Name SubType|102|5|99
36.1216 + MailOverride|Mail Override|103|5|1
36.1217 + SSNOverride|SSN/TIN Override|104|5|3
36.1218 + SSNCertification|SSN/TIN Certification|105|5|2
36.1219 + SSNType|SSN/TIN Type|106|5|9
36.1220 + EffectiveDate|Effective Date|107|3|null
36.1221 + ExpirationDate|Expiration Date|108|3|null
36.1222 + BirthDate|Birth Date|109|3|null
36.1223 + Title|Title|110|0|8
36.1224 + First|First Name|111|0|20
36.1225 + Middle|Middle Name|112|0|10
36.1226 + Last|Last Name|113|0|40
36.1227 + Suffix|Suffix|114|0|4
36.1228 + ExtraAddress|Extra Address|115|0|40
36.1229 + Street|Street|116|0|40
36.1230 + City|City|117|0|40
36.1231 + State|State|118|0|10
36.1232 + ZipCode|Zip Code|119|0|10
36.1233 + HomePhone|Home Phone|120|0|16
36.1234 + SSN|SSN/TIN|121|0|9
36.1235 + WorkPhone|Work Phone|122|0|16
36.1236 + LastFMDate|Last FM Date|123|3|null
36.1237 + CarrierRoute|Carrier Route|124|0|4
36.1238 + AddressType|Address Type|125|5|2
36.1239 + BeneficiaryPercent|Beneficiary Percent|126|2|null
36.1240 + IRSCorrection|IRS Correction|127|5|1
36.1241 + WorkPhoneExtension|Work Phone Ext|128|0|6
36.1242 + DeathDate|Death Date|130|3|null
36.1243 + ECOACode|ECOA Code|131|5|11
36.1244 + Country|Country|132|0|20
36.1245 + CountryCode|Country Code|133|0|2
36.1246 + Email|E-Mail Address|134|0|40
36.1247 + MothersMaidenName|Mother's Maiden Name|135|0|20
36.1248 + EmployerName|Current Employer|136|0|40
36.1249 + AltEmail|Alt E-Mail Address|137|0|40
36.1250 + Locator|Locator|138|4|null
36.1251 + MobilePhone|Mobile Phone|139|0|16
36.1252 + PagerNumber|Pager Number|140|0|16
36.1253 + USPersonFlag|U.S. Person Flag|141|5|1
36.1254 + IdentDocFlag:1|Documentary Flag 1|142|5|1
36.1255 + IdentDocFlag:2|Documentary Flag 2|142|5|1
36.1256 + IdentDocFlag:3|Documentary Flag 3|142|5|1
36.1257 + IdentIDType:1|ID Type 1|143|5|999
36.1258 + IdentIDType:2|ID Type 2|143|5|999
36.1259 + IdentIDType:3|ID Type 3|143|5|999
36.1260 + IdentIDDescription:1|ID Description 1|144|0|40
36.1261 + IdentIDDescription:2|ID Description 2|144|0|40
36.1262 + IdentIDDescription:3|ID Description 3|144|0|40
36.1263 + IdentIDNumber:1|ID Number 1|145|0|40
36.1264 + IdentIDNumber:2|ID Number 2|145|0|40
36.1265 + IdentIDNumber:3|ID Number 3|145|0|40
36.1266 + IdentIDIssueDate:1|ID Issuance Date 1|146|3|null
36.1267 + IdentIDIssueDate:2|ID Issuance Date 2|146|3|null
36.1268 + IdentIDIssueDate:3|ID Issuance Date 3|146|3|null
36.1269 + IdentIDExpireDate:1|ID Expiration Date 1|147|3|null
36.1270 + IdentIDExpireDate:2|ID Expiration Date 2|147|3|null
36.1271 + IdentIDExpireDate:3|ID Expiration Date 3|147|3|null
36.1272 + IdentIDVerifyDate:1|ID Verification Date 1|148|3|null
36.1273 + IdentIDVerifyDate:2|ID Verification Date 2|148|3|null
36.1274 + IdentIDVerifyDate:3|ID Verification Date 3|148|3|null
36.1275 + Occupation|Occupation|149|0|20
36.1276 + UserChar1|User Char 01|150|0|40
36.1277 + UserChar2|User Char 02|151|0|40
36.1278 + UserChar3|User Char 03|152|0|40
36.1279 + UserChar4|User Char 04|153|0|40
36.1280 + UserAmount1|User Amount 01|154|7|null
36.1281 + UserAmount2|User Amount 02|155|7|null
36.1282 + UserDate1|User Date 01|156|3|null
36.1283 + UserDate2|User Date 02|157|3|null
36.1284 + LastAddrChgDate|Address Change Date|158|3|null
36.1285 + LastAddrVerifDate|Address Verify Date|159|3|null
36.1286 + CreditReportConsumerInfo|Credit Report Consumer Info|160|0|2
36.1287 + ShortName|Short Name|180|0|16
36.1288 + LongName|Long Name|181|1|40
36.1289 + License|License|129|0|20
36.1290 + ***|Loan|Loan
36.1291 + ID|Loan ID|1301|0|2
36.1292 + CheckDigits|Check Digits|1302|0|2
36.1293 + NoteNumber|Note Number|1303|0|10
36.1294 + Type|Loan Type|1304|5|9999
36.1295 + LastFMDate|Last FM Date|1305|3|null
36.1296 + LastTranDate|Last Transaction Date|1306|3|null
36.1297 + OriginalDate|Original Loan Date|1307|3|null
36.1298 + OpenDate|Open Date|1308|3|null
36.1299 + ChargeOffDate|Charge Off Date|1309|3|null
36.1300 + CloseDate|Close Date|1310|3|null
36.1301 + Reference|Reference|1311|0|20
36.1302 + WarningCode:1|Warning 1 Code|1312|5|99
36.1303 + WarningCode:2|Warning 2 Code|1312|5|99
36.1304 + WarningCode:3|Warning 3 Code|1312|5|99
36.1305 + WarningCode:4|Warning 4 Code|1312|5|99
36.1306 + WarningCode:5|Warning 5 Code|1312|5|99
36.1307 + WarningCode:6|Warning 6 Code|1312|5|99
36.1308 + WarningCode:7|Warning 7 Code|1312|5|99
36.1309 + WarningCode:8|Warning 8 Code|1312|5|99
36.1310 + Service:1|Service 1|1313|5|99
36.1311 + Service:2|Service 2|1313|5|99
36.1312 + Service:3|Service 3|1313|5|99
36.1313 + Service:4|Service 4|1313|5|99
36.1314 + Service:5|Service 5|1313|5|99
36.1315 + Service:6|Service 6|1313|5|99
36.1316 + Service:7|Service 7|1313|5|99
36.1317 + Service:8|Service 8|1313|5|99
36.1318 + LoanCode|Loan Code|1314|5|4
36.1319 + CollateralCode|Collateral Code|1315|5|999
36.1320 + CollateralDate|Collateral Date|1316|3|null
36.1321 + ApprovalCode|Approval Code|1317|5|4999
36.1322 + ApprovalDate|Approval Date|1318|3|null
36.1323 + PurposeCode|Loan Purpose|1319|5|999
36.1324 + ECOACode|ECOA Code|1320|5|11
36.1325 + CreditReportingCode|Credit Reporting Code|1321|5|99
36.1326 + PaymentType|Payment Type|1322|5|1
36.1327 + PaymentMethod|Payment Method|1323|5|9
36.1328 + CouponCode|Coupon Code|1324|5|2
36.1329 + PaymentFrequency|Payment Frequency|1325|5|14
36.1330 + PaymentSkips|Payment Skips|1326|5|9
36.1331 + PaymentCalcType|Payment Calc Type|1327|5|9
36.1332 + PartialPayment|Partial Payment|1328|7|null
36.1333 + Payment|Payment|1329|7|null
36.1334 + LastPaymentDate|Last Payment Date|1330|3|null
36.1335 + PaymentCount|Payment Count|1331|5|9999
36.1336 + PaymentHistory:1|Payments Made|1332|5|9999
36.1337 + PaymentHistory:2|31- 60 Days DQ|1332|5|9999
36.1338 + PaymentHistory:3|61- 90 Days DQ|1332|5|9999
36.1339 + PaymentHistory:4|91-120 Days DQ|1332|5|9999
36.1340 + PaymentHistory:5|121-180 Days DQ|1332|5|9999
36.1341 + PaymentHistory:6|181 and up Days DQ|1332|5|9999
36.1342 + NewLoanDueDateCode|New Loan Due Date Code|1333|5|99
36.1343 + DueDateAdvanceCode|Due Date Advance Code|1334|5|3
36.1344 + DueDay1|Due Day 1|1335|5|31
36.1345 + DueDay2|Due Day 2|1336|5|31
36.1346 + DueDate|Due Date|1337|3|null
36.1347 + BalloonDate|Balloon Date|1338|3|null
36.1348 + RefundPostCode|Refund Post Code|1339|5|2
36.1349 + RefundYTD|Refund YTD|1340|7|null
36.1350 + RefundLastYear|Refund Last Year|1341|7|null
36.1351 + InterestYTD|Interest YTD|1342|7|null
36.1352 + InterestLastYear|Interest Last Year|1343|7|null
36.1353 + InterestFromOpen|Interest From Open|1344|7|null
36.1354 + InterestType|Interest Type|1345|5|99
36.1355 + InterestRate|Interest Rate|1346|2|null
36.1356 + SplitRate|Split Rate|1347|2|null
36.1357 + SplitRateBalance|Split Rate Balance|1348|7|null
36.1358 + InterestDate|Interest Date|1349|3|null
36.1359 + InterestUnpaid|Interest Unpaid|1350|7|null
36.1360 + DQNoticeNumber|DQ Notice|1351|5|9
36.1361 + DQNoticedAtE|DQ Notice Date|1352|3|null
36.1362 + DQCardDate|DQ Card Date|1353|3|null
36.1363 + LateChargeType|Late Charge Type|1354|5|99
36.1364 + LateChargeAccrued|Late Charge Accrued|1355|7|null
36.1365 + LateChargeUnpaid|Late Charge Unpaid|1356|7|null
36.1366 + LateChargeYTD|Late Charge YTD|1357|7|null
36.1367 + LateChargeLastYear|Late Charge Last Yr|1358|7|null
36.1368 + Balance|Loan Balance|1359|7|null
36.1369 + OriginalBalance|Original Balance|1360|7|null
36.1370 + CreditLimit|Credit Limit|1361|7|null
36.1371 + PrincipalYTD|Principal YTD|1362|7|null
36.1372 + PrincipalLastYear|Principal Last Year|1363|7|null
36.1373 + ChargeOffType|Charge-off Type|1364|5|99
36.1374 + ChargeOffAmount|Charge-off Amount|1365|7|null
36.1375 + SecuredCode|Secured Code|1366|5|3
36.1376 + SecuredAmount|Secured Amount|1367|7|null
36.1377 + InsuranceType|Insurance Type|1368|5|99
36.1378 + InsuranceMax|Insurance Maximum|1369|7|null
36.1379 + InsuranceBalance|Insurance Balance|1370|7|null
36.1380 + AvailCreditCalc|Available Credit Calculation|1371|5|1
36.1381 + LastPurgeDate|Last Purge Date|1372|3|null
36.1382 + StatementGroup|Statement Group|1373|5|99
36.1383 + StatementDate|Statement Date|1374|3|null
36.1384 + StatementMailCode|Statement Mail Code|1375|5|99
36.1385 + RegECount|Reg E Count|1376|5|9999
36.1386 + Description|Description|1377|0|30
36.1387 + StatementPrevDate|Statement Previous Date|1378|3|null
36.1388 + PaymentSkipsTartDay|Payment Skip Start Day|1379|5|1231
36.1389 + CredLimitExpiration|Credit Limit Expiration|1380|3|null
36.1390 + InterestRateIndex|Interest Rate Index|1381|5|99
36.1391 + InterestRateMargin|Interest Rate Margin|1382|2|null
36.1392 + InterestRateMax|Interest Rate Maximum|1383|2|null
36.1393 + InterestRateMin|Interest Rate Minimum|1384|2|null
36.1394 + CreditReportNumber|Credit Report Number|1385|0|17
36.1395 + WarningExpiration:1|Warning 1 Expiration|1386|3|null
36.1396 + WarningExpiration:2|Warning 2 Expiration|1386|3|null
36.1397 + WarningExpiration:3|Warning 3 Expiration|1386|3|null
36.1398 + WarningExpiration:4|Warning 4 Expiration|1386|3|null
36.1399 + WarningExpiration:5|Warning 5 Expiration|1386|3|null
36.1400 + WarningExpiration:6|Warning 6 Expiration|1386|3|null
36.1401 + WarningExpiration:7|Warning 7 Expiration|1386|3|null
36.1402 + WarningExpiration:8|Warning 8 Expiration|1386|3|null
36.1403 + NSFMonthToDate|NSF Month to Date|1387|5|9999
36.1404 + NSFYTD|NSF Year to Date|1388|5|9999
36.1405 + NSFLastYear|NSF Last Year|1389|5|9999
36.1406 + DQCalculationMethod|DQ Calculation Method|1390|5|1
36.1407 + PmtBucketAmount:1|Pmt Bucket Amt 1|1391|7|null
36.1408 + PmtBucketAmount:2|Pmt Bucket Amt 2|1391|7|null
36.1409 + PmtBucketAmount:3|Pmt Bucket Amt 3|1391|7|null
36.1410 + PmtBucketAmount:4|Pmt Bucket Amt 4|1391|7|null
36.1411 + PmtBucketAmount:5|Pmt Bucket Amt 5|1391|7|null
36.1412 + PmtBucketAmount:6|Pmt Bucket Amt 6|1391|7|null
36.1413 + PmtBucketAmount:7|Pmt Bucket Amt 7|1391|7|null
36.1414 + PmtBucketAmount:8|Pmt Bucket Amt 8|1391|7|null
36.1415 + PmtBucketDueDate:1|Pmt Bucket Due Date 1|1392|3|null
36.1416 + PmtBucketDueDate:2|Pmt Bucket Due Date 2|1392|3|null
36.1417 + PmtBucketDueDate:3|Pmt Bucket Due Date 3|1392|3|null
36.1418 + PmtBucketDueDate:4|Pmt Bucket Due Date 4|1392|3|null
36.1419 + PmtBucketDueDate:5|Pmt Bucket Due Date 5|1392|3|null
36.1420 + PmtBucketDueDate:6|Pmt Bucket Due Date 6|1392|3|null
36.1421 + PmtBucketDueDate:7|Pmt Bucket Due Date 7|1392|3|null
36.1422 + PmtBucketDueDate:8|Pmt Bucket Due Date 8|1392|3|null
36.1423 + PUOldBalance|PU Old Balance|1393|7|null
36.1424 + PUOldIntUnpaid|PU Old Int Unpaid|1394|7|null
36.1425 + PUIntCharge|PU Int Charge|1395|7|null
36.1426 + PUNewBalance|PU New Balance|1396|7|null
36.1427 + PUNewIntUnpaid|PU New Int Unpaid|1397|7|null
36.1428 + CAOldBalance|CA Old Balance|1398|7|null
36.1429 + CAOldIntUnpaid|CA Old Int Unpaid|1399|7|null
36.1430 + CAIntCharge|CA Int Charge|1400|7|null
36.1431 + CATransIntCharge|CA Trans Int Charge|1401|7|null
36.1432 + CANewBalance|CA New Balance|1402|7|null
36.1433 + CANewIntUnpaid|CA New Int Unpaid|1403|7|null
36.1434 + FeeOldBalance|Fee Old Balance|1404|7|null
36.1435 + FeeNewBalance|Fee New Balance|1405|7|null
36.1436 + PUAverageBalance|PU Average Balance|1406|7|null
36.1437 + CAAverageBalance|CA Average Balance|1407|7|null
36.1438 + EffectiveAPR|Effective APR|1408|2|null
36.1439 + OriginalRate|Original Rate|1409|2|null
36.1440 + Unamortizedfees|Unamortized Fees|1410|7|null
36.1441 + MaturityDate|Maturity Date|1411|3|null
36.1442 + PointsYTD|Points YTD|1412|7|null
36.1443 + PointsLastYear|Points Last Year|1413|7|null
36.1444 + FeeCount:1|Fee Count 1|1414|5|9999
36.1445 + FeeCount:2|Fee Count 2|1414|5|9999
36.1446 + FeeCount:3|Fee Count 3|1414|5|9999
36.1447 + FeeCount:4|Fee Count 4|1414|5|9999
36.1448 + EscrowAmount|Escrow Amount|1415|7|null
36.1449 + EscrowID|Escrow ID|1416|0|2
36.1450 + LateChargedAtE|Late Charge Date|1417|3|null
36.1451 + CUTotalsUseCode|CU Totals Code|1418|5|1
36.1452 + PeriodicCap|Periodic Cap|1419|2|null
36.1453 + PeriodicStartRate|Periodic Cap Start Rate|1420|2|null
36.1454 + PeriodicStartDate|Periodic Cap Start Date|1421|3|null
36.1455 + SinglePremiumLife|Sgl Prem Life|1422|7|null
36.1456 + SinglePremiumDisability|Sgl Prem Disability|1423|7|null
36.1457 + PUOldBalance2|PU Old Balance 2|1424|7|null
36.1458 + PUNewBalance2|PU New Balance 2|1425|7|null
36.1459 + CAOldBalance2|CA Old Balance 2|1426|7|null
36.1460 + CANewBalance2|CA New Balance 2|1427|7|null
36.1461 + PUAverageBalance2|PU Average Balance 2|1428|7|null
36.1462 + CAAverageBalance2|CA Average Balance 2|1429|7|null
36.1463 + Minbalance|Minimum Balance|1430|7|null
36.1464 + Minadvance|Minimum Advance|1431|7|null
36.1465 + BalloonAmount|Balloon Amount|1432|7|null
36.1466 + InterestRateMarginsIgn|Interest Rate Margin Sign|1433|5|1
36.1467 + Branch|Branch|1434|5|9999
36.1468 + CreditReportOccurDate|Credit Report Occurrence|1435|3|null
36.1469 + CreditReportLastsTatus|Credit Report Last Status|1436|5|99
36.1470 + CreditReportComment|Credit Report Comment|1437|0|2
36.1471 + FASB91Code|FASB 91 Code|1438|5|199
36.1472 + StudentLoanCode|Student Loan Code|1439|5|1
36.1473 + StudentCoveredPeriodEnd|Student Covered End|1440|3|null
36.1474 + RiskRate|Risk Rate|1441|2|null
36.1475 + DiscountRate|Discount Rate|1442|2|null
36.1476 + APR|APR|1443|2|null
36.1477 + PrepAidFinanceChg|Prepaid Finance Chg|1444|7|null
36.1478 + CreditLimitGroup|Credit Limit Group|1445|5|99
36.1479 + AlternatePayment|Alternate Payment|1446|7|null
36.1480 + AltPmtEffective|Alternate Pmt Effective|1447|3|null
36.1481 + AltPmtExpiration|Alternate Pmt Expiration|1448|3|null
36.1482 + IntUnpaidBilled|Int Unpaid Billed|1449|7|null
36.1483 + PromoType:1|Promo 1 Type|1450|5|99
36.1484 + PromoType:2|Promo 2 Type|1450|5|99
36.1485 + PromoEffectDate:1|Promo 1 Effective Date|1451|3|null
36.1486 + PromoEffectDate:2|Promo 2 Effective Date|1451|3|null
36.1487 + PromoExpireDate:1|Promo 1 Expiration Date|1452|3|null
36.1488 + PromoExpireDate:2|Promo 2 Expiration Date|1452|3|null
36.1489 + PromoRateType:1|Promo 1 Rate Type|1453|5|1
36.1490 + PromoRateType:2|Promo 2 Rate Type|1453|5|1
36.1491 + PromoRate:1|Promo 1 Rate|1454|2|null
36.1492 + PromoRate:2|Promo 2 Rate|1454|2|null
36.1493 + PromoRateOffset:1|Promo 1 Rate Offset|1455|2|null
36.1494 + PromoRateOffset:2|Promo 2 Rate Offset|1455|2|null
36.1495 + PromoRateMin:1|Promo 1 Rate Minimum|1456|2|null
36.1496 + PromoRateMin:2|Promo 2 Rate Minimum|1456|2|null
36.1497 + PromoRateMax:1|Promo 1 Rate Maximum|1457|2|null
36.1498 + PromoRateMax:2|Promo 2 Rate Maximum|1457|2|null
36.1499 + PromoTotalAdvances:1|Promo 1 Total Advances|1458|7|null
36.1500 + PromoTotalAdvances:2|Promo 2 Total Advances|1458|7|null
36.1501 + PromoAdvanceCutoff:1|Promo 1 Advance Cutoff|1459|7|null
36.1502 + PromoAdvanceCutoff:2|Promo 2 Advance Cutoff|1459|7|null
36.1503 + PromoBalance:1|Promo 1 Balance|1460|7|null
36.1504 + PromoBalance:2|Promo 2 Balance|1460|7|null
36.1505 + ApplicationID|Application ID|1461|0|2
36.1506 + CreditReportConsumerInfo|Credit Report Consumer Info|1462|0|2
36.1507 + CreditReportCompliance|Credit Report Compliance Info|1463|0|2
36.1508 + LessEestate|Lessee State|1464|0|2
36.1509 + LessEecounty|Lessee County|1465|0|32
36.1510 + LessEecity|Lessee City|1466|0|32
36.1511 + DealersTate|Dealer State|1467|0|2
36.1512 + DealerCounty|Dealer County|1468|0|32
36.1513 + DealerCity|Dealer City|1469|0|32
36.1514 + SalesTaxStateIndicator|Sales Tax State Indicator|1470|5|2
36.1515 + SalesTaxCountyIndicator|Sales Tax County Indicator|1471|5|2
36.1516 + SalesTaxCityIndicator|Sales Tax City Indicator|1472|5|2
36.1517 + LeaseTerminatedAtE|Lease Termination Date|1473|3|null
36.1518 + LeaseTerminateFee|Lease Termination Fee|1474|7|null
36.1519 + DealerReserve|Dealer Reserve|1475|7|null
36.1520 + DealerCode|Dealer Code|1476|0|10
36.1521 + ActivityDate|Activity Date|1477|3|null
36.1522 + FeeBillingDate|Fee Billing Date|1478|3|null
36.1523 + FeeBillingAmount|Fee Billing Amount|1479|7|null
36.1524 + BilledFeeUnpaid|Billed Fee Unpaid|1480|7|null
36.1525 + BilledFeeYTD|Billed Fee YTD|1481|7|null
36.1526 + BilledFeeLastYear|Billed Fee Last Year|1482|7|null
36.1527 + BilledFeeBucketAmount:1|Billed Fee Bucket Amt 1|1483|7|null
36.1528 + BilledFeeBucketAmount:2|Billed Fee Bucket Amt 2|1483|7|null
36.1529 + BilledFeeBucketAmount:3|Billed Fee Bucket Amt 3|1483|7|null
36.1530 + BilledFeeBucketAmount:4|Billed Fee Bucket Amt 4|1483|7|null
36.1531 + BilledFeeBucketAmount:5|Billed Fee Bucket Amt 5|1483|7|null
36.1532 + BilledFeeBucketAmount:6|Billed Fee Bucket Amt 6|1483|7|null
36.1533 + BilledFeeBucketAmount:7|Billed Fee Bucket Amt 7|1483|7|null
36.1534 + BilledFeeBucketAmount:8|Billed Fee Bucket Amt 8|1483|7|null
36.1535 + CredCardPromo2effectdate|Cred Card Promo 2 Effect|1484|3|null
36.1536 + CredCardPromo3effectdate|Cred Card Promo 3 Effect|1485|3|null
36.1537 + CredCardPromo4effectdate|Cred Card Promo 4 Effect|1486|3|null
36.1538 + PUOldBalance3|PU Old Balance 3|1487|7|null
36.1539 + PUNewBalance3|PU New Balance 3|1488|7|null
36.1540 + CAOldBalance3|CA Old Balance 3|1489|7|null
36.1541 + CANewBalance3|CA New Balance 3|1490|7|null
36.1542 + PUAverageBalance3|PU Average Balance 3|1491|7|null
36.1543 + CAAverageBalance3|CA Average Balance 3|1492|7|null
36.1544 + PUOldBalance4|PU Old Balance 4|1493|7|null
36.1545 + PUNewBalance4|PU New Balance 4|1494|7|null
36.1546 + CAOldBalance4|CA Old Balance 4|1495|7|null
36.1547 + CANewBalance4|CA New Balance 4|1496|7|null
36.1548 + PUAverageBalance4|PU Average Balance 4|1497|7|null
36.1549 + CAAverageBalance4|CA Average Balance 4|1498|7|null
36.1550 + CreditsCore|Credit Score|1499|4|null
36.1551 + CreditsCoreType|Credit Score Type|1500|5|9
36.1552 + LastAdvancedAtE|Last Advance Date|1501|3|null
36.1553 + AdvanceAmount|Amount Advanced|1502|7|null
36.1554 + FirstPaymentDate|First Payment Date|1503|3|null
36.1555 + SchdRateChangeDate|Schd Rate Change Date|1504|3|null
36.1556 + SchdRate|Schd Rate|1505|2|null
36.1557 + SchdSplitBalance|Schd Split Balance|1506|7|null
36.1558 + SchdSplitRate|Schd Split Rate|1507|2|null
36.1559 + SchdPeriodStartRate|Schd Cap Start Rate|1508|2|null
36.1560 + SchdPeriodStartDate|Schd Cap Start Date|1509|3|null
36.1561 + PeriodicFrequency|Periodic Cap Frequency|1510|5|1
36.1562 + AmortizationSchd|Amortization Schedule|1511|5|9999
36.1563 + AmortizationSchdType|Amortize Schd Type|1512|5|1
36.1564 + CallItemsChd|Call Item Schedule|1513|5|9999
36.1565 + CallItemsChdType|Call Item Schd Type|1514|5|1
36.1566 + MemberUserTransferCode|Member User Transfer Code|1515|5|9999
36.1567 + CorporateUserTransferCode|Corporate User Transfer Code|1516|5|9999
36.1568 + ParticipationNumber|Participation Number|1517|0|10
36.1569 + VIN|VIN #|1518|0|20
36.1570 + UserChar1|Seller|1519|0|40
36.1571 + UserChar2|User Char 02|1520|0|40
36.1572 + UserChar3|RBL code|1521|0|40
36.1573 + UserChar4|User Char 04|1522|0|40
36.1574 + UserAmount1|FASB amount|1523|7|null
36.1575 + UserAmount2|User Amount 02|1524|7|null
36.1576 + UserDate1|Summit Action Date|1525|3|null
36.1577 + UserDate2|QC/Docs Received Date|1526|3|null
36.1578 + BureausCore:1|Bureau Score Experian|1527|4|null
36.1579 + BureausCore:2|Bureau Score Equifax|1527|4|null
36.1580 + BureausCore:3|Bureau Score Transunion|1527|4|null
36.1581 + BureausCore:4|Bureau Score ChexSystems|1527|4|null
36.1582 + StudentLoanOrigFeeYTD|Student Loan Org Fee YTD|1528|7|null
36.1583 + StudentLoanOrigFeeLastYear|Student Loan Org Fee LYr|1529|7|null
36.1584 + StudentLoanCapIntYTD|Student Loan Cap Int YTD|1530|7|null
36.1585 + StudentLoanCapIntLastYear|Student Loan Cap Int LYr|1531|7|null
36.1586 + PutItemsChd|Put Item Schedule|1532|5|9999
36.1587 + PutItemsChdType|Put Item Schd Type|1533|5|1
36.1588 + LedgerAccrual|Ledger Accrual|1534|7|null
36.1589 + LedgerAccrualdate|Ledger Accrual Date|1535|3|null
36.1590 + CurrIntPayable|Current Int Payable|1536|7|null
36.1591 + MTDAccruedInt|MTD Accrued Int|1537|7|null
36.1592 + MTDPaidInt|MTD Paid Interest|1538|7|null
36.1593 + MTDAccumulatedInt|MTD Accumulated Int|1539|7|null
36.1594 + PreMthIntAccumltd:1|01 Mth Pre Int Accm|1540|7|null
36.1595 + PreMthIntAccumltd:2|02 Mth Pre Int Accm|1540|7|null
36.1596 + PreMthIntAccumltd:3|03 Mth Pre Int Accm|1540|7|null
36.1597 + PreMthIntAccumltd:4|04 Mth Pre Int Accm|1540|7|null
36.1598 + PreMthIntAccumltd:5|05 Mth Pre Int Accm|1540|7|null
36.1599 + PreMthIntAccumltd:6|06 Mth Pre Int Accm|1540|7|null
36.1600 + PreMthIntAccumltd:7|07 Mth Pre Int Accm|1540|7|null
36.1601 + PreMthIntAccumltd:8|08 Mth Pre Int Accm|1540|7|null
36.1602 + PreMthIntAccumltd:9|09 Mth Pre Int Accm|1540|7|null
36.1603 + PreMthIntAccumltd:10|10 Mth Pre Int Accm|1540|7|null
36.1604 + PreMthIntAccumltd:11|11 Mth Pre Int Accm|1540|7|null
36.1605 + PreMthIntAccumltd:12|12 Mth Pre Int Accm|1540|7|null
36.1606 + PreMthIntAccrued:1|01 Mth Pre Int Accr|1541|7|null
36.1607 + PreMthIntAccrued:2|02 Mth Pre Int Accr|1541|7|null
36.1608 + PreMthIntAccrued:3|03 Mth Pre Int Accr|1541|7|null
36.1609 + PreMthIntPaid:1|01 Mth Pre Int Paid|1542|7|null
36.1610 + PreMthIntPaid:2|02 Mth Pre Int Paid|1542|7|null
36.1611 + PreMthIntPaid:3|03 Mth Pre Int Paid|1542|7|null
36.1612 + LastAccrupdatedate|Last Accr Updt Date|1543|3|null
36.1613 + MTDPriorRateAccrual|MTD Prior Rate Accr|1544|7|null
36.1614 + MICRAcctNumber|MICR Account Number|1545|0|20
36.1615 + CurrMonthPaidInt|Current Mth Paid Int|1546|7|null
36.1616 + IndirectDealerNum|Indirect Dealer Number|1547|0|10
36.1617 + IndirectPlanID|Reserve Plan ID|1548|0|2
36.1618 + AvailableCredit|Available Credit|1580|7|null
36.1619 + InterestDue|Interest Due|1581|7|null
36.1620 + LateChargedUe|Late Charge Due|1582|7|null
36.1621 + PaymentDue|Payment Due|1583|7|null
36.1622 + PastDueAmount|Past Due Amount|1584|7|null
36.1623 + PayoffAmount|Payoff Amount|1585|7|null
36.1624 + SalesTaxRate|Sales Tax Rate|1586|2|null
36.1625 + StatesAleStaxrate|State Sales Tax Rate|1587|2|null
36.1626 + Cntysalestaxrate|County Sales Tax Rate|1588|2|null
36.1627 + CitySalesTaxRate|City Sales Tax Rate|1589|2|null
36.1628 + SalesTaxDue|Sales Tax Due|1590|7|null
36.1629 + SalesTaxPayoff|Sales Tax Payoff|1591|7|null
36.1630 + EffectiveBalance|Effective Balance|1592|7|null
36.1631 + ***|Loan Hold|Loan Hold
36.1632 + Type|Hold Type|501|5|19
36.1633 + EffectiveDate|Effective Date|502|3|null
36.1634 + ExpirationDate|Expiration Date|503|3|null
36.1635 + Reference1|Reference 1|504|0|10
36.1636 + Reference2|Reference 2|505|0|10
36.1637 + Amount|Hold Amount|506|7|null
36.1638 + PayeeName|Payee Name|507|0|16
36.1639 + ExpirationTime|Expiration Time|508|5|2359
36.1640 + Locator|Locator|509|4|null
36.1641 + MemberBranch|Member Branch|510|0|4
36.1642 + StopPayCode|Stop Reason Code|511|5|99
36.1643 + Reference3|Reference 3|512|0|40
36.1644 + Reference4|Reference 4|513|0|40
36.1645 + MatchDate|Match Date|514|3|null
36.1646 + MatchTime|Match Time|515|5|2359
36.1647 + FeeCode|Fee Code|516|5|9999
36.1648 + FeeDescription|Fee Description|580|1|40
36.1649 + ***|Loan Name|Loan Name
36.1650 + Type|Name Type|101|5|53
36.1651 + SubType|Name SubType|102|5|99
36.1652 + MailOverride|Mail Override|103|5|1
36.1653 + SSNOverride|SSN/TIN Override|104|5|3
36.1654 + SSNCertification|SSN/TIN Certification|105|5|2
36.1655 + SSNType|SSN/TIN Type|106|5|9
36.1656 + EffectiveDate|Effective Date|107|3|null
36.1657 + ExpirationDate|Expiration Date|108|3|null
36.1658 + BirthDate|Birth Date|109|3|null
36.1659 + Title|Title|110|0|8
36.1660 + First|First Name|111|0|20
36.1661 + Middle|Middle Name|112|0|10
36.1662 + Last|Last Name|113|0|40
36.1663 + Suffix|Suffix|114|0|4
36.1664 + ExtraAddress|Extra Address|115|0|40
36.1665 + Street|Street|116|0|40
36.1666 + City|City|117|0|40
36.1667 + State|State|118|0|10
36.1668 + ZipCode|Zip Code|119|0|10
36.1669 + HomePhone|Home Phone|120|0|16
36.1670 + SSN|SSN/TIN|121|0|9
36.1671 + WorkPhone|Work Phone|122|0|16
36.1672 + LastFMDate|Last FM Date|123|3|null
36.1673 + CarrierRoute|Carrier Route|124|0|4
36.1674 + AddressType|Address Type|125|5|2
36.1675 + BeneficiaryPercent|Beneficiary Percent|126|2|null
36.1676 + IRSCorrection|IRS Correction|127|5|1
36.1677 + WorkPhoneExtension|Work Phone Ext|128|0|6
36.1678 + DeathDate|Death Date|130|3|null
36.1679 + ECOACode|ECOA Code|131|5|11
36.1680 + Country|Country|132|0|20
36.1681 + CountryCode|Country Code|133|0|2
36.1682 + Email|E-Mail Address|134|0|40
36.1683 + MothersMaidenName|Mother's Maiden Name|135|0|20
36.1684 + EmployerName|Current Employer|136|0|40
36.1685 + AltEmail|Alt E-Mail Address|137|0|40
36.1686 + Locator|Locator|138|4|null
36.1687 + MobilePhone|Mobile Phone|139|0|16
36.1688 + PagerNumber|Pager Number|140|0|16
36.1689 + USPersonFlag|U.S. Person Flag|141|5|1
36.1690 + IdentDocFlag:1|Documentary Flag 1|142|5|1
36.1691 + IdentDocFlag:2|Documentary Flag 2|142|5|1
36.1692 + IdentDocFlag:3|Documentary Flag 3|142|5|1
36.1693 + IdentIDType:1|ID Type 1|143|5|999
36.1694 + IdentIDType:2|ID Type 2|143|5|999
36.1695 + IdentIDType:3|ID Type 3|143|5|999
36.1696 + IdentIDDescription:1|ID Description 1|144|0|40
36.1697 + IdentIDDescription:2|ID Description 2|144|0|40
36.1698 + IdentIDDescription:3|ID Description 3|144|0|40
36.1699 + IdentIDNumber:1|ID Number 1|145|0|40
36.1700 + IdentIDNumber:2|ID Number 2|145|0|40
36.1701 + IdentIDNumber:3|ID Number 3|145|0|40
36.1702 + IdentIDIssueDate:1|ID Issuance Date 1|146|3|null
36.1703 + IdentIDIssueDate:2|ID Issuance Date 2|146|3|null
36.1704 + IdentIDIssueDate:3|ID Issuance Date 3|146|3|null
36.1705 + IdentIDExpireDate:1|ID Expiration Date 1|147|3|null
36.1706 + IdentIDExpireDate:2|ID Expiration Date 2|147|3|null
36.1707 + IdentIDExpireDate:3|ID Expiration Date 3|147|3|null
36.1708 + IdentIDVerifyDate:1|ID Verification Date 1|148|3|null
36.1709 + IdentIDVerifyDate:2|ID Verification Date 2|148|3|null
36.1710 + IdentIDVerifyDate:3|ID Verification Date 3|148|3|null
36.1711 + Occupation|Occupation|149|0|20
36.1712 + UserChar1|User Char 01|150|0|40
36.1713 + UserChar2|User Char 02|151|0|40
36.1714 + UserChar3|User Char 03|152|0|40
36.1715 + UserChar4|User Char 04|153|0|40
36.1716 + UserAmount1|User Amount 01|154|7|null
36.1717 + UserAmount2|User Amount 02|155|7|null
36.1718 + UserDate1|User Date 01|156|3|null
36.1719 + UserDate2|User Date 02|157|3|null
36.1720 + LastAddrChgDate|Address Change Date|158|3|null
36.1721 + LastAddrVerifDate|Address Verify Date|159|3|null
36.1722 + CreditReportConsumerInfo|Credit Report Consumer Info|160|0|2
36.1723 + ShortName|Short Name|180|0|16
36.1724 + LongName|Long Name|181|1|40
36.1725 + License|License|129|0|20
36.1726 + ***|Loan Pledge|Loan Pledge
36.1727 + Type|Pledge Type|601|5|3
36.1728 + AccountNumber|Account Number|602|0|10
36.1729 + ID|ID|603|0|2
36.1730 + CollateralCode|Collateral Code|604|5|999
36.1731 + Percent|Pledge Rate|605|2|null
36.1732 + Amount|Pledge Amount|606|7|null
36.1733 + Locator|Locator|607|4|null
36.1734 + ***|Loan Pledge Name|Loan Pledge Name
36.1735 + Type|Name Type|101|5|53
36.1736 + SubType|Name SubType|102|5|99
36.1737 + MailOverride|Mail Override|103|5|1
36.1738 + SSNOverride|SSN/TIN Override|104|5|3
36.1739 + SSNCertification|SSN/TIN Certification|105|5|2
36.1740 + SSNType|SSN/TIN Type|106|5|9
36.1741 + EffectiveDate|Effective Date|107|3|null
36.1742 + ExpirationDate|Expiration Date|108|3|null
36.1743 + BirthDate|Birth Date|109|3|null
36.1744 + Title|Title|110|0|8
36.1745 + First|First Name|111|0|20
36.1746 + Middle|Middle Name|112|0|10
36.1747 + Last|Last Name|113|0|40
36.1748 + Suffix|Suffix|114|0|4
36.1749 + ExtraAddress|Extra Address|115|0|40
36.1750 + Street|Street|116|0|40
36.1751 + City|City|117|0|40
36.1752 + State|State|118|0|10
36.1753 + ZipCode|Zip Code|119|0|10
36.1754 + HomePhone|Home Phone|120|0|16
36.1755 + SSN|SSN/TIN|121|0|9
36.1756 + WorkPhone|Work Phone|122|0|16
36.1757 + LastFMDate|Last FM Date|123|3|null
36.1758 + CarrierRoute|Carrier Route|124|0|4
36.1759 + AddressType|Address Type|125|5|2
36.1760 + BeneficiaryPercent|Beneficiary Percent|126|2|null
36.1761 + IRSCorrection|IRS Correction|127|5|1
36.1762 + WorkPhoneExtension|Work Phone Ext|128|0|6
36.1763 + DeathDate|Death Date|130|3|null
36.1764 + ECOACode|ECOA Code|131|5|11
36.1765 + Country|Country|132|0|20
36.1766 + CountryCode|Country Code|133|0|2
36.1767 + Email|E-Mail Address|134|0|40
36.1768 + MothersMaidenName|Mother's Maiden Name|135|0|20
36.1769 + EmployerName|Current Employer|136|0|40
36.1770 + AltEmail|Alt E-Mail Address|137|0|40
36.1771 + Locator|Locator|138|4|null
36.1772 + MobilePhone|Mobile Phone|139|0|16
36.1773 + PagerNumber|Pager Number|140|0|16
36.1774 + USPersonFlag|U.S. Person Flag|141|5|1
36.1775 + IdentDocFlag:1|Documentary Flag 1|142|5|1
36.1776 + IdentDocFlag:2|Documentary Flag 2|142|5|1
36.1777 + IdentDocFlag:3|Documentary Flag 3|142|5|1
36.1778 + IdentIDType:1|ID Type 1|143|5|999
36.1779 + IdentIDType:2|ID Type 2|143|5|999
36.1780 + IdentIDType:3|ID Type 3|143|5|999
36.1781 + IdentIDDescription:1|ID Description 1|144|0|40
36.1782 + IdentIDDescription:2|ID Description 2|144|0|40
36.1783 + IdentIDDescription:3|ID Description 3|144|0|40
36.1784 + IdentIDNumber:1|ID Number 1|145|0|40
36.1785 + IdentIDNumber:2|ID Number 2|145|0|40
36.1786 + IdentIDNumber:3|ID Number 3|145|0|40
36.1787 + IdentIDIssueDate:1|ID Issuance Date 1|146|3|null
36.1788 + IdentIDIssueDate:2|ID Issuance Date 2|146|3|null
36.1789 + IdentIDIssueDate:3|ID Issuance Date 3|146|3|null
36.1790 + IdentIDExpireDate:1|ID Expiration Date 1|147|3|null
36.1791 + IdentIDExpireDate:2|ID Expiration Date 2|147|3|null
36.1792 + IdentIDExpireDate:3|ID Expiration Date 3|147|3|null
36.1793 + IdentIDVerifyDate:1|ID Verification Date 1|148|3|null
36.1794 + IdentIDVerifyDate:2|ID Verification Date 2|148|3|null
36.1795 + IdentIDVerifyDate:3|ID Verification Date 3|148|3|null
36.1796 + Occupation|Occupation|149|0|20
36.1797 + UserChar1|User Char 01|150|0|40
36.1798 + UserChar2|User Char 02|151|0|40
36.1799 + UserChar3|User Char 03|152|0|40
36.1800 + UserChar4|User Char 04|153|0|40
36.1801 + UserAmount1|User Amount 01|154|7|null
36.1802 + UserAmount2|User Amount 02|155|7|null
36.1803 + UserDate1|User Date 01|156|3|null
36.1804 + UserDate2|User Date 02|157|3|null
36.1805 + LastAddrChgDate|Address Change Date|158|3|null
36.1806 + LastAddrVerifDate|Address Verify Date|159|3|null
36.1807 + CreditReportConsumerInfo|Credit Report Consumer Info|160|0|2
36.1808 + ShortName|Short Name|180|0|16
36.1809 + LongName|Long Name|181|1|40
36.1810 + License|License|129|0|20
36.1811 + ***|Loan Transfer|Loan Transfer
36.1812 + Type|Transfer Type|901|5|8
36.1813 + AccountNumber|Account|902|0|10
36.1814 + IDType|ID Type|903|5|2
36.1815 + ID|ID|904|0|2
36.1816 + Amount|Amount|905|7|null
36.1817 + Percent|Percent|906|2|null
36.1818 + EffectiveDate|Effective Date|907|3|null
36.1819 + ExpirationDate|Expiration Date|908|3|null
36.1820 + AmountOption|Amount Option|909|5|5
36.1821 + NextDate|Next Transfer Date|910|3|null
36.1822 + Frequency|Transfer Frequency|911|5|14
36.1823 + Day1|Transfer Day 1|912|5|31
36.1824 + Day2|Transfer Day 2|913|5|31
36.1825 + Locator|Locator|914|4|null
36.1826 + MinimumBalance|Minimum Balance|915|7|null
36.1827 + MaximumBalance|Maximum Balance|916|7|null
36.1828 + RegE|Reg E|917|5|1
36.1829 + LastDate|Last Transfer Date|918|3|null
36.1830 + PaymentType|Transfer Payment Type|919|5|1
36.1831 + SweepMinimum|Sweep Minimum|920|7|null
36.1832 + ***|Loan CheckOrder|Loan Check Order
36.1833 + Processor|Processor|6501|5|3
36.1834 + Status|Status|6502|5|6
36.1835 + OpenDate|Open Date|6503|3|null
36.1836 + LastOrderDate|Last Order Date|6504|3|null
36.1837 + StatusDate|Status Date|6505|3|null
36.1838 + LastFMDate|Last FM Date|6506|3|null
36.1839 + CheckType|Check Type|6507|5|1
36.1840 + Branch|Branch|6508|5|9999
36.1841 + StartNumber|Starting Number|6509|4|null
36.1842 + Quantity|Quantity|6510|4|null
36.1843 + ChecksTyle|Check Style|6511|0|12
36.1844 + CoversTyle|Cover Style|6512|0|8
36.1845 + CutNumber|Cut Style|6513|0|8
36.1846 + BillingCode|Billing Code|6514|5|9
36.1847 + ShipMethod|Shipping Method|6515|5|13
36.1848 + ShipTo|Ship To|6516|5|4
36.1849 + ImprintFont|Imprint Font Style|6517|5|8
36.1850 + ImprintJustify|Imprint Justification|6518|5|2
36.1851 + ImprintLine:1|Imprint Line 1|6519|0|40
36.1852 + ImprintLine:2|Imprint Line 2|6519|0|40
36.1853 + ImprintLine:3|Imprint Line 3|6519|0|40
36.1854 + ImprintLine:4|Imprint Line 4|6519|0|40
36.1855 + ImprintLine:5|Imprint Line 5|6519|0|40
36.1856 + ImprintLine:6|Imprint Line 6|6519|0|40
36.1857 + ImprintPhone|Imprint Phone|6520|0|12
36.1858 + ImprintZipCode|Imprint Zip Code|6521|0|10
36.1859 + MailAddress:1|Mailing Address 1|6522|0|40
36.1860 + MailAddress:2|Mailing Address 2|6522|0|40
36.1861 + MailAddress:3|Mailing Address 3|6522|0|40
36.1862 + MailAddress:4|Mailing Address 4|6522|0|40
36.1863 + MailAddress:5|Mailing Address 5|6522|0|40
36.1864 + MailAddress:6|Mailing Address 6|6522|0|40
36.1865 + MailZipCode|Mailing Zip Code|6523|0|10
36.1866 + OverSigLine:1|Over Signature Line 1|6524|0|40
36.1867 + OverSigLine:2|Over Signature Line 2|6524|0|40
36.1868 + OverSigFont|Over Signature Font Style|6525|5|8
36.1869 + NumberSigLineS|Number of Signature Lines|6526|5|3
36.1870 + CoverInitials|Cover Initials|6527|0|3
36.1871 + SpecialInstR:1|Special Instructions 1|6528|0|25
36.1872 + SpecialInstR:2|Special Instructions 2|6528|0|25
36.1873 + SpecialInstR:3|Special Instructions 3|6528|0|25
36.1874 + SpecialInstR:4|Special Instructions 4|6528|0|25
36.1875 + SpecialInstR:5|Special Instructions 5|6528|0|25
36.1876 + SpecialInstR:6|Special Instructions 6|6528|0|25
36.1877 + SpecialInstR:7|Special Instructions 7|6528|0|25
36.1878 + SpecialInstR:8|Special Instructions 8|6528|0|25
36.1879 + SSN:1|Imprint SSN/TIN 1|6529|0|9
36.1880 + SSN:2|Imprint SSN/TIN 2|6529|0|9
36.1881 + License:1|Imprint License 1|6530|0|25
36.1882 + License:2|Imprint License 2|6530|0|25
36.1883 + Binding|Binding Mnemonic|6531|0|6
36.1884 + Design|Design Mnemonic|6532|0|8
36.1885 + BusinessSerial|Business Serial Letters|6533|0|3
36.1886 + BusNumCopies|Business Number of Copies|6534|5|4
36.1887 + BusBindingsTyle|Business Binding Style|6535|5|11
36.1888 + BusVoucherNumber|Business Voucher Number|6536|0|6
36.1889 + BusCaptions:1|Business Caption 1|6537|0|2
36.1890 + BusCaptions:2|Business Caption 2|6537|0|2
36.1891 + BusCaptions:3|Business Caption 3|6537|0|2
36.1892 + BusCaptions:4|Business Caption 4|6537|0|2
36.1893 + BusCaptions:5|Business Caption 5|6537|0|2
36.1894 + BusCaptions:6|Business Caption 6|6537|0|2
36.1895 + BusCaptions:7|Business Caption 7|6537|0|2
36.1896 + BusCaptions:8|Business Caption 8|6537|0|2
36.1897 + PromoNumber|Promo Number|6538|0|4
36.1898 + AcctAddrInkColor|Account/Address Ink Color|6539|5|7
36.1899 + TitleInkColor|Titleplate Ink Color|6540|5|7
36.1900 + CutInkColor|Cut Ink Color|6541|5|7
36.1901 + TaxExemptCode|Tax Exempt Code|6542|5|1
36.1902 + RerunReason|Rerun Reason|6543|5|5
36.1903 + ImprintLineSize:1|Imprint Line 1 Size|6544|5|1
36.1904 + ImprintLineSize:2|Imprint Line 2 Size|6544|5|1
36.1905 + ImprintLineSize:3|Imprint Line 3 Size|6544|5|1
36.1906 + ImprintLineSize:4|Imprint Line 4 Size|6544|5|1
36.1907 + ImprintLineSize:5|Imprint Line 5 Size|6544|5|1
36.1908 + ImprintLineSize:6|Imprint Line 6 Size|6544|5|1
36.1909 + OverSigJustify|Over Signature Justification|6545|5|2
36.1910 + OverSigLineSize|Over Signature Line Size|6546|5|1
36.1911 + PONumber|Purchase Order|6547|0|10
36.1912 + ChargeShipping|Charge Shipping To|6548|5|1
36.1913 + ImprintUsage:1|Imprint Line 1 Usage|6549|5|1
36.1914 + ImprintUsage:2|Imprint Line 2 Usage|6549|5|1
36.1915 + ImprintUsage:3|Imprint Line 3 Usage|6549|5|1
36.1916 + ImprintUsage:4|Imprint Line 4 Usage|6549|5|1
36.1917 + ImprintUsage:5|Imprint Line 5 Usage|6549|5|1
36.1918 + ImprintUsage:6|Imprint Line 6 Usage|6549|5|1
36.1919 + Accent|Accent Figure|6550|0|5
36.1920 + Phantom|Phantom Figure|6551|0|5
36.1921 + SigFigure|Signature Figure|6552|0|5
36.1922 + CheckInitials|Check Initials|6553|0|3
36.1923 + ImprintCity|Imprint City|6554|0|30
36.1924 + ImprintState|Imprint State|6555|0|2
36.1925 + MailCity|Mailing City|6556|0|30
36.1926 + MailState|Mailing State|6557|0|2
36.1927 + MICRLine|MICR Line|6558|0|20
36.1928 + UserID|User ID|6559|5|4999
36.1929 + LastFreeOrder|Last Free Order|6560|3|null
36.1930 + Locator|Locator|6561|4|null
36.1931 + ***|Loan Tracking|Loan Tracking
36.1932 + Type|Tracking Type|6892|5|99
36.1933 + ID|ID|6802|0|2
36.1934 + IDType|ID Type|6803|5|4
36.1935 + UserID|User ID|6804|5|4999
36.1936 + FMLastDate|Last FM Date|6805|3|null
36.1937 + CreationDate|Creation Date|6806|3|null
36.1938 + CreationTime|Creation Time|6807|5|2359
36.1939 + ExpireDate|Expiration Date|6808|3|null
36.1940 + TrackingCode|Tracking Code|6809|5|99
36.1941 + UserNumber1|User Number 01|6810|4|null
36.1942 + UserNumber2|User Number 02|6811|4|null
36.1943 + UserNumber3|User Number 03|6812|4|null
36.1944 + UserNumber4|User Number 04|6813|4|null
36.1945 + UserNumber5|User Number 05|6814|4|null
36.1946 + UserNumber6|User Number 06|6815|4|null
36.1947 + UserNumber7|User Number 07|6816|4|null
36.1948 + UserNumber8|User Number 08|6817|4|null
36.1949 + UserNumber9|User Number 09|6818|4|null
36.1950 + UserNumber10|User Number 10|6819|4|null
36.1951 + UserChar1|User Char 01|6820|0|40
36.1952 + UserChar2|User Char 02|6821|0|40
36.1953 + UserChar3|User Char 03|6822|0|40
36.1954 + UserChar4|User Char 04|6823|0|40
36.1955 + UserChar5|User Char 05|6824|0|40
36.1956 + UserChar6|User Char 06|6825|0|40
36.1957 + UserChar7|User Char 07|6826|0|40
36.1958 + UserChar8|User Char 08|6827|0|40
36.1959 + UserChar9|User Char 09|6828|0|40
36.1960 + UserChar10|User Char 10|6829|0|40
36.1961 + UserAmount1|User Amount 01|6830|7|null
36.1962 + UserAmount2|User Amount 02|6831|7|null
36.1963 + UserAmount3|User Amount 03|6832|7|null
36.1964 + UserAmount4|User Amount 04|6833|7|null
36.1965 + UserAmount5|User Amount 05|6834|7|null
36.1966 + UserAmount6|User Amount 06|6835|7|null
36.1967 + UserAmount7|User Amount 07|6836|7|null
36.1968 + UserAmount8|User Amount 08|6837|7|null
36.1969 + UserAmount9|User Amount 09|6838|7|null
36.1970 + UserAmount10|User Amount 10|6839|7|null
36.1971 + UserCode1|User Code 01|6840|5|9999
36.1972 + UserCode2|User Code 02|6841|5|9999
36.1973 + UserCode3|User Code 03|6842|5|9999
36.1974 + UserCode4|User Code 04|6843|5|9999
36.1975 + UserCode5|User Code 05|6844|5|9999
36.1976 + UserCode6|User Code 06|6845|5|9999
36.1977 + UserCode7|User Code 07|6846|5|9999
36.1978 + UserCode8|User Code 08|6847|5|9999
36.1979 + UserCode9|User Code 09|6848|5|9999
36.1980 + UserCode10|User Code 10|6849|5|9999
36.1981 + UserDate1|User Date 01|6850|3|null
36.1982 + UserDate2|User Date 02|6851|3|null
36.1983 + UserDate3|User Date 03|6852|3|null
36.1984 + UserDate4|User Date 04|6853|3|null
36.1985 + UserDate5|User Date 05|6854|3|null
36.1986 + UserDate6|User Date 06|6855|3|null
36.1987 + UserDate7|User Date 07|6856|3|null
36.1988 + UserDate8|User Date 08|6857|3|null
36.1989 + UserDate9|User Date 09|6858|3|null
36.1990 + UserDate10|User Date 10|6859|3|null
36.1991 + UserRate1|User Rate 01|6860|2|null
36.1992 + UserRate2|User Rate 02|6861|2|null
36.1993 + UserRate3|User Rate 03|6862|2|null
36.1994 + UserRate4|User Rate 04|6863|2|null
36.1995 + UserRate5|User Rate 05|6864|2|null
36.1996 + UserRate6|User Rate 06|6865|2|null
36.1997 + UserRate7|User Rate 07|6866|2|null
36.1998 + UserRate8|User Rate 08|6867|2|null
36.1999 + UserRate9|User Rate 09|6868|2|null
36.2000 + UserRate10|User Rate 10|6869|2|null
36.2001 + Locator|Locator|6870|4|null
36.2002 + UserNumber11|User Number 11|6871|4|null
36.2003 + UserNumber12|User Number 12|6872|4|null
36.2004 + UserNumber13|User Number 13|6873|4|null
36.2005 + UserNumber14|User Number 14|6874|4|null
36.2006 + UserNumber15|User Number 15|6875|4|null
36.2007 + UserNumber16|User Number 16|6876|4|null
36.2008 + UserNumber17|User Number 17|6877|4|null
36.2009 + UserNumber18|User Number 18|6878|4|null
36.2010 + UserNumber19|User Number 19|6879|4|null
36.2011 + UserNumber20|User Number 20|6880|4|null
36.2012 + UserChar11|User Char 11|6881|0|40
36.2013 + UserChar12|User Char 12|6882|0|40
36.2014 + UserChar13|User Char 13|6883|0|40
36.2015 + UserChar14|User Char 14|6884|0|40
36.2016 + UserChar15|User Char 15|6885|0|40
36.2017 + UserChar16|User Char 16|6886|0|40
36.2018 + UserChar17|User Char 17|6887|0|40
36.2019 + UserChar18|User Char 18|6888|0|40
36.2020 + UserChar19|User Char 19|6889|0|40
36.2021 + UserChar20|User Char 20|9400|0|40
36.2022 + UserAmount11|User Amount 11|9401|7|null
36.2023 + UserAmount12|User Amount 12|9402|7|null
36.2024 + UserAmount13|User Amount 13|9403|7|null
36.2025 + UserAmount14|User Amount 14|9404|7|null
36.2026 + UserAmount15|User Amount 15|9405|7|null
36.2027 + UserAmount16|User Amount 16|9406|7|null
36.2028 + UserAmount17|User Amount 17|9407|7|null
36.2029 + UserAmount18|User Amount 18|9408|7|null
36.2030 + UserAmount19|User Amount 19|9409|7|null
36.2031 + UserAmount20|User Amount 20|9410|7|null
36.2032 + UserCode11|User Code 11|9411|5|9999
36.2033 + UserCode12|User Code 12|9412|5|9999
36.2034 + UserCode13|User Code 13|9413|5|9999
36.2035 + UserCode14|User Code 14|9414|5|9999
36.2036 + UserCode15|User Code 15|9415|5|9999
36.2037 + UserCode16|User Code 16|9416|5|9999
36.2038 + UserCode17|User Code 17|9417|5|9999
36.2039 + UserCode18|User Code 18|9418|5|9999
36.2040 + UserCode19|User Code 19|9419|5|9999
36.2041 + UserCode20|User Code 20|9420|5|9999
36.2042 + UserDate11|User Date 11|9421|3|null
36.2043 + UserDate12|User Date 12|9422|3|null
36.2044 + UserDate13|User Date 13|9423|3|null
36.2045 + UserDate14|User Date 14|9424|3|null
36.2046 + UserDate15|User Date 15|9425|3|null
36.2047 + UserDate16|User Date 16|9426|3|null
36.2048 + UserDate17|User Date 17|9427|3|null
36.2049 + UserDate18|User Date 18|9428|3|null
36.2050 + UserDate19|User Date 19|9429|3|null
36.2051 + UserDate20|User Date 20|9430|3|null
36.2052 + UserRate11|User Rate 11|9431|2|null
36.2053 + UserRate12|User Rate 12|9432|2|null
36.2054 + UserRate13|User Rate 13|9433|2|null
36.2055 + UserRate14|User Rate 14|9434|2|null
36.2056 + UserRate15|User Rate 15|9435|2|null
36.2057 + UserRate16|User Rate 16|9436|2|null
36.2058 + UserRate17|User Rate 17|9437|2|null
36.2059 + UserRate18|User Rate 18|9438|2|null
36.2060 + UserRate19|User Rate 19|9439|2|null
36.2061 + UserRate20|User Rate 20|9440|2|null
36.2062 + ***|Loan Note|Loan Note
36.2063 + ID|ID|2701|0|2
36.2064 + IDType|ID Type|2702|5|4
36.2065 + Code|Note Code|2714|5|199
36.2066 + Text:1|Text Line 01|2704|0|40
36.2067 + Text:2|Text Line 02|2704|0|40
36.2068 + Text:3|Text Line 03|2704|0|40
36.2069 + Text:4|Text Line 04|2704|0|40
36.2070 + Text:5|Text Line 05|2704|0|40
36.2071 + Text:6|Text Line 06|2704|0|40
36.2072 + Text:7|Text Line 07|2704|0|40
36.2073 + Text:8|Text Line 08|2704|0|40
36.2074 + Text:9|Text Line 09|2704|0|40
36.2075 + Text:10|Text Line 10|2704|0|40
36.2076 + Text:11|Text Line 11|2704|0|40
36.2077 + Text:12|Text Line 12|2704|0|40
36.2078 + UserID|User ID|2705|5|4999
36.2079 + EnterDate|Enter Date|2706|3|null
36.2080 + EnterTime|Enter Time|2707|5|2359
36.2081 + VoidFlag|Voided|2709|5|1
36.2082 + VoidedBy|Voided By|2710|5|4999
36.2083 + ExpirationDate|Expiration Date|2711|3|null
36.2084 + Locator|Locator|2719|4|null
36.2085 + TextLineCount|Text Line Count|2712|4|null
36.2086 + ***|Loan Transaction|Loan Transaction
36.2087 + AccountNumber|Account Number|0|0|10
36.2088 + ID|ID|0|0|2
36.2089 + IDType|ID Type|0|5|1
36.2090 + CommentCode|Comment Code|0|5|1
36.2091 + TransferCode|Transfer Code|0|5|1
36.2092 + AdjustmentCode|Adjustment Code|0|5|1
36.2093 + RegECode|Reg E Code|0|5|1
36.2094 + RegDCheckCode|Reg D Check Code|0|5|1
36.2095 + RegDTransferCode|Reg D Transfer Code|0|5|1
36.2096 + VoidCode|Void Code|0|5|1
36.2097 + SubActionCode|Sub Action Code|0|0|1
36.2098 + SequenceNumber|Sequence Number|0|4|null
36.2099 + EffectiveDate|Effective Date|0|3|null
36.2100 + PostDate|Post Date|0|3|null
36.2101 + PostTime|Post Time|0|5|2359
36.2102 + UserNumber|User Number|0|5|4999
36.2103 + UserOverride|User Override|0|5|4999
36.2104 + SecurityLevels|Security Levels|0|5|9999
36.2105 + Description|Description|0|0|16
36.2106 + ActionCode|Action Code|0|0|1
36.2107 + SourceCode|Source Code|0|0|1
36.2108 + BalanceChange|Balance Change|0|7|null
36.2109 + Interest|Interest/Penalty|0|7|null
36.2110 + NewBalance|New Balance|0|7|null
36.2111 + FeeAmount|Fee Amount|0|7|null
36.2112 + EscrowAmount|Escrow Amount|0|7|null
36.2113 + LastTranDate|Last Tran Date|0|3|null
36.2114 + MaturityLoanDueDate|Maturity/Loan Due Date|0|3|null
36.2115 + Comment|Comment|0|0|42
36.2116 + Branch|Branch|0|5|9999
36.2117 + ConsoleNumber|Console Number|0|5|9999
36.2118 + BatchSequence|Batch Sequence|0|4|null
36.2119 + SalesTaxAmount|Sales Tax Amount|0|7|null
36.2120 + ActivityDate|Activity Date|0|3|null
36.2121 + BilledFeeAmount|Billed Fee Amount|0|7|null
36.2122 + ProcessorUser|Processor User|0|5|32767
36.2123 + MemberBranch|Member Branch|0|0|4
36.2124 + PrevAvailBalance|Prev Available Balance|0|7|null
36.2125 + SubSource|Sub Source Code|0|5|9999
36.2126 + SubSourceDescr|Sub Source Description|2460|1|40
36.2127 + ***|EFT|EFT
36.2128 + Type|EFT Type|701|5|3
36.2129 + GroupNumber|Group Number|702|0|6
36.2130 + IDType|ID Type|703|5|1
36.2131 + ID|ID|704|0|2
36.2132 + Payee|Payee|705|0|10
36.2133 + Reference|Reference|706|0|40
36.2134 + EffectiveDate|Effective Date|707|3|null
36.2135 + ExpirationDate|Expiration Date|708|3|null
36.2136 + LastTranDate|Last Tran Date|709|3|null
36.2137 + LastTranAmount|Last Tran Amount|710|7|null
36.2138 + PostAmount|Post Amount|711|7|null
36.2139 + StandardAmount|Standard Amount|712|7|null
36.2140 + SpecificAmount|Specific Amount|713|7|null
36.2141 + AmountYTD|Amount YTD|714|7|null
36.2142 + CreditLimit|Credit Limit|715|7|null
36.2143 + CountyTd|Count YTD|716|5|9999
36.2144 + AudioID|Audio ID|717|0|2
36.2145 + Balance|Balance|718|7|null
36.2146 + FederalWithholding|Federal Withholding|719|7|null
36.2147 + StateWithholding|State Withholding|720|7|null
36.2148 + DQCount|DQ Count|721|5|9999
36.2149 + AmountCode|Amount Code|722|5|99
36.2150 + Status|Status|723|0|1
36.2151 + PostFREQ|Posting Freq|724|5|99
36.2152 + MatchCode1|Match Code 1|725|5|12
36.2153 + MatchID1|Match ID 1|726|0|22
36.2154 + MatchCode2|Match Code 2|727|5|12
36.2155 + MatchID2|Match ID 2|728|0|22
36.2156 + DistributionRatio|Distribution Ratio|729|5|22
36.2157 + MatchCode3|Match Code 3|730|5|12
36.2158 + MatchID3|Match ID 3|731|0|22
36.2159 + NextDate|Next Date|732|3|null
36.2160 + Frequency|Frequency|733|5|14
36.2161 + Day1|Day 1|734|5|31
36.2162 + Day2|Day 2|735|5|31
36.2163 + DeferDate|Defer Until|736|3|null
36.2164 + Locator|Locator|737|4|null
36.2165 + RegDCode|Regulation D Code|738|5|1
36.2166 + Reference2|Reference 2|739|0|40
36.2167 + PayeeName|Payee Name|780|1|40
36.2168 + PayeeExtraAddress|Payee Extra Address|781|1|40
36.2169 + PayeeStreet|Payee Street|782|1|40
36.2170 + PayeeCity|Payee City|783|1|40
36.2171 + PayeeState|Payee State|784|1|10
36.2172 + PayeeZipCode|Payee Zip Code|785|1|10
36.2173 + ***|EFT Name|EFT Name
36.2174 + Type|Name Type|101|5|53
36.2175 + SubType|Name SubType|102|5|99
36.2176 + MailOverride|Mail Override|103|5|1
36.2177 + SSNOverride|SSN/TIN Override|104|5|3
36.2178 + SSNCertification|SSN/TIN Certification|105|5|2
36.2179 + SSNType|SSN/TIN Type|106|5|9
36.2180 + EffectiveDate|Effective Date|107|3|null
36.2181 + ExpirationDate|Expiration Date|108|3|null
36.2182 + BirthDate|Birth Date|109|3|null
36.2183 + Title|Title|110|0|8
36.2184 + First|First Name|111|0|20
36.2185 + Middle|Middle Name|112|0|10
36.2186 + Last|Last Name|113|0|40
36.2187 + Suffix|Suffix|114|0|4
36.2188 + ExtraAddress|Extra Address|115|0|40
36.2189 + Street|Street|116|0|40
36.2190 + City|City|117|0|40
36.2191 + State|State|118|0|10
36.2192 + ZipCode|Zip Code|119|0|10
36.2193 + HomePhone|Home Phone|120|0|16
36.2194 + SSN|SSN/TIN|121|0|9
36.2195 + WorkPhone|Work Phone|122|0|16
36.2196 + LastFMDate|Last FM Date|123|3|null
36.2197 + CarrierRoute|Carrier Route|124|0|4
36.2198 + AddressType|Address Type|125|5|2
36.2199 + BeneficiaryPercent|Beneficiary Percent|126|2|null
36.2200 + IRSCorrection|IRS Correction|127|5|1
36.2201 + WorkPhoneExtension|Work Phone Ext|128|0|6
36.2202 + DeathDate|Death Date|130|3|null
36.2203 + ECOACode|ECOA Code|131|5|11
36.2204 + Country|Country|132|0|20
36.2205 + CountryCode|Country Code|133|0|2
36.2206 + Email|E-Mail Address|134|0|40
36.2207 + MothersMaidenName|Mother's Maiden Name|135|0|20
36.2208 + EmployerName|Current Employer|136|0|40
36.2209 + AltEmail|Alt E-Mail Address|137|0|40
36.2210 + Locator|Locator|138|4|null
36.2211 + MobilePhone|Mobile Phone|139|0|16
36.2212 + PagerNumber|Pager Number|140|0|16
36.2213 + USPersonFlag|U.S. Person Flag|141|5|1
36.2214 + IdentDocFlag:1|Documentary Flag 1|142|5|1
36.2215 + IdentDocFlag:2|Documentary Flag 2|142|5|1
36.2216 + IdentDocFlag:3|Documentary Flag 3|142|5|1
36.2217 + IdentIDType:1|ID Type 1|143|5|999
36.2218 + IdentIDType:2|ID Type 2|143|5|999
36.2219 + IdentIDType:3|ID Type 3|143|5|999
36.2220 + IdentIDDescription:1|ID Description 1|144|0|40
36.2221 + IdentIDDescription:2|ID Description 2|144|0|40
36.2222 + IdentIDDescription:3|ID Description 3|144|0|40
36.2223 + IdentIDNumber:1|ID Number 1|145|0|40
36.2224 + IdentIDNumber:2|ID Number 2|145|0|40
36.2225 + IdentIDNumber:3|ID Number 3|145|0|40
36.2226 + IdentIDIssueDate:1|ID Issuance Date 1|146|3|null
36.2227 + IdentIDIssueDate:2|ID Issuance Date 2|146|3|null
36.2228 + IdentIDIssueDate:3|ID Issuance Date 3|146|3|null
36.2229 + IdentIDExpireDate:1|ID Expiration Date 1|147|3|null
36.2230 + IdentIDExpireDate:2|ID Expiration Date 2|147|3|null
36.2231 + IdentIDExpireDate:3|ID Expiration Date 3|147|3|null
36.2232 + IdentIDVerifyDate:1|ID Verification Date 1|148|3|null
36.2233 + IdentIDVerifyDate:2|ID Verification Date 2|148|3|null
36.2234 + IdentIDVerifyDate:3|ID Verification Date 3|148|3|null
36.2235 + Occupation|Occupation|149|0|20
36.2236 + UserChar1|User Char 01|150|0|40
36.2237 + UserChar2|User Char 02|151|0|40
36.2238 + UserChar3|User Char 03|152|0|40
36.2239 + UserChar4|User Char 04|153|0|40
36.2240 + UserAmount1|User Amount 01|154|7|null
36.2241 + UserAmount2|User Amount 02|155|7|null
36.2242 + UserDate1|User Date 01|156|3|null
36.2243 + UserDate2|User Date 02|157|3|null
36.2244 + LastAddrChgDate|Address Change Date|158|3|null
36.2245 + LastAddrVerifDate|Address Verify Date|159|3|null
36.2246 + CreditReportConsumerInfo|Credit Report Consumer Info|160|0|2
36.2247 + ShortName|Short Name|180|0|16
36.2248 + LongName|Long Name|181|1|40
36.2249 + License|License|129|0|20
36.2250 + ***|EFT Ttransfer|EFT Transfer
36.2251 + Type|Transfer Type|901|5|8
36.2252 + AccountNumber|Account|902|0|10
36.2253 + IDType|ID Type|903|5|2
36.2254 + ID|ID|904|0|2
36.2255 + Amount|Amount|905|7|null
36.2256 + Percent|Percent|906|2|null
36.2257 + EffectiveDate|Effective Date|907|3|null
36.2258 + ExpirationDate|Expiration Date|908|3|null
36.2259 + AmountOption|Amount Option|909|5|5
36.2260 + NextDate|Next Transfer Date|910|3|null
36.2261 + Frequency|Transfer Frequency|911|5|14
36.2262 + Day1|Transfer Day 1|912|5|31
36.2263 + Day2|Transfer Day 2|913|5|31
36.2264 + Locator|Locator|914|4|null
36.2265 + MinimumBalance|Minimum Balance|915|7|null
36.2266 + MaximumBalance|Maximum Balance|916|7|null
36.2267 + RegE|Reg E|917|5|1
36.2268 + LastDate|Last Transfer Date|918|3|null
36.2269 + PaymentType|Transfer Payment Type|919|5|1
36.2270 + SweepMinimum|Sweep Minimum|920|7|null
36.2271 + ***|EFT AddendaInfo|EFT Addenda Info
36.2272 + Type|Addenda Info Type|9701|5|0
36.2273 + Locator|Locator|9702|4|null
36.2274 + Info:1|Info 1|9703|0|40
36.2275 + Info:2|Info 2|9703|0|40
36.2276 + ***|Card|Card
36.2277 + Number|Card Number|801|0|20
36.2278 + Suffix|Card Suffix|802|0|2
36.2279 + Type|Card Type|803|5|99
36.2280 + NameType|Name Type|804|5|2
36.2281 + Status|Card Status|805|5|2
36.2282 + IssueCode|Issue Code|806|5|99
36.2283 + ReIssueCode|Reissue Code|807|5|4
36.2284 + IssueDate|Issue Date|808|3|null
36.2285 + EffectiveDate|Effective Date|809|3|null
36.2286 + ExpirationDate|Expiration Date|810|3|null
36.2287 + LimitAmount|Limit Amount|811|7|null
36.2288 + LimitDays|Limit Days|812|5|9999
36.2289 + UsageLimit|ATM Usage Limit|813|7|null
36.2290 + UsageAmount|ATM Usage Amount|814|7|null
36.2291 + UsageDate|Usage Date|815|3|null
36.2292 + BlockCode|Block Code|816|0|1
36.2293 + RecLassCode|Reclass Code|817|0|1
36.2294 + PinActual|PIN Actual|818|4|null
36.2295 + PinOffset|PIN Offset|819|4|null
36.2296 + PinRetries|PIN Retries|820|5|9999
36.2297 + POSLimit|POS Limit|821|7|null
36.2298 + POSAmount|POS Amount|822|7|null
36.2299 + MiscLimit|Misc Limit|823|7|null
36.2300 + MiscAmount|Misc Amount|824|7|null
36.2301 + ReIssueMonths|Reissue Months|825|5|99
36.2302 + SavID|Sav ID|826|0|2
36.2303 + ChkID|Chk ID|827|0|2
36.2304 + LocID|LOC ID|828|0|2
36.2305 + MiscID:1|Misc ID 1|829|0|2
36.2306 + MiscID:2|Misc ID 2|829|0|2
36.2307 + MiscID:3|Misc ID 3|829|0|2
36.2308 + DepLimit|Dep Limit|830|7|null
36.2309 + DepAmount|Dep Amount|831|7|null
36.2310 + ActiveDate|Activation Date|832|3|null
36.2311 + PrevExpirationDate|Prev Expiration Date|833|3|null
36.2312 + PrevNumber|Prev Number|834|0|20
36.2313 + PrevSuffix|Prev Card Suffix|835|0|2
36.2314 + PrevPinActual|Prev PIN Actual|836|4|null
36.2315 + PrevPinOffset|Prev PIN Offset|837|4|null
36.2316 + WarningCode:1|Warning 1 Code|838|5|99
36.2317 + WarningCode:2|Warning 2 Code|838|5|99
36.2318 + WarningCode:3|Warning 3 Code|838|5|99
36.2319 + WarningCode:4|Warning 4 Code|838|5|99
36.2320 + WarningCode:5|Warning 5 Code|838|5|99
36.2321 + WarningCode:6|Warning 6 Code|838|5|99
36.2322 + WarningCode:7|Warning 7 Code|838|5|99
36.2323 + WarningCode:8|Warning 8 Code|838|5|99
36.2324 + WarningExpiration:1|Warning 1 Expiration|839|3|null
36.2325 + WarningExpiration:2|Warning 2 Expiration|839|3|null
36.2326 + WarningExpiration:3|Warning 3 Expiration|839|3|null
36.2327 + WarningExpiration:4|Warning 4 Expiration|839|3|null
36.2328 + WarningExpiration:5|Warning 5 Expiration|839|3|null
36.2329 + WarningExpiration:6|Warning 6 Expiration|839|3|null
36.2330 + WarningExpiration:7|Warning 7 Expiration|839|3|null
36.2331 + WarningExpiration:8|Warning 8 Expiration|839|3|null
36.2332 + Service:1|Service 1|840|5|99
36.2333 + Service:2|Service 2|840|5|99
36.2334 + Service:3|Service 3|840|5|99
36.2335 + Service:4|Service 4|840|5|99
36.2336 + Service:5|Service 5|840|5|99
36.2337 + Service:6|Service 6|840|5|99
36.2338 + Service:7|Service 7|840|5|99
36.2339 + Service:8|Service 8|840|5|99
36.2340 + AuthLimit|Auth Limit|841|7|null
36.2341 + AuthAmount|Auth Amount|842|7|null
36.2342 + AuthCountLimit|Auth Count Limit|843|5|9999
36.2343 + AuthCount|Auth Count|844|5|9999
36.2344 + ATMCountLimit|ATM Count Limit|845|5|9999
36.2345 + ATMCount|ATM Count|846|5|9999
36.2346 + POSCountLimit|POS Count Limit|847|5|9999
36.2347 + POSCount|POS Count|848|5|9999
36.2348 + MiscCountLimit|Misc Count Limit|849|5|9999
36.2349 + MiscCount|Misc Count|850|5|9999
36.2350 + CredDebLimit|Credit/Debit Limit|851|7|null
36.2351 + CredDebAmount|Credit/Debit Amount|852|7|null
36.2352 + CredDebCountLimit|Credit/Debit Count Limit|853|5|9999
36.2353 + CredDebCount|Credit/Debit Count|854|5|9999
36.2354 + FeeCount:1|Fee Count 1|855|5|9999
36.2355 + FeeCount:2|Fee Count 2|855|5|9999
36.2356 + FeeCount:3|Fee Count 3|855|5|9999
36.2357 + FeeCount:4|Fee Count 4|855|5|9999
36.2358 + CreditCardID|Credit Card Loan ID|856|0|2
36.2359 + SingleUsageMax|Single Usage Max|857|7|null
36.2360 + WDCheckMax|Maximum Check W/D|858|7|null
36.2361 + WDCheckLimit|Check W/D Limit|859|7|null
36.2362 + WDCheckAmount|Check W/D Amount|860|7|null
36.2363 + WDCheckCountLimit|Check W/D Count Limit|861|5|9999
36.2364 + WDCheckCount|Check W/D Count|862|5|9999
36.2365 + XferMax|Maximum Transfer|863|7|null
36.2366 + XferLimit|Transfer Limit|864|7|null
36.2367 + XferAmount|Transfer Amount|865|7|null
36.2368 + XferCountLimit|Transfer Count Limit|866|5|9999
36.2369 + XferCount|Transfer Count|867|5|9999
36.2370 + BillPayMax|Maximum Bill Pmt|868|7|null
36.2371 + BillPayLimit|Bill Pmt Limit|869|7|null
36.2372 + BillPayAmount|Bill Pmt Amount|870|7|null
36.2373 + BillPayCountLimit|Bill Pmt Count Limit|871|5|9999
36.2374 + BillPayCount|Bill Pmt Count|872|5|9999
36.2375 + DepMax|Maximum Deposit|873|7|null
36.2376 + DepCountLimit|Deposit Count Limit|874|5|9999
36.2377 + DepCount|Deposit Count|875|5|9999
36.2378 + PrevActivationDate|Prev Activation Date|876|3|null
36.2379 + ExtraEmBoss|Extra Emboss Line|877|0|26
36.2380 + CloseDate|Close Date|878|3|null
36.2381 + StatusReason|Status Reason|879|5|199
36.2382 + PinOrderDate|PIN Order Date|880|3|null
36.2383 + Locator|Locator|881|4|null
36.2384 + Description|Description|882|0|30
36.2385 + LastAddrChgDate|Last Address Change|883|3|null
36.2386 + ***|Card Name|Card Name
36.2387 + Type|Name Type|101|5|53
36.2388 + SubType|Name SubType|102|5|99
36.2389 + MailOverride|Mail Override|103|5|1
36.2390 + SSNOverride|SSN/TIN Override|104|5|3
36.2391 + SSNCertification|SSN/TIN Certification|105|5|2
36.2392 + SSNType|SSN/TIN Type|106|5|9
36.2393 + EffectiveDate|Effective Date|107|3|null
36.2394 + ExpirationDate|Expiration Date|108|3|null
36.2395 + BirthDate|Birth Date|109|3|null
36.2396 + Title|Title|110|0|8
36.2397 + First|First Name|111|0|20
36.2398 + Middle|Middle Name|112|0|10
36.2399 + Last|Last Name|113|0|40
36.2400 + Suffix|Suffix|114|0|4
36.2401 + ExtraAddress|Extra Address|115|0|40
36.2402 + Street|Street|116|0|40
36.2403 + City|City|117|0|40
36.2404 + State|State|118|0|10
36.2405 + ZipCode|Zip Code|119|0|10
36.2406 + HomePhone|Home Phone|120|0|16
36.2407 + SSN|SSN/TIN|121|0|9
36.2408 + WorkPhone|Work Phone|122|0|16
36.2409 + LastFMDate|Last FM Date|123|3|null
36.2410 + CarrierRoute|Carrier Route|124|0|4
36.2411 + AddressType|Address Type|125|5|2
36.2412 + BeneficiaryPercent|Beneficiary Percent|126|2|null
36.2413 + IRSCorrection|IRS Correction|127|5|1
36.2414 + WorkPhoneExtension|Work Phone Ext|128|0|6
36.2415 + DeathDate|Death Date|130|3|null
36.2416 + ECOACode|ECOA Code|131|5|11
36.2417 + Country|Country|132|0|20
36.2418 + CountryCode|Country Code|133|0|2
36.2419 + Email|E-Mail Address|134|0|40
36.2420 + MothersMaidenName|Mother's Maiden Name|135|0|20
36.2421 + EmployerName|Current Employer|136|0|40
36.2422 + AltEmail|Alt E-Mail Address|137|0|40
36.2423 + Locator|Locator|138|4|null
36.2424 + MobilePhone|Mobile Phone|139|0|16
36.2425 + PagerNumber|Pager Number|140|0|16
36.2426 + USPersonFlag|U.S. Person Flag|141|5|1
36.2427 + IdentDocFlag:1|Documentary Flag 1|142|5|1
36.2428 + IdentDocFlag:2|Documentary Flag 2|142|5|1
36.2429 + IdentDocFlag:3|Documentary Flag 3|142|5|1
36.2430 + IdentIDType:1|ID Type 1|143|5|999
36.2431 + IdentIDType:2|ID Type 2|143|5|999
36.2432 + IdentIDType:3|ID Type 3|143|5|999
36.2433 + IdentIDDescription:1|ID Description 1|144|0|40
36.2434 + IdentIDDescription:2|ID Description 2|144|0|40
36.2435 + IdentIDDescription:3|ID Description 3|144|0|40
36.2436 + IdentIDNumber:1|ID Number 1|145|0|40
36.2437 + IdentIDNumber:2|ID Number 2|145|0|40
36.2438 + IdentIDNumber:3|ID Number 3|145|0|40
36.2439 + IdentIDIssueDate:1|ID Issuance Date 1|146|3|null
36.2440 + IdentIDIssueDate:2|ID Issuance Date 2|146|3|null
36.2441 + IdentIDIssueDate:3|ID Issuance Date 3|146|3|null
36.2442 + IdentIDExpireDate:1|ID Expiration Date 1|147|3|null
36.2443 + IdentIDExpireDate:2|ID Expiration Date 2|147|3|null
36.2444 + IdentIDExpireDate:3|ID Expiration Date 3|147|3|null
36.2445 + IdentIDVerifyDate:1|ID Verification Date 1|148|3|null
36.2446 + IdentIDVerifyDate:2|ID Verification Date 2|148|3|null
36.2447 + IdentIDVerifyDate:3|ID Verification Date 3|148|3|null
36.2448 + Occupation|Occupation|149|0|20
36.2449 + UserChar1|User Char 01|150|0|40
36.2450 + UserChar2|User Char 02|151|0|40
36.2451 + UserChar3|User Char 03|152|0|40
36.2452 + UserChar4|User Char 04|153|0|40
36.2453 + UserAmount1|User Amount 01|154|7|null
36.2454 + UserAmount2|User Amount 02|155|7|null
36.2455 + UserDate1|User Date 01|156|3|null
36.2456 + UserDate2|User Date 02|157|3|null
36.2457 + LastAddrChgDate|Address Change Date|158|3|null
36.2458 + LastAddrVerifDate|Address Verify Date|159|3|null
36.2459 + CreditReportConsumerInfo|Credit Report Consumer Info|160|0|2
36.2460 + ShortName|Short Name|180|0|16
36.2461 + LongName|Long Name|181|1|40
36.2462 + License|License|129|0|20
36.2463 + ***|Card Note|Card Note
36.2464 + ID|ID|2701|0|2
36.2465 + IDType|ID Type|2702|5|4
36.2466 + Code|Note Code|2717|5|199
36.2467 + Text:1|Text Line 01|2704|0|40
36.2468 + Text:2|Text Line 02|2704|0|40
36.2469 + Text:3|Text Line 03|2704|0|40
36.2470 + Text:4|Text Line 04|2704|0|40
36.2471 + Text:5|Text Line 05|2704|0|40
36.2472 + Text:6|Text Line 06|2704|0|40
36.2473 + Text:7|Text Line 07|2704|0|40
36.2474 + Text:8|Text Line 08|2704|0|40
36.2475 + Text:9|Text Line 09|2704|0|40
36.2476 + Text:10|Text Line 10|2704|0|40
36.2477 + Text:11|Text Line 11|2704|0|40
36.2478 + Text:12|Text Line 12|2704|0|40
36.2479 + UserID|User ID|2705|5|4999
36.2480 + EnterDate|Enter Date|2706|3|null
36.2481 + EnterTime|Enter Time|2707|5|2359
36.2482 + VoidFlag|Voided|2709|5|1
36.2483 + VoidedBy|Voided By|2710|5|4999
36.2484 + ExpirationDate|Expiration Date|2711|3|null
36.2485 + Locator|Locator|2719|4|null
36.2486 + TextLineCount|Text Line Count|2712|4|null
36.2487 + ***|Card Access|Card Access
36.2488 + AccessType|Access Type|6701|5|99
36.2489 + AccountNumber|Account Number|6702|0|10
36.2490 + IDType|ID Type|6703|5|2
36.2491 + ID|ID|6704|0|2
36.2492 + EnableWithdrawal|Enable Withdrawals|6705|5|1
36.2493 + EnableDeposit|Enable Deposits|6706|5|1
36.2494 + EnableInquiry|Enable Inquiries|6707|5|1
36.2495 + Locator|Locator|6708|4|null
36.2496 + EnableFM|Enable FM|6709|5|1
36.2497 + Qualifier|Qualifier|6710|0|3
36.2498 + ***|LoanApp|Application
36.2499 + ID|Application ID|1601|0|2
36.2500 + Type|Application Type|1602|5|14
36.2501 + SubType|Sub Type|1603|5|99
36.2502 + FormType|Form Type|1604|5|9
36.2503 + Branch|Branch|1605|5|9999
36.2504 + LastFMDate|Last FM Date|1606|3|null
36.2505 + CreationDate|Creation Date|1607|3|null
36.2506 + EffectiveDate|Effective Date|1608|3|null
36.2507 + ExpirationDate|Expiration Date|1609|3|null
36.2508 + ApplicationDate|Application Date|1610|3|null
36.2509 + DenialReason:1|Denial Reason 1|1611|5|99
36.2510 + DenialReason:2|Denial Reason 2|1611|5|99
36.2511 + DenialReason:3|Denial Reason 3|1611|5|99
36.2512 + DenialReason:4|Denial Reason 4|1611|5|99
36.2513 + DenialReason:5|Denial Reason 5|1611|5|99
36.2514 + DenialDate|Denial Date|1612|3|null
36.2515 + DebtRatioType:1|Debt Ratio 1 Type|1613|5|9
36.2516 + DebtRatioType:2|Debt Ratio 2 Type|1613|5|9
36.2517 + DebtRatioType:3|Debt Ratio 3 Type|1613|5|9
36.2518 + DebtRatioType:4|Debt Ratio 4 Type|1613|5|9
36.2519 + DebtRatioType:5|Debt Ratio 5 Type|1613|5|9
36.2520 + DebtRatio:1|Debt Ratio 1|1614|2|null
36.2521 + DebtRatio:2|Debt Ratio 2|1614|2|null
36.2522 + DebtRatio:3|Debt Ratio 3|1614|2|null
36.2523 + DebtRatio:4|Debt Ratio 4|1614|2|null
36.2524 + DebtRatio:5|Debt Ratio 5|1614|2|null
36.2525 + CreditsCoreType|Credit Score Type|1615|5|9
36.2526 + CreditsCore|Credit Score|1616|4|null
36.2527 + CUTotalsHares|CU Share Bal|1617|7|null
36.2528 + CUTotalDrafts|CU Draft Bal|1618|7|null
36.2529 + CUTotalCertiras|CU Cert IRA Bal|1619|7|null
36.2530 + CUTotalOpenEndLoans|CU Opn End Loan Bal|1620|7|null
36.2531 + CUTotalCloseDenDloans|CU Cls End Loan Bal|1621|7|null
36.2532 + CUTotalLocLoans|CU LOC Loan Bal|1622|7|null
36.2533 + CUTotalCreditCardLoans|CU Cred Card Ln Bal|1623|7|null
36.2534 + CUTotalCreditLimit|CU Total Credit Lim|1624|7|null
36.2535 + CUTotalOpenEndPaymentS|CU Open End Pmts|1625|7|null
36.2536 + CUTotalCloseDenDpayments|CU Closed End Pmts|1626|7|null
36.2537 + CUTotalLocPaymentS|CU LOC Pmts|1627|7|null
36.2538 + CUTotalCredCardPaymentS|CU Credit Card Pmts|1628|7|null
36.2539 + TotalIncome|Total Monthly Inc|1629|7|null
36.2540 + TotalExpenses|Total Monthly Exp|1630|7|null
36.2541 + TotalAssetS|Total Assets|1631|7|null
36.2542 + TotalLiabilities|Total Liabilities|1632|7|null
36.2543 + TotalCreditLimits|Total Credit Limit|1633|7|null
36.2544 + GrossMonthlyPay1|Gross Monthly Pay 1|1634|7|null
36.2545 + NetMonthlyPay1|Net Monthly Pay 1|1635|7|null
36.2546 + GrossMonthlyPay2|Gross Monthly Pay 2|1636|7|null
36.2547 + NetMonthlyPay2|Net Monthly Pay 2|1637|7|null
36.2548 + LoanType|Loan Type|1304|5|9999
36.2549 + ECOACode|ECOA Code|1320|5|11
36.2550 + ApprovalCode|Approval Code|1317|5|4999
36.2551 + ApprovalDate|Approval Date|1641|3|null
36.2552 + ProcessorCode|Processor Code|1642|5|4999
36.2553 + ExistingLoanID|Existing Loan ID|1643|0|2
36.2554 + ExistingLoanBalance|Existing Loan Bal|1644|7|null
36.2555 + PaymentMethod|Payment Method|1323|5|9
36.2556 + PaymentFrequency|Payment Frequency|1325|5|14
36.2557 + DueDay1|Due Day 1|1335|5|31
36.2558 + DueDay2|Due Day 2|1336|5|31
36.2559 + TransferAccountNumber|Transfer Account|1649|0|10
36.2560 + TransferAccountID|Transfer ID|1650|0|2
36.2561 + CollateralCode|Collateral Code|1315|5|999
36.2562 + CollateralDate|Collateral Date|1316|3|null
36.2563 + SecuredCode|Secured Code|1366|5|3
36.2564 + Insurance1chosen|Single Credit Life Insurance|1654|5|1
36.2565 + Insurance2chosen|Joint Credit Life Insurance|1655|5|1
36.2566 + Insurance3chosen|Credit Disability Insurance|1656|5|1
36.2567 + InsuranceType|Insurance Type|1368|5|99
36.2568 + InsuranceMax|Max Ins Balance|1369|7|null
36.2569 + PurposeCode|Purpose|1319|5|999
36.2570 + CreditLimit|Loan Credit Limit|1361|7|null
36.2571 + LimitExpirationDate|Cred Lim Exp Date|1380|3|null
36.2572 + LoanDescription|Description|1377|0|30
36.2573 + BorrowDate|Borrow Date|1663|3|null
36.2574 + FirstDueDate|First Due Date|1664|3|null
36.2575 + Payment|Payment Amount|1329|7|null
36.2576 + LoanAmount|Loan Amount|1666|7|null
36.2577 + TermMonths|Loan Term in Months|1667|5|999
36.2578 + BalloonDate|Balloon Date|1338|3|null
36.2579 + InterestRate|Interest Rate|1346|2|null
36.2580 + UserNumber1|User Number 01|1670|4|null
36.2581 + UserNumber2|User Number 02|1671|4|null
36.2582 + UserRate1|User Rate 01|1672|2|null
36.2583 + UserRate2|LTV|1673|2|null
36.2584 + UserChar1|CredRep Locator|1674|0|10
36.2585 + UserChar2|Co-Signer Application|1675|0|10
36.2586 + UserChar3|User Char 03|1676|0|10
36.2587 + UserChar4|User Char 04|1677|0|10
36.2588 + UserAmount1|Disposable Income|1678|7|null
36.2589 + UserAmount2|User Amount 02|1679|7|null
36.2590 + UserAmount3|User Amount 03|1680|7|null
36.2591 + UserAmount4|User Amount 04|1681|7|null
36.2592 + UserAmount5|User Amount 05|1682|7|null
36.2593 + UserAmount6|User Amount 06|1683|7|null
36.2594 + UserAmount7|User Amount 07|1684|7|null
36.2595 + UserAmount8|User Amount 08|1685|7|null
36.2596 + UserAmount9|User Amount 09|1686|7|null
36.2597 + UserAmount10|User Amount 10|1687|7|null
36.2598 + UserCode1|User Code 01|1688|5|9999
36.2599 + UserCode2|2nd Mortgage|1689|5|9999
36.2600 + UserCode3|Payment Count|1690|5|9999
36.2601 + UserCode4|Year|1691|5|9999
36.2602 + UserCode5|User Code 05|1692|5|9999
36.2603 + UserCode6|User Code 06|1693|5|9999
36.2604 + UserCode7|User Code 07|1694|5|9999
36.2605 + UserCode8|User Code 08|1695|5|9999
36.2606 + UserCode9|User Code 09|1696|5|9999
36.2607 + UserCode10|User Code 10|1697|5|9999
36.2608 + UserDate1|User Date 01|1698|3|null
36.2609 + UserDate2|User Date 02|1699|3|null
36.2610 + UserDate3|User Date 03|1700|3|null
36.2611 + UserDate4|User Date 04|1701|3|null
36.2612 + UserDate5|User Date 05|1702|3|null
36.2613 + UserDate6|User Date 06|1703|3|null
36.2614 + UserDate7|User Date 07|1704|3|null
36.2615 + UserDate8|User Date 08|1705|3|null
36.2616 + UserDate9|User Date 09|1706|3|null
36.2617 + UserDate10|User Date 10|1707|3|null
36.2618 + Event|Event Number|1708|5|50
36.2619 + EventDate|Event Date|1709|3|null
36.2620 + CancellationDate|Cancellation Date|1710|3|null
36.2621 + DecisionCode|Decision Code|1711|5|4999
36.2622 + DecisionDate|Decision Date|1712|3|null
36.2623 + InSurabilitycode|Insurability Code|1713|5|99
36.2624 + CounteredOrigAmt|Countered Orig Amt|1714|7|null
36.2625 + CounterOfferExpireDate|Counter Offer Exp Date|1715|3|null
36.2626 + SecondAppRequest|2nd App Request|1716|0|16
36.2627 + SecondAppPayment|2nd App Payment|1717|7|null
36.2628 + ThirdAppRequest|3rd App Request|1718|0|16
36.2629 + ThirdAppPayment|3rd App Payment|1719|7|null
36.2630 + CUTotalsAcctNumber:1|Other Account 1|1720|0|10
36.2631 + CUTotalsAcctNumber:2|Other Account 2|1720|0|10
36.2632 + CUTotalsAcctNumber:3|Other Account 3|1720|0|10
36.2633 + CUTotalsAcctNumber:4|Other Account 4|1720|0|10
36.2634 + CUTotalsAcctNumber:5|Other Account 5|1720|0|10
36.2635 + LoanReference|Loan Ref|1721|0|20
36.2636 + LoanMaturityDate|Loan Maturity Date|1722|3|null
36.2637 + InfoRequestDate|Info Request Date|1723|3|null
36.2638 + ClosingDate|Closing Date|1724|3|null
36.2639 + ApprovalAmount|Approval Amount|1725|7|null
36.2640 + CreditBureau|Credit Bureau|1726|5|9
36.2641 + VIN|VIN|1727|0|20
36.2642 + CensusTract|Census Tract|1728|0|10
36.2643 + PendingDate|Pending Date|1729|3|null
36.2644 + SecondAppRequestAmt|2nd App Request Amt|1730|7|null
36.2645 + ThirdAppRequestAmt|3rd App Request Amt|1731|7|null
36.2646 + AppraisedAmount|Appraised Amount|1732|7|null
36.2647 + EscrowAmount|Escrow Amount|1733|7|null
36.2648 + EscrowID|Escrow ID|1734|0|2
36.2649 + SinglePremiumLife|Sgl Prem Life|1735|7|null
36.2650 + SinglePremiumDisability|Sgl Prem Disability|1736|7|null
36.2651 + NotePurgeDate|Note Purge Date|1737|3|null
36.2652 + BalloonAmount|Balloon Amount|1738|7|null
36.2653 + AppraisalOffset|Appraisal Offset|1739|7|null
36.2654 + PaymentSkips|Payment Skips|1740|5|9
36.2655 + PaymentSkipsTartDay|Payment Skip Start Day|1741|5|1231
36.2656 + FASB91Code|FASB 91 Code|1742|5|199
36.2657 + EffectiveAPR|Effective APR|1743|2|null
36.2658 + OriginalRate|Original Rate|1744|2|null
36.2659 + Unamortizedfees|Unamortized Fees|1745|7|null
36.2660 + RiskRate|Risk Rate|1746|2|null
36.2661 + DiscountRate|Discount Rate|1747|2|null
36.2662 + APR|APR|1748|2|null
36.2663 + PrepAidFinanceChg|Prepaid Finance Chg|1749|7|null
36.2664 + CompletedActions:1|Completed Action 01|1750|5|1
36.2665 + CompletedActions:2|Completed Action 02|1750|5|1
36.2666 + CompletedActions:3|Completed Action 03|1750|5|1
36.2667 + CompletedActions:4|Completed Action 04|1750|5|1
36.2668 + CompletedActions:5|Completed Action 05|1750|5|1
36.2669 + CompletedActions:6|Completed Action 06|1750|5|1
36.2670 + CompletedActions:7|Completed Action 07|1750|5|1
36.2671 + CompletedActions:8|Completed Action 08|1750|5|1
36.2672 + CompletedActions:9|Completed Action 09|1750|5|1
36.2673 + CompletedActions:10|Completed Action 10|1750|5|1
36.2674 + CompletedActions:11|Completed Action 11|1750|5|1
36.2675 + CompletedActions:12|Completed Action 12|1750|5|1
36.2676 + CompletedActions:13|Completed Action 13|1750|5|1
36.2677 + CompletedActions:14|Completed Action 14|1750|5|1
36.2678 + CompletedActions:15|Completed Action 15|1750|5|1
36.2679 + AmortizationSchd|Amortization Schedule|1751|5|9999
36.2680 + AmortizationSchdType|Amortize Schd Type|1752|5|1
36.2681 + CallItemsChd|Call Item Schedule|1753|5|9999
36.2682 + CallItemsChdType|Call Item Schd Type|1754|5|1
36.2683 + BureausCore:1|Bureau Score Experian|1755|4|null
36.2684 + BureausCore:2|Bureau Score Equifax|1755|4|null
36.2685 + BureausCore:3|Bureau Score Transunion|1755|4|null
36.2686 + BureausCore:4|Bureau Score ChexSystems|1755|4|null
36.2687 + CBILocator:1|CBI Locator1|1756|4|null
36.2688 + CBILocator:2|CBI Locator2|1756|4|null
36.2689 + CBILocator:3|CBI Locator3|1756|4|null
36.2690 + CBILocator:4|CBI Locator4|1756|4|null
36.2691 + CBILocator:5|CBI Locator5|1756|4|null
36.2692 + CBILocator:6|CBI Locator6|1756|4|null
36.2693 + PrefLocator|Preference Locator|1757|4|null
36.2694 + PutItemsChd|Put Item Schedule|1758|5|9999
36.2695 + PutItemsChdType|Put Item Schd Type|1759|5|1
36.2696 + IndirectDealerNum|Indirect Dealer Number|1547|0|10
36.2697 + IndirectPlanID|Reserve Plan ID|1548|0|2
36.2698 + LoanToValueRatio|Loan To Value|1820|2|null
36.2699 + ***|LoanApp Person|Application Person
36.2700 + PersonCode|Person Code|1901|5|9
36.2701 + AccountNumber|Member Account Number|1902|0|10
36.2702 + BirthDate|Birthdate|1903|3|null
36.2703 + MaritalStatus|Marital Status|1904|5|8
36.2704 + EducationYears|Education Years|1905|5|99
36.2705 + Sex|Sex|1906|0|1
36.2706 + Title|Name Title|1907|0|8
36.2707 + First|First Name|1908|0|20
36.2708 + Middle|Middle Name|1909|0|10
36.2709 + Last|Last Name|1910|0|40
36.2710 + Suffix|Name Suffix|1911|0|4
36.2711 + ExtraAddress|Extra Address|1912|0|40
36.2712 + Street|Street Address|1913|0|40
36.2713 + City|City|1914|0|40
36.2714 + State|State|1915|0|10
36.2715 + ZipCode|Zip Code|1916|0|10
36.2716 + HomePhone|Home Phone|1917|0|16
36.2717 + WorkPhone|Work Phone|1918|0|16
36.2718 + WorkPhoneExtension|Work Phone Ext|1919|0|6
36.2719 + SSN|SSN/TIN|1920|0|9
36.2720 + PreviousAddress|Previous Address|1921|0|40
36.2721 + DependentCount|Dependent Count|1922|5|99
36.2722 + DependentAge:1|Dependent 1 Age|1923|5|99
36.2723 + DependentAge:2|Dependent 2 Age|1923|5|99
36.2724 + DependentAge:3|Dependent 3 Age|1923|5|99
36.2725 + DependentAge:4|Dependent 4 Age|1923|5|99
36.2726 + DependentAge:5|Dependent 5 Age|1923|5|99
36.2727 + DependentAge:6|Dependent 6 Age|1923|5|99
36.2728 + DependentAge:7|Dependent 7 Age|1923|5|99
36.2729 + DependentAge:8|Dependent 8 Age|1923|5|99
36.2730 + DependentAge:9|Dependent 9 Age|1923|5|99
36.2731 + DependentAge:10|Dependent 10 Age|1923|5|99
36.2732 + OtherCreditName|Other Credit Name|1926|0|20
36.2733 + DerogStatus:1|Derog Status 1|1927|5|99
36.2734 + DerogStatus:2|Derog Status 2|1927|5|99
36.2735 + DerogStatus:3|Derog Status 3|1927|5|99
36.2736 + DerogStatus:4|Derog Status 4|1927|5|99
36.2737 + DerogStatus:5|Derog Status 5|1927|5|99
36.2738 + DerogStatus:6|Derog Status 6|1927|5|99
36.2739 + DerogExplanation|Cosigner/Derog Expl|1928|0|40
36.2740 + EmploymentsTatus|Employment Status|1929|5|4
36.2741 + EmploymentReturnDate|Date Returning to Work|1930|3|null
36.2742 + CurrEmpName|Curr Employer Name|1931|0|40
36.2743 + CurrEmpAddress|Curr Employer Address|1932|0|40
36.2744 + CurrEmpStartDate|Curr Employ Start Date|1933|3|null
36.2745 + CurrEmpEndDate|Curr Employ End Date|1934|3|null
36.2746 + CurrEmpOccupation|Curr Occupation|1935|0|20
36.2747 + CurrEmpSupervisor|Curr Supervisor|1936|0|20
36.2748 + CurrEmpGrossMonthlyPay|Curr Gross Mo Pay|1937|7|null
36.2749 + CurrEmpNetMonthlyPay|Curr Net Mo Pay|1938|7|null
36.2750 + PrevEmpName|Prev Employer Name|1939|0|40
36.2751 + PrevEmpAddress|Prev Employer Address|1940|0|40
36.2752 + PrevEmpStartDate|Prev Employ Start Date|1941|3|null
36.2753 + PrevEmpEndDate|Prev Employ End Date|1942|3|null
36.2754 + PrevEmpOccupation|Prev Occupation|1943|0|20
36.2755 + PrevEmpSupervisor|Prev Supervisor|1944|0|20
36.2756 + PrevEmpGrossMonthlyPay|Prev Gross Mo Pay|1945|7|null
36.2757 + Ref1Code|Ref 1 Ref Code|1946|5|1
36.2758 + Ref1Name|Ref 1 Name|1947|0|40
36.2759 + Ref1Address|Ref 1 Address|1948|0|40
36.2760 + Ref1Phone|Ref 1 Phone|1949|0|16
36.2761 + Ref1Relationship|Ref 1 Relation|1950|0|10
36.2762 + Ref2Code|Ref 2 Ref Code|1946|5|1
36.2763 + Ref2Name|Ref 2 Name|1947|0|40
36.2764 + Ref2Address|Ref 2 Address|1948|0|40
36.2765 + Ref2Phone|Ref 2 Phone|1949|0|16
36.2766 + Ref2Relationship|Ref 2 Relation|1950|0|10
36.2767 + Ref3Code|Ref 3 Ref Code|1946|5|1
36.2768 + Ref3Name|Ref 3 Name|1947|0|40
36.2769 + Ref3Address|Ref 3 Address|1948|0|40
36.2770 + Ref3Phone|Ref 3 Phone|1949|0|16
36.2771 + Ref3Relationship|Ref 3 Relation|1950|0|10
36.2772 + MonthsCurrAddress|Months Current Address|1961|5|999
36.2773 + MonthsPrevAddress|Months Previous Address|1962|5|999
36.2774 + OwnRentCurrAddress|Own or Rent Curr Address|1963|5|4
36.2775 + OwnRentPrevAddress|Own or Rent Prev Address|1964|5|4
36.2776 + AddressType|Address Type|1965|5|2
36.2777 + Type|Type|1966|5|9
36.2778 + MothersMaidenName|Mother's Maiden Name|1967|0|20
36.2779 + Citizenship|Citizenship|1968|5|1
36.2780 + CurrEmpYearsEmp|Curr Years Employed|1969|5|99
36.2781 + CurrEmpMonthsEmp|Curr Months Employed|1970|5|999
36.2782 + PrevEmpYearsEmp|Prev Years Employed|1971|5|99
36.2783 + PrevEmpMonthsEmp|Prev Months Employed|1972|5|999
36.2784 + County|County|1973|0|40
36.2785 + Country|Country|1974|0|20
36.2786 + CountryCode|Country Code|1975|0|2
36.2787 + Email|E-Mail Address|1976|0|40
36.2788 + EmpHoursPerWeek|Employment Hours Per Week|1977|5|168
36.2789 + Judgement|Judgement|1978|5|1
36.2790 + Bankruptcy|Bankruptcy|1979|5|1
36.2791 + PastForeclosure|Past Foreclosure|1980|5|1
36.2792 + PastRepossession|Past Repossession|1981|5|1
36.2793 + PartyInLawsuit|Party in a Lawsuit|1982|5|1
36.2794 + IncomeMayDecline|Income Likely to Decline|1983|5|1
36.2795 + CosignOtherLoan|Cosigner on Another Loan|1984|5|1
36.2796 + CosignForWhom|Cosigner for Whom|1985|0|40
36.2797 + CosignTowHom|Cosigner to Whom|1986|0|40
36.2798 + Ref1AddressType|Ref 1 Address Type|1987|5|2
36.2799 + Ref2AddressType|Ref 2 Address Type|1987|5|2
36.2800 + Ref3AddressType|Ref 3 Address Type|1987|5|2
36.2801 + AltEmail|Alt E-Mail Address|1990|0|40
36.2802 + Locator|Locator|1991|4|null
36.2803 + MobilePhone|Mobile Phone|1992|0|16
36.2804 + PagerNumber|Pager Number|1993|0|16
36.2805 + USPersonFlag|U.S. Person Flag|1994|5|1
36.2806 + IdentDocFlag:1|Documentary Flag 1|1995|5|1
36.2807 + IdentDocFlag:2|Documentary Flag 2|1995|5|1
36.2808 + IdentDocFlag:3|Documentary Flag 3|1995|5|1
36.2809 + IdentIDType:1|ID Type 1|1996|5|999
36.2810 + IdentIDType:2|ID Type 2|1996|5|999
36.2811 + IdentIDType:3|ID Type 3|1996|5|999
36.2812 + IdentIDDescription:1|ID Description 1|1997|0|40
36.2813 + IdentIDDescription:2|ID Description 2|1997|0|40
36.2814 + IdentIDDescription:3|ID Description 3|1997|0|40
36.2815 + IdentIDNumber:1|ID Number 1|1998|0|40
36.2816 + IdentIDNumber:2|ID Number 2|1998|0|40
36.2817 + IdentIDNumber:3|ID Number 3|1998|0|40
36.2818 + IdentIDIssueDate:1|ID Issuance Date 1|1999|3|null
36.2819 + IdentIDIssueDate:2|ID Issuance Date 2|1999|3|null
36.2820 + IdentIDIssueDate:3|ID Issuance Date 3|1999|3|null
36.2821 + IdentIDExpireDate:1|ID Expiration Date 1|2001|3|null
36.2822 + IdentIDExpireDate:2|ID Expiration Date 2|2001|3|null
36.2823 + IdentIDExpireDate:3|ID Expiration Date 3|2001|3|null
36.2824 + IdentIDVerifyDate:1|ID Verification Date 1|2003|3|null
36.2825 + IdentIDVerifyDate:2|ID Verification Date 2|2003|3|null
36.2826 + IdentIDVerifyDate:3|ID Verification Date 3|2003|3|null
36.2827 + ShortName|Short Name|180|0|16
36.2828 + LongName|Long Name|181|1|40
36.2829 + DriversLic|Drivers License No|1924|0|20
36.2830 + DriversLicstate|Drivers License State|1925|0|2
36.2831 + ***|LoanApp Finance|Application Finance
36.2832 + OwnerCode|Owner Code|2101|5|2
36.2833 + ItemType|Item Type|2102|0|2
36.2834 + Description|Item Desc/Creditor Name|2103|0|30
36.2835 + Address|Address|2104|0|40
36.2836 + Reference|Reference|2105|0|20
36.2837 + AssetValue|Asset Value|2106|7|null
36.2838 + MonthlyIncome|Monthly Income|2107|7|null
36.2839 + LiabilityStatus|Liability Status|2108|5|2
36.2840 + AssetStatus|Asset Status|2109|5|2
36.2841 + LiabilityBalance|Liability Balance|2110|7|null
36.2842 + MonthlyExpense|Monthly Expense|2111|7|null
36.2843 + CreditLimit|Credit Limit|2112|7|null
36.2844 + DebtRatioUseCode|Debt Ratio Code|2113|5|1
36.2845 + Type|Finance Type|2114|5|9
36.2846 + Locator|Locator|2115|4|null
36.2847 + InterestRate|Interest Rate|2116|2|null
36.2848 + UserPledgeCode|User Pledge Code|2117|5|9
36.2849 + ***|LoanApp Tracking|Application Tracking
36.2850 + Type|Tracking Type|6893|5|99
36.2851 + ID|ID|6802|0|2
36.2852 + IDType|ID Type|6803|5|4
36.2853 + UserID|User ID|6804|5|4999
36.2854 + FMLastDate|Last FM Date|6805|3|null
36.2855 + CreationDate|Creation Date|6806|3|null
36.2856 + CreationTime|Creation Time|6807|5|2359
36.2857 + ExpireDate|Expiration Date|6808|3|null
36.2858 + TrackingCode|Tracking Code|6809|5|99
36.2859 + UserNumber1|User Number 01|6810|4|null
36.2860 + UserNumber2|User Number 02|6811|4|null
36.2861 + UserNumber3|User Number 03|6812|4|null
36.2862 + UserNumber4|User Number 04|6813|4|null
36.2863 + UserNumber5|User Number 05|6814|4|null
36.2864 + UserNumber6|User Number 06|6815|4|null
36.2865 + UserNumber7|User Number 07|6816|4|null
36.2866 + UserNumber8|User Number 08|6817|4|null
36.2867 + UserNumber9|User Number 09|6818|4|null
36.2868 + UserNumber10|User Number 10|6819|4|null
36.2869 + UserChar1|User Char 01|6820|0|40
36.2870 + UserChar2|User Char 02|6821|0|40
36.2871 + UserChar3|User Char 03|6822|0|40
36.2872 + UserChar4|User Char 04|6823|0|40
36.2873 + UserChar5|User Char 05|6824|0|40
36.2874 + UserChar6|User Char 06|6825|0|40
36.2875 + UserChar7|User Char 07|6826|0|40
36.2876 + UserChar8|User Char 08|6827|0|40
36.2877 + UserChar9|User Char 09|6828|0|40
36.2878 + UserChar10|User Char 10|6829|0|40
36.2879 + UserAmount1|User Amount 01|6830|7|null
36.2880 + UserAmount2|User Amount 02|6831|7|null
36.2881 + UserAmount3|User Amount 03|6832|7|null
36.2882 + UserAmount4|User Amount 04|6833|7|null
36.2883 + UserAmount5|User Amount 05|6834|7|null
36.2884 + UserAmount6|User Amount 06|6835|7|null
36.2885 + UserAmount7|User Amount 07|6836|7|null
36.2886 + UserAmount8|User Amount 08|6837|7|null
36.2887 + UserAmount9|User Amount 09|6838|7|null
36.2888 + UserAmount10|User Amount 10|6839|7|null
36.2889 + UserCode1|User Code 01|6840|5|9999
36.2890 + UserCode2|User Code 02|6841|5|9999
36.2891 + UserCode3|User Code 03|6842|5|9999
36.2892 + UserCode4|User Code 04|6843|5|9999
36.2893 + UserCode5|User Code 05|6844|5|9999
36.2894 + UserCode6|User Code 06|6845|5|9999
36.2895 + UserCode7|User Code 07|6846|5|9999
36.2896 + UserCode8|User Code 08|6847|5|9999
36.2897 + UserCode9|User Code 09|6848|5|9999
36.2898 + UserCode10|User Code 10|6849|5|9999
36.2899 + UserDate1|User Date 01|6850|3|null
36.2900 + UserDate2|User Date 02|6851|3|null
36.2901 + UserDate3|User Date 03|6852|3|null
36.2902 + UserDate4|User Date 04|6853|3|null
36.2903 + UserDate5|User Date 05|6854|3|null
36.2904 + UserDate6|User Date 06|6855|3|null
36.2905 + UserDate7|User Date 07|6856|3|null
36.2906 + UserDate8|User Date 08|6857|3|null
36.2907 + UserDate9|User Date 09|6858|3|null
36.2908 + UserDate10|User Date 10|6859|3|null
36.2909 + UserRate1|User Rate 01|6860|2|null
36.2910 + UserRate2|User Rate 02|6861|2|null
36.2911 + UserRate3|User Rate 03|6862|2|null
36.2912 + UserRate4|User Rate 04|6863|2|null
36.2913 + UserRate5|User Rate 05|6864|2|null
36.2914 + UserRate6|User Rate 06|6865|2|null
36.2915 + UserRate7|User Rate 07|6866|2|null
36.2916 + UserRate8|User Rate 08|6867|2|null
36.2917 + UserRate9|User Rate 09|6868|2|null
36.2918 + UserRate10|User Rate 10|6869|2|null
36.2919 + Locator|Locator|6870|4|null
36.2920 + UserNumber11|User Number 11|6871|4|null
36.2921 + UserNumber12|User Number 12|6872|4|null
36.2922 + UserNumber13|User Number 13|6873|4|null
36.2923 + UserNumber14|User Number 14|6874|4|null
36.2924 + UserNumber15|User Number 15|6875|4|null
36.2925 + UserNumber16|User Number 16|6876|4|null
36.2926 + UserNumber17|User Number 17|6877|4|null
36.2927 + UserNumber18|User Number 18|6878|4|null
36.2928 + UserNumber19|User Number 19|6879|4|null
36.2929 + UserNumber20|User Number 20|6880|4|null
36.2930 + UserChar11|User Char 11|6881|0|40
36.2931 + UserChar12|User Char 12|6882|0|40
36.2932 + UserChar13|User Char 13|6883|0|40
36.2933 + UserChar14|User Char 14|6884|0|40
36.2934 + UserChar15|User Char 15|6885|0|40
36.2935 + UserChar16|User Char 16|6886|0|40
36.2936 + UserChar17|User Char 17|6887|0|40
36.2937 + UserChar18|User Char 18|6888|0|40
36.2938 + UserChar19|User Char 19|6889|0|40
36.2939 + UserChar20|User Char 20|9400|0|40
36.2940 + UserAmount11|User Amount 11|9401|7|null
36.2941 + UserAmount12|User Amount 12|9402|7|null
36.2942 + UserAmount13|User Amount 13|9403|7|null
36.2943 + UserAmount14|User Amount 14|9404|7|null
36.2944 + UserAmount15|User Amount 15|9405|7|null
36.2945 + UserAmount16|User Amount 16|9406|7|null
36.2946 + UserAmount17|User Amount 17|9407|7|null
36.2947 + UserAmount18|User Amount 18|9408|7|null
36.2948 + UserAmount19|User Amount 19|9409|7|null
36.2949 + UserAmount20|User Amount 20|9410|7|null
36.2950 + UserCode11|User Code 11|9411|5|9999
36.2951 + UserCode12|User Code 12|9412|5|9999
36.2952 + UserCode13|User Code 13|9413|5|9999
36.2953 + UserCode14|User Code 14|9414|5|9999
36.2954 + UserCode15|User Code 15|9415|5|9999
36.2955 + UserCode16|User Code 16|9416|5|9999
36.2956 + UserCode17|User Code 17|9417|5|9999
36.2957 + UserCode18|User Code 18|9418|5|9999
36.2958 + UserCode19|User Code 19|9419|5|9999
36.2959 + UserCode20|User Code 20|9420|5|9999
36.2960 + UserDate11|User Date 11|9421|3|null
36.2961 + UserDate12|User Date 12|9422|3|null
36.2962 + UserDate13|User Date 13|9423|3|null
36.2963 + UserDate14|User Date 14|9424|3|null
36.2964 + UserDate15|User Date 15|9425|3|null
36.2965 + UserDate16|User Date 16|9426|3|null
36.2966 + UserDate17|User Date 17|9427|3|null
36.2967 + UserDate18|User Date 18|9428|3|null
36.2968 + UserDate19|User Date 19|9429|3|null
36.2969 + UserDate20|User Date 20|9430|3|null
36.2970 + UserRate11|User Rate 11|9431|2|null
36.2971 + UserRate12|User Rate 12|9432|2|null
36.2972 + UserRate13|User Rate 13|9433|2|null
36.2973 + UserRate14|User Rate 14|9434|2|null
36.2974 + UserRate15|User Rate 15|9435|2|null
36.2975 + UserRate16|User Rate 16|9436|2|null
36.2976 + UserRate17|User Rate 17|9437|2|null
36.2977 + UserRate18|User Rate 18|9438|2|null
36.2978 + UserRate19|User Rate 19|9439|2|null
36.2979 + UserRate20|User Rate 20|9440|2|null
36.2980 + TrackingDescription|Tracking Code Description|6890|0|30
36.2981 + ***|LoanApp Note|Application Note
36.2982 + ID|ID|2701|0|2
36.2983 + IDType|ID Type|2702|5|4
36.2984 + Code|Note Code|2715|5|199
36.2985 + Text:1|Text Line 01|2704|0|40
36.2986 + Text:2|Text Line 02|2704|0|40
36.2987 + Text:3|Text Line 03|2704|0|40
36.2988 + Text:4|Text Line 04|2704|0|40
36.2989 + Text:5|Text Line 05|2704|0|40
36.2990 + Text:6|Text Line 06|2704|0|40
36.2991 + Text:7|Text Line 07|2704|0|40
36.2992 + Text:8|Text Line 08|2704|0|40
36.2993 + Text:9|Text Line 09|2704|0|40
36.2994 + Text:10|Text Line 10|2704|0|40
36.2995 + Text:11|Text Line 11|2704|0|40
36.2996 + Text:12|Text Line 12|2704|0|40
36.2997 + UserID|User ID|2705|5|4999
36.2998 + EnterDate|Enter Date|2706|3|null
36.2999 + EnterTime|Enter Time|2707|5|2359
36.3000 + VoidFlag|Voided|2709|5|1
36.3001 + VoidedBy|Voided By|2710|5|4999
36.3002 + ExpirationDate|Expiration Date|2711|3|null
36.3003 + Locator|Locator|2719|4|null
36.3004 + TextLineCount|Text Line Count|2712|4|null
36.3005 + ***|CPWorkCard|Collection Work Card
36.3006 + Type|Type|2501|5|99
36.3007 + FMLastDate|FM Last Date|2502|3|null
36.3008 + CloseDate|Close Date|2503|3|null
36.3009 + NextWorkDate|Next Work Date|2504|3|null
36.3010 + LastWorkDate|Last Work Date|2505|3|null
36.3011 + LastWorkTime|Last Work Time|2506|5|2359
36.3012 + NotePurgeDate|Note Purge Date|2507|3|null
36.3013 + LastCollectorID|Collector ID|2508|5|4999
36.3014 + Active|Active|2509|5|1
36.3015 + Locator|Locator|2510|4|null
36.3016 + Priority|Priority|2511|0|20
36.3017 + Seccollidlist|Sec Coll IDs|2512|0|20
36.3018 + ***|CPWorkCard Tracking|Collection Tracking
36.3019 + Type|Tracking Type|6894|5|99
36.3020 + ID|ID|6802|0|2
36.3021 + IDType|ID Type|6803|5|1
36.3022 + UserID|User ID|6804|5|4999
36.3023 + FMLastDate|Last FM Date|6805|3|null
36.3024 + CreationDate|Creation Date|6806|3|null
36.3025 + CreationTime|Creation Time|6807|5|2359
36.3026 + ExpireDate|Expiration Date|6808|3|null
36.3027 + TrackingCode|Tracking Code|6809|5|99
36.3028 + UserNumber1|User Number 01|6810|4|null
36.3029 + UserNumber2|User Number 02|6811|4|null
36.3030 + UserNumber3|User Number 03|6812|4|null
36.3031 + UserNumber4|User Number 04|6813|4|null
36.3032 + UserNumber5|User Number 05|6814|4|null
36.3033 + UserNumber6|User Number 06|6815|4|null
36.3034 + UserNumber7|User Number 07|6816|4|null
36.3035 + UserNumber8|User Number 08|6817|4|null
36.3036 + UserNumber9|User Number 09|6818|4|null
36.3037 + UserNumber10|User Number 10|6819|4|null
36.3038 + UserChar1|User Char 01|6820|0|40
36.3039 + UserChar2|User Char 02|6821|0|40
36.3040 + UserChar3|User Char 03|6822|0|40
36.3041 + UserChar4|User Char 04|6823|0|40
36.3042 + UserChar5|User Char 05|6824|0|40
36.3043 + UserChar6|User Char 06|6825|0|40
36.3044 + UserChar7|User Char 07|6826|0|40
36.3045 + UserChar8|User Char 08|6827|0|40
36.3046 + UserChar9|User Char 09|6828|0|40
36.3047 + UserChar10|User Char 10|6829|0|40
36.3048 + UserAmount1|User Amount 01|6830|7|null
36.3049 + UserAmount2|User Amount 02|6831|7|null
36.3050 + UserAmount3|User Amount 03|6832|7|null
36.3051 + UserAmount4|User Amount 04|6833|7|null
36.3052 + UserAmount5|User Amount 05|6834|7|null
36.3053 + UserAmount6|User Amount 06|6835|7|null
36.3054 + UserAmount7|User Amount 07|6836|7|null
36.3055 + UserAmount8|User Amount 08|6837|7|null
36.3056 + UserAmount9|User Amount 09|6838|7|null
36.3057 + UserAmount10|User Amount 10|6839|7|null
36.3058 + UserCode1|User Code 01|6840|5|9999
36.3059 + UserCode2|User Code 02|6841|5|9999
36.3060 + UserCode3|User Code 03|6842|5|9999
36.3061 + UserCode4|User Code 04|6843|5|9999
36.3062 + UserCode5|User Code 05|6844|5|9999
36.3063 + UserCode6|User Code 06|6845|5|9999
36.3064 + UserCode7|User Code 07|6846|5|9999
36.3065 + UserCode8|User Code 08|6847|5|9999
36.3066 + UserCode9|User Code 09|6848|5|9999
36.3067 + UserCode10|User Code 10|6849|5|9999
36.3068 + UserDate1|User Date 01|6850|3|null
36.3069 + UserDate2|User Date 02|6851|3|null
36.3070 + UserDate3|User Date 03|6852|3|null
36.3071 + UserDate4|User Date 04|6853|3|null
36.3072 + UserDate5|User Date 05|6854|3|null
36.3073 + UserDate6|User Date 06|6855|3|null
36.3074 + UserDate7|User Date 07|6856|3|null
36.3075 + UserDate8|User Date 08|6857|3|null
36.3076 + UserDate9|User Date 09|6858|3|null
36.3077 + UserDate10|User Date 10|6859|3|null
36.3078 + UserRate1|User Rate 01|6860|2|null
36.3079 + UserRate2|User Rate 02|6861|2|null
36.3080 + UserRate3|User Rate 03|6862|2|null
36.3081 + UserRate4|User Rate 04|6863|2|null
36.3082 + UserRate5|User Rate 05|6864|2|null
36.3083 + UserRate6|User Rate 06|6865|2|null
36.3084 + UserRate7|User Rate 07|6866|2|null
36.3085 + UserRate8|User Rate 08|6867|2|null
36.3086 + UserRate9|User Rate 09|6868|2|null
36.3087 + UserRate10|User Rate 10|6869|2|null
36.3088 + Locator|Locator|6870|4|null
36.3089 + UserNumber11|User Number 11|6871|4|null
36.3090 + UserNumber12|User Number 12|6872|4|null
36.3091 + UserNumber13|User Number 13|6873|4|null
36.3092 + UserNumber14|User Number 14|6874|4|null
36.3093 + UserNumber15|User Number 15|6875|4|null
36.3094 + UserNumber16|User Number 16|6876|4|null
36.3095 + UserNumber17|User Number 17|6877|4|null
36.3096 + UserNumber18|User Number 18|6878|4|null
36.3097 + UserNumber19|User Number 19|6879|4|null
36.3098 + UserNumber20|User Number 20|6880|4|null
36.3099 + UserChar11|User Char 11|6881|0|40
36.3100 + UserChar12|User Char 12|6882|0|40
36.3101 + UserChar13|User Char 13|6883|0|40
36.3102 + UserChar14|User Char 14|6884|0|40
36.3103 + UserChar15|User Char 15|6885|0|40
36.3104 + UserChar16|User Char 16|6886|0|40
36.3105 + UserChar17|User Char 17|6887|0|40
36.3106 + UserChar18|User Char 18|6888|0|40
36.3107 + UserChar19|User Char 19|6889|0|40
36.3108 + UserChar20|User Char 20|9400|0|40
36.3109 + UserAmount11|User Amount 11|9401|7|null
36.3110 + UserAmount12|User Amount 12|9402|7|null
36.3111 + UserAmount13|User Amount 13|9403|7|null
36.3112 + UserAmount14|User Amount 14|9404|7|null
36.3113 + UserAmount15|User Amount 15|9405|7|null
36.3114 + UserAmount16|User Amount 16|9406|7|null
36.3115 + UserAmount17|User Amount 17|9407|7|null
36.3116 + UserAmount18|User Amount 18|9408|7|null
36.3117 + UserAmount19|User Amount 19|9409|7|null
36.3118 + UserAmount20|User Amount 20|9410|7|null
36.3119 + UserCode11|User Code 11|9411|5|9999
36.3120 + UserCode12|User Code 12|9412|5|9999
36.3121 + UserCode13|User Code 13|9413|5|9999
36.3122 + UserCode14|User Code 14|9414|5|9999
36.3123 + UserCode15|User Code 15|9415|5|9999
36.3124 + UserCode16|User Code 16|9416|5|9999
36.3125 + UserCode17|User Code 17|9417|5|9999
36.3126 + UserCode18|User Code 18|9418|5|9999
36.3127 + UserCode19|User Code 19|9419|5|9999
36.3128 + UserCode20|User Code 20|9420|5|9999
36.3129 + UserDate11|User Date 11|9421|3|null
36.3130 + UserDate12|User Date 12|9422|3|null
36.3131 + UserDate13|User Date 13|9423|3|null
36.3132 + UserDate14|User Date 14|9424|3|null
36.3133 + UserDate15|User Date 15|9425|3|null
36.3134 + UserDate16|User Date 16|9426|3|null
36.3135 + UserDate17|User Date 17|9427|3|null
36.3136 + UserDate18|User Date 18|9428|3|null
36.3137 + UserDate19|User Date 19|9429|3|null
36.3138 + UserDate20|User Date 20|9430|3|null
36.3139 + UserRate11|User Rate 11|9431|2|null
36.3140 + UserRate12|User Rate 12|9432|2|null
36.3141 + UserRate13|User Rate 13|9433|2|null
36.3142 + UserRate14|User Rate 14|9434|2|null
36.3143 + UserRate15|User Rate 15|9435|2|null
36.3144 + UserRate16|User Rate 16|9436|2|null
36.3145 + UserRate17|User Rate 17|9437|2|null
36.3146 + UserRate18|User Rate 18|9438|2|null
36.3147 + UserRate19|User Rate 19|9439|2|null
36.3148 + UserRate20|User Rate 20|9440|2|null
36.3149 + ***|CPWorkCard Note|Collection Note
36.3150 + ID|ID|2701|0|2
36.3151 + IDType|ID Type|2702|5|2
36.3152 + Code|Note Code|2716|5|199
36.3153 + Text:1|Text Line 01|2704|0|40
36.3154 + Text:2|Text Line 02|2704|0|40
36.3155 + Text:3|Text Line 03|2704|0|40
36.3156 + Text:4|Text Line 04|2704|0|40
36.3157 + Text:5|Text Line 05|2704|0|40
36.3158 + Text:6|Text Line 06|2704|0|40
36.3159 + Text:7|Text Line 07|2704|0|40
36.3160 + Text:8|Text Line 08|2704|0|40
36.3161 + Text:9|Text Line 09|2704|0|40
36.3162 + Text:10|Text Line 10|2704|0|40
36.3163 + Text:11|Text Line 11|2704|0|40
36.3164 + Text:12|Text Line 12|2704|0|40
36.3165 + UserID|User ID|2705|5|4999
36.3166 + EnterDate|Enter Date|2706|3|null
36.3167 + EnterTime|Enter Time|2707|5|2359
36.3168 + VoidFlag|Voided|2709|5|1
36.3169 + VoidedBy|Voided By|2710|5|4999
36.3170 + ExpirationDate|Expiration Date|2711|3|null
36.3171 + Locator|Locator|2719|4|null
36.3172 + TextLineCount|Text Line Count|2712|4|null
36.3173 + ***|CredRep|Credit Retrieval
36.3174 + RequestNumber|Request Number|2801|4|null
36.3175 + User|User|2803|5|4999
36.3176 + RequestDate|Request Date|2804|3|null
36.3177 + RequestTime|Request Time|2805|5|2359
36.3178 + QueueCode|Queue Code|2806|5|1
36.3179 + QueueAfterDate|Queue After Date|2807|3|null
36.3180 + QueueAfterTime|Queue After Time|2808|5|2359
36.3181 + CompletionCode|Completion Code|2809|5|6
36.3182 + CompletionDate|Completion Date|2810|3|null
36.3183 + CompletionTime|Completion Time|2811|5|2359
36.3184 + Bureau|Bureau|2812|5|4
36.3185 + BirthDate|Birth Date|2813|3|null
36.3186 + SpouseBirthDate|Spouse Birthdate|2814|3|null
36.3187 + Income|Income|2815|6|null
36.3188 + MultipleFile|Multiple File|2816|5|1
36.3189 + LoanType|Loan Type|2817|5|99
36.3190 + LoanTerms|Loan Terms|2818|5|999
36.3191 + LoanAmount|Loan Amount|2819|6|null
36.3192 + InquiryType|Inquiry Type|2820|5|99
36.3193 + OperatorCode|Operator Code|2821|0|2
36.3194 + AddrVerifyAcct|Addr Verification|2822|0|20
36.3195 + MonthsCountInQ|Months Count Inq|2823|0|1
36.3196 + MonthsCountMaxDQ|Months Count Max Delinq|2824|0|1
36.3197 + JointFileAccess|Joint File Access|2825|0|1
36.3198 + MemNumPlainDesc|Member # Plain Description|2826|0|10
36.3199 + HawkIndicator|Hawk Indicator|2827|0|1
36.3200 + Alias:1|Alias 1|2828|0|20
36.3201 + Alias:2|Alias 2|2828|0|20
36.3202 + Alias:3|Alias 3|2828|0|20
36.3203 + OptFeatureCode|Optional Feature Code|2829|0|10
36.3204 + ECOAInQtype|ECOA Inquiry Type|2830|0|1
36.3205 + FirstName|First Name|2831|0|20
36.3206 + MiddleName|Middle Name|2832|0|10
36.3207 + LastName|Last Name|2833|0|20
36.3208 + NameSuffix|Name Suffix|2834|0|4
36.3209 + SSN|SSN/TIN|2835|0|9
36.3210 + EmpName|Employer Name|2836|0|30
36.3211 + EmpHouseNumber|Employer House Number|2837|0|10
36.3212 + EmpStreet|Employer Street|2838|0|30
36.3213 + EmpCity|Employer City|2839|0|20
36.3214 + EmpState|Employer State|2840|0|10
36.3215 + EmpZipCode|Employer Zip Code|2841|0|10
36.3216 + Occupation|Occupation|2842|0|20
36.3217 + DateHired|Date Hired|2843|0|4
36.3218 + DatesEparated|Date Separated|2844|0|4
36.3219 + PayBasis|Pay Basis|2845|0|1
36.3220 + SpouseFirst|Spouse First Name|2846|0|20
36.3221 + SpouseMiddle|Spouse Middle Name|2847|0|10
36.3222 + SpouseLast|Spouse Last Name|2848|0|20
36.3223 + SpouseSuffix|Spouse Suffix|2849|0|4
36.3224 + SpouseSSN|Spouse SSN/TIN|2850|0|9
36.3225 + SpouseEmpName|Spouse Employer Name|2851|0|30
36.3226 + SpouseEmpStreet|Spouse Employer Street|2852|0|30
36.3227 + SpouseEmpCity|Spouse Employer City|2853|0|20
36.3228 + SpouseEmpState|Spouse Employer State|2854|0|10
36.3229 + SpouseEmpZipCode|Spouse Employer Zip Code|2855|0|10
36.3230 + CurrAddrHouseNumber|Curr Address House Number|2856|0|10
36.3231 + CurrAddrDirectional|Curr Address Directional|2857|0|2
36.3232 + CurrAddrStreetName|Curr Address Street Name|2858|0|40
36.3233 + CurrAddrStreetType|Curr Address Street Type|2859|0|2
36.3234 + CurrAddrQuadrant|Curr Address Quadrant|2860|0|2
36.3235 + CurrAddrUnitType|Curr Address Unit Type|2861|0|10
36.3236 + CurrAddrUnitNumber|Curr Address Unit Number|2862|0|10
36.3237 + CurrAddrCity|Curr Address City|2863|0|20
36.3238 + CurrAddrState|Curr Address State|2864|0|10
36.3239 + CurrAddrZipCode|Curr Address Zip Code|2865|0|10
36.3240 + CurrAddrHomePhone|Curr Home Phone|2866|0|12
36.3241 + PrevAddr1HouseNumber|Prev Addr 1 House Number|2867|0|10
36.3242 + PrevAddr1Directional|Prev Addr 1 Directional|2868|0|2
36.3243 + PrevAddr1StreetName|Prev Addr 1 Street Name|2869|0|40
36.3244 + PrevAddr1StreetType|Prev Addr 1 Street Type|2870|0|2
36.3245 + PrevAddr1Quadrant|Prev Addr 1 Quadrant|2871|0|2
36.3246 + PrevAddr1UnitType|Prev Addr 1 Unit Type|2872|0|10
36.3247 + PrevAddr1UnitNumber|Prev Addr 1 Unit Number|2873|0|10
36.3248 + PrevAddr1City|Prev Addr 1 City|2874|0|20
36.3249 + PrevAddr1State|Prev Addr 1 State|2875|0|10
36.3250 + PrevAddr1ZipCode|Prev Addr 1 Zip Code|2876|0|10
36.3251 + PrevAddr2HouseNumber|Prev Addr 2 House Number|2877|0|10
36.3252 + PrevAddr2Directional|Prev Addr 2 Directional|2878|0|2
36.3253 + PrevAddr2StreetName|Prev Addr 2 Street Name|2879|0|40
36.3254 + PrevAddr2StreetType|Prev Addr 2 Street Type|2880|0|2
36.3255 + PrevAddr2Quadrant|Prev Addr 2 Quadrant|2881|0|2
36.3256 + PrevAddr2UnitType|Prev Addr 2 Unit Type|2882|0|10
36.3257 + PrevAddr2UnitNumber|Prev Addr 2 Unit Number|2883|0|10
36.3258 + PrevAddr2City|Prev Addr 2 City|2884|0|20
36.3259 + PrevAddr2State|Prev Addr 2 State|2885|0|10
36.3260 + PrevAddr2ZipCode|Prev Addr 2 Zip Code|2886|0|10
36.3261 + SubscriberCode|Subscriber Code|2887|0|10
36.3262 + Password|Password|2888|0|32
36.3263 + BureauInfo|Bureau Info|2889|0|20
36.3264 + SSNSearch:1|SSN/TIN Search 1|2890|0|9
36.3265 + SSNSearch:2|SSN/TIN Search 2|2890|0|9
36.3266 + SSNSearch:3|SSN/TIN Search 3|2890|0|9
36.3267 + SSNSearchFacs|SSN/TIN Search Facs+|2891|0|1
36.3268 + RiskModel|Risk Model|2892|0|10
36.3269 + Decode:1|Decode 01|2893|0|7
36.3270 + Decode:2|Decode 02|2893|0|7
36.3271 + Decode:3|Decode 03|2893|0|7
36.3272 + Decode:4|Decode 04|2893|0|7
36.3273 + Decode:5|Decode 05|2893|0|7
36.3274 + Decode:6|Decode 06|2893|0|7
36.3275 + Decode:7|Decode 07|2893|0|7
36.3276 + Decode:8|Decode 08|2893|0|7
36.3277 + Decode:9|Decode 09|2893|0|7
36.3278 + Decode:10|Decode 10|2893|0|7
36.3279 + Decode:11|Decode 11|2893|0|7
36.3280 + Decode:12|Decode 12|2893|0|7
36.3281 + Decode:13|Decode 13|2893|0|7
36.3282 + Decode:14|Decode 14|2893|0|7
36.3283 + Decode:15|Decode 15|2893|0|7
36.3284 + Decode:16|Decode 16|2893|0|7
36.3285 + BullseyeAcct|Bullseye Acct|2894|0|20
36.3286 + DateOpened|Date Opened|2895|3|null
36.3287 + DateOccurrence|Date of Occurrence|2896|3|null
36.3288 + SpecialComment|Special Comment|2897|0|1
36.3289 + AssociationCode|Association Code|2898|0|1
36.3290 + InstantUpdateAcct|Instant Update Acct|2899|0|20
36.3291 + StatusCode|Status Code|2900|5|99
36.3292 + SelectCheckCode|Select Check Code|2911|0|8
36.3293 + OriginalCreditor|Original Creditor|2912|0|20
36.3294 + EmpCopy|Send Consumer Copy|2913|0|1
36.3295 + EQDecode:1|Decode 01|2914|0|10
36.3296 + EQDecode:2|Decode 02|2914|0|10
36.3297 + EQDecode:3|Decode 03|2914|0|10
36.3298 + EQDecode:4|Decode 04|2914|0|10
36.3299 + EQDecode:5|Decode 05|2914|0|10
36.3300 + LookType|Look Type|2915|0|1
36.3301 + LookupSegmentInd|Lookup Segment Indicator|2916|0|2
36.3302 + LookupBM|Lookup Bureau Market|2917|0|2
36.3303 + LookupBSM|Lookup Bureau Sub Market|2918|0|2
36.3304 + LookupIndCode|Industry code to be decoded|2919|0|2
36.3305 + LookupMemberCode|Member code to be decoded|2920|0|8
36.3306 + SecondaryName|Secondary Name|2921|0|25
36.3307 + LoanTypeChr|Loan Type|2922|0|2
36.3308 + DPower:1|DPower 01|2923|0|9
36.3309 + DPower:2|DPower 02|2923|0|9
36.3310 + DPower:3|DPower 03|2923|0|9
36.3311 + Locator|Locator|2924|4|null
36.3312 + Branch|Branch|2925|5|9999
36.3313 + Version|Version|2926|5|9999
36.3314 + Source|Source|2927|5|99
36.3315 + DeAppID|Application ID|2992|0|2
36.3316 + DeProductCode|Product Code|2928|0|2
36.3317 + DeRaterEQUested|Rate Requested|2929|2|null
36.3318 + DeVehAge|Vehicle Age (In years)|2930|5|99
36.3319 + DeVehStatus|Vehicle Status|2934|0|1
36.3320 + DeVehCashPrice|Vehicle Cash Price|2931|6|null
36.3321 + DeVehDownPmt|Vehicle Down Payment|2932|6|null
36.3322 + DeVehTradeIn|Vehicle Net Trade In|2933|6|null
36.3323 + DeVehNewPaymentAmt|Vehicle New Pmt Amount|2935|6|null
36.3324 + DeVehOldPaymentAmt|Vehicle Old Pmt Amount|2936|6|null
36.3325 + LoanUse|Loan Use|2937|0|1
36.3326 + OverrideCat|Override Category|2987|0|1
36.3327 + Override|Override Decision|2988|5|1
36.3328 + ReferenceID|Reference ID|2989|0|19
36.3329 + DecisionOverride|Decision Override|2990|0|1
36.3330 + OverrideAmount|Cred Lim Override|2991|6|null
36.3331 + Job1EmptyPe:1|Job 1 Employment Type|2938|0|1
36.3332 + Job2EmptyPe:2|Job 2 Employment Type|2938|0|1
36.3333 + Job1EmpPrevType:1|Job 1 Prev Type|2941|0|1
36.3334 + Job2EmpPrevType:2|Job 2 Prev Type|2941|0|1
36.3335 + Job1Years:1|Job 1 Years|2939|5|99
36.3336 + Job2Years:2|Job 2 Years|2939|5|99
36.3337 + Job1Months:1|Job 1 Months|2940|5|11
36.3338 + Job2Months:2|Job 2 Months|2940|5|11
36.3339 + Job1PrevYears:1|Job 1 Prev Years|2942|5|99
36.3340 + Job2PrevYears:2|Job 2 Prev Years|2942|5|99
36.3341 + Job1PrevMonths:1|Job 1 Prev Months|2943|5|11
36.3342 + Job2PrevMonths:2|Job 2 Prev Months|2943|5|11
36.3343 + Res1Type:1|Res 1 Type|2944|5|99
36.3344 + Res2Type:2|Res 2 Type|2944|5|99
36.3345 + Res1Years:1|Res 1 Years|2945|5|99
36.3346 + Res2Years:2|Res 2 Years|2945|5|99
36.3347 + Res1Months:1|Res 1 Months|2946|5|11
36.3348 + Res2Months:2|Res 2 Months|2946|5|11
36.3349 + Res1PrevType:1|Res 1 Prev Type|2947|5|99
36.3350 + Res2PrevType:2|Res 2 Prev Type|2947|5|99
36.3351 + Res1PrevYears:1|Res 1 Prev Years|2948|5|99
36.3352 + Res2PrevYears:2|Res 2 Prev Years|2948|5|99
36.3353 + Res1PrevMonths:1|Res 1 Prev Months|2949|5|11
36.3354 + Res2PrevMonths:2|Res 2 Prev Months|2949|5|11
36.3355 + Inc1TotalFREQ:1|Inc 1 Total Frequency|2950|0|1
36.3356 + Inc2TotalFREQ:2|Inc 2 Total Frequency|2950|0|1
36.3357 + Inc1SalaryFREQ:1|Inc 1 Salary Freq|2952|0|1
36.3358 + Inc2SalaryFREQ:2|Inc 2 Salary Freq|2952|0|1
36.3359 + Inc1OtherFREQ:1|Inc 1 Other Freq|2954|0|1
36.3360 + Inc2OtherFREQ:2|Inc 2 Other Freq|2954|0|1
36.3361 + Inc1TotalAmount:1|Inc 1 Total Amount|2951|6|null
36.3362 + Inc2TotalAmount:2|Inc 2 Total Amount|2951|6|null
36.3363 + Inc1SalaryAmount:1|Inc 1 Salary Amount|2953|6|null
36.3364 + Inc2SalaryAmount:2|Inc 2 Salary Amount|2953|6|null
36.3365 + Inc1OtherAmount:1|Inc 1 Other Amount|2955|6|null
36.3366 + Inc2OtherAmount:2|Inc 2 Other Amount|2955|6|null
36.3367 + Bre1Relation:1|Bre 1 Bank Relationship|2956|0|1
36.3368 + Bre2Relation:2|Bre 2 Bank Relationship|2956|0|1
36.3369 + Dep1DependAnts:1|Dep 1 Number of Dependants|2957|5|99
36.3370 + Dep2DependAnts:2|Dep 2 Number of Dependants|2957|5|99
36.3371 + Exp1FREQ:1|Exp 1 Frequency|2958|0|1
36.3372 + Exp2FREQ:2|Exp 2 Frequency|2958|0|1
36.3373 + Exp1ResidenceType:1|Exp 1 Residence Type|2960|0|1
36.3374 + Exp2ResidenceType:2|Exp 2 Residence Type|2960|0|1
36.3375 + Exp1ResidenceFREQ:1|Exp 1 Residence Frequency|2961|0|1
36.3376 + Exp2ResidenceFREQ:2|Exp 2 Residence Frequency|2961|0|1
36.3377 + Exp1OtherFREQ:1|Exp 1 Other Frequency|2963|0|1
36.3378 + Exp2OtherFREQ:2|Exp 2 Other Frequency|2963|0|1
36.3379 + Exp1Amount:1|Exp 1 Amount|2959|6|null
36.3380 + Exp2Amount:2|Exp 2 Amount|2959|6|null
36.3381 + Exp1ResidenceAmount:1|Exp 1 Residence Amount|2959|6|null
36.3382 + Exp2ResidenceAmount:2|Exp 2 Residence Amount|2959|6|null
36.3383 + Exp1OtherAmount:1|Exp 1 Other Amount|2964|6|null
36.3384 + Exp2OtherAmount:2|Exp 2 Other Amount|2964|6|null
36.3385 + AutoLoanType|Auto Loan Type|2965|0|1
36.3386 + AutoStatus|Auto Status|2966|0|2
36.3387 + AutoYear|Auto Year|2967|0|4
36.3388 + AutoMake|Auto Make|2968|0|15
36.3389 + AutoModel|Auto Model|2969|0|10
36.3390 + AutoResidualFactor|Auto Residual Factor|2978|0|9
36.3391 + AutoMoneyFactor|Auto Money Factor|2980|0|9
36.3392 + AutoMSRP|Auto MSRP|2970|6|null
36.3393 + AutoSalePrice|Auto Sale Price|2971|6|null
36.3394 + AutoDownPayment|Auto Down Payment|2972|6|null
36.3395 + AutoRebate|Auto Rebate|2973|6|null
36.3396 + AutoTradeBalance|Auto Trade Loan Bal|2974|6|null
36.3397 + AutoTradeAllowance|Auto Trade Alwnce|2975|6|null
36.3398 + AutoCapCost|Auto Capital Cost|2977|6|null
36.3399 + AutoResidualValue|Auto Residual Value|2979|6|null
36.3400 + AutoLeaseTerm|Auto Lease Term|2976|5|999
36.3401 + PrdProductCode01:1|Prod Code 01|2981|0|2
36.3402 + PrdProductCode02:2|Prod Code 02|2981|0|2
36.3403 + PrdProductCode03:3|Prod Code 03|2981|0|2
36.3404 + PrdProductCode04:4|Prod Code 04|2981|0|2
36.3405 + PrdProductCode05:5|Prod Code 05|2981|0|2
36.3406 + PrdProductCode06:6|Prod Code 06|2981|0|2
36.3407 + PrdProductCode07:7|Prod Code 07|2981|0|2
36.3408 + PrdProductCode08:8|Prod Code 08|2981|0|2
36.3409 + PrdProductCode09:9|Prod Code 09|2981|0|2
36.3410 + PrdProductCode10:10|Prod Code 10|2981|0|2
36.3411 + PrdDecType01:1|Decision 01|2982|0|1
36.3412 + PrdDecType02:2|Decision 02|2982|0|1
36.3413 + PrdDecType03:3|Decision 03|2982|0|1
36.3414 + PrdDecType04:4|Decision 04|2982|0|1
36.3415 + PrdDecType05:5|Decision 05|2982|0|1
36.3416 + PrdDecType06:6|Decision 06|2982|0|1
36.3417 + PrdDecType07:7|Decision 07|2982|0|1
36.3418 + PrdDecType08:8|Decision 08|2982|0|1
36.3419 + PrdDecType09:9|Decision 09|2982|0|1
36.3420 + PrdDecType10:10|Decision 10|2982|0|1
36.3421 + RefNumber1:1|Reference Number 1|2983|0|15
36.3422 + RefNumber2:2|Reference Number 2|2983|0|15
36.3423 + RefNumber3:3|Reference Number 3|2983|0|15
36.3424 + LoanAppID|Loanapp ID|2984|0|2
36.3425 + OldMnthlypmt|Old Monthly Payment|2985|6|null
36.3426 + NewMnthlypmt|New Monthly Payment|2986|6|null
36.3427 + AccessPin|Access PIN|2993|0|8
36.3428 + PhoneAppend|Phone Append|2994|8|null
36.3429 + ScoreModel:1|Score Model 01|2995|0|5
36.3430 + ScoreModel:2|Score Model 02|2995|0|5
36.3431 + ScoreModel:3|Score Model 03|2995|0|5
36.3432 + ScoreModel:4|Score Model 04|2995|0|5
36.3433 + ScoreModel:5|Score Model 05|2995|0|5
36.3434 + ScoreModel:6|Score Model 06|2995|0|5
36.3435 + ScoreModel:7|Score Model 07|2995|0|5
36.3436 + ScoreModel:8|Score Model 08|2995|0|5
36.3437 + ScoreModel:9|Score Model 09|2995|0|5
36.3438 + ScoreModel:10|Score Model 10|2995|0|5
36.3439 + ScoreModel:11|Score Model 11|2995|0|5
36.3440 + ScoreModel:12|Score Model 12|2995|0|5
36.3441 + UseType|Use Type|2996|0|2
36.3442 + CommercialCode|Commercial Code|2201|5|1
36.3443 + IDNumber:1|Identification Number 1|2202|0|25
36.3444 + IDNumber:2|Identification Number 2|2202|0|25
36.3445 + IDState:1|Identification State 1|2203|0|2
36.3446 + IDState:2|Identification State 2|2203|0|2
36.3447 + ***|CredRep Item|Credit Report Item
36.3448 + SegmentType|Segment Type|0|0|4
36.3449 + SubsegmentType|Sub Segment Type|0|0|2
36.3450 + Segextended|Segment Extended Flag|0|5|1
36.3451 + Amount:1|Amount 1|0|4|null
36.3452 + Amount:2|Amount 2|0|4|null
36.3453 + Amount:3|Amount 3|0|4|null
36.3454 + Amount:4|Amount 4|0|4|null
36.3455 + Code:1|Code 1|0|5|9999
36.3456 + Code:2|Code 2|0|5|9999
36.3457 + Code:3|Code 3|0|5|9999
36.3458 + Code:4|Code 4|0|5|9999
36.3459 + Date:1|Date 1|0|3|null
36.3460 + Date:2|Date 2|0|3|null
36.3461 + Date:3|Date 3|0|3|null
36.3462 + Date:4|Date 4|0|3|null
36.3463 + Date:5|Date 5|0|3|null
36.3464 + Date:6|Date 6|0|3|null
36.3465 + Ch1:1|Ch1 1|0|0|1
36.3466 + Ch1:2|Ch1 2|0|0|1
36.3467 + Ch1:3|Ch1 3|0|0|1
36.3468 + Ch1:4|Ch1 4|0|0|1
36.3469 + Ch1:5|Ch1 5|0|0|1
36.3470 + Ch1:6|Ch1 6|0|0|1
36.3471 + Ch1:7|Ch1 7|0|0|1
36.3472 + Ch1:8|Ch1 8|0|0|1
36.3473 + Ch1:9|Ch1 9|0|0|1
36.3474 + Ch1:10|Ch1 10|0|0|1
36.3475 + Ch2:1|Ch2 1|0|0|2
36.3476 + Ch2:2|Ch2 2|0|0|2
36.3477 + Ch2:3|Ch2 3|0|0|2
36.3478 + Ch4:1|Ch4 1|0|0|4
36.3479 + Ch4:2|Ch4 2|0|0|4
36.3480 + Ch4:3|Ch4 3|0|0|4
36.3481 + Ch4:4|Ch4 4|0|0|4
36.3482 + Ch10:1|Ch10 1|0|0|10
36.3483 + Ch10:2|Ch10 2|0|0|10
36.3484 + Ch10:3|Ch10 3|0|0|10
36.3485 + Ch15:1|Ch15 1|0|0|15
36.3486 + Ch15:2|Ch15 2|0|0|15
36.3487 + Ch26:1|Ch26 1|0|0|26
36.3488 + Ch26:2|Ch26 2|0|0|26
36.3489 + Ch26:3|Ch26 3|0|0|26
36.3490 + CHLong:1|Long Char 1|0|0|132
36.3491 + CHLong:2|Long Char 2|0|0|132
36.3492 + CHLong:3|Long Char 3|0|0|132
36.3493 + CHLong:4|Long Char 4|0|0|132
36.3494 + ***|Portfolio|Portfolio
36.3495 + ID|Portfolio ID|6901|0|2
36.3496 + FMLastDate|FM Last Date|6902|3|null
36.3497 + CloseDate|Close Date|6903|3|null
36.3498 + NotePurgeDate|Note Purge Date|6904|3|null
36.3499 + Description|Description|6905|0|30
36.3500 + Balance|Balance|6980|7|null
36.3501 + AvailableBalance|Available Balance|6981|7|null
36.3502 + ***|Portfolio Hold|Portfolio Hold
36.3503 + Type|Hold Type|501|5|19
36.3504 + EffectiveDate|Effective Date|502|3|null
36.3505 + ExpirationDate|Expiration Date|503|3|null
36.3506 + Reference1|Reference 1|504|0|10
36.3507 + Reference2|Reference 2|505|0|10
36.3508 + Amount|Hold Amount|506|7|null
36.3509 + PayeeName|Payee Name|507|0|16
36.3510 + ExpirationTime|Expiration Time|508|5|2359
36.3511 + Locator|Locator|509|4|null
36.3512 + MemberBranch|Member Branch|510|0|4
36.3513 + StopPayCode|Stop Reason Code|511|5|99
36.3514 + Reference3|Reference 3|512|0|40
36.3515 + Reference4|Reference 4|513|0|40
36.3516 + MatchDate|Match Date|514|3|null
36.3517 + MatchTime|Match Time|515|5|2359
36.3518 + FeeCode|Fee Code|516|5|9999
36.3519 + FeeDescription|Fee Description|580|1|40
36.3520 + ***|Portfolio Tracking|Portfolio Tracking
36.3521 + Type|Tracking Type|6895|5|99
36.3522 + ID|ID|6802|0|2
36.3523 + IDType|ID Type|6803|5|4
36.3524 + UserID|User ID|6804|5|4999
36.3525 + FMLastDate|Last FM Date|6805|3|null
36.3526 + CreationDate|Creation Date|6806|3|null
36.3527 + CreationTime|Creation Time|6807|5|2359
36.3528 + ExpireDate|Expiration Date|6808|3|null
36.3529 + TrackingCode|Tracking Code|6809|5|99
36.3530 + UserNumber1|User Number 01|6810|4|null
36.3531 + UserNumber2|User Number 02|6811|4|null
36.3532 + UserNumber3|User Number 03|6812|4|null
36.3533 + UserNumber4|User Number 04|6813|4|null
36.3534 + UserNumber5|User Number 05|6814|4|null
36.3535 + UserNumber6|User Number 06|6815|4|null
36.3536 + UserNumber7|User Number 07|6816|4|null
36.3537 + UserNumber8|User Number 08|6817|4|null
36.3538 + UserNumber9|User Number 09|6818|4|null
36.3539 + UserNumber10|User Number 10|6819|4|null
36.3540 + UserChar1|User Char 01|6820|0|40
36.3541 + UserChar2|User Char 02|6821|0|40
36.3542 + UserChar3|User Char 03|6822|0|40
36.3543 + UserChar4|User Char 04|6823|0|40
36.3544 + UserChar5|User Char 05|6824|0|40
36.3545 + UserChar6|User Char 06|6825|0|40
36.3546 + UserChar7|User Char 07|6826|0|40
36.3547 + UserChar8|User Char 08|6827|0|40
36.3548 + UserChar9|User Char 09|6828|0|40
36.3549 + UserChar10|User Char 10|6829|0|40
36.3550 + UserAmount1|User Amount 01|6830|7|null
36.3551 + UserAmount2|User Amount 02|6831|7|null
36.3552 + UserAmount3|User Amount 03|6832|7|null
36.3553 + UserAmount4|User Amount 04|6833|7|null
36.3554 + UserAmount5|User Amount 05|6834|7|null
36.3555 + UserAmount6|User Amount 06|6835|7|null
36.3556 + UserAmount7|User Amount 07|6836|7|null
36.3557 + UserAmount8|User Amount 08|6837|7|null
36.3558 + UserAmount9|User Amount 09|6838|7|null
36.3559 + UserAmount10|User Amount 10|6839|7|null
36.3560 + UserCode1|User Code 01|6840|5|9999
36.3561 + UserCode2|User Code 02|6841|5|9999
36.3562 + UserCode3|User Code 03|6842|5|9999
36.3563 + UserCode4|User Code 04|6843|5|9999
36.3564 + UserCode5|User Code 05|6844|5|9999
36.3565 + UserCode6|User Code 06|6845|5|9999
36.3566 + UserCode7|User Code 07|6846|5|9999
36.3567 + UserCode8|User Code 08|6847|5|9999
36.3568 + UserCode9|User Code 09|6848|5|9999
36.3569 + UserCode10|User Code 10|6849|5|9999
36.3570 + UserDate1|User Date 01|6850|3|null
36.3571 + UserDate2|User Date 02|6851|3|null
36.3572 + UserDate3|User Date 03|6852|3|null
36.3573 + UserDate4|User Date 04|6853|3|null
36.3574 + UserDate5|User Date 05|6854|3|null
36.3575 + UserDate6|User Date 06|6855|3|null
36.3576 + UserDate7|User Date 07|6856|3|null
36.3577 + UserDate8|User Date 08|6857|3|null
36.3578 + UserDate9|User Date 09|6858|3|null
36.3579 + UserDate10|User Date 10|6859|3|null
36.3580 + UserRate1|User Rate 01|6860|2|null
36.3581 + UserRate2|User Rate 02|6861|2|null
36.3582 + UserRate3|User Rate 03|6862|2|null
36.3583 + UserRate4|User Rate 04|6863|2|null
36.3584 + UserRate5|User Rate 05|6864|2|null
36.3585 + UserRate6|User Rate 06|6865|2|null
36.3586 + UserRate7|User Rate 07|6866|2|null
36.3587 + UserRate8|User Rate 08|6867|2|null
36.3588 + UserRate9|User Rate 09|6868|2|null
36.3589 + UserRate10|User Rate 10|6869|2|null
36.3590 + Locator|Locator|6870|4|null
36.3591 + UserNumber11|User Number 11|6871|4|null
36.3592 + UserNumber12|User Number 12|6872|4|null
36.3593 + UserNumber13|User Number 13|6873|4|null
36.3594 + UserNumber14|User Number 14|6874|4|null
36.3595 + UserNumber15|User Number 15|6875|4|null
36.3596 + UserNumber16|User Number 16|6876|4|null
36.3597 + UserNumber17|User Number 17|6877|4|null
36.3598 + UserNumber18|User Number 18|6878|4|null
36.3599 + UserNumber19|User Number 19|6879|4|null
36.3600 + UserNumber20|User Number 20|6880|4|null
36.3601 + UserChar11|User Char 11|6881|0|40
36.3602 + UserChar12|User Char 12|6882|0|40
36.3603 + UserChar13|User Char 13|6883|0|40
36.3604 + UserChar14|User Char 14|6884|0|40
36.3605 + UserChar15|User Char 15|6885|0|40
36.3606 + UserChar16|User Char 16|6886|0|40
36.3607 + UserChar17|User Char 17|6887|0|40
36.3608 + UserChar18|User Char 18|6888|0|40
36.3609 + UserChar19|User Char 19|6889|0|40
36.3610 + UserChar20|User Char 20|9400|0|40
36.3611 + UserAmount11|User Amount 11|9401|7|null
36.3612 + UserAmount12|User Amount 12|9402|7|null
36.3613 + UserAmount13|User Amount 13|9403|7|null
36.3614 + UserAmount14|User Amount 14|9404|7|null
36.3615 + UserAmount15|User Amount 15|9405|7|null
36.3616 + UserAmount16|User Amount 16|9406|7|null
36.3617 + UserAmount17|User Amount 17|9407|7|null
36.3618 + UserAmount18|User Amount 18|9408|7|null
36.3619 + UserAmount19|User Amount 19|9409|7|null
36.3620 + UserAmount20|User Amount 20|9410|7|null
36.3621 + UserCode11|User Code 11|9411|5|9999
36.3622 + UserCode12|User Code 12|9412|5|9999
36.3623 + UserCode13|User Code 13|9413|5|9999
36.3624 + UserCode14|User Code 14|9414|5|9999
36.3625 + UserCode15|User Code 15|9415|5|9999
36.3626 + UserCode16|User Code 16|9416|5|9999
36.3627 + UserCode17|User Code 17|9417|5|9999
36.3628 + UserCode18|User Code 18|9418|5|9999
36.3629 + UserCode19|User Code 19|9419|5|9999
36.3630 + UserCode20|User Code 20|9420|5|9999
36.3631 + UserDate11|User Date 11|9421|3|null
36.3632 + UserDate12|User Date 12|9422|3|null
36.3633 + UserDate13|User Date 13|9423|3|null
36.3634 + UserDate14|User Date 14|9424|3|null
36.3635 + UserDate15|User Date 15|9425|3|null
36.3636 + UserDate16|User Date 16|9426|3|null
36.3637 + UserDate17|User Date 17|9427|3|null
36.3638 + UserDate18|User Date 18|9428|3|null
36.3639 + UserDate19|User Date 19|9429|3|null
36.3640 + UserDate20|User Date 20|9430|3|null
36.3641 + UserRate11|User Rate 11|9431|2|null
36.3642 + UserRate12|User Rate 12|9432|2|null
36.3643 + UserRate13|User Rate 13|9433|2|null
36.3644 + UserRate14|User Rate 14|9434|2|null
36.3645 + UserRate15|User Rate 15|9435|2|null
36.3646 + UserRate16|User Rate 16|9436|2|null
36.3647 + UserRate17|User Rate 17|9437|2|null
36.3648 + UserRate18|User Rate 18|9438|2|null
36.3649 + UserRate19|User Rate 19|9439|2|null
36.3650 + UserRate20|User Rate 20|9440|2|null
36.3651 + ***|Portfolio Note|Portfolio Note
36.3652 + ID|ID|2701|0|2
36.3653 + IDType|ID Type|2702|5|4
36.3654 + Code|Note Code|2718|5|199
36.3655 + Text:1|Text Line 01|2704|0|40
36.3656 + Text:2|Text Line 02|2704|0|40
36.3657 + Text:3|Text Line 03|2704|0|40
36.3658 + Text:4|Text Line 04|2704|0|40
36.3659 + Text:5|Text Line 05|2704|0|40
36.3660 + Text:6|Text Line 06|2704|0|40
36.3661 + Text:7|Text Line 07|2704|0|40
36.3662 + Text:8|Text Line 08|2704|0|40
36.3663 + Text:9|Text Line 09|2704|0|40
36.3664 + Text:10|Text Line 10|2704|0|40
36.3665 + Text:11|Text Line 11|2704|0|40
36.3666 + Text:12|Text Line 12|2704|0|40
36.3667 + UserID|User ID|2705|5|4999
36.3668 + EnterDate|Enter Date|2706|3|null
36.3669 + EnterTime|Enter Time|2707|5|2359
36.3670 + VoidFlag|Voided|2709|5|1
36.3671 + VoidedBy|Voided By|2710|5|4999
36.3672 + ExpirationDate|Expiration Date|2711|3|null
36.3673 + Locator|Locator|2719|4|null
36.3674 + TextLineCount|Text Line Count|2712|4|null
36.3675 + ***|Site|Site
36.3676 + SiteNumber|Site Number|9501|5|9999
36.3677 + SiteName|Name|9502|0|40
36.3678 + ExtraAddress|Extra Address|9503|0|40
36.3679 + Street|Street|9504|0|40
36.3680 + City|City|9505|0|40
36.3681 + State|State|9506|0|10
36.3682 + ZipCode|Zip Code|9507|0|10
36.3683 + CloseDate|Close Date|9508|3|null
36.3684 + Faxphone|Fax Phone|9509|0|16
36.3685 + SiteContactName|Contact Name|9510|0|40
36.3686 + ContactPhone|Contact Phone|9511|0|16
36.3687 + SiteID|Site Identifier|9512|0|9
36.3688 + SiteSettleShareID|Settlement Share ID|9513|0|2
36.3689 + Locator|Locator|9514|4|null
36.3690 + ***|Site CashOrderType|Site Cash Order Type
36.3691 + CashOrderTypeName|Name|9601|0|40
36.3692 + ActiveFlag|Active|9602|5|1
36.3693 + VendorNumber|Vendor Number|9603|5|9999
36.3694 + OrderLimiting|Order Limiting|9604|5|9
36.3695 + DelFrequency|Delivery Frequency|9605|5|3
36.3696 + LocationCode|Location Code|9607|0|20
36.3697 + CashOrderTypeMinorDeR|Minimum Order|9608|7|null
36.3698 + CashOrderTypeMaxOrder|Maximum Order|9609|7|null
36.3699 + CashOrderTypeComment:1|Comments Line 1|9610|0|40
36.3700 + CashOrderTypeComment:2|Comments Line 2|9610|0|40
36.3701 + CashOrderTypeComment:3|Comments Line 3|9610|0|40
36.3702 + CashOrderTypeComment:4|Comments Line 4|9610|0|40
36.3703 + CashOrderTypeCurrFit:1|Currency Fit - Hundreds|9611|7|null
36.3704 + CashOrderTypeCurrFit:2|Currency Fit - Fifties|9611|7|null
36.3705 + CashOrderTypeCurrFit:3|Currency Fit - Twenties|9611|7|null
36.3706 + CashOrderTypeCurrFit:4|Currency Fit - Tens|9611|7|null
36.3707 + CashOrderTypeCurrFit:5|Currency Fit - Fives|9611|7|null
36.3708 + CashOrderTypeCurrFit:6|Currency Fit - Twos|9611|7|null
36.3709 + CashOrderTypeCurrFit:7|Currency Fit - Ones|9611|7|null
36.3710 + CashOrderTypeCurrNew:1|Currency New - Hundreds|9612|7|null
36.3711 + CashOrderTypeCurrNew:2|Currency New - Fifties|9612|7|null
36.3712 + CashOrderTypeCurrNew:3|Currency New - Twenties|9612|7|null
36.3713 + CashOrderTypeCurrNew:4|Currency New - Tens|9612|7|null
36.3714 + CashOrderTypeCurrNew:5|Currency New - Fives|9612|7|null
36.3715 + CashOrderTypeCurrNew:6|Currency New - Twos|9612|7|null
36.3716 + CashOrderTypeCurrNew:7|Currency New - Ones|9612|7|null
36.3717 + CashOrderTypeCoinRoll:1|Coin Roll - Golden Dollars|9613|7|null
36.3718 + CashOrderTypeCoinRoll:2|Coin Roll - Susan Bs|9613|7|null
36.3719 + CashOrderTypeCoinRoll:3|Coin Roll - Halves|9613|7|null
36.3720 + CashOrderTypeCoinRoll:4|Coin Roll - Quarters|9613|7|null
36.3721 + CashOrderTypeCoinRoll:5|Coin Roll - Dimes|9613|7|null
36.3722 + CashOrderTypeCoinRoll:6|Coin Roll - Nickels|9613|7|null
36.3723 + CashOrderTypeCoinRoll:7|Coin Roll - Pennies|9613|7|null
36.3724 + CashOrderTypeCoinRoll:8|Coin Roll - State Quarters|9613|7|null
36.3725 + CashOrderTypeCoinBag:1|Coin Bag - Golden Dollars|9614|7|null
36.3726 + CashOrderTypeCoinBag:2|Coin Bag - Susan Bs|9614|7|null
36.3727 + CashOrderTypeCoinBag:3|Coin Bag - Halves|9614|7|null
36.3728 + CashOrderTypeCoinBag:4|Coin Bag - Quarters|9614|7|null
36.3729 + CashOrderTypeCoinBag:5|Coin Bag - Dimes|9614|7|null
36.3730 + CashOrderTypeCoinBag:6|Coin Bag - Nickels|9614|7|null
36.3731 + CashOrderTypeCoinBag:7|Coin Bag - Pennies|9614|7|null
36.3732 + CashOrderTypedElcharge|Delivery Charge|9615|7|null
36.3733 + CashOrderTypesPecdelcharge|Special Delivery Charge|9616|7|null
36.3734 + ApplyHandlingFee|Apply Special Handling Fee|9617|5|1
36.3735 + DeliveryDays:1|Delivery Day - Sunday|9606|5|1
36.3736 + DeliveryDays:2|Delivery Day - Monday|9606|5|1
36.3737 + DeliveryDays:3|Delivery Day - Tuesday|9606|5|1
36.3738 + DeliveryDays:4|Delivery Day - Wednesday|9606|5|1
36.3739 + DeliveryDays:5|Delivery Day - Thursday|9606|5|1
36.3740 + DeliveryDays:6|Delivery Day - Friday|9606|5|1
36.3741 + DeliveryDays:7|Delivery Day - Saturday|9606|5|1
36.3742 + CloseDate|Close Date|9618|3|null
36.3743 + Locator|Locator|9619|4|null
36.3744 + SpecHandlingFee|Special Handling Fee|9681|7|null
36.3745 +***|ACHItem|ACH Item
36.3746 + GlobalSequenceDate|Global Seq Date|28101|3|null
36.3747 + GlobalSequence|Global Sequence|28102|4|null
36.3748 + AccountNumber|Account Number|28103|0|10
36.3749 + IDType|ID Type|28104|5|1
36.3750 + ID|ID|28105|0|2
36.3751 + Amount|Amount|28106|7|null
36.3752 + SortOrder|Sort Order|28107|5|32767
36.3753 + TransferAccount|Transfer Account|28108|0|10
36.3754 + TransferIDType|Transfer ID Type|28109|5|1
36.3755 + TransferID|Transfer ID|28110|0|2
36.3756 + TransactionCode|Transaction Code|28111|5|59
36.3757 + TranCode|Tran Code|28112|5|8
36.3758 + AdjustmentCode|Adjustment Code|28113|5|1
36.3759 + AcctCode1|Acct Code 1|28114|5|59
36.3760 + AcctCode2|Acct Code 2|28115|5|59
36.3761 + RegulationCode|Regulation Code|28116|5|7
36.3762 + TranPostDate|Transmission Date|28117|3|null
36.3763 + SettlementDate|Settlement Date|28118|3|null
36.3764 + EffectiveDate|Effective Date|28119|3|null
36.3765 + GLCode|GL Code|28120|5|1099
36.3766 + GLCategory|GL Category|28121|4|null
36.3767 + GLCode1|GL Code 1|28122|4|null
36.3768 + ProcessorAccount|Processor Account|28123|0|20
36.3769 + ProcessorTransactionCode|Processor Transaction Code|28124|0|2
36.3770 + CommentCode|Comment Code|28125|5|9999
36.3771 + MemberBranch|Member Branch|28126|0|4
36.3772 + CompanyName|Company Name|28127|0|16
36.3773 + CompanyDiscretionaryData|Company Discretionary Data|28128|0|20
36.3774 + CompanyID|Company ID|28129|0|10
36.3775 + CompanyEntryDescription|Company Entry Description|28130|0|10
36.3776 + IndividualID|Individual ID|28131|0|15
36.3777 + IndividualName|Individual Name|28132|0|22
36.3778 + Trace|Trace Number|28133|0|15
36.3779 + ServiceClassCode|Service Class Code|28134|0|3
36.3780 + StandardEntryClassCode|Entry Class Code|28135|0|3
36.3781 + CompanyDescDate|Company Descriptive Date|28136|0|6
36.3782 + EffectiveEntryDate|Effective Entry Date|28137|0|6
36.3783 + OriginatingRT|Originating R&T|28138|0|8
36.3784 + ReceivingRT|Receiving R&T|28139|0|8
36.3785 + DiscretionaryData|Individual Discretionary Data|28140|0|2
36.3786 + CustomInfo|Custom Info|28141|0|8
36.3787 + HoldReference2|Hold Reference 2|28142|0|10
36.3788 + SourceCode|Source Code|28143|0|1
36.3789 + OriginatorStatus|Originator Status|28144|0|1
36.3790 + Status|Status|28145|5|4
36.3791 + BatchSequence|Batch Sequence|0|4|null
36.3792 + PostsEQUence|Post Sequence Number|28147|4|null
36.3793 + PostDate|Post Date|28148|3|null
36.3794 + CORRdate|Correction Date|28149|3|null
36.3795 + CorrectData|Correction Data|28150|0|29
36.3796 + CorrectCode|Correction Code|28151|0|3
36.3797 + ReturnCode|Return Code|28152|0|3
36.3798 + ExcpPostCode|Force Exception Code|28153|5|2999
36.3799 + VendorNumber|Vendor Number|28154|0|10
36.3800 + SubTranCode|Sub Tran Code|28155|5|9999
36.3801 + ForceExcpDescr|Force Exception Description|28190|1|32
36.3802 + SubTranDescr|Sub Tran Description|28191|1|40
36.3803 + ***|ACHAddenda|ACH Addenda
36.3804 + Type|Type|0|5|11
36.3805 + Locator|Locator|0|4|null
36.3806 + AddendaStd:1|Addenda Record 1|0|0|40
36.3807 + AddendaStd:2|Addenda Record 2|0|0|40
36.3808 + AddendaStd:3|Addenda Record 3|0|0|14
36.3809 + RecordType|Record Type Code|0|0|1
36.3810 + AddendaType|Addenda Type Code|0|0|2
36.3811 + TranDesc|Transaction Description|0|0|7
36.3812 + NetworkIDCode|Network ID Code|0|0|3
36.3813 + TerminalIDCode|Terminal ID Code|0|0|6
36.3814 + TranSerial|Transaction Serial Number|0|0|6
36.3815 + TranDateMmdd|Transaction Date|0|0|4
36.3816 + TranTime|Transaction Time|0|0|6
36.3817 + TerminalLocation|Terminal Location|0|0|27
36.3818 + TerminalCity|Terminal City|0|0|15
36.3819 + TerminalsTate|Terminal State|0|0|2
36.3820 + TraceNumber|Trace Number|0|0|15
36.3821 + TranType|Transaction Type|0|0|3
36.3822 + ForeignRecDFI|Foreign Receiving DFI|0|0|11
36.3823 + ForeignPayment|Foreign Payment Amount|0|0|15
36.3824 + ForeignTrace|Foreign Trace Number|0|0|22
36.3825 + ForeignAcctNum|Foreign Receiver Account|0|0|25
36.3826 + PmtRelatedInfo:1|Payment Related Info 1|0|0|40
36.3827 + PmtRelatedInfo:2|Payment Related Info 2|0|0|40
36.3828 + AddendaSeqNum|Addenda Sequence Number|0|0|4
36.3829 + DetailSeqNum|Entry Detail Sequence Number|0|0|7
36.3830 + ExcpReason|Return Reason Code|0|0|3
36.3831 + OriginalTrace|Original Entry Trace|0|0|15
36.3832 + DateOfDeath|Date of Death|0|0|6
36.3833 + OriginalRecDFI|Original Receiving DFI|0|0|8
36.3834 + AddendaInfo:1|Addenda Information 1|0|0|40
36.3835 + AddendaInfo:2|Addenda Information 2|0|0|4
36.3836 + CorrectedData|Corrected Data|0|0|29
36.3837 + ChangeCode|Change Code|0|0|3
36.3838 + CORTracesEQ|COR Trace Sequence|0|0|7
36.3839 + OrigForeignRDFI|Original Foreign RDFI|0|0|11
36.3840 + OrigEntryPmt|Original Entry Payment|0|0|10
36.3841 + OrigForeignPmt|Original Foreign Payment|0|0|15
36.3842 + CBRAddendaInfo|CBR Addenda Info|0|0|8
36.3843 + OrigSettlDate|Original Settlement Date|0|0|3
36.3844 + ReturnTrace|Return Trace Number|0|0|15
36.3845 + ReturnSettlDate|Return Settlement Date|0|0|3
36.3846 + ReturnReason|Return Reason Code|0|0|2
36.3847 + DishonorTrace|Dishonored Return Trace|0|0|15
36.3848 + DishonorSettlDate|Dishonored Settlement Date|0|0|3
36.3849 + DishonorReason|Dishonored Return Reason|0|0|2
36.3850 + ***|ACHEdit|ACH Edit
36.3851 + Type|Type|0|5|4
36.3852 + Locator|Locator|0|4|null
36.3853 + EditRecord:1|Edit Record 1|0|0|40
36.3854 + EditRecord:2|Edit Record 2|0|0|40
36.3855 + EditRecord:3|Edit Record 3|0|0|14
36.3856 + GLAccount|GL Account|0|0|14
36.3857 + GLComment|GL Comment|0|0|40
36.3858 + GLReference|GL Reference|0|0|10
36.3859 + GLReference1|GL Reference 1|0|0|10
36.3860 + RemitProCACcount|Remittance Processor Account|0|0|20
36.3861 + RemitFundType|Remittance Type of Funds|0|0|2
36.3862 + RemitPayer|Remittance Payer|0|0|2
36.3863 + RemitTranCode|Remittance Transaction Code|0|0|4
36.3864 + RemitDescription|Remittance Description|0|0|10
36.3865 + DisAmt|Discount Amount|0|7|null
36.3866 + CRVAmt|Credit Voucher Amount|0|7|null
36.3867 + PmtAmt|Payment Amount|0|7|null
36.3868 + InvoiceLocator|Invoice Number|0|0|20
36.3869 + ***|ACHAddInfo|ACH Additional Info
36.3870 + Number|Number|0|5|4
36.3871 + Locator|Locator|0|4|null
36.3872 + AdditionInfo:1|Additional Info 1|0|0|40
36.3873 + AdditionInfo:2|Additional Info 2|0|0|40
36.3874 + AdditionInfo:3|Additional Info 3|0|0|40
36.3875 + AdditionInfo:4|Additional Info 4|0|0|12
36.3876 +***|Vendor|Vendor
36.3877 + Number|Vendor Number|6301|0|10
36.3878 + Name|Vendor Name|6302|0|40
36.3879 + ExtraAddress|Extra Address|6303|0|30
36.3880 + Street|Street|6304|0|30
36.3881 + City|City|6305|0|20
36.3882 + State|State|6306|0|10
36.3883 + ZipCode|Zipcode|6307|0|10
36.3884 + Phone|Phone|6308|0|12
36.3885 + Contact|Contact Person|6309|0|40
36.3886 + CreditYTD|Credits YTD|6310|7|null
36.3887 + DebitYTD|Debits YTD|6311|7|null
36.3888 + LastPaymentAmount|Last Pmt Amount|6312|7|null
36.3889 + LastPaymentDate|Last Pmt Date|6313|3|null
36.3890 + GLExpense|Expense GL|6314|0|16
36.3891 + GLAcctSpaY|A/P GL|6315|0|16
36.3892 + GLDiscount|Discount GL|6316|0|16
36.3893 + LastFMDate|Last FM Date|6317|3|null
36.3894 + CustomerID|Customer ID|6318|0|40
36.3895 + AddressType|Address Type|6319|5|2
36.3896 + CreditLastYear|Credits Last Year|6320|7|null
36.3897 + DebitLastYear|Debits Last Year|6321|7|null
36.3898 + IRSReporting|IRS Reporting|6322|5|2
36.3899 + IRSCorrection|IRS Correction|6323|5|1
36.3900 + IRSAmountCode|IRS Amount Code|6324|5|12
36.3901 + SSNType|SSN/TIN Type|6325|5|9
36.3902 + SSN|SSN/TIN|6326|0|9
36.3903 + IRSNameControl|IRS Name Control|6327|0|4
36.3904 + RestrictionLevel|Restriction Level|6328|5|9
36.3905 + Comment1|Comment|6329|0|40
36.3906 + Payee|Payee|6330|0|10
36.3907 + Email|E-Mail Address|6331|0|40
36.3908 + PhoneExtension|Phone Ext|6332|0|6
36.3909 + Achgroupnumber|ACH Group Number|6333|0|6
36.3910 + CompanyDisc|Company Disc|6334|0|20
36.3911 + CompanyEntryDesc|Company Entry Desc|6335|0|10
36.3912 + DFIAccount|DFI Account|6336|0|20
36.3913 + RDFIRT|RDFI R&T|6337|0|9
36.3914 + ReceivingComp|Receiving Company|6338|0|22
36.3915 + AltEmail|Alt E-Mail Address|6340|0|40
36.3916 + ContactDesc|Contact Description|6341|0|20
36.3917 + Contact2|Contact 2 Person|6342|0|40
36.3918 + Contact2desc|Contact 2 Description|6343|0|20
36.3919 + Contact2phone|Contact 2 Phone|6345|0|12
36.3920 + Contact2ext|Contact 2 Ext|6344|0|6
36.3921 + Fax|Fax|6346|0|12
36.3922 + UnpaidBalance|Unpaid Balance|6380|7|null
36.3923 + GLNameAcctSpaY|GL Name Accts Payable|6381|1|40
36.3924 + GLNamedIsCount|GL Name Discount|6382|1|40
36.3925 + GLNameExpense|GL Name Expense|6383|1|40
36.3926 + ***|Invoice|Invoice
36.3927 + Number|Number|6401|0|20
36.3928 + Description|Description|6402|0|40
36.3929 + PONumber|PO Number|6403|0|10
36.3930 + Approval|Approval|6404|0|10
36.3931 + InvoicedAtE|Invoice Date|6405|3|null
36.3932 + DueDate:1|Due Date 01|6406|3|null
36.3933 + DueDate:2|Due Date 02|6406|3|null
36.3934 + DueDate:3|Due Date 03|6406|3|null
36.3935 + DueDate:4|Due Date 04|6406|3|null
36.3936 + DueDate:5|Due Date 05|6406|3|null
36.3937 + DueDate:6|Due Date 06|6406|3|null
36.3938 + DueDate:7|Due Date 07|6406|3|null
36.3939 + DueDate:8|Due Date 08|6406|3|null
36.3940 + DueDate:9|Due Date 09|6406|3|null
36.3941 + DueDate:10|Due Date 10|6406|3|null
36.3942 + DueDate:11|Due Date 11|6406|3|null
36.3943 + DueDate:12|Due Date 12|6406|3|null
36.3944 + DueAmount:1|Due Amount 01|6407|7|null
36.3945 + DueAmount:2|Due Amount 02|6407|7|null
36.3946 + DueAmount:3|Due Amount 03|6407|7|null
36.3947 + DueAmount:4|Due Amount 04|6407|7|null
36.3948 + DueAmount:5|Due Amount 05|6407|7|null
36.3949 + DueAmount:6|Due Amount 06|6407|7|null
36.3950 + DueAmount:7|Due Amount 07|6407|7|null
36.3951 + DueAmount:8|Due Amount 08|6407|7|null
36.3952 + DueAmount:9|Due Amount 09|6407|7|null
36.3953 + DueAmount:10|Due Amount 10|6407|7|null
36.3954 + DueAmount:11|Due Amount 11|6407|7|null
36.3955 + DueAmount:12|Due Amount 12|6407|7|null
36.3956 + DueDateFinal|Final Due Date|6408|3|null
36.3957 + DiscountDate|Discount Date|6409|3|null
36.3958 + DiscountAmount|Discount Amount|6410|7|null
36.3959 + GLAcctSpaY|AP GL|6411|0|16
36.3960 + GLDiscount|Discount GL|6412|0|16
36.3961 + GLExpense:1|Expense GL 01|6413|0|16
36.3962 + GLExpense:2|Expense GL 02|6413|0|16
36.3963 + GLExpense:3|Expense GL 03|6413|0|16
36.3964 + GLExpense:4|Expense GL 04|6413|0|16
36.3965 + GLExpense:5|Expense GL 05|6413|0|16
36.3966 + GLExpense:6|Expense GL 06|6413|0|16
36.3967 + GLExpense:7|Expense GL 07|6413|0|16
36.3968 + GLExpense:8|Expense GL 08|6413|0|16
36.3969 + GLExpense:9|Expense GL 09|6413|0|16
36.3970 + GLExpense:10|Expense GL 10|6413|0|16
36.3971 + GLExpense:11|Expense GL 11|6413|0|16
36.3972 + GLExpense:12|Expense GL 12|6413|0|16
36.3973 + ExpenseTable:1|Expense Table 01|6414|5|299
36.3974 + ExpenseTable:2|Expense Table 02|6414|5|299
36.3975 + ExpenseTable:3|Expense Table 03|6414|5|299
36.3976 + ExpenseTable:4|Expense Table 04|6414|5|299
36.3977 + ExpenseTable:5|Expense Table 05|6414|5|299
36.3978 + ExpenseTable:6|Expense Table 06|6414|5|299
36.3979 + ExpenseTable:7|Expense Table 07|6414|5|299
36.3980 + ExpenseTable:8|Expense Table 08|6414|5|299
36.3981 + ExpenseTable:9|Expense Table 09|6414|5|299
36.3982 + ExpenseTable:10|Expense Table 10|6414|5|299
36.3983 + ExpenseTable:11|Expense Table 11|6414|5|299
36.3984 + ExpenseTable:12|Expense Table 12|6414|5|299
36.3985 + ExpenseAmount:1|Expense Amt 01|6415|7|null
36.3986 + ExpenseAmount:2|Expense Amt 02|6415|7|null
36.3987 + ExpenseAmount:3|Expense Amt 03|6415|7|null
36.3988 + ExpenseAmount:4|Expense Amt 04|6415|7|null
36.3989 + ExpenseAmount:5|Expense Amt 05|6415|7|null
36.3990 + ExpenseAmount:6|Expense Amt 06|6415|7|null
36.3991 + ExpenseAmount:7|Expense Amt 07|6415|7|null
36.3992 + ExpenseAmount:8|Expense Amt 08|6415|7|null
36.3993 + ExpenseAmount:9|Expense Amt 09|6415|7|null
36.3994 + ExpenseAmount:10|Expense Amt 10|6415|7|null
36.3995 + ExpenseAmount:11|Expense Amt 11|6415|7|null
36.3996 + ExpenseAmount:12|Expense Amt 12|6415|7|null
36.3997 + Status|Status|6416|5|6
36.3998 + ExpEffectiveDate|Expense Effective Date|6417|3|null
36.3999 + ExpPostDate|Expense Post Date|6418|3|null
36.4000 + LastFMDate|Last FM Date|6419|3|null
36.4001 + PaymentDate:1|Payment Date 01|6420|3|null
36.4002 + PaymentDate:2|Payment Date 02|6420|3|null
36.4003 + PaymentDate:3|Payment Date 03|6420|3|null
36.4004 + PaymentDate:4|Payment Date 04|6420|3|null
36.4005 + PaymentDate:5|Payment Date 05|6420|3|null
36.4006 + PaymentDate:6|Payment Date 06|6420|3|null
36.4007 + PaymentDate:7|Payment Date 07|6420|3|null
36.4008 + PaymentDate:8|Payment Date 08|6420|3|null
36.4009 + PaymentDate:9|Payment Date 09|6420|3|null
36.4010 + PaymentDate:10|Payment Date 10|6420|3|null
36.4011 + PaymentDate:11|Payment Date 11|6420|3|null
36.4012 + PaymentDate:12|Payment Date 12|6420|3|null
36.4013 + PaymentAmount:1|Payment Amount 01|6421|7|null
36.4014 + PaymentAmount:2|Payment Amount 02|6421|7|null
36.4015 + PaymentAmount:3|Payment Amount 03|6421|7|null
36.4016 + PaymentAmount:4|Payment Amount 04|6421|7|null
36.4017 + PaymentAmount:5|Payment Amount 05|6421|7|null
36.4018 + PaymentAmount:6|Payment Amount 06|6421|7|null
36.4019 + PaymentAmount:7|Payment Amount 07|6421|7|null
36.4020 + PaymentAmount:8|Payment Amount 08|6421|7|null
36.4021 + PaymentAmount:9|Payment Amount 09|6421|7|null
36.4022 + PaymentAmount:10|Payment Amount 10|6421|7|null
36.4023 + PaymentAmount:11|Payment Amount 11|6421|7|null
36.4024 + PaymentAmount:12|Payment Amount 12|6421|7|null
36.4025 + PaymentCheck:1|Payment Check 01|6422|0|12
36.4026 + PaymentCheck:2|Payment Check 02|6422|0|12
36.4027 + PaymentCheck:3|Payment Check 03|6422|0|12
36.4028 + PaymentCheck:4|Payment Check 04|6422|0|12
36.4029 + PaymentCheck:5|Payment Check 05|6422|0|12
36.4030 + PaymentCheck:6|Payment Check 06|6422|0|12
36.4031 + PaymentCheck:7|Payment Check 07|6422|0|12
36.4032 + PaymentCheck:8|Payment Check 08|6422|0|12
36.4033 + PaymentCheck:9|Payment Check 09|6422|0|12
36.4034 + PaymentCheck:10|Payment Check 10|6422|0|12
36.4035 + PaymentCheck:11|Payment Check 11|6422|0|12
36.4036 + PaymentCheck:12|Payment Check 12|6422|0|12
36.4037 + DiscountTaken|Discount Taken|6423|7|null
36.4038 + Locator|Locator|6424|4|null
36.4039 + Type|Invoice Type|6425|5|99
36.4040 + Event|Event Number|6426|5|50
36.4041 + EventDate|Event Date|6427|3|null
36.4042 + User|Assigned User|6428|5|9999
36.4043 + CompletedActions:1|Completed Action 01|6429|5|1
36.4044 + CompletedActions:2|Completed Action 02|6429|5|1
36.4045 + CompletedActions:3|Completed Action 03|6429|5|1
36.4046 + CompletedActions:4|Completed Action 04|6429|5|1
36.4047 + CompletedActions:5|Completed Action 05|6429|5|1
36.4048 + CompletedActions:6|Completed Action 06|6429|5|1
36.4049 + CompletedActions:7|Completed Action 07|6429|5|1
36.4050 + CompletedActions:8|Completed Action 08|6429|5|1
36.4051 + CompletedActions:9|Completed Action 09|6429|5|1
36.4052 + CompletedActions:10|Completed Action 10|6429|5|1
36.4053 + CompletedActions:11|Completed Action 11|6429|5|1
36.4054 + CompletedActions:12|Completed Action 12|6429|5|1
36.4055 + CompletedActions:13|Completed Action 13|6429|5|1
36.4056 + CompletedActions:14|Completed Action 14|6429|5|1
36.4057 + CompletedActions:15|Completed Action 15|6429|5|1
36.4058 + PaymentMethod|Payment Method|6430|5|1
36.4059 + Achtrancodeout|Outgoing ACH Transaction Code|6431|5|99
36.4060 + ImageID|Image ID|6432|0|40
36.4061 + Achgroupnumber|ACH Group Number|6433|0|6
36.4062 + CreateAddenda|Create Addenda Record|6434|5|1
36.4063 + PreNotedFIAccount|Pre Note DFI Account|6435|0|20
36.4064 + DFIAccount|DFI Account|6436|0|20
36.4065 + Achacknowledge|ACH Acknowledgement|6437|5|1
36.4066 + UnpaidBalance|Unpaid Balance|6480|7|null
36.4067 + GLNameAcctSpaY|GL Name Accts Payable|6481|1|40
36.4068 + GLNamedIsCount|GL Name Discount|6482|1|40
36.4069 + GLNameExpense:1|GL Name Expense 01|6483|1|40
36.4070 + GLNameExpense:2|GL Name Expense 02|6483|1|40
36.4071 + GLNameExpense:3|GL Name Expense 03|6483|1|40
36.4072 + GLNameExpense:4|GL Name Expense 04|6483|1|40
36.4073 + GLNameExpense:5|GL Name Expense 05|6483|1|40
36.4074 + GLNameExpense:6|GL Name Expense 06|6483|1|40
36.4075 + GLNameExpense:7|GL Name Expense 07|6483|1|40
36.4076 + GLNameExpense:8|GL Name Expense 08|6483|1|40
36.4077 + GLNameExpense:9|GL Name Expense 09|6483|1|40
36.4078 + GLNameExpense:10|GL Name Expense 10|6483|1|40
36.4079 + GLNameExpense:11|GL Name Expense 11|6483|1|40
36.4080 + GLNameExpense:12|GL Name Expense 12|6483|1|40
36.4081 + TotalExpenses|Total Expenses|6484|7|null
36.4082 + TotalPaymentS|Total Payments|6485|7|null
36.4083 + ***|APInv Note|AP Invoice Note
36.4084 + ID|ID|2701|0|2
36.4085 + IDType|ID Type|2702|5|4
36.4086 + Code|Note Code|2703|5|199
36.4087 + Text:1|Text Line 01|2704|0|40
36.4088 + Text:2|Text Line 02|2704|0|40
36.4089 + Text:3|Text Line 03|2704|0|40
36.4090 + Text:4|Text Line 04|2704|0|40
36.4091 + Text:5|Text Line 05|2704|0|40
36.4092 + Text:6|Text Line 06|2704|0|40
36.4093 + Text:7|Text Line 07|2704|0|40
36.4094 + Text:8|Text Line 08|2704|0|40
36.4095 + Text:9|Text Line 09|2704|0|40
36.4096 + Text:10|Text Line 10|2704|0|40
36.4097 + Text:11|Text Line 11|2704|0|40
36.4098 + Text:12|Text Line 12|2704|0|40
36.4099 + UserID|User ID|2705|5|4999
36.4100 + EnterDate|Enter Date|2706|3|null
36.4101 + EnterTime|Enter Time|2707|5|2359
36.4102 + VoidFlag|Voided|2709|5|1
36.4103 + VoidedBy|Voided By|2710|5|4999
36.4104 + ExpirationDate|Expiration Date|2711|3|null
36.4105 + Locator|Locator|2719|4|null
36.4106 +***|ATMDialog|ATM Dialog
36.4107 + MessageTypeIn|Message Type In|0|0|6
36.4108 + DuplicateFlag|Duplicate Flag|0|5|1
36.4109 + ProcessorAccount|Processor Account Number|0|0|20
36.4110 + CardsEQUencenumber|Card Sequence Number|0|0|3
36.4111 + TransactionCode|Transaction Code|0|0|10
36.4112 + ResponseCodeIn|Response Code In|0|0|2
36.4113 + Amount1In|Amount 1 In|0|6|null
36.4114 + Amount2In|Amount 2 In|0|6|null
36.4115 + Amount3In|Amount 3 In|0|6|null
36.4116 + Amount4In|Amount 4 In|0|6|null
36.4117 + Amount5In|Amount 5 In|0|6|null
36.4118 + Amount6In|Amount 6 In|0|6|null
36.4119 + Amount7In|Amount 7 In|0|6|null
36.4120 + Amount8In|Amount 8 In|0|6|null
36.4121 + Amount9In|Amount 9 In|0|6|null
36.4122 + Amount10In|Amount 10 In|0|6|null
36.4123 + AuthIDResponse|Auth ID Response|0|0|6
36.4124 + TraceNumber|Trace Number|0|0|6
36.4125 + ReferenceNumber|Reference Number|0|0|12
36.4126 + LocalTranDate|Local Transaction Date|0|3|null
36.4127 + LocalTranTime|Local Transaction Time|0|0|6
36.4128 + CaptureDate|Capture Date|0|3|null
36.4129 + SettlementDate|Settlement Date|0|3|null
36.4130 + ConversionDate|Conversion Date|0|3|null
36.4131 + TransmissionDate|Transmission Date|0|3|null
36.4132 + TransmissionTime|Transmission Time|0|0|6
36.4133 + CardExpirationDate|Card Expiration Date|0|3|null
36.4134 + ExtraDate1|Extra Date 1|0|3|null
36.4135 + ExtraTime1|Extra Time 1|0|0|6
36.4136 + OurSystemDate|Our System Date|0|3|null
36.4137 + InternalNetwork|Internal Network|0|0|5
36.4138 + PreAuthLifetime|Pre-Authorization Lifetime|0|0|6
36.4139 + SourceInstID|Source Institution ID|0|0|15
36.4140 + TerminalID|Terminal ID|0|0|8
36.4141 + NetworkID|Network ID|0|0|15
36.4142 + DestinationInstID|Destination Institution ID|0|0|15
36.4143 + SettlementInstID|Settlement Institution ID|0|0|15
36.4144 + POSEntryMode|Point of Sale Entry Mode|0|5|999
36.4145 + POSConditionCode|Point of Svc Condition Code|0|0|6
36.4146 + SettleConversionRate|Settlement Conversion Rate|0|0|8
36.4147 + IssuerConversionRate|Card Issuer Conversion Rate|0|0|8
36.4148 + MiscData1|Misc Data 1|0|0|80
36.4149 + MiscData2|Misc Data 2|0|0|80
36.4150 + MiscData3|Misc Data 3|0|0|80
36.4151 + MiscData4|Misc Data 4|0|0|80
36.4152 + TranCurrencyCode|Transaction Currency Code|0|5|999
36.4153 + SettleCurrencyCode|Settlement Currency Code|0|5|999
36.4154 + IssuerCurrencyCode|Card Issuer Currency Code|0|5|999
36.4155 + MerchantType|Merchant Type|0|5|9999
36.4156 + ReversalCode|Reversal Code|0|5|99
36.4157 + DeviceNumber|Device Number|0|5|999
36.4158 + DeviceName|Device Name|0|0|20
36.4159 + DeviceType|Device Type|0|5|1
36.4160 + MessageFormat|Message Format|0|0|10
36.4161 + RoutingCode|Routing Code|0|5|2
36.4162 + SymDir|SYM Directory|0|0|3
36.4163 + PostsUccess|Post Success Flag|0|5|1
36.4164 + ReversalFlag|Reversal Flag|0|5|1
36.4165 + AdjustmentFlag|Adjustment Flag|0|5|1
36.4166 + OriginalAmount|Original Amount|0|6|null
36.4167 + TranSubType|Transaction SubType|0|5|99
36.4168 + OurPreAuthCode|Our PreAuth Code|0|5|3
36.4169 + OurTranCode|Our Transaction Code|0|5|7
36.4170 + OurAccount|Our Account Number|0|0|10
36.4171 + OurAcctCode1|Our Account Code 1|0|5|4
36.4172 + OurAcctCode2|Our Account Code 2|0|5|4
36.4173 + OurID1|Our ID 1|0|0|4
36.4174 + OurID2|Our ID 2|0|0|4
36.4175 + OurFeeAmount|Our Fee Amount|0|6|null
36.4176 + OurFeeID|Our Fee ID|0|0|4
36.4177 + KeyGenCode|Key Generation Code|0|5|4
36.4178 + ReplaceAmount1|Replacement Amount 1|0|6|null
36.4179 + ReplaceAmount2|Replacement Amount 2|0|6|null
36.4180 + ReplaceAmount3|Replacement Amount 3|0|6|null
36.4181 + ReplaceAmount4|Replacement Amount 4|0|6|null
36.4182 + ReplaceCode|Replacement Code|0|5|9999
36.4183 + ReplaceDate1|Replacement Date 1|0|3|null
36.4184 + ReplaceTime1|Replacement Time 1|0|0|6
36.4185 + ReplaceDate2|Replacement Date 2|0|3|null
36.4186 + ReplaceTime2|Replacement Time 2|0|0|6
36.4187 + ReplaceField1|Replacement Field 1|0|0|20
36.4188 + ReplaceField2|Replacement Field 2|0|0|20
36.4189 + ReversalResponseCode|Reversal Response Code|0|5|99
36.4190 + MessageTypeout|Message Type Out|0|0|6
36.4191 + ResponseCodeOut|Response Code Out|0|0|2
36.4192 + PostAmount|Post Amount|0|6|null
36.4193 + Amount1Out|Amount 1 Out|0|6|null
36.4194 + Amount2Out|Amount 2 Out|0|6|null
36.4195 + Amount3Out|Amount 3 Out|0|6|null
36.4196 + Amount4Out|Amount 4 Out|0|6|null
36.4197 + Amount5Out|Amount 5 Out|0|6|null
36.4198 + Amount6Out|Amount 6 Out|0|6|null
36.4199 + Amount7Out|Amount 7 Out|0|6|null
36.4200 + Amount8Out|Amount 8 Out|0|6|null
36.4201 + Amount9Out|Amount 9 Out|0|6|null
36.4202 + Amount10Out|Amount 10 Out|0|6|null
36.4203 + OurTransmissionDate|Our Transmission Date|0|3|null
36.4204 + OurTransmissionTime|Our Transmission Time|0|0|6
36.4205 + TurnaroundTime|Turn Around Time|0|5|99
36.4206 + OurResponseCode|Our Response Code|0|5|9999
36.4207 + SubState|SubState|0|5|3
36.4208 + CurrencyIndex|Currency Rate Index|0|5|3
36.4209 + CurrencyAmount|Currency Amount|0|6|null
36.4210 + ApprovedLesserCode|Approved For Lesser Amt Code|0|0|1
36.4211 + OurReversalCode|Our Reversal Code|0|0|1
36.4212 + OurAccount2|Our Account Number 2|0|0|10
36.4213 + ForcePost|Force Post Flag|0|5|2
36.4214 +***|CashLetter|Cash Letter
36.4215 + GlobalSequence|Global Sequence|28201|4|null
36.4216 + GlobalSequenceDate|Global Seq Date|28202|3|null
36.4217 + Type|Type|28203|5|5
36.4218 + CreationDate|Creation Date|28204|3|null
36.4219 + CreationTime|Creation Time|28205|5|2359
36.4220 + AccountNumber|Account Number|28206|0|10
36.4221 + ShareID|Share ID|28207|0|2
36.4222 + OriginatorRT|Originator R&T|28208|0|9
36.4223 + CorporateID|Corporate ID|28209|0|9
36.4224 + USCEnTralrt|US Central R&T|28210|0|9
36.4225 + MemberID|Member ID|28211|0|9
36.4226 + CashLetterAmount|Cash Letter Amount|28212|7|null
36.4227 + CashLetterDate|Cash Letter Date|28213|3|null
36.4228 + OriginalAmount|Original Amount|28214|7|null
36.4229 + OriginalDepositDate|Original Deposit Date|28215|3|null
36.4230 + AvailableAmount:1|Available Amount 1|28216|7|null
36.4231 + AvailableAmount:2|Available Amount 2|28216|7|null
36.4232 + AvailableAmount:3|Available Amount 3|28216|7|null
36.4233 + AvailableAmount:4|Available Amount 4|28216|7|null
36.4234 + AvailableDate:1|Available Date 1|28217|3|null
36.4235 + AvailableDate:2|Available Date 2|28217|3|null
36.4236 + AvailableDate:3|Available Date 3|28217|3|null
36.4237 + AvailableDate:4|Available Date 4|28217|3|null
36.4238 + AdjustmentAmount|Adjustment Amount|28218|7|null
36.4239 + AdjustmentDate|Adjustment Date|28219|3|null
36.4240 + ProcessDate|Process Date|28220|3|null
36.4241 + ItemCount|Item Count|28221|4|null
36.4242 + PriorAmount|Prior Amount|28222|7|null
36.4243 + Reference|Reference|28223|0|8
36.4244 + FedCode|Fed Code|28224|5|9999
36.4245 + Branch|Branch|28225|5|9999
36.4246 + DebitCredit|Debit/Credit|28226|5|1
36.4247 + ReturnReason|Return Reason|28227|0|2
36.4248 + ReturnType|Return Type|28228|0|2
36.4249 + FedReference|Fed Reference|28229|0|6
36.4250 + StatementCode|Statement Code|28230|0|2
36.4251 + DepositDate|Deposit Date|28231|3|null
36.4252 + DebitAmount|Debit Amount|28232|7|null
36.4253 + CreditAmount|Credit Amount|28233|7|null
36.4254 + ReSubmitAmount|Resubmit Amount|28234|7|null
36.4255 + AdjustedTotalAmount|Adjusted Total Amount|28235|7|null
36.4256 + AccountInformation|Account Information|28236|0|15
36.4257 + ThirdPartyInformation|3rd Party Information|28237|0|15
36.4258 + Payee|Payee|28238|0|15
36.4259 + BatchID|Batch ID|28239|0|6
36.4260 + ReversalFlag|Reversal Flag|28240|5|1
36.4261 + ReversalDate|Reversal Date|28241|3|null
36.4262 + CalculatedAmount|Calculated Amount|28301|6|null
36.4263 + ImmediateAmount|Immediate Amount|28302|6|null
36.4264 + DayDeferredAmount:1|1 Day Deferred Amount|28303|6|null
36.4265 + DayDeferredAmount:2|2 Day Deferred Amount|28303|6|null
36.4266 + DayDeferredAmount:3|3 Day Deferred Amount|28303|6|null
36.4267 + DayDeferredAmount:4|4 Day Deferred Amount|28303|6|null
36.4268 + DayDeferredAmount:5|5 Day Deferred Amount|28303|6|null
36.4269 + DayDeferredAmount:6|6 Day Deferred Amount|28303|6|null
36.4270 + DayDeferredAmount:7|7 Day Deferred Amount|28303|6|null
36.4271 + DayDeferredAmount:8|8 Day Deferred Amount|28303|6|null
36.4272 + DayDeferredAmount:9|9 Day Deferred Amount|28303|6|null
36.4273 + CalculatedDate|Calculated Date|28304|3|null
36.4274 +***|CashOrder|Cash Order
36.4275 + SequenceNumber|Sequence Number|9701|4|null
36.4276 + Status|Status|9702|5|3
36.4277 + AccountNumber|Account Number|9703|0|10
36.4278 + SiteLocator|Site Locator|9704|4|null
36.4279 + CashOrderTypeLocator|Cash Order Type Locator|9705|4|null
36.4280 + VendorNumber|Vendor Number|9706|5|9999
36.4281 + DeliveryDate|Delivery Date|9707|3|null
36.4282 + CommentLine:1|Comments Line 1|9708|0|40
36.4283 + CommentLine:2|Comments Line 2|9708|0|40
36.4284 + CommentLine:3|Comments Line 3|9708|0|40
36.4285 + CommentLine:4|Comments Line 4|9708|0|40
36.4286 + CurrFit:1|Currency Fit - Hundreds|9709|7|null
36.4287 + CurrFit:2|Currency Fit - Fifties|9709|7|null
36.4288 + CurrFit:3|Currency Fit - Twenties|9709|7|null
36.4289 + CurrFit:4|Currency Fit - Tens|9709|7|null
36.4290 + CurrFit:5|Currency Fit - Fives|9709|7|null
36.4291 + CurrFit:6|Currency Fit - Twos|9709|7|null
36.4292 + CurrFit:7|Currency Fit - Ones|9709|7|null
36.4293 + CurrNew:1|Currency New - Hundreds|9710|7|null
36.4294 + CurrNew:2|Currency New - Fifties|9710|7|null
36.4295 + CurrNew:3|Currency New - Twenties|9710|7|null
36.4296 + CurrNew:4|Currency New - Tens|9710|7|null
36.4297 + CurrNew:5|Currency New - Fives|9710|7|null
36.4298 + CurrNew:6|Currency New - Twos|9710|7|null
36.4299 + CurrNew:7|Currency New - Ones|9710|7|null
36.4300 + CoinRoll:1|Coin Roll - Golden Dollars|9711|7|null
36.4301 + CoinRoll:2|Coin Roll - Susan Bs|9711|7|null
36.4302 + CoinRoll:3|Coin Roll - Halves|9711|7|null
36.4303 + CoinRoll:4|Coin Roll - Quarters|9711|7|null
36.4304 + CoinRoll:5|Coin Roll - Dimes|9711|7|null
36.4305 + CoinRoll:6|Coin Roll - Nickels|9711|7|null
36.4306 + CoinRoll:7|Coin Roll - Pennies|9711|7|null
36.4307 + CoinRoll:8|Coin Roll - State Quarters|9711|7|null
36.4308 + CoinBag:1|Coin Bag - Golden Dollars|9712|7|null
36.4309 + CoinBag:2|Coin Bag - Susan Bs|9712|7|null
36.4310 + CoinBag:3|Coin Bag - Halves|9712|7|null
36.4311 + CoinBag:4|Coin Bag - Quarters|9712|7|null
36.4312 + CoinBag:5|Coin Bag - Dimes|9712|7|null
36.4313 + CoinBag:6|Coin Bag - Nickels|9712|7|null
36.4314 + CoinBag:7|Coin Bag - Pennies|9712|7|null
36.4315 + EnteredDate|Entered Date|9713|3|null
36.4316 + EnteredTime|Entered Time|9714|5|2359
36.4317 + EnteredMemberUser|Entered by Member User|9715|4|null
36.4318 + EnteredCorpusEr|Entered by Corp User|9716|4|null
36.4319 + ValidationMethod|Validation Method|9717|0|40
36.4320 + LastRevisedDate|Last Revised Date|9718|3|null
36.4321 + LastRevisedTime|Last Revised Time|9719|5|2359
36.4322 + LastRevisedMemberUser|Last Revised by Member User|9720|4|null
36.4323 + LastRevisedCorpusEr|Last Revised by Corp User|9721|4|null
36.4324 + PulledDate|Pulled Date|9722|3|null
36.4325 + PulledTime|Pulled Time|9723|5|2359
36.4326 + PulledCorpusEr|Pulled by User|9724|4|null
36.4327 + CompletedDate|Completed Date|9725|3|null
36.4328 + CompletedTime|Completed Time|9726|5|2359
36.4329 + CancelLedDate|Cancelled Date|9727|3|null
36.4330 + CancelLedTime|Cancelled Time|9728|5|2359
36.4331 + CancelLedMemberUser|Cancelled by Member User|9729|4|null
36.4332 + CancelLedCorpusEr|Cancelled by Corp User|9730|4|null
36.4333 + CancelLedReason|Cancelled Reason|9731|0|40
36.4334 + TotalAmount|Total Amount|9780|7|null
36.4335 + EnteredMbrUserName|Entered by Mbr User Name|9781|0|20
36.4336 + EnteredCorpusErname|Entered by Corp User Name|9782|0|20
36.4337 + ReVedmbrusername|Revised by Mbr User Name|9783|0|20
36.4338 + ReVedcorpusername|Revised by Corp User Name|9784|0|20
36.4339 + PulledCorpusErname|Pulled by User Name|9785|0|20
36.4340 + CanceledMbrUserName|Cancelled by Mbr User Name|9786|0|20
36.4341 + CanceledCorpusErname|Cancelled by Corp User Name|9787|0|20
36.4342 +***|CDMDialog|Cash Dispense Dialog
36.4343 + TransmissionDate|Transmission Date|0|3|null
36.4344 + TransmissionTime|Transmission Time|0|5|1259
36.4345 + RequestAmount|Request Amount|0|6|null
36.4346 + ResponseAmount|Response Amount|0|6|null
36.4347 + User|User|0|5|4999
36.4348 + TellerDirection|Teller Direction|0|5|2
36.4349 + RequestCassette:1|Request Cassette 1|0|5|32767
36.4350 + RequestCassette:2|Request Cassette 2|0|5|32767
36.4351 + RequestCassette:3|Request Cassette 3|0|5|32767
36.4352 + RequestCassette:4|Request Cassette 4|0|5|32767
36.4353 + RequestCassette:5|Request Cassette 5|0|5|32767
36.4354 + RequestCassette:6|Request Cassette 6|0|5|32767
36.4355 + RequestDispenser|Request Dispenser|0|6|null
36.4356 + ResponseCassette:1|Response Cassette 1|0|5|32767
36.4357 + ResponseCassette:2|Response Cassette 2|0|5|32767
36.4358 + ResponseCassette:3|Response Cassette 3|0|5|32767
36.4359 + ResponseCassette:4|Response Cassette 4|0|5|32767
36.4360 + ResponseCassette:5|Response Cassette 5|0|5|32767
36.4361 + ResponseCassette:6|Response Cassette 6|0|5|32767
36.4362 + ResponseDispenser|Response Dispenser|0|6|null
36.4363 + DeviceNumber|Device Number|0|5|99
36.4364 + Status|Status|0|0|1
36.4365 +***|Check|Check
36.4366 + AccountCode|Checking Acct Code|3501|0|2
36.4367 + Number|Check Number|3502|0|10
36.4368 + Payee:1|Payee Line 1|3503|0|40
36.4369 + Payee:2|Payee Line 2|3503|0|40
36.4370 + Payee:3|Payee Line 3|3503|0|40
36.4371 + Payee:4|Payee Line 4|3503|0|40
36.4372 + Payee:5|Payee Line 5|3503|0|40
36.4373 + PostDate|Post Date|3504|3|null
36.4374 + SequenceNumber|Tran Seq Number|3505|4|null
36.4375 + IssueDate|Issue Date|3506|3|null
36.4376 + ReconciliationDate|Reconcile Date|3507|3|null
36.4377 + Status|Status|3508|5|5
36.4378 + AccountNumber|Account|3509|0|10
36.4379 + IDType|ID Type|3510|5|2
36.4380 + ID|ID|3511|0|2
36.4381 + Reference|Reference|3512|0|40
36.4382 + Amount|Amount|3513|7|null
36.4383 + Branch|Branch|3514|5|9999
36.4384 + Source|Source|3515|5|27
36.4385 + VoidDate|Void Date|3516|3|null
36.4386 + StopPmtDate|Stop Payment Date|3517|3|null
36.4387 + Reference2|Reference 2|3518|0|40
36.4388 + TracerNumber|Tracer Number|3519|0|15
36.4389 + SourceGLCode|Source GL Code|3520|5|999
36.4390 + Escheatdate|Escheat Date|3521|3|null
36.4391 + CheckNumberAssigned|Check Number Assigned|3522|5|1
36.4392 + GlobalSequenceDate|Global Seq Date|3523|3|null
36.4393 + GlobalSequence|Global Sequence|3524|4|null
36.4394 + Reference3|Reference 3|3525|0|20
36.4395 +***|CorpTransfer|Corporate Transfer
36.4396 + GlobalSequence|Global Sequence|28401|4|null
36.4397 + GlobalSequenceDate|Global Seq Date|28402|3|null
36.4398 + Type|Type|28403|5|3
36.4399 + Status|Status|28404|5|2
36.4400 + FromAccount|From Account|28405|0|10
36.4401 + FromIDType|From ID Type|28406|5|1
36.4402 + FromID|From ID|28407|0|2
36.4403 + FromGLAccount|From GL Account|28408|0|14
36.4404 + ToAccount|To Account|28409|0|10
36.4405 + ToIDType|To ID Type|28410|5|1
36.4406 + ToID|To ID|28411|0|2
36.4407 + ToGLAccount|To GL Account|28412|0|14
36.4408 + Amount|Amount|28413|7|null
36.4409 + PrincipalAmount|Principal Amount|28414|7|null
36.4410 + InterestAmount|Interest Amount|28415|7|null
36.4411 + Memo:1|Memo|28416|0|40
36.4412 + Memo:2|Memo|28416|0|40
36.4413 + EffectiveDate|Effective Date|28417|3|null
36.4414 + PostDate|Post Date|28418|3|null
36.4415 + EnteredDate|Entered Date|28419|3|null
36.4416 + EnteredTime|Entered Time|28420|5|2359
36.4417 + EnteredByMemberUser|Entered By Member User|28421|4|null
36.4418 + EnteredByCorporateUser|Entered By Corporate User|28422|4|null
36.4419 + EnteredValidationMethod|Entered Validation Method|28423|0|40
36.4420 + NoticedAtE|Notice Date|28424|3|null
36.4421 + CompletedDate|Completed Date|28425|3|null
36.4422 + CompletedTime|Completed Time|28426|5|2359
36.4423 + CompletedByUser|Completed By User|28427|4|null
36.4424 + CompletedReason|Completed Reason|28428|0|40
36.4425 + NotificationsTatus|Notification Status|28429|5|2
36.4426 + NotificationMethod|Notification Method|28430|5|2
36.4427 + NotificationDate|Notification Date|28431|3|null
36.4428 + NotificationTime|Notification Time|28432|5|2359
36.4429 + NotificationUser|Notification User|28433|0|40
36.4430 + OriginatorStatementDesc|Originator Statement Desc|28434|0|40
36.4431 + ReceiversTateMenTdesc|Receiver Statement Desc|28435|0|40
36.4432 + OriginatorTransactionsEQ|Originator Transaction Seq|28436|4|null
36.4433 + ReceiverTransactionsEQ|Receiver Transaction Seq|28437|4|null
36.4434 +***|Dealer|Dealer
36.4435 + Number|Dealer Number|28501|0|10
36.4436 + Name|Dealer Name|28502|0|40
36.4437 + VendorNumber|Vendor Number|28503|0|10
36.4438 + Achtrancodeout|Outgoing ACH Transaction Code|28504|5|99
36.4439 + OpenDate|Open Date|28505|3|null
36.4440 + CloseDate|Close Date|28506|3|null
36.4441 + LastFMDate|Last FM Date|28507|3|null
36.4442 + FMLastPurgeDate|FM History Purge Date|28508|3|null
36.4443 + StatementDate|Statement Date|28509|3|null
36.4444 + StatementPrevDate|Statement Previous Date|28510|3|null
36.4445 + StatementGroup|Statement Group|28511|5|99
36.4446 + PaymentMethod|Payment Method|28512|5|2
36.4447 + Balance|Balance|28513|7|null
36.4448 + LastPurgeDate|Last Purge Date|28514|3|null
36.4449 + LastDisbursalDate|Last Disbursal Date|28515|3|null
36.4450 + SubType|Sub Type|28517|5|99
36.4451 + TotalReserveAccrual|Total Reserve Accrual|28518|7|null
36.4452 + Buckets:1|Pmt Bucket 01|28519|7|null
36.4453 + Buckets:2|Pmt Bucket 02|28519|7|null
36.4454 + Buckets:3|Pmt Bucket 03|28519|7|null
36.4455 + Buckets:4|Pmt Bucket 04|28519|7|null
36.4456 + Buckets:5|Pmt Bucket 05|28519|7|null
36.4457 + Buckets:6|Pmt Bucket 06|28519|7|null
36.4458 + Buckets:7|Pmt Bucket 07|28519|7|null
36.4459 + Buckets:8|Pmt Bucket 08|28519|7|null
36.4460 + Buckets:9|Pmt Bucket 09|28519|7|null
36.4461 + Buckets:10|Pmt Bucket 10|28519|7|null
36.4462 + Buckets:11|Pmt Bucket 11|28519|7|null
36.4463 + Buckets:12|Pmt Bucket 12|28519|7|null
36.4464 + PaymentsLastYear|Payments Last Year|28520|7|null
36.4465 + PaymentsLTD|Payments Life to Date|28521|7|null
36.4466 + LegacyCode|Legacy Code|28522|0|10
36.4467 + Branch|Branch|28523|5|9999
36.4468 + ReservePaymentMethod|Reserve Payment Method|28524|5|2
36.4469 + UserChar1|User Char 01|28525|0|40
36.4470 + UserChar2|User Char 02|28526|0|40
36.4471 + UserChar3|User Char 03|28527|0|40
36.4472 + UserAmount1|User Amount 01|28528|7|null
36.4473 + UserAmount2|User Amount 02|28529|7|null
36.4474 + UserNumber1|User Number 01|28530|4|null
36.4475 + UserRate1|User Rate 01|28531|2|null
36.4476 + UserDate1|User Date 01|28532|3|null
36.4477 + UserCode1|User Code 01|28533|5|9999
36.4478 + BeginningBalLS|Beginning Bal Last Stmt|28535|7|null
36.4479 + UpFrontRSRVLS|Upfront Rsrv Last Stmt|28536|7|null
36.4480 + ChargeBackLS|Chargeback Last Stmt|28537|7|null
36.4481 + FeesLS|Fees Last Stmt|28538|7|null
36.4482 + AdjLS|Adjustments Last Stmt|28539|7|null
36.4483 + HoldBackLS|Holdback Last Stmt|28540|7|null
36.4484 + PaymentsYTD|Payments YTD|28541|7|null
36.4485 + VendorName|Vendor Name|28560|0|40
36.4486 + VendorEmail|Vendor E-mail|28561|0|40
36.4487 + VendorContact|Vendor Contact Person|28562|0|40
36.4488 + VendorPhone|Vendor Phone|28563|0|12
36.4489 + VendorPhoneExT|Vendor Phone Ext|28564|0|6
36.4490 + VendorContact2phone|Vendor Contact 2 Phone|28565|0|12
36.4491 + VendorAltEmail|Vendor Alt E-Mail Address|28566|0|40
36.4492 + VendorContact2|Vendor Contact 2 Person|28567|0|40
36.4493 + VendorContact2description|Vendor Contact 2 Description|28568|0|20
36.4494 + VendorContact2phoneext|Vendor Contact 2 Phone Ext|28569|0|6
36.4495 + VendorsTreeT|Vendor Street|28570|0|30
36.4496 + VendorCity|Vendor City|28571|0|20
36.4497 + VendorsTate|Vendor State|28572|0|10
36.4498 + VendorZipCode|Vendor Zipcode|28573|0|10
36.4499 + VendorContactDescription|Vendor Contact Description|28574|0|20
36.4500 + VendorExtraAddress|Vendor Extra Address|28575|0|30
36.4501 + LoanCount|Number of Loans|28576|4|null
36.4502 + ChgOffLoanCount|Num of Charged Off Loans|28577|4|null
36.4503 + TotalLoanBalance|Total Loan Balance|28578|7|null
36.4504 + TotalUpFrontReserve|Total Up-Front Reserve|28579|7|null
36.4505 + TotalHoldBackAmount|Total Holdback Amount|28580|7|null
36.4506 + TotalEarnedReserve|Total Earned Reserve|28581|7|null
36.4507 + TotalUnearnedReserve|Total Unearned Reserve|28582|7|null
36.4508 + ChargeOffBalance|Charge Off Balance|28583|7|null
36.4509 + ChargeBackBalance|Chargeback Balance|28584|7|null
36.4510 + LoanBalanceSLP|New Loan Balance SLP|28585|7|null
36.4511 + UnpaidUpFrontReserve|Unpaid Up-Front Reserve|28586|7|null
36.4512 + LoanCountsLp|Number of Loans SLP|28587|4|null
36.4513 + DealerTotalBalance|Dealer Total Balance|28588|7|null
36.4514 + DealerAvailBalance|Dealer Available Balance|28589|7|null
36.4515 + Active|Active|28590|8|null
36.4516 + VendorFax|Vendor Fax|28591|0|12
36.4517 + ***|Dealer Tracking|Dealer Tracking
36.4518 + Type|Tracking Type|6895|5|99
36.4519 + ID|ID|6802|0|2
36.4520 + IDType|ID Type|6803|5|4
36.4521 + UserID|User ID|6804|5|4999
36.4522 + FMLastDate|Last FM Date|6805|3|null
36.4523 + CreationDate|Creation Date|6806|3|null
36.4524 + CreationTime|Creation Time|6807|5|2359
36.4525 + ExpireDate|Expiration Date|6808|3|null
36.4526 + TrackingCode|Tracking Code|6809|5|99
36.4527 + UserNumber1|User Number 01|6810|4|null
36.4528 + UserNumber2|User Number 02|6811|4|null
36.4529 + UserNumber3|User Number 03|6812|4|null
36.4530 + UserNumber4|User Number 04|6813|4|null
36.4531 + UserNumber5|User Number 05|6814|4|null
36.4532 + UserNumber6|User Number 06|6815|4|null
36.4533 + UserNumber7|User Number 07|6816|4|null
36.4534 + UserNumber8|User Number 08|6817|4|null
36.4535 + UserNumber9|User Number 09|6818|4|null
36.4536 + UserNumber10|User Number 10|6819|4|null
36.4537 + UserChar1|User Char 01|6820|0|40
36.4538 + UserChar2|User Char 02|6821|0|40
36.4539 + UserChar3|User Char 03|6822|0|40
36.4540 + UserChar4|User Char 04|6823|0|40
36.4541 + UserChar5|User Char 05|6824|0|40
36.4542 + UserChar6|User Char 06|6825|0|40
36.4543 + UserChar7|User Char 07|6826|0|40
36.4544 + UserChar8|User Char 08|6827|0|40
36.4545 + UserChar9|User Char 09|6828|0|40
36.4546 + UserChar10|User Char 10|6829|0|40
36.4547 + UserAmount1|User Amount 01|6830|7|null
36.4548 + UserAmount2|User Amount 02|6831|7|null
36.4549 + UserAmount3|User Amount 03|6832|7|null
36.4550 + UserAmount4|User Amount 04|6833|7|null
36.4551 + UserAmount5|User Amount 05|6834|7|null
36.4552 + UserAmount6|User Amount 06|6835|7|null
36.4553 + UserAmount7|User Amount 07|6836|7|null
36.4554 + UserAmount8|User Amount 08|6837|7|null
36.4555 + UserAmount9|User Amount 09|6838|7|null
36.4556 + UserAmount10|User Amount 10|6839|7|null
36.4557 + UserCode1|User Code 01|6840|5|9999
36.4558 + UserCode2|User Code 02|6841|5|9999
36.4559 + UserCode3|User Code 03|6842|5|9999
36.4560 + UserCode4|User Code 04|6843|5|9999
36.4561 + UserCode5|User Code 05|6844|5|9999
36.4562 + UserCode6|User Code 06|6845|5|9999
36.4563 + UserCode7|User Code 07|6846|5|9999
36.4564 + UserCode8|User Code 08|6847|5|9999
36.4565 + UserCode9|User Code 09|6848|5|9999
36.4566 + UserCode10|User Code 10|6849|5|9999
36.4567 + UserDate1|User Date 01|6850|3|null
36.4568 + UserDate2|User Date 02|6851|3|null
36.4569 + UserDate3|User Date 03|6852|3|null
36.4570 + UserDate4|User Date 04|6853|3|null
36.4571 + UserDate5|User Date 05|6854|3|null
36.4572 + UserDate6|User Date 06|6855|3|null
36.4573 + UserDate7|User Date 07|6856|3|null
36.4574 + UserDate8|User Date 08|6857|3|null
36.4575 + UserDate9|User Date 09|6858|3|null
36.4576 + UserDate10|User Date 10|6859|3|null
36.4577 + UserRate1|User Rate 01|6860|2|null
36.4578 + UserRate2|User Rate 02|6861|2|null
36.4579 + UserRate3|User Rate 03|6862|2|null
36.4580 + UserRate4|User Rate 04|6863|2|null
36.4581 + UserRate5|User Rate 05|6864|2|null
36.4582 + UserRate6|User Rate 06|6865|2|null
36.4583 + UserRate7|User Rate 07|6866|2|null
36.4584 + UserRate8|User Rate 08|6867|2|null
36.4585 + UserRate9|User Rate 09|6868|2|null
36.4586 + UserRate10|User Rate 10|6869|2|null
36.4587 + Locator|Locator|6870|4|null
36.4588 + UserNumber11|User Number 11|6871|4|null
36.4589 + UserNumber12|User Number 12|6872|4|null
36.4590 + UserNumber13|User Number 13|6873|4|null
36.4591 + UserNumber14|User Number 14|6874|4|null
36.4592 + UserNumber15|User Number 15|6875|4|null
36.4593 + UserNumber16|User Number 16|6876|4|null
36.4594 + UserNumber17|User Number 17|6877|4|null
36.4595 + UserNumber18|User Number 18|6878|4|null
36.4596 + UserNumber19|User Number 19|6879|4|null
36.4597 + UserNumber20|User Number 20|6880|4|null
36.4598 + UserChar11|User Char 11|6881|0|40
36.4599 + UserChar12|User Char 12|6882|0|40
36.4600 + UserChar13|User Char 13|6883|0|40
36.4601 + UserChar14|User Char 14|6884|0|40
36.4602 + UserChar15|User Char 15|6885|0|40
36.4603 + UserChar16|User Char 16|6886|0|40
36.4604 + UserChar17|User Char 17|6887|0|40
36.4605 + UserChar18|User Char 18|6888|0|40
36.4606 + UserChar19|User Char 19|6889|0|40
36.4607 + UserChar20|User Char 20|9400|0|40
36.4608 + UserAmount11|User Amount 11|9401|7|null
36.4609 + UserAmount12|User Amount 12|9402|7|null
36.4610 + UserAmount13|User Amount 13|9403|7|null
36.4611 + UserAmount14|User Amount 14|9404|7|null
36.4612 + UserAmount15|User Amount 15|9405|7|null
36.4613 + UserAmount16|User Amount 16|9406|7|null
36.4614 + UserAmount17|User Amount 17|9407|7|null
36.4615 + UserAmount18|User Amount 18|9408|7|null
36.4616 + UserAmount19|User Amount 19|9409|7|null
36.4617 + UserAmount20|User Amount 20|9410|7|null
36.4618 + UserCode11|User Code 11|9411|5|9999
36.4619 + UserCode12|User Code 12|9412|5|9999
36.4620 + UserCode13|User Code 13|9413|5|9999
36.4621 + UserCode14|User Code 14|9414|5|9999
36.4622 + UserCode15|User Code 15|9415|5|9999
36.4623 + UserCode16|User Code 16|9416|5|9999
36.4624 + UserCode17|User Code 17|9417|5|9999
36.4625 + UserCode18|User Code 18|9418|5|9999
36.4626 + UserCode19|User Code 19|9419|5|9999
36.4627 + UserCode20|User Code 20|9420|5|9999
36.4628 + UserDate11|User Date 11|9421|3|null
36.4629 + UserDate12|User Date 12|9422|3|null
36.4630 + UserDate13|User Date 13|9423|3|null
36.4631 + UserDate14|User Date 14|9424|3|null
36.4632 + UserDate15|User Date 15|9425|3|null
36.4633 + UserDate16|User Date 16|9426|3|null
36.4634 + UserDate17|User Date 17|9427|3|null
36.4635 + UserDate18|User Date 18|9428|3|null
36.4636 + UserDate19|User Date 19|9429|3|null
36.4637 + UserDate20|User Date 20|9430|3|null
36.4638 + UserRate11|User Rate 11|9431|2|null
36.4639 + UserRate12|User Rate 12|9432|2|null
36.4640 + UserRate13|User Rate 13|9433|2|null
36.4641 + UserRate14|User Rate 14|9434|2|null
36.4642 + UserRate15|User Rate 15|9435|2|null
36.4643 + UserRate16|User Rate 16|9436|2|null
36.4644 + UserRate17|User Rate 17|9437|2|null
36.4645 + UserRate18|User Rate 18|9438|2|null
36.4646 + UserRate19|User Rate 19|9439|2|null
36.4647 + UserRate20|User Rate 20|9440|2|null
36.4648 + ***|Comment|Comment
36.4649 + Type|Comment Type|29701|5|99
36.4650 + EffectiveDate|Effective Date|29702|3|null
36.4651 + ExpirationDate|Expiration Date|29703|3|null
36.4652 + Comment|Comment|29704|0|40
36.4653 + Locator|Locator|29705|4|null
36.4654 + ***|ReservePlan|Reserve Plan
36.4655 + ID|Reserve Plan ID|29501|0|2
36.4656 + Type|Type|29502|5|99
36.4657 + OpenDate|Open Date|29503|3|null
36.4658 + CloseDate|Close Date|29504|3|null
36.4659 + TranPurgeDate|Tran Purge Date|29505|3|null
36.4660 + Description|Description|29506|0|30
36.4661 + LastFMDate|Last FM Date|29507|3|null
36.4662 + UpFrontReserveOption|Up-Front Reserve Option|29508|5|2
36.4663 + UpFrontReservePercent|Up-Front Reserve Percent|29509|2|null
36.4664 + HoldBackPercent|Holdback Percent|29510|2|null
36.4665 + UpFrontReserveAmt|Up-Front Reserve Amount|29511|7|null
36.4666 + HoldBackAmount|Holdback Amount|29512|7|null
36.4667 + EffectiveDate|Effective Date|29513|3|null
36.4668 + ExpirationDate|Expiration Date|29514|3|null
36.4669 + ChargeOffDays|No. of Charge Off Days|29515|5|9999
36.4670 + ChargeBackCoopTion|Chargeback Rsrv Chrg Off Opt|29516|5|2
36.4671 + ChargeOffPmtS|No. of Charge Off Pmts|29517|5|9999
36.4672 + LoanCount|No. of Loans|29518|4|null
36.4673 + ChargeOffLoanCount|No. of Charge Off Loans|29519|4|null
36.4674 + EarlyPayoffDays|No. of Early Pay Off Days|29520|5|9999
36.4675 + EarlyPayoffPmtS|No. of Early Pay Off Pmts|29521|5|9999
36.4676 + ChargeBackPOOption|Chargeback Rsv Pay Off Opt|29522|5|2
36.4677 + Recourse|Recourse|29523|5|1
36.4678 + TotalLoanBalance|Total Loan Balance|29524|7|null
36.4679 + TotalUpFrontReserve|Total Up Front Reserve|29525|7|null
36.4680 + HoldBackBalance|Holdback Balance|29526|7|null
36.4681 + TotalEarnedReserve|Total Earned Reserve|29527|7|null
36.4682 + ChargeOffBalance|Charge Off Balance|29528|7|null
36.4683 + ChargeBackBalance|Chargeback Balance|29529|7|null
36.4684 + TotalAmOrTreserve|Total Amortized Reserve|29530|7|null
36.4685 + UserChar1|User Char 01|29531|0|40
36.4686 + UserChar2|User Char 02|29532|0|40
36.4687 + UserChar3|User Char 03|29533|0|40
36.4688 + UserAmount1|User Amount 01|29534|7|null
36.4689 + UserAmount2|User Amount 02|29535|7|null
36.4690 + UserAmount3|User Amount 03|29536|7|null
36.4691 + UserNumber1|User Number 01|29537|4|null
36.4692 + UserNumber2|User Number 02|29538|4|null
36.4693 + UserDate1|User Date 01|29539|3|null
36.4694 + UserCode1|User Code 01|29540|5|9999
36.4695 + UserRate1|User Rate 01|29541|2|null
36.4696 + LoanCountsLp|Number of Loans SLP|29542|4|null
36.4697 + MemberFee|Member Fee|29543|5|1
36.4698 + UnpaidUpFrontReserve|Unpaid Up-Front Reserve|29544|7|null
36.4699 + LoanBalanceSLP|New Loan Balance SLP|29546|7|null
36.4700 + Balance|Balance|29547|7|null
36.4701 + MbrFeeAmount|Member Fee Amount|29548|7|null
36.4702 + PlanAvailBalance|Available Balance|29580|7|null
36.4703 + Active|Active|29581|8|null
36.4704 + TotalUnearnedReserve|Total Unearned Reserve|29545|7|null
36.4705 + ***|ReservePlan Loan|Reserve Plan Loan
36.4706 + AccountNumber|Account Number|29601|0|10
36.4707 + LoanID|Loan ID|29602|0|2
36.4708 + LastFMDate|Last FM Date|29603|3|null
36.4709 + OpenDate|Open Date|29604|3|null
36.4710 + CloseDate|Close Date|29605|3|null
36.4711 + Locator|Locator|29606|4|null
36.4712 + VIN|VIN|29607|0|20
36.4713 + Name|Name|29650|0|16
36.4714 + DealerNumber|Dealer Number|29651|0|10
36.4715 + PlantYpe|Reserve Plan Type|29652|5|9999
36.4716 + PlanDescription|Reserve Plan Description|29653|0|30
36.4717 + PlanID|Reserve Plan ID|29654|0|4
36.4718 + LoanAmount|Loan Amount|29655|7|null
36.4719 + UpFrontReserve|Up-Front Reserve|29656|7|null
36.4720 + UpFrontReservePaidDate|Up-Front Reserve Paid Date|29657|3|null
36.4721 + UpFrontPercent|Dealer Up-Front Percent|29658|2|null
36.4722 + EarnedReserve|Earned Reserve|29659|7|null
36.4723 + AmortizedReserve|Amortized Reserve|29660|7|null
36.4724 + MemberFee|Member Fee|29661|5|1
36.4725 + ContractRate|Contract Rate|29662|2|null
36.4726 + BuyRate|Buy Rate|29663|2|null
36.4727 + Spread|Spread|29664|2|null
36.4728 + EffectiveRate|Effective Rate|29665|2|null
36.4729 + ChargeBack|Chargeback|29666|7|null
36.4730 + OriginalLoanDate|Original Loan Date|29667|3|null
36.4731 + Unamortizedreserve|Unamortized Reserve|29668|7|null
36.4732 + UnearnedReserve|Unearned Reserve|29669|7|null
36.4733 + ***|ReservePlan Tracking|Reserve Plan Tracking
36.4734 + Type|Tracking Type|6895|5|99
36.4735 + ID|ID|6802|0|2
36.4736 + IDType|ID Type|6803|5|4
36.4737 + UserID|User ID|6804|5|4999
36.4738 + FMLastDate|Last FM Date|6805|3|null
36.4739 + CreationDate|Creation Date|6806|3|null
36.4740 + CreationTime|Creation Time|6807|5|2359
36.4741 + ExpireDate|Expiration Date|6808|3|null
36.4742 + TrackingCode|Tracking Code|6809|5|99
36.4743 + UserNumber1|User Number 01|6810|4|null
36.4744 + UserNumber2|User Number 02|6811|4|null
36.4745 + UserNumber3|User Number 03|6812|4|null
36.4746 + UserNumber4|User Number 04|6813|4|null
36.4747 + UserNumber5|User Number 05|6814|4|null
36.4748 + UserNumber6|User Number 06|6815|4|null
36.4749 + UserNumber7|User Number 07|6816|4|null
36.4750 + UserNumber8|User Number 08|6817|4|null
36.4751 + UserNumber9|User Number 09|6818|4|null
36.4752 + UserNumber10|User Number 10|6819|4|null
36.4753 + UserChar1|User Char 01|6820|0|40
36.4754 + UserChar2|User Char 02|6821|0|40
36.4755 + UserChar3|User Char 03|6822|0|40
36.4756 + UserChar4|User Char 04|6823|0|40
36.4757 + UserChar5|User Char 05|6824|0|40
36.4758 + UserChar6|User Char 06|6825|0|40
36.4759 + UserChar7|User Char 07|6826|0|40
36.4760 + UserChar8|User Char 08|6827|0|40
36.4761 + UserChar9|User Char 09|6828|0|40
36.4762 + UserChar10|User Char 10|6829|0|40
36.4763 + UserAmount1|User Amount 01|6830|7|null
36.4764 + UserAmount2|User Amount 02|6831|7|null
36.4765 + UserAmount3|User Amount 03|6832|7|null
36.4766 + UserAmount4|User Amount 04|6833|7|null
36.4767 + UserAmount5|User Amount 05|6834|7|null
36.4768 + UserAmount6|User Amount 06|6835|7|null
36.4769 + UserAmount7|User Amount 07|6836|7|null
36.4770 + UserAmount8|User Amount 08|6837|7|null
36.4771 + UserAmount9|User Amount 09|6838|7|null
36.4772 + UserAmount10|User Amount 10|6839|7|null
36.4773 + UserCode1|User Code 01|6840|5|9999
36.4774 + UserCode2|User Code 02|6841|5|9999
36.4775 + UserCode3|User Code 03|6842|5|9999
36.4776 + UserCode4|User Code 04|6843|5|9999
36.4777 + UserCode5|User Code 05|6844|5|9999
36.4778 + UserCode6|User Code 06|6845|5|9999
36.4779 + UserCode7|User Code 07|6846|5|9999
36.4780 + UserCode8|User Code 08|6847|5|9999
36.4781 + UserCode9|User Code 09|6848|5|9999
36.4782 + UserCode10|User Code 10|6849|5|9999
36.4783 + UserDate1|User Date 01|6850|3|null
36.4784 + UserDate2|User Date 02|6851|3|null
36.4785 + UserDate3|User Date 03|6852|3|null
36.4786 + UserDate4|User Date 04|6853|3|null
36.4787 + UserDate5|User Date 05|6854|3|null
36.4788 + UserDate6|User Date 06|6855|3|null
36.4789 + UserDate7|User Date 07|6856|3|null
36.4790 + UserDate8|User Date 08|6857|3|null
36.4791 + UserDate9|User Date 09|6858|3|null
36.4792 + UserDate10|User Date 10|6859|3|null
36.4793 + UserRate1|User Rate 01|6860|2|null
36.4794 + UserRate2|User Rate 02|6861|2|null
36.4795 + UserRate3|User Rate 03|6862|2|null
36.4796 + UserRate4|User Rate 04|6863|2|null
36.4797 + UserRate5|User Rate 05|6864|2|null
36.4798 + UserRate6|User Rate 06|6865|2|null
36.4799 + UserRate7|User Rate 07|6866|2|null
36.4800 + UserRate8|User Rate 08|6867|2|null
36.4801 + UserRate9|User Rate 09|6868|2|null
36.4802 + UserRate10|User Rate 10|6869|2|null
36.4803 + Locator|Locator|6870|4|null
36.4804 + UserNumber11|User Number 11|6871|4|null
36.4805 + UserNumber12|User Number 12|6872|4|null
36.4806 + UserNumber13|User Number 13|6873|4|null
36.4807 + UserNumber14|User Number 14|6874|4|null
36.4808 + UserNumber15|User Number 15|6875|4|null
36.4809 + UserNumber16|User Number 16|6876|4|null
36.4810 + UserNumber17|User Number 17|6877|4|null
36.4811 + UserNumber18|User Number 18|6878|4|null
36.4812 + UserNumber19|User Number 19|6879|4|null
36.4813 + UserNumber20|User Number 20|6880|4|null