You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 9 Next »
Subsystem | Description |
gmPL | The Great Migrations Programming Language is a simple command language used to issue instructions to gmBasic and to enter declarations into the symbol table. It is not a procedural programming language, it is an xml-style scripting language. It is not compiled; rather its commands are executed directly. |
gmIL | The Great Migrations Intermediate Language is a reverse-polish representation. Source languages are compiled into gmIL. That representation is then analyzed, executed, and modified to be expressible in a target language. Then it can be authored in a target language. |
gmSL | The Great Migrations Scripting Language is a procedural language for use with the migration, authoring, and reporting facilities of gmBasic. It uses Java-style syntax and is embedded into the gmPL scripts. It is compiled into the same gmIL as used for the other source languages and is executed directly by gmBasic. |
gmNI | The Great Migrations Native Interface makes writing native methods in C possible to handle situations when a migration cannot be written entirely in the languages supported by the standard capabilities of the translation tool. Native code methods, loaded into runtime libraries, can handle events triggered during the translation process. These native methods have direct access to all of the information being managed during the translation via an extensive set of service classes. The actual methods used are the same as those referenced through gmSL, though their reference syntax and the form of some of the arguments differ to accommodate the differences in C and gmSL. |
gmCL | The Great Migrations Cand Line tools are a set of ANSI-C programs that perform the various independent operations needed by gmBasic. These include pBasic which executes gmPL scripts, Deploy which facilitates the deployment and creation of bundled text files, and Document which produces an HTML based manual using a symplified set of XML input files. |
Dim SQL As String Dim SP As rdoQuery Dim Results As rdoResultset SQL = "select * from departments where category_id = ?" Set SP = MainForm.EnablerRDOCN.CreateQuery("QueryDept", SQL) SP.rdoParameters(0).value = CategoryID; Set Results = SP.OpenResultset(rdOpenForwardOnly) While Not Results.EOF DeptID = Results.rdoColumns("department_id").value Results.MoveNext Wend SP.Close
string SQL = "select * from departments order by department_id"; DbCommand SP = DatabaseConnection().CreateCommand(); SP.CommandText = SQL; SP.Parameters[0].Value = CategoryID; using (DbDataReader Results = SP.ExecuteReader()) { while(Results.Read()) { DeptID = Convert.ToInt32(Results["department_id"]); } }
Public Sub connectDB() Set conn = New rdoConnection Dim dbs As String _ dbs = _ "UID=stocks_login;PWD=password;Database=stocks;" _ & "Server=GMI-CS-01.gmi.local;Driver={SQL Server};" _ & "DSN='';" conn.Connect = dbs conn.EstablishConnection End Sub Public Sub execQuery() Dim SQL As String Dim SP As rdoQuery Dim Results As rdoResultset Dim f As String SQL = "select * from accounts where accountID < ? and FirstName like ?" Set SP = conn.CreateQuery("QueryAcct", SQL) SP.rdoParameters(0).Value = "5005" SP.rdoParameters(1).Value = "Test%" Set Results = SP.OpenResultset(rdOpenForwardOnly) While Not Results.EOF f = Results.rdoColumns("FirstName").Value writeLog f f = Results.rdoColumns("eMail").Value writeLog f Results.MoveNext Wend SP.Close End Sub
public static void connectDB() { conn = new System.Data.SqlClient.SqlConnection(); string dbs = ""; dbs = "UID=stocks_login;PWD=password;Database=stocks;Server=GMI-CS-01.gmi.local;"; conn.ConnectionString = dbs; conn.Open(); } public static void execQuery() { string SQL = ""; System.Data.SqlClient.SqlCommand SP = null; string f = ""; SQL = "select * from accounts where accountID < @0 and FirstName like @1"; (SP = conn.CreateCommand()).CommandText = SQL; SP.Parameters.Add(new System.Data.SqlClient.SqlParameter("@0", null)).Value = "5005"; SP.Parameters.Add(new System.Data.SqlClient.SqlParameter("@1", null)).Value = "Test%"; using (System.Data.SqlClient.SqlDataReader Results = SP.ExecuteReader()) { while (Results.Read()) { f = Convert.ToString(Results["FirstName"]); writeLog(f); f = Convert.ToString(Results["eMail"]); writeLog(f); } } }
<gmBasic> <Storage Action="Create" Identifier="rdotran" /> <Select DevEnv="VS2010" Dialect="csh" BuildFile="Local" /> <Select DeployLocation="C:\gmSpec\COM\RDOToNET\gmProj\deploy\RDOToNET_mgd_csh" /> <Select Library="C:\gmSpec\COM\RDOToNET\gmProj\interop" /> <select Target="C:\fkgtest\RDOToNET\Refactor" /> <Select Local="C:\gmProj\RDOToNET\idf\FromCode" /> <Select System="C:\gmProj\RDOToNET\idf\FromIdl" /> <Compile Project="C:\gmSrc\RDOToNET\RDOToNET.vbp" /> <Analyse /> <Output Status="New" Filename="rdotran.bnd" /> <Author /> <Storage Action="Close" /> </gmBasic>
public static void connectDB() { conn = new RDO.rdoConnection(); string dbs = ""; dbs = "UID=stocks_login;PWD=password;Database=stocks;" + "Server=GMI-CS-01.gmi.local;Driver={SQL Server};" + "DSN='';"; conn.Connect = dbs; conn.EstablishConnection(null,null,null); } public static void execQuery() { string SQL = ""; RDO.rdoQuery SP = null; RDO.rdoResultset Results = null; string f = ""; SQL = "select * from accounts where accountID < ? and FirstName like ?"; SP = conn.CreateQuery("QueryAcct",SQL); SP.rdoParameters[0].Value = "5005"; SP.rdoParameters[1].Value = "Test%"; Results = SP.OpenResultset(RDO.ResultsetTypeConstants.rdOpenForwardOnly,null,null); while (!Results.EOF) { f = Convert.ToString(Results.rdoColumns["FirstName"].Value); writeLog(f); f = Convert.ToString(Results.rdoColumns["eMail"].Value); writeLog(f); Results.MoveNext(); } SP.Close(); }
<library id="MSRDO20.DLL" name="RDO" migName="System.Data.SqlClient" .. > <class id="_rdoConnection" ..> <property id="Connect" type="String" status="InOut" migName="ConnectionString" /> <method id="EstablishConnection" type="Void" migPattern="%1d.Open()\c"> <method id="CreateQuery" type="rdoQuery" migName="CreateCommand"> <class id="rdoPreparedStatement" <property id="rdoParameters" type="rdoParameters" status="Out" migName="Parameters" /> <method id="OpenResultset" type="rdoResultset" migPattern="%1d.ExecuteReader()" > <coclass id="rdoConnection" migName="SqlConnection"> <coclass id="rdoResultset" creatable="off" migName="SqlDataReader"> <coclass id="rdoQuery" migName="SqlCommand">
public static void connectDB() { conn = new System.Data.SqlClient.SqlConnection(); string dbs = ""; dbs = "UID=stocks_login;PWD=password;Database=stocks;" + "Server=GMI-CS-01.gmi.local;Driver={SQL Server};" + "DSN='';"; conn.ConnectionString = dbs; conn.Open(); } public static void execQuery() { string SQL = ""; System.Data.SqlClient.SqlCommand SP = null; System.Data.SqlClient.SqlDataReader Results = null; string f = ""; SQL = "select * from accounts where accountID < ? and FirstName like ?"; SP = conn.CreateCommand("QueryAcct",SQL); SP.Parameters[0].Value = "5005"; SP.Parameters[1].Value = "Test%"; Results = SP.ExecuteReader(); while (!Results.EOF) { f = Convert.ToString(Results.rdoColumns["FirstName"].Value); writeLog(f); f = Convert.ToString(Results.rdoColumns["eMail"].Value); writeLog(f); Results.MoveNext(); } SP.Close(); }
Current: dbs = "UID=stocks_login;PWD=password;Database=stocks;" + "Server=GMI-CS-01.gmi.local;Driver={SQL Server};" + "DSN='';"; Target : dbs = "UID=stocks_login;PWD=password;Database=stocks;Server=GMI-CS-01.gmi.local;";
conn.ConnectionString = dbs;
72 | | | | NEW | 43 conn.Connect = dbs 75 | | | | LEV | Nest0 77 | 1.77 | 1.77 | String | LDA | Variable:dbs:88066 82 | 1.77 | | | ARG | String 84 | 2.84 | 1.84 | RDO.rdoConnection | LDA | Variable:conn:87690 89 | 3.89 | 1.84 | String | LLP | Component:Connect:50673 94 | 2.84 | 1.84 | String | MEM | Child 96 | | | | STR | AssignValue
| 50673 | 39973 | Lib_Property | RDO._rdoConnection.Connect
<Refactor id="RDO" event="rdoHandlers" > <gmSL NameSpace="rdoHandlers" class="Transform" Source="msrdo20Transform.gmsl" /> </Refactor>
int __rdoConnection_Connect(int subRoot,int iStart,int iRefer) { System.LogMessage("RDO#01: sub<" + Symbol.FullName(subRoot,-1) + "> iStart=" + iStart + " iRefer=" + iRefer); return 0; }
Loading reference:[Language.std] C:\gmNI\IDF\Language.std.xml Processing file: C:\gmSrc\RDOToNET\RDOToNET.vbp Loading reference:[stdole2.tlb] C:\gmProj\RDOToNET\idf\FromIdl\stdole2.tlb.xml Loading reference:[MSRDO20.DLL] C:\fkgtest\RDOToNET\Refactor\MSRDO20.DLL.xml Reprocessing file: Transform.cls Reprocessing file: Transform.cls Reprocessing file: C:\gmSrc\RDOToNET\modRDOToNET.bas Reprocessing file: C:\gmSrc\RDOToNET\modRDOToNET.bas RDO#01: sub<RDOToNET.connectDB> iStart=77 iRefer=89
2 | 85026 | 81920 | ClassFile | Transform.cls 3 | 85249 | 85026 | Subprogram | rdoHandlers.Transform.__rdoConnection_Connect 4 | 85337 | 85249 | Variable | rdoHandlers.Transform.__rdoConnection_Connect.subRoot 4 | 85418 | 85249 | Variable | rdoHandlers.Transform.__rdoConnection_Connect.iStart 4 | 85463 | 85249 | Variable | rdoHandlers.Transform.__rdoConnection_Connect.iRefer 2 | 85128 | 81920 | Vb_Name.85026 | rdoHandlers.Transform
Text Associated with Scanned Code: RecNo | Rai | nRec | Content ----- | --- | ---- | ------- 1 | 0 | 65 | int __rdoConnection_Connect(int subRoot,int iStart,int iRefer){ 2 | 0 | 110 | System.LogMessage("RDO#01: sub<" + Symbol.FullName(subRoot,-1) + "> iStart=" + iStart + " iRefer=" + iRefer) 3 | 0 | 10 | return 0 4 | 0 | 3 | }
Actual C# Codeblock Associated with __rdoConnection_Connect: Offset | Sl.Start | Ql.Start | Quantity type | Opcode | Operation support information ------ | -------- | -------- | ------------- | ------ | ----------------------------- 0 | | | | LEV | Nest0 2 | 1.2 | 1.2 | String | LSC | 12:RDO#01: sub< 7 | 1.2 | 1.2 | String | LEV | Nest1 9 | 2.9 | 2.9 | Integer | LDA | Variable:subRoot:85337 ... 59 | 2.9 | | | SCM | System_LogMessage 61 | 2.9 | | | LEV | Nest0 63 | 3.63 | 1.63 | Integer | LIC | 0 66 | 3.63 | | | ARG | Integer 68 | | | | EXI | Function
Detailed Description of Lib_Property RDO._rdoConnection.ConnectionString with root address 50673: Property | Content -------- | ------- Migrate Status | Referenced Migrate Flags | HasCodeHandler Transformation | 85249 BinaryType | String:8
int __rdoConnection_Connect(int subRoot,int iStart,int iRefer) { tCodeBlock codptr; int nCode; int opcd; int subcd; int icode; int iEnd; int localVar; int iAssign; string connect; int iPos; int semi; int nDelete; int addr;
codptr = Opcode.GetCode(); nCode = Opcode.GetLength(); opcd = Opcode.GetOperation(codptr,iStart,localVar); if(opcd != OPC.LDA) return 0; icode = iRefer + sizeof(OPC.LLP); opcd = Opcode.GetOperation(codptr,icode,subcd); if(opcd != OPC.MEM) return 0; icode = icode + sizeof(OPC.MEM); opcd = Opcode.GetOperation(codptr,icode,subcd); if(opcd != OPC.STR) return 0;
89 | 3.89 | 1.84 | String | LLP | Component:Connect:50673 94 | 2.84 | 1.84 | String | MEM | Child 96 | | | | STR | AssignValue
iAssign = RefactorCode_FindAssign(localVar,iStart); if(iAssign == 0) return 0;
iEnd = Opcode.FindArgumentEnd(codptr,iAssign,nCode); connect = Opcode.GetString(iAssign,iEnd); if(!connect) return 0;
37 | | | | LEV | Nest0 39 | 1.39 | 1.39 | String | LSC | 46:UID=stocks_login;PWD=password;Database=stocks; 44 | 2.44 | 2.44 | String | LSC | 47:Server=GMI-CS-01.gmi.local;Driver={SQL Server}; 49 | 1.39 | 1.39 | String | CAT | String 51 | 2.51 | 2.51 | String | LSC | 7:DSN=''; 56 | 1.39 | 1.39 | String | CAT | String 58 | 1.39 | | | ARG | String
iPos = Character.FindFirst(connect,0,"Driver="); if(iPos) { iPos = iPos - 1; semi = Character.FindFirst(connect,iPos,";"); if(semi) { connect = Character.Remove(connect,iPos,semi); } } iPos = Character.FindFirst(connect,0,"DSN="); if(iPos) { iPos = iPos - 1; semi = Character.FindFirst(connect,iPos,";"); if(semi) { connect = Character.Remove(connect,iPos,semi); } }
nDelete = RefactorCode_ReplaceAssign(iAssign,connect); iRefer = iRefer - nDelete; return iRefer; }
int RefactorCode_FindAssign(int varRoot,int iEnd) { tCodeBlock codptr; int lastLev0; int icode; int addr; int opcd; int subcd; codptr = Opcode.GetCode(); lastLev0 = 0; for(icode = 0; icode >= 0; icode = Opcode.GetNext(codptr,icode,iEnd)) { opcd = Opcode.GetOperation(codptr,icode,subcd); if(opcd == OPC.LEV && subcd == 0) lastLev0 = icode; else if(opcd == OPC.LDA && subcd == varRoot) { opcd = Opcode.GetOperation(codptr,icode+sizeof(OPC.LDA),subcd); if(opcd == OPC.STR) return lastLev0; } } return 0; }
int RefactorCode_ReplaceAssign(int iAssign, string replacement) { tCodeBlock codptr; int nCode; int iEnd; int nDelete; int addr; codptr = Opcode.GetCode(); nCode = Opcode.GetLength(); iEnd = Opcode.FindArgumentEnd(codptr,iAssign,nCode); iAssign = iAssign + sizeof(OPC.LEV); nDelete = iEnd - iAssign - sizeof(OPC.LSC) - sizeof(OPC.ARG); if(nDelete > 0) { nCode = Opcode.DeleteCode(iAssign,nCode,nDelete); Opcode.SetLength(nCode); } addr = Store.String(replacement); Opcode.SetOperation(codptr,iAssign,OPC.LSC,addr); return nDelete; }
Comparing files rdotran.bnd and RDOTRAN.SAV ***** rdotran.bnd dbs = "UID=stocks_login;PWD=password;Database=stocks;Server=GMI-CS-01.gmi.local;"; ***** RDOTRAN.SAV dbs = "UID=stocks_login;PWD=password;Database=stocks;" + "Server=GMI-CS-01.gmi.local;Driver={SQL Server};" + "DSN='';"; *****
Current: SQL = "select * from accounts where accountID < ? and FirstName like ?"; Target : SQL = "select * from accounts where accountID < @0 and FirstName like @1";
Set SP = conn.CreateQuery("QueryAcct", SQL)
int __rdoConnection_CreateQuery(int subRoot,int iStart,int iRefer) { tCodeBlock codptr; int nCode; int opcd; int subcd; int icode; int sqlString; int sqlVar; string query; int iAssign; int index; int iPos; int lPos; int nDelete; int createCommand; int iEnd;
codptr = Opcode.GetCode(); nCode = Opcode.GetLength(); icode = iRefer; opcd = Opcode.GetOperation(codptr,icode,subcd); if(opcd != OPC.LLP) return 0; icode = icode + sizeof(OPC.LLP); opcd = Opcode.GetOperation(codptr,icode,subcd); if(opcd != OPC.MEM) return 0; icode = icode + sizeof(OPC.MEM); opcd = Opcode.GetOperation(codptr,icode,subcd); if(opcd != OPC.LEV) return 0; sqlString = Opcode.FindArgumentEnd(codptr,icode,nCode); opcd = Opcode.GetOperation(codptr,sqlString,subcd); if(opcd != OPC.LEV) return 0; sqlString = sqlString + sizeof(OPC.LEV); opcd = Opcode.GetOperation(codptr,sqlString,sqlVar); if(opcd != OPC.LDA) return 0; sqlString = sqlString+sizeof(OPC.LDA); opcd = Opcode.GetOperation(codptr,sqlString,subcd); if(opcd != OPC.ARG) return 0; sqlString = sqlString+sizeof(OPC.ARG);
iAssign = RefactorCode_FindAssign(sqlVar,iRefer); if(iAssign == 0) return 0;
iEnd = Opcode.FindArgumentEnd(codptr,iAssign,nCode); query = Opcode.GetString(iAssign,iEnd); if(!query) return 0;
if(iAssign) { iPos = 0; for(index = 0; index < 10; index = index + 1) { lPos = Character.FindFirst(query,iPos,"?"); if(!lPos) break; iPos = iPos + lPos - 1; query = Character.Remove(query,iPos,1); query = Character.Insert(query,iPos,"@" + index); } if(iPos != 0) { nDelete = RefactorCode_ReplaceAssign(iAssign,query); iRefer = iRefer - nDelete; sqlString = sqlString - nDelete; } } return iRefer; }
Comparing files rdotran.bnd and RDOTRAN.SAV ***** rdotran.bnd SQL = "select * from accounts where accountID < @0 and FirstName like @1"; ***** RDOTRAN.SAV SQL = "select * from accounts where accountID < ? and FirstName like ?"; *****
Current: SP = conn.CreateCommand("QueryAcct",SQL); Target : (SP = conn.CreateCommand()).CommandText = SQL;
<migclass id="DotNet"> <method id="CreateCommand" type="void" migPattern="(%1d = %2d()).CommandText = %4d\c"> <argument id="conn" type="Object" status="ByVal" /> <argument id="Name" type="String" status="ByVal"/> <argument id="SqlString" type="Variant" status="ByVal"/> </method> </migClass>
iEnd = sqlString; opcd = Opcode.GetOperation(codptr,iEnd,subcd); if(opcd != OPC.CUF) return 0; iEnd = iEnd + sizeof(OPC.CUF); opcd = Opcode.GetOperation(codptr,iEnd,subcd); if(opcd != OPC.REF) return 0; iEnd = iEnd + sizeof(OPC.REF); opcd = Opcode.GetOperation(codptr,iEnd,subcd); if(opcd != OPC.ARG) return 0; iEnd = iEnd + sizeof(OPC.ARG); opcd = Opcode.GetOperation(codptr,iEnd,subcd); if(opcd != OPC.CMD) return 0; iEnd = iEnd + sizeof(OPC.CMD); nDelete = iEnd - sqlString - sizeof(OPC.PAT); createCommand = Symbol.FindIdentifier("RDO.DotNet.CreateCommand"); nCode = Opcode.DeleteCode(sqlString,nCode,nDelete); Opcode.SetLength(nCode); Opcode.SetOperation(codptr,sqlString,OPC.PAT,createCommand);
***** rdotran.bnd (SP = conn.CreateCommand()).CommandText = SQL; ***** RDOTRAN.SAV SP = conn.CreateCommand("QueryAcct",SQL); *****
Current: SP.Parameters[0].Value = "5005"; Target : SP.Parameters.Add(new System.Data.SqlClient.SqlParameter("@0", null)).Value = "5005";
<Method id="Parameters" type="object" migPattern="%1d.Add(new System.Data.SqlClient.SqlParameter(\S@%2d\S, null))" > <argument id="index" type="Integer" status="ByVal" /> </Method>
int rdoPreparedStatement_rdoParameters(int subRoot,int icode,int iRefer) { int nCode; tCodeBlock codptr; int iEnd; int opcd; int subc; int parameters; nCode = Opcode.GetLength(); codptr = Opcode.GetCode(); iEnd = Opcode.FindArgumentEnd(codptr,iRefer+7,nCode); opcd = Opcode.GetOperation(codptr,iEnd,subc); if(opcd != OPC.COL || subc != OPC.COL.Item) return 0; parameters = Symbol.FindIdentifier("RDO.DotNet.Parameters"); nCode = Opcode.ExpandCode(iEnd,nCode,sizeof(OPC.PAT) - sizeof(OPC.COL)); Opcode.SetLength(nCode); Opcode.SetOperation(codptr,iEnd,OPC.PAT,parameters); return iRefer; }
Comparing files rdotran.bnd and RDOTRAN.SAV ***** rdotran.bnd SP.Parameters.Add(new System.Data.SqlClient.SqlParameter("@0", null)).Value = "5005"; SP.Parameters.Add(new System.Data.SqlClient.SqlParameter("@1", null)).Value = "Test%"; ***** RDOTRAN.SAV SP.Parameters[0].Value = "5005"; SP.Parameters[1].Value = "Test%"; *****
System.Data.SqlClient.SqlDataReader Results = null; ... Results = SP.ExecuteReader();
using (System.Data.SqlClient.SqlDataReader Results = SP.ExecuteReader()) {
int rdoPreparedStatement_OpenResultset(int subRoot,int iStart,int iRefer) { tCodeBlock codptr; int nCode; int opcd; int subcd; int icode; int varRoot; tVariable varInfo;
codptr = Opcode.GetCode(); nCode = Opcode.GetLength(); icode = iRefer; opcd = Opcode.GetOperation(codptr,icode,subcd); if(opcd != OPC.REF) return 0; icode = icode + sizeof(OPC.REF); opcd = Opcode.GetOperation(codptr,icode,subcd); if(opcd != OPC.ARG) return 0; icode = icode + sizeof(OPC.ARG); opcd = Opcode.GetOperation(codptr,icode,subcd); if(opcd != OPC.CMD) return 0; opcd = Opcode.GetOperation(codptr,iStart,varRoot); if(opcd != OPC.LDA) return 0;
varInfo = Store.DeltaVector(varRoot); varInfo.DeadCode = True;
Opcode.SetOperation(codptr,icode,OPC.IFS,OPC.IFS.Using); nCode = Opcode.ExpandCode(icode,nCode,sizeof(OPC.TYV)); Opcode.SetLength(nCode); Opcode.SetOperation(codptr,icode,OPC.TYV,varRoot); return iRefer; }
Comparing files rdotran.bnd and RDOTRAN.SAV ***** rdotran.bnd using (System.Data.SqlClient.SqlDataReader Results = SP.ExecuteReader()) { while (!Results.EOF) .... ***** RDOTRAN.SAV Results = SP.ExecuteReader(); while (!Results.EOF) .. *****
AUTHOR WARNING#02: Indentation level not balanced old = 3 current = 4 in <RDOToNET.execQuery>
int rdoPreparedStatement_Close(int subRoot,int icode,int iRefer) { int nCode; tCodeBlock codptr; iRefer = Opcode.CommentOut(iRefer,OPC.CMT.Delete); iRefer = iRefer + sizeof(OPC.CMT); nCode = Opcode.GetLength(); codptr = Opcode.GetCode(); nCode = Opcode.ExpandCode(iRefer,nCode,sizeof(OPC.IFS)); Opcode.SetLength(nCode); Opcode.SetOperation(codptr,iRefer,OPC.IFS,OPC.IFS.EndUsing); return iRefer; }
***** rdotran.bnd } ***** RDOTRAN.SAV SP.Close(); *****
Current: while (!Results.EOF) Target : while (Results.Read())
<property id="EOF" type="Boolean" status="Out" migName="Read()"/>
266 | 2.266 | 1.261 | Boolean | LLP | Component:EOF:59440 271 | 1.261 | 1.261 | Boolean | MEM | Child 273 | 1.261 | 1.261 | Boolean | NOT | Arithmetic
int __rdoResultset_EOF(int subRoot,int iStart,int iRefer) { int nCode; tCodeBlock codptr; int opcd; int subcd; int icode; nCode = Opcode.GetLength(); codptr = Opcode.GetCode(); icode = iRefer + sizeof(OPC.LLP); opcd = Opcode.GetOperation(codptr,icode,subcd); if(opcd != OPC.MEM) return 0; icode = icode + sizeof(OPC.MEM); opcd = Opcode.GetOperation(codptr,icode,subcd); if(opcd != OPC.NOT) return 0; nCode = Opcode.DeleteCode(icode,nCode,sizeof(OPC.NOT)); Opcode.SetLength(nCode); return iRefer; }
***** rdotran.bnd while (Results.Read()) ***** RDOTRAN.SAV while (!Results.EOF) *****
Current: f = Convert.ToString(Results.rdoColumns["FirstName"].Value); Target : f = Convert.ToString(Results["FirstName"]);
280 | | | | LEV | Nest0 282 | 1.282 | 1.282 | RDO.rdoResultset | LDA | Variable:Results:106065 287 | 2.287 | 1.282 | RDO.rdoColumns | LLP | Component:rdoColumns:57254 292 | 1.282 | 1.282 | RDO.rdoColumns | MEM | Child 294 | 1.282 | 1.282 | RDO.rdoColumns | LEV | Nest1 296 | 2.296 | 2.296 | String | LSC | 9:FirstName 301 | 2.296 | 1.282 | RDO.rdoColumns | ARG | String 303 | 1.282 | 1.282 | RDO.rdoColumn | COL | Item 305 | 2.305 | 1.282 | Variant | LLP | Component:Value:54311 310 | 1.282 | 1.282 | Variant | MEM | Child
int __rdoColumn_Value(int subRoot,int icode,int iRefer) { int nCode; tCodeBlock codptr; nCode = Opcode.GetLength(); codptr = Opcode.GetCode(); nCode = Opcode.DeleteCode(iRefer,nCode,sizeof(OPC.LLP) + sizeof(OPC.MEM)); Opcode.SetLength(nCode); return iRefer; } int __rdoResultset_rdoColumns(int subRoot,int icode,int iRefer) { int nCode; tCodeBlock codptr; nCode = Opcode.GetLength(); codptr = Opcode.GetCode(); nCode = Opcode.DeleteCode(iRefer,nCode,sizeof(OPC.LLP) + sizeof(OPC.MEM)); Opcode.SetLength(nCode); return iRefer; }
Comparing files rdotran.bnd and RDOTRAN.SAV ***** rdotran.bnd f = Convert.ToString(Results["FirstName"]); writeLog(f); f = Convert.ToString(Results["eMail"]); ***** RDOTRAN.SAV f = Convert.ToString(Results.rdoColumns["FirstName"].Value); writeLog(f); f = Convert.ToString(Results.rdoColumns["eMail"].Value); *****
int __rdoResultset_MoveNext(int subRoot,int icode,int iRefer) { iRefer = Opcode.CommentOut(iRefer,OPC.CMT.Delete); return iRefer; }