CALL SEQUENCE... addf X1 X2 [ ... X78 ] Z OUTPUT [ -name 1 / 2 / ... / 78 ] [-def] subf X1 X2 Z OUTPUT [ -name 1 / 2 ] [-def] mltf X1 X2 Z OUTPUT [ -name 1 / 2 ] [-def] divf X1 X2 Z OUTPUT [ -name 1 / 2 ] [-def] cmlt X1 X2 Z OUTPUT [ -name 1 / 2 ] [-def] cdiv X1 X2 Z OUTPUT [ -name 1 / 2 ] [-def] conjmlt X1 X2 Z OUTPUT [ -name 1 / 2 ] [-def] AUTHOR - J.D.Henderson, 01 JAN 1981. LAST REVISION: $Header: /home/cvs/RMNLIB/utils/rdiag/lspgm/addf.ptn,v 4.32 2014/09/25 20:20:45 dugas Exp $ DESCRIPTION... A SET OF CCC FILE ARITHMETIC PROGRAMS WHICH... ... PRODUCES FILE Z = X1 + X2 [ + X3 + [ ... + X78 ] ] (addf) ... PRODUCES FILE Z = X1 - X2 (subf) ( WHERE ALL Xi MAY CONTAIN REAL OR COMPLEX DATA TYPES ) ... PRODUCES FILE Z = X1 * X2 (mltf) ... PRODUCES FILE Z = X1 / X2 (divf) ( WHERE 1) X1 AND X2 MAY ONLY CONTAIN REAL DATA TYPES AND 2) X1/ZERO RETURNS ZERO ) ... PRODUCES FILE Z = X1 * X2 (cmlt) ... PRODUCES FILE Z = X1 * CONJG(Y2) (conjmlt) ... PRODUCES FILE Z = X1 / X2 (cdiv) ( WHERE 1) X1 AND X2 MAY ONLY CONTAIN COMPLEX DATA TYPES AND 2) X1/(0,0) RETURNS ZERO ) Notes: 1) WHEN THE THE NAMES OF CORRESPONDING VARIABLES IN X1 AND X2 ARE DIFFERENT, THE PROGRAM WILL REPLACE THEM BY A CHARACTER SEQUENCE THAT INDICATES WHAT OPERATION WAS PERFORMED. THIS DEFAULT BEHAVIOR CAN BE AVOIDED BY SPECIFYING THE "-name" COMMAND-LINE ARGUMENT WITH A VALUE OF THE ORDINAL OF THE INPUT FILE WHOSE NAMES SHOULD BE KEPT. 2) ADDF CAN ADD UP TO N=78 INPUT FILES. THE (N+1)th FILENAME CORRESPONDS TO THAT OF THE OUTPUT FILE Z. 3) Operations on arrays that have the same size but different grid descriptor sets (GRTYP,IGi) is possible if using the "-na" argument. 4) MISSING VALUE TREATMENT IS SUPPORTED VIA EITHER THE "MISSING_VALUE" ENVIRONMENT VARIABLE OR THE "-mvalue" COMMAND-LINE ARGUMENT. TWO PROCESSING OPTIONS ARE SUPPORTED HERE, DEPENDING ON THE "-def" COMMAND-LINE ARGUMENT. THE DEFAULT OPTION, WHICH HOLDS WHEN THE ARGUMENT IS NOT SPECIFIED, IS AS FOLLOWS : X1 (not missing) & X2 (not missing) => Z = X1 (operand) X2 X1 ( missing) & X2 (not missing) => Z = u (operand) X2 X1 (not missing) & X2 ( missing) => Z = X1 X1 ( missing) & X2 ( missing) => Z = Missing value where 1) (operand) is "+" "*" or "/"; note that these rules also apply to the complex versions of these operands; 2) u is the operand unit, such that: u (operand) v = v. OTHERWISE, WHEN "-def" IS SPECIFIED, ANY OPERATION THAT MAKES USE OF A MISSING VALUE WILL GENERATE A MISSING VALUE RESULT. EXIT CONDITIONS... 0 NO PROBLEMS 1 FEWER RECORDS IN FILE X2 THAN IN FILE X1 2 RECORDS NOT THE SAME SIZE 3 PREMATURE EOF ON FILE X1 4 PREMATURE EOF ON FILE X2 5 MLT OR DIV FOUND COMPLEX DATA. USE CDIV OR CMLT 6 CMLT, CDIV OR CONJMLT FOUND NON-COMPLEX DATA 7 LESS THAN 2 INPUT FILES or MORE THAN 2 AND MODE.NE.ADDF 8 ERROR IN COMMAND-LINE PARAMETRE FORMAT