fortran66のブログ

fortran について書きます。

IBM FORTRAN IV H

パソコンの興隆は FORTRAN77 の普及期に重なるのでパソコン用の信頼できる FORTRAN66 コンパイラは無いように思います。FORTRAN66 はコンピュータ言語初の標準化工業規格で、IBMFORTRAN IV を元に制定されました。IBMFORTRAN IV が使えればそれがもっとも信頼できる FORTRAN66 コンパイラではないかと思われます。現在 IBM 360 用のエミュレータが存在しており、IBM が OS やコンパイラを含む関連ソフトウェアの著作権を放棄しているために、合法的に FORTRAN IV コンパイラを動かすことができます。

IBM メインフレーム用のエミュレータとして Hercules というものが存在しています。http://www.hercules-390.org/

Windows では、Hercules 上で IBM 360 MVS システムを簡単に利用できるようにした "The MVS Tur(n)key System" が利用できます。http://www.bsp-gmbh.com/turnkey/ 
FORTRAN IV Compiler(G,H) は、OS と一緒にインストールされるので、JOB を投げる形式ならインストール後すぐに利用できます。

IBM FORTRAN IV のマニュアルもネットから落としてくることができます。http://www.bitsavers.org/pdf/ibm/360/fortran/ ジョブカードの書き方は面倒で常に鬼門ですが、以下の名前のファイルにジョブカードの書き方がのっています。

  • SC28-6852-1_OS_FORTRAN_H_Pgmr_Jun72.pdf

チラシ裏メモ

インストール 

  1. The MVS Tur(n)key System の CD-ROM イメージの iso ファイルを落としてくる。
  2. VirtualPC ないし VMware 上の Windows から iso ファイルを利用する。
  3. インストーラ setup を動かす。 最初に 2.Simple Install を選択しあとは、ひたすらリターン。
    1. 途中一箇所だけ SECRET とパスワードを入力する。後、ひたすら最後までリターン。
  4. c:\Program files\mvs38j へ移動する。
  5. setterm を起動する。ひたすらリターン。



インストール終了

OS の Boot

  1. startmvs 実行。エミュレータ本体を起動する。
  2. startterm 実行。ここで後で使う 010 番の端末を探しておく。
  3. エミュレータ本体のプロンプトで、IPL148


  1. 010番端末で(初回)
    1. r 00,clpa
    2. r 00,y
    3. s jes2
    4. r 01,format,noreq
    5. r 02,y
    6. r 03,y
    7. (ファンクションキーF11を押して、出力をページモードから垂れ流しモードにする。)

  1. 010番端末で(二回目以降)
    1. r 00
    2. (ファンクションキーF11を押して、出力をページモードから垂れ流しモードにする。)

0Cx番の端末に犬が表示されればおk。

ただし、今は直接 LOGON しないで放置プレイ。

JOB の投入

  1. 010番の端末で $sprinter1 と入力。ラインプリンタを起動する。
    1. $sprinter2 (必要に応じて)
    2. $spunch1 (必要に応じて)


  1. DOS 窓を開き、c:\Program files\mvs38j\jcl へ移動。JOB カードをファイル filename に用意しておく。 (IBMEBCDIC ですが、普通の ASCII テキストファイルで問題ありません。)
  2. sub filename (DOS のバッチファイルで JOB をサブミットする。)
  3. 010番端末で $da で JOB のステータスを見る。(キャンセルは $cj jobid 。)
  4. 結果はラインプリンタ出力ファイル c:\Program files\mvs38j\prt\prt00e に累積的に書き込まれる。

Shutdown 方法

  1. 010番端末で f bsppilot,shutnow (または shutnow の代わりに shutdown, shutfast。)
  2. エミュレータ本体で ESC キーを押す。W のち Y (Power と Yes。)

■実行例

JOB CARD

//FORTHCLG JOB (001),'FORTRAN H FIBONACCI', 
//             CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) 
//FIBONACC EXEC FORTHCLG,REGION.FORT=384K      
//FORT.SYSLIN DD UNIT=SYSDA               
//FORT.SYSABEND DD SYSOUT=A        
//FORT.SYSIN DD *                         
C    
C     FIBONACCI
C
      READ(35, 100) N
  100 FORMAT(I8)
      IFIB0 = 0
      IFIB1 = 1
      WRITE(6, 200) IFIB0
      WRITE(6, 200) IFIB1
  200 FORMAT(1H , I12)
      DO 10 I = 2, N
       IFIB2 = IFIB0 + IFIB1          
       IFIB0 = IFIB1                                
       IFIB1 = IFIB2            
       WRITE(6, 200) IFIB2                                     
   10 CONTINUE                              
      STOP                                 
      END                                     
//GO.FT35F001 DD *                          
      10                              

unit番号35番のファイルから整数を読み込み、その数のフィボナッチ数列を求めて出力する。
出力結果はだらだらと長いですが、終わりのほうに実行結果が書かれます。