Как создать цикл для перехода к следующей строке - PullRequest
0 голосов
/ 02 июля 2019

Я работаю с мейнфреймом терминала 3270. У меня есть экран с 30 позициями, в котором мне нужно прочитать текстовый файл и вставить значения в столбце A в эти 30 различных позиций на экране. Текстовый файл может иметь любое количество строк, но у меня есть только 30 позиций для вставки за итерацию. После того, как эти 30 позиций заполнены, я нажимаю Enter, что очищает экран, и я могу вставить еще 30 и так далее. Если есть еще 30 для вставки, их может быть меньше 30.

В текстовом файле есть только один столбец (столбец A). Столбец A, строка 1 текстового файла будет вставлена ​​в первую позицию. Столбец А, строка 2 вставится во вторую позицию и так далее ...

Я создал цикл, который читает из моего текстового файла и вытягивает значение в мой код, и я могу вставить значение в эту первую позицию. Затем мне нужно перейти к следующему ряду и вставить следующее значение в следующую позицию. Я пытаюсь сделать это без необходимости создавать 30 различных Do..Until петель.

Вот мой цикл, который читает из текстового файла, это работает:

Sub sub_Run_Loop
    i = 0
    CountLoans = 0
    Do Until objFile.AtEndOfStream
        strLine = objFile.ReadLine
        arrFields = Split(strLine, ",")
        subDoWork (i)
        i = i + 1
    Loop
End Sub

Sub subDoWork (i)
    ColumnA    = arrFields(0)
    CurrentRow = i
    ActualRow  = CurrentRow - 1

    For CurrentRow = 1 To ActualLoans
        subMoveCursor 13, 4
        subEnterData ColumnA
        CountLoans = CountLoans + 1
    Next
    i = i + 1

    'At Right here, I need to move to the next value in Column A
    'from the text file and paste to the next position

    subMoveCursor 14, 4
    subEnterData ColumnA
    CountLoans = CountLoans + 1

    CountLoans = CountLoans + 1
    If CountLoans >= ActualLoans Then
        subEndScript
    End If
End Sub

Я пытаюсь перейти от одной строки к другой, вставляя значения в разные позиции, не создавая 30 разных циклов.

1 Ответ

0 голосов
/ 03 июля 2019

Я решил это. Что я сделал, так это установил порог для трех столбцов, в которых были позиции, в которые мне нужно было вставить, и увеличил этот порог на 10 (10 строк в каждом столбце) после каждой итерации 30. Я также реорганизовал свои подсчеты в цикле THE THE, которая, по-видимому, устранила проблему с последовательным перемещением по строкам в трех столбцах.

    Sub sub_Run_Loop
       Column1Threshold = 10 
       Column2Threshold = 20
       Column3Threshold = 30
       CountButtonClicks = 0
       ClickTime = 30
       i = 1
       CountLoans = 1
       Column = 13


    Do Until objFile.AtEndOfStream
     strLine = objFile.ReadLine
            arrFields = Split(strLine,",")              
            subDoWork (i)               
    i = i + 1
    CountLoans = CountLoans + 1
    Column = Column + 1     
    If Column > 22 Then 
            Column = 13
    End If

    If CountLoans > ClickTime Then
            subPressKey "@E"
            Column1Threshold = Column1Threshold + 10
            Column2Threshold = Column2Threshold + 10
            Column3Threshold = Column3Threshold + 10
            ClickTime = ClickTime + 30
            CountButtonClicks = CountButtonClicks +1
    End If                  

    If CountLoans > ActualLoans Then
            subEndScript    
    End If
    Loop
 End Sub



Sub subDoWork (i)
    ColumnA     = arrFields(0)
    CurrentRow  = i     

    If CountLoans <= Column1Threshold Then                  
        Row = 4
    End If

    If CountLoans > Column1Threshold Then
        Row = 31
    End If

    If (CountLoans >= Column2Threshold) and (CountLoans <= 
    Column3Threshold) Then
        Row = 58
    End If

    subMoveCursor Column, Row                                                           
    subEnterData ColumnA
End Sub
...