chep95.cfortran.h.talk.ps
来自「Cfortran is useful for mixing language p」· PS 代码 · 共 2,025 行 · 第 1/4 页
PS
2,025 行
0 X0 K(10) 266.38 18 T1 14 Q(10\051) 21.26 381.84 T(Bene\336ts/Costs of CORBA and the Like) 42.52 381.84 T0 12 Q(Advantages:) 21.26 332.18 T(\245) 21.26 312.18 T(Does everything.) 35.43 312.18 T(Disadvantages:) 21.26 272.18 T(\245) 21.26 252.18 T(It\325) 35.43 252.18 T(s coming . . . but not here yet.) 46.1 252.18 T(\245) 21.26 232.18 T(Development overhead?) 35.43 232.18 TFMENDPAGE%%EndPage: "10" 12%%Page: "11" 12595.28 839.05 0 FMBEGINPAGE0 10 Q0 X0 K(11) 266.38 18 T1 14 Q(1) 21.26 381.84 T(1\051) 27.49 381.84 T(The Third of Thr) 42.52 381.84 T(ee T) 146.06 381.84 T(ypes of MLP) 170.28 381.84 T(Mixed Language Executable \050MLX\051) 21.26 351.84 T0 12 Q(e.g. P) 21.26 332.18 T(A) 47.14 332.18 T(W = C + Fortran routines.) 54.84 332.18 T1 14 Q(Futur) 21.26 302.84 T(e News?) 55.99 302.84 T(Fortran 2000 may have standard) 21.26 286.85 T(\324inter) 21.26 270.85 T(operability with C\325.) 54.42 270.85 T(Good News!) 21.26 240.85 T(MLX is possible now) 21.26 224.85 T(.) 145.27 224.85 T(Bad News?) 21.26 194.85 T([) 192.66 194.85 T(12\051) 200.82 194.85 T(and) 222.97 194.85 T(13\051) 249.03 194.85 T(]) 271.18 194.85 T(MLX development:) 21.26 178.85 T(- can be tedious.) 21.26 162.85 T(- differs acr) 21.26 146.85 T(oss machines.) 90.94 146.85 T(Good News!) 21.26 116.85 T([) 184.89 116.85 T(14\051) 193.04 116.85 T(onwards) 215.19 116.85 T(]) 270 116.85 T(\322W) 21.26 100.85 T(rappers\323 over) 42 100.85 T(come bad news.) 125.29 100.85 T0 12 Q(Remainder of talk about MLX.) 21.26 65.18 T(Examples have C calling a Fortran routine.) 21.26 45.18 TFMENDPAGE%%EndPage: "11" 13%%Page: "12" 13595.28 839.05 0 FMBEGINPAGE0 10 Q0 X0 K(12) 266.38 18 T1 14 Q(12\051) 21.26 381.84 T(Dir) 42.52 381.84 T(ect MLX ?) 62.47 381.84 T(Hand code for each machine,) 21.26 351.84 T(each call to each for) 21.26 335.84 T(eign r) 139.91 335.84 T(outine. e.g.) 174.25 335.84 T3 12 Q({) 35.43 316.18 T(#ifdef __vms) 35.43 302.18 T(struct dsc$descriptor_s) 49.83 288.18 T(s) 64.22 274.18 T(= { DSC$K_DTYPE_T,) 78.61 274.18 T( DSC$K_DTYPE_S,) 100.2 260.18 T( 3,) 100.2 246.18 T( "hello" };) 100.2 232.18 T(eg\050&s\051;) 49.83 218.18 T(#elif _CRAY) 35.43 204.18 T(EG\050_cptofcd\050"hello",5\051\051;) 49.83 190.18 T(#elif . . .) 35.43 176.18 T(. . .) 49.83 162.18 T(#else /* unix f77-style */) 35.43 148.18 T(eg_\050"hello",5\051;) 49.83 134.18 T(#endif) 35.43 120.18 T(}) 35.43 106.18 T1 14 Q(Compar) 21.26 62.85 T(e with call fr) 70.75 62.85 T(om native Fortran) 145.5 62.85 T3 12 Q(CALL EG\050'HELLO'\051) 35.43 43.18 TFMENDPAGE%%EndPage: "12" 14%%Page: "13" 14595.28 839.05 0 FMBEGINPAGE0 10 Q0 X0 K(13) 266.38 18 T1 14 Q(13\051) 21.26 381.84 T(The T) 42.52 381.84 T(r) 77.64 381.84 T(ouble with Dir) 83.6 381.84 T(ect MLX) 169.64 381.84 T0 12 Q(\245) 21.26 362.18 T(tedious.) 35.43 362.18 T(\245) 21.26 342.18 T(cluttered.) 35.43 342.18 T(\245) 21.26 322.18 T(error prone.) 35.43 322.18 T(\245) 21.26 302.18 T(geometrically worsens with:) 35.43 302.18 T(- number of machines.) 35.43 288.18 T(- number of calls to foreign routines.) 35.43 274.18 T(- complexity of routine\325) 35.43 260.18 T(s interface.) 149.69 260.18 T1 14 Q(Dir) 21.26 214.85 T(ect MLX may be tolerable:) 41.21 214.85 T0 12 Q(\245) 21.26 195.18 T(if using a single type of machine,) 35.43 195.18 T(which has simple MLX. [Not VMS.]) 35.43 181.18 T(\245) 21.26 161.18 T(for routines with simple interfaces.) 35.43 161.18 T(\245) 21.26 141.18 T(when nicer methods are not available.) 35.43 141.18 TFMENDPAGE%%EndPage: "13" 15%%Page: "14" 15595.28 839.05 0 FMBEGINPAGE0 10 Q0 X0 K(14) 266.38 18 T1 14 Q(14\051) 21.26 381.84 T(MLX using W) 42.52 381.84 T(rappers) 127.79 381.84 T-0.21 (A \322native\323 interface to a \322for) 21.26 362.18 P-0.21 (eign\323 r) 194.43 362.18 P-0.21 (outine.) 235.56 362.18 P3 12 Q(/* From C */) 35.43 207.76 T(C From Fortran) 157.77 207.76 T(EG\050"HELLO"\051;) 35.43 193.76 T(CALL EG\050'HELLO'\051) 157.77 193.76 T1 14 Q(W) 21.26 150.43 T(rapper is a native r) 35 150.43 T(outine:) 149.01 150.43 T0 12 Q(\245) 21.26 130.76 T(use is machine independent.) 35.43 130.76 T(\245) 21.26 110.76 T(simple name, input and output.) 35.43 110.76 T1 14 Q(W) 21.26 81.43 T(rapper is cr) 35 81.43 T(eated once:) 104.7 81.43 T0 12 Q(\245) 21.26 61.76 T(for each foreign routine.) 35.43 61.76 T(\245) 21.26 41.76 T(for each machine type.) 35.43 41.76 T21.26 28.35 276.38 391.18 C21.26 223.76 276.38 358.18 C3 H2 Z0 X0 K90 450 35.43 34.02 196.75 288.97 A3 12 Q(foreign) 169.8 292.59 T106.57 308.04 140.58 308.04 2 LN(input arguments) 29 322.93 T61.98 274.33 116.17 274.33 2 LN(output arguments) 22 254.21 T89.84 313.61 110.09 308.04 89.97 302.03 89.91 307.82 4 YV62.64 307.51 89.91 307.82 2 LN105.51 268.35 85.29 274.03 105.45 279.92 105.48 274.14 4 YV140.24 274.33 105.48 274.13 2 LN90 450 58.12 56.26 196.58 291.3 A(routine) 169.8 280.59 T(wrapper) 173.26 330.03 T21.26 28.35 276.38 391.18 C0 0 297.64 419.52 C121.79 179.76 146.72 229.26 C138.79 226.42 138.79 181.07 2 L4 H2 Z11 X0 KN0 0 297.64 419.52 CFMENDPAGE%%EndPage: "14" 16%%Page: "15" 16595.28 839.05 0 FMBEGINPAGE0 10 Q0 X0 K(15) 266.38 18 T1 14 Q(15\051) 21.26 381.84 T(Dir) 42.52 381.84 T(ect W) 62.47 381.84 T(rappers ?) 96.8 381.84 T3 12 Q(void EG\050char *c\051) 35.43 348.18 T({) 35.43 334.18 T(#ifdef __vms) 35.43 320.18 T(. . .) 49.83 306.18 T(/* massage) 128.98 306.18 T(input */) 215.33 306.18 T(eg\050 . . .) 49.83 292.18 T(/* call Fortran) 128.98 292.18 T( */) 251.31 292.18 T(. . .) 49.83 278.18 T(/* massage output */) 128.98 278.18 T(#elif) 35.43 264.18 T(_CRAY) 85.81 264.18 T(. . .) 49.83 250.18 T(#else) 35.43 236.18 T(. . .) 49.83 222.18 T(eg_\050. . .) 49.83 208.18 T(. . .) 49.83 194.18 T(#endif) 35.43 180.18 T(}) 35.43 166.18 T1 14 Q(Same tr) 21.26 122.85 T(ouble as for dir) 68.02 122.85 T(ect MLX:) 159.11 122.85 T0 12 Q(\245) 21.26 103.18 T(for each routine.) 35.43 103.18 T(\245) 21.26 83.18 T(for each machine.) 35.43 83.18 T(\245) 21.26 63.18 T([but no longer for each call to each routine.]) 35.43 63.18 TFMENDPAGE%%EndPage: "15" 17%%Page: "16" 17595.28 839.05 0 FMBEGINPAGE0 10 Q0 X0 K(16) 266.38 18 T1 14 Q(16\051) 21.26 381.84 T(Machine Independent) 42.52 381.84 T(W) 42.52 365.84 T(rapper Speci\336cation) 56.26 365.84 T(I.) 21.26 335.84 T(Encode each machine\325) 35.43 335.84 T(s MLX r) 168.61 335.84 T(ecipe) 219.66 335.84 T(for calling for) 35.43 319.85 T(eign r) 117.57 319.85 T(outines.) 151.9 319.85 T(II.) 21.26 289.85 T(Cr) 35.64 289.85 T(eate wrapper using:) 51.71 289.85 T(- encoding and) 35.43 273.85 T(- a machine independent speci\336cation.) 35.43 257.85 T0 12 Q(e.g.) 21.26 224.18 T3 F(/* encoding */) 35.43 204.18 T(#include "cfortran.h") 35.43 190.18 T(/* machine independent wrapper */) 35.43 162.18 T(#define EG\050C\051 \134) 35.43 148.18 T(CCALLSFSUB1\050EG,eg, STRING, C\051) 42.63 134.18 T(main\050\051) 35.43 106.18 T({) 35.43 92.18 T(/* call Fortran routine */) 35.43 78.18 T(EG\050"HELLO"\051;) 35.43 64.18 T(}) 35.43 50.18 TFMENDPAGE%%EndPage: "16" 18%%Page: "17" 18595.28 839.05 0 FMBEGINPAGE0 10 Q0 X0 K(17) 266.38 18 T1 14 Q(17\051) 21.26 381.84 T(cfortran.h) 42.52 381.84 T(Anonymous ftp at zebra.desy) 21.26 351.84 T(.de.) 194.61 351.84 T(cfortran.h supports:) 21.26 321.84 T0 12 Q(\245) 21.26 302.18 T(C calling Fortran. Fortran calling C.) 35.43 302.18 T(\245) 21.26 282.18 T(names of routines and common blocks.) 35.43 282.18 T(\245) 21.26 262.18 T(input ar) 35.43 262.18 T(guments,) 72.19 262.18 T(output ar) 35.43 248.18 T(guments,) 78.19 248.18 T(function return values.) 35.43 234.18 T(\245) 21.26 214.18 T(most types of data, including arrays, for:) 35.43 214.18 T(STRING of various types,) 35.43 200.18 T(DOUBLE, FLOA) 35.43 186.18 T(T) 120.05 186.18 T(,) 126.49 186.18 T(BYTE, INT) 35.43 172.18 T(,LONG, LOGICAL,) 91.84 172.18 T(ROUTINE, VOID,) 35.43 158.18 T(SIMPLE user de\336ned types.) 35.43 144.18 T(\245) 21.26 124.18 T(VMS, OSF) 35.43 124.18 T(, Ultrix, AIX, IRIX, CRA) 88.46 124.18 T(Y) 210.61 124.18 T(, SunOS,) 217.72 124.18 T(Apollo, HP-UX, Convex, . . .) 35.43 110.18 T(cfortran.h is not the only \324wrapper scheme\325,) 21.26 76.18 T(but it is the most complete.) 21.26 62.18 T(Others:) 21.26 48.18 T(IRIX mkf2c, ST) 63.78 48.18 T(ARLINK CNF) 141.1 48.18 T(,) 211.77 48.18 T(LLNL Fcc, . . .) 63.78 34.18 TFMENDPAGE%%EndPage: "17" 19%%Page: "18" 19595.28 839.05 0 FMBEGINPAGE0 10 Q0 X0 K(18) 266.38 18 T1 14 Q(18\051) 21.26 381.84 T(hbook.h) 42.52 381.84 T3 11 Q(/* hbook.h of cernlib@cern.ch */) 35.43 349.84 T(. . .) 35.43 336.85 T(#define HBARX\050A1\051 \134) 35.43 323.85 T(CCALLSFSUB1\050HBARX,hbarx,INT,A1\051) 68.39 310.85 T(. . .) 35.43 297.85 T(#define HISTDO\050\051 \134) 35.43 284.85 T( CCALLSFSUB0\050HISTDO,histdo\051) 61.8 271.85 T(. . .) 35.43 258.85 T1 14 Q(Machine independent hbook.h) 21.26 216.85 T(allows C to easily access) 21.26 200.85 T(CERN\325) 21.26 184.85 T(s HBOOK library) 65.04 184.85 T(of Fortran r) 21.26 168.85 T(outines.) 93.28 168.85 T(*.h ar) 21.26 138.85 T(e available) 55.99 138.85 T(for other CERNLIB Fortran libraries.) 21.26 122.85 T(e.g. adamo.h, geant321.h, minuit.h, . . .) 21.26 106.85 T(f2h utility in CERNLIB can) 21.26 76.85 T(\324automatically\325 cr) 21.26 60.85 T(eate the *.h) 127.87 60.85 T(fr) 21.26 44.85 T(om Fortran sour) 31.88 44.85 T(ce code.) 131.11 44.85 TFMENDPAGE%%EndPage: "18" 20%%Page: "19" 20595.28 839.05 0 FMBEGINPAGE0 10 Q0 X0 K(19) 266.38 18 T1 14 Q(19\051) 21.26 381.84 T(hexample.c) 42.52 381.84 T3 11 Q(#include "cfortran.h") 35.43 349.84 T(#include "hbook.h") 35.43 336.85 T(#define NWPAWC 50000) 35.43 310.85 T(typedef float PAWC_DEF[NWPAWC];) 35.43 297.85 T(#define PAWC COMMON_BLOCK\050PAWC,pawc\051) 35.43 284.85 T(COMMON_BLOCK_DEF\050PAWC_DEF,PAWC\051;) 35.43 271.85 T(PAWC_DEF PAWC;) 35.43 258.85 T(main\050\051 {) 35.43 232.85 T( int i, id=10;) 42.03 219.85 T(HLIMIT\050NWPAWC\051;) 48.62 193.85 T(HBOOK1\050id,"1-DIM",100,1,101,0\051;) 48.62 180.85 T(for \050 i=1; i<=100; i++\051) 48.62 154.85 T(HFILL\050id, i+.5, 0, 10*\050i%25\051 \051;) 61.8 141.85 T(HISTDO\050\051;) 48.62 115.85 T(}) 35.43 102.85 T1 14 Q(Runs \324as is\325 on all machines) 21.26 59.85 T(supported by cfortran.h.) 21.26 43.85 TFMENDPAGE%%EndPage: "19" 21%%Page: "20" 21595.28 839.05 0 FMBEGINPAGE0 10 Q0 X0 K(20) 266.38 18 T1 14 Q(20\051) 21.26 381.84 T(HERMES and cfortran.h) 42.52 381.84 T(The HERMES collaboration at HERA) 21.26 321.84 T(is bilingual,) 21.26 305.85 T(though most pr) 21.26 275.85 T(ogrammers) 112.74 275.85 T(write either C or Fortran.) 21.26 259.85 T(cfortran.h pr) 21.26 199.85 T(ovides HERMES) 99.5 199.85 T(with comfortable and pr) 21.26 183.85 T(oductive use) 166.75 183.85 T(of both C and Fortran.) 21.26 167.85 T0 12 Q(\245) 21.26 148.18 T(Using outside libraries.) 35.43 148.18 T(\245) 21.26 128.18 T(Developing HERMES libraries.) 35.43 128.18 T(\245) 21.26 108.18 T(Developing HERMES applications.) 35.43 108.18 TFMENDPAGE%%EndPage: "20" 22%%Page: "21" 22595.28 839.05 0 FMBEGINPAGE0 10 Q0 X0 K(21) 266.38 18 T1 14 Q(21\051) 21.26 381.84 T(Conclusion) 42.52 381.84 T(Mixed Language Pr) 21.26 351.84 T(ogramming pr) 139.94 351.84 T(omotes:) 226.36 351.84 T( -) 21.26 335.84 T(code r) 35.43 335.84 T(euse.) 72.09 335.84 T( -) 21.26 319.85 T(language suitable) 35.43 319.85 T(for the component and) 35.43 303.85 T(for the pr) 35.43 287.85 T(ogrammer) 92.69 287.85 T(.) 154.34 287.85 T(The C versus Fortran war is over) 21.26 225.85 T(.) 218.94 225.85 T(Everyone won.) 21.26 209.85 T(CORBA, Fortran 2000, . . .) 21.26 179.85 T2 F(\357) 21.26 163.85 T122.49 162.46 35.43 162.46 2 LV1.33 H0 ZN1 F(C and Fortran) 35.43 163.85 T( can only get better) 122.49 163.85 T(.) 235.45 163.85 T(V) 21.26 133.85 T(ia cfortran.h,) 30.84 133.85 T(HERMES, P) 21.26 117.85 T(A) 96.41 117.85 T(W and many others) 104.96 117.85 T(alr) 21.26 101.85 T(eady enjoy) 38.11 101.85 T192.79 100.46 105.73 100.46 2 LVN(C and Fortran) 105.73 101.85 T(.) 192.79 101.85 T(EOF) 245.14 52.85 TFMENDPAGE%%EndPage: "21" 23%%Trailer%%BoundingBox: 0 0 297.64 419.52%%Pages: 22 1%%DocumentFonts: Times-Roman%%+ Times-Bold%%+ ZapfDingbats%%+ Courier
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?