You are ANDing your conditions. It seems you want to OR them. Also it seems you have your logic reversed.
I would do it this way…
[...]
FD STUDENTS-FILE-IN.
01 STUDENTS-RECORD-IN.
05 SOCIAL-SECURITY-NUMBER-FIRST-IN PIC X(3).
05 SOCIAL-SECURITY-NUMBER-MIDDLE-IN PIC X(2).
05 SOCIAL-SECURITY-NUMBER-LAST-IN PIC X(4).
05 STUDENT-NAME-FIRST-IN PIC X.
05 STUDENT-NAME-MIDDLE-IN PIC X.
05 STUDENT-NAME-LAST-IN PIC X(9).
05 PIC X(5).
05 GRADUATION-STATUS-IN PIC X.
88 STUDENT-HAS-GRADUATED VALUE 'Y'
05 CLASS-STANDING-IN PIC X.
88 CLASS-STANDING-TO-SKIP VALUES '1' '2'.
05 MAJOR-IN PIC X(3).
88 MAJOR-TO-SKIP VALUES
'DIG' 'NES' 'PGM'.
05 CREDIT-HOURS-EARNED-IN PIC 9(3).
05 CREDIT-POINTS-EARNED-IN PIC 9(3).
[...]
120-CHECK-BYPASS.
IF STUDENT-HAS-GRADUATED
OR CLASS-STANDING-TO-SKIP
OR MAJOR-TO-SKIP
CONTINUE
ELSE
PERFORM 200-PROCESS-ONE-RECORD
END-IF.
This is just freehand, I haven’t tried to compile it.
solved How do I fix a program bypass that is not working?