2013-02-07 8 views
0

의 특정 라인을 확인, 나는 아주 각이 정확히 포함 것으로 예상된다 무엇을하려고 해요 3 선DCL은 DCL 사용 DCL

Line 1 test. 
Line 2 test. 
Line 3 test. 

있는 .txt 파일이 있습니다. 나는 현재 라인 1의 출력을 줄 것이지만 2 번과 3 번 라인을 확인하는 방법을 알 수없는 f @ 추출 기능을 사용하고 있습니다. 2 번과 3 번 라인이 올바른지 확인하기 위해 어떤 기능을 사용할 수 있습니까?

$ OPEN read_test test.dat 
$ READ/END_OF_FILE=ender read_test cc 
$ line1 = f$extract(0,15,cc) 
$ if line1.nes."Line 1 test." 
$ then 
$ WRITE SYS$OUTPUT "FALSE" 
$ endif 
$ line2 = f$extract(??,??,cc) ! f$extract not possible for multiple lines? 
$ if line2.nes."Line 2 test." 
$ then 
$ WRITE SYS$OUTPUT "FALSE" 
$ endif 
+0

>> $ OPEN read_test test.dat. 무료 조언? 열기 전에 $ CLOSE/NOLOG read_test를 넣으십시오. 테스트 과정에서 또는 다른 방법으로 파일을 닫을 때까지 절차를 날려 버리면 파일이 열려 있고 읽기가 계속되면 OPEN이 무시되어 첫 번째 파일을 찾아 낼 수 있습니다 6 번. 건배, 하인. – Hein

답변

2

...

$ READ READ/END_OF_FILE=ender read_test cc 
$ if f$extract(0,15,cc).nes."Line 1 test." ... 
$ READ READ/END_OF_FILE=ender read_test cc 
$ if f$extract(0,15,cc).nes."Line 2 test." ... 
$ READ READ/END_OF_FILE=ender read_test cc 
$ if f$extract(0,15,cc).nes."Line 3 test." ... 

더 이상 당신은 대답으로 루프가되고 싶어요. Chris의 접근 방식에 대한 후속 조치를 취하려면 먼저 값 배열을 준비한 다음 값이있는 한 루프 읽기 및 비교를 원할 수 있습니다. 테스트되지 않은 :

$ line_1 = "Line 1 test." 
$ line_2 = "Line 2 test." 
$ line_3 = "Line 3 test." 
$ line_num = 1 
$ReadNext: 
$ READ/END_OF_FILE=ender read_test cc 
$ if line_'line_num'.nes.cc then WRITE SYS$OUTPUT "Line ", line_num, " FALSE" 
$ line_num = line_num + 1 
$ if f$type(line_'line_num').NES."" then GOTO ReadNext 
$ WRITE SYS$OUTPUT "All provided lines checked out TRUE" 
$ GOTO end 
$Ender: 
$ WRITE SYS$OUTPUT "Ran out of lines too soon. FALSE" 
$end: 
$ close Read_Test 

HTH, 하인.

1

이 변형을 시도해보십시오 (테스트되지 않았으므로 약간의 디버깅이 필요합니다). 기호 대체를 사용하여 현재 행을 추적합니다.

당신이 3 읽고 3 비교하고 싶은 단지 수 정확히 3 라인
$ OPEN read_test test.dat 
$ line_num = 1 
$ ReadNext: 
$ READ/END_OF_FILE=ender read_test cc 
$ line'line_num' = f$extract(0,15,cc) 
$ if line'line_num'.nes."Line ''line_num' test." 
$ then 
$  WRITE SYS$OUTPUT "FALSE" 
$ endif 
$ goto ReadNext 
$ ! 
$ Ender: 
$ close Read_Test 
$ write sys$output "line1: "+line1 
$ write sys$output "line2: "+line2 
$ write sys$output "line3: "+line3 
$ exit