A study of errors, error-proneness, and error diagnosis of programming languages with special reference to cobol.