diff --git a/COBOL/Gnu/.gitignore b/COBOL/Gnu/.gitignore new file mode 100644 index 00000000..140f8cf8 --- /dev/null +++ b/COBOL/Gnu/.gitignore @@ -0,0 +1 @@ +*.so diff --git a/COBOL/Gnu/Add.cbl b/COBOL/Gnu/Add.cbl new file mode 100644 index 00000000..46436285 --- /dev/null +++ b/COBOL/Gnu/Add.cbl @@ -0,0 +1,38 @@ +program-id. Add as "Add". + +environment division. + +input-output section. + +file-control. + select in-items assign 'in-items'. + +data division. +file section. + fd in-items. + 01 item. + 02 sell-in pic s9(2). + 02 quality pic s9(2). + 02 name pic x(50). + +working-storage section. + 01 accept-item. + 02 sell-in pic s9(2). + 02 quality pic s9(2). + 02 name pic x(50). + + +procedure division. + open extend in-items. + display "name" + accept name in accept-item. + display "sell-in" + accept sell-in in accept-item. + display "quality" + accept quality in accept-item. + move accept-item to item. + write item. + close in-items. +goback. + +end program Add. diff --git a/COBOL/Gnu/GildedRose.cbl b/COBOL/Gnu/GildedRose.cbl new file mode 100644 index 00000000..5a234473 --- /dev/null +++ b/COBOL/Gnu/GildedRose.cbl @@ -0,0 +1,77 @@ +program-id. GildedRose as "GildedRose". + +environment division. + +input-output section. + +file-control. + select in-items assign 'in-items'. + select items assign 'items'. + +data division. +file section. + fd in-items. + 01 in-item pic x(54). + fd items. + 01 item. + 02 sell-in pic s9(2). + 02 quality pic s9(2). + 02 name pic x(50). + +working-storage section. +procedure division. + open input in-items output items. +start-lable. + read in-items end go to end-lable. + move in-item to item. + if name not equal "Aged Brie" and name not equal "Backstage passes to a TAFKAL80ETC concert" + if quality > 0 + if name not equal to "Sulfuras, Hand of Ragnaros" + compute quality = quality - 1 + end-if + end-if + else + if quality < 50 + compute quality = quality + 1 + if name equals "Backstage passes to a TAFKAL80ETC concert" + if sell-in < 11 + if quality < 50 + compute quality = quality + 1 + end-if + end-if + if sell-in < 6 + if quality < 50 + compute quality = quality + 1 + end-if + end-if + end-if + end-if + end-if + if name not equal "Sulfuras, Hand of Ragnaros" + compute sell-in = sell-in - 1 + end-if + if sell-in < 0 + if name is not equal to "Aged Brie" + if name is not equal to "Backstage passes to a TAFKAL80ETC concert" + if quality > 0 + if name is equal to "Sulfuras, Hand of Ragnaros" + compute quality = quality - 1 + end-if + end-if + else + compute quality = quality - quality + end-if + else + if quality < 50 + compute quality = quality + 1 + end-if + end-if + end-if + write item. + go to start-lable. +end-lable. + close items. + close in-items. +goback. + +end program GildedRose. diff --git a/COBOL/Gnu/add.sh b/COBOL/Gnu/add.sh new file mode 100755 index 00000000..a75d0f68 --- /dev/null +++ b/COBOL/Gnu/add.sh @@ -0,0 +1,2 @@ +touch in-items +cobcrun Add \ No newline at end of file diff --git a/COBOL/Gnu/build.sh b/COBOL/Gnu/build.sh new file mode 100755 index 00000000..2e4a3e7d --- /dev/null +++ b/COBOL/Gnu/build.sh @@ -0,0 +1 @@ +cobc --free --std=mf -O *.cbl diff --git a/COBOL/Gnu/run.sh b/COBOL/Gnu/run.sh new file mode 100755 index 00000000..c86e9224 --- /dev/null +++ b/COBOL/Gnu/run.sh @@ -0,0 +1 @@ +cobcrun GildedRose diff --git a/COBOL/Gnu/test.sh b/COBOL/Gnu/test.sh new file mode 100755 index 00000000..de74c645 --- /dev/null +++ b/COBOL/Gnu/test.sh @@ -0,0 +1,2 @@ +./build.sh +./run.sh