Преобразуйте Informix 4gl в Genero для создания и записи в .4gl - ошибка разрешения на запись в .4gl

У меня есть код в Informix 4gl, который создает и записывает в файл.4gl. Короче говоря, это код, который генерирует новую программу. Он отлично работает в Informix:**

    let p_output = p_prog clipped,".4gl"
    start report rpt1 to p_output
      output to report rpt1()
    finish report rpt1

let run_stmt = "fglpc ",p_prog clipped
    run run_stmt returning p_status
    if p_status != 0 then
      error " Program Compilation failed "
      sleep 1
    end if
  end if

Я пытаюсь преобразовать код Genero для создания и записи в файл.4gl.

    let p_output =  "vi ",p_prog clipped,".4gl"
    let p_binoutput = p_prog clipped,".4gl"
    LET ch_in = base.Channel.create()
    CALL ch_in.openFile(p_binoutput,"w")
      start report rpt1 TO p_output
      output to report rpt1()
    finish report rpt1

  --let run_stmt = "fglpc ",p_prog clipped
    let run_stmt = "fglcomp ",p_prog clipped
    run run_stmt returning p_status
    if p_status != 0 then
      error " Program Compilation failed "
      sleep 1
    end IF
    CALL ch_in.close()
  end if

Но я продолжаю получать сообщение об ошибке в sqlca.sqlerrm:

p_prog.4gl: Permission denied.

или же

vi p_prog.4gl: Permission denied

Как я могу это исправить?

1 ответ

Решение

Единственный код, который вам нужно было изменить при переходе с Informix-4gl на Genero, - это строка

let run_stmt = "fglpc ",p_prog clipped

к

let run_stmt = "fglcomp ",p_prog clipped

чтобы ваша программа использовала компилятор Genero в своем поколении, а не компилятор Informix 4gl.

Не было необходимости вводить использование методов base.Channel. Это предпочтительный способ продвижения к файлам чтения / записи, особенно с невыгружаемым выводом, но старый ОТЧЕТ НАЧАЛА... остается неизменным и должен работать как раньше.

Сообщения об ошибках, которые вы видите, говорят вам, что написано на коробке. Я могу получить его, удалив доступ на запись к p_prog.4gl, поэтому проверьте, существует ли файл и есть ли у вашего пользователя права на запись.

Другая возможная проблема, fglcomp, fglrun, такая же, как и их эквиваленты в Informix, в отношении текущего рабочего каталога и смешивает исходные и скомпилированные объекты в одном каталоге. При использовании Genero Studio он по умолчанию сохраняет исходные и скомпилированные объекты в разных каталогах, поэтому либо измените TargetDirectory, чтобы не использовать bin, либо имейте в виду, что с вашими разрешениями, местоположениями файлов и т. Д. Во время выполнения вы, возможно, находитесь в каталоге bin.

Другие вопросы по тегам