diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index b37d6bc1..cc1d1cf7 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -33,7 +33,7 @@ jobs: id: cache-gnu-cobol uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 with: - path: ~\gnucobol-3.2-dev.zip + path: $HOME\gnucobol-3.2.7z key: ${{ runner.os }}-gnu-cobol-3.2 - name: Download GnuCOBOL @@ -45,27 +45,18 @@ jobs: MaximumRetryCount = 3 RetryIntervalSec = 1 } - Invoke-WebRequest -Uri 'https://ci.appveyor.com/api/projects/GitMensch/gnucobol-3-x-win32-posix/artifacts/gnucobol-3.2-dev-MinGW-binaries%20(debug).zip?job=Environment:%20BUILD_TYPE=MSYS,%20BUILD_BIN=C:\MinGW\msys\1.0\bin' -OutFile ~\gnucobol-3.2-dev.zip @requestOpts + Invoke-WebRequest -Uri 'https://www.arnoldtrembley.com/GC32-BDB-SP1-rename-7z-to-exe.7z' -OutFile $HOME\gnucobol-3.2.7z @requestOpts - name: Extract GnuCOBOL shell: pwsh - run: Expand-Archive ~\gnucobol-3.2-dev.zip -DestinationPath gnucobol -Force + run: 7z x $HOME\gnucobol-3.2.7z -ognucobol -y - name: Fetch CobolCheck shell: pwsh run: bin/fetch-cobolcheck.ps1 - - name: Setup environment - shell: pwsh - run: | - $env:Path = "D:\a\cobol\cobol\gnucobol\bin;$HOME\bin;" + $env:Path - [System.Environment]::SetEnvironmentVariable('COB_CONFIG_DIR', 'D:\a\cobol\cobol\gnucobol\config') - [System.Environment]::SetEnvironmentVariable('COB_COPY_DIR', 'D:\a\cobol\cobol\gnucobol\copy') - [System.Environment]::SetEnvironmentVariable('COB_CFLAGS', '-I D:\a\cobol\cobol\gnucobol\include') - [System.Environment]::SetEnvironmentVariable('COB_LDFLAGS', '-L D:\a\cobol\cobol\gnucobol\lib') - [System.Environment]::SetEnvironmentVariable('COB_LIBRARY_PATH', 'D:\a\cobol\cobol\gnucobol\lib') - [System.Environment]::SetEnvironmentVariable('COB_LIBS', 'D:\a\cobol\cobol\gnucobol\bin\libcob-4.dll') - - name: Run tests for all exercises shell: pwsh - run: bin/test.ps1 + run: | + bin/setup-environment.ps1 + bin/test.ps1 diff --git a/bin/fetch-cobolcheck.ps1 b/bin/fetch-cobolcheck.ps1 index a0117c22..a57f708d 100644 --- a/bin/fetch-cobolcheck.ps1 +++ b/bin/fetch-cobolcheck.ps1 @@ -23,7 +23,5 @@ Function Get-DownloadUrl { } $downloadUrl = Get-DownloadUrl -$outputDir = Join-Path -Path $HOME -ChildPath "bin" -$outputFile = Join-Path -Path $outputDir -ChildPath "cobolcheck.exe" -New-Item -ItemType Directory -Force -Path $outputDir | Out-Null +$outputFile = Join-Path -Path $PSScriptRoot -ChildPath "cobolcheck.exe" Invoke-WebRequest -Uri $downloadUrl -OutFile $outputFile @requestOpts diff --git a/bin/setup-environment.ps1 b/bin/setup-environment.ps1 new file mode 100644 index 00000000..78117f92 --- /dev/null +++ b/bin/setup-environment.ps1 @@ -0,0 +1,7 @@ +$env:Path = "${env:GITHUB_WORKSPACE}\gnucobol\bin;${env:GITHUB_WORKSPACE}\bin;${env:Path}" +[System.Environment]::SetEnvironmentVariable('COB_CONFIG_DIR', "${env:GITHUB_WORKSPACE}\gnucobol\config") +[System.Environment]::SetEnvironmentVariable('COB_COPY_DIR', "${env:GITHUB_WORKSPACE}\gnucobol\copy") +[System.Environment]::SetEnvironmentVariable('COB_CFLAGS', "-I ${env:GITHUB_WORKSPACE}\gnucobol\include") +[System.Environment]::SetEnvironmentVariable('COB_LDFLAGS', "-L ${env:GITHUB_WORKSPACE}\gnucobol\lib") +[System.Environment]::SetEnvironmentVariable('COB_LIBRARY_PATH', "${env:GITHUB_WORKSPACE}\gnucobol\lib") +[System.Environment]::SetEnvironmentVariable('COB_LIBS', "${env:GITHUB_WORKSPACE}\gnucobol\bin\libcob-4.dll") diff --git a/exercises/practice/acronym/.meta/proof.ci.cob b/exercises/practice/acronym/.meta/proof.ci.cob index cbfc95bf..58b823a9 100644 --- a/exercises/practice/acronym/.meta/proof.ci.cob +++ b/exercises/practice/acronym/.meta/proof.ci.cob @@ -25,7 +25,7 @@ EVALUATE CHAR WHEN "_" CONTINUE - WHEN " " + WHEN SPACE MOVE 1 TO PICKNEXT CONTINUE WHEN "-" @@ -48,5 +48,3 @@ ADD 1 TO LEN END-PERFORM. COMPUTE LEN = 80 - LEN. - - \ No newline at end of file diff --git a/exercises/practice/acronym/src/acronym.cob b/exercises/practice/acronym/src/acronym.cob index ac8d96d1..58b823a9 100644 --- a/exercises/practice/acronym/src/acronym.cob +++ b/exercises/practice/acronym/src/acronym.cob @@ -1,10 +1,50 @@ IDENTIFICATION DIVISION. - PROGRAM-ID. ACRONYM. + PROGRAM-ID. acronym. + AUTHOR. kapitaali. ENVIRONMENT DIVISION. DATA DIVISION. + FILE SECTION. + WORKING-STORAGE SECTION. 01 WS-ACRONYM PIC X(80). 01 WS-RESULT PIC X(20). - + 01 LEN PIC 99. + 01 PICKNEXT PIC 9. + 01 COUNTER PIC 99. + 01 IDX PIC 99. + 01 CHAR PIC X. + PROCEDURE DIVISION. ABBREVIATE. + PERFORM STR-LENGTH. + MOVE 1 TO IDX. + MOVE SPACES TO WS-RESULT. + MOVE 1 TO PICKNEXT. + PERFORM VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER = LEN + MOVE WS-ACRONYM(COUNTER:1) TO CHAR + EVALUATE CHAR + WHEN "_" + CONTINUE + WHEN SPACE + MOVE 1 TO PICKNEXT + CONTINUE + WHEN "-" + MOVE 1 TO PICKNEXT + CONTINUE + WHEN OTHER + IF PICKNEXT = 1 + MOVE FUNCTION UPPER-CASE(CHAR) + TO WS-RESULT(IDX:1) + ADD 1 TO IDX + END-IF + MOVE 0 TO PICKNEXT + END-PERFORM. + + STR-LENGTH. + MOVE 0 TO LEN. + MOVE FUNCTION LENGTH(WS-ACRONYM) TO IDX. + PERFORM VARYING IDX FROM FUNCTION LENGTH(WS-ACRONYM) + BY -1 UNTIL WS-ACRONYM(IDX:1) <> " " + ADD 1 TO LEN + END-PERFORM. + COMPUTE LEN = 80 - LEN. diff --git a/exercises/practice/all-your-base/.meta/proof.ci.cob b/exercises/practice/all-your-base/.meta/proof.ci.cob index 27af5fef..ad718e52 100644 --- a/exercises/practice/all-your-base/.meta/proof.ci.cob +++ b/exercises/practice/all-your-base/.meta/proof.ci.cob @@ -142,4 +142,3 @@ MOVE WS-RESULT TO WS-DIGITS. PERFORM STR-LENGTH. MOVE SPACES TO WS-RESULT(LEN:1). - diff --git a/exercises/practice/all-your-base/tst/all-your-base/all-your-base.cut b/exercises/practice/all-your-base/tst/all-your-base/all-your-base.cut index 08851789..68926125 100644 --- a/exercises/practice/all-your-base/tst/all-your-base/all-your-base.cut +++ b/exercises/practice/all-your-base/tst/all-your-base/all-your-base.cut @@ -57,7 +57,7 @@ TestCase "15-bit integer" TestCase "empty list" MOVE 2 TO WS-INPUTBASE MOVE 10 TO WS-OUTPUTBASE - MOVE "" TO WS-DIGITS + MOVE SPACE TO WS-DIGITS PERFORM REBASE EXPECT WS-RESULT = "0" @@ -97,7 +97,7 @@ TestCase "input base is one" TestCase "input base is zero" MOVE 0 TO WS-INPUTBASE MOVE 10 TO WS-OUTPUTBASE - MOVE "" TO WS-DIGITS + MOVE SPACE TO WS-DIGITS PERFORM REBASE EXPECT WS-ERROR = "input base must be >= 2" diff --git a/exercises/practice/allergies/tst/allergies/allergies.cut b/exercises/practice/allergies/tst/allergies/allergies.cut index 1333c089..4654305b 100644 --- a/exercises/practice/allergies/tst/allergies/allergies.cut +++ b/exercises/practice/allergies/tst/allergies/allergies.cut @@ -243,7 +243,7 @@ TestCase "cats: allergic to everything", TestCase "list when: no allergies" MOVE 0 TO WS-SCORE PERFORM LIST-ALLERGENS - EXPECT WS-RESULT-LIST = "" + EXPECT WS-RESULT-LIST = SPACE TestCase "list when: just eggs" MOVE 1 TO WS-SCORE diff --git a/exercises/practice/armstrong-numbers/.meta/proof.ci.cob b/exercises/practice/armstrong-numbers/.meta/proof.ci.cob index cdd3da0d..27afe6ab 100644 --- a/exercises/practice/armstrong-numbers/.meta/proof.ci.cob +++ b/exercises/practice/armstrong-numbers/.meta/proof.ci.cob @@ -30,5 +30,6 @@ MOVE 0 TO WS-RESULT END-IF. - DISPLAY WS-ARMSTRONG. - DISPLAY WS-NUMBER. + * DISPLAY WS-ARMSTRONG. + * DISPLAY WS-NUMBER. + diff --git a/exercises/practice/atbash-cipher/.meta/proof.ci.cob b/exercises/practice/atbash-cipher/.meta/proof.ci.cob index b0d3586b..da8ea858 100644 --- a/exercises/practice/atbash-cipher/.meta/proof.ci.cob +++ b/exercises/practice/atbash-cipher/.meta/proof.ci.cob @@ -6,8 +6,8 @@ WORKING-STORAGE SECTION. 01 WS-PHRASE PIC X(60). 01 WS-RESULT PIC X(60). - 01 ABC PIC X(36) VALUES "abcdefghijklmnopqrstuvwxyz0123456789". - 01 ZYX PIC X(36) VALUES "zyxwvutsrqponmlkjihgfedcba0123456789". + 01 ABC PIC X(36) VALUE "abcdefghijklmnopqrstuvwxyz0123456789". + 01 ZYX PIC X(36) VALUE "zyxwvutsrqponmlkjihgfedcba0123456789". 01 COUNTER PIC 999. 01 LEN PIC 999. 01 IDX PIC 999. diff --git a/exercises/practice/binary/.meta/proof.ci.cob b/exercises/practice/binary/.meta/proof.ci.cob index ab667298..325a49cd 100644 --- a/exercises/practice/binary/.meta/proof.ci.cob +++ b/exercises/practice/binary/.meta/proof.ci.cob @@ -50,4 +50,4 @@ MOVE CHAR-ERROR TO WS-ERROR NEXT SENTENCE END-IF - END-PERFORM. \ No newline at end of file + END-PERFORM. diff --git a/exercises/practice/bob/.meta/proof.ci.cob b/exercises/practice/bob/.meta/proof.ci.cob index 341a79ae..73e093c0 100644 --- a/exercises/practice/bob/.meta/proof.ci.cob +++ b/exercises/practice/bob/.meta/proof.ci.cob @@ -84,4 +84,4 @@ MOVE "Whatever." TO WS-RESULT END-IF END-EVALUATE - END-IF. \ No newline at end of file + END-IF. diff --git a/exercises/practice/bob/tst/bob/bob.cut b/exercises/practice/bob/tst/bob/bob.cut index 5e5a297b..e4902221 100644 --- a/exercises/practice/bob/tst/bob/bob.cut +++ b/exercises/practice/bob/tst/bob/bob.cut @@ -84,7 +84,7 @@ TestCase "prattling on" EXPECT WS-RESULT = "Sure." TestCase "silence" - MOVE "" TO WS-HEYBOB + MOVE SPACE TO WS-HEYBOB PERFORM BOB EXPECT WS-RESULT = "Fine. Be that way!" diff --git a/exercises/practice/collatz-conjecture/.meta/proof.ci.cob b/exercises/practice/collatz-conjecture/.meta/proof.ci.cob index 0ae9ae74..38121d7e 100644 --- a/exercises/practice/collatz-conjecture/.meta/proof.ci.cob +++ b/exercises/practice/collatz-conjecture/.meta/proof.ci.cob @@ -26,5 +26,5 @@ ADD 1 TO WS-STEPS END-PERFORM. - DISPLAY WS-STEPS. - DISPLAY WS-ERROR. + *DISPLAY WS-STEPS. + *DISPLAY WS-ERROR. diff --git a/exercises/practice/complex-numbers/.meta/proof.ci.cob b/exercises/practice/complex-numbers/.meta/proof.ci.cob index 37d94de0..4651d0d7 100644 --- a/exercises/practice/complex-numbers/.meta/proof.ci.cob +++ b/exercises/practice/complex-numbers/.meta/proof.ci.cob @@ -39,17 +39,17 @@ COMPUTE RESULT-IM = Z1-IM * Z2-RE + Z1-RE * Z2-IM. C-DIV. - DISPLAY "Z1 (" Z1-RE "," Z1-IM ") Z2 (" Z2-RE "," Z2-IM ")". + * DISPLAY "Z1 (" Z1-RE "," Z1-IM ") Z2 (" Z2-RE "," Z2-IM ")". COMPUTE TEMP = Z2-RE * Z2-RE + Z2-IM * Z2-IM. - DISPLAY "TEMP " TEMP. + * DISPLAY "TEMP " TEMP. COMPUTE RESULT-RE = Z1-RE * Z2-RE + Z1-IM * Z2-IM. COMPUTE RESULT-RE = RESULT-RE / TEMP. - DISPLAY "RESULT-RE " RESULT-RE. + * DISPLAY "RESULT-RE " RESULT-RE. COMPUTE RESULT-IM = Z1-IM * Z2-RE - Z1-RE * Z2-IM. - DISPLAY Z1-IM "*" Z2-RE "-" Z1-RE "*" Z2-IM. - DISPLAY "= " RESULT-IM " / TEMP=" TEMP. + * DISPLAY Z1-IM "*" Z2-RE "-" Z1-RE "*" Z2-IM. + * DISPLAY "= " RESULT-IM " / TEMP=" TEMP. COMPUTE RESULT-IM = RESULT-IM / TEMP. - DISPLAY "RESULT-IM " RESULT-IM. + * DISPLAY "RESULT-IM " RESULT-IM. C-ABS. MOVE 0 TO RESULT-IM. diff --git a/exercises/practice/difference-of-squares/.meta/proof.ci.cob b/exercises/practice/difference-of-squares/.meta/proof.ci.cob index 983ca7c7..56f6b04f 100644 --- a/exercises/practice/difference-of-squares/.meta/proof.ci.cob +++ b/exercises/practice/difference-of-squares/.meta/proof.ci.cob @@ -25,7 +25,7 @@ WS-SQUARE-OF-SUM - WS-SUM-OF-SQUARES. SHOW-RESULTS. - DISPLAY WS-SQUARE-OF-SUM. - DISPLAY WS-SUM-OF-SQUARES. - DISPLAY WS-DIFFERENCE-OF-SQUARES. + *DISPLAY WS-SQUARE-OF-SUM. + *DISPLAY WS-SUM-OF-SQUARES. + *DISPLAY WS-DIFFERENCE-OF-SQUARES. diff --git a/exercises/practice/hamming/.meta/proof.ci.cob b/exercises/practice/hamming/.meta/proof.ci.cob index 017918f5..0304d1ca 100644 --- a/exercises/practice/hamming/.meta/proof.ci.cob +++ b/exercises/practice/hamming/.meta/proof.ci.cob @@ -35,5 +35,5 @@ END-PERFORM. - DISPLAY "Hamming Distance is: " WS-HAMMING. - DISPLAY WS-ERROR. + *DISPLAY "Hamming Distance is: " WS-HAMMING. + *DISPLAY WS-ERROR. diff --git a/exercises/practice/hello-world/.meta/proof.ci.cob b/exercises/practice/hello-world/.meta/proof.ci.cob index 86a5a428..565e50fd 100644 --- a/exercises/practice/hello-world/.meta/proof.ci.cob +++ b/exercises/practice/hello-world/.meta/proof.ci.cob @@ -8,4 +8,3 @@ HELLO-WORLD. MOVE "Hello, World!" TO WS-RESULT. - \ No newline at end of file diff --git a/exercises/practice/luhn/.meta/proof.ci.cob b/exercises/practice/luhn/.meta/proof.ci.cob index b71f4c00..7c2b039c 100644 --- a/exercises/practice/luhn/.meta/proof.ci.cob +++ b/exercises/practice/luhn/.meta/proof.ci.cob @@ -58,4 +58,4 @@ MOVE "FALSE" TO WS-VALID END-IF. - DISPLAY WS-VALID. + *DISPLAY WS-VALID. diff --git a/exercises/practice/matching-brackets/tst/matching-brackets/matching-brackets.cut b/exercises/practice/matching-brackets/tst/matching-brackets/matching-brackets.cut index 6bcd6743..3c767456 100644 --- a/exercises/practice/matching-brackets/tst/matching-brackets/matching-brackets.cut +++ b/exercises/practice/matching-brackets/tst/matching-brackets/matching-brackets.cut @@ -4,7 +4,7 @@ TestCase "paired square brackets" EXPECT WS-RESULT = 1 TestCase "empty string" - MOVE "" TO WS-INPUT + MOVE SPACE TO WS-INPUT PERFORM ISPAIRED EXPECT WS-RESULT = 1 diff --git a/exercises/practice/nucleotide-count/.meta/proof.ci.cob b/exercises/practice/nucleotide-count/.meta/proof.ci.cob index fe474fa8..d0d10677 100644 --- a/exercises/practice/nucleotide-count/.meta/proof.ci.cob +++ b/exercises/practice/nucleotide-count/.meta/proof.ci.cob @@ -34,8 +34,8 @@ END-EVALUATE END-PERFORM. - DISPLAY "A: " WS-A. - DISPLAY "C: " WS-C. - DISPLAY "G: " WS-G. - DISPLAY "T: " WS-T. - DISPLAY WS-ERROR. + *DISPLAY "A: " WS-A. + *DISPLAY "C: " WS-C. + *DISPLAY "G: " WS-G. + *DISPLAY "T: " WS-T. + *DISPLAY WS-ERROR. diff --git a/exercises/practice/raindrops/.meta/proof.ci.cob b/exercises/practice/raindrops/.meta/proof.ci.cob index 7bbba405..b12b6d9b 100644 --- a/exercises/practice/raindrops/.meta/proof.ci.cob +++ b/exercises/practice/raindrops/.meta/proof.ci.cob @@ -27,4 +27,4 @@ MOVE WS-NUMBER TO WS-RESULT END-IF. - DISPLAY WS-RESULT. + *DISPLAY WS-RESULT. diff --git a/exercises/practice/reverse-string/.meta/proof.ci.cob b/exercises/practice/reverse-string/.meta/proof.ci.cob index c9af54a4..835a8b11 100644 --- a/exercises/practice/reverse-string/.meta/proof.ci.cob +++ b/exercises/practice/reverse-string/.meta/proof.ci.cob @@ -13,4 +13,4 @@ MOVE FUNCTION TRIM(WS-STRING LEADING) TO WS-STRING. - DISPLAY WS-STRING. + *DISPLAY WS-STRING. diff --git a/exercises/practice/rna-transcription/.meta/proof.ci.cob b/exercises/practice/rna-transcription/.meta/proof.ci.cob index 3ed593af..2a0ef3b1 100644 --- a/exercises/practice/rna-transcription/.meta/proof.ci.cob +++ b/exercises/practice/rna-transcription/.meta/proof.ci.cob @@ -12,4 +12,4 @@ INSPECT WS-COMPLEMENT CONVERTING WS-DNA TO WS-RNA. - DISPLAY WS-COMPLEMENT. + *DISPLAY WS-COMPLEMENT. diff --git a/exercises/practice/roman-numerals/.meta/proof.ci.cob b/exercises/practice/roman-numerals/.meta/proof.ci.cob index 826e2717..efaae070 100644 --- a/exercises/practice/roman-numerals/.meta/proof.ci.cob +++ b/exercises/practice/roman-numerals/.meta/proof.ci.cob @@ -71,4 +71,3 @@ ALL "c" BY COLUMN-LETTER-CHARACTERS(3). MAKE-ROMAN-EXIT. EXIT. - diff --git a/exercises/practice/rotational-cipher/.meta/proof.ci.cob b/exercises/practice/rotational-cipher/.meta/proof.ci.cob index e1db2b46..7ab84b98 100644 --- a/exercises/practice/rotational-cipher/.meta/proof.ci.cob +++ b/exercises/practice/rotational-cipher/.meta/proof.ci.cob @@ -33,5 +33,5 @@ TO WS-CIPHER (WS-CHAR-INDEX:1) END-PERFORM. - DISPLAY "Plain: " WS-TEXT. - DISPLAY "Cipher: " WS-CIPHER. + *DISPLAY "Plain: " WS-TEXT. + *DISPLAY "Cipher: " WS-CIPHER. diff --git a/exercises/practice/scrabble-score/.meta/proof.ci.cob b/exercises/practice/scrabble-score/.meta/proof.ci.cob index 05e1af34..d47cd902 100644 --- a/exercises/practice/scrabble-score/.meta/proof.ci.cob +++ b/exercises/practice/scrabble-score/.meta/proof.ci.cob @@ -59,4 +59,4 @@ END-IF SET LETTER-INDEX UP BY 1 - END-PERFORM. \ No newline at end of file + END-PERFORM. diff --git a/exercises/practice/scrabble-score/tst/scrabble-score/scrabble-score.cut b/exercises/practice/scrabble-score/tst/scrabble-score/scrabble-score.cut index 7f8537c8..a68ab8b0 100644 --- a/exercises/practice/scrabble-score/tst/scrabble-score/scrabble-score.cut +++ b/exercises/practice/scrabble-score/tst/scrabble-score/scrabble-score.cut @@ -44,7 +44,7 @@ TestCase "english-like word" EXPECT WS-RESULT = 8 TestCase "empty input" - MOVE "" TO WS-WORD + MOVE SPACE TO WS-WORD PERFORM SCRABBLE-SCORE EXPECT WS-RESULT = 0 diff --git a/exercises/practice/square-root/.meta/proof.ci.cob b/exercises/practice/square-root/.meta/proof.ci.cob index c376caac..77a086d8 100644 --- a/exercises/practice/square-root/.meta/proof.ci.cob +++ b/exercises/practice/square-root/.meta/proof.ci.cob @@ -7,6 +7,4 @@ PROCEDURE DIVISION. SQUARE-ROOT. - COMPUTE WS-SQRT = WS-NUMBER ** .5 - - DISPLAY WS-SQRT. + COMPUTE WS-SQRT = WS-NUMBER ** 0.5. diff --git a/exercises/practice/square-root/src/square-root.cob b/exercises/practice/square-root/src/square-root.cob index bb3d38ff..45bb18ca 100644 --- a/exercises/practice/square-root/src/square-root.cob +++ b/exercises/practice/square-root/src/square-root.cob @@ -7,4 +7,3 @@ PROCEDURE DIVISION. SQUARE-ROOT. - diff --git a/exercises/practice/yacht/.meta/proof.ci.cob b/exercises/practice/yacht/.meta/proof.ci.cob index 53087ffa..108191c3 100644 --- a/exercises/practice/yacht/.meta/proof.ci.cob +++ b/exercises/practice/yacht/.meta/proof.ci.cob @@ -227,4 +227,3 @@ END-PERFORM. BUBBLE-SORT-EXIT. EXIT. - \ No newline at end of file