Hi, sorry for my English.
I've created a menu in COBOL that select subroutines using EVALUATE command.
It works perfectly at the first call, but, when it come back from the subroutine the CALL command does not work any more. It works just for the first time.
I'm using SCREEN SECTION to format the screens on menu and CRUD subroutines.
Any idea?
Thanks in advance.
following the code:
IDENTIFICATIONDIVISION.PROGRAM-ID.SCMP0100. *ENVIRONMENTDIVISION.CONFIGURATIONSECTION.SPECIAL-NAMES.DECIMAL-POINTISCOMMA. *INPUT-OUTPUTSECTION.FILE-CONTROL. *DATADIVISION.FILESECTION.WORKING-STORAGESECTION. *01 WS-COM-AREA.03 WS-MENSAGEMPIC X(20). *77 WS-OPCAO-MENUPIC X(01).77 WS-PROMPTPIC X(01). *77 WS-EXITPIC X(01).88 EXIT-OKVALUE "S"FALSE "N". *LINKAGESECTION. *01 LK-COM-AREA.03 LK-MENSAGEMPIC X(20). *SCREENSECTION.01 SS-CLEAR-SCREEN.05 BLANKSCREEN. *01 SS-MENU-SCREEN.05 LINE02 COL05 VALUE "SISTEMA DE COMPRAS DE MERCADO".05 LINE03 COL05 VALUE"SMCP0100 - Menu do Cadastro de Tipos de Produtos".05 LINE04 COL05 VALUE"-------------------------------------------------------------"--------------".05 LINE06 COL05 VALUE"<1> - INCLUSAO DE TIPOS DE PRODUTOS".05 LINE07 COL05 VALUE"<2> - RELATORIO DE TIPOS DE PRODUTOS".05 LINE08 COL05 VALUE"<3> - ALTERACAO DE TIPOS DE PRODUTOS".05 LINE09 COL05 VALUE"<4> - EXCLUSAO DE TIPOS DE PRODUTOS".05 LINE10 COL05 VALUE"<Q> - RETORNAR MENU PRINCIPAL".05 LINE12 COL05 VALUE"-------------------------------------------------------------"--------------".05 LINE13 COL05 VALUE"DIGITE A OPCAO DESEJADA: ".05 SS-OPCAO-MENUREVERSE-VIDEOPIC X(01)USINGWS-OPCAO-MENU.05 LINE14 COL05 VALUE"-------------------------------------------------------------"--------------". *PROCEDUREDIVISIONUSINGLK-COM-AREA. *MAIN-PROCEDURE.SETEXIT-OKTOFALSE. *PERFORMUNTILEXIT-OKMOVESPACES TOWS-OPCAO-MENU *DISPLAYSS-CLEAR-SCREENDISPLAYSS-MENU-SCREENACCEPT SS-MENU-SCREEN *EVALUATEWS-OPCAO-MENUWHEN "1"CALL "SCMP0101"USINGWS-COM-AREAWHEN "2"CALL "SCMP0102"USINGWS-COM-AREAWHEN "3"CALL "SCMP0103"USINGWS-COM-AREAWHEN "4"CALL "SCMP0104"USINGWS-COM-AREAWHEN "Q"SETEXIT-OKTOTRUEWHEN "q"SETEXIT-OKTOTRUEWHENOTHERSETEXIT-OKTOFALSEEND-EVALUATEEND-PERFORM.GOBACK.ENDPROGRAMSCMP0100.IDENTIFICATIONDIVISION.PROGRAM-ID.SCMP0101. *ENVIRONMENTDIVISION.CONFIGURATIONSECTION.SPECIAL-NAMES.DECIMAL-POINTISCOMMA. *INPUT-OUTPUTSECTION.FILE-CONTROL.SELECTTP-PRODUTOASSIGNTO"F:\Meus Docs - Disco Rigido\Desenv\Meus Projetos\COMPRAS-"-MERCADO\Arquivos\TP-PRODUTO.dat"ORGANIZATION ISINDEXEDACCESS ISRANDOMRECORDKEY ISCOD-TIPOFILESTATUS ISWS-FS-TP-PRODUTO. *DATADIVISION.FILESECTION.FDTP-PRODUTO.COPY "F:\Meus Docs - Disco Rigido\Desenv\Meus Projetos\COMPRA-"S-MERCADO\Copybooks\TpProduto.cpy".WORKING-STORAGESECTION. *01 WS-REG-TIPO-PRODUTO.05 WS-COD-TIPOPIC X(10).05 WS-DESC-TIPOPIC X(50). *77 WS-FS-TP-PRODUTOPIC X(02).88 WS-FS-OKVALUE "00".88 WS-FS-NAO-EXISTEVALUE "35". *77 WS-RESPOSTA-TELAPIC X(01).88 FLAG-SAIRVALUE "Q".88 FLAG-GRAVARVALUE "S". *77 WS-MENSAGEMPIC X(50)VALUESPACES.77 WS-PROMPTPIC X(01)VALUESPACES. *LINKAGESECTION. *01 LK-COM-AREA.03 LK-MENSAGEMPIC X(20). *SCREENSECTION. *01 SS-CLEAR-SCREEN.05 BLANKSCREEN. *01 SS-INPUT-SCREEN.05 LINE02 COL05 VALUE "CADASTRO DE TIPOS DE PRODUTOS".05 LINE03 COL05 VALUE "SMCP0101 - Inclusao".05 LINE04 COL05 VALUE"-------------------------------------------------------------"--------------".05 LINE06 COL05 VALUE "Tipo Porduto..: ".05 SS-COD-TIPOREVERSE-VIDEOPIC X(10)USINGWS-COD-TIPO.05 LINE08 COL05 VALUE "Desc Produto..: ".05 SS-DESC-TIPOREVERSE-VIDEOPIC X(50)USINGWS-DESC-TIPO.05 LINE10 COL05 VALUE"-------------------------------------------------------------"--------------".05 LINE11 COL05 VALUE"<S> para confirmar ou <Q> para Sair. ".05 SS-RESPOSTA-TELAREVERSE-VIDEOPIC X(01)USINGWS-RESPOSTA-TELA.05 LINE12 COL05 VALUE"-------------------------------------------------------------"--------------". *01 SS-LINHA-DE-MENSAGEM.05 SS-MENSAGEMPIC X(50)USINGWS-MENSAGEMLINE13 COL05. *01 SS-LIMPA-MENSAGEM.05 LINE13 BLANKLINE. *PROCEDUREDIVISIONUSINGLK-COM-AREA. *MAIN-PROCEDURE.PERFORMP100-INICIALIZATHRUP100-FIM.PERFORMP300-CADASTRATHRUP300-FIMUNTILFLAG-SAIR.PERFORMP900-FIM.P100-INICIALIZA.SETWS-FS-OKTO TRUE.OPENI-OTP-PRODUTOIFWS-FS-NAO-EXISTETHENOPENOUTPUTTP-PRODUTOEND-IF. *IFNOTWS-FS-OKTHENSTRING "ERRO NA ABERTURA DO ARQUIVO FS: "WS-FS-TP-PRODUTOINTOWS-MENSAGEMDISPLAYSS-LINHA-DE-MENSAGEMACCEPTWS-PROMPTAT1301DISPLAYSS-LIMPA-MENSAGEMPERFORMP900-FIMEND-IF. *P100-FIM. *P300-CADASTRA. *MOVESPACES TOWS-COD-TIPO.MOVESPACES TOWS-DESC-TIPO.MOVESPACES TOWS-RESPOSTA-TELA. *DISPLAYSS-CLEAR-SCREEN.DISPLAYSS-INPUT-SCREEN.ACCEPT SS-INPUT-SCREEN. *IFFLAG-GRAVARTHENIFWS-COD-TIPOEQUAL SPACESTHENMOVE "CODIGO DE TIPO INVALIDO."TOWS-MENSAGEMDISPLAYSS-LINHA-DE-MENSAGEMACCEPTWS-PROMPTAT1301DISPLAYSS-LIMPA-MENSAGEMELSEMOVEWS-COD-TIPOTOCOD-TIPOMOVEWS-DESC-TIPOTODESC-TIPOWRITE REG-TIPO-PRODUTOIFNOTWS-FS-OKIFWS-FS-TP-PRODUTO="22"THENMOVE "TIPO DE PRODUTO JÁ CADATRADO"TOWS-MENSAGEMDISPLAYSS-LINHA-DE-MENSAGEMACCEPTWS-PROMPTAT1301DISPLAYSS-LIMPA-MENSAGEMELSEMOVE "ERRO NA GRAVACAO DO ARQUIVO"TOWS-MENSAGEMDISPLAYSS-LINHA-DE-MENSAGEMACCEPTWS-PROMPTAT1301DISPLAYSS-LIMPA-MENSAGEMEND-IFEND-IFEND-IFEND-IF. *P300-FIM. *P900-FIM.CLOSETP-PRODUTO.GOBACK.ENDPROGRAMSCMP0101.
Hi Anonymous (registering/login helps to know how is writing and removes the manual moderation work)!
I don't know what "does not work" actually mean, can you elaborate?
In any case as something seems to be strange for you, I highly suggest to compile all the related sources with --debug which enables full runtime checks, often finding issues when they happen.
You may also want to compile with -W or even -Wextra to find potential coding/portability issues.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, sorry for my English.
I've created a menu in COBOL that select subroutines using
EVALUATEcommand.It works perfectly at the first call, but, when it come back from the subroutine the
CALLcommand does not work any more. It works just for the first time.I'm using
SCREEN SECTIONto format the screens on menu and CRUD subroutines.Any idea?
Thanks in advance.
following the code:
Last edit: Simon Sobisch 2024-03-12
Hi Anonymous (registering/login helps to know how is writing and removes the manual moderation work)!
I don't know what "does not work" actually mean, can you elaborate?
In any case as something seems to be strange for you, I highly suggest to compile all the related sources with
--debugwhich enables full runtime checks, often finding issues when they happen.You may also want to compile with
-Wor even-Wextrato find potential coding/portability issues.