OpenCOBOL 1.1pre-rel
|
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include "move.h"
#include "coblocal.h"
#include "byteswap.h"
Go to the source code of this file.
Functions | |
void | cob_move (cob_field *src, cob_field *dst) |
void | cob_set_int (cob_field *f, int n) |
int | cob_get_int (cob_field *f) |
long long | cob_get_long_long (cob_field *f) |
void | cob_init_move (void) |
int cob_get_int | ( | cob_field * | f | ) |
Definition at line 1304 of file move.c.
{ int n; cob_field temp; cob_field_attr attr; switch (COB_FIELD_TYPE (f)) { case COB_TYPE_NUMERIC_DISPLAY: return cob_display_get_int (f); case COB_TYPE_NUMERIC_BINARY: return (int)cob_binary_mget_int64 (f); case COB_TYPE_NUMERIC_PACKED: return cob_packed_get_int (f); default: COB_ATTR_INIT (COB_TYPE_NUMERIC_BINARY, 9, 0, COB_FLAG_HAVE_SIGN, NULL); temp.size = 4; temp.data = (unsigned char *)&n; temp.attr = &attr; cob_move (f, &temp); return n; } }
long long cob_get_long_long | ( | cob_field * | f | ) |
Definition at line 1329 of file move.c.
{ long long n; cob_field temp; cob_field_attr attr; switch (COB_FIELD_TYPE (f)) { case COB_TYPE_NUMERIC_DISPLAY: return cob_display_get_long_long (f); case COB_TYPE_NUMERIC_BINARY: return cob_binary_mget_int64 (f); case COB_TYPE_NUMERIC_PACKED: return cob_packed_get_long_long (f); default: COB_ATTR_INIT (COB_TYPE_NUMERIC_BINARY, 18, 0, COB_FLAG_HAVE_SIGN, NULL); temp.size = 8; temp.data = (unsigned char *)&n; temp.attr = &attr; cob_move (f, &temp); return n; } }
void cob_init_move | ( | void | ) |
Definition at line 1354 of file move.c.
{ lastdata = cob_malloc (COB_SMALL_BUFF); lastsize = COB_SMALL_BUFF; }
Definition at line 1023 of file move.c.
{ if (COB_FIELD_TYPE (src) == COB_TYPE_ALPHANUMERIC_ALL) { cob_move_all (src, dst); return; } if (dst->size == 0) { return; } if (src->size == 0) { src = &cob_space; } /* non-elementary move */ if (COB_FIELD_TYPE (src) == COB_TYPE_GROUP || COB_FIELD_TYPE (dst) == COB_TYPE_GROUP) { cob_move_alphanum_to_alphanum (src, dst); return; } /* elementary move */ switch (COB_FIELD_TYPE (src)) { case COB_TYPE_NUMERIC_DISPLAY: switch (COB_FIELD_TYPE (dst)) { case COB_TYPE_NUMERIC_FLOAT: case COB_TYPE_NUMERIC_DOUBLE: cob_move_display_to_fp (src, dst); return; case COB_TYPE_NUMERIC_DISPLAY: cob_move_display_to_display (src, dst); return; case COB_TYPE_NUMERIC_PACKED: cob_move_display_to_packed (src, dst); return; case COB_TYPE_NUMERIC_BINARY: cob_move_display_to_binary (src, dst); return; case COB_TYPE_NUMERIC_EDITED: cob_move_display_to_edited (src, dst); return; case COB_TYPE_ALPHANUMERIC_EDITED: if (COB_FIELD_SCALE(src) < 0 || COB_FIELD_SCALE(src) > COB_FIELD_DIGITS(src)) { /* expand P's */ indirect_move (cob_move_display_to_display, src, dst, (size_t)cob_max_int ((int)COB_FIELD_DIGITS(src), (int)COB_FIELD_SCALE(src)), cob_max_int (0, (int)COB_FIELD_SCALE(src))); return; } else { cob_move_alphanum_to_edited (src, dst); return; } default: cob_move_display_to_alphanum (src, dst); return; } case COB_TYPE_NUMERIC_PACKED: switch (COB_FIELD_TYPE (dst)) { case COB_TYPE_NUMERIC_DISPLAY: cob_move_packed_to_display (src, dst); return; default: indirect_move (cob_move_packed_to_display, src, dst, COB_FIELD_DIGITS(src), COB_FIELD_SCALE(src)); return; } case COB_TYPE_NUMERIC_BINARY: switch (COB_FIELD_TYPE (dst)) { case COB_TYPE_NUMERIC_DISPLAY: cob_move_binary_to_display (src, dst); return; case COB_TYPE_NUMERIC_BINARY: case COB_TYPE_NUMERIC_PACKED: case COB_TYPE_NUMERIC_EDITED: case COB_TYPE_NUMERIC_FLOAT: case COB_TYPE_NUMERIC_DOUBLE: indirect_move (cob_move_binary_to_display, src, dst, 20, COB_FIELD_SCALE(src)); return; default: indirect_move (cob_move_binary_to_display, src, dst, COB_FIELD_DIGITS(src), COB_FIELD_SCALE(src)); return; } case COB_TYPE_NUMERIC_EDITED: switch (COB_FIELD_TYPE (dst)) { case COB_TYPE_NUMERIC_DISPLAY: cob_move_edited_to_display (src, dst); return; case COB_TYPE_NUMERIC_PACKED: case COB_TYPE_NUMERIC_BINARY: case COB_TYPE_NUMERIC_EDITED: case COB_TYPE_NUMERIC_FLOAT: case COB_TYPE_NUMERIC_DOUBLE: indirect_move (cob_move_edited_to_display, src, dst, 36, 18); return; case COB_TYPE_ALPHANUMERIC_EDITED: cob_move_alphanum_to_edited (src, dst); return; default: cob_move_alphanum_to_alphanum (src, dst); return; } case COB_TYPE_NUMERIC_FLOAT: case COB_TYPE_NUMERIC_DOUBLE: indirect_move (cob_move_fp_to_display, src, dst, 40, 20); return; default: switch (COB_FIELD_TYPE (dst)) { case COB_TYPE_NUMERIC_DISPLAY: cob_move_alphanum_to_display (src, dst); return; case COB_TYPE_NUMERIC_PACKED: case COB_TYPE_NUMERIC_BINARY: case COB_TYPE_NUMERIC_EDITED: case COB_TYPE_NUMERIC_FLOAT: case COB_TYPE_NUMERIC_DOUBLE: indirect_move (cob_move_alphanum_to_display, src, dst, 36, 18); return; case COB_TYPE_ALPHANUMERIC_EDITED: cob_move_alphanum_to_edited (src, dst); return; default: cob_move_alphanum_to_alphanum (src, dst); return; } } }
void cob_set_int | ( | cob_field * | f, |
int | n | ||
) |
Definition at line 1291 of file move.c.
{ cob_field temp; cob_field_attr attr; COB_ATTR_INIT (COB_TYPE_NUMERIC_BINARY, 9, 0, COB_FLAG_HAVE_SIGN, NULL); temp.size = 4; temp.data = (unsigned char *)&n; temp.attr = &attr; cob_move (&temp, f); }