gmADS: Application Development System

The gmADS manual is available as PDF here.

What is gmADS

The Great Migrations Application Development System (gmADS), formerly known as PROMULA, is a platform for building high-performance data management and modeling systems using our unique array management technology.

gmADS is a general-purpose, high-level programming language with built-in data management, modeling, report generation, graphics, and screen management (menus and windows) capabilities. It is the ideal development tool for those who have outgrown the spreadsheets but do not want to develop applications in a third generation programming language (such as FORTRAN, PASCAL, BASIC, or C). Though its intellectual history goes back to the late ‘60's on mainframes, PROMULA was originally developed on PCs in the early 80's as a high-level generalization of FORTRAN designed to take explicit advantage of the FORTRAN data structure (multidimensional arrays of primarily numeric, homogeneous data). It is a portable C program and offers the same character-based functionality on a number of platforms: PC DOS and DOS Extended, 386/486 UNIX, RS/6000 AIX, VAX/VMS, and Apple Macintosh. As an application development tool, PROMULA supports the following functions:

  • Data management (organize and selectively manipulate data)
  • Data analysis (establish relationships in the data using an extensive library of mathematical and statistical functions)
  • Modeling (simulate a problem and possible solutions to it)
  • "What if" analysis (compare alternative decisions about the problem)
  • Report generation (display results in report form)
  • Graphics (display results in plotted form)

Example of a Trivial gmADS Program

OPEN SEGMENT    "DEMO.XEQ"      STATUS=NEW
DEFINE PROGRAM "A Demo Program"

DEFINE SET
  month(12)       "Months of the Year"
  acnt(3)         "Profit and Loss Ledger Accounts"
END SET

DEFINE VARIABLE
  mp(month,acnt) "Monthly Profit and Loss Figures ($)" TYPE=REAL(10,0)
  amp            "Average Monthly Profit ($)"          TYPE=REAL(10,2)
  mn(month)      "Month Names"                         TYPE=STRING(12)
  acn(acnt)      "Profit and Loss Account Names"       TYPE=STRING(12)
END VARIABLE

DEFINE RELATION
  ROW(month,mn)
  COLUMN(acnt,acn)
  KEY(acnt,acn)
END RELATION

READ mn
January
February
March
April
May
June
July
August
September
October
November
December

READ acn:6
Sales Costs Profit

DEFINE PROCEDURE profits
  SELECT acnt(Sales)
    WRITE"Please enter the monthly sales figures."
    READ mp(acnt,month)
  SELECT acnt(Costs)
    WRITE"Please enter the monthly cost figures."
    READ mp(acnt,month)
  SELECT acnt*
    mp(m,3) = mp(m,1) - mp(m,2)
    amp = SUM(m)(mp(m,3)/12)
    WRITE mp
    WRITE amp
END PROCEDURE profits

END PROGRAM, DO profits


Running the Trivial Sample

Please enter the monthly sales figures.
    ? 13200 12100 14800 16200 15200 17200 18060 18960 19900 20900 21950 23050
  Please enter the monthly cost figures.
    ? 9200 8600 10400 11300 10700 12100 12700 13350 14000 14700 15440 16210

                  Monthly Profit and Loss Figures ($)
                                        
                              Sales       Costs      Profit
                                        
            January           13,200       9,200       4,000
            February          12,100       8,600       3,500
            March             14,800      10,400       4,400
            April             16,200      11,300       4,900
            May               15,200      10,700       4,500
            June              17,200      12,100       5,100
            July              18,060      12,700       5,360
            August            18,960      13,350       5,610
            September         19,900      14,000       5,900
            October           20,900      14,700       6,200
            November          21,950      15,440       6,510
            December          23,050      16,210       6,840

  Average monthly Profit ($) 5,235.00