Tools for Magic xpa, uniPaaS and Magic eDeveloper          
Tools for Magic XPA, uniPaaS and Magic eDeveloper
Our Resellers:
Japan Indonesia




 
     


Magic Optimizer 7.0 for eDeveloper v9 is an advanced optimization and analyzing solution for eDeveloper v9 applications. Wide range of optimization checks and analytical features for an extended overview of every part of applications.
   


 

Overview

Advanced optimization and analyzing solution

Magic Optimizer 7.0 is an advanced optimization and analyzing solution for applications developed with Magic eDeveloper v9. It's powerful functionalities offer wide range of optimization checks and analytical features for an extended overview off every part of applications.

Use it to maximize performance and stability of applications. Use it's documentation and analytical features for a detailed overview of application.

The performance of Magic Optimizer is exceptional and it can process even the largest applications in the world.

Warnings will show you potential errors, developers' mistakes, errors in workflow and possible bugs, missed during development. Your application can improve on stability, data integrity and overall performance.



   "... it's a must tool for moving from development phase to production phase (Pro version)"
    Amos Kotter, Kotter Management & Information Systems



Magic Optimizer 6.0 identifies 15 Unused Objects.
Now you can search for 55 Warnings. They are grouped into 4 categories: Data Management (14), Work Flow (27), SQL (6) and Optimization (8).

Download

 
Magic Optimizer 7.0 Evaluation *  
Magic Optimizer 7.0

*Evaluation version has full access to all of the features, limited to 50 lines per result.

Functionalities

1. Unused Objects
2. Warnings
    Data Management
    Work Flow
    SQL
    Optimization

3. X-Reference
4. Logical Names
5. UML chart
6. Workflow chart
7. Phrase extractor
8. Application explorer

9. MagicDoc - Technical documentation
10. MLS Dictionary

11. Print & Export


1. Unused Objects

Magic Optimizer helps you identify all Unused Objects. By removing these objects, your application will be smaller, easier to maintain and your documentation will not include parts of application that is not used at all.
New developer who join your development team will have steeper learning curve since they won't be bothered with unused parts of application.

Magic Optimizer searches for these objects:
  - Models
  - Tables
      - Table Fields
      - Table Keys
  - Programs
      - Tasks
      - DB Tables
      - IO Files
      - Events
      - Handlers
      - Forms
      - Virtuals fields
      - Real fields
      - SQL Parameters
  - Help


2. Warnings

Data Management

     DMA001 : Table is opened in Write mode but isn't updated
     DMA002 : Table is opened in Read mode but data are written into it
     DMA003 : Table is opened with Cache = Yes definition
     DMA004 : Table is opened in Write mode with Cache = Yes definition
     DMA005 : Table is used as Main Table but no Key is used
     DMA006 : Batch Create with Main Table and No End Task Condition
     DMA007 : Link is used but no Key is defined
     DMA008 : Link Query, Inner Join or Left Outer Join is used but has no field with Locate definitions
     DMA009 : Link is used with Range definitions on fields
     DMA010 : First segment of Index in Link Query is not Located on
     DMA011 : Not ALL index segments use Locate expressions in Link Write
     DMA012 : Not ALL Unique index segments are used in Link Write/Create
     DMA013 : Table does not have a Unique index
     DMA014 : Range expression is used on Virtual field

Work Flow

     WFL001 : Locate all Operations which Conditions are set not to be executed
     WFL002 : IO File with Expressions containing variables selected in current task
     WFL003 : Mismatched Parameters in Call Tasks / Programs
     WFL004 : Functions should use Literal expressions
     WFL005 : Init expression is used on Real fields in other than Batch Create task
     WFL006 : Init expressions is used on Real fields in other than Link Write/Create
     WFL007 : Locate is used on Real fields in Batch task with Main Table
     WFL008 : Real fields are used in Task Prefix
     WFL009 : Variable should be passed by reference
     WFL010 : Must Input property is crossing with variable's condition
     WFL011 : Modifiable property is crossing with variable's condition
     WFL012 : Multiple consecutive Verify Warnings
     WFL013 : Verify Warning with Box display is used in Batch task
     WFL014 : Verify Error used in Batch task
     WFL015 : Variable should be passed by value
     WFL016 : Real fields are updated in Task Suffix
     WFL017 : Empty Programs are used
     WFL018 : Show all Empty Programs
     WFL019 : Locate all Links with Validation set
     WFL020 : Locate all Expressions with KBPUT function
     WFL021 : Tables are opened within Task that ends on Task Level
     WFL022 : V10 Migration : Online Tasks using Record Main for operations instead of Handlers
     WFL023 : Timer events and handlers with 00:00:00
     WFL024 : Fixed path is used
     WFL025 : Controls are out of form boundaries
     WFL026 : CallProg - Parameter count mismatch
     WFL027 : Detect virtuals as parameters

SQL

     SQL001 : SQL Task with Result Database same as Database
     SQL002 : SQL Task where Result Database differs from Database
     SQL003 : SQL Task where Result Database is Memory
     SQL004 : SQL Return Code is set but not used
     SQL005 : SQL Input Parameters are defined in same task
     SQL006 : Task uses SQL functions ( DbDel, DbRecs, DbName, ... )

Optimization

     OPT001 : Batch task with Open Task Window = Y but has a blank form
     OPT002 : Batch task has No Main Table and No End Task Condition
     OPT003 : Invalid operations are used in Batch tasks's Record Main
     OPT004 : Batch task should be set as Resident
     OPT005 : Table should be opened in higher task
     OPT006 : Recommended use of CndRange function
     OPT007 : Tasks with Sort, Range or Locate expressions
     OPT008 : Picture on Form differs from Variables Picture


Data Management

DMA001 : Table is opened in Write mode but isn't updated
Effect : Programs where Tables are opened in Write mode could lock records in Multi-user environment. Incorrect locking mechanism could result in unpredicted behaviour of the application's workflow.
Advise :Change the Table's Access mode to Read.

DMA002 : Table is opened in Read mode but data are written into it
Effect : If data need to be written into a Table it need to be opened in Write mode. If it's not than error message : 'Cannot modify Read Only table' will occur.
Advise : Change the Table's Access mode to Write.

DMA003 : Table is opened with Cache = Yes definition
Effect : Caching of data on client's workstation limits the network data transfer, but it also means that application is not always working with live data. Caching of look up tables makes sense, but for more advanced situations caching of data could result in unknown errors.
Advise : Change Table's Cache setting to No.

DMA004 : Table is opened in Write mode with Cache = Yes definition
Effect : Caching of data on client's workstation limits the network data transfer, but it also means that application is not always working with live data. Caching of look up tables makes sense, but for more advanced situations caching of data could result in unknown errors.
Advise : Change Table's Cache setting to No.

DMA005 : Table is used as Main Table but no Key is used
Effect : Opening a Table without using the Key means data will not be ordered by any order.
Advise : Use Keys when accessing Table's data.

DMA006 : Batch Create with Main Table and No End Task Condition
Effect : Batch Create tasks are used to create new records. If there's no condition set to stop the action, new records will be created until it's forced to stop by error.
Advise : Always use End Task Condition to specify when inserting new records should stop.

DMA007 : Link is used but no Key is defined
Effect : Depending in linked fields, usually using link without the key results into poor performance.
Advise : Use a key. If the key doesn't exist for specific purpose, create it. Even creating Virtual key will improve performance accessing data.

DMA008 : Link Query, Inner Join or Left Outer Join is used but has no field with Locate definitions
Effect : If not intentionally, without located fields Magic will always position itself on first record in the table.
Advise : Use locate expressions to link to specific record.

DMA009 : Link is used with Range definitions on fields
Effect : When implementing lots of code in RM, mistakes like setting Range columns instead of Locate columns
Advise : Move Range expressions into Locate fields

DMA010 : First segment of Index in Link Query is not Located on
Effect : In this case Magic won't use a specified Index. It could use similar index, if exists or it will use sequential reading of data
Advise : Add Locate values for first segment of index or use/create different/new index

DMA011 : Not ALL index segments use Locate expressions in Link Write
Effect : If Link is used to link to a specific record it will most likely fail, since records with same located values can exist, even if index is unique
Advise : Add missing segments

DMA012 : Not ALL Unique index segments are used in Link Write/Create
Effect : This will most likely sooner or later case Duplicate Index error
Advise : Fill in the missing Init expressions or add correct Update operations

DMA013 : Table does not have a Unique index
Effect : In most cases, tables should only have unique records. Otherwise we have problems with locating specific records for any data manipulation
Advise : Make sure you really don't need unique records in the table

DMA014 : Range expression is used on Virtual field
Effect : If a range was set to virtual by mistake instead of real field, the range won't work properly.
Advise : Make sure if range values were set correctly


Work Flow

WFL001 : Locate all Operations which Conditions are set not to be executed
Effect : Operations which are not executed are just overhead code which could have no impact on work flow, on the other hand they could be switched off for testing or debugging purpose and weren't switch back on
Advise : Make sure these operations are really not needed for correct work flow and delete them

WFL002 : IO File with Expressions containing variables selected in current task
Effect : IO File is constructed before current task's variables are defined so the IO File's name won't have correct name. Magic Optimizer skips all Parameters, since they could receive data before it IO File is constructed
Advise : Move necessary variable into upper task

WFL003 : Mismatched Parameters in Call Tasks / Programs
Effect : When migrating application from earlier version of Magic these mismatches could greatly affect work flow. For example if '' is passed to Logical variable in Magic 9.4 it will result into 'TRUE'LOG comparing to Magic 8, where it is excepted as 'FALSE'LOG
Advise : Change Parameters attributes. Much better is to change all parameters into Select Parameter and then Magic will identify all mismatched parameter with it's Checker (F8)

WFL004 : Functions should use Literal expressions
Effect : If literals, like FILE, PROG, KEY ..., are not used when referencing Magic's objects, as soon as you start moving objects up and down in repository application will not work correct anymore.
Advise : Make sure you use literals when needed

WFL005 : Init expression is used on Real fields in other than Batch Create task
Effect : Init expressions on Real fields are not applicable to Batch Create Task when these expressions are applied to new record values
Advise : Remove unnecessary init expressions or make sure these init expressions weren't meant for virtual variables

WFL006 : Init expressions is used on Real fields in other than Link Write/Create
Effect : Init expression on Real fields in Links are only applicable to Link Write or Link Create. Other Links disregard init expression
Advise : Remove init expressions or make sure you use correct Link operation

WFL007 : Locate is used on Real fields in Batch task with Main Table
Effect : Locate values are disregarded in Batch tasks with Main Table defined. Locate on Main Table fields are only applicable for Online tasks
Advise : Remove unnecessary Locate values on Main Table's fields

WFL008 : Real fields are used in Task Prefix
Effect : Task Prefix is issued before data view is parked on any record, so Real fields are empty
Advise : Make sure you have needed data for current task's Task Prefix in upper task or send them by parameters

WFL009 : Variable should be passed by reference
Effect : Variables could mistakenly be passed as value instead of reference.
Advise : If you receive data back from calling Program or Task, pass variable by reference

WFL010 : Must Input property is crossing with variable's condition
Effect : If variable has condition in RM set to NO or 'FALSE'LOG, expression used on Form is never executed
Advise : Change Condition or remove Must Input expression

WFL011 : Modifiable property is crossing with variable's condition
Effect : If variable has condition in RM set to NO or 'FALSE'LOG, expression used on Form is never executed
Advise : Change Condition or remove Modifiable expression

WFL012 : Multiple consecutive Verify Warnings
Effect : Consecutive Verify Warnings with same conditions will overlap one another
Advise : Add necessary conditions or remove unnecessary warnings

WFL013 : Verify Warning with Box display is used in Batch task
Effect : When Verify Warning with Box display is issued will pause batch task's execution until user will press Ok button. This could be left there from test or debugging process.
Advise : If not intentional, change to Status display or completely remove Verify operation

WFL014 : Verify Error used in Batch task
Effect : When Verify Error is executed in Batch task it will completely stop batch task
Advise : Change Verify Error into Warning or remove Verify operation

WFL015 : Variable should be passed by value
Effect : When variables are passed by reference, wrong assumption about returned values can occur
Advise : If you don't expect any returned values, pass variables by value and not by reference

WFL016 : Real fields are updated in Task Suffix
Effect : When execution of task comes into Task Suffix, no data changes will be written, because Record Suffix handles it
Advise : Move any data changes into Record Suffix

WFL017 : Empty Programs are used
Effect : Empty programs have no workflow functionality. When called, nothing will be executed or returned as value
Advise : Remove Call operations or any functionality related to empty programs

WFL018 : Show all Empty Programs
Effect : Sometimes empty programs can be confusing if they appear in the middle of proper programs.
Advise : Remove empty programs or mark them as empty

WFL019 : Locate all Links with Validation set
Effect : Link with Validation set can cause Applications' workflow to terminate unexpectedly
Advise : Make sure you use Validation with intention and not by mistake

WFL020 : Locate all Expressions with KBPUT function
Effect : Complicated KBPUT functions can sometimes cause unexpected behaviour
Advise : Use Raise Event operations where applicable

WFL021 : Tables are opened within Task that ends on Task Level
Effect : Task ends before any data is being read
Advise : Make sure task is designed correctly

WFL022 : V10 Migration : Online Tasks using Record Main for operations instead of Handlers
Effect : The concept of Record Main is gone in Magic eDeveloper 10
Advise : Implement Events and Handlers instead of operations in RM

WFL023 : Timer events and handlers with 00:00:00
Effect : Events will not be executed
Advise : Set time for execution

WFL024 : Fixed path is used
Effect : Fixed path might not be same on different installations
Advise : Implement logical path or dynamic path

WFL025 : Controls are out of form boundaries
Effect : Form can not show all the controls
Advise : Resize the form or re-arrange controls on the form

WFL026 : CallProg - Parameter count mismatch
Effect : Called program might not behave the same as if all needed parameters are sent
Advise : Make sure all mandatory parameters are passed to the program

WFL027 : Detect virtuals as parameters
Effect : If virtuals as parameters are not set as Select Parameter, this warning will collect all the information from calling programs and show how many parameters the program receives
Advise : Make sure all parameters are set as Select Parameter


SQL

SQL001, SQL002 and SQL003 are useful depending on application's need. Some of these warnings could be useful for some applications and some of them for others.

SQL001 : SQL Task with Result Database same as Database
Effect : In some situations Result Database to be same as Database is not advisable and could cause Magic to crash
Advise : Change Result Database into another database, perhaps Memory

SQL002 : SQL Task where Result Database differs from Database
Effect : Depending on usage, this could result in incorrect work flow
Advise : Change Result Database into another database

SQL003 : SQL Task where Result Database is Memory
Effect : In some situations this could be a mistake
Advise : Change Result Database to another database

SQL004 : SQL Return Code is set but not used
Effect : If Return Code was meant to be used, in this case work flow will be incorrect
Advise : Make sure Return Code is used for it's purpose or remove it

SQL005 : SQL Input Parameters are defined in same task
Effect : Direct SQL is constructed before current task's variable's values are defined. Magic Optimizer skips Parameter defined in this task, since they can receive values.
Advise : Move SQL Input Parameters into upper task

SQL006 : Task uses SQL functions ( DbDel, DbRecs, DbName, ... )
Effect :
Advise :


Optimization

OPT001 :Batch task with Open Task Window = Y but has a blank form
Effect : Blank display will only slow down the batch.
Advise : Set Open Task Window to NO

OPT002 : Batch task has No Main Table and No End Task Condition
Effect : This will most likely cause infinite batch loop
Advise : Set End Task Condition

OPT003 : Invalid operations are used in Batch task's Record Main
Effect : Only Select and Link operations are executed in RM in Batch task
Advise : Remove all operations which are not executed from RM

OPT004 : Batch task should be set as Resident
Effect : If task is called from Group Level, it's highly possible it's called numerous times. Making it resident will speed up the work flow.
Advise : Set Resident property in Task Properties, Advanced tab

OPT005 : Table should be opened in higher task
Effect : If task, that is called from Group Level, opens a table means each time task is called table will be opened and closed.Unless same table is opened in higher task. Opening table in higher task will increase the speed of task's execution.
Advise : Open table in higher task

OPT006 : Recommended use of CndRange function
Effect : CndRange function has great advantages over IF function
Advise : Replace IF functions with CndRange where applicable

OPT007 : Tasks with Sort, Range or Locate expressions
Purpose: To locate all tasks with Sort, Range or Locate expression

OPT008 : Picture on Form differs from Variables Picture
Effect : Different pictures can show different values
Advise : Make sure pictures were not changed by mistake



3. X-Reference

Fast and enhanced Cross Reference with detailed object information.
Choose between Models, Tables, Programs and MainProgram objects.

In Models you can see type of models and where it is used.

In Tables you can also cross reference based on Access in programs, Read or Write.

In Programs you can also see Reversed Cross Reference. For each program which parameters it receives and which tables it is using.

In MainProgram you can cross reference on global objects:
   Variables
   Events
   Forms




4. Logical Names

Cross Reference on logical names and some memory related functions:
   IniPut / IniGet
   Translate
   GetParam
   SetParam
   SharedValSet
   SharedValGet
   Lock
   UnLock




5. UML Chart

UML Chart shows relations between tables.
Choose between three types of relations: by Table definitions, by Foreign keys or by Application analysis




6. WorkFlow Chart

WorkFlow chart displays a hierarchical structure of called programs and tasks.

For selected program it shows all call to other programs and subtasks.
It can also display forms of called programs and subtasks.
Settings allow to set distinct properties for Online, Batch, Browser or SQL tasks.




7. Phrase extractor

Phrase extractor extracts all phrases from application. These could be used as a language translation phrases for multi-lingual applications, or for a specific reason where all label text or combo box values need to be extracted.




8. Application explorer

Application explorer offers a quick way for an overview of application.




9. MagicDoc - Technical documentation

Create technical documentation in HTML or Excel format.

MagicDoc offers a technical view of application where you can document most of the objects of the application. HTML or Excel format gives an option for portable technical documentation.




10. MLS Dictionary

Multi-lingual support dictionary offers an easy way to create eDeveloper MLS translation files.
You can also extract all text phrases from application and import them into MLS Dictionary, via Phrase extractor.




11. Print & Export

Magic Optimizer offers printing and exporting functionalities on all results, for Unused objects and for all Warnings.
With mouse right click, context menu is opened with Print, Export, Print All and Export All options.

 
Privacy statement | Terms of Use | Delivery policy | Refund policy | About us | Contact us  
 
Copyright © 2005 - 2017 Ocean Software Solutions
 



1