COBOL:语法错误,意外排序,需要标识符和连续字符

COBOL:语法错误,意外排序,需要标识符和连续字符,cobol,Cobol,我刚开始在我的COBOL类中使用COBOL,我不知道第9行、第30行和第62行有什么问题。希望你能帮助我。多谢各位 ****************************************************************** * Author: Emil * Date: 12/02/21 * Purpose: Sorting and Debugging * Tectonics: cobc ******************************

我刚开始在我的COBOL类中使用COBOL,我不知道第9行、第30行和第62行有什么问题。希望你能帮助我。多谢各位

  ******************************************************************
  * Author: Emil
  * Date: 12/02/21
  * Purpose: Sorting and Debugging
  * Tectonics: cobc
  ******************************************************************
   PROGRAM-ID. InputSort.
   PROCEDURE DIVISION
   Using SORT and INPUT PROCEDURE. The program accepts records
* from the user and RELEASEs them to the work file
*      where they are sorted. This program
*      allows student records to be entered in any order but
*      produces a file sequenced on ascending StudentId.

   ENVIRONMENT DIVISION
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT StudentFile ASSIGN TO "SORTSTUD.DAT"
    ORGANIZATION IS LINE SEQUENTIAL.
   SELECT WorkFile ASSIGN TO "WORK.TMP".


   DATA DIVISION.
   FILE SECTION.
FD StudentFile.
01 StudentDetails      PIC X(30).

* The  StudentDetails record has the description shown below.
* But  in this program we don't need to refer to any of the items in
* the  record and so we have described it as PIC X(32)
* 01   StudentDetails
*      02  StudentId       PIC 9(7).
*      02  StudentName.
*        03 Surname      PIC X(8).
*        03 Initials     PIC XX.
*      02  DateOfBirth.
*        03 YOBirth      PIC 9(4).
*        03 MOBirth      PIC 9(2).
*        03 DOBirth      PIC 9(2).
*      02  CourseCode      PIC X(4).
*      02  Gender          PIC X.

   SD WorkFile.
   01 WorkRec.
       02  WStudentId       PIC 9(7).
       02  FILLER           PIC X(23).


   PROCEDURE DIVISION.
Begin.
   SORT WorkFile ON ASCENDING KEY WStudentId
    INPUT PROCEDURE IS GetStudentDetails
    GIVING StudentFile.
   STOP RUN.


GetStudentDetails.
   DISPLAY "Enter student details using template below."
   DISPLAY "Enter no data to end.".
   DISPLAY "Enter - StudId, Surname, Initials, YOB, MOB, DOB, Course, Gender"
   DISPLAY "NNNNNNNSSSSSSSSIIYYYYMMDDCCCCG"
   ACCEPT  WorkRec.
   PERFORM UNTIL WorkRec = SPACES
   RELEASE WorkRec
   ACCEPT WorkRec
   END-PERFORM.

一般注意事项:注意经期(句号)。它们有意义。在COBOL中,许多是可选的,但有些不是。在放置位置上保持一致。在程序部门,这一点尤其重要

第8行,
程序部分
。好的,这是第一个问题。按顺序划分为
标识
环境
数据
程序
。在这里进行
程序划分
有点不正常,并且错过了所需的时间。也许你的意思是
identificationdivision.
,但即使如此,它也应该是第一个语句,但用于注释

第9行及以下内容:此类注释通常由
注释进行。
标题,或将其全部(包括第9行)编入注释

第30行:我认为评论没有问题。你是说别的线路吗

第62行:我看没问题。错误消息是什么


但是您的执行循环将永远不会开始或结束,因为循环内部(
perform
通过
end-perform
)没有任何更改
WorkRec
。也许您想在循环中添加一个额外的
ACCEPT
语句,在
PERFORM
语句中使用
WITH TEST AFTER
子句,并将
ACCEPT
语句移动到循环中。

第9行(我认为)必须是IDENTIFICATION-DIVISION。不是程序司。您的环境部门声明必须以句号结尾。第二个StudentDetails必须以句号结束。你不可能有两个同名的字段,你很幸运,某个有经验的灵魂告诉你如何纠正错误。对于将来的问题,请发布您收到的错误消息。这将帮助那些试图帮助你的人。谢谢。
procedure division
不应跟随
Program id
(第8行)。第9行应以
*
开头以表示评论谢谢您的帮助!我很抱歉邮件太乱了。我不知道如何更好地表达它。在你给我的帮助下,我将努力理解如何正确地调试它。我必须承认,我仍然使用传统的源代码格式,因此我不知道与源代码格式相关的内容是否与这里的错误有关。