преобразование функции OPEN со спецификаторами Err в fortran в функцию fopen в PHP - PullRequest
1 голос
/ 15 февраля 2012

Мне нужно найти эквивалентное выражение для строки fortran в php: fortran code:

10    OPEN(UNIT=10,FILE='TEST.OUT',STATUS='NEW', ERR=9001)
      GOTO 11
9001  OPEN(UNIT=10,FILE='TEST.OUT')
      CLOSE(10,STATUS='DELETE')
      OPEN(UNIT=2,FILE='fort2')
      CLOSE(2,STATUS='DELETE')
      GOTO 10
11    OPEN(UNIT=7,FILE='TEST.SUM',STATUS='NEW')

Я хотел бы преобразовать этот код в код php.Я хотел бы использовать функцию fopen, но я не знаю, как заставить ее перейти к строке 9001, чтобы удалить старые файлы, если есть какой-либо старый файл.Очень ценю вашу помощь.

1 Ответ

1 голос
/ 15 февраля 2012

Я не знаю, что именно делает этот код на Фортране, но звучит так, будто вы этого хотите:

$fh = fopen('TEST.OUT', 'w');

Обратите внимание на описание режима 'w':

Открыть только для записи;поместите указатель файла в начале файла и обрежьте файл до нулевой длины.Если файл не существует, попытайтесь его создать.

http://php.net/manual/en/function.fopen.php

В противном случае возможно:

do {
    $fh = @fopen('TEST.OUT', 'x');
    if (!$fh) {
        unlink('TEST.OUT');
        unlink('fort2');
    }
} while (!$fh);

'x': Создатьи открыт только для записи;поместите указатель файла в начале файла.Если файл уже существует, вызов fopen () завершится ошибкой, вернув FALSE и сгенерировав ошибку уровня E_WARNING.Если файл не существует, попытайтесь создать его.

Вы должны быть осторожны, чтобы не попасть туда в бесконечный цикл.

Вы также можете выполнить эти проверки самостоятельно:

if (file_exists('TEST.OUT')) {
    unlink('TEST.OUT');
    unlink('fort2');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...