title: TACPOL (programming language)
text: # TACPOL (programming language)
  
  TACPOL (Tactical Procedure Oriented Language) is a block structured programming language developed by the United States Army for the TACFIRE Tactical Fire Direction command and control application. TACPOL is similar to PL/I.
  
  ## Language constructs
  
  ### Reserved words
  
  Unlike PL/I, TACPOL keywords—called particles—are reserved words and cannot be used as identifiers. There are roughly 100 reserved words.
  
  ### Identifiers
  
  TACPOL identifiers can be any length, but if longer than eight characters only the first five concatenated with the last three characters were actually used.
  
  ### Data types
  
  TACPOL supports fixed-point binary numeric data, fixed-length character strings up to 512 bytes, and fixed-length bit strings up to 32 bits. There is no support for floating point numeric data or for pointers. Arrays may have up to three dimensions, but dynamic bounds are not permitted. Additional types are records, called groups, limited to a single level of nesting, tables (arrays of groups), and unions, called cells.
  
  ### Control structures
  
  Control structures include IF-THEN-ELSE, iteration, WHILE and CASE statements.
  
  ### Procedures
  
  Procedures may have value parameters, quantity parameters – by reference without type-checking, parameterless procedure and label parameters.
  
  ## Implementations
  
  The TACPOL compiler ran on and generated code for the AN/GYK-12, a militarized version of the Litton Industries L-3050 32-bit minicomputer.
  
  ## Criticism and defense
  
  ### Positive features
  
  * TACPOL is easy to learn.
  
  ### Negative features
  
  * "TACPOL has a large number of special language features which were included for reasons of efficiency because the inclusion of corresponding cleanly designed general purpose features was not properly understood."
  * "Cost per instruction of TACPOL [is] higher than language used for other military computers."
  