title: FARGO (programming language)
text: # FARGO (programming language)
  
  FARGO (fourteen-o-one automatic report generation operation) was the predecessor to the RPG programming language. FARGO was more of a utility program than a programming language, whereas RPG had a program generation process that produced an executable object.
  
  ## A transitional tool
  
  The idea behind FARGO was to facilitate ease of transition for IBM 407 Accounting Machine technicians to the new IBM 1400 series of computers. The 1400 series had two assemblers; Symbolic Programming System (SPS) and Autocoder (a more advanced assembler which required more memory than SPS). These represented a significant paradigm shift and learning curve for the technicians who were accustomed to wiring a control panel to direct input, output, control and counter operations (add, subtract). Multiplication and division operations were possible but their practicality was limited.
  
  Tabulator machine operations were directed by impulses emitted in a machine cycle; hence, FARGO emulated the notion of a cycle. FARGO coordinated the concept of coding sheets that closely approximated the principles of wiring control panels of tabulating machines. Early FARGO training material showed the wiring control of panels vs. coding sheet relationships.
  
  ## Programs did not require compilation
  
  Another important feature of FARGO programs is that they did not require compilation. Instead, specification cards were placed into the FARGO program deck at appropriate locations and then simply run with the data cards at the end of the program deck. FARGO was designed for IBM 1401 card systems with at least 4000 positions of Core storage.
  
  ## Backward compatibility
  
  IBM historically placed emphasis on backward compatibility, and FARGO and 1400 Autocoder continued to be used in some IBM System/360 shops by running in "Emulation" mode. COBOL, FORTRAN and RPG languages did not require emulation because System/360 versions were provided.
  
  