Ok, to jest mój pierwszy kiedykolwiek tutaj i jest to część, w której utknąłem. Biorę plik wejściowy i wytwarzam listę błędów, jedną z części, które muszę zrobić, to dla dzielnicy szkolnej, która jest ciągiem 3. W Wydziale Procedursu wykonałem akapit B, wykonaj akapit C

B-akapit jest tam, gdzie występują wszystkie inne błędy, ponieważ naprawdę wymagają 1, jeśli stwierdzenie.

C-akapit to część dzielnicy szkolnej. Sprawdza, czy dzielnica szkolna nie ma prawidłowego formatu. Jest to tylko ważne, jeśli:

  • Wszystkie 3 znaki to spacje; lub
  • Pierwsze dwa znaki są liczbami i:
    • Jeśli są takie same, trzeci znak nie może być liczbą; lub
    • Jeśli nie są takie same, to jeden z nich musi być nieparzysty, a drugi.

W sekcji przechowywania pracy mam okręg szkolny wymieniony jako

05 District.
             
    10 DistrictA     PIC 9.
              
    10 DistrictB     PIC 9.
              
    10 DistrictC     PIC 9.

A następnie w sekcji akapitów C

            if DistrictA <> " " and DistrictB <> " " 
                and DistrictC <> " "
              write ot-records from 
                "School District is not valid:"
                add 1 to Counter
                  Exit Paragraph
                End-if.

            if DistrictA is not numeric or DistrictB is not numeric
            write ot-records from 
                "School District is not valid:"
                add 1 to Counter 
                  Exit Paragraph
                    End-if.

            if DistrictA = DistrictB
                if DistrictC is numeric
                    write ot-records from 
                "School District is not valid:"
                add 1 to Counter
                  Exit Paragraph
                    End-if
                    Else if DistrictA <> DistrictB and 
                    (DistrictA + DistrictA) / 2   = 0 and 
                    (DistrictB + DistrictB) / 2   <> 0 
                    write ot-records from 
                "School District is not valid:"
                add 1 to Counter
                 Exit Paragraph.

Z wyjścia mówi, że "dzielnica szkolna jest nieprawidłowa" dla każdego pliku. Więc końcowa liczba jest większa niż powinna być.

0
joshua norris 22 październik 2020, 05:15

1 odpowiedź

Najlepsza odpowiedź

W kodzie znajduje się przepływ logiczny. W przypadku "Wszystkie trzy nie są spacjami" Wychodzisz bezpośrednio w pierwszej IF, w przypadku "Wszystkie trzy są spacjami" Zawsze wyjrzysz w drugiej IF (ponieważ pierwsze dwie przestrzenie - & GT; nigdy numeryczny).

Prawdopodobnie chcesz połączyć wiele wpisów lub ułatwić kodu, cofając logikę -> Wyjdź tylko z akapitu, jeśli dzielnica jest ważna, a na ostatnie miejsce należy obsługiwać błąd (który jest przydatny w każdym przypadku, gdy masz to samo Kod dokładnie raz, więc żadna opcja dla literówki w jednym z trzech lub innych trudniejszych do spotka błędów i łatwiej dostosować później).

W zależności od zadania możesz użyć elementów na poziomie 88, aby sprawdzić pewne / wszystkie warunki, w ten sposób są bezpośrednio przymocowane do zmiennych.

1
Simon Sobisch 22 październik 2020, 06:08