CALL SEQUENCE... gadd X Y Z OUTPUT gmlt X Y Z OUTPUT gdiv X Y Z OUTPUT AUTHOR - B.Dugas, 15 novembre 95. LAST REVISION: $Header: /home/cvs/RMNLIB/utils/rdiag/lspgm/gadd.ptn,v 4.16 2014/09/25 19:32:34 dugas Exp $ DESCRIPTION... A SET OF CCC FILE ARITHMETIC PROGRAMS WHICH... ... PRODUCES FILE Z = X + (FIRST SET OF RECORDS OF) Y (gadd) ... PRODUCES FILE Z = X * (FIRST SET OF RECORDS OF) Y (gmlt) ... PRODUCES FILE Z = X / (FIRST SET OF RECORDS OF) Y (gdiv) A BARE MINIMALAMOUNT OF CHECKING IS DONE TO ENSURE THAT THE OPERATION MAKES SENSE. SPECIFICALLY: 1) AS IN MLTF, DIVISION BY ZERO YIELDS ZERO. 2) THE TWO FILES SHOULD HAVE THE SAME TYPE OF RECORDS (I.E. THE SAME GRID DESCRIPTORS FOR CMC/RPN FILES). 3) a) IF Y HAS MORE THAN ONE LEVEL, IT SHOULD HAVE THE SAME NUMBER AS FOUND IN X. b) IF THE NUMBER OF LEVELS IN THE TWO FILES IS DIFFERNT AND THAT OF Y IS NOT EQUAL TO ONE, THE PROGRAM ABORTS. FINALLY, c) IF Y ONLY HOLDS ONE LEVEL, IT WILL BE USED WITH ALL LEVELS OF X (I.E. BACKWARD COMPATIBILITY MODE). NOTES: 1) gadd IS FUNCTIONNALY EQUIVALENT TO THE RCM PROGRAM add2d AND gmlt IS FUNCTIONNALY EQUIVALENT TO THE RCM PROGRAM mlt2d 2) Operations on arrays that have the same size but different grid descriptor sets (GRTYP,IGi) is possible if using the "-na" argument. MISSING VALUE TREATMENT IS SUPPORTED VIA EITHER THE "MISSING_VALUE" ENVIRONMENT VARIABLE OR THE "-mvalue" COMMAND-LINE ARGUMENT. HERE IS HOW THIS WORKS OUT IN MORE DETAIL: WHEN... X (not missing) & Y (not missing) => Z = X (operand) Y X ( missing) & Y (not missing) => Z = u (operand) Y X (not missing) & Y ( missing) => Z = X X ( missing) & Y ( missing) => Z = Missing value where 1) the operand is "+" "*" or "/"; 2) u is the operand unit, such that: u (operand) v = v EXIT CONDITIONS... 0 NO PROBLEMS 1 UNABLE TO READ FIRST SET OF Y 2 RECORDS NOT THE SAME SIZE 3 PREMATURE EOF ON FILE X 4 PREMATURE EOF ON FILE X