Installation of the FATMEN software consists of two steps:
The extraction of the code is made with the following PATCHY cradle:
+EXE. +USE,QCDE. +USE,*FATLIB,IBM. +PAM,11, R=QCDE, T=A.ZEBRA +PAM,12. , T=A.FATMEN +QUIT.
followed by the standard procedure to generate the TXTLIB, namely VFORT asm, EDITLIB asm, TXT GEN FATLIB asm.
The extraction of the code is made with the following PATCHY cradle:
+EXE. +ASM,31. +USE,*FMKUIP,IBM. +USE,FMCDF,T=EXE,DIV. +PAM,11, T=A.FATMEN +QUIT.
which generates two files: the standard ASM file with the FORTRAN code and the diverted ASM2 file containing input to the KUIP processor. Both the ASM code and the output from the KUIP processor must be compiled and linked to build the FATMEN module.
The following exec has been used at CERN to perform the complete operation:
/**/ Address Command 'EXEC ZPATCHY FATMEN ( CRADLE(FATMEN) ASM(FATMEN) ASM2(FMCDF CDF)' 'KUIPC FMCDF' /* To generate the FORTRAN equivalent of the CDF file */ 'EXEC VFORT FATMEN' 'EXEC VFORT FMCDF' 'EXEC VFORT ENDMODU' /* Dummy routine to "squeeze" the module*/ 'EXEC CERNLIB FATLIB ( LINK' 'LOAD FATMEN FMCDF ( CLEAR NOAUTO' 'INCLUDE ENDMODU' 'GENMOD FATMEN ( TO ENDMODU' Exit /*BEGIN ENDMODU FORTRAN */ BLOCK DATA ENDMODU END
Processing the ORACLE routines for the FATMEN server
The ORACLE FORTSQL routines can be generated using the following cradles:
+EXE. +ASM, 21,R=!./*BEGIN ! FORTSQL */ +USE,ORACLE. +USE,*FATSQL. +PAM,11. +QUIT.
The output file should then be processed by the SPLITFIL command, which will create a separate file for each routine. These can then be pre-processed by the PCC exec as follows:
splitfile fatsql fortsql -----> Split FATSQL FORTSQL A1 into pieces Generate BLANKDEK FORTSQL A Generate FMLOGI FORTSQL A Generate FODEL FORTSQL A Generate FOGET FORTSQL A Generate FOPUT FORTSQL A FAT3@cernvm; pcc iname=fmlogi host=fortran ORACLE Precompiler: Version 1.2.13.10 - Production on Thu Feb 22 17:32:04 1990 Copyright (c) 1987, Oracle Corporation, California, USA. All rights reserved. Precompiling FMLOGI.FORTSQL FAT3@cernvm; vfort fmlogi VFORT compilation options in effect are: CHARLEN(32767) FLAG(W) GOSTMT OPT(2) MAP NOSDUMP. File 'FMLOGI FORTRAN A1' will be processed. VS FORTRAN VERSION 2 ENTERED. 17:32:07 **FMLOGI** END OF COMPILATION 1 ****** VS FORTRAN VERSION 2 EXITED. 17:32:10 FAT3@cernvm;
This code can be generated with the following cradle:
+USE,IBM,*SQL,*FATSRV. +EXE. +PAM,11, R=QCDE, T=A. ZEBRA PAM * +PAM,12, T=A. FATMEN PAM * +QUIT.
The server module can then be built as follows:
CERNLIB V5ORAFIX V5ORACLE FATLIB LOAD FATSRV OSDDAT OSDU2OS (CLEAR NOMAP NODUP NOAUTO) GENMOD FATSRV
This is performed in the same way as on CERNVM with the following exception:
+USE,*SQLstatement should be omitted.
If ORACLE is to be used, the procedure for generating the FORTSQL routines is described on Page [more info] should be followed. If SQL/DS is to be used, the procedure below should be followed.
Processing the SQLDS routines for the FATMEN server
The SQL/DS FORSQL routines can be generated using the following cradles:
+EXE. +ASM, 21,R=!./*BEGIN ! FORSQL */ +USE,SQLDS. +USE,*FATSQL. +PAM,11. +QUIT.The output file should then be processed by the SPLITFILE command, which will create a separate file for each routine. These can then be pre-processed by the SQLIFY exec as follows:
splitfile fatsql forsql -----> Split FATSQL FORSQL A1 into pieces Generate BLANKDEK FORSQL A Generate FMLOGI FORSQL A Generate FODEL FORSQL A Generate FOGET FORSQL A Generate FOPUT FORSQL A FAT3@Cernvm; sqluser SQL195 ( 01A8 R ) RR FAT3@Cernvm; sqlify fmlogi ARI0717I START SQLPREP EXEC: 02/23/90 10:27:47 SET ARI0320I THE DEFAULT DATABASE NAME IS SQLDBA. ARI0663I FILEDEFS IN EFFECT ARE: SYSIN DISK FMLOGI FORSQL A1 SYSPRINT DISK FMLOGI LISTPREP A1 SYSPUNCH DISK FMLOGI FORTRAN A1 ARISQLLD DISK ARISQLLD LOADLIB R1 ARI0713I PREPROCESSOR ARIPRPF CALLED WITH THE FOLLOWING PARAMETERS: ........ PREP=FMLOGI, NOCHECK,ISOLATION(CS) ARI0710E ERROR(S) OCCURRED DURING SQLPREP EXEC PROCESSING. ARI0796I END SQLPREP EXEC: 02/23/90 10:27:48 SET FAT3@Cernvm(00008); FAT3@Cernvm; vfort fmlogi CRNVFT030I VFORT compilation options in effect are: CHARLEN(32767) FLAG(W) GOSTMT OPT(2) MAP NOSDUMP NOPRINT. CRNVFT000I File 'FMLOGI FORTRAN A1' will be processed. VS FORTRAN VERSION 2 ENTERED. 10:27:55 **FMLOGI** END OF COMPILATION 1 ****** **SQLINT** END OF COMPILATION 2 ****** VS FORTRAN VERSION 2 EXITED. 10:27:55 /**********************************************************************/ /* */ /* Title : Invoke SQL preprocessor */ /* ====== */ /* */ /* Format : SQLIFY fn*/ /* ====== $ASMSQL# */ /* */ /* Author : J. Wood, Systems Group, CCD, RAL, 10/04/86 */ /* ====== */ /* */ /**********************************************************************/ Address Command Signal on HALT ; buf=0 Arg fn ft fm . '(' 'USERID' user pwd . If user='' Then foruser='' Else Do user='STRIP'(user) foruser='USERID='user'/'pwd',' End /* Else Do */ ret=0 If fm = '' Then fm = 'A' Select When fn='' Then Do Say 'Format is: SQLIFY file_name ' Exit 4 End /* Do When fn='' */ When Abbrev('PLISQL',ft,1) Then ft='PLISQL' When Abbrev('ASMSQL',ft,1) Then ft='ASMSQL' When Abbrev('FORSQL',ft,1) Then ft='FORSQL' Otherwise Do ft='*' 'MAKEBUF' ; buf=rc 'LFILE' fn ft '* ( FIFO' n=Queued() reply=1 j=0 type.1='PLISQL' mode.1='A' typlist='/PLISQL/ASMSQL/FORSQL' Do i=1 To n Pull fn1 ft1 fm1 . loctyp='/'||Strip(ft1) If Pos(loctyp,typlist)>0 Then Do Do k=1 To j If ft1=type.k & fm1=mode.k Then Iterate i End /* Do k=1 ... */ j=j+1 type.j=ft1 mode.j=fm1 End /* Do If Pos ... */ End /* Do n */ If j>1 Then Do k=1 While 1 Say 'There is more than one file of filename' fn Say 'Select by number:' Do i=1 To j Say i':' fn type.i mode.i End /* Do i= ... */ Pull reply Select When ^Datatype(reply,'W') Then Iterate k When reply >j | reply < 1 Then Iterate k Otherwise Leave k End /* Select */ End /* Do k=1 ... */ ft=type.reply fm=mode.reply End /* Do Otherwise */ End /* Select */ 'STATE' fn ft fm If rc^=0 Then Do Say fn ft fm 'does not exist' ret=rc Signal HALT End /* Do If rc^=0 */ rc='CPUSH'('PRT') 'CP SPOOL 00E TO' Userid() lang = left(ft,3) if ft = 'FORSQL' then lang = 'FORTRAN' 'EXEC SQLPREP' lang 'PP(PREP='fn','foruser, 'NOCHECK,ISOLATION(CS))', 'SYSIN('fn ft fm')' ret=rc rc='CPOP'('PRT') HALT: If buf^=0 Then 'DROPBUF' buf Exit ret