<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Blind Men and a Room Full of Elephants</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Vadim Zaytsev</string-name>
          <email>vadim@grammarware.net</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Raincode Labs Brussels</institution>
          ,
          <country country="BE">Belgium</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>The world of legacy software exists [1{8]. Despite numerous prognoses about certain languages going out of fashion and disappearing, many languages resist this natural process: COBOL (1959), RPG (1959), VISION:BUILDER (1960 as MARK IV), PL/I (1964), RAMIS (1965), CLIST (1970), FOCUS (1970), PACBASE (1973), BIS (1975 as MAPPER), REXX (1979), TELON (1981), CA GEN (1987 as IEF), jBASIC (1991), etc. They continue to be used extensively across billions of lines of code, literally decades after going out of fashion [9{11]. The world of legacy software evolves and grows, absorbing new languages as years go by. Only a handful of legacy systems are suitable for complete redesign and rewrite, while the bulk of software systems in nance, banking, insurance, logistics, booking, as well as in a number of other domains, are too large, too complex and too expensive to be replaced in simplistic ways. Hence, we need to develop methods and tools to analyse such software to aid in this never-ending battle by providing compilers, analysers, transformers, refactorers, testers, linters, validators. During this keynote, participants were confronted with a carefully selected subset of features encountered by industrial compiler engineers in legacy code. Condensed by language design magic into one deliberately small language called BabyCOBOL [12], this collection is meant to represent the challenge of processing legacy code to the software evolution community, such as: • parsing indentation-driven notations, • dealing with line continuations, • identifying keywords which are not reserved,</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>• resolving symbols with case insensitivity,
• syntax highlighting with insigni cant whitespace,
• implementing the picture clause data type,
• preprocessing lexical imports,
• unpuzzling su ciently quali ed identi ers,
• unfolding contracted conditions,
• relying on name-based deep traversing
assignments,
• using context-dependent gurative constants,
• altering unconditional branching addresses at
runtime,
• branching to sentence-based code locations,
• executing paragraphs in a serial way,
• having detachable clauses in structured loops,
• combining exception handling with other features.</p>
      <p>The participants have witnessed the rst public
exposure of this meeting point between the
industrial community that is creating tools for handling
real legacy languages (each demanding several
humanyears of professional investment and therefore
completely unsuitable for research prototyping) and the
academic community which consists of many comfort
bubbles of idealised toy languages (with consistent
design that rewards emergence of glori ed techniques
that optimistically assume overly rational language
features).</p>
      <p>We hope that by designing university courses on
compiler construction, software language engineering
and software evolution around BabyCOBOL instead
of MiniJava or While, will help preparing students for
the future, arming them with the skill to build tools to
deal with the software systems of the past. At the same
time, trying out any new technique on BabyCOBOL
seems feasible to quickly prototype and t within an
academic paper, and ensures the technique's
applicability to a range of legacy languages.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Matthiesen</surname>
          </string-name>
          and P. Bj rn,
          <source>\Why Replacing Legacy Systems is So Hard in Global Software Development: An Information Infrastructure Perspective," in CSCW. ACM</source>
          ,
          <year>2015</year>
          , pp.
          <volume>876</volume>
          {
          <fpage>890</fpage>
          . [Online]. Available: https://doi.org/10. 1145/2675133.2675232
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J. Q.</given-names>
            <surname>Ning</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Engberts</surname>
          </string-name>
          , and W. Kozaczynski, \
          <article-title>Recovering Reusable Components from Legacy Systems,"</article-title>
          <source>in Proceedings of Working Conference on Reverse Engineering. IEEE CS</source>
          ,
          <year>1993</year>
          , pp.
          <volume>64</volume>
          {
          <fpage>72</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Feathers</surname>
          </string-name>
          , Working E ectively with Legacy Code. Prentice-Hall,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A. A.</given-names>
            <surname>Terekhov</surname>
          </string-name>
          and
          <string-name>
            <given-names>C.</given-names>
            <surname>Verhoef</surname>
          </string-name>
          , \
          <article-title>The Realities of Language Conversions,"</article-title>
          <source>IEEE Software</source>
          , vol.
          <volume>17</volume>
          , no.
          <issue>6</issue>
          , pp.
          <volume>111</volume>
          {
          <issue>124</issue>
          ,
          <string-name>
            <surname>Nov</surname>
          </string-name>
          ./Dec.
          <year>2000</year>
          . [Online]. Available: https://doi.org/10.1109/52.895180
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>V.</given-names>
            <surname>Zaytsev</surname>
          </string-name>
          , \
          <article-title>Open Challenges in Incremental Coverage of Legacy Software Languages,"</article-title>
          <source>in Post-proceedings of the Third Edition of the Programming Experience Workshop (PX/17</source>
          .2), L. Church,
          <string-name>
            <given-names>R. P.</given-names>
            <surname>Gabriel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hirschfeld</surname>
          </string-name>
          , and H. Masuhara, Eds.,
          <year>2017</year>
          , pp.
          <volume>1</volume>
          {
          <fpage>6</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>R.</given-names>
            <surname>Khadka</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Shrestha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Klein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Saeidi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hage</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Jansen</surname>
          </string-name>
          ,
          <string-name>
            <surname>E. van Dis</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Bruntink</surname>
          </string-name>
          , \
          <article-title>Does Software Modernization Deliver What It Aimed for? A Post Modernization Analysis of Five Software Modernization Case Studies," in ICSM</article-title>
          . IEEE,
          <year>2015</year>
          , pp.
          <volume>477</volume>
          {
          <fpage>486</fpage>
          . [Online]. Available: https://doi.org/10.1109/ICSM.
          <year>2015</year>
          . 7332499
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>E.</given-names>
            <surname>Aeschlimann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Lungu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Nierstrasz</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C. F.</given-names>
            <surname>Worms</surname>
          </string-name>
          , \
          <source>Analyzing PL/I Legacy Ecosystems: An Experience Report," in WCRE. IEEE</source>
          ,
          <year>2013</year>
          , pp.
          <volume>441</volume>
          {
          <fpage>448</fpage>
          . [Online]. Available: https://doi.org/10.1109/WCRE.
          <year>2013</year>
          .6671320
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>D.</given-names>
            <surname>Blasband</surname>
          </string-name>
          , \
          <article-title>Compilation of Legacy Languages in the 21st Century," in GTTSE, ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>7680</volume>
          . Springer,
          <year>2011</year>
          , pp.
          <volume>1</volume>
          {
          <fpage>54</fpage>
          . [Online]. Available: https://doi.org/10.1007/ 978-3-
          <fpage>642</fpage>
          -35992-7 1
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>D.</given-names>
            <surname>Cassel</surname>
          </string-name>
          , \COBOL Is Everywhere. Who Will Maintain It?" https://thenewstack.io/ cobol-everywhere
          <string-name>
            <surname>-</surname>
          </string-name>
          will-maintain/, May
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>T.</given-names>
            <surname>Hartman</surname>
          </string-name>
          , \
          <article-title>COBOL blues,"</article-title>
          <source>Reuters Graphics</source>
          , http:// ngfx.thomsonreuters.com/gfx/rngs/ USA-BANKS-COBOL/010040KH18J/index. html, Apr.
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>R.</surname>
          </string-name>
          <article-title>Lammel and C. Verhoef, \Cracking the 500-Language Problem,"</article-title>
          <source>IEEE Software</source>
          , vol.
          <volume>18</volume>
          , pp.
          <volume>78</volume>
          {
          <issue>88</issue>
          ,
          <year>2001</year>
          . [Online]. Available: https: //doi.org/10.1109/52.965809
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>V.</given-names>
            <surname>Zaytsev</surname>
          </string-name>
          , \BabyCOBOL,
          <article-title>" Software Language Engineering Body of Knowledge</article-title>
          , http://slebok. github.io/babycobol,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>