-
Notifications
You must be signed in to change notification settings - Fork 142
Expand file tree
/
Copy pathgstr.cpp
More file actions
107 lines (98 loc) · 3.13 KB
/
gstr.cpp
File metadata and controls
107 lines (98 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# include "stdafx.h"
/***************************************************************************
**
** INVOCATION NAME: G123STR
**
** PURPOSE: TO READ A STRING INTO A CHARACTER BUFFER
**
** INVOCATION METHOD: G123STR(FP, BUF_STR, STR_LEN)
**
** ARGUMENT LIST:
** NAME TYPE USE DESCRIPTION
** FP PTR I FILE POINTER
** BUF_STR[] PTR O POINTER TO A BUFFER
** STR_LEN INT I LENGTH OF STRING TO BE READ IN
** G123STR() LOGICAL O SUCCESS FLAG
**
** EXTERNAL FUNCTION REFERENCES: NONE
**
** INTERNAL VARIABLES:
** NAME TYPE DESCRIPTION
** I INT LOOP CONTROL VARIABLE
** CH INT INTEGER REPRESENTATION OF INPUT CHARACTER
**
** GLOBAL REFERENCES: NONE
**
** GLOBAL VARIABLES: NONE
**
** GLOBAL CONSTANTS:
** NAME TYPE DESCRIPTION
** FT CHAR FIELD TERMINATOR
** NC CHAR NULL CHARACTER
**
** CHANGE HISTORY:
** AUTHOR CHANGE_ID DATE CHANGE SUMMARY
** A. DEWITT 04/23/90 INITIAL PROLOG
** A. DEWITT 04/23/90 INITIAL PDL
** L. MCMILLION 05/09/90 INITIAL CODE
** A. DEWITT 08/14/90 REMOVED CALL TO FUNCTION FEOF
** IN WHILE CONDITION
** L. MCMILLION TASK #40 12/22/92 UPDATED PROLOG/PDL PER QC
**
** PDL:
**
** INITIALIZE I TO ZERO
** INITIALIZE CH TO NULL CHARACTER
** WHILE STRING LENGTH LESS THAN INPUT STRING LENGTH AND FIELD
** TERMINATOR NOT ENCOUNTERED AND NOT EOF DO
** READ CH
** STORE CH IN BUFFER
** INCREMENT I
** ENDWHILE
** IF EOF ENCOUNTERED
** THEN
** RETURN FAILURE
** ENDIF
** APPEND NULL CHARACTER TO STRING
** IF CH EQUALS FIELD TERMINATOR
** THEN
** INCREMENT I
** ENDIF
**
** IF STRING IS NOT COMPLETE
** THEN
** RETURN FAILURE
** ENDIF
**
** RETURN SUCCESS
**
*****************************************************************************
** CODE SECTION
**
*****************************************************************************/
#include "stc123.h"
int g123str(FILE *fp,char *buf_str,long str_len)
{
/* INTERNAL VARIABLES */
int ch;
long i = 0;
/* INITIALIZE CH TO NULL CHARACTER */
ch = NC;
/* READ CHARACTER. WHILE STRING LENGTH LESS THAN INPUT STRING LENGTH
AND FIELD TERMINATOR NOT ENCOUNTERED AND NOT EOF DO
*/
while((i < str_len) && ((ch = getc(fp)) != EOF) && (ch != FT)) {
/* STORE CH IN BUFFER */
buf_str[i++] = (char) ch;
}
/* IF EOF ENCOUNTERED, RETURN FAILURE */
if (ch == EOF) return(0);
/* APPEND NULL CHARACTER TO STRING */
buf_str[i] = NC;
/* IF FIELD TERMINATOR ENCOUNTERED, INCREMENT INDEX I */
if (ch == FT) i++;
/* IF STRING IS NOT COMPLETE, RETURN FAILURE */
if (i != str_len) return(0);
/*RETURN SUCCESS */
return(1);
}