ARC Macro Language

The ARC Macro Language (AML) is a proprietary high-level algorithmic language for generating applications in ArcInfo. It was designed by Esri in 1986 specifically for their command line-driven ARC/INFO geographical information system. Significant performance improvements were made to the language in the mid-1990s, and directives and functions continued to be added to incorporate new ArcInfo Workstation functionality until ArcInfo Workstation development was largely discontinued in 1999.

AML is a command-preprocessor for the Arc Executive introduced with ARC/INFO 4.0. Before AML was developed, ARC/INFO macro capability (and many standard ARC/INFO command-line interfaces) were created using the standard system scripting language on each supported platform (for example, CPL on PRIMOS, DCL on VAX/VMS).

AML's syntax is based on CPL (the shell language of the PRIMOS operating system) because the majority of ARC/INFO installations existing at the time of AML's development used the Prime computers minicomputer platform.

Language features included argument and variable processing, executing and providing input to external programs (via a &data..&end code block similar to the Bourne shell "hereis" construct), and standard flow of control tools such as loops, routines and gotos. In addition, the macro language was designed with the ability to create platform-independent onscreen menus, and GIS-specific functionality such the ability to get and input use map or page unit coordinates.

AML and ArcGIS
Although the language is still available in modern ArcInfo Workstation, the language has been superseded in ArcGIS by the ArcGIS geoprocessing framework, including ModelBuilder, Python, and other scripting languages.

One can argue that ArcObjects programming is not analogous to AML scripting because the VBA and .NET interfaces provide considerably finer-grained access to the ArcGIS architecture--more along the lines of the old FORTRAN and C ArcSdl libraries that were the core development environment for ArcInfo Workstation.