Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
This action is responding to the amendment filed on 7/9/2025.
Claims 1-6, 8-11, and 13-20 are pending in the application.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1-5, 8-11, 13, 15-20 are rejected under 35 U.S.C. 103 as being unpatentable over Apte et al. (US20180357055, cited, hereafter Apte) in view of Le et al. (US20230113783, hereafter Le).
1. A method for code conversion, the method comprising: receiving a source code of an application, the source code being associated with a first programming language (Apte, see at least [0008], receiving the computer program having the first source code wherein the first programming language has a hierarchy structure with a plurality of levels wherein a top-level element includes at least a sub-element);
processing the source code according to a conversion plan to generate an output code associated with a second programming language, the conversion plan including (Apte, see at least [0008], language migration of a computer program having first source code in a first, procedural-type programming language to second source code in a second, object-oriented programming language…providing a conversion user interface to a user configured to present a listing (e.g., of certain ones of the sub-elements) based on the identified sub-elements and to receive an input from the user indicating the selection of sub-elements from the listing that are to be converted into methods in the second, object-oriented programming language)
a set of rules for converting names of variables (Apte, see at least [0061] the program variables identified in the COBOL files are also given logical names. Table 3 below shows COBOL variables identified and/or extracted from a COBOL copybook associated along with its new Java variable name as well as other metadata, which may also be stored in an EXCEL sheet for further processing; [0144] The paragraphs are named as per the mapping in the Logical Excel Sheet uploaded during the inventory upload (see Table 4). These logical names are as provided following Java standards. The main/first paragraph of the COBOL file is given the same name as the logical name of the COBOL program or the same as the Java package name; [0068]),
a set of rules for converting types of variables (Apte, see at least [0054], This will help to change the variable names into business equivalent names while migrating; [0068], the field type and the field attribute. The map parser also extracts the function key labels; [0119] the wizard 140 may be still further configured to generalize the comparable lines one step further by removing the variable names in the line of code with its variable type and its size. For example, assume a comparison between two statements—two COMPUTE statements and two variables each. These variables might have different name(s), but what makes them a match is if the variables are of same datatype and have the same length in its declaration in the COBOL file),
a set of rewrite rules, (Apte, see at least [0066], The UI wizard 104 is further configured to allow for user interaction and/or input in order to edit and/or augment the converted UI in order to enrich the user interface; [0075] In addition, the UI editor includes drag and drop features to facilitate adding and/or modifying the HTML elements. …During screen consolidation, the wizard 104 helps to add new/modify the rules and the same gets incorporated into the program objects),
one or more repeatable edits (Apte, see at least [0051], an interactive user interface (UI) editor wizard module 92 enables the user to make modifications to the initial screen conversion (white screen) so as to enrich the white screen with enhanced features such as new labels, controls, modifications to existing controls, etc. (e.g., to the HTML/Angular JS user interface); [0074], an online editor that allows the user to edit the various screen elements; [0032], code plural wizard-based automated tools that can be used multiple times to optimize and standardize the application code and the database; note that as the editor allows a user to edit the conversion, iterative conversion update is enabled), and
a set of templates defining an architecture of the output code (Apte, see at least [0051], While parsing the application(s) to be migrated, various levels of metadata information are generated and then stored in a database for future reference (i.e., a database associated with L2C system 20a—not the database being used by the legacy application that is being converted or the target platform). The database modeling wizard module 90 facilitates remodeling of the existing database model to support the new target platform architecture; [0104] FIG. 8 is a simplified screen display 136 showing a plurality of additional features (wizards) that may be selected by the user in respect of re-architecting the legacy source code. Screen display 136 shows a conversion settings option 138, a de-duplication wizard 140, a microservices wizard 142, and a parallel-processing wizard 144. It should be understood that additional wizards may be included in the automated re-architecture wizard page; Note that the template module converts base (e.g. legacy) languages to different languages (e.g. OOP) into a target architecture);
iteratively updating the conversation plan to obtain an updated conversion plan, the updated conversation plan including one or more of the following: an updated rule for converting names of variables, a further rule for converting names of variables, an updated rule for converting types of variables, a further rule for converting types of variables, an updated rewrite rule, a further rewrite rule, an updated repeatable edit, a further repeatable edit, an updated template defining the architecture of the output code, and a further template defining the architecture of the output code (Apte, see at least [0032], code plural wizard-based automated tools that can be used multiple times to optimize and standardize the application code and the database; (iii) the resulting code of the migration will be object oriented and microservices-based code; [0061]; [0144]; [0068]; [0076]; [0054], This will help to change the variable names into business equivalent names while migrating; [0119] the wizard 140 may be still further configured to generalize the comparable lines one step further by removing the variable names in the line of code with its variable type and its size; [0066]; [0075] In addition, the UI editor includes drag and drop features to facilitate adding and/or modifying the HTML elements. …During screen consolidation, the wizard 104 helps to add new/modify the rules and the same gets incorporated into the program objects; [0051], an interactive user interface (UI) editor wizard module 92 enables the user to make modifications to the initial screen conversion (white screen) so as to enrich the white screen with enhanced features such as new labels, controls, modifications to existing controls, etc. (e.g., to the HTML/Angular JS user interface); [0074], an online editor that allows the user to edit the various screen elements; [0032], code plural wizard-based automated tools that can be used multiple times to optimize and standardize the application code and the database; [0089] The user can change/remove the existing constraints and/or create new constraints while optimizing the target schema; [0035]; note that as the editor allows a user to edit the conversion, iterative conversion update is enabled; [0104]; Note that the template module converts base (e.g. legacy) languages to different languages (e.g. OOP) into a target architecture);
(B) processing the source code according to the updated conversion plan to generate an updated output code (Apte, see at least [0074], The UI editor screen display 110 includes various tools 116 to enrich the screen display as available through HTML. For example, the user can add new labels, new controls, modify existing controls, and the like. …The user can save the edited (i.e., enriched) user interface by clicking the save button 118; [0075] In addition, the UI editor includes drag and drop features to facilitate adding and/or modifying the HTML elements. The consolidation of one or more screen into a single screen is also possible. While consolidating the screens, the parser intelligently captures the screen-program mapping and stores this mapping in the database. The consolidation of program related to the screens happens automatically and appropriate output is generated. During screen consolidation, the wizard 104 helps to add new/modify the rules and the same gets incorporated into the program object. The UI wizard 104 also has set of CSS file templates to enrich the screen. The predefined CSS template will have header, side tree menu and a footer. The user (e.g., customer enterprise IT) can define the CSS as per their standard and integrate the CSS using the wizard 104. The parser logic is built in such a way that whenever there is a change in the UI, the corresponding code changes will get reflected in all the associated components; [0076], the model provide a functional interface to allow the user to get information out of the model or to modify the information that is in the model …The view allows user interaction or user manipulation/modification. The controller updates the model as needed when the user interacts with the view; Note that the conversion user interface wizard provided to a user is configured or modified and converts a first code into a second code).
Apte teaches the source code in the first programming language and the output code in the second programming language (Apte, see at least, abstract, converts a computer program in a procedural programming language to an object oriented programming language; [0007], migrate legacy languages (e.g., COBOL, Natural, Assembler, PL1, CAGEN, Visual Basic (VB)) and databases (e.g., IMS, DB2, ADABAS, VSAM) into microservices based object oriented language (e.g., Java, C#/.NET)).
Apte does not explicitly teach wherein a rewrite rule of the set of rewrite rules includes a first pattern in the source code in the first programming language, a second pattern in the output code in the second programming language, and a condition for replacing the first pattern with the second pattern, wherein the iteratively updating the conversion plan includes providing a user interface enabling a user to view and modify the first pattern, the second pattern, and the condition to obtain the further rewrite rule. Le teaches wherein a rewrite rule of the set of rewrite rules includes a first pattern in the source code in the first programming language, a second pattern in the output code in the second programming language, and a condition for replacing the first pattern with the second pattern, wherein the iteratively updating the conversion plan includes providing a user interface enabling a user to modify the first pattern, the second pattern, and the condition to obtain the further rewrite rule (Le, see at least [0130] The compiler framework 1303 has a well-defined interface and an extension capability, so that a developer can perform further extension based on the compiler framework… The platform migration IDE 13012 can present the migration process in a visualized manner, so that the code conversion tool 1302 is more friendly to the user; [0007] converting the to-be-converted syntax block according to a conversion rule provided by the rule library; and finally generating second source code (converted source code) that can run on a second platform; [0008] analyzing the to-be-converted syntax block to obtain a semantic condition of the to-be-converted syntax block; and selecting a matched conversion rule from the rule library based on the semantic condition, and modifying the to-be-converted syntax block, to obtain a converted syntax block; [0010] The inline assembly code syntax rule can be used to identify an inline assembly code syntax block that needs to be modified …The intrinsic header file conversion rule is used to convert the identified intrinsic header file syntax block; [0011] The code conversion experience is extracted and recorded by using the rule library, and subsequently the user or personnel who develops the code conversion device may iteratively update the code conversion experience, so that the code conversion (migration) experience can be systematically accumulated, and code conversion efficiency can be continuously improved; [0012] modifying the to-be-converted syntax block, to obtain a converted syntax block includes: identifying the built-in function syntax block based on the syntax structure of the built-in function syntax block… converts the built-in function syntax block under guidance of the rule library).
It would have been obvious for one having ordinary skill in the art before the effective filing date of the claimed invention to have combined Le’s user friendly conversion rule update with Apte’s code conversion to modify Apte’s system to combine the user friendly conversion rule update as taught by Le, with a reasonable expectation of success, since they are analogous art because they are from the same field of endeavor related to code conversion or development. Combining Le’s functionality with that of Apte results in a system that allows a user modification of a conversion rule. The modification would be obvious because one having ordinary skill in the art would be motivated to make this combination to enable a conversion rule modification by a user in a user friendly manner (Le, see at least [0130] The compiler framework 1303 has a well-defined interface and an extension capability, so that a developer can perform further extension based on the compiler framework… The platform migration IDE 13012 can present the migration process in a visualized manner, so that the code conversion tool 1302 is more friendly to the user; [0007] converting the to-be-converted syntax block according to a conversion rule provided by the rule library; and finally generating second source code (converted source code) that can run on a second platform; [0008] analyzing the to-be-converted syntax block to obtain a semantic condition of the to-be-converted syntax block; and selecting a matched conversion rule from the rule library based on the semantic condition, and modifying the to-be-converted syntax block, to obtain a converted syntax block; [0010] The inline assembly code syntax rule can be used to identify an inline assembly code syntax block that needs to be modified …The intrinsic header file conversion rule is used to convert the identified intrinsic header file syntax block; [0011] The code conversion experience is extracted and recorded by using the rule library, and subsequently the user or personnel who develops the code conversion device may iteratively update the code conversion experience, so that the code conversion (migration) experience can be systematically accumulated, and code conversion efficiency can be continuously improved; [0012] modifying the to-be-converted syntax block, to obtain a converted syntax block includes: identifying the built-in function syntax block based on the syntax structure of the built-in function syntax block… converts the built-in function syntax block under guidance of the rule library).
2. The method of claim 1, further comprising repeating the operations (A) and (B) at least one time (Apte, see at least [0032], code plural wizard-based automated tools that can be used multiple times to optimize and standardize the application code and the database; (iii) the resulting code of the migration will be object oriented and microservices-based code; [0111], This is performed as an iterative process in order to group the equivalence structure to form a cluster; [0051], an interactive user interface (UI) editor wizard module 92 enables the user to make modifications to the initial screen conversion (white screen) so as to enrich the white screen with enhanced features such as new labels, controls, modifications to existing controls, etc. (e.g., to the HTML/Angular JS user interface); [0074], an online editor that allows the user to edit the various screen elements; note that as the editor allows a user to edit the conversion, iterative conversion update is enabled).
3. The method of claim 1, wherein the updating the conversion plan includes providing a user interface allowing a user to modify the conversion plan (Apte, see at least [0074], The UI editor screen display 110 includes various tools 116 to enrich the screen display as available through HTML. For example, the user can add new labels, new controls, modify existing controls, and the like; [0075] During screen consolidation, the wizard 104 helps to add new/modify the rules and the same gets incorporated into the program object; [0076], the model provide a functional interface to allow the user to get information out of the model or to modify the information that is in the model …The view allows user interaction or user manipulation/modification. The controller updates the model as needed when the user interacts with the view).
4. The method of claim 1, further comprising prior to the updating the conversion plan: analyzing the conversion plan, the source code, and the output code to generate a report concerning a process of the generation of the output code and a result of the generation of the output code; and providing the report to a user (Apte, see at least [0046] generate an impact analysis of the migration of the legacy application(s). The inventory analysis module 80 also generates a duplicate code repository; Fig. 12-16 and associated texts, the user interface displaying information associated with code conversion is a report to a user concerning a process of the code conversion and result).
5. (Currently Amended) The method of claim 1, wherein the conversion plan includes a set of user-defined rules for matching a first piece of the source code to a predetermined pattern and replacing the first piece of the source code with a second piece of the updated output cod, the second piece having a higher level of abstraction than the first piece (Apte, see at least [0054] Initially, the parser scans through the entire application inventory and matches the pattern of the source code snippet to identify duplicate code portions. [0075] In addition, the UI editor includes drag and drop features to facilitate adding and/or modifying the HTML elements. …During screen consolidation, the wizard 104 helps to add new/modify the rules and the same gets incorporated into the program objects; [0051], an interactive user interface (UI) editor wizard module 92 enables the user to make modifications to the initial screen conversion (white screen) so as to enrich the white screen with enhanced features such as new labels, controls, modifications to existing controls, etc. (e.g., to the HTML/Angular JS user interface); [0074], an online editor that allows the user to edit the various screen elements; [0032], code plural wizard-based automated tools that can be used multiple times to optimize and standardize the application code and the database; [0089] The user can change/remove the existing constraints and/or create new constraints while optimizing the target schema; [0055]; [0085] The database wizard module 90 (FIGS. 3A-3B) provides this wizard 108 which is configured to (i) allow the user to migrate the source COBOL files from IMS to DB2 and VSAM to DB2 queries (if any); (ii) migrate IMS and VSAM schemas; and (iii) migrate DB2 schema to Oracle schema, if needed; [0087] In the database optimizing wizard, the COBOL files are identified that have the mainframe-based database access. These files are only processed to extract the metadata that relates to the conversion of the database calls from IMS/VSAM to Oracle compatible queries, for example. This data is saved in a table <projectName>ADJACENCY_TABLE with the following schema, as seen below in Table 9; [0092] This step involves the crucial part of data extraction, and is performed after the UI wizard 104, after selecting all the necessary source code changes that is required for this step i.e., the code elimination wizard 106 which eliminates code for conversion and after running the database optimizer wizard 108 where we use tools to convert the IMS and/or VSAM queries into COBOL or DB2 queries which are later converted into Oracle queries. The pre-processor module 88 in FIGS. 3A-3B is configured to perform the pre-processing step as described in greater detail below; Note that DB2 provides a higher-level and more user-friendly interface to access data than lower-level access methods of VSAM/IMS).
8. The method of claim 1, wherein the conversion plan includes a further rule for converting variables of a first type to variables of a second type, the first type being associated with the first programming language and the second type being associated with the second programming language (Apte, see at least [0054], This will help to change the variable names into business equivalent names while migrating; [0068] The metadata that is extracted includes without limitation the map name, the map set name, the field name, the label name, the field/label position, the field length, the field type and the field attribute. The map parser also extracts the function key labels; [0119] the wizard 140 may be still further configured to generalize the comparable lines one step further by removing the variable names in the line of code with its variable type and its size. For example, assume a comparison between two statements—two COMPUTE statements and two variables each. These variables might have different name(s), but what makes them a match is if the variables are of same datatype and have the same length in its declaration in the COBOL file).
9. The method of claim 1, wherein the conversion plan includes a further set of rules for converting variables lacking a type to variables with a specified type, the specified type being associated with the second programming language (Apte, see at least [0054], A tree-based data dictionary is also created to store all of the variable declaration(s) along with their type, length, relation between the variables (e.g., how group variable and elementary items are related). This metadata extraction improves the efficiency of the language migration parser while creating getter, setter and POJO (plain old java objects) classes for variable declaration. This will help to change the variable names into business equivalent names while migrating; [0008], the first programming language comprises COBOL, the second programming language comprises Java; Note that the data dictionary also stores COBOl’s variable that has no type to convert to Java representation as it stores all of variable declarations in COBOL).
10. The method of claim 1, wherein the conversion plan includes a catalog of source files of the application, the source files including the source code (Apte, see at least [0058] Each COBOL program file has a specific operation or follows a specific business process. In an embodiment, an initial step involves a subject matter expert (SME) who may assist in renaming the COBOL files into an understandable format; [0085] The database wizard module…to migrate the source COBOL files from IMS to DBs; [0087]).
11. The method of claim 1, wherein the conversion plan keeps track of a source of truth for each individual program associated with the source code (Apte, see at least [0127], The parser's intelligent algorithm keeps track of all the information and stores them for further processing by the L2C system 20a; [0086] While parsing application source code using the metadata parser, all the database and data access related information are stored in the metadata table (e.g., FIG. 4—VSAM Key Table); [0108] An initial process performed by the L2C system 20a is the identification of the duplicate code snippets from the entire application (source code) inventory and then to store such identifications in the de-duplicate table. In an embodiment, the duplicate code may be identified by performing different permutation and combination of code patterns that matches the source code inventory; [0051] The microservices wizard module 86 is configured to facilitate creation of services from the legacy source inventory and/or replace functionality being carried forward from the legacy application with enterprise-level microservices, which are assumed to already exist. While parsing the application(s) to be migrated, various levels of metadata information are generated and then stored in a database for future reference. Note that all information associated with the source and converted code are stored and tracked).
13. The method of claim 1, wherein the output code includes a utility for converting data associated with the source code to data associated with the output code (Apte, see at least [0048] The L2C system 20a is a wizard-based interactive tool, where the parser and converter 82 (e.g., in a base version thereof) converts one or more legacy languages (i.e., COBOL, NATURAL, PL1, CAGEN, ASSEMBLER, VB) to object-oriented Java and/or C#/.NET classes by slicing the monolithic procedural language programs into multiple-layered architecture ; [0092] This step involves the crucial part of data extraction, and is performed after the UI wizard 104, after selecting all the necessary source code changes that is required for this step i.e., the code elimination wizard 106 which eliminates code for conversion and after running the database optimizer wizard 108 where we use tools to convert the IMS and/or VSAM queries into COBOL or DB2 queries which are later converted into Oracle queries).
15. The method of claim 1, further comprising: receiving an indication that the source code has been modified to include a further functionality; and in response to the indication, repeating the operations (A) and (B), starting with the updated conversion plan, to enable the updated output code to include the further functionality of the source code (Apte, see at least [0075], The parser logic is built in such a way that whenever there is a change in the UI, the corresponding code changes will get reflected in all the associated component; [0092], after selecting all the necessary source code changes that is required for this step i.e., the code elimination wizard 106 which eliminates code for conversion and after running the database optimizer wizard 108 where we use tools to convert the IMS and/or VSAM queries into COBOL or DB2 queries which are later converted into Oracle queries; [0082], The wizard 106 is further configured to receive from the user the instruction to delete the line of code when the user selects (“clicks”) on the “Delete” button 130. Finally, the wizard 106 is configured to save the modified COBOL or COPYBOOK file when the user has completed the review and has selected (“click”) the “Done” button 132; [0074], The UI editor screen display 110 includes various tools 116 to enrich the screen display as available through HTML. For example, the user can add new labels, new controls, modify existing controls, and the like. …The user can save the edited (i.e., enriched) user interface by clicking the save button 118; [0075] In addition, the UI editor includes drag and drop features to facilitate adding and/or modifying the HTML elements. The consolidation of one or more screen into a single screen is also possible. While consolidating the screens, the parser intelligently captures the screen-program mapping and stores this mapping in the database. The consolidation of program related to the screens happens automatically and appropriate output is generated. During screen consolidation, the wizard 104 helps to add new/modify the rules and the same gets incorporated into the program object. The UI wizard 104 also has set of CSS file templates to enrich the screen. The predefined CSS template will have header, side tree menu and a footer. The user (e.g., customer enterprise IT) can define the CSS as per their standard and integrate the CSS using the wizard 104. The parser logic is built in such a way that whenever there is a change in the UI, the corresponding code changes will get reflected in all the associated components; [0076], the model provide a functional interface to allow the user to get information out of the model or to modify the information that is in the model …The view allows user interaction or user manipulation/modification. The controller updates the model as needed when the user interacts with the view; Note that the conversion user interface wizard provided to a user is configured or modified and converts a first code into a second code).
16. The method of claim 1, wherein the processing the source code includes generating an abstract syntax tree corresponding to the source code (Apte, see at least [0110] Generally, the deduplication parser is configured to compare two program objects and then identify the accurate characterization of the structural similarity of the code pattern and generate abstract syntax trees).
Per claims 17 and 18, they are the apparatus version of claims 1 and 2 and is rejected for the same reasons set forth in connection with the rejection of claims 1 and 2 above.
19. (Currently Amended) The computing apparatus of claim 17, wherein the conversion plan includes a catalog of source files of the application, the source files including the source code (Apte, see at least [0046] The inventory analysis module 80 also generates a duplicate code repository, as detailed herein, for use in a code de-duplication function. The inventory analysis module 80 may be configured to perform other functions such as parsing/scanning and generating certain metadata tables; [0051] While parsing the application(s) to be migrated, various levels of metadata information are generated and then stored in a database for future reference (i.e., a database associated with L2C system 20a—not the database being used by the legacy application that is being converted or the target platform); [0054] Metadata tables also store the program-level information, such as statements, operations performed on the variable, input validations, database and database access related statements, business validations, along with all the logical branch paths and maintainability index of the applications; Note that the database provides a collection of metadata/an organized inventory of data assets which is a catalog that stores definition of tables, views, indexes etc.).
Per claim 20, it is the medium version of claim 1, and is rejected for the same reasons set forth in connection with the rejection of claim 1 above.
Claim 6 is rejected under 35 U.S.C. 103 as being unpatentable over Apte in view of Le and Ramachandra et al. (US20220027367, hereafter Ramachandra).
Per claim 6:
Apte does not explicitly teach wherein the set of user-defined rules includes a further rule for replacing embedded loops in the source code with a single database request in the updated output code. Ramachandra teaches a further rule for replacing embedded loops in the source code with a single database request in the updated output code (Ramachandra, see at least [0095] A rewrite rule is described below, which can be used to rewrite the cursor loop (e.g., cursor 112) as a query Q′ that invokes Agg.sub.Δ (e.g., declarative SQL query with custom aggregate invocation 130 invokes custom aggregate function 128). [0098] (3) It is shown below that the rewritten query Q′ is semantically equivalent to the cursor loop CL(Q, Δ) (e.g., declarative SQL query with custom aggregate invocation 130 may be semantically equivalent to cursor 112). By steps (1), (2), and (3), the theorem follows; [0143]; [0150]; [0153] Once the query is rewritten (as described above), Aggify processor 108 replaces the loop (cursor 112) with an invocation to the rewritten query (e.g., declarative SQL query with custom aggregate 130) as shown in Code Examples 6 and 7 (above); [0155] The transformation is fairly non-intrusive. Apart from the removal of the loop, the rest of the lines of code remain the same, except for a few minor modifications. [0156] This transformation may render some variables as dead. Declarations of such variables can be then removed, thereby further simplifying the code. For instance, the variables @pCost and @sName in Code Example 1 (above) are no longer required, and are removed).
It would have been obvious for one having ordinary skill in the art before the effective filing date of the claimed invention to have combined Ramachandra’s rewrite rule for loops with Apte’s code conversion and Le’s user friendly conversion tool to modify Apte’s system to combine the loop optimization as taught by Ramachandra, with a reasonable expectation of success, since they are analogous art because they are from the same field of endeavor related to code conversion or development. Combining Ramachandra’s functionality with that of Apte and Le results in a system that rewrites loops. The modification would be obvious because one having ordinary skill in the art would be motivated to make this combination to replace loops for efficiency and simplicity (Ramachandra, see at least [0095] A rewrite rule is described below, which can be used to rewrite the cursor loop (e.g., cursor 112) as a query Q′ that invokes Agg.sub.Δ (e.g., declarative SQL query with custom aggregate invocation 130 invokes custom aggregate function 128). [0098] (3) It is shown below that the rewritten query Q′ is semantically equivalent to the cursor loop CL(Q, Δ) (e.g., declarative SQL query with custom aggregate invocation 130 may be semantically equivalent to cursor 112). By steps (1), (2), and (3), the theorem follows; [0143]; [0150]; [0153] Once the query is rewritten (as described above), Aggify processor 108 replaces the loop (cursor 112) with an invocation to the rewritten query (e.g., declarative SQL query with custom aggregate 130) as shown in Code Examples 6 and 7 (above); [0155] The transformation is fairly non-intrusive. Apart from the removal of the loop, the rest of the lines of code remain the same, except for a few minor modifications. [0156] This transformation may render some variables as dead. Declarations of such variables can be then removed, thereby further simplifying the code. For instance, the variables @pCost and @sName in Code Example 1 (above) are no longer required, and are removed).
Claim 14 is rejected under 35 U.S.C. 103 as being unpatentable over Apte in view of Le and Gass et al. (US 20200371760, hereafter Gass).
Per claim 14:
Apte further teaches performing (A) and (B) and replacing the source code with the updated output code as an updated source of truth (Apte, see at least [0074], The UI editor screen display 110 includes various tools 116 to enrich the screen display as available through HTML. For example, the user can add new labels, new controls, modify existing controls, and the like. …The user can save the edited (i.e., enriched) user interface by clicking the save button 118; [0075] In addition, the UI editor includes drag and drop features to facilitate adding and/or modifying the HTML elements. The consolidation of one or more screen into a single screen is also possible. While consolidating the screens, the parser intelligently captures the screen-program mapping and stores this mapping in the database. The consolidation of program related to the screens happens automatically and appropriate output is generated. During screen consolidation, the wizard 104 helps to add new/modify the rules and the same gets incorporated into the program object. The UI wizard 104 also has set of CSS file templates to enrich the screen. The predefined CSS template will have header, side tree menu and a footer. The user (e.g., customer enterprise IT) can define the CSS as per their standard and integrate the CSS using the wizard 104. The parser logic is built in such a way that whenever there is a change in the UI, the corresponding code changes will get reflected in all the associated components; [0076], the model provide a functional interface to allow the user to get information out of the model or to modify the information that is in the model …The view allows user interaction or user manipulation/modification. The controller updates the model as needed when the user interacts with the view; Note that the conversion user interface wizard provided to a user is configured or modified and converts a first code into a second code).
Apte does not explicitly teach repeating the operations until receiving a user input indicating that the updated output code is satisfactory. Gass teaches repeating the operations until receiving a user input indicating that the updated output code is satisfactory (Gass, see at least Fig. 3 and associated texts, At step 338, the analysis client may determine if the source installation has changed since the snapshot was taken. This could occur, for example, if analysis, transformation, and customization have taken a significant amount of time. If so, steps 304-338 may be repeated. In some embodiments, repeating steps 304-338 may comprise repeating steps 304-338 only on objects that have been modified in the source installation since the previous snapshot. These embodiments may reduce analysis, transformation, and customization time greatly, as only objects that have changed will need to be re-analyzed and transformed. In further embodiments, transformed objects that have not changed in the source installation may be stored on a storage element until the determination at step 338 indicates that no further changes have occurred in the source installation; Fig. 5 and associated texts, Steps 552-562 may be repeated iteratively for additional functional areas of the source installation, until all functional areas capable of automatic or semi-automatic upgrade have been upgraded). It would have been obvious for one having ordinary skill in the art before the effective filing date of the claimed invention to have combined Apte’s code conversion and Le’s user friendly conversion tool with Gass’ pre-determined iteration based on a user input to modify Apte’s system to combine the iteration as taught by Gass, with a reasonable expectation of success, since they are analogous art because they are from the same field of endeavor related to code conversion. Combining Gass’ functionality with that of Apte and Le results in a system that iterate the conversion process according to a user input. The modification would be obvious because one having ordinary skill in the art would be motivated to make this combination to repeat the conversion process until receiving a user input (Gass, see at least [0114] At step 324, analysis rules may be customized, and steps 318-324 repeated. For example, responsive to determining that upgrading may be too costly due to a large number of objects to be transformed, a user may modify analysis rules to exclude a portion of the objects. Steps 318-324 may be repeated in some embodiments until the user is satisfied with the outcome indicated by the generated report; Fig. 3 and associated texts, At step 338, the analysis client may determine if the source installation has changed since the snapshot was taken. This could occur, for example, if analysis, transformation, and customization have taken a significant amount of time. If so, steps 304-338 may be repeated. In some embodiments, repeating steps 304-338 may comprise repeating steps 304-338 only on objects that have been modified in the source installation since the previous snapshot. These embodiments may reduce analysis, transformation, and customization time greatly, as only objects that have changed will need to be re-analyzed and transformed. In further embodiments, transformed objects that have not changed in the source installation may be stored on a storage element until the determination at step 338 indicates that no further changes have occurred in the source installation; Fig. 5 and associated texts, Steps 552-562 may be repeated iteratively for additional functional areas of the source installation, until all functional areas capable of automatic or semi-automatic upgrade have been upgraded).
Examiner’s Note
The Examiner has pointed out particular references contained in the prior art of record within the body of this action for the convenience of the Applicant. Although the specified citations are representative of the teachings in the art and are applied to the specific limitations within the individual claim, other passages and figures may apply. Applicant, in preparing the response, should consider fully the entire reference as potentially teaching all or part of the claimed invention, as well as the context of the passage as taught by the prior art or disclosed by the Examiner.
Response to Arguments
Applicant's arguments filed 7/9/2025 have been fully considered but they are not persuasive.
The applicant states that Le describes conversion of these low-level code components (items (1), (2), and (3)) but does not teach conversion of an entire C program, whether to another version of C or to a different programming language. On the contrary, Le explicitly states that "the structure of the associated syntax block basically does not change" (Le, ¶ [0088]), which confirms that the original language is preserved and only modified at the instruction level. Accordingly, Le does not disclose a rewrite rule designed to replace code written in one programming language with code written in another programming language. In contrast, claim 1, as amended, recites: "a rewrite rule of the set of rewrite rules includes a first pattern in the source code in the first programming language, a second pattern in the output code in the second programming language, and a condition for replacing the first pattern with the second pattern".
In response, Le teaches a conversion rule associated with the to-be-converted syntax block, a converted syntax block from the to-be-converted block, and condition for the conversion (Le, see at least [0130] ; [0007] converting the to-be-converted syntax block according to a conversion rule provided by the rule library; and finally generating second source code (converted source code) that can run on a second platform; [0008]; [0010]; [0011]). Because Lee teaches obtaining first source code that can run on a first platform and converts the first source code to a second source code that can run on a second platform, applicant’s remark that Lee does not teach conversion of an entire C program, whether to another version of C or to a different programming language. Since, Lee teaches converted code that can run on the second platform, the conversion is considered conversion of an entire program with syntax block conversions.
The applicant further states that Le does not describe any interface or functionality in the IDE that provides access to the internal structure of the rule library or enables a user to inspect or modify the migration rules. Thus, Le does not disclose or suggest any mechanism by which a user can view or modify the structure or components of the rules. In particular, Le fails to disclose any user interface for viewing or modifying rewrite rule components such as the first pattern, second pattern, or condition.
In response, Lee teaches the cross-platform code conversion tool is an IDE which present the migration process in a visualized manner so that the code conversion tool is more friendly to the user ([0130]). The rule library is included in the source code of the migration tool for unified construction and iterative updated by developers to guide a code conversion tool to perform code conversion and continuous improvement of the conversion ([0084]; [0011]).
Conclusion
THIS ACTION IS MADE FINAL. Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to INSUN KANG whose telephone number is (571)272-3724. The examiner can normally be reached M-TR 8 -5pm; week 2: Tu-F 8-5pm.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Chat Do can be reached at 571-272-3721. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/INSUN KANG/Primary Examiner, Art Unit 2193