Форум программистов, компьютерный форум, киберфорум
Другие языки программирования
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 1
Регистрация: 27.02.2012
Сообщений: 55
1

COBOL Найти последнюю строку (и первую)

17.11.2015, 15:50. Показов 2973. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вобщем есть файл со случайным количеством строк, к примеру:
файл 1
строка 1
строка 2
строка 3
Цель: вывести в один файл первую и последнюю строку, а в другой остальные.

Для файла выше будет:
файл 2
строка 1
строка 3
файл 3
строка 2

Мой код не до конца работает. Пишет в файл 3 первую строку, и остальные в файл 2.
Вот:
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
* OPEN FILE                                                    
     PERFORM APERTURA-ARCHIVI    THRU EX-APERTURA-ARCHIVI      
     INITIALIZE CONTATORI                                      
* read / write                                       
     PERFORM LEGGI-FILEIN        THRU   EX-LEGGI-FILEIN   // reading file 1
     MOVE REC-FILEIN TO REC-FILEOUT2                           
     PERFORM SCRIVI-FILEOUT2     THRU   EX-SCRIVI-FILEOUT2     //writing to file 3
     PERFORM LEGGI-FILEIN        THRU   EX-LEGGI-FILEIN     //reading file 1   
     PERFORM UNTIL FINE-FILEIN                                 
         MOVE T           TO   REC-FILEOUT                     
         PERFORM SCRIVI-FILEOUT    THRU   EX-SCRIVI-FILEOUT    //writing to file 2
         PERFORM LEGGI-FILEIN      THRU   EX-LEGGI-FILEIN      //reading file 1
         MOVE REC-FILEIN  TO   T                               
     END-PERFORM                                               
* SFARSIT S                                                    
     PERFORM CHIUSURA-ARCHIVI    THRU   EX-CHIUSURA-ARCHIVI    // close files
     MOVE ZERO                   TO RETURN-CODE                
     GOBACK                                                    
     .
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2015, 15:50
Ответы с готовыми решениями:

Найти количество строк (столбцов), похожих на первую (последнюю) строку (столбец)
Ребята... Просьба товарища помочь... Сам паскалем не занимаюсь... Кто знает, напишите код решения...

Найти количество строк/столбцов похожих на первую/последнюю строку/столбец
Дана целочисленная матрица размера N×M. Различные строки (столбцы) матрицы назовем похожими, если...

Во всех словах заменить первую букву на последнюю, а последнюю на первую. Как считывать каждое слово?
Ребята, написал программу, выполняла свое предназначение, но меня преподаватель попросил записать в...

Поменять местами первую строку и последнюю строку матрицы
Вот что я делал и хочу дальше в таком стиле делать , const n=3; var a:array of integer;...

10
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
19.11.2015, 23:27 2
Лучший ответ Сообщение было отмечено Kukstyler как решение

Решение

TheAntony, т.к. вы показываете только вызовы параграфов, я набросал Вам программку делающую то, что Вам надо. Если возникнут вопросы, спрашивайте:


Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 IDENTIFICATION DIVISION.
 PROGRAM-ID. PGM0001.
 
 ENVIRONMENT DIVISION.
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
 
     SELECT FILE1
     ASSIGN TO "FILE1.DB".
     
     SELECT FILE2
     ASSIGN TO "FILE2.DB".
     
     SELECT FILE3
     ASSIGN TO "FILE3.DB".
     
 DATA DIVISION.
 FILE SECTION.
 
 FD  FILE1.
 01  RE-FILE1              PIC X(10).
 
 FD  FILE2.
 01  RE-FILE2              PIC X(10).
 
 FD  FILE3.
 01  RE-FILE3              PIC X(10).
 
 WORKING-STORAGE SECTION.
 01  SV-REG                PIC X(10).
 01  SW-EOF                PIC X.
     88  SW-EOF-YES                  VALUE 'Y'.
     88  SW-EOF-NO                   VALUE 'N'.
      
 PROCEDURE DIVISION.
 
     OPEN INPUT  FILE1
     OPEN OUTPUT FILE2
     OPEN OUTPUT FILE3
     
     SET SW-EOF-NO TO TRUE     
     
     PERFORM READ-FILE1
     
     IF  SW-EOF-NO
         WRITE RE-FILE2 FROM RE-FILE1      
     
         PERFORM READ-FILE1
         
         IF  SW-EOF-NO
             MOVE RE-FILE1 TO SV-REG
             
             PERFORM READ-FILE1
             
             IF  SW-EOF-NO
                 PERFORM UNTIL SW-EOF-YES
                     WRITE RE-FILE3 FROM SV-REG
                     
                     MOVE RE-FILE1 TO SV-REG
                     
                     PERFORM READ-FILE1
                 END-PERFORM
             END-IF
             
             WRITE RE-FILE2 FROM SV-REG
         END-IF
     END-IF
     
     CLOSE FILE1
     CLOSE FILE2
     CLOSE FILE3     
     
     STOP RUN.
     
 READ-FILE1.
     
     READ FILE1
         AT END
             SET SW-EOF-YES TO TRUE
     END-READ
     .
0
0 / 0 / 1
Регистрация: 27.02.2012
Сообщений: 55
23.11.2015, 15:48  [ТС] 3
Kukstyler, большое спасибо! Я кстати, уже разработал свой алгоритм, но он много запутаннее вашего способа. К сожалению, сейчас выложить его не смогу, ибо приболел, а код в мейнфрейме на работе. Кстати, отсюда возник новый вопрос.

Я сейчас прохожу некую практику на работе, мы учимся программировать в Коболе. Так как я приболел, то придется пропустить неделю-две занятий, что очень плохо. Подскажите вот, есть ли на Windows компилятор Cobol с JCL?

Мне очень понравился Open Cobol, но, как я понял, в нем нету JCL.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,653
Записей в блоге: 13
23.11.2015, 18:53 4
TheAntony, JCL - это "Job Control Language"?
0
0 / 0 / 1
Регистрация: 27.02.2012
Сообщений: 55
23.11.2015, 19:25  [ТС] 5
Да, у нас на мейнфрейме программы Кобол и ЖСЛ взаимосвязаны.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,653
Записей в блоге: 13
23.11.2015, 19:58 6
Цитата Сообщение от TheAntony Посмотреть сообщение
Да, у нас на мейнфрейме программы Кобол и ЖСЛ взаимосвязаны.
- не думаю. Пример связи можешь привести?
0
0 / 0 / 1
Регистрация: 27.02.2012
Сообщений: 55
23.11.2015, 21:18  [ТС] 7
К примеру запуск Кобол-программы осуществляется через ЖСЛ. В том же ЖСЛ связываешь к Кобол-программе файлы, или передаешь параметры(аргументы).
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,653
Записей в блоге: 13
23.11.2015, 22:44 8
Ну в ОС-360 (и последующих) запуск программ на любых языках выполняется посредством системного ввода (RDR) задания на JCL. В коде программы имени файла соответствует имя DD-предложения задания на JCL. Еще в задании можно сформировать параметр, передаваемый через поле PARM. Все. Больше программа и JCL никак не связаны. В частности, в программе (на Коболе) нельзя задать имя набора данных на диске (это прерогатива JCL). [В действительности, если написать ассемблерную связку и модифицировать блок JFCB, то имя набора данных можно установить из кода (опять же, на любом языке)].

Поэтому никакой "привязки" Кобола к JCL нет.
0
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
24.11.2015, 00:42 9
TheAntony, не проблема, я в данной теме разбираюсь неплохо. Спрашивайте всё, что будет нужно.

Catstail, я не совсем согласен. В z/OS (MVS) Кобол программы запускаются либо через JCL, либо через CICS. Сама по себе Кобол программа как правило под z/OS запущена быть не может, а точнее такое не делается (мочь - наверное может, панельное программирование под z/OS), но я на практике никогда такого не видел. Естественно, любые программы для Батч процессов запускаются через JCL. Но, на пример тот же REXX можно запустить командой EXEC прямо из ISPF, с Кобол-ом такое не пашет. По-этому, я бы сказал, что в традиционном программировании на Кобол-е под z/OS всё так и Кобол в связке с JCL (опять так и в Батч процессах) но не наоборот.

Добавлено через 4 минуты
TheAntony, забыл ответить, Windows не работает с JCL, у него свои *.bat файлики. Существует MicroFocus ServerExpress но он должен подключаться к серверу и если не ошибаюсь (сам я с ним не работал), это скорее локальный IDE-редактор и менеджер.

A JCL штука не сложная, можете тоже спрашивать, как там и что устроено.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,653
Записей в блоге: 13
24.11.2015, 10:05 10
Kukstyler, я неплохо помню JCL. Что там специфически "кобольного"? А в CICS есть средства динамического создания DD-предложений? Я очень давно запускал на ЕС-1046 Каму (краденный CICS), что-то не припомню...
0
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
24.11.2015, 13:30 11
Catstail, Вы правы, специфически Кобольного там ничего нет. Просто Кобол де-факто привязан к JCL для запуска, я думаю ТС это имел в виду, и именно в этом я с ним согласен. В остальном Вы всё правильно сказали, через JCL запускаются программы написанные на любых языках, утилиты и процедуры.

Касаемо CICS, (если я правильно понял, "DD-предложеня" = "DD Statement"), такой возможности нет. Нужно декларировать файл (как впрочем всё остальное) в CICS через транзакцию CEDA (опция DEF).

Сегодня особенно в CICS с файлами никто не работает, уже давно все перешли на DB2.
1
24.11.2015, 13:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2015, 13:30
Помогаю со студенческими работами здесь

Дан текстовый файл. Вставить в начало файла его последнюю строку, а в конец первую строку.
Помогите решить задание, заранее спасибо. Дан текстовый файл. Вставить в начало файла его...

Во всех словах заменить первую букву на последнюю, а последнюю на первую
Program Files; Uses crt; type f1=file of integer; Procedure Input(n:integer; Var S:string; Var...

Во всех словах заменить первую букву на последнюю, а последнюю на первую
Ребят, помогите, нету никаких догадок как вообще. Даже начать не с чего, ибо не понимаю как...

Умножить первую и последнюю строку в матрице
Вот мое, знаю ,как сделать это задание длинным способом, но если возможно через ИФ , то хотелось бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru