Visual Basic의 MID 함수 대신 COBOL을 찾고 있습니다. 내가해야 할 일은 처음 5 글자를 8 줄에서 가져 와서 연결하는 것입니다.BASIC의 MID 대신 COBOL을 사용하고 문자열을 연결하는 방법은 무엇입니까?
후지쯔 코볼을 사용하고 있습니다.
많은 감사,
이반
Visual Basic의 MID 함수 대신 COBOL을 찾고 있습니다. 내가해야 할 일은 처음 5 글자를 8 줄에서 가져 와서 연결하는 것입니다.BASIC의 MID 대신 COBOL을 사용하고 문자열을 연결하는 방법은 무엇입니까?
후지쯔 코볼을 사용하고 있습니다.
많은 감사,
이반
Paxdiablo에는 몇 가지 유효한 방법이 있습니다. 또 다른 방법은 STRING
동사 외에 참조 수정을 사용하는 것입니다. 전체 프로그램의 예는 다음과 같습니다 이것은 상세에 꽤 줄인다 단일 문에서 연결을 캡처
IDENTIFICATION DIVISION.
PROGRAM-ID. EXAMPLE9.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 STRINGS.
05 STRING1 PIC X(10) VALUE 'AAAAAAAAAA'.
05 STRING2 PIC X(10) VALUE 'BBBBBBBBBB'.
05 STRING3 PIC X(10) VALUE 'CCCCCCCCCC'.
05 STRING4 PIC X(10) VALUE 'DDDDDDDDDD'.
05 STRING5 PIC X(10) VALUE 'EEEEEEEEEE'.
05 STRING6 PIC X(10) VALUE 'FFFFFFFFFF'.
05 STRING7 PIC X(10) VALUE 'GGGGGGGGGG'.
05 STRING8 PIC X(10) VALUE 'HHHHHHHHHH'.
05 STRING-OUT PIC X(40) VALUE SPACES.
PROCEDURE DIVISION.
STRING STRING1(1:5) STRING2(1:5) STRING3(1:5) STRING4(1:5)
STRING5(1:5) STRING6(1:5) STRING7(1:5) STRING8(1:5)
DELIMITED BY SIZE
INTO STRING-OUT
DISPLAY STRING-OUT
GOBACK.
. 가장 좋은 조언은 STRING
동사를 읽는 것입니다. 사용할 수있는 혁신적인 방법이 많이 있습니다.
COBOL은 BASIC MID 문과 정확한 아날로그를 제공하지 않습니다. STRING
, UNSTRING
, INSPECT
및 참조 수정의 조합을 사용하여 유사한 작업을 수행 할 수 있습니다. 참조 수정의 예는 다음과 같습니다. SOME-VARIABLE-NAME(1:5)
- 1 : 5 비트는 SOME-VARIABLE-NAME
의 하위 문자열을 길이가 5 문자 인 첫 번째 문자로 시작하여 지정합니다. 수정자는 그 자체가 숫자 변수 일 수 있습니다. STRING
및 UNSTRING
동사는 매우 강력한 기능을 제공합니다.
일반적으로 COBOL은 문자열 조작에 특히 좋지 않습니다 (일부는 그다지 좋지 않다고 말할 수도 있지만 그 진술에는 동의하지 않습니다). 여기에 문자열 구문에서
가 대단히 감사합니다, thsis 내 문제를 해결 :) – friedkiwi
는 나는 이런 식 생각 :
WORKING STORAGE SECTION.
01 NORMAL-STRING-A PIC X(80)
01 NORMAL-STRING-B PIC X(80)
01 NORMAL-STRING-C PIC X(80)
01 NORMAL-STRING-D PIC X(80)
01 NORMAL-STRING-E PIC X(80)
01 SUB-STRING.
05 FIVE PIC X(5)
05 REST PIC X(75)
01 TWENTY-FIVE-A.
05 FIVE-A PIC X(5).
05 FIVE-B PIC X(5).
05 FIVE-C PIC X(5).
05 FIVE-D PIC X(5).
05 FIVE-E PIC X(5).
01 TWENTY-FIVE-B PIC X(25).
PROCEDURE DIVISION.
MOVE NORMAL-STRING-A TO SUB-STRING.
MOVE FIVE TO FIVE-A.
MOVE NORMAL-STRING-B TO SUB-STRING.
MOVE FIVE TO FIVE-B.
MOVE NORMAL-STRING-C TO SUB-STRING.
MOVE FIVE TO FIVE-C.
MOVE NORMAL-STRING-D TO SUB-STRING.
MOVE FIVE TO FIVE-D.
MOVE NORMAL-STRING-E TO SUB-STRING.
MOVE FIVE TO FIVE-E.
MOVE TWENTY-FIVE-A TO TWENTY-FIVE-B.
그런 다음 문자열이 TWENTY-FIVE-B
입니다.
당신은 사람들이 COBOL이 더 심각한 음, 난 당신이 동일한 결과를 얻기 위해 이러한 라인을 따라 뭔가를 할 수 있다고 생각에 자세한 :-)
라고 생각하는 이유는 (당신이 상상할 수없는, 알고 내가 어떤 심각한 COBOL을 한 이후 시작과 길이 매개 변수와 함께 바이올린 할 수 있습니다, 그것은) 동안이었다 :
WORKING STORAGE SECTION.
01 STRING-A PIC X(80)
01 STRING-B PIC X(80)
01 STRING-C PIC X(80)
01 STRING-D PIC X(80)
01 STRING-E PIC X(80)
01 TWENTY-FIVE PIC X(25).
PROCEDURE DIVISION.
MOVE STRING-A(1:5) TO TWENTY-FIVE(1:5).
MOVE STRING-B(1:5) TO TWENTY-FIVE(6:5).
MOVE STRING-C(1:5) TO TWENTY-FIVE(11:5).
MOVE STRING-D(1:5) TO TWENTY-FIVE(16:5).
MOVE STRING-E(1:5) TO TWENTY-FIVE(21:5).
이 substring examples 페이지에 몇 가지 변화를 보여줍니다. 예 :
* Task3 suffix(xStr,Length)
* Extract the last Length number of chars from a string
* Solution - use reference modification with start of substring
* defined as the FullStringLength - SubStringLength + 1
* In this example we get the last 13 characters.
MOVE 13 TO StrLength
DISPLAY "Task3 = " xStr2((StrSize - StrLength) + 1:StrLength)
WORKING STORAGE SECTION.
01 NORMAL-STRING-A PIC X(80)
01 NORMAL-STRING-B PIC X(80)
01 NORMAL-STRING-C PIC X(80)
01 NORMAL-STRING-D PIC X(80)
01 NORMAL-STRING-E PIC X(80)
01 TWENTY-FIVE-A.
05 FIVE-A PIC X(5).
05 FIVE-B PIC X(5).
05 FIVE-C PIC X(5).
05 FIVE-D PIC X(5).
05 FIVE-E PIC X(5).
01 TWENTY-FIVE-B REDEFINES TWENTY-FIVE-A PIC X(25).
PROCEDURE DIVISION.
MOVE NORMAL-STRING-A TO FIVE-A
MOVE NORMAL-STRING-B TO FIVE-B
MOVE NORMAL-STRING-C TO FIVE-C
MOVE NORMAL-STRING-D TO FIVE-D
MOVE NORMAL-STRING-E TO FIVE-E
봐 : http://stackoverflow.com/questions/46863/concatenating-unknown-length-strings-in-cobol – gimel