"c211" - читать интересную книгу автора (Burt Andrew - Noontide Night)
NOONTIDE NIGHT - Chapter 21.1
Chapter 21.1
8:24 A.M., Thursday, February 3, 2000
Halifax, Nova Scotia
"You heard the man," Littlefield said. "We'll each take one
program and work down the list in order."
Morgan saw an opportunity to improve the scheme.
"Wouldn't it be better if we open one box instead, and take
whatever's in there? Then we won't have to hunt through all those
boxes to find each one."
"I think you forgot you're in the military, Hyland. I gave an
order. Now let me hear a 'sir, yes, sir.'"
Nate had been right. Littlefield was a bozo.
"You don't say 'sir' to enlisted men, Corporal."
"You will address me as 'sir' when nobody else is around, is
that clear? That's an order."
Nate stepped up to Littlefield. The mere act of standing was
painful for Nate, Morgan knew. His pain must have blazed from
his eyes, as Littlefield backed up a foot. "Or what?" Nate asked.
"They may have drafted a million programmers, but they need us
more than we need them. Maybe you big blue types are cool with
this, but most of the programmers I know react pretty badly to
lame orders. They can't throw us all in the stockade. We're too
valuable for that."
"Not if you're not working. If you soldiers don't get to work,
I'll put you on report for disobeying orders and refusing to work.
Then they won't have any reason to keep you out of the stockade,
will they?"
Morgan could tell there was a showdown brewing between
Nate and Littlefield. He ran though his mind futilely for a way to
defuse it, or at least postpone it for another day. He thought of
many ways to make matters worse, but as a guy, almost anything
he said, guy on guy, would be taken wrong.
Ortega seemed to sense the same thing. "Corporal? I'm
supposed to look at a program called LDPRSFL. Could you help
me find it in the boxes? I can't reach those high ones."
Littlefield scowled. "Hyland, Zamora, help Ortega find
LDPRSFL. Then get to work." He went over and sat at one of the
AS/400 terminals, apparently intent on avoiding a paper program
himself. The confrontation was over, but like a shut off faucet, it
was still under pressure.
Morgan and Nate hefted the boxes down onto the tables.
"Let's inventory them, at least," Nate whispered. So as they
unloaded and searched through each one, they wrote on a sheet of
paper the box's contents. They numbered each box with a
ballpoint, and the matching sheet, to make a crude index.
Littlefield noticed, but didn't object.
Morgan found the LDPRSFL program, but whispered that they
should put it aside, and pretend to find it in the last box, so they
could finish the inventory.
They settled into a daily routine of slogging the boxes around
to find the next program on the list (Littlefield somehow never
moving a single box), then sitting for endless hours staring at faint
print on fanfolded sheafs of wide, green-bar paper. Logic that
used dates was not necessarily easy to locate. When a program
variable was labeled as being of type 'date,' rather than integer, or
string of characters, that was the easiest to find. And the most
likely not to need fixing. Languages with built in date types rarely
needed much fixing within the program. It was when the
programmer used other types, such as integers or strings, that
caused the most problems. Who was to say if the variable called
'y' represented a year, or a harmless coordinate on an x-y grid.
Who was to say if the variable named 'srd' didn't stand for
Shipment Received Date? Or the variable might simply be called
'received' or 'r', or any other semi-random concoction of letters.
Once found, who was to say whether the year part of a date was
present, and if so, was only stored as two digits; and if so, whether
it would have a problem with '00'. The main source of the Y2K
problem lay not in the lack of a century per se, but when two two-digit years were compared to each other. 00 does not follow 99
numerically. Morgan had to chase down each use of a year
variable to see if it was used, or could be used, in a cross-decade
comparison.
The dates in the programs were like flying fish, suddenly
appearing, leaping prominently into view, then diving back into
the murky depths of code. They could arise from human input,
from saved data files, from interrogating the system's current time,
or from computations based on a kelp-like tangle of other data.
Heuristic methods—looking for key data types, variable names,
etc.—might locate 80% of the instances of dates. But the devil lay
in the other 20%. An operation as simple and non-date-sounding
like taking the last filename from a directory list could, ultimately,
be date oriented—if, for example, a date were silently encoded in
the characters of the filename itself.
Morgan found himself absorbed by the process. He luxuriated
in detailed logic work, tracing a variable across thousands of pages
of printout for a particular program. Page 1 called to page 349,
which called to pages 82 and 760, from there to 901, 42, and 499,
back and forth. He sat rocking in his chair, pencil in mouth, five
or six fingers marking key places in the stack of printout on his lap,
sticky notes marking dozens of others. In the back of his mind he
kept repeating the key questions: Was there a Y2K problem here?
And if so, how complex would it be to repair? Was it so ingrained
with two digit dates, with filenames lengths already maxxed out
yet needing more room than would fit, would there be years'
worth of data to convert, or was the logic just so convoluted
nobody could disentangle the spaghetti? Triage: Was it hopeless,
fully functional, or in between?
All this was complicated by the programs being written in
programming languages Morgan had never really seen. Usually
the languages were obvious, like a Francophone might muddle
through a text in Italian, but he couldn't help feeling he might
overlook something important. Every programming language had
nuances, figures of speech, as it were, that he felt sure he was
missing. The whole "hacker draft," as they'd come to call it,
seemed unreal, a throwback to World War II. His father had
described the army during the war. His father hadn't really been
in the army, of course, but his magical tales to a young urchin on
his lap had the ring of reality. When he was in college, Morgan
stumbled with horror on his father's stories. At first he thought his
father had written the book—Catch-22—before he realized his
father had simply read it. He'd felt betrayed, somehow, even
though he rationally knew his father had every right to tell him
stories from a book. It was a natural thing. Yet it rendered the
crazy, vivid tales as mere fiction, stripped them of their factual
basis. But now, as Morgan lived those same surreal escapades
amidst regulations that made no sense, he couldn't help feeling he
was reliving his father's past; that he was Yossarian, hearing that
he would be crazy if he flew more missions, and would have to be
grounded, but if he didn't want to, then he was sane, and had to
fly.
It was only ten days into their routine when Morgan had one
of those catch-22 moments, the kind where his internal logic
sensors said, "This is the tiny little bump of the Titanic hitting the
iceberg." Nate scooted over in his Scandinavian kneeling chair
(scooting since a castor had broken after the first day, so he'd
removed them all).
Morgan thought he was coming over to discuss trying to call
their sweethearts tomorrow for Valentines day. Morgan had even
mailed Desiree a handmade card. He smiled as Nate approached.
Nate whispered behind a hand into Morgan's ear. "Look at
this one!" He waved a printout. "The comments say it controls the
entire country's beef inspections. It's got a priority code of 1A. I'd
hate to think they're holding all the beef until they can clear it
through this stupid program. And here's the thing. It's a cinch to
fix. It's only got one date, and it's always the current century, so
all I'd have to do is insert a named constant for the current century
and fix a couple places that say '19'. If I had the source on-line I'd
just edit it, but even so, I could write the fix on this paper. We've
got to send it back, then the whole beef inspection system for the
country is back on-line. There's something odorous about this
look-don't-touch policy. I think we've got a duty to convince Sam
to let us send this upstream, wouldn't you agree? If we team up
together, he can't refuse."
And there it was. The Unauthorized Fix. They'd been strictly
told not to try to fix anything, no matter how slight or obvious.
That it was a direct violation of their orders even to waste a single
iota of time even daydreaming about fixing a program. Fixing was
strictly the domain of those so assigned. The CyberCorps was
rigid, painfully not adapting to the inherent efficiencies of work
the programmers identified. Don't Fix meant Don't Fix, even if
that was a ridiculous policy. Morgan agreed it was a bizarre
scheme, but presumably someone had a good reason for it.
Besides, rumors floated around that half a dozen programmers had
already been court martialed and imprisoned for attempting to
push a fix back toward the source. Not to mention the
insubordination that would be involved of circumventin<
Littlefield to go directly to Sam. Even if Sam said shhh, no,
Littlefield would delight in pressing charges on any counts he
could.
Morgan sighed. "Oh, man. I thought you wanted to talk about
tomorrow; trying to make phone calls. Christ. You can't do this to
me."
Nate looked back with that certain gleam in his eye that said
Oh Yes He Could. The one thing Morgan had learned about Nate
was that he had the tenacity of a pit bull.
back | next
home
|