Nested if statements in cobol

argonXM picture argonXM · Apr 25, 2013 · Viewed 7.1k times · Source

I am trying to use nested if statements in Cobol. As far as I can tell I am following the style guides, but keep receiving the error:

file_name.cob:64: Error: syntax error, unexpected ELSE <- This is the second ELSE statement

The purpose of the code is to function as a Caesar cipher, but it seems to only be the nested if statements that are producing the error. I tried putting the nested statements after the ELSE clause of the initial IF statement, but that was unsuccessful as well.

edit: I am using open-cobol, and and compiling with the '-free' option

    IF CharCount < 26 
                    ADD firstnum, CharCount GIVING stringShift.
                    DISPLAY stringShift.

                    IF FUNCTION MOD(stringShift, 26) IS NOT ZERO 

                            MOVE FUNCTION MOD(stringShift, 26) to stringShift
                            DISPLAY stringShift

                            MOVE abc(stringShift:stringShift) TO newChar
                            DISPLAY newChar

                            STRING newString DELIMITED BY "", newChar DELIMITED BY SIZE INTO newString

                            DISPLAY newString
                    ELSE
                            STRING newString DELIMITED BY "", searchChar DELIMITED BY SIZE INTO newString
                            DISPLAY newString
                    END-IF
            ELSE
                    STRING newString DELIMITED BY "", searchChar DELIMITED BY SIZE INTO newString
                    DISPLAY newString
            END-IF.

Thanks!

Answer

argonXM picture argonXM · Jan 26, 2017

Just wanted to share the answer here, as it was answered in the comp.lang.cobol google group. It was the two periods after the first ADD and DISPLAY lines that were causing the problems. It now compiles successfully.

The lines should appear as:

ADD firstnum, CharCount GIVING stringShift
DISPLAY stringShift